# Key Map
可能是按键习惯问题,或者...,不管出于什么原因,你可能希望屏蔽一些键盘上的按键,让它们失效,或者映射为其它按键。
比如默认的大小写切换键 Caps Lock,可能是使用 MacBook Pro 的原因,通常我会把它映射为 Control 键,因为使用小拇指按下原本的 Control 键实在是有些麻烦。
# 使用注册表
在 Windows 系统中,有很多软件工具可以实现上述的目的,不过如果你不希望借助工具,并且不怕麻烦的话,可以通过注册表办到。
First:
在开始菜单或者运行中输入 regedit 打开注册表编辑器,展开到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout。
在 Windows 10 新版本中可以直接复制到注册表地址栏按 Enter 键定位。
右键点击 Keyboard Layout,选择“新建 -> 二进制值”,命名为 Scancode Map。
Second:
以屏蔽 Caps Lock 键为例,可以将 Scancode Map 的数据修改为下面一串数字:
00 00 00 00 00 00 00 00 02 00 00 00 00 00 3a 00 00 00 00 00
前面 8 对以及结尾 4 对 0,可以认为是固定格式。
02 00 00 00 则是指明了有多少个映射。这里为什么是 2 个映射呢?因为结尾的 4 对 0 也算一个,所以映射的数量总是实际映射数量加壹。
另外,由于数据需要填充成 4 对的形式,所以数量为 00 00 00 02,然后将它倒过来输入。注意同一对内的数字不要颠倒顺序。
如果你映射数量是 10 或者更多,则不要直接写 10,在 16 进制中只有 0 到 9,a 到 f(代表 10 到 15),16 进制的 10 转化为 10 进制,是 16。
而 00 00 3a 00 则是让 Caps Lock 失效的关键,它们分为 2 个部分,目的是把 3a 00(Caps Lock 键)映射为 00 00(空)。
这些数字被称为扫描码,Caps Lock 键的 16 进制扫描码是 3a,填充成 2 对,为 00 3a,然后倒序输入。
Third:
再举个例子,就是上面说的将 Caps Lock 键映射为右 Ctrl 键。
右 Ctrl 键的 16 进制扫描码为 e0 1d,Caps Lock 键的扫描码为 3a。按照上述组织数据的方法,最终需要填入的数据为:
00 00 00 00 00 00 00 00 02 00 00 00 1d e0 3a 00 00 00 00 00
End:
修改完成后需要重新启动才会生效。此修改会影响所有用户,若要恢复,可以将 Scancode Map 删除。
# 键盘扫描码
| 键位 | 扫描码 |
|---|---|
| ESC | 00 01 |
| TAB | 00 0F |
| CapsLock | 00 3A |
| 左 Shift | 00 2A |
| 右 Shift | 00 36 |
| 左 Alt | 00 38 |
| 右 Alt | E0 38 |
| 左 Ctrl | 00 1D |
| 右 Ctrl | E0 1D |
| PrintScreen | E0 37 |
| 上矢印 | E0 48 |
| 下矢印 | E0 50 |
| 右矢印 | E0 4D |
| 左矢印 | E0 4B |
| Insert | E0 52 |
| Delete | E0 53 |
| Home | E0 47 |
| End | E0 4F |
| PageUp | E0 49 |
| PageDown | E0 51 |
| 左 Win key | E0 5B |
| 右 Win key | E0 5C |
| application | E0 5D |
| PAUSE | 00 45 |
| ScrollLock | 00 46 |
# 参考
Bat 基础 →