在 Windows 注册表中有个 “Scancode Map” (即扫描码映射)的键,我们可以通过修改这个键的值来实现键位映射的更改。
个人喜欢通过创建注册表文件来进行映射。首先创建 scancode.reg 文件:
scancode.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,02,00,00,00,1d,00,3a,00,00,00,00,00
上面的命令是将 大写锁定键 映射成 左Ctrl 。因为我没有使用大写锁定键的习惯,所以我就没有映射回来。
然后,双击该文件,弹出框,选 “是”
因为是修改注册表,所以需要重启系统。
解释代码
前三行不用说了,就相当于是映射的路径。重点是 hex 后面的一串字符串。
为了便于分析,将上面的字符串,每八位为一行:
00,00,00,00,00,00,00,00,02,00,00,00,1d,00,3a,00,00,00,00,00
其中头两行和最后一行是固定格式,全部是零。
从第三方开始,表示共更改了多少个按键,本例为2个。
怎么算的?从第4行开始,到最末尾行(虽然严格来说末行不算),每行算1个,4、5行,刚好2个。
第4行,前后各4位,分别代表某个按键。本例为将 3a00 的按键映射为 1d00。3a00 代表 CapsLock 键,1d00 代表Left Ctrl键。
第5行,已经讲了,末行,固定8个0。
最后,要注意的是,不要忘记了将代码合并为一行,就像我上面文件里的一样,不然如果运行了注册表文件,可能出现开不了机的风险!!!
如果你想还原,在注册表的路径[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout] 下,删除Scancode Map键即可。
按键映射对照表:
Escape 01 00Tab 0F 00Caps Lock 3A 00Left Alt 38 00Left Ctrl 1D 00Left Shift 2A 00Left Windows 5B E0Right Alt 38 E0Right Ctrl 1D E0Right Shift 36 00Right Windows 5C E0Backspace 0E 00Delete 53 E0Enter 1C 00Space 39 00Insert 52 E0HOME 47 E0End 4F E0Num Lock 45 00Page Down 51 E0Page Up 49 E0Scroll Lock 46 00F15 66 00
更多按键请参考 这里
