Jade Dungeon

Windows按键映射

Windows修改注册表按键映射

Scancode Map注册表项来实现键盘按键映射。

位于注册表的:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout\下新建 一个二进制值项:Scancode Map

这个项目可实现对键盘按键的映射。这里映射的意思可理解为「替换」,可将任意一键替换 成其它键。

项目格式

以16进制表示,更分为五个部分,每个逗号之间都为一个字节。

"Scancode Map" = 00,00,00,00,00,00,00,00,   02,00,00,00,   01,00, 02,00,    00,00,00,00 
  • 8个字节。 这是版本信息号。照例写就好。
  • 4个字节。 这是映射键的总数。按照二进制的读写规则,低位在左,高位在右。 02 00 00 00这个数实际就是:00 00 00 02。从02开始,一个映射键是02, 两个是03,依次递加,十个是0B
  • 2个字节。 表示替换后按键的「扫描码」。如:ESC 键的扫描码是 01 ,所以就表示 01 00 。再如左Ctrl键扫描码是1D 00, 而右Ctrl键是1D E0
  • 2个字节。 表示原按键的扫描码。格式同上。
  • 以四个 00 结束。

键盘扫描码

以十六进制表示,分两部份,0X后面两个数是扫描码,最后两个数是ASCII码(可忽略 )。如0x011b,ESC扫描码是01

扫描码
0X011B ESC
0X3B00 F1
0X3C00 F2
0X3D00 F3
0X3E00 F4
0X3F00 F5
0X4000 F6
0X4100 F7
0X4200 F8
0X4300 F9
0X4400 F10

主键盘区:

扫描码
0X2960 ~
0X0231 1
0X0332 2
0X0433 3
0X0534 4
0X0635 5
0X0736 6
0X0837 7
0X0938 8
0X0A39 9
0X0B30 0
0X0C2D -
0X0D3D =
0X2B5C "
0X0E08 BACKSPACE
0X0F09 TAB
0X1071 Q
0X1177 W
0X1265 E
0X1372 R
0X1474 T
0X1579 Y
0X1675 U
0X1769 I
0X186F O
0X1970 P
0X1A5B [
0X1B5D ]
0X1E61 A
0X1F73 S
0X2064 D
0X2166 F
0X2267 G
0X2368 H
0X246A J
0X256B K
0X266C L
0X273B ;
0X2827 '
0X1C0D RETURN
0X2C7A Z
0X2D78 X
0X2E63 C
0X2F76 V
0X3062 B
0X316E N
0X326D M
0X332C ,
0X342E .
0X352F /
0X3920 SPACE

右边数字键盘:

扫描码
0X5200 INSERT
0X5200X4700 HOME
0X5200X4900 PAGE UP
0X5200X5300 DELETE
0X5200X4F00 END
0X5200X5100 PAGEDOWN
0X5200X4800 上箭头
0X5200X4B00 左箭头
0X5200X5000 下箭头
0X5200X4D00 右箭头
0X5200X352F /
0X5200X372A *
0X5200X4A2D - (注意,这是数字键盘的)
0X5200X4737 7
0X5200X4838 8
0X5200X4939 9
0X5200X4B34 4
0X5200X4C35 5
0X5200X4D36 6
0X5200X4E2B +
0X5200X4F31 1
0X5200X5032 2
0X5200X5133 3
0X5200X5230 0
0X5200X532E DEL

左 Crtl 扫描码是1D,表示1D 00。 右 Ctrl 键扫描码是E01D,表示1D E0

左 ALT 扫描码是38,表示38 00。 右 ALT 键扫描码是E0 38,表示38 E0

左 Shift 扫描码是2A,表示2A 00。 右 Shift 键扫描码是36,表示36 00

sample sample

示例

1.屏蔽左侧WIN键

  "Scancode Map"=00,00,00,00,00,00,00,00,02,00,00,00,00,00,5B,E0,00,00,00,00 
                                                     ^^^^^^^^^^^

2.屏蔽右侧WIN键

  "Scancode Map"=00,00,00,00,00,00,00,00,02,00,00,00,00,00,5C,E0,00,00,00,00
                                                     ^^^^^^^^^^^

3.屏蔽左右WIN两个键

  "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
                                                     ^^^^^^^^^^^ ^^^^^^^^^^^

4.替换左Crtl键为左Alt键

  "Scancode Map"=00,00,00,00,00,00,00,00,02,00,00,00,38,00,1D,00,00,00,00,00 
                                                     ^^^^^ ^^^^^