了解计算机发展史的人应该知道,现在通用的QWERTY 键盘布局 其实是为了降低打字速度(因为在“远古”时代,打字过快会导致卡键),故意把常用键隔开。
Dvorak布局,中文译作 德沃夏克,基于字母出现频率和手的生理基础来设计的。网站1有一些关于Dvorak的详细介绍,还有这里也是一个新手入门可看的wiki,最直观地从下图可以看出一些端倪,元音aoeui和常用的辅音安排在中间行。网站1还提供了键盘布局的pdf文档。基于统计的数据也试图说明,使用Dvorak布局,近2/3的按键都在中间行,中文的数据似乎也差不多。
扫盲过后,似乎值得一试。如果在windows上,想要体验一番的话,下面是最常见的流程:
1. 在原版windows上使用Dvorak键盘布局:
开始—控制面板—区域和语言选项—语言 选项卡—详细信息—在“已安装的服务”中点击添加,输入语言中文英文都行,下面的键盘布局选 美国英语-Dvorak
保存确定之后,打开一个文本文件,在输入法指示器/或者默认的ctrl-shift把输入法切换成Dvorak,就可以体验一把。
2. 如果你的系统是西红柿花园版或者飓风之类的精简版windows,Dvorak键盘布局很可能已经在精简的时候就被xx了,在上面添加的时候也没有,怎么办呢。简单,第一步,到找dll下载站下载,并解压缩对应操作系统(包括2000,XP,2003)的kbddv.dll,放到windows\system32目录下,然后把下面的文字另存为.reg文件,双击导入,那么在1中提到的,添加键盘布局时,Dvorak又回来了
Windows Registry Editor Version
5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\
00010409
]
"Layout File"
=
"KBDDV.DLL"
"Layout Id"
=
"0002"
"Layout Text"
=
"美国英语-Dvorak"
"Layout Display Name"
=
"@%SystemRoot%\\system32\\input.dll,-5092"
3. 好像还是有点问题,这样添加的Dvorak是以一个输入法的形式出现的,输入英文当然方便,只要切换一下就好了,可对于广大其他程序和中文输入法呢,它们还是按照QWERTY的布局接受键盘输入。要适应两套布局简直是灾难!。
有没有一种办法直接把系统的全局按键统统改过来。有人说把键盘拆了,按新布局装好 :P ,可这样是不行滴。想到打魔兽的时候,讨厌的win键当然是要屏蔽掉的,而且还有一些快捷键也需要修改,许多游戏改键工具都可以做到。那么有没有一个小工具,打开就切换成Dvorak布局,切换一下又回到QWERTY布局呢,当然有,在SourceForge的这儿,不过我试用了一下发现这个小工具很糟糕,切换一次就少掉一个输入法 -__-,得照1中类似的方法,把输入法重新添加回来
且不说这个删输入法的bug,要开着一个小工具自然不是geek的做法,在Linux下面改改keytables就好了,windows可没有这么简单的地方,功夫不负有心人,总是有办法的,在另一种键盘布局colemak的页面找到了关键字scancode,啥?扫描码?有兴趣可以到微软的页面看看,总之是通过注册表的如下位置
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout
来实现键盘映射,也就是说,windows按照你定制的scancode map,让程序接收到的按键是映射后的。在这里找到一份已经写好的scancode map,先把下面的文字另存为 qwerty.reg,留着备用。。。
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"ScanCode Map"=hex:00,00,00,00,00,00,00,00,01,00,00,00,00,00,00,00
把下面的文字另存为dvorak.reg文件,双击导入注册表,重启后生效。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"ScanCode Map"=hex:00,00,00,00,00,00,00,00,22,00,00,00,2d,00,30,00,24,00,2e,00,\
11,00,33,00,33,00,11,00,12,00,20,00,34,00,12,00,1b,00,0d,00,0d,00,1b,00,16,\
00,21,00,17,00,22,00,20,00,23,00,1a,00,0c,00,2e,00,17,00,23,00,24,00,14,00,\
25,00,31,00,26,00,35,00,1a,00,30,00,31,00,13,00,18,00,26,00,19,00,2f,00,34,\
00,28,00,10,00,0c,00,28,00,19,00,13,00,18,00,1f,00,1f,00,27,00,2c,00,35,00,\
15,00,14,00,22,00,16,00,25,00,2f,00,10,00,2d,00,21,00,15,00,27,00,2c,00,00,\
00,00,00
如果发现比较悲剧,照着pdf文档或者图都不会打字的话,还是回去QWERTY布局吧,双击刚才存好的qwerty.reg,双击导入注册表,重启后生效。
变回以前布局的另一种办法是到注册表的如下位置,删除右边的Scancode Map键值即可
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout
4. 尝试的最终结果
我试了一下之后还是换会了QWERTY的键盘布局,综合考虑到前辈1提到的一些忠告,前辈2的介绍文后的评论里有人提到Dvorak的所谓优势其实也值得商榷,还有最开始那个网站提到的优势劣势对比。对我来说,一个是快捷键的问题,一个是VIM的问题(因为VIM的按键设计是基于QWERTY的,跟字母没多大关系,关键是键的位置),再者QWERTY的确是太太太太通用了,从PC到上网本再到智能手机都是这样的,迁移成本太高了,能咋办?
如果是英文输入,那么选择美国英语的Dvorak布局就可以了。
如果要用中文输入法,在开始菜单的运行里面输入regedit后回车,找到\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Keyboard Layouts,中文输入法一般在这个目录的最后几项,简体中文输入是E0XX0804等(中文美式键盘是00000804),繁体中文是E0XX0404等。把输入法的Layout File的值由kbdus.dll改成kbddv.dll。注销并登录后,中文输入法的键盘布局即成为了标准的德沃夏克布局。如果中文输入法没有bug,那么就可以正常地使用Dvorak布局了。某台计算机上,紫光拼音输入法V6和谷歌拼音输入法支持正常;搜狗拼音输入法改后是乱的布局;微软拼音2003、2007皆不支持。
由于不同中文输入法处理键盘布局的方式不同,不同的Windows程序对键盘布局的处理也不同,一劳永逸的办法是改键盘的ScanCode Map。在\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Keyboard Layout里面新建一个叫ScanCode Map的二进制项,并将内容设置为Dvorak相关的项。运行这个注册表编辑文件即可,运行这个文件恢复到Qwerty布局。运行完这两个脚本都要注销后重新登录才有效的。(感谢网友Jakukyo Friel)
改系统的ScanCode Map的话,原来输入法的键盘布局都不要改变,必须保留kbdus.dll,如果改成kbddv.dll再改Scancode Map就会乱了。