vimを使う人は、Escapeキーの使用頻度が高いです。
また、一般的にCapsLockを活用している人はいません。
そこで、CapsLockにEscapeを割り当ててしまいましょう。
一般的に使われるのが、
gnome-tweak-tool
から変える方法、
xmodmap
を使う方法、
などですが、私の環境はそもそもgnomeでないのと、xmodmap
ではスリープした際やキーボードを取り外した際などに設定がリセットされてしまいます。
そこで今回は、Xorgの設定を変更する方法を使います。
設定
まず、現在使っているキーボードの種類とレイアウトを調べます。
以下のコマンドを実行してください。
$ setxkbmap -print -verbose 10
Setting verbose level to 10
locale is C
Trying to load rules file ./rules/evdev...
Trying to load rules file /usr/share/X11/xkb/rules/evdev...
Success.
Applied rules from evdev:
rules: evdev
model: pc105
layout: us
options:
Trying to build keymap using the following components:
keycodes: evdev+aliases(qwerty)
types: complete
compat: complete
symbols: pc+us+inet(evdev)+capslock(swapescape)+capslock(escape)
geometry: pc(pc105)
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us+inet(evdev)+capslock(swapescape)+capslock(escape)" };
xkb_geometry { include "pc(pc105)" };
};
つらつらと出てきましたが、model
とlayout
という欄をメモしておいてください。この場合は、pc105
とus
ですね。
次に、/etc/X11/xorg.conf.d/10-keyboard.conf
を作成します。今回はvim
を使いますが、nano
など好きなエディタで構いません。
$ sudo vim /etc/X11/xorg.conf.d/10-keyboard.conf
Section "InputClass"
Identifier "keyboard"
MatchIsKeyboard "on"
Option "XkbLayout" "メモをしたlayout"
Option "XkbModel" "メモをしたmodel"
Option "XkbOptions" "caps:escape"
EndSection
あとは、これを保存して再起動(またはディスプレイマネージャを再起動)をすることで反映されます。
$ systemctl reboot
または
$ sudo systemctl restart ディスプレイマネージャ
CapsLockとEscapeをスワップしたい場合
CapsLockにEscapeを割り当てるのではなく、
CapsLockとEscapeの役割を入れ替えたい場合もあるかと思います。
そのときは、
Option"XkbOptions""caps:escape"
のcaps:escape
部分をcaps:swapescape
に変更してみましょう。