やり方
- 割り当てを変更したいキーボードの、
Bus,Vendor,Product情報を取得する。とすると、沢山デバイスが出力されるので、その中から対象となるキーボードを見つけて、その$ cat /proc/bus/input/devicesI: ...行から、Bus,Vendor,Productの値を取得する。例えば、なら、I: Bus=0011 Vendor=0001 Product=0001 Version=ab54Bus,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 の値がキーコードになる。