先日、US配列のキーボードを買い、当初はhidutilで限りなく日本語配列にしようと思ってたんだけど後になってできないことが判明。
理由は、
ということをわかってなかったから。
具体的には、日本語配列の「2」キーはシフトで「”」、US配列は「@」で、当初は文字毎にキーコードがあると思ってたので「@」を「”」に設定しようと思ってたが、「@」単独のキーコードがあるわけではなく「2」とセットで1つのキーコードになってる。
つまり同じキーコードでシフトがどっちになるかはOSが認識してるキーボード配列で決まるわけで、OSにUS配列キーボードを日本語配列と認識させない限り無理(AltやCtrl、Home、Deleteなどのシフトが関係ないキーはOK)。
とりあえずキーボード設定アシスタントで無理やり日本語配列にしても変化なし。
たぶんKarabiner-Elementsを使えばできそうな気はするけど、極力追加のソフトウェアは入れない方針。
というわけで日本語配列利用は無理っぽいけどせっかく配列以外は気に入ってるのにこのままお蔵入りさせるのももったいないのでUS配列にチャレンジすることにしてしばらく使ってました。
ところがその後いつのまにかMacが日本語配列と認識してることに気づきました。
思い当たるのはキーボードの掃除をするために2.4GHz用のUSBドングルを挿抜したことくらい。
キーボード設定アシスタントで日本語配列に設定しただけではダメでドングルを挿抜したら反映されたということだろうか。
理由はともかく、その後ドングルの挿抜やMacを再起動しても日本語配列キーボードと認識してくれてるのでこのまま使うことに。
ちなみにhidutilによる設定は下記のように。
・「`~」キー → 「¥|」キー
・右ctrl → 「_」キー
※「¥」で「\」が出せないシチュエーションではユーザ辞書による変換で対応
●いつもやってる設定
・左win(cmd)と左alt(opt)の入替
・caps → 左ctrl
・左ctrl → 英数
・右alt → かな
●このキーボード独自のキーを使いやすくするための設定
・pausebreak → delete(shift+bsでdelete)
・home → 音量up
・delete → 音量down
・screenlock → home
このキーボードでは「`~」がfn+escなので、スリープのショートカットcmd+opt+「¥」はcmd+opt+fn+escで4キー同時押しになるけど、Macで「¥」はopt+「Y」キーでもOKなのでcmd+opt+「Y」の3キーでスリープ可能。
「_」は右ctrlが日本語配列の「_」の位置にも近い感覚で押せるので。
hidutilで設定できなかった問題としては「\」。通常のMacのキーボードでは「_」キーはシフトしても「\」にならず代わりにopt+「¥」だけど、このキーボードでは上記の設定による「¥」で「\」は出せない。
自分にとって「\」を使うシチュエーションはエスケープシーケンスを使うターミナルとMacVim。ターミナルでは「¥」を押すと「\」になってくれるのでOK。MacVimではユーザ辞書で「¥」を「\」に変換することに。
とまあそんなこんなで図らずも(しかも当初はhidutilで約20個の記号キーを再設定しようとしてたことを考えるとかなりお手軽に)疑似日本語配列キーボードとして使える(キートップの印字との相違はあるがほぼブラインドタッチで問題ない)ようになったのであとは、
・「¥]_」キーの位置が日本語配列と違う
・ファンクションキーがないことによる感覚のズレ
・キーボードの手前が高いので奥のキーが少し押しにくい
などといった物理的な違いに慣れるだけですな。