利用setxkbmap来改变Ctrl键与Caps Lock键

网上对于改变Ctrl键的位置,基本上有“按键提速说”和“保养小指说”两种,根本原因还是Emacs对Ctrl键的需求高得就好比鼠标对鼠标左键的需求,而Ctrl键的默认位置实在太远……我想我的手指已经很细长了(曾经有人这么说过),小指按Ctrl还是很难过,至少食指需要左移一个键位才行。所以为了踏进神的领域Emacs,改变Ctrl键的位置是势在必行。

看过无数文章教人怎么利用xmodmap改键位映射,新建一个~/.xmodmaprc文件,然后添加一系列规则,然后.bashrc的时候载入云云。这里我指出另一种更”基本”的方法,说它更基本,因为它用的都是xorg自带的软件……

不知道有多少人知道setxkbmap这样一个命令,它的基本用法是改变键盘布局,好比你临时遇到一个日本的键盘,你找不键了,你可以setxkbmap -layout us,用完了再setxkbmap -layout jp即可复原。
偶然网上也流传一些专用的用法,比如:

$ setxkbmap -option ctrl:nocaps

这个命令可以让Caps Lock键代替Ctrl键
又如

$ setxkbmap -option ctrl:swapcaps

这个命令可以交换Caps Lock键与左Ctrl键

这里有一个问题,就是——这些选项在哪儿?
setxkbmap –help,得不到任何信息
man setxkbmap,依旧得不到任何信息
实际上,经俺各种神经质调查发现,这些选项位于这几个文件里:
/usr/share/X11/xkb/rules/evdev.lst
/usr/share/X11/xkb/rules/base.lst
这俩文件一模一样……

接下来就好办了,利用grep搜索过滤”ctrl:或:ctrl”。

$ grep -e "ctrl:\|:ctrl" /usr/share/X11/xkb/rules/evdev.lst
grp:ctrls_toggle     Both Ctrl keys together
grp:ctrl_shift_toggle Ctrl+Shift
grp:ctrl_alt_toggle  Alt+Ctrl
ctrl:nocaps          Caps Lock as Ctrl
ctrl:lctrl_meta      Left Ctrl as Meta
ctrl:swapcaps        Swap Ctrl and Caps Lock
ctrl:ac_ctrl         At left of 'A'
ctrl:aa_ctrl         At bottom left
ctrl:rctrl_ralt      Right Ctrl as Right Alt
ctrl:menu_rctrl      Menu as Right Ctrl
ctrl:ctrl_ralt       Right Alt as Right Ctrl
caps:ctrl_modifier   Make Caps Lock an additional Control but keep the Caps_Lock keysym
altwin:ctrl_win      Control is mapped to Win keys (and the usual Ctrl keys)
altwin:ctrl_alt_win  Control is mapped to Alt keys, Alt is mapped to Win keys
terminate:ctrl_alt_bksp Control + Alt + Backspace

从中选一种方法放ctrl即可,我目前选了caps:ctrl_modifier,觉得还可以。