LeopardでWindows用JISキーボードのみでもJIS配列を認識させる[追記あり]

2017年5月15日パソコン・インターネット

Mac OS X Leopard 10.5.1〜10.5.8まで、Windows用JISキーボードだけでは、ことえりなどの日本語(かな)入力時に、キーボード配列がUSになってしまう事を確認してきました。その解決方法を見つける事が出来ました。作者のなすこじさん、ありがとうございます。

要点は、Windows用JISキーボードのIDを強制的にMac OS X Leopardに認識させ、純正JISキーボードの様に振る舞わさせると言う事です。

具体的には、/System/Library/AppleHIDKeyboard.kext/Contents/Info.plistを書き換えます。

その詳しい手順は、上記記事からたどれる、設定手順に詳しく書かれています。

この手順の通りに設定すればOKです。自分のメモの為に、まとめてみます。メモなので、若干手順は変えてあります。

  1. ioreg -Sl -p IOUSB -w 0 > reg2.txt
  2. 該当するWindowsキーボードを外す
  3. ioreg -Sl -p IOUSB -w 0 > reg1.txt
    (ターミナルのペーストメニューで入力)
  4. キーボードを取り付ける
  5. diff reg1.txt reg2.txt > diff.txt
  6. diff.txtから、idProductとidVendorを調べておく
  7. /System/Library/Extensions/AppleHIDKeyboard.kextをバックアップ(コピーなど)
  8. Contents/Info.plistを修正(後述)
  9. sudo touch /System/Library/Extensions
  10. 再起動

Info.plistの修正が、肝です。

  1. 「Wired Keyboard 2007 JIS 1」「Wired Keyboard 2007 JIS 2」「Wired Keyboard 2007 JIS Map」の項目(<key>〜</key>、<dict>〜</dict>部分)をコピーして追加
  2. key名を変更(私は"Buffalo BKBCJ91SBKA"に変更しています)
  3. コピーした項目中のidProduct(ProductID)、idVendor(VendorID)に、diff.txtから調べた値を記入
  4. FnFunctionUsageMapのkeyとstringを取り除く

この4番の修正は、オリジナルの修正方法には載っていませんでした。ただ、これが無いと、ファンクションキーが効かない様です。この修正方法を入れても、完璧ではありません。通常の状態だと、F12の長押しで、CD/DVDのイジェクトになるのですが、それが効きません。

ここまで書いた所で、なすこじさんからご回答がありました。FnFunctionUsageMapの指定方法についてです。F12をEjectに割り付ける方法が書かれていました。ただし、この方法では、F12が使えなくなってしまいます…。

もっと良い方法が無いかと考えた所、ありました。Windows用USB JISキーボードの未使用キーを利用するのです。

  • Print Screen→Eject
  • 無変換→英数
  • 変換→Space
  • ひらがな/カタカナ→かな/カナ

左がWindows用USB JISキーボードの刻印、右がApple JISキーボードの刻印です。

Ejectキーの割り付け以外に、Apple JISキーボード独自の、「英数」「かな/カナ」も割り付けてみました。

Option+Ejectで、セカンド・オプティカルドライブ(CD/DVD-ROMドライブ)も開閉できました。Control+Ejectでシステム終了ダイアログが出ますし、Option+Command+Ejectでスリープもしました。「英数」(無変換)「かな/カナ」(ひらがな/カタカナ)で入力モードも切り替わります。完璧です。

この割当には、次の資料を参考にしました。

USBキーボードのキーコードには、Apple JISキーボード独自のキーコード(Usage)が載っていて、ありがたかったです。

結局、FnFunctionUsageMapには、次の値を設定しています(表示のために改行を入れています)。

<key>FnFunctionUsageMap</key>
<String>0x00070046,0x000C00B8,0x0007008B,0x00070091,
0x0007008A,0x0007002C,0x00070088,0x00070090</string>

Stringの部分はカンマで区切られた二つの値で一組になっています。カンマの左側は、置き換え前のUsage、右側は置き換え後のUsageです。"0x00070046″は、Usage Pageの0x07、Usage ID 0x46、つまりPrint Screenを示します(Hut1_12.pdfの55ページ)。"0x000C00B8″は、Usage Pageの0x0C、Usage ID 0xB8、つまりEjectを示します(Hut1_12.pdfの77ページ)。

“Usage"と言うのは、USBのHIDデバイスのコードを表す言葉のようです。

この状態でも、Scroll Lock, Pause/Break, Applicationキーが、未使用状態で残っています。他のキー(音量調節やPowerなど)に割り付け可能と思われます。

私のキーボード(キーボード|BKBCJ91SBKA)には、音量調節、Power(Sleep)キーがついているので、これ以上のカスタマイズは不要でした。

[amazonjs asin="B000TW9A4G" locale="JP"]

【関連記事】

(追記 2010-06-27 23:19)

修正の方法は、なすこじさんの「「Mac
OS 10.5(Leopard)+他社製JISキーボード」のキー配列問題に対処する
」が非常にわかりやすいです。ファンクションキーの設定部分だけ、注意が必要です。

“Wired Keyboard 2008 JIS Map"でも使えます。こちらの方は、一つにまとまっているので、修正が楽だと思います。

うまく動かない時は、一度設定を戻してから、最初からやり直してみて下さい。私は、これでうまく行きました。

Snow Leopardでは、Windows用USB JISキーボードの問題は解決されています。でも、英数、かなキーの割り付けをすると便利です。次の記事をご参照下さい。

(追記 2014-04-12 16:12)

システム領域のファイルを書き換える事になるので、最悪、システムが立ち上がらなくなる可能性があります。ご注意ください。

万一に備えてのバックアップなどの対策をおとりください。

(追記 2014-04-13 10:45)

アプリケーションによる対策方法は次の通りです。「システム環境設定」にメニューが追加されます。

Posted by お市のかた