注册表:更改键盘扫描码映射

stopwin.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,03,00,00,00,00,00,5B,E0,00,00,5C,E0,00,00,00,00

键Keyboard Layout下新建或修改二进制值Scancode Map,大小为十六进制表示的数值的大小:
左边字节是数值的低位,右边字节是高位。例如:0xABEF可以表示为hex:EF,AB

删除Scancode Map值可以用:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=-

原理:

键盘扫描码是操作系统识别键盘按键的标识,有点类似按键的ID,若一个按键没有扫描码,那么此按键不被操作系统识别。

注册表键Keyboard Layout下的二进制Scancode Map值可以修改键盘扫描码的映射,将一个按键的扫描码影射为另一个。

如果键盘A键的扫描码value1映射为value2,这样当A键按下时,操作系统会获得扫描码value2,然后运行对应扫描码value2的处理程序,看起来好像是扫描码为value2的按键(而非键A)被按下了。

Scancode Map值解析:

可以分为几个部分,如下

00,00,00,00,00,00,00,00,
03,00,00,00,
00,00,5B,E0,
00,00,5C,E0,
00,00,00,00
  • 前8个字节是版本信息,固定为0即可;

  • 然后4个字节表示修改映射的个数,此处为3个(低位在左,高位在右);

  • 后面每4个字节表示一个映射修改,此处共3个修改。其实有效修改只有2个,最后1个(也就是最后4个0字节)为固定结束符。

  • 每个按键的修改占4个字节:右边2字节为原扫描码,左边2字节为修改后的扫描码。

这个例子中,看第三行00,00,5B,E0:
其中0xE05B为左Win键的扫描码,修改为0x0000,效果为左Win键失效。

修改完注册表后重启电脑生效。


常用扫描码表

在这里插入图片描述

posted @ 2019-01-02 17:11  xuejianbest  阅读(1429)  评论(0编辑  收藏  举报