ReactOS  0.4.14-dev-293-g2b39b42
scancodes.h
Go to the documentation of this file.
1 
2 /* Two defines for every scancode:
3  One called SCANCODE_KEY_<num>, where <num> is the key location number.
4  One called SCANCODE_CHAR_<char-on-us-kbd>, where <char-on-us-kbd> is the
5  unshifted character on a US 101/102 keyboard. See the Microsoft
6  document "Keyboard Scan Code Specification" for more information.
7 
8  Up keys normally have scancode values +0x80.
9 
10  0x0: Avoid
11  0x1- 0x59: Normal
12  0x60, 0x61: Avoid, since the up key would be 0xe1, 0xe1
13  0x61 - 0x79: Normal
14  0xfa - : keyboard drivers interpret these as responses from the 8042 chip
15 
16  We use bit 7 to indicate 0xe0 prefix instead of two-byte sequence (0xe0, something). Eq.,
17  0xe 0x38 is defined as (0x80 | 0x38)
18 */
19 
20 /* FIXME:
21  Special keys like Numeric / are very complicated and emits many scancodes.
22 */
23 
24 #define SCANCODE_EXTENDED 0x80
25 
26 #define SCANCODE_KEY_1 0x29
27 #define SCANCODE_CHAR_GRAVE 0x29
28 
29 #define SCANCODE_KEY_2 0x2
30 #define SCANCODE_CHAR_1 SCANCODE_KEY_2
31 
32 #define SCANCODE_KEY_3 0x3
33 #define SCANCODE_CHAR_2 SCANCODE_KEY_3
34 
35 #define SCANCODE_KEY_4 0x4
36 #define SCANCODE_CHAR_3 SCANCODE_KEY_4
37 
38 #define SCANCODE_KEY_5 0x5
39 #define SCANCODE_CHAR_4 SCANCODE_KEY_5
40 
41 #define SCANCODE_KEY_6 0x6
42 #define SCANCODE_CHAR_5 SCANCODE_KEY_6
43 
44 #define SCANCODE_KEY_7 0x7
45 #define SCANCODE_CHAR_6 SCANCODE_KEY_7
46 
47 #define SCANCODE_KEY_8 0x8
48 #define SCANCODE_CHAR_7 SCANCODE_KEY_8
49 
50 #define SCANCODE_KEY_9 0x9
51 #define SCANCODE_CHAR_8 SCANCODE_KEY_9
52 
53 #define SCANCODE_KEY_10 0xa
54 #define SCANCODE_CHAR_9 SCANCODE_KEY_10
55 
56 #define SCANCODE_KEY_11 0xb
57 #define SCANCODE_CHAR_0 SCANCODE_KEY_11
58 
59 #define SCANCODE_KEY_12 0xc
60 #define SCANCODE_CHAR_MINUS SCANCODE_KEY_12
61 
62 #define SCANCODE_KEY_13 0xd
63 #define SCANCODE_CHAR_EQUAL SCANCODE_KEY_13
64 
65 /* Key 14 does not exist */
66 
67 #define SCANCODE_KEY_15 0xe
68 #define SCANCODE_CHAR_BACKSPACE SCANCODE_KEY_15
69 
70 #define SCANCODE_KEY_16 0xf
71 #define SCANCODE_CHAR_TAB SCANCODE_KEY_16
72 
73 #define SCANCODE_KEY_17 0x10
74 #define SCANCODE_CHAR_Q SCANCODE_KEY_17
75 
76 #define SCANCODE_KEY_18 0x11
77 #define SCANCODE_CHAR_W SCANCODE_KEY_18
78 
79 #define SCANCODE_KEY_19 0x12
80 #define SCANCODE_CHAR_E SCANCODE_KEY_19
81 
82 #define SCANCODE_KEY_20 0x13
83 #define SCANCODE_CHAR_R SCANCODE_KEY_20
84 
85 #define SCANCODE_KEY_21 0x14
86 #define SCANCODE_CHAR_T SCANCODE_KEY_21
87 
88 #define SCANCODE_KEY_22 0x15
89 #define SCANCODE_CHAR_Y SCANCODE_KEY_22
90 
91 #define SCANCODE_KEY_23 0x16
92 #define SCANCODE_CHAR_U SCANCODE_KEY_23
93 
94 #define SCANCODE_KEY_24 0x17
95 #define SCANCODE_CHAR_I SCANCODE_KEY_24
96 
97 #define SCANCODE_KEY_25 0x18
98 #define SCANCODE_CHAR_O SCANCODE_KEY_25
99 
100 #define SCANCODE_KEY_26 0x19
101 #define SCANCODE_CHAR_P SCANCODE_KEY_26
102 
103 #define SCANCODE_KEY_27 0x1a
104 #define SCANCODE_CHAR_BRACKETLEFT SCANCODE_KEY_27
105 
106 #define SCANCODE_KEY_28 0x1b
107 #define SCANCODE_CHAR_BRACKETRIGHT SCANCODE_KEY_28
108 
109 /* Only on US keyboard */
110 #define SCANCODE_KEY_29 0x2b
111 #define SCANCODE_CHAR_BACKSLASH SCANCODE_KEY_29
112 
113 #define SCANCODE_KEY_30 0x3a
114 #define SCANCODE_CHAR_CAPSLOCK SCANCODE_KEY_30
115 
116 #define SCANCODE_KEY_31 0x1e
117 #define SCANCODE_CHAR_A SCANCODE_KEY_31
118 
119 #define SCANCODE_KEY_32 0x1f
120 #define SCANCODE_CHAR_S SCANCODE_KEY_32
121 
122 #define SCANCODE_KEY_33 0x20
123 #define SCANCODE_CHAR_D SCANCODE_KEY_33
124 
125 #define SCANCODE_KEY_34 0x21
126 #define SCANCODE_CHAR_F SCANCODE_KEY_34
127 
128 #define SCANCODE_KEY_35 0x22
129 #define SCANCODE_CHAR_G SCANCODE_KEY_35
130 
131 #define SCANCODE_KEY_36 0x23
132 #define SCANCODE_CHAR_H SCANCODE_KEY_36
133 
134 #define SCANCODE_KEY_37 0x24
135 #define SCANCODE_CHAR_J SCANCODE_KEY_37
136 
137 #define SCANCODE_KEY_38 0x25
138 #define SCANCODE_CHAR_K SCANCODE_KEY_38
139 
140 #define SCANCODE_KEY_39 0x26
141 #define SCANCODE_CHAR_L SCANCODE_KEY_39
142 
143 #define SCANCODE_KEY_40 0x27
144 #define SCANCODE_CHAR_SEMICOLON SCANCODE_KEY_40
145 
146 #define SCANCODE_KEY_41 0x28
147 #define SCANCODE_CHAR_APOSTROPHE SCANCODE_KEY_41
148 
149 /* Only on international keyboard */
150 #define SCANCODE_KEY_42 0x2b
151 
152 #define SCANCODE_KEY_43 0x1c
153 #define SCANCODE_CHAR_ENTER SCANCODE_KEY_43
154 
155 #define SCANCODE_KEY_44 0x2a
156 #define SCANCODE_CHAR_LSHIFT SCANCODE_KEY_44
157 
158 /* Only on international keyboard */
159 #define SCANCODE_KEY_45 0x56
160 
161 #define SCANCODE_KEY_46 0x2c
162 #define SCANCODE_CHAR_Z SCANCODE_KEY_46
163 
164 #define SCANCODE_KEY_47 0x2d
165 #define SCANCODE_CHAR_X SCANCODE_KEY_47
166 
167 #define SCANCODE_KEY_48 0x2e
168 #define SCANCODE_CHAR_C SCANCODE_KEY_48
169 
170 #define SCANCODE_KEY_49 0x2f
171 #define SCANCODE_CHAR_V SCANCODE_KEY_49
172 
173 #define SCANCODE_KEY_50 0x30
174 #define SCANCODE_CHAR_B SCANCODE_KEY_50
175 
176 #define SCANCODE_KEY_51 0x31
177 #define SCANCODE_CHAR_N SCANCODE_KEY_51
178 
179 #define SCANCODE_KEY_52 0x32
180 #define SCANCODE_CHAR_M SCANCODE_KEY_52
181 
182 #define SCANCODE_KEY_53 0x33
183 #define SCANCODE_CHAR_COMMA SCANCODE_KEY_53
184 
185 #define SCANCODE_KEY_54 0x34
186 #define SCANCODE_CHAR_DOT SCANCODE_KEY_54
187 
188 #define SCANCODE_KEY_55 0x35
189 #define SCANCODE_CHAR_SLASH SCANCODE_KEY_55
190 
191 /* Only on Brazilian and some Far East keyboards */
192 #define SCANCODE_KEY_56 0x73
193 
194 #define SCANCODE_KEY_57 0x36
195 #define SCANCODE_CHAR_RSHIFT SCANCODE_KEY_57
196 
197 #define SCANCODE_KEY_58 0x1d
198 #define SCANCODE_CHAR_LCTRL SCANCODE_KEY_58
199 
200 /* Key 59 does not exist */
201 
202 #define SCANCODE_KEY_60 0x38
203 #define SCANCODE_CHAR_LALT SCANCODE_KEY_60
204 
205 #define SCANCODE_KEY_61 0x39
206 #define SCANCODE_CHAR_SPACE SCANCODE_KEY_61
207 
208 #define SCANCODE_KEY_62 (SCANCODE_EXTENDED | 0x38)
209 #define SCANCODE_CHAR_RALT SCANCODE_KEY_62
210 
211 /* Key 63 does not exist */
212 
213 #define SCANCODE_KEY_64 (SCANCODE_EXTENDED | 0x1d)
214 #define SCANCODE_CHAR_RCTRL SCANCODE_KEY_64
215 
216 /* Key 65 - 74 does not exist */
217 
218 #define SCANCODE_KEY_75 (SCANCODE_EXTENDED | 0x52)
219 #define SCANCODE_CHAR_INSERT SCANCODE_KEY_75
220 
221 #define SCANCODE_KEY_76 (SCANCODE_EXTENDED | 0x53)
222 #define SCANCODE_CHAR_DELETE SCANCODE_KEY_76
223 
224 /* Key 77 - 78 does not exist */
225 
226 #define SCANCODE_KEY_79 (SCANCODE_EXTENDED | 0x4b)
227 #define SCANCODE_CHAR_LARROW SCANCODE_KEY_79
228 
229 #define SCANCODE_KEY_80 (SCANCODE_EXTENDED | 0x47)
230 #define SCANCODE_CHAR_HOME SCANCODE_KEY_80
231 
232 #define SCANCODE_KEY_81 (SCANCODE_EXTENDED | 0x4f)
233 #define SCANCODE_CHAR_END SCANCODE_KEY_81
234 
235 /* Key 82 does not exist */
236 
237 #define SCANCODE_KEY_83 (SCANCODE_EXTENDED | 0x48)
238 #define SCANCODE_CHAR_UPARROW SCANCODE_KEY_83
239 
240 #define SCANCODE_KEY_84 (SCANCODE_EXTENDED | 0x50)
241 #define SCANCODE_CHAR_DNARROW SCANCODE_KEY_84
242 
243 #define SCANCODE_KEY_85 (SCANCODE_EXTENDED | 0x49)
244 #define SCANCODE_CHAR_PAGEUP SCANCODE_KEY_85
245 
246 #define SCANCODE_KEY_86 (SCANCODE_EXTENDED | 0x51)
247 #define SCANCODE_CHAR_PAGEDOWN SCANCODE_KEY_86
248 
249 /* Key 87 - 88 does not exist */
250 
251 #define SCANCODE_KEY_89 (SCANCODE_EXTENDED | 0x4d)
252 #define SCANCODE_CHAR_RARROW SCANCODE_KEY_89
253 
254 #define SCANCODE_KEY_90 0x45
255 #define SCANCODE_CHAR_NUMLOCK SCANCODE_KEY_90
256 
257 #define SCANCODE_KEY_91 0x47
258 #define SCANCODE_CHAR_NUMERIC7 SCANCODE_KEY_91
259 
260 #define SCANCODE_KEY_92 0x4b
261 #define SCANCODE_CHAR_NUMERIC4 SCANCODE_KEY_92
262 
263 #define SCANCODE_KEY_93 0x4f
264 #define SCANCODE_CHAR_NUMERIC1 SCANCODE_KEY_93
265 
266 /* Key 94 does not exist */
267 
268 #define SCANCODE_KEY_95 (SCANCODE_EXTENDED | 0x35)
269 #define SCANCODE_CHAR_NUMERICSLASH SCANCODE_KEY_95
270 
271 #define SCANCODE_KEY_96 0x48
272 #define SCANCODE_CHAR_NUMERIC8 SCANCODE_KEY_96
273 
274 #define SCANCODE_KEY_97 0x4c
275 #define SCANCODE_CHAR_NUMERIC5 SCANCODE_KEY_97
276 
277 #define SCANCODE_KEY_98 0x50
278 #define SCANCODE_CHAR_NUMERIC2 SCANCODE_KEY_98
279 
280 #define SCANCODE_KEY_99 0x52
281 #define SCANCODE_CHAR_NUMERIC0 SCANCODE_KEY_99
282 
283 #define SCANCODE_KEY_100 0x37
284 #define SCANCODE_CHAR_NUMERICSTAR SCANCODE_KEY_100
285 
286 #define SCANCODE_KEY_101 0x49
287 #define SCANCODE_CHAR_NUMERIC9 SCANCODE_KEY_101
288 
289 #define SCANCODE_KEY_102 0x4d
290 #define SCANCODE_CHAR_NUMERIC6 SCANCODE_KEY_102
291 
292 #define SCANCODE_KEY_103 0x51
293 #define SCANCODE_CHAR_NUMERIC3 SCANCODE_KEY_103
294 
295 #define SCANCODE_KEY_104 0x53
296 #define SCANCODE_CHAR_NUMERICDOT SCANCODE_KEY_104
297 
298 #define SCANCODE_KEY_105 0x4a
299 #define SCANCODE_CHAR_NUMERICMINUS SCANCODE_KEY_105
300 
301 #define SCANCODE_KEY_106 0x4e
302 #define SCANCODE_CHAR_NUMERICPLUS SCANCODE_KEY_106
303 
304 /* Only on Brazilian and some Far East keyboards */
305 #define SCANCODE_KEY_107 0x
306 
307 #define SCANCODE_KEY_108 (SCANCODE_EXTENDED | 0x1c)
308 #define SCANCODE_CHAR_NUMERICENTER SCANCODE_KEY_108
309 
310 /* Key 109 does not exist */
311 
312 #define SCANCODE_KEY_110 0x1
313 #define SCANCODE_CHAR_ESC SCANCODE_KEY_110
314 
315 /* Key 111 does not exist */
316 
317 #define SCANCODE_KEY_112 0x3b
318 #define SCANCODE_CHAR_F1 SCANCODE_KEY_112
319 
320 #define SCANCODE_KEY_113 0x3c
321 #define SCANCODE_CHAR_F2 SCANCODE_KEY_113
322 
323 #define SCANCODE_KEY_114 0x3d
324 #define SCANCODE_CHAR_F3 SCANCODE_KEY_114
325 
326 #define SCANCODE_KEY_115 0x3e
327 #define SCANCODE_CHAR_F4 SCANCODE_KEY_115
328 
329 #define SCANCODE_KEY_116 0x3f
330 #define SCANCODE_CHAR_F5 SCANCODE_KEY_116
331 
332 #define SCANCODE_KEY_117 0x40
333 #define SCANCODE_CHAR_F6 SCANCODE_KEY_117
334 
335 #define SCANCODE_KEY_118 0x41
336 #define SCANCODE_CHAR_F7 SCANCODE_KEY_118
337 
338 #define SCANCODE_KEY_119 0x42
339 #define SCANCODE_CHAR_F8 SCANCODE_KEY_119
340 
341 #define SCANCODE_KEY_120 0x43
342 #define SCANCODE_CHAR_F9 SCANCODE_KEY_120
343 
344 #define SCANCODE_KEY_121 0x44
345 #define SCANCODE_CHAR_F10 SCANCODE_KEY_121
346 
347 #define SCANCODE_KEY_122 0x57
348 #define SCANCODE_CHAR_F11 SCANCODE_KEY_122
349 
350 #define SCANCODE_KEY_123 0x58
351 #define SCANCODE_CHAR_F12 SCANCODE_KEY_123
352 
353 /* Key 124: The Print Screen sequence is complicated, and
354  hardcoded in xkeymap.c */
355 
356 #define SCANCODE_KEY_125 0x46
357 #define SCANCODE_CHAR_SCROLLLOCK SCANCODE_KEY_125
358 
359 /* Key 126: The Pause and Break sequences is complicated, and
360  hardcoded in xkeymap.c */
361 
362 /*
363  The keys below does not have any key location number
364 */
365 
366 #define SCANCODE_CHAR_LWIN (SCANCODE_EXTENDED | 0x5b)
367 
368 #define SCANCODE_CHAR_RWIN (SCANCODE_EXTENDED | 0x5c)
369 
370 #define SCANCODE_CHAR_APPLICATION (SCANCODE_EXTENDED | 0x5d)
371 
372 #define SCANCODE_CHAR_ACPIPOWER (SCANCODE_EXTENDED | 0x5e)
373 
374 #define SCANCODE_CHAR_ACPISLEEP (SCANCODE_EXTENDED | 0x5f)
375 
376 #define SCANCODE_CHAR_ACPIWAKE (SCANCODE_EXTENDED | 0x63)