1 前面步骤为原理说明和分步操作,如果感觉注册表和二进制很苦手,可以直接跳到第 6 步,按说明来就可以实现方向键和wasd的互换了。 我们先按下windows+r弹出运行窗口,输入regedit后回车进入注册表。2我们利用scancode map 注册表项来完成键盘按键的互换。在注册表的:hkey_local_machine\system\currentcontrolset\control\keyboard layout\ 下新建一个二进制值项: "scancode map"。这个项的功能就是替换按键。可以直接在此二进制项中修改数值但过程不够直观,我们采取编写reg注册表项文件的方法来继续。3 查看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” 结束。4接下来是实际操作环节,我们随便找个位置新建一个文本文档(*.txt),然后打开,输入windows reg**try 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和上方向键。5然后关闭保存这个文本文档,右键重命名,修改文件后缀.txt变为.reg,reg是修改注册表的文件的后缀。双击运行这个文件,将修改写入注册表。这时再到注册表的hkey_local_machine\system\currentcontrolset\control\keyboard layout\ 下查看scancode map,发现数值非常直观。6重启或注销计算机,修改生效,这个时候w和上方向键的替换已经完成了。我们更进一步,查找完毕相应键位的键盘扫描码后,继续写出a和左、s和下、d和右的替换代码,这个时候全部代码变成以下内容windows reg**try 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删除就行了。注意,以上对于键位的修改都只有在重启或注销计算机之后才能生效。end 20210311