Mavericksでのキーボード設定 の続編。紆余曲折を得てキーボードのレイアウト変更が出来たので そのまとめ。途中で絶対やってはいけないこともあるので注意です。
キーボードレイアウト、入力方法の設定ファイルの場所
Mac OS X 10.9 Mavericksでは1
/System/Library/Keyboard\ Layouts/
にAppleKeyboardLayouts.bundle
という
設定ファイル群があり、この中のContents/Resources/
にEnglish.lproj
や
Japanese.lproj
と言った設定ファイルがあります。
この中にあるファイル群が基本的なキーボードレイアウトの設定ファイルの様です。
一方、ことえり等、入力モードを切り替えて使う物に関しては
/System/Library/Input\ Methods/Kotoeri.app
の様に/System/Library/Input\ Methods
下にアプリの形でインストールされています。
さらにGoogle日本語入力等外部アプリは
/Library/Input\ Methods/GoogleJapaneseInput.app
と言った形で
/Library/Input\ Methods
の下に配置されます2。
さらに
~/Library/Preferences/ByHost/com.apple.HIToolbox.*.plist
~/Library/Preferences/com.apple.HIToolbox.plist
/Library/Preferences/com.apple.HIToolbox.plist
の三つのファイル(最初のByHost以下の物はplistの前にマシン固有番号?見たいのがつく) に言語設定が書き込まれ設定されます。 後で書きますが結果的にこれらのファイルの中身を理解して 書き換えてやったのが今回の最終的な対処法です。
自分キーボードレイアウトを作る
やりたかったのはUSキーボードレイアウトのアメリカ国旗を変更することです。
上のAppleKeyboardLayouts.bundle
の中身で画像ファイルを直接扱ったり
してるわけではない3のですがナントカ変更したいな、と思ってた所、
Ukelele
というアプリを見つけました。
このアプリはキーボードレイアウトを自分で作成してbundle
ファイルを作成してくれます。
この際、
- 現在使っているキーボードレイアウトから作成できること。
- アイコンを変更出来る事。
からUSキーボードレイアウトを有効にしている状態でUkeleleを立ち上げ、
USキーボードをベースに新しいレイアウトを作り、アイコンだけ適当に変更して
新しいUS.bundle
みたいなのを作ることが出来ます4。
このbundleファイルを~/Library/Keyboard\ Layouts
において一度再起動すると
自分の作った設定がシステム環境設定の
キーボード
入力ソース
から追加出来る様になります。
ここで、まず、~/Libary
以下に置いた場合はやはりGoogle日本語入力とこれだけ、
と言うのは許されず、必ず最低1つ、システムに元からある設定を入れる必要がありました。
そこで/Library/Keyboard\ Layouts
の方へroot権限で突っ込んでみましたが、
こちらも選べる様にはなりますがこれだけ残すことは許されませんでした。
ここから暫くは絶対やってはいけないこと
そこで、思い切ってAppleKeyboardLayouts.bundle
という名前のbundleを
USベースで作り直し、元々あったAppleKeyboardLayouts.bundle
を
一旦退避させてUSベースのものと置き換えました。
これで再起動させたんですが、ここで恐ろしいことに。
どうもAppleKeyboardLayouts.bundle
は流石に結構特殊なものだったみたいで
Ukeleleで作ったものでは互換出来ず
(もしくは単にちゃんと設定出来てなかっただけかも知れませんが。。。)
ログイン画面にも関わらず一切キーボードが効かない状況に陥りました。
パスワードが打てないのでどうしようもありません。
無理やりゲストとしてだとパスワードを聞かれないのでログイン出来たりするんですが、 ログインした所でキーボードを打てないどころかFinderを立ち上げるだけでも エラーが出て強制終了される始末。
もう一から再インストールするしかないかな、と思ってたんですが、
ふとsshで入れば大丈夫なんじゃ?と思って入ってみたところビンゴで、
sshで他のPCから入って上のAppleKeyboardLayouts.bundle
を元に戻して
Macを再起動してみたところキーボードが効くようになりました。
ということで、やはり/System/
以下をいじるのはとても危険です。
また、本当にいざというときの為に、外部からsshで入れる様にしておくと 助かる事があることがホントに身にしみたので、 Macに外部からアクセス出来るようにする方法 で書いたようにssh設定をしておくことをお薦めします。
絶対やってはいけないこと終わり
いずれにしろ、自分設定を作ってそれだけを残すようにする、ということは出来ない事が わかったのでこの方法は駄目でした。
ただ、Ukeleleでは、オレオレレイアウトとしてベースからさらに変更していく事も 可能なので、なんか使い道がありそうな面白そうなもんでは有るので これを知っただけでも良かったかもしれませんが。 (ぱっと使い道があるわけではないですが。)
取り敢えず三つ選んでそのうち二つだけ使う様にする
しばらく使っていた方法。 USとGoogleのひらがな、英数の三つを選んで、そのうちUS以外だけ使う様にしてました。
単に
前の入力ソースを選択
(⌘-SPACE): 入力ソースに登録されている物を順次選択。入力メニューの次のソースを選択
(⇧-⌘-SPACE): 直前に選んでいた入力ソースに変更。
の後者を使う様にするだけです。
使いやすいようにキーボード
ショートカット
の部分でswapしてしまうかKeyRemap4MacBookなんかで
<item>
<name>IME Switch</name>
<appendix>Command + ESCAPE to Command + SPACE</appendix>
<appendix>Command + BACKQUOTE to Command + SPACE</appendix>
<identifier>private.ime_switch</identifier>
<autogen>
__KeyToKey__ KeyCode::ESCAPE,
VK_COMMAND|ModifierFlag::NONE,
KeyCode::SPACE, VK_COMMAND
</autogen>
<autogen>
__KeyToKey__ KeyCode::BACKQUOTE,
VK_COMMAND|ModifierFlag::NONE,
KeyCode::SPACE, VK_COMMAND
</autogen>
</item>
な感じでswapするなりします。
最初に前の入力ソースを選択
の方でUS以外の二つで切り替えを行っておけばその後は
入力メニューの次のソースを選択
を使うことでUSを無視して使えます。
書類ごとに入力ソースを自動的に切り替える
にチェックを入れてると、
どうやら初めてアプリを立ち上げた時にはその
直前に使っていたアプリでのソースが初期で使われる
様なのでほぼ問題なし。
また、起動直後も大概が終了直前に使っていた物が
使われる様なので取り敢えずは上手く行ってそうだったんですが、
たまにどうしてもUSが出てくる時があって、
いくら切り替えても日本語に切り替わらないと思ったら
US
Google英数
を繰り返してるだけ、だったりしてイラッとすることが多々。
ということで、もう一度調べて見た結果、上の HIToolboxファイルを見つけてそれっぽい設定をいじってみることに。
HIToolboxの変更
元々defaults
コマンドで変更できないかと思ってdefaults find
コマンドを使ってそれっぽいもの(English
、 US
、Language
…)
を検索してたら見つけたんですが、
設定ファイルの場所が分かったのでファイルの中身を見ながら変更するため、
Xcodeで上記のファイルを開いて変更しました。
直接ダブルクリックで起動してもターミナルから
$ open ~/Library/Preferences/com.apple.HIToolbox.plist
としても設定をいじってなければXcodeで開いてくれます。
~/Library/Preferences/ByHost/com.apple.HIToolbox.*.plist
~/Library/Preferences/com.apple.HIToolbox.plist
/Library/Preferences/com.apple.HIToolbox.plist
の三つのファイルに関しては一番下がシステム共通の設定、 真ん中がユーザーの設定、 一番上が現在使っている設定、で現在の設定が ログアウトの時などにユーザー設定に書い加えられる、 という感じかと思っています(ByHostとユーザー下のPreferences直下にあるものの 関係がちょっと良くわかってないかも)。
取り敢えず、ByHost
以下の物にはめぼしいもの無かったんですが、
ユーザー設定の所に、AppleDefaultAsciiInputSource
という物があり、
これがことえりだけを選んだ状態などの時Name
がBritish
、
ID
が2
になっていました。
一方、同じものがシステム設定の方ではName
がU.S.
、ID
が0
。
何故ユーザー設定のデフォルトとシステムのデフォルトが違うのか 分かりませんが(Lionから直接移ってきたせいで変なのが混ざったのでしょうか。。。?) 恐らくこのデフォルト値がことえりだけを選んだ時に使われてると思われます。
そこで、システム設定の様に
ユーザーファイルの方~/Library/Preferences/com.apple.HIToolbox.plist
もUSに書き換えてあげます。
書き換えは値をクリックしてやると書き換えられるようになるのでそれで書き換え。 隣のTypeや上下の値を間違って変更しないように気をつけて下さい。
これで設定が変更したら、試しに入力ソースをことえりだけ(or + Google日本語入力)
にして再起動してみます。
そうすると、今度は⇧-3を押すと#
がちゃんと出力され
USキーボードとして認識されていました。
これで無事、ことえりの英字
とGoogle日本語入力のひらがな
だけを
ソースとして入れておいて切り替える事が出来る様になりました。
追記: 2013/10/31
その他主要なレイアウトは
Name | ID |
---|---|
U.S. | 0 |
French | 1 |
British | 2 |
German | 3 |
Dvorak | 16300 |
で、上の表で気づく通り、日本語キーボードが見当たりません。
上の値は入力ソース
で上の物達を選んでターミナルで、
$ defaults find AppleEnabledInputSources
とすれば調べられます。(~/Library/Preferences/com.apple.HIToolbox.plist
を開いてAppleenabledinputsources
の各Item
を参照しても見れます)
ただ、日本語に関してはことえりを選んでもKeyboard Layout
はありません。
日本語キーボードを使ってる人は実際どうなってるんだろう?と思ったら
やはり問題がある模様。
ことえりだけにすれば日本語キーボードになるとかならないとか
5。
(その場合は/Library/Preferences/com.apple.HIToolbox.plist
にあるAppleDefaultAsciiInputSource
の値は何になってるんでしょうか。。。?
自分の環境だとことえりだけにしてもこの値がUSなのでUSになりますが。。。)
追記ここまで
追記: 2013/10/31
この辺をいじってる時に、ことえりでひらがな
が選べなくなってることに
気づきました。
ここ
6
に従って~/Library/Preferences/com.apple.HIToolbox.plist
を削除(というか移動して退避)させて再起動してみると、
確かに選択されていました。
が、今度はことえりでひらがな
が外せない様になってしまいました。
以前は英字
の部分はチェックがついたままグレイアウトしていて
変更出来ないようになっていて、ひらがな
の方はチェックがはずれたまま
グレイアウトしてる状態でした。
これはLionの時にこの様にして使ってた設定が残ってて、
Mavericksの仕様ではひらがな
は外せない仕様にしようとしていて、
設定が下手に引き継がれたがために単に変更
出来ない仕様で
選べなくなっていた、ということでしょうか。。。?
で、さらに、暫く色々試していると、
Google日本語入力の英数
を追加したあとでことえりを選んでみると
-
ボタンが押せる感じになっていたので押してみたら外せました。
なので、Google日本語入力のひらがな
と英数
だけを残すことが出来ました。
こちらの方もHIToolbox
を消した影響なの
(もともとMavericksではGoogle日本語入力だけ残すことは出来たが、
Lionから引き継いだHIToolboxが何か悪さをしてた)か、
それとも後から入ったアップデートで仕様変更があったか。。。
それから新たに出来たユーザーディレクトリにあるHIToolbox
には
AppleDefaultAsciiInputSource
の値はありませんでした。
何回か再起動してみても無いまま。
これもLionから引き継いだ物が何か悪さをしてたのでしょうか?
(Lionの時もUSキーボードを普通に使ってたんですが。。。)
謎過ぎ
追記ここまで
メニューバーアイコンの変更
Google日本語入力は
/Library/Input\ Methods/GoogleJapaneseInput.app/Contents/Resources/
にある、hiragana.tiff
等のtiff形式のファイルが
メニューバーに表示される画像です。(少し前まではpng形式でした。)
この画像を適当に自分で改造するかWebから適当なのを取ってきて置き換えればOK。 但し、アップデートのたびに元に戻ってしまうのでふと元の画像に 勝手に裏でアップデートする日本語入力なので戻ってる事が良くあります。 (再起動後に変更されるのでそれまでは気付かない)
前はここ で紹介されてる「ぐ」と言うのがいい感じだと思ってそれを使ってたんですが、 今はアイコンの紹介先がリンク切れになってます。
他にはここ なんかいくつか種類があります。 ダウンロード方法が無くて、各画像を直接右クリックから保存したりして 取ってくる様です。 png画像ですが、プレビューの書き出し機能などでtiff形式に変換して 上記フォルダに置きます。
置換後、Macを再起動すれば画像が変更されてるはずです。
ことえりの方は
/System/Library/Input\ Methods/Kotoeri.app/Contents/Resources
にあるファイルを変更します。
こちらはPDF形式で管理されています。 上に見えるpngのファイルは環境設定での表示用だと思います。
英字
用のファイルはRoman.pdf
というファイルです。
ここで、このファイルの見た目そのものが
表示されるわけではなくて、白い部分が透過、黒い部分が
文字色、で表示されるみたいです。
(通常は後ろがメニューバーの灰色、文字が黒なのでほぼそのままの感じに見える。)
こちらも適当なファイルを探してきて置き換えれば変更できます。
今のところ
こんな感じでことえりの英字
とGoogle日本語入力のひらがな
を使っています。
ことえりの方はデフォルトのままです。
ただ、この後でメニューバーの色を変えたいのですが、その時に ちょっと色がおかしくなるのでなんとかしたいな、と思っているところです。 このままでもちょっと色が違うので合わせたいところではありますが。
それ以前は見てなかったので不明。。。 ↩
-
と言っても自分の環境ではGoogle日本語入力しか知らないので他の物は直接 システム側と同じ所に入れたりするものもあるかもしれません。 ↩
どこかにあるかと思うんですが、見当たらない。。。
/System/Library/PreferencePanes/Keyboard.prefPane
等見てみてもなし。 ↩