windows键位替换
2016-08-25
Scancode Map 注册表项来实现键盘按键映射。
位于注册表的:
1 | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout\ |
新建一个二进制值项: “Scancode Map”
这个项目可实现对键盘按键的映射。这里映射的意思可理解为“替换”,可将任意一键替换成其它键。
先看几个简单示例
- 屏蔽左侧WIN键
“Scancode Map”=00,00,00,00,00,00,00,00,02,00,00,00,00,00,5B,E0,00,00,00,00 - 屏蔽右侧WIN键
“Scancode Map”=00,00,00,00,00,00,00,00,02,00,00,00,00,00,5C,E0,00,00,00,00 - 屏蔽左右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 - 替换左Crtl键为左Alt键
“Scancode Map”=00,00,00,00,00,00,00,00,02,00,00,00,38,00,1D,00,00,00,00,00 - 左Crtl键为左Alt键互换
“Scancode Map”=00,00,00,00,00,00,00,00,03,00,00,00,38,00,1D,00,1D,00,38,00,00,00,00,00
解释下项目格式
以16进制表示,更分为五个部分,每个逗号之间都为一个字节。
1 | "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 | 退格键 |
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 | 回车 |
0X2C7A | Z |
0X2D78 | X |
0X2E63 | C |
0X2F76 | V |
0X3062 | B |
0X316E | N |
0X326D | M |
0X332C | , |
0X342E | . |
0X352F | / |
0X3920 | 空格键 |
右边数字键盘:
扫描码 | 功能 |
---|---|
0X5200 | INSERT |
0X4700 | HOME |
0X4900 | PAGE UP |
0X5300 | DELETE |
0X4F00 | END |
0X5100 | PAGEDOWN |
0X4800 | 上箭头 |
0X4B00 | 左箭头 |
0X5000 | 下箭头 |
0X4D00 | 右箭头 |
0X352F | / |
0X372A | * |
0X4A2D | - (注意,这是数字键盘的) |
0X4737 | 7 |
0X4838 | 8 |
0X4939 | 9 |
0X4B34 | 4 |
0X4C35 | 5 |
0X4D36 | 6 |
0X4E2B | + |
0X4F31 | 1 |
0X5032 | 2 |
0X5133 | 3 |
0X5230 | 0 |
0X532E | 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