概要
Udevを使ってキーボードのリマップをする。やりたかったことは
- CapsLockを全角半角に変更
だった。これには失敗した。変わりに、
- CapsLockをBackSpaceに変更
をした。
手順
- キーボードのパラメタを特定
- キーのパラメタを特定
- リマップのためのファイルを書き、反映させる
キーボードのパラメタを特定
キーマップを変更したいキーボードの諸々を特定する。
cat /proc/bus/input/devices
を実行する。たくさんのデバイスが表示される。その中から、探してるキーボードを見つけ(気合)、Bus,Vendor,Productの値をメモする。
e.g.
I: Bus=0011 Vendor=0001 Product=0001 Version=ab83
キーのパラメタを特定
変更したいキーの諸々を特定する
sudo evtest
を実行する。インストールされてなければ、aptで落とせる。
出力された内容のうち、value
を見つけて記録する。
Event: time ... ,------SYN_REPORT---------
Event: time ... , type ... , code ... , value 3a
Event: time ... , type ... , code ... , value 1
Event: time ... ,------SYN_REPORT---------
とか出ると思う。上の、3a
を使う。
変更後のキーの値を特定する
これに関しては、私はよくわかりませんでした。以下のリンクから探すと見つかるかも。
https://hal.freedesktop.org/quirk/quirk-keymap-list.txt
エンターに変えたかったらenter
とか、backspaceに変えたかったらbackspace
とかかも。
ファイルを書いて反映させる
/etc/udev/hwdb.d/hoge.hwdb
を作成し、書き込む。root権限が無いと編集できないので注意。ファイル名は任意。
ここに、今までで特定した値を使うよ。
evdev:input:b[Bus]v[Vendor]p[Product]*
KEYBORD_KEY_[valueの値]=[変更後のキー]
のように書く。コメントアウトは//
で書く。
e.g.
Bus=0011 Vendor=0001 Product=0001
,value 3a
のキーをbackspaceに変更したいとき
evdev:input:b0011v0001p0001*
KEYBOARD_KEY_3a=backspace
書き終えたら、設定を反映させる。
sudo system-hwdb update
sudo udevadm trigger
これでできるはず。xbindkeysとか使えば、変更したキーがどう認識されてるかわかる。
参考
-
HBenpitsu(enpitsuHB),"Ubuntuでキーマップを変更する",Qiita, https://qiita.com/HBenpitsu/items/4f5fabe9f73e0ab34174 ,(閲覧日2024/7/17)
-
kzee(そのへんの人)," Ubuntu 22.04 でキー割り当てを変更する",Qiita, https://qiita.com/kzee/items/4ac903282f80e0c4d5aa ,(閲覧日2024/7/17)
-
https://hal.freedesktop.org/quirk/quirk-keymap-list.txt , (閲覧日2024/7/17)