环境
Windows 10
最近发现 Windows Terminal 正式版发布了, ssh 到 linux 服务器试了下感觉还不错,至少不再有原来奇奇怪怪的快捷键和排版问题了,默认的字体样式也还阔以233。简单配置了一下打算把吃灰的 windows 当作备用开发机。然而发现习惯了 mac 下把 CapsLock
映射为 Ctrl
, windows 下老是按错,于是乎查了一下解决办法。
先说解决方法
win + r
, 输入 regedit
, 打开注册表编辑器,找到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout
, 新建二进制值 ScanCode Map
1 | 0000 0000 0000 0000 |
保存重启即可
然后说说原理
ScanCode Map
的格式为
二进制值采用 小端序
- 前8个字节为版本信息
- 接着4个字节为需要映射的按键个数(从2开始,即映射1个此处为2,映射2个此处为3)
- 紧跟着就是N段4个字节的映射关系(N和上一步中填写的映射个数有关),前2个字节为映射后的键盘扫描码,后2个字节为映射前的键盘扫描码
- 最后4个字节全0结束
至于为什么从2开始,我个人无责任猜测:因为最后还有4字节的结束符,因此这边的大小 * 4字节刚好就是整段大小
例:
在 CapsLock
映射为 Ctrl
的基础上,同时把 Ctrl
映射为 CapsLock
1 | 0000 0000 0000 0000 |
最后是所有的键盘扫描码
# | X(Set 2) | keycap |
---|---|---|
1 | 29 | ` ~ |
2 | 02 | 1 ! |
3 | 03 | 2 @ |
4 | 04 | 3 # |
5 | 05 | 4 $ |
6 | 06 | 5 % E |
7 | 07 | 6 ^ |
8 | 08 | 7 & |
9 | 09 | 8 * |
10 | 0a | 9 ( |
11 | 0b | 0 ) |
12 | 0c | - _ |
13 | 0d | = + |
15 | 0e | Backspace |
16 | 0f | Tab |
17 | 10 | Q |
18 | 11 | W |
19 | 12 | E |
20 | 13 | R |
21 | 14 | T |
22 | 15 | Y |
23 | 16 | U |
24 | 17 | I |
25 | 18 | O |
26 | 19 | P |
27 | 1a | [ { |
28 | 1b | ] } |
29 | 2b | \ | |
30 | 3a | CapsLock |
31 | 1e | A |
32 | 1f | S |
33 | 20 | D |
34 | 21 | F |
35 | 22 | G |
36 | 23 | H |
37 | 24 | J |
38 | 25 | K |
39 | 26 | L |
40 | 27 | ; : |
41 | 28 | ‘ “ |
42 | ff | non-US-1 |
43 | 1c | Enter |
44 | 2a | LShift |
46 | 2c | Z |
47 | 2d | X |
48 | 2e | C |
49 | 2f | V |
50 | 30 | B |
51 | 31 | N |
52 | 32 | M |
53 | 33 | , < |
54 | 34 | . > |
55 | 35 | / ? |
57 | 36 | RShift |
58 | 1d | LCtrl |
60 | 38 | LAlt |
61 | 39 | space |
62 | e0-38 | RAlt |
64 | e0-1d | RCtrl |
75 | e0-52 | Insert |
76 | e0-53 | Delete |
80 | e0-47 | Home |
81 | e0-4f | End |
85 | e0-49 | PgUp |
86 | e0-51 | PgDn |
79 | e0-4b | Left |
83 | e0-48 | Up |
84 | e0-50 | Down |
89 | e0-4d | Right |
90 | 45 | NumLock |
91 | 47 | KP-7 / Home |
92 | 4b | KP-4 / Left |
93 | 4f | KP-1 / End |
95 | e0-35 | KP-/ |
96 | 48 | KP-8 / Up |
97 | 4c | KP-5 |
98 | 50 | KP-2 / Down |
99 | 52 | KP-0 / Ins |
100 | 37 | KP-* |
101 | 49 | KP-9 / PgUp |
102 | 4d | KP-6 / Right |
103 | 51 | KP-3 / PgDn |
104 | 53 | KP-. / Del |
105 | 4a | KP– |
106 | 4e | KP-+ |
108 | e0-1c | KP-Enter |
110 | 01 | Esc |
112 | 3b | F1 |
113 | 3c | F2 |
114 | 3d | F3 |
115 | 3e | F4 |
116 | 3f | F5 |
117 | 40 | F6 |
118 | 41 | F7 |
119 | 42 | F8 |
120 | 43 | F9 |
121 | 44 | F10 |
122 | 57 | F11 |
123 | 58 | F12 |
124 | e0-37 | PrtScr |
0 | 54 | Alt+SysRq |
125 | 46 | ScrollLock |
126 | e1-1d-45 | Pause |
0 | e0-46 | Ctrl+Break |
0 | e0-5b | LWin (USB: LGUI) |
0 | e0-5c | RWin (USB: RGUI) |
0 | e0-5d | Menu |
0 | e0-5f | Sleep |
0 | e0-5e | Power |
0 | e0-63 | Wake |