用 Vim 久了,自然会被引入改键的歧途。我习惯使用的,是下面 2a 这种。

  1. 对调,对调两个按键的功能
    .. Esc <==> CapsLock
    .. Esc <==> Tilde(~)
    .. Esc <==> Windows
  2. 重设,改变原始按键的功能
    .. CapsLock => Esc
    .. Windows => Esc

基于 xmodmaprc 作的改建,有线键盘的时候没什么大问题。
在改用蓝牙键盘以后,每次断开后再重连,就会导致改键失效。

% cat ~/.Xmodmaprc
! Make <CapsLock> to be <Escape>
remove Lock = Caps_Lock
keysym Caps_Lock = Escape
add Lock = Caps_Lock

使用网上的 办法,改用 setxkbmap 来实现改键,问题就顺利解决了。
另外, 意外 发现了 xcape,结合 这篇这篇我把改键换成了这样,可以改成这样

  1. 对调 CapsLock <==> (左)Ctrl,并且
  2. 单击 CapsLock 触发 Esc 键
/usr/bin/setxkbmap -option ctrl:swapcaps
/usr/bin/xcape -e 'Control_L=Escape'

需要一段时间适应。坚持了一下午,我还是老老实实用 2a 吧。

/usr/bin/setxkbmap -option caps:escape