机械键盘的wasd键和上下左右键的兑换方式如下:
我们先按下Windows+r弹出运行窗口,输入regedit后回车进入注册表。
我们利用Scancode Map 注册表项来完成键盘按键的互换。在注册表的:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout\ 下新建一个二进制值项: "Scancode Map"。这个项的功能就是替换按键。可以直接在此二进制项中修改数值但过程不够直观,我们采取编写reg注册表项文件的方法来继续。
查看Scancode Map的值,会显示0000。Scancode Map代码在reg注册表编辑文件中有固定的格式,格式是
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,##,##,##,##,00,00,00,00
以16进制表示,用逗号分隔字节,分成五个部分。
前8个00是版本号和头部字节,不要改动直接输入上。
接着的“02”表示映射数,其值始终比实际映射数多一,按照二进制的读写规则倒序,“02,00,00,00, ”实际上是 “00,00,00,02,”要实现交换两个按键,这个值写“03”,若要实现交换交换方向键和WASD,这个值就是“09”。
后边代码每4个是一组:前两个是映射后键位的扫描码,后两个是键位原扫描码。如果要交换两个键,则一次有两组映射,四个值的排列形式是:键A,键B,键B,键A。直接翻译就是:键A成为键B,键B成为键A。
最后以“00,00,00,00” 结束。
接下来是实际操作环节,我们随便找个位置新建一个文本文档(*.txt),然后打开,输入
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,0#,00,00,00,##,##,##,##,00,00,00,00
其中的#号是我们要自己修改的部分,先进行一步,交换W和上方向键,第一个#写3,W的扫描码是00 11,上方向键的扫描码是E0 48。由于二进制倒序写作“11,00,48,E0,48,E0,11,00,”。
所以上面一行代码就变成了
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,48,E0,11,00,11,00,48,E0,00,00,00,00
这行代码实现了交换键盘上的W和上方向键。
然后关闭保存这个文本文档,右键重命名,修改文件后缀.txt变为.reg,reg是修改注册表的文件的后缀。双击运行这个文件,将修改写入注册表。这时再到注册表的HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout\ 下查看Scancode Map,发现数值非常直观。
重启或注销计算机,修改生效,这个时候W和上方向键的替换已经完成了。我们更进一步,查找完毕相应键位的键盘扫描码后,继续写出A和左、S和下、D和右的替换代码,这个时候全部代码变成以下内容
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,09,00,00,00,48,E0,11,00,11,00,48,E0,4B,E0,1E,00,1E,00,4B,E0,50,E0,1F,00,1F,00,50,E0,4D,E0,20,00,20,00,4D,E0,00,00,00,00
觉得原理难懂的朋友可以直接复制上面的代码到新建的文本文档中,修改修改文件后缀.txt变为.reg。双击运行这个文件,提示写入成功后就宣告成功。
如果想要让互换的键位返回原样,只需打开注册表目录HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout将下面的Scancode Map删除就行了。
注意,以上对于键位的修改都只有在重启或注销计算机之后才能生效。
试试FN+左windows键是切换WASD和上下左右,但是这个键盘设计得不好,
你按这两个键同时也就把左windows锁定了,FN实际上占用了右windows键,
win8下windows键全锁定了,就没办法调输入法了。