月別: 2016年5月

OS X 10.11 El Capitanで、SIP(System Integrity Protection)を無効にしないで、ら行(ラ行)を「L」キーで入力できるように変更する

OS X 10.11 El CapitanでSIP(System Integrity Protection)が導入され、‘/System/Library/Input Methods/’以下にアクセスするためにはrootlessモードに切り替えないと、‘sudo’を使ってもアクセスできないという状況になりました。

(SIP(System System Integrity Protection)は、以下のサイトが参考になります。)

rootlessモードで作業するためには、リカバリーモードでマシンを起動してから‘csrutil’コマンドをターミナル上で使って設定するという方法以外に手段がないため、かなり面倒です。
また、わざわざ‘nvram’の‘rootless=0 & “kext-dev-mode=1’というブートフラグを捨ててきた方向性から考え、Appleのポリシーを尊重するのであれば、常にrootlessモードで作業するというのもできれば避けたいところではあります。
また、考えるに、ユーザレベルでインプットメソッドのモードを切り替えられないというのもどうなのでしょう。‘/System/Library/Input Methods/’以下の設定ファイルを書き換えるということは、ユーザごとに設定モードを簡単に切り替える手段がないということで、不便すぎる仕様ではないでしょうか。
どこかに何か設定フラグがあるはずだよね、と思いながら、なかなか手掛かりがつかめなかったのですが、不図した拍子に見つけました。
要は、‘default’コマンドを使って、ユーザドメインのPreferencesフォルダ内の‘~/Library/Preferences/com.apple.inputmethod.Kotoeri.plist’に‘UseKotoeriRomajiRule’キーを設定するだけです。

ターミナルから‘defaults’コマンドを使って、

defaults write com.apple.inputmethod.Kotoeri UseKotoeriRomajiRule -boolean YES

この後に、日本語入力プログラム(JapaneseIM.app)を再起動します。

killall JapaneseIM

 

plist_key

図は、Xcode上で該当キーが設定されている状態です。

設定のリセットは、

defaults delete com.apple.inputmethod.Kotoeri UseKotoeriRomajiRule

要は、「システム環境設定」の「キーボード」の「入力ソース」のGUIから設定項目が外されただけということのようですが、“外されただけ”というには何とも、むむむ…であります。

CotEditorの文字種変換などやってみる

CotEditor知人から強く勧められたので、CotEditorを試用してみることにしました。

CotEditorのホームページからおもな特長を拾ってみると、次のように記載されています。

 

 

主な機能

・シンタックスハイライト
HTMLやPHP, Python, Ruby, Markdownなど、40以上のメジャーな言語にあらかじめ対応。自分で新たな定義を作成することもできます。

・瞬時に起動
あっという間に立ち上がるので、思い立ったそのときにすぐに書き始めることができます。

・パワフルな検索と置換
定評のあるOniGmo正規表現エンジンによる強力な検索/置換パネルを備えています。

・クリックで設定
マニアックな知識を必要とする複雑な設定ファイルはありません。テーマやシンタックス定義も含め、設定はすべて一般的な環境設定ウインドウから行えます。

・自動バックアップ
CotEditorが編集を逐次自動でバックアップするので、もう強制終了で未保存分の編集を失う心配は無用です。

・アウトラインメニュー
書類から定められたルールに適合した行を抽出しメニューとして表示します。メニューを選択すれば、該当箇所に移動します。

・文字情報表示
選択された文字のUnicode文字情報をポップオーバーで簡単に表示できます。

・エディタの分割
エディタを分割し、文書の異なる部分を一度に表示できます。

・スクリプト
AppleScriptにPython, Ruby, Perl, PHP, UNIX shell、あなたの好きな言語でマクロを書くことができます (YosemiteならJavaScriptでも!)。

・非互換文字の検出
エンコーディングを変換する際には変換できない文字をリストアップします。

“あっという間に立ち上がる”というのは魅力です。

起動してみると、豊富な「シンタックススタイル」によるカラーリング機能、入力補完機能、正規表現が使える検索置換機能など、コードエディタとしての面を見ると評価が高いことが納得できます。
一方、通常のテキストエディタとして使う場合はどうでしょうか?

気になる文字種変換

DTP屋としては、文字種変換が一番きになるところで、組込みの機能は「テキストメニュー」→「変換」にありました。

mojishu

“全角半角変換”機能について試してみました。

aAbBcCDdEeFfGghHIiJjkKlLmMnNOopPqQRrSsTtuUvVWwXxYyzZ。,.:;?!`^_/〜'()[]{}+−=<>$%#&*@0123456789 —

aAbBcCDdEeFfGghHIiJjkKlLmMnNOopPqQRrSsTtuUvVWwXxYyzZ。,.:;?!`^_/〜’“”()[]{}+−=$%#&*@0123456789

上の全角キャラクタを変換したところ、下のようになります。
つまり、“全角半角変換”では、英数だけでなくパーレン他の記号も変換されてしまいます。
DTP屋としては、英字、数字、パーレン類、句読点、記号などは別種として扱いたいところです。
そこで、幾つかスクリプトを書くことにしました。
数字の“全角半角変換”では、

set Zenkaku to "0123456789"
set Hankaku to "0123456789"

tell application "CotEditor"
	if not (exists front document) then return
	tell front document
		set {loc, len} to range of selection
		if (len = 0) then 
			display dialog "文字列を選択してから実行しましょう。" buttons {"OK"} default button "OK" with icon note giving up after 1
			return
		else if (len > 0) then
			set preString to contents of selection
			display dialog "全角<->半角変換できます。" buttons {"キャンセル", "半角", "全角"} default button 2 with icon note returning {button returned:theVarb}
			if theVarb = "全角" then
				set a to my Sed_y(preString, Hankaku, Zenkaku)
				set contents of selection to a
			else if theVarb = "半角" then
				set a to my Sed_y(preString, Zenkaku, Hankaku)
				set contents of selection to a
			end if
		end if
	end tell
end tell

to Sed_y(TheString, SString1, SString2)
	do shell script "export LANG=ja_JP.UTF-8; " & "echo " & quoted form of TheString & " | sed -e 'y/" & SString1 & "/" & SString2 & "/'"
end Sed_y

大文字小文字変換は、

tell application "CotEditor"
	if not (exists front document) then return
	
	tell front document
		set {loc, len} to range of selection
		if (len = 0) then 
			display dialog "文字列を選択してから実行しましょう。" buttons {"OK"} default button "OK" with icon note giving up after 1
			return
		else if (len > 0) then
			display dialog "小文字 <-> 大文字変換できます。" buttons {"ワードキャップ", "小文字", "大文字"} default button 2 with icon note returning {button returned:theVarb}
			if theVarb = "ワードキャップ" then
				tell selection to change case to capitalized
			else if theVarb = "小文字" then
				tell selection to change case to lower
			else if theVarb = "大文字" then
				tell selection to change case to upper
			end if
		end if
	end tell
end tell

その他、“半角カナ”“全角カナ”変換は、アーカイブページの中にサンプルスクリプトが用意されていて、その中にphpのスクリプトがあります。

‘SampleScripts-master/ShellScript/Extras/J-Text-Utility/Full-width Katakana to half-width.php’
‘SampleScripts-master/ShellScript/Extras/J-Text-Utility/Half-width Katakana to full-width.php’

余計なテスト

もっとも単純なバイナリーplistファイルのサンプルとして、‘.webloc’ファイルをCotEditor、Mi、BBEditで開いた場合の表示が次の図です。CotEditor、Miでは扱いが同じで、xml形式の‘plist’ファイルとして扱えるのはBBEditのアドバンテージでしょうか。
因みに、ドキュメントウィンドウ内に‘.webloc’ファイルをドロップすると、CotEditor、Mi、BBEdit共にURLが挿入されます。

plist