# 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 基础 →