交换 ctrl 和 caps lock

因为 ctrl 键在笔记本键盘的左下角,对于经常使用 ctrl 键的人来说是个痛苦的事情。在网上搜了下有几种交换键位的方法,在这里记录一下。

第一种方法是使用 xmodmap(参考资料 [1])。建立一个新文件 ~/.Xmodmap,添加以下内容:

remove Lock = Caps_Lock
remove Control = Control_L
keysym Control_L = Caps_Lock
keysym Caps_Lock = Control_L
add Lock = Caps_Lock
add Control = Control_L

然后执行

xmodmap ~/.Xmodmap 2>/dev/null

就行了。如果不想每次启动都手动输入命令,可以把命令写到 ~/.xinitrc 中。注意如果把命令写到 ~/.bashrc 中,每次新开一个终端或 tab 上述命令都会被执行一次,这样键位又换回来了。

另一种方法是使用 setxkbmap 命令(参考资料 [2])。只需执行下面的命令:

setxkbmap -option ctrl:swapcaps

就行了。而且可以把命令放到 ~/.bashrc 中,重复执行并不影响。

(2012.07.02 更新)在 gnome 中可以通过图形界面选项调整。打开 系统 -> 首选项 -> 键盘 -> 布局 -> 选项... -> Ctrl key position,选择“Swap Ctrl and CapsLock”即可。

除了交换 ctrl 和 caps lock 外也有和 alt 互换的,这样就可以用两个拇指分别按 ctrl 和 alt(交换右 ctrl 和 alt):

remove mod1 = Alt_R
remove Control = Control_R
keysym Control_R = Alt_R
keysym Alt_R = Control_R
add mod1 = Alt_R
add Control = Control_R

为什么会想到要交换 ctrl 键呢?因为某天在网上闲逛的时候,无意中看到 这篇文章,顿时热血沸腾,心想左手 vim 右手 emacs 是多么拉风的事情。为了表明自己学习的决心,装上 emacs 的同时也把相伴 5 年的 vim 给卸了。磕磕碰地碰用了几个星期,最深的感触是左手小指太辛苦了,即使是把 ctrl 和 caps lock 交换,一天下来小指也是又累又痛,于是又灰溜溜地用回 vim 了。想学习 emacs 的朋友如果觉得没有动力的话可以看看上面提到的文章,一直在用 vim 的或者没用过这两者的也建议尝试一下,说不定你就爱上它了。即使可能被吓退,但是相信会从学习过程中收获不少,例如可以在 vim 里模拟几个 emacs 移动定位的快捷键,对于输入法切换或输入括号和引号等成对出现的字符时就很方便:

" emacs-style key bindings
inoremap <C-a> <C-o>^
inoremap <C-b> <left>
inoremap <C-d> <del>
inoremap <C-e> <C-o>$
inoremap <C-f> <right>
inoremap <C-g> <esc>
inoremap <C-k> <C-o>D
inoremap <C-n> <down>
inoremap <C-p> <up>
inoremap <C-t> <esc>xpi
inoremap <C-y> <esc>pa

更夸张一点的还把右 ctrl 和 enter 给换了,毕竟在 emacs 中用 ctrl 的时候很多,而且 enter 可以用 ctrl-m 和 ctrl-j 代替,这样两只手的小指可以左右开弓。关于修改键映射参考资料 [3] 有详细的说明。

参考资料

[1] 交换你的Caps-Lock和右Control键
[2] 通过修改键盘映射替代损坏按键
[3] xmodmap修改键映射

Comments (3)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注