rcmdnk's blog
Last update

Apple Keyboard テンキー付き -US MB110LL/B

Mavericksでのキーボード設定 の続編。紆余曲折を得てキーボードのレイアウト変更が出来たので そのまとめ。途中で絶対やってはいけないこともあるので注意です。

Sponsored Links

キーボードレイアウト、入力方法の設定ファイルの場所

Mac OS X 10.9 Mavericksでは1 /System/Library/Keyboard\ Layouts/AppleKeyboardLayouts.bundleという 設定ファイル群があり、この中のContents/Resources/English.lprojJapanese.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の前にマシン固有番号?見たいのがつく) に言語設定が書き込まれ設定されます。 後で書きますが結果的にこれらのファイルの中身を理解して 書き換えてやったのが今回の最終的な対処法です。

自分キーボードレイアウトを作る

Ukelele

やりたかったのはUSキーボードレイアウトのアメリカ国旗を変更することです。 上のAppleKeyboardLayouts.bundleの中身で画像ファイルを直接扱ったり してるわけではない3のですがナントカ変更したいな、と思ってた所、 Ukelele というアプリを見つけました。 このアプリはキーボードレイアウトを自分で作成してbundleファイルを作成してくれます。 この際、

  • 現在使っているキーボードレイアウトから作成できること。
  • アイコンを変更出来る事。

からUSキーボードレイアウトを有効にしている状態でUkeleleを立ち上げ、 USキーボードをベースに新しいレイアウトを作り、アイコンだけ適当に変更して 新しいUS.bundleみたいなのを作ることが出来ます4

このbundleファイルを~/Library/Keyboard\ Layoutsにおいて一度再起動すると 自分の作った設定がシステム環境設定の キーボード 入力ソースから追加出来る様になります。

ここで、まず、~/Libary以下に置いた場合はやはりGoogle日本語入力とこれだけ、 と言うのは許されず、必ず最低1つ、システムに元からある設定を入れる必要がありました。

そこで/Library/Keyboard\ Layoutsの方へroot権限で突っ込んでみましたが、 こちらも選べる様にはなりますがこれだけ残すことは許されませんでした。

warning ここから暫くは絶対やってはいけないこと

そこで、思い切ってAppleKeyboardLayouts.bundleという名前のbundleを USベースで作り直し、元々あったAppleKeyboardLayouts.bundleを 一旦退避させてUSベースのものと置き換えました。

これで再起動させたんですが、ここで恐ろしいことに。 どうもAppleKeyboardLayouts.bundleは流石に結構特殊なものだったみたいで Ukeleleで作ったものでは互換出来ず (もしくは単にちゃんと設定出来てなかっただけかも知れませんが。。。) ログイン画面にも関わらず一切キーボードが効かない状況に陥りました。

パスワードが打てないのでどうしようもありません。

無理やりゲストとしてだとパスワードを聞かれないのでログイン出来たりするんですが、 ログインした所でキーボードを打てないどころかFinderを立ち上げるだけでも エラーが出て強制終了される始末。

もう一から再インストールするしかないかな、と思ってたんですが、 ふとsshで入れば大丈夫なんじゃ?と思って入ってみたところビンゴで、 sshで他のPCから入って上のAppleKeyboardLayouts.bundleを元に戻して Macを再起動してみたところキーボードが効くようになりました。

ということで、やはり/System/以下をいじるのはとても危険です。

また、本当にいざというときの為に、外部からsshで入れる様にしておくと 助かる事があることがホントに身にしみたので、 Macに外部からアクセス出来るようにする方法 で書いたようにssh設定をしておくことをお薦めします。

warning 絶対やってはいけないこと終わり

いずれにしろ、自分設定を作ってそれだけを残すようにする、ということは出来ない事が わかったのでこの方法は駄目でした。

ただ、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が出てくる時があって、 いくら切り替えても日本語に切り替わらないと思ったら USGoogle英数 を繰り返してるだけ、だったりしてイラッとすることが多々。

ということで、もう一度調べて見た結果、上の HIToolboxファイルを見つけてそれっぽい設定をいじってみることに。

HIToolboxの変更

元々defaultsコマンドで変更できないかと思ってdefaults find コマンドを使ってそれっぽいもの(EnglishUSLanguage…) を検索してたら見つけたんですが、 設定ファイルの場所が分かったのでファイルの中身を見ながら変更するため、 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という物があり、 これがことえりだけを選んだ状態などの時NameBritishID2になっていました。

一方、同じものがシステム設定の方ではNameU.S.ID0

何故ユーザー設定のデフォルトとシステムのデフォルトが違うのか 分かりませんが(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キーボードを普通に使ってたんですが。。。)

謎過ぎweary

追記ここまで

メニューバーアイコンの変更

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日本語入力のひらがなを使っています。 ことえりの方はデフォルトのままです。

ただ、この後でメニューバーの色を変えたいのですが、その時に ちょっと色がおかしくなるのでなんとかしたいな、と思っているところです。 このままでもちょっと色が違うので合わせたいところではありますが。

Sponsored Links
  1. それ以前は見てなかったので不明。。。

  2. と言っても自分の環境ではGoogle日本語入力しか知らないので他の物は直接 システム側と同じ所に入れたりするものもあるかもしれません。

  3. どこかにあるかと思うんですが、見当たらない。。。 /System/Library/PreferencePanes/Keyboard.prefPane等見てみてもなし。

  4. Customizing Your Mac Input Source Icon

  5. 日本語入力が出来なくなりました。

    OS X Mavericksにアップグレード後、キーボードが JISキーボードと食い違う

    日本語がAZERTYキーボードになっしまいます。

    Japanese Keyboard

  6. ことえりの「ひらがな」が選べない

Sponsored Links

« Macに外部からアクセス出来るようにする方法 gitのブランチについてのまとめ »