Technical Note TN2450: Remapping Keys in macOS 10.12 Sierra)
https://developer.apple.com/library/content/technotes/tn2450/
Sierra といえば Karabiner が使えず、キーカスタマイザにとっては鬼門のアップデートでしたが、標準でこんな機能が用意されていました。
要点をまとめると、
- 1 キー対 1 キーの単純なリマップ
- システム終了すると設定がリセットされる (つまり起動時に毎回設定が必要)
- 設定に管理者権限は必要ない
- デバイスごとに設定可能
- PC キーボード固有のキー(変換、無変換など)にも設定可能
といったところです。デバイスごとの設定について上記 Technical Note には何も書かれていませんが、hidutil の仕様により、
hidutil property --filter '{"ProductID":0x4545,"VendorID":0x4d9,}' --set '...'
というような形式で書くことができます。
PC 固有のキーは一覧には載っていませんが、リンクされている pdf には記載されていてちゃんと使えます。
それ Hammerspoon でやろうぜ
一旦設定を煮詰めてしまえば実行するだけですが、引数は冗長だしキー定義が独自1でかなり書きづらいです。 Hammerspoon を使っているならば実行のタイミングを任せられるし、Lua で組み立てることができるので都合が良いのではないかと configuration を書きました。
foundation_remapping
https://github.com/hetima/hammerspoon-foundation_remapping
これを利用すれば、init.lua に、
local FRemap = require('foundation_remapping')
local remapper = FRemap.new({vendorID=0x4d9, productID=0x4545})
remapper:remap('Muhenkan', 0x66):remap('Henkan', 'f18')
remapper:remap('PCKana', 'rcmd')
remapper:remap('lalt', 'lcmd'):remap('lcmd', 'lalt')
remapper:remap('Application', 'escape')
remapper:register()
と、簡便に書けます。普段使っている方の keyCode やラベルで設定できます。上記の設定で、
/usr/bin/hidutil property \
--filter '{"ProductID":17733,"VendorID":1241,}' \
--set '{"UserKeyMapping":[ \
{"HIDKeyboardModifierMappingSrc":30064771211,"HIDKeyboardModifierMappingDst":30064771217}, \
{"HIDKeyboardModifierMappingSrc":30064771210,"HIDKeyboardModifierMappingDst":30064771181}, \
{"HIDKeyboardModifierMappingSrc":30064771208,"HIDKeyboardModifierMappingDst":30064771303}, \
{"HIDKeyboardModifierMappingSrc":30064771298,"HIDKeyboardModifierMappingDst":30064771299}, \
{"HIDKeyboardModifierMappingSrc":30064771299,"HIDKeyboardModifierMappingDst":30064771298}, \
{"HIDKeyboardModifierMappingSrc":30064771173,"HIDKeyboardModifierMappingDst":30064771113}, \
]}'
というコマンドを実行します。
以上、半分は Hammerspoon と自作スクリプトの宣伝でした。
-
Cosmo_USB2ADB.c に定義されていました。
ADB 由来の値でしょうか普段使ってる方が ADB 由来のようですね ↩