2007年8月23日星期四

解决Dvorak键盘布局快捷键的问题

虽然Dvorak键盘布局比QWERTY的排列更合理,但对于已经习惯QWERTY键盘的人来说,迁移的难度是很大的。对于惯用右手握鼠标的人来说,其中之一便是左手的那些热键,Ctrl+Z, Ctrl+X, Ctrl+C, Ctrl+V, 等等。因为现在的ZXCV都在键盘偏左的位置,所以不得不用右边的Ctrl键;另外,ZXCV等键相隔都很远,按起来很不舒服。

有没有办法修改Windows的全局热键呢?当然不行,我们没有Windows的代码。

能否使用重映射(Remapping)按键将ZXCV等键映射到原来的位置呢(这种方法很常见,很多日本同人格斗游戏的按键都可以通过软件修改到WASD来)?不行,因为这样就破坏了Dvorak键盘布局。

我们要找的是这样的工具,它能全局地拦截按键,并对指定的按键进行替换。替换的要求不只是单独的按键,同时要是按键序列。替换后的按键同样不只是单独的按键,同时要是可自定义的按键序列。

我尝试了很多软件,都无法满足以上的所有要求。昨天下午,无意间在VeryCD的一篇帖子里找到一个名叫Key Transformation(http://www.softboy.net/key/)的软件,试用后发现它满足所有要求。不过这是一个收费软件($44.95!)。要知道,别人一套虚拟机(Parallels Workstation)也才$49.99啊,怎么说,虚拟机的含金量也要高得多吧。放弃……

终于,在RandyRants找到了一篇文章介绍AutoHotKey(http://www.autohotkey.com/)。这是一个开源软件,免费。它能读取脚本文件,按宏的定义来替换按键。由于AutoHotKey支持的宏命令非常丰富,所以它完全能够胜任我们的要求。

比如,我们创建一个脚本文件test.ahk,输入

^j:: SendInput ^c

运行脚本后,按下Ctrl+J就相当于按下了Ctrl+C,而Dvorak的J键就在QWERTY的C键的位置。

当然,我们完全可以用AutoHotKey来模拟出一整套Dvorak键盘布局。事实上,在AutoHotKey的论坛上已经有人写出了脚本(http://www.autohotkey.com/forum/topic4473.html)。

另外,如果有兴趣的话,可以到这里(http://www.siteuri.ro/dvorak/)看看。这里有一个程序,你输入了一段文字后,它可以输出用各种不同键盘布局输入的效率比较。48小时之内允许测试5次。注意,最后一个键盘布局是Colemak,我正在熟悉它。关于Colemak键盘布局,我在下一篇文章中详细介绍。

不过,用新键盘来打出这么多字真是很累啊。万事开头难。

1 条评论:

lltg 说...

我一直都是用Ctrl-Insert, Shift-Insert, Shift-Delete, Ctrl-Z这些系统默认就有的快捷键的。
只要右手用鼠标的时候左手到右手那边去就可以了。
也是因为这个,我一直在用全键盘。
在没有全键盘的时候我一般会用AHK的脚本来做在按下LWin时布局变回QWERTY。这样可以用Ctrl-LWin-;/Q/J/K来实现对应的操作。