walkingmask’s development log

IT系の情報などを適当に書いていきます

MENU

Mac OS X El Capitanで日本語入力の句読点をショートカットで変更する(失敗例)

今まで、レポートを書くために、日本語入力の句読点は「,」と「.」を使っていた。けど、最近ブログを書き始めてから、普通の句読点で書いた方が他の人に伝わりやすいのではないかと思い切り替えることが多々有る。そこで、ショートカットで何とかできないものかと色々した結果をlog。

環境

Mac OS X El Capitan (10.11.1)

結果

最初に結果を書くと、後述するBTTとコマンドを使えば、ショートカットで切り替えることはできると思われる。ただし、コマンドを何回か実行するとプロセスが再起動してくれなくなった。また、うまくプロセスが再起動しても、すでに開いている他のアプリケーションで適用されるかも不安。ということで、現時点では使い物にならない感じ。なので、

  • とりあえず欲しいけど苦労したくない人 ==> 他の方法を探して教えてくださいお願いします
  • どうしても欲しくて苦労もしてくれるという人 ==> できれば改善に協力していただきたい

という感じで。ただし、以下の記事を読んで実行する場合は、自己責任でお願いします。

システム環境設定から切り替える

とりあえず、普通に切り替えるには、Macの右上にあるこのボタンを押して
f:id:walkingmask:20151203005236p:plain
ここから設定画面(Open Japanese Preference)を開いて
f:id:walkingmask:20151203005315p:plain
下にスクロールしていって
f:id:walkingmask:20151203005354p:plain
Punctuation(句読点)を変更するのだけど...面倒臭いorz<3(プゥ

システム環境設定でショートカット

まず読むのがかったるくて断念。

Better Touch Toolでショートカット作成

例のごとく、BTTを使おうと考えた。以下、wi-fiのon/offショートカットをBTTで設定する記事。walkingmask.hatenablog.com
これの応用で、句読点切り替えの設定がコマンドからできればという感じ。

コマンドで設定

できるのかという疑問がまず上がる。そこで、ごにょごにょググってみるとこんな記事が。tukaikta.blog135.fc2.com
どうやらdefaultsコマンドというのを使うとシステム環境設定をいじれるらしい。
試しに

defaults read

とやってみるけど、さっぱりわからない。他の.plistも覗いてみても、どうも違うっぽい。grep japとかgrep inputとかしても全然当たらん。それでまた、ごにょごにょググってみるとbaqamore.hatenablog.com
どうやらcom.apple.inputmethod.Kotoeriに日本語入力についての設定は書いてあるらしいことがわかった。そこで

defaults read com.apple.inputmethod.Kotoeri

を見てみる。やっぱり、どこが該当する設定かわからない。そこで、上記で書いたシステム環境設定から句読点を切り替えて、その前後の差分を観察した。以下、「、。」の場合と「,.」の場合のcom.apple.inputmethod.Kotoeriを出力したファイル。
「、。」の場合

{ 50ac = 0; 50cl = 0; 50da = 0; 50fc = 0; 50hk = 0; 50ho = 0; 50k0 = 0; 50kb = 0; 50kz = 0; 50md = 0; 50zr = 0; JIMPrefCandidateWindowFontKey = "HiraMinProN-W6"; JIMPrefCandidateWindowFontSizeKey = 16; JIMPrefCapsLockActionKey = 0; JIMPrefCharacterForSlashKey = 1; JIMPrefCharacterForYenKey = 1; JIMPrefConvertWithPunctuationKey = 0; JIMPrefFullWidthNumeralCharactersKey = 1; JIMPrefPredictiveCandidateKey = 1; JIMPrefPunctuationTypeKey = 0; JIMPrefRomajiKeyboardLayoutKey = "com.apple.keylayout.US"; JIMPrefShiftKeyActionKey = 0; JIMPrefTypingMethodKey = 0; JIMPrefVersionKey = 1; JIMPrefWindowsModeKey = 0; cha0 = 0; char = 0; chax = 1; chaz = 1; chsl = 1; chys = 0; clmt = 97; clog = 0; cmn0 = 1; cmnd = 0; cmnz = 1; cpdf = 0; cpft = "HiraMinProN-W3"; cprf = 0; cwft = "HiraMinProN-W3"; dtwt = 0; fsel = 0; fsiz = 24; hlfk = 0; jonl = 1; kana = 0; ktcv = 0; lumd = 4; msim = 0; ncfz = 16; ncwf = "HiraMinProN-W6"; neml = 5; npab = 2; "odc#" = ( { file = "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LangAnalysis.framework/Versions/A/Support/Convert to Related Character"; order = 0; used = 1; }, { file = "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LangAnalysis.framework/Versions/A/Support/Search Similar Kanji"; order = 1; used = 1; } ); odgn = 0; paut = 0; pdkw = 86400; pdlw = 1446622627; pdnu = 259200; pdus = 2592000; pief = 1; pimn = 5; piub = 1; pre0 = 0; pref = 0; prez = 0; punc = 0; ridp = 0; rmjt = 0; selc = 19968; sele = 2; shcn = 2; smod = 0; sycu = 0; tkjx = 1; ttr0 = 0; ttre = 0; ubsc = 0; ubsp = 0; ubsx = "1446650526.560156"; uift = "HiraKakuProN-W3"; upcn = 0; xhsp = 233; xvrw = 0; zhnm = 1; zhsy = { " " = 1; "!" = 1; "\"" = 1; "#" = 1; "$" = 1; "%" = 1; "&" = 1; "'" = 1; "(" = 1; ")" = 1; "*" = 1; "+" = 1; "," = 1; "-" = 1; "." = 1; "/" = 1; ":" = 1; ";" = 1; "<" = 1; "=" = 1; ">" = 1; "?" = 1; "@" = 1; "[" = 1; "\\" = 1; "]" = 1; "^" = 1; "_" = 1; "`" = 1; "{" = 1; "|" = 1; "}" = 1; "~" = 1; "\U00a5" = 1; }; }

「,.」の場合

{ 50ac = 0; 50cl = 0; 50da = 0; 50fc = 0; 50hk = 0; 50ho = 0; 50k0 = 0; 50kb = 0; 50kz = 0; 50md = 0; 50zr = 0; JIMPrefCandidateWindowFontKey = "HiraMinProN-W6"; JIMPrefCandidateWindowFontSizeKey = 16; JIMPrefCapsLockActionKey = 0; JIMPrefCharacterForSlashKey = 1; JIMPrefCharacterForYenKey = 1; JIMPrefConvertWithPunctuationKey = 0; JIMPrefFullWidthNumeralCharactersKey = 1; JIMPrefPredictiveCandidateKey = 1; JIMPrefPunctuationTypeKey = 3; JIMPrefRomajiKeyboardLayoutKey = "com.apple.keylayout.US"; JIMPrefShiftKeyActionKey = 0; JIMPrefTypingMethodKey = 0; JIMPrefVersionKey = 1; JIMPrefWindowsModeKey = 0; cha0 = 0; char = 0; chax = 1; chaz = 1; chsl = 1; chys = 0; clmt = 97; clog = 0; cmn0 = 1; cmnd = 0; cmnz = 1; cpdf = 0; cpft = "HiraMinProN-W3"; cprf = 0; cwft = "HiraMinProN-W3"; dtwt = 0; fsel = 0; fsiz = 24; hlfk = 0; jonl = 1; kana = 0; ktcv = 0; lumd = 4; msim = 0; ncfz = 16; ncwf = "HiraMinProN-W6"; neml = 5; npab = 2; "odc#" = ( { file = "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LangAnalysis.framework/Versions/A/Support/Convert to Related Character"; order = 0; used = 1; }, { file = "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LangAnalysis.framework/Versions/A/Support/Search Similar Kanji"; order = 1; used = 1; } ); odgn = 0; paut = 0; pdkw = 86400; pdlw = 1446622627; pdnu = 259200; pdus = 2592000; pief = 1; pimn = 5; piub = 1; pre0 = 0; pref = 0; prez = 0; punc = 0; ridp = 0; rmjt = 0; selc = 19968; sele = 2; shcn = 2; smod = 0; sycu = 0; tkjx = 1; ttr0 = 0; ttre = 0; ubsc = 0; ubsp = 0; ubsx = "1446650526.560156"; uift = "HiraKakuProN-W3"; upcn = 0; xhsp = 233; xvrw = 0; zhnm = 1; zhsy = { " " = 1; "!" = 1; "\"" = 1; "#" = 1; "$" = 1; "%" = 1; "&" = 1; "'" = 1; "(" = 1; ")" = 1; "*" = 1; "+" = 1; "," = 1; "-" = 1; "." = 1; "/" = 1; ":" = 1; ";" = 1; "<" = 1; "=" = 1; ">" = 1; "?" = 1; "@" = 1; "[" = 1; "\\" = 1; "]" = 1; "^" = 1; "_" = 1; "`" = 1; "{" = 1; "|" = 1; "}" = 1; "~" = 1; "\U00a5" = 1; }; }

じーっくり見てみると、JIMPrefPunctuationTypeKeyの値が0と3で変わってる。というかPunctuation。これで、句読点の設定を記述してる箇所の特定は済んだので、先のURLに習って

defaults write JIMPrefPunctuationTypeKey 3

とかやってみたら、設定ファイルは変わったけど、句読点は変わらない。killallをしてなかった。

killall Kotoeri

No matching processes belonging to you were foundと言われる。Kotoeriじゃないの?とごにょごにょ調べるとqiita.com
どうやらEl Capitanからは、日本語入力がことえりからJapaneseIMに変わってるみたい。そこで、

killall JapaneseIM

とすると、うまくいった。

からの〜

うまくいって喜んで、調子に乗ってkillallしまくっていたところ、JapaneseIMというプロセスはないよーというエラーが出て日本語入力ができなくなった。やばし。先のwebページなどから.plistが壊れるかもとかは懸念してたけど、プロセスが再起動しなくなるとは思ってなかった。とりあえず、JapaneseIMを再起動してみる

open -a JapaneseIM.app

すると、ps aux | grep JapaneseIMでちゃんとプロセスを確認できた。killallも再度できた。やっぱり死にっぱだったけど。どっかで、他のアプリケーションに適用するにはそれらも再起動しないといけない的なことを、読んだ記憶があったので、他のアプリを再起動するといけた。と思ったら、いけなかったりもして不安定。ちなみに、Macを再起動すれば元に戻るはず。

問題点とまとめ

以上を踏まえて、問題点をまとめると

  • killallした後、蘇らないことがある
  • 蘇っても、他のアプリを再起動することがある
  • .plistが壊れる可能性
  • システム環境設定から設定変更するときは、他のアプリを再起動する必要がない

と言った感じ。4つ目の問題点を克服するには、OSがどうやって動いてるかさえわかれば...そもそも、それがわかったらdefaultsなんか使わなくてもよかったり?とか思うけど、今からその辺を調べる気にはならないので、今日はこの辺にして今後の課題にしたいと思う。もし、他に良い方法を知ってる方は是非教えていただきたい。また、こうすると良いよーというアドバイスもお待ちしております!