Prety F2E

We tell browsers how to do better

0%

Windows 上借助注册表来修改键盘按键的映射

背景

在使用电脑的过程中会发现,键盘上很多按键我们平时根本使用不到,但是如果我们不小心碰到了一些按键,将会导致我们无法正常使用键盘,这种情况下,这个按键对我们没有一点好处,并且还是影响我们的使用,那么有什么办法来更改键盘按键的映射吗?其实这个方法很多,本文将给大家介绍借助注册表来修改键盘按键映射的方法

在 Windows系统中,提供了一种键盘扫描码映射方法,使你能随意地设置键盘键位的布局,这就是注册表中的 Scancode Map; 我们巧妙利用 Scancode Map 就可将普通键盘改造成随心随意的个性化键盘

原理

为了正确设置,我们有必要先了解一下 Scancode Map(扫描码映射)

Scancode Map 是注册表中

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]

中的一个二进制键值(默认没有,需新建),并且有固定的格式

Scancode Map 代码的一般格式是

hex:00,00,00,00,00,00,00,00,02,00,00,00,01,00,02,00,00,00,00,00

其含义为:

  • 第一部份:8 个 00 ,这是版本信息号。照例写就是了
  • 第二部份:4 个字节。表示映射键的总数。按照二进制数的读写规则,低位在左,高位在右,02 00 00 00 这个数实际就是:00 00 00 02 。 从 02 开始,一个映射键是 02 ,两个是03 ,依次递加,十个是 0B
  • 第三部份:每 4 个是一组,前两个是映射后键位的扫描码,后两个是键位原扫描码
  • 第五部份:以 4 个 00 结束

注意:在注册表中输入时,需要将扫描码的高低字节交换一下

另外,如果想要某个键失效,将它的扫描码映射为“00 00”即可

若要恢复键盘键位原来的布局,只需定位于注册表

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]

删除 Scancode Map 键值即可

应用

了解了 Scancode Map 之后,我们就可以来利用添加功能键了。比如 Win 键扫描码为 E0 5B,Esc 为 00 01,左 Ctrl 为 00 1D,更详细的扫描码请见键盘扫描码

如果我们想把 F9、F10 键修改成为音量调整键,通过查表,可以得知

F9、F10 扫描码分别为 00 4300 44

Volume Up、Volume Down 扫描码分别为 E0 30E0 2E

这样只要将 Scancode 设置为如下就可以了

"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,30,E0,43,00,2E,E0,44,00,00,00,00,00

在目前的 Windows 版本下面,对键盘映射是全局的,而不是针对某个用户的,如果修改添加或者删除了某个映射,那么不管哪个用户使用,键盘都发生了变化

键盘扫描码 Scancode

keymarkkeymarkkeymarkkeymark
主键盘
~/·29Tab0fCaps Lock3aL-shift2a
!/12q10a1ez2c
@/23w11s1fx2d
#/34e12d20c2e
$/45r13f21v2f
%/56t14g22b30
^/67y15h23n31
&/78u16j24m32
/89i17k25</,33
(/90ao18l26>/.34
)/00bp19:/;27?35
_/-0c{/[1a"/‘28R-shift36
+/=0d}/]1bEnter1cL-ctrl1d
|/\2bL-alt38
Backspace0eSpace39
R-alte0 38
R-ctrle0 1d
小键盘
NumLock458/Up481/End4f+4e
/e0 359/PgUp492/Down50Entere0 1c
374/Left4b3/PgDn51
-4a54c0/Ins52
7/Home476/Right4d./Del53
附加键
Scroll Lock46Page Upe0 49Page Downe0 51Upe0 48
Inserte0 52Deletee0 53Lefte0 46Downe0 50
Homee0 47Ende0 4fRighte0 4d
功能键
Esc1F13bF53fF943
F23cF640F1044
F33dF741F1157
F43eF842F1258
媒体键
Mutee0 20Paly/Pasuee0 22Volume Downe0 2eStope0 24
Next Tracke0 19Prev Tracke0 10Volume Upe0 30