Linux環境のキーボードカスタマイズ

わりと暇だったので、久しぶりにLinux側の入力関係のカスタマイズをした。行ったことは以下のキー変更です。

  • Caps Lockを半角/全角へ
  • 半角/全角をEscへ
  • EscをCaps Lockへ
  • 無変換をSuper_Lへ
  • 変換をSuper_Rへ

基本的にxkbでキーバインドを変更する - Happy My Lifeに書いてあるままの手順です。

mkdir -p ~/.xkb/keymap ~/.xkb/symbols
setxkbmap -print > ~/.xkb/keymap/mykbd

~/.xkb/keymap/mykbdには"+myswap(swapkeys)"を追加したのみ。

xkb_keymap {
	xkb_keycodes  { include "evdev+aliases(qwerty)"	};
	xkb_types     { include "complete"	};
	xkb_compat    { include "complete+japan"	};
	xkb_symbols   { include "pc+jp+inet(evdev)+myswap(swapkeys)"	};
	xkb_geometry  { include "pc(pc105)"	};
};

~/.xkb/symbols/myswapには以下を記述した。無変換キーと変換キーについては、Ubuntu:無変換・変換キーをMeta・Hyperキー化してAutoKeyでカスタマイズ可能な修飾キーにする方法を参考にした。

partial modifier_keys
xkb_symbols "swapkeys" {
    replace key <HZTG> { [ Escape ] };
    replace key <CAPS> { [ Zenkaku_Hankaku, Kanji ] };
    replace key <ESC>  { [ Eisu_toggle, Caps_Lock ] };
    replace key <MUHE> { [ Super_L ] };
    replace key <HENK> { [ Super_R ] };
};

最後に、.xmonad/xmonad-session-rcで行っていたxmodmapをコメントアウトして完了した。

#xmodmap ~/.Xmodmap
xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY 2> /dev/null
clipit &

使用頻度が高いキーが近くなって満足してます。オレポータビリティの考え方からはこんなことをしたらだめなのですが、入力関係だけは作業効率に直結するのでわりとカスタマイズしています。