vikkeの趣味やらなんやらのごった煮blog

趣味の技術や音楽やバイクや写真のページ

さらばXmodmap,こんにちはhwdb

xmodmapはわからん

Caps_LockCTRL_L にしたくて、Xmodmapと格闘してたんだけど、まじでわからん。
一番は、設定ファイルに対して設定が一致しない(以前に変更すると、それが残ってたりする)ので、もーわけわからなくなるわけですよ。

これからはhwdb

そこでArchLinux slackで相談したら、「xmodmapが許されるのは小学生までだよねー」と言われてしまった。
なんでも今はudevを使ったhwdbなんだそうだ。

そんなわけでやってみる。
ドキュメントはArchのwiki: スキャンコードをキーコードにマップ

手順

スキャンコードを調べる

showkey コマンドで調べる。が、このコマンド、Xのグラフィカル端末とかでは駄目で、仮想端末である必要がある。
そこで、おもむろに ctrl alt F4 を押下する。
すると tty4 が立ち上がってくるので、ログインする。

1
# showkey --scancodes

すると、押下したキーにしたがったスキャンコードが調べられる。
10秒なにもしないと、プログラムは終了する。
で、このスキャンコードは10進数だが、必要なのは16進数なので変換しておくこと。

自分のhwdbを書く

今回は本体のキーボードのCAPS_LOCKCTRL_Lにしたいので、デフォルトキーボード設定だけ書く。
hwdbの書式はevdevに上から順番にマッチさせて適用していくので、上にUSBキーボードの内容、最下段に本体に付いているキーボードの記述を行なう。

/etc/udev/hwdb.d/10-my-modifiers.hwdb

1
2
evdev:atkbd:dmi:*
KEYBOARD_KEY_3a=leftctrl

db update

dbのupdateと取り込みを行なう。
systemdから自動で行なう事も出来るが、とりあえず手動で。

1
2
# udevadm hwdb --update
# udevadm trigger

再起動

あとは再起動。