やり方
- 割り当てを変更したいキーボードの、
Bus
,Vendor
,Product
情報を取得する。とすると、沢山デバイスが出力されるので、その中から対象となるキーボードを見つけて、その$ cat /proc/bus/input/devices
I: ...
行から、Bus
,Vendor
,Product
の値を取得する。例えば、なら、I: Bus=0011 Vendor=0001 Product=0001 Version=ab54
Bus
,Vendor
,Product
はそれぞれ、0011
,0001
,0001
-
/etc/udev/hwdb.d
に、適当な名前で、拡張子が.hwdb
のファイルを作る。$ sudo /etc/udev/hwdb.d/touch mine.hwdb
- そのファイルにキー割り当ての設定を書く。書き方は別途説明。
- hwdb を更新してリロードする。
$ udevadm hwdb --update $ sudo udevadm trigger
hwdb ファイルの書き方
例
evdev:input:b0011v0001p0001*
KEYBOARD_KEY_b8=enter
KEYBOARD_KEY_b7=esc
evdev 行
対象となるキーボードを指定する。
evdev:input:b0011v0001p0001*
のように、b
の後にBus
の値、v
の後にVendor
の値、p
の後にProduct
の値を置く。
最後のアスタリスクは残す。
KEYBOARD_KEY 行
キーの割り当てを指定する。
KEYBOARD_KEY_b8=enter
は、b8
のキーに enter
を割り当てる
enter
等の割り当てるキーに対応する文字列は、ここ から見つける。
b8
等の割り当て先のキーのコードは、evtestをインストール・実行すると
$ sudo apt install evtest
$ sudo evtest
デバイスのリストが表示されるので、キーボードを選択して、キーを叩くと、こんなものが出力される。
Event: time 1704669406.921868, type 4 (EV_MSC), code 4 (MSC_SCAN), value b8
Event: time 1704669406.921868, type 1 (EV_KEY), code 28 (KEY_ENTER), value 0
Event: time 1704669406.921868, -------------- SYN_REPORT ------------
この 1 行目の value の値がキーコードになる。