在 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 00
Tab 0F 00
Caps Lock 3A 00
Left Alt 38 00
Left Ctrl 1D 00
Left Shift 2A 00
Left Windows 5B E0
Right Alt 38 E0
Right Ctrl 1D E0
Right Shift 36 00
Right Windows 5C E0
Backspace 0E 00
Delete 53 E0
Enter 1C 00
Space 39 00
Insert 52 E0
HOME 47 E0
End 4F E0
Num Lock 45 00
Page Down 51 E0
Page Up 49 E0
Scroll Lock 46 00
F15 66 00
更多按键请参考 这里