xmodmapはわからん
Caps_Lock を CTRL_L にしたくて、Xmodmapと格闘してたんだけど、まじでわからん。
一番は、設定ファイルに対して設定が一致しない(以前に変更すると、それが残ってたりする)ので、もーわけわからなくなるわけですよ。
これからはhwdb
そこでArchLinux slackで相談したら、「xmodmapが許されるのは小学生までだよねー」と言われてしまった。
なんでも今はudevを使ったhwdbなんだそうだ。
そんなわけでやってみる。
ドキュメントはArchのwiki: スキャンコードをキーコードにマップ
手順
スキャンコードを調べる
showkey
コマンドで調べる。が、このコマンド、Xのグラフィカル端末とかでは駄目で、仮想端末である必要がある。
そこで、おもむろに ctrl alt F4 を押下する。
すると tty4
が立ち上がってくるので、ログインする。
1 | # showkey --scancodes |
すると、押下したキーにしたがったスキャンコードが調べられる。
10秒なにもしないと、プログラムは終了する。
で、このスキャンコードは10進数だが、必要なのは16進数なので変換しておくこと。
自分のhwdbを書く
今回は本体のキーボードのCAPS_LOCKをCTRL_Lにしたいので、デフォルトキーボード設定だけ書く。
hwdbの書式はevdev
に上から順番にマッチさせて適用していくので、上にUSBキーボードの内容、最下段に本体に付いているキーボードの記述を行なう。
/etc/udev/hwdb.d/10-my-modifiers.hwdb
1 | evdev:atkbd:dmi:* |
db update
dbのupdateと取り込みを行なう。
systemdから自動で行なう事も出来るが、とりあえず手動で。
1 | # udevadm hwdb --update |
再起動
あとは再起動。