最近購入したMac Book Pro 16インチにHHKB日本語配列のキーボードを接続した時に,何度やってもUS配列と認識されてしまう問題が発生したので対処法を残しておく.
状況
新しいキーボードが接続されると,Macはキーボード設定アシストが起動する.基本はこれに従って設定していくとちゃんと日本語配列(JIS配列)と認識されるのだが,ちゃんと画像のようにJISを選択して設定を完了してもUSキーボードとして認識されてしまった.

具体的には記号系の入力がおかしくなる.例えばShift + 8は本当は日本語配列だと(のはずだが,US配列と認識されていると*になる,といった具合だ.
試すべきこと
この症状になったらまず試すべきことは,PFU(HHKBの販売元)の出しているFAQの手順をなぞることだ.
今回はこの手順で解決しなかったので,次に示す手順を実施した.
やったこと(plistファイルの直接書き換え)
問題の根本的(?)な原因は,キーボードを接続してもMacのキーボード設定ファイルがちゃんと上書きされないことだ.そこでこのファイルを人手で直接書き換えることで半ば強引に解決した.
Macのキーボード設定はplistファイルに格納されている.
/Library/Preferences/com.apple.keyboardtype.plist
中身はこんな感じのバイナリファイルだ.環境によって細かい中身は違うと思うので内容は気にしなくて良い.
% cat /Library/Preferences/com.apple.keyboardtype.plist
bplist00�\keyboardtype�\50489-1133-0Y34-1278-0*
*46%
1. plistをxml形式に変換し中身を書き換える
このファイルをまずxml形式に変換する.ちなみにplistファイルを弄る時は全てsudo権限が必要なので注意しよう.
sudo plutil -convert xml1 /Library/Preferences/com.apple.keyboardtype.plist
中身を確認するとちゃんとxml形式に変換されている.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>keyboardtype</key>
<dict>
<key>34-1278-0</key>
<integer>40</integer>
</dict>
</dict>
</plist>
ここで<integer></integer>で囲まれた部分の数字がキーボードの種別を表している.
| 数字 | 意味 |
40 | ANSI(US配列) |
| 41 | ISO(欧州系などの配列) |
| 43 | JIS(日本語配列) |
そこでここの数字を43に書き換えよう.なお,複数のキーボードが設定されている場合もあるのでその場合は所望のキーボードのintegerを書き換えないといけない.
2. ファイルをバイナリに戻してロックする
ファイルを書き換えたら念の為ファイルをバイナリに戻す.
sudo plutil -convert binary1 /Library/Preferences/com.apple.keyboardtype.plist
その上でファイルが勝手に書き換えられないようにロックする.
sudo chflags schg /Library/Preferences/com.apple.keyboardtype.plist
逆に編集したい時は以下のコマンドでロックを解除する.
sudo chflags noschg /Library/Preferences/com.apple.keyboardtype.plist
この設定をしておくと,sudo権限でも勝手に書き換えられないようになる.Macがキーボードを接続した時にファイルを書き換えるのを防ぐ意味がある.
3. キャッシュを消して再起動,キーボード再接続
plistファイルのロックが完了したらキャッシュを削除する.
sudo killall cfprefsd
その上でMacを再起動し,キーボードも再接続しよう.私の場合はこれで治った.
まとめ
日本語配列のHHKBがMacでどうしてもUS配列に認識されてしまう問題を力技で解決した.以前はこんなこと必要なかった気がするのでOSがアップデートされたか何かで挙動が変わってしまったのだろう.

コメント