ぶていのログでぶログ

思い出したが吉日

(Linuxデスクトップ) CapsLock <-> Ctrlの入れ替えをudevで行うようにした

GMOペパボアドベントカレンダー2021。今日から始まりました! …が、これはその記事ではないです。doewくんの記事楽しみですね。

さて、本題。 今まで、CapsLock <-> Ctrlの入れ替えをgnomeの機能の行っていた。 具体的には以下のコマンドを実行する、もしくはgnome-tweakなどで設定していた。

gsettings set org.gnome.desktop.input-sources xkb-options "['ctrl:nocaps']"

しかし、どうもUbuntu21.10から(?)、私の環境ではノートPC内蔵キーボードではこの設定が効かなくなってしまった。 setxkbmapを見ても設定されていないことがわかる。

❯ setxkbmap -print
xkb_keymap {
        xkb_keycodes  { include "evdev+aliases(qwerty)" };
        xkb_types     { include "complete"      };
        xkb_compat    { include "complete"      };
        xkb_symbols   { include "pc+jp+us:2+inet(evdev)"        }; 👈 ここにctrl(nocaps)が入るはず
        xkb_geometry  { include "pc(pc105)"     };
};

/etc/default/keyboardなどに設定してみたがうまく反映されなかった。 普段は、自作キーボードで作業していてこの問題は発生しないのだが、外やオフィスで作業するときに本体キーボードで作業するときにとても不便である…*1

色々調べていたらudevで解決する方にたどり着いたので、それで設定することにした。 私の環境では以下の設定を行ったらうまく行った。

❯ cat /etc/udev/hwdb.d/90-nocaps-keyboard.hwdb
evdev:atkbd:dmi:bvn*:bvr*:bd*:svn*:pn*:pvr*
  KEYBOARD_KEY_3A=leftctrl
❯ sudo systemd-hwdb update && sudo udevadm trigger

詳しい設定内容は参考サイトを参照をば。 これでとても快適な生活を送れるようになってハッピー!

参考サイト

iranoan.my.coocan.jp

zenn.dev

*1:当初この問題に気が付かなくて、ターミナルで操作するたびに日本語入力モードになっていてイライラしていた