US配列なMacで入力ソースの “U.S.” を無効化する (OS X 10.9)

手持ちの MacBook Air はキー配列がいわゆるUS配列なのですが、これが原因なのか、OSを Mountain Lion → Mavericks(スペルが難しい) にした時とか、10.9→10.9.1にした際に「入力ソース」に “U.S.” が追加されて大変不便です。

Ctrl+Space を押した時に U.S. と 英数 (GoogleIME) の両方が出てきて2回押さないと日本語に戻せません。

Screenshot 2013-12-17 23.04.57

これだけ見るとGoogleIMEの英数モードを無効化すれば(実運用上は)問題なさそうなものですが、この U.S. がなかなかのクセモノで、”IIII….” って入力したいときに Shift+i を長押しするとアクセント(?)の選択画面が出てきたりでイラッと来るシーンが多いです。

Screenshot 2013-12-19 22.36.09 のコピー

システム環境設定から無効化しようにも、(このスクショからではわからないけど) 削除ボタンがグレーアウトされててうまく行きません。

というわけで、キー入力周りの設定ファイルらしき ~/Library/Preferences/com.apple.HIToolbox.plist を直接編集します。plist ファイルはObjective-Cのプロパティリストのバイナリダンプ(らしい)ので、XMLに変換してやってから開きます:


plutil -convert xml1 Library/Preferences/com.apple.HIToolbox.plist

Vimで変換したファイルを開き、AppleEnabledInputSources dict の中から US っぽい dict を消して、再起動します。再ログインではダメです。
XMLに変換しても、ほっておいたら勝手にバイナリに戻されてるので再変換しなくても大丈夫です(この影響か, 最初に再起動した時は元の設定に巻き戻っていてやり直す必要がありました)。

以下が編集前と編集後のXMLのdiffです。U.S. ではなく US-International を削除したかったので, 実際とは少し違います。


Miso:~ tomoari$ diff com.apple.HIToolbox.plist-old com.apple.HIToolbox.plist
29,36d28
< <key>InputSourceKind</key>
< <string>Keyboard Layout</string>
< <key>KeyboardLayout ID</key>
< <integer>15000</integer>
< <key>KeyboardLayout Name</key>
< <string>USInternational-PC</string>
< </dict>
< <dict>

おしまい。

参考: http://apple.stackexchange.com/questions/44921/how-to-remove-or-disable-a-default-keyboard-layout/60521#60521