有没有想过CapsLock这个键到底为啥要存在?

TODO

有多少人用这个键?

TODO

这个键的位置有多重要?

TODO

对程序员的意义何在?

既然这个键位曾经是那么重要的位置,试想一下用回来的感觉?很疯狂吗?完全不会,试试就知道了。

在常用的系统里交换这两个键还是比较容易实现的。

键盘键入反应到计算机里去,是通过将键盘上键位触发转换成电信号传送给和计算机的。比较早年代的人可能还记得有种设备叫做『电传机』

GNU/Linux

console (非X-Window)

在Linux里系统启动所使用的键盘布局文件就是我们的目标,他们位于/usr/share/keymaps,想知道他们里面存放了什么信息吗?看着是gz的压缩,其实打开就是纯文本的文件

可以看到就是将键位信号编号对应的键位功能进行map,比较常见的有qwert的键盘,等

我们手里最常用的恐怕就是标准US布局的键盘了吧,打开/usr/share/keymaps/i386/us.map.gz,找到58和29,将他们对应的键位交换。对应到各个发行版可能略有不同,大体思路是一致的。

某使用的是gentoo,所以建议和archlinux的wiki上一样,复制一份出来,例如叫做Caps2Control.map,保存,然后在/etc/conf.d/keymaps里将keyboard改成对应的名字即可

顺带

如果想即刻体验,不消待到重启后,在console下(按Ctrl+Alt+F2试试),输入dumpkeys,就会把当前键位信息输出来;重定向到一个文件(例如MyMap.map),照上面修改一下,然后用loadkeys MyMap.map,马上就生效了;如果觉得乱了,使用loadkeys -d加载默认配置。

X-Window

在启动X-Window后,键位映射自动由Xorg接管,console下的配置无效了;没关系,X-Window的问题交给X下来处理:D

简而言之,使用xmodmap,用发行版的包管理器安装一下;

使用方法很简单。

xmodmap /path/to/xmodmap_config

这里给个比较简单的配置,将CapsLock当作Control,并关闭原Ctrl的功能

更加具体的用法可以参考手册

顺带

由于这里指定了keycode,如果使用的是非标准键盘等,想查看键位编号,可以使用xev这个工具,打开后会显示最新的X事件,按下键盘就可以看到keycode了

MacOS X

系统设置里的键盘项就提供了功能,设置交换一下即可:D 一如既往的方便

MS Windows

windows下就没有自带的设置了,需要修改注册表,有兴趣的可以去网上搜一下,来满足修改其他按键的需求。

这里推荐一款软件,虽然原来的介绍里只写了XP/2000支持,但某个人实际在x64的Win7下使用也是成功的。安装打开界面上是设置,需要保存。

由于是修改注册表,需要注销用户后才生效。

就某个人换成这个习惯后,觉得CapsLock这个键位当作Control是非常好用的。虽然某算是一个vimer,时常也会使用Emacs;某自己倒是觉得Esc没那么难按,而左下Ctrl则异常痛苦!要知道,bash下最常见的key binding可是emacs的…所以学学emacs真没啥坏处,某在做翻译的时候还是喜欢用emacs,vim下切换输入法有时候乱了就全乱套了得undo好多步XDDD