xmodmapでキーバインド変更する方法

CapsキーをCtrlキーにする方法はよく紹介されており、Gnomeなどを使っていれば簡単に変更できる。
しかし、そこではあまり詳細に変更できない、詳細に設定したい場合はxmodmapを用いる。


まず現在のkeymapは以下のコマンドで得られる。

xmodmap -pke

この出力を.xmodmapに書きだすために

xmodmap -pke > ~/.xmodmap

とする。
この.xmodmapを編集し、

xmodmap ~/.xmodmap

とすると、変更が反映される


Caps LockのキーをCtrlに変更したい場合の例

ターミナルでxevというコマンドを使用すると、押したキーが何にバインドされていて何番のキーなのかがわかる。
Capsキーを押すと66番、左Ctrlキーは37番だということがわかると思う。

では、capsキーの番号と左Ctrlきーの番号がわかったので.xmodmapを変更してキーバインドを変更しよう。
.xmodmapの66番を以下のように37番に書かれている内容と同じにする。
つまり、

keycode  66 = Eisu_toggle Caps_Lock Eisu_toggle Caps_Lock

から

keycode  66 = Control_L NoSymbol Control_L

へと変更する。

通常のキーはこれで変更できるが、 Ctrl, Caps Lock, Shift, Altなどは特殊キーなので更に変更を加える必要がある。

末尾に

clear Lock
add Control = Control_L

を加える。clear LockによってLockの特殊キーを削除する。
その後Controlの特殊キーにControl_Lを追加する。
もともとControl_L特殊キーに入っているがここで、新しくControl_Lの割り当てキーを増やしたのでそれを反映させるために行う。

この特殊キーの一覧はターミナルで

xmodmap

と叩くことによって得られる。これらのキーを削除または追加するときは注意しよう。


最後に以下のコマンドを叩くことによって以上までの編集内容が反映される。

xmodmap ~/.xmodmap