在 Windows 注册表中有个 “Scancode Map” (即扫描码映射)的键,我们可以通过修改这个键的值来实现键位映射的更改。
个人喜欢通过创建注册表文件来进行映射。首先创建 scancode.reg 文件:
scancode.reg

  1. Windows Registry Editor Version 5.00
  2. [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
  3. "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 后面的一串字符串。
为了便于分析,将上面的字符串,每八位为一行:

  1. 00,00,00,00,
  2. 00,00,00,00,
  3. 02,00,00,00,
  4. 1d,00,3a,00,
  5. 00,00,00,00

其中头两行和最后一行是固定格式,全部是零。
从第三方开始,表示共更改了多少个按键,本例为2个。
怎么算的?从第4行开始,到最末尾行(虽然严格来说末行不算),每行算1个,4、5行,刚好2个。
第4行,前后各4位,分别代表某个按键。本例为将 3a00 的按键映射为 1d003a00 代表 CapsLock 键,1d00 代表Left Ctrl键。
第5行,已经讲了,末行,固定8个0。
最后,要注意的是,不要忘记了将代码合并为一行,就像我上面文件里的一样,不然如果运行了注册表文件,可能出现开不了机的风险!!!
如果你想还原,在注册表的路径[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout] 下,删除Scancode Map键即可。
按键映射对照表:

  1. Escape 01 00
  2. Tab 0F 00
  3. Caps Lock 3A 00
  4. Left Alt 38 00
  5. Left Ctrl 1D 00
  6. Left Shift 2A 00
  7. Left Windows 5B E0
  8. Right Alt 38 E0
  9. Right Ctrl 1D E0
  10. Right Shift 36 00
  11. Right Windows 5C E0
  12. Backspace 0E 00
  13. Delete 53 E0
  14. Enter 1C 00
  15. Space 39 00
  16. Insert 52 E0
  17. HOME 47 E0
  18. End 4F E0
  19. Num Lock 45 00
  20. Page Down 51 E0
  21. Page Up 49 E0
  22. Scroll Lock 46 00
  23. F15 66 00

更多按键请参考 这里