Line data Source code
1 : /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 : /* vim: set ts=2 et sw=2 tw=80: */
3 : /* This Source Code Form is subject to the terms of the Mozilla Public
4 : * License, v. 2.0. If a copy of the MPL was not distributed with this file,
5 : * You can obtain one at http://mozilla.org/MPL/2.0/. */
6 :
7 : /**
8 : * This header file defines simple code mapping between native scancode or
9 : * something and DOM code name index.
10 : * You must define NS_NATIVE_KEY_TO_DOM_CODE_NAME_INDEX macro before include
11 : * this.
12 : *
13 : * It must have two arguments, (aNativeKey, aCodeNameIndex).
14 : * aNativeKey is a scancode value or something (depends on the platform).
15 : * aCodeNameIndex is the widget::CodeNameIndex value.
16 : */
17 :
18 : // Windows
19 : #define CODE_MAP_WIN(aCPPCodeName, aNativeKey)
20 : // Mac OS X
21 : #define CODE_MAP_MAC(aCPPCodeName, aNativeKey)
22 : // GTK and Qt on Linux
23 : #define CODE_MAP_X11(aCPPCodeName, aNativeKey)
24 : // Android and Gonk
25 : #define CODE_MAP_ANDROID(aCPPCodeName, aNativeKey)
26 :
27 : #if defined(XP_WIN)
28 : #undef CODE_MAP_WIN
29 : // aNativeKey is scan code
30 : #define CODE_MAP_WIN(aCPPCodeName, aNativeKey) \
31 : NS_NATIVE_KEY_TO_DOM_CODE_NAME_INDEX(aNativeKey, \
32 : CODE_NAME_INDEX_##aCPPCodeName)
33 : #elif defined(XP_MACOSX)
34 : #undef CODE_MAP_MAC
35 : // aNativeKey is key code starting with kVK_.
36 : #define CODE_MAP_MAC(aCPPCodeName, aNativeKey) \
37 : NS_NATIVE_KEY_TO_DOM_CODE_NAME_INDEX(aNativeKey, \
38 : CODE_NAME_INDEX_##aCPPCodeName)
39 : #elif defined(MOZ_WIDGET_GTK)
40 : #undef CODE_MAP_X11
41 : // aNativeKey is hardware_keycode of GDKEvent or nativeScanCode of QKeyEvent.
42 : #define CODE_MAP_X11(aCPPCodeName, aNativeKey) \
43 : NS_NATIVE_KEY_TO_DOM_CODE_NAME_INDEX(aNativeKey, \
44 : CODE_NAME_INDEX_##aCPPCodeName)
45 : #elif defined(ANDROID)
46 : #undef CODE_MAP_ANDROID
47 : // aNativeKey is scan code
48 : #define CODE_MAP_ANDROID(aCPPCodeName, aNativeKey) \
49 : NS_NATIVE_KEY_TO_DOM_CODE_NAME_INDEX(aNativeKey, \
50 : CODE_NAME_INDEX_##aCPPCodeName)
51 : #endif
52 :
53 : // Writing system keys
54 : CODE_MAP_WIN(Backquote, 0x0029)
55 : CODE_MAP_MAC(Backquote, kVK_ANSI_Grave)
56 0 : CODE_MAP_X11(Backquote, 0x0031)
57 : CODE_MAP_ANDROID(Backquote, 0x0029)
58 :
59 : CODE_MAP_WIN(Backslash, 0x002B)
60 : CODE_MAP_MAC(Backslash, kVK_ANSI_Backslash)
61 0 : CODE_MAP_X11(Backslash, 0x0033)
62 : CODE_MAP_ANDROID(Backslash, 0x002B)
63 :
64 : CODE_MAP_WIN(Backspace, 0x000E)
65 : CODE_MAP_MAC(Backspace, kVK_Delete)
66 0 : CODE_MAP_X11(Backspace, 0x0016)
67 : CODE_MAP_ANDROID(Backspace, 0x000E)
68 :
69 : CODE_MAP_WIN(BracketLeft, 0x001A)
70 : CODE_MAP_MAC(BracketLeft, kVK_ANSI_LeftBracket)
71 0 : CODE_MAP_X11(BracketLeft, 0x0022)
72 : CODE_MAP_ANDROID(BracketLeft, 0x001A)
73 :
74 : CODE_MAP_WIN(BracketRight, 0x001B)
75 : CODE_MAP_MAC(BracketRight, kVK_ANSI_RightBracket)
76 0 : CODE_MAP_X11(BracketRight, 0x0023)
77 : CODE_MAP_ANDROID(BracketRight, 0x001B)
78 :
79 : CODE_MAP_WIN(Comma, 0x0033)
80 : CODE_MAP_MAC(Comma, kVK_ANSI_Comma)
81 0 : CODE_MAP_X11(Comma, 0x003B)
82 : CODE_MAP_ANDROID(Comma, 0x00033)
83 :
84 : CODE_MAP_WIN(Digit0, 0x000B)
85 : CODE_MAP_MAC(Digit0, kVK_ANSI_0)
86 0 : CODE_MAP_X11(Digit0, 0x0013)
87 : CODE_MAP_ANDROID(Digit0, 0x000B)
88 :
89 : CODE_MAP_WIN(Digit1, 0x0002)
90 : CODE_MAP_MAC(Digit1, kVK_ANSI_1)
91 0 : CODE_MAP_X11(Digit1, 0x000A)
92 : CODE_MAP_ANDROID(Digit1, 0x0002)
93 :
94 : CODE_MAP_WIN(Digit2, 0x0003)
95 : CODE_MAP_MAC(Digit2, kVK_ANSI_2)
96 0 : CODE_MAP_X11(Digit2, 0x000B)
97 : CODE_MAP_ANDROID(Digit2, 0x0003)
98 :
99 : CODE_MAP_WIN(Digit3, 0x0004)
100 : CODE_MAP_MAC(Digit3, kVK_ANSI_3)
101 0 : CODE_MAP_X11(Digit3, 0x000C)
102 : CODE_MAP_ANDROID(Digit3, 0x0004)
103 :
104 : CODE_MAP_WIN(Digit4, 0x0005)
105 : CODE_MAP_MAC(Digit4, kVK_ANSI_4)
106 0 : CODE_MAP_X11(Digit4, 0x000D)
107 : CODE_MAP_ANDROID(Digit4, 0x0005)
108 :
109 : CODE_MAP_WIN(Digit5, 0x0006)
110 : CODE_MAP_MAC(Digit5, kVK_ANSI_5)
111 0 : CODE_MAP_X11(Digit5, 0x000E)
112 : CODE_MAP_ANDROID(Digit5, 0x0006)
113 :
114 : CODE_MAP_WIN(Digit6, 0x0007)
115 : CODE_MAP_MAC(Digit6, kVK_ANSI_6)
116 0 : CODE_MAP_X11(Digit6, 0x000F)
117 : CODE_MAP_ANDROID(Digit6, 0x0007)
118 :
119 : CODE_MAP_WIN(Digit7, 0x0008)
120 : CODE_MAP_MAC(Digit7, kVK_ANSI_7)
121 0 : CODE_MAP_X11(Digit7, 0x0010)
122 : CODE_MAP_ANDROID(Digit7, 0x0008)
123 :
124 : CODE_MAP_WIN(Digit8, 0x0009)
125 : CODE_MAP_MAC(Digit8, kVK_ANSI_8)
126 0 : CODE_MAP_X11(Digit8, 0x0011)
127 : CODE_MAP_ANDROID(Digit8, 0x0009)
128 :
129 : CODE_MAP_WIN(Digit9, 0x000A)
130 : CODE_MAP_MAC(Digit9, kVK_ANSI_9)
131 0 : CODE_MAP_X11(Digit9, 0x0012)
132 : CODE_MAP_ANDROID(Digit9, 0x000A)
133 :
134 : CODE_MAP_WIN(Equal, 0x000D)
135 : CODE_MAP_MAC(Equal, kVK_ANSI_Equal)
136 0 : CODE_MAP_X11(Equal, 0x0015)
137 : CODE_MAP_ANDROID(Equal, 0x000D)
138 :
139 : CODE_MAP_WIN(IntlBackslash, 0x0056)
140 : CODE_MAP_MAC(IntlBackslash, kVK_ISO_Section)
141 0 : CODE_MAP_X11(IntlBackslash, 0x005E)
142 : CODE_MAP_ANDROID(IntlBackslash, 0x0056)
143 :
144 : // Win: IntlHash's scan code is shared with "Backslash" key.
145 : // Mac: IntlHash's virtual key code is shared with "Backslash" key.
146 : // X11: IntlHash's scan code is shared with "Backslash" key.
147 : // Android: IntlHash's scan code is shared with "Backslash" key.
148 :
149 : CODE_MAP_WIN(IntlRo, 0x0073)
150 : CODE_MAP_MAC(IntlRo, kVK_JIS_Underscore)
151 0 : CODE_MAP_X11(IntlRo, 0x0061)
152 : CODE_MAP_ANDROID(IntlRo, 0x0059)
153 :
154 : CODE_MAP_WIN(IntlYen, 0x007D)
155 : CODE_MAP_MAC(IntlYen, kVK_JIS_Yen)
156 0 : CODE_MAP_X11(IntlYen, 0x0084)
157 : CODE_MAP_ANDROID(IntlYen, 0x007C)
158 :
159 : CODE_MAP_WIN(KeyA, 0x001E)
160 : CODE_MAP_MAC(KeyA, kVK_ANSI_A)
161 0 : CODE_MAP_X11(KeyA, 0x0026)
162 : CODE_MAP_ANDROID(KeyA, 0x001E)
163 :
164 : CODE_MAP_WIN(KeyB, 0x0030)
165 : CODE_MAP_MAC(KeyB, kVK_ANSI_B)
166 0 : CODE_MAP_X11(KeyB, 0x0038)
167 : CODE_MAP_ANDROID(KeyB, 0x0030)
168 :
169 : CODE_MAP_WIN(KeyC, 0x002E)
170 : CODE_MAP_MAC(KeyC, kVK_ANSI_C)
171 0 : CODE_MAP_X11(KeyC, 0x0036)
172 : CODE_MAP_ANDROID(KeyC, 0x002E)
173 :
174 : CODE_MAP_WIN(KeyD, 0x0020)
175 : CODE_MAP_MAC(KeyD, kVK_ANSI_D)
176 0 : CODE_MAP_X11(KeyD, 0x0028)
177 : CODE_MAP_ANDROID(KeyD, 0x0020)
178 :
179 : CODE_MAP_WIN(KeyE, 0x0012)
180 : CODE_MAP_MAC(KeyE, kVK_ANSI_E)
181 0 : CODE_MAP_X11(KeyE, 0x001A)
182 : CODE_MAP_ANDROID(KeyE, 0x0012)
183 :
184 : CODE_MAP_WIN(KeyF, 0x0021)
185 : CODE_MAP_MAC(KeyF, kVK_ANSI_F)
186 0 : CODE_MAP_X11(KeyF, 0x0029)
187 : CODE_MAP_ANDROID(KeyF, 0x0021)
188 :
189 : CODE_MAP_WIN(KeyG, 0x0022)
190 : CODE_MAP_MAC(KeyG, kVK_ANSI_G)
191 0 : CODE_MAP_X11(KeyG, 0x002A)
192 : CODE_MAP_ANDROID(KeyG, 0x0022)
193 :
194 : CODE_MAP_WIN(KeyH, 0x0023)
195 : CODE_MAP_MAC(KeyH, kVK_ANSI_H)
196 0 : CODE_MAP_X11(KeyH, 0x002B)
197 : CODE_MAP_ANDROID(KeyH, 0x0023)
198 :
199 : CODE_MAP_WIN(KeyI, 0x0017)
200 : CODE_MAP_MAC(KeyI, kVK_ANSI_I)
201 0 : CODE_MAP_X11(KeyI, 0x001F)
202 : CODE_MAP_ANDROID(KeyI, 0x0017)
203 :
204 : CODE_MAP_WIN(KeyJ, 0x0024)
205 : CODE_MAP_MAC(KeyJ, kVK_ANSI_J)
206 0 : CODE_MAP_X11(KeyJ, 0x002C)
207 : CODE_MAP_ANDROID(KeyJ, 0x0024)
208 :
209 : CODE_MAP_WIN(KeyK, 0x0025)
210 : CODE_MAP_MAC(KeyK, kVK_ANSI_K)
211 0 : CODE_MAP_X11(KeyK, 0x002D)
212 : CODE_MAP_ANDROID(KeyK, 0x0025)
213 :
214 : CODE_MAP_WIN(KeyL, 0x0026)
215 : CODE_MAP_MAC(KeyL, kVK_ANSI_L)
216 0 : CODE_MAP_X11(KeyL, 0x002E)
217 : CODE_MAP_ANDROID(KeyL, 0x0026)
218 :
219 : CODE_MAP_WIN(KeyM, 0x0032)
220 : CODE_MAP_MAC(KeyM, kVK_ANSI_M)
221 0 : CODE_MAP_X11(KeyM, 0x003A)
222 : CODE_MAP_ANDROID(KeyM, 0x0032)
223 :
224 : CODE_MAP_WIN(KeyN, 0x0031)
225 : CODE_MAP_MAC(KeyN, kVK_ANSI_N)
226 0 : CODE_MAP_X11(KeyN, 0x0039)
227 : CODE_MAP_ANDROID(KeyN, 0x0031)
228 :
229 : CODE_MAP_WIN(KeyO, 0x0018)
230 : CODE_MAP_MAC(KeyO, kVK_ANSI_O)
231 0 : CODE_MAP_X11(KeyO, 0x0020)
232 : CODE_MAP_ANDROID(KeyO, 0x0018)
233 :
234 : CODE_MAP_WIN(KeyP, 0x0019)
235 : CODE_MAP_MAC(KeyP, kVK_ANSI_P)
236 0 : CODE_MAP_X11(KeyP, 0x0021)
237 : CODE_MAP_ANDROID(KeyP, 0x0019)
238 :
239 : CODE_MAP_WIN(KeyQ, 0x0010)
240 : CODE_MAP_MAC(KeyQ, kVK_ANSI_Q)
241 0 : CODE_MAP_X11(KeyQ, 0x0018)
242 : CODE_MAP_ANDROID(KeyQ, 0x0010)
243 :
244 : CODE_MAP_WIN(KeyR, 0x0013)
245 : CODE_MAP_MAC(KeyR, kVK_ANSI_R)
246 0 : CODE_MAP_X11(KeyR, 0x001B)
247 : CODE_MAP_ANDROID(KeyR, 0x0013)
248 :
249 : CODE_MAP_WIN(KeyS, 0x001F)
250 : CODE_MAP_MAC(KeyS, kVK_ANSI_S)
251 0 : CODE_MAP_X11(KeyS, 0x0027)
252 : CODE_MAP_ANDROID(KeyS, 0x001F)
253 :
254 : CODE_MAP_WIN(KeyT, 0x0014)
255 : CODE_MAP_MAC(KeyT, kVK_ANSI_T)
256 0 : CODE_MAP_X11(KeyT, 0x001C)
257 : CODE_MAP_ANDROID(KeyT, 0x0014)
258 :
259 : CODE_MAP_WIN(KeyU, 0x0016)
260 : CODE_MAP_MAC(KeyU, kVK_ANSI_U)
261 0 : CODE_MAP_X11(KeyU, 0x001E)
262 : CODE_MAP_ANDROID(KeyU, 0x0016)
263 :
264 : CODE_MAP_WIN(KeyV, 0x002F)
265 : CODE_MAP_MAC(KeyV, kVK_ANSI_V)
266 0 : CODE_MAP_X11(KeyV, 0x0037)
267 : CODE_MAP_ANDROID(KeyV, 0x002F)
268 :
269 : CODE_MAP_WIN(KeyW, 0x0011)
270 : CODE_MAP_MAC(KeyW, kVK_ANSI_W)
271 0 : CODE_MAP_X11(KeyW, 0x0019)
272 : CODE_MAP_ANDROID(KeyW, 0x0011)
273 :
274 : CODE_MAP_WIN(KeyX, 0x002D)
275 : CODE_MAP_MAC(KeyX, kVK_ANSI_X)
276 0 : CODE_MAP_X11(KeyX, 0x0035)
277 : CODE_MAP_ANDROID(KeyX, 0x002D)
278 :
279 : CODE_MAP_WIN(KeyY, 0x0015)
280 : CODE_MAP_MAC(KeyY, kVK_ANSI_Y)
281 0 : CODE_MAP_X11(KeyY, 0x001D)
282 : CODE_MAP_ANDROID(KeyY, 0x0015)
283 :
284 : CODE_MAP_WIN(KeyZ, 0x002C)
285 : CODE_MAP_MAC(KeyZ, kVK_ANSI_Z)
286 0 : CODE_MAP_X11(KeyZ, 0x0034)
287 : CODE_MAP_ANDROID(KeyZ, 0x002C)
288 :
289 : CODE_MAP_WIN(Minus, 0x000C)
290 : CODE_MAP_MAC(Minus, kVK_ANSI_Minus)
291 0 : CODE_MAP_X11(Minus, 0x0014)
292 : CODE_MAP_ANDROID(Minus, 0x000C)
293 :
294 : CODE_MAP_WIN(Period, 0x0034)
295 : CODE_MAP_MAC(Period, kVK_ANSI_Period)
296 0 : CODE_MAP_X11(Period, 0x003C)
297 : CODE_MAP_ANDROID(Period, 0x0034)
298 :
299 : CODE_MAP_WIN(Quote, 0x0028)
300 : CODE_MAP_MAC(Quote, kVK_ANSI_Quote)
301 0 : CODE_MAP_X11(Quote, 0x0030)
302 : CODE_MAP_ANDROID(Quote, 0x0028)
303 :
304 : CODE_MAP_WIN(Semicolon, 0x0027)
305 : CODE_MAP_MAC(Semicolon, kVK_ANSI_Semicolon)
306 0 : CODE_MAP_X11(Semicolon, 0x002F)
307 : CODE_MAP_ANDROID(Semicolon, 0x0027)
308 :
309 : CODE_MAP_WIN(Slash, 0x0035)
310 : CODE_MAP_MAC(Slash, kVK_ANSI_Slash)
311 0 : CODE_MAP_X11(Slash, 0x003D)
312 : CODE_MAP_ANDROID(Slash, 0x0035)
313 :
314 : // Functional keys
315 : CODE_MAP_WIN(AltLeft, 0x0038)
316 : CODE_MAP_MAC(AltLeft, kVK_Option)
317 0 : CODE_MAP_X11(AltLeft, 0x0040)
318 : CODE_MAP_ANDROID(AltLeft, 0x0038)
319 :
320 : CODE_MAP_WIN(AltRight, 0xE038)
321 : CODE_MAP_MAC(AltRight, kVK_RightOption)
322 0 : CODE_MAP_X11(AltRight, 0x006C)
323 : CODE_MAP_ANDROID(AltRight, 0x0064)
324 :
325 : CODE_MAP_WIN(CapsLock, 0x003A)
326 : CODE_MAP_MAC(CapsLock, kVK_CapsLock)
327 0 : CODE_MAP_X11(CapsLock, 0x0042)
328 : CODE_MAP_ANDROID(CapsLock, 0x003A)
329 :
330 : CODE_MAP_WIN(ContextMenu, 0xE05D)
331 : CODE_MAP_MAC(ContextMenu, kVK_PC_ContextMenu)
332 0 : CODE_MAP_X11(ContextMenu, 0x0087)
333 : CODE_MAP_ANDROID(ContextMenu, 0x007F)
334 :
335 : CODE_MAP_WIN(ControlLeft, 0x001D)
336 : CODE_MAP_MAC(ControlLeft, kVK_Control)
337 0 : CODE_MAP_X11(ControlLeft, 0x0025)
338 : CODE_MAP_ANDROID(ControlLeft, 0x001D)
339 :
340 : CODE_MAP_WIN(ControlRight, 0xE01D)
341 : CODE_MAP_MAC(ControlRight, kVK_RightControl)
342 0 : CODE_MAP_X11(ControlRight, 0x0069)
343 : CODE_MAP_ANDROID(ControlRight, 0x0061)
344 :
345 : CODE_MAP_WIN(Enter, 0x001C)
346 : CODE_MAP_MAC(Enter, kVK_Return)
347 0 : CODE_MAP_X11(Enter, 0x0024)
348 : CODE_MAP_ANDROID(Enter, 0x001C)
349 :
350 : CODE_MAP_WIN(OSLeft, 0xE05B)
351 : CODE_MAP_MAC(OSLeft, kVK_Command)
352 0 : CODE_MAP_X11(OSLeft, 0x0085)
353 : CODE_MAP_ANDROID(OSLeft, 0x007D)
354 :
355 : CODE_MAP_WIN(OSRight, 0xE05C)
356 : CODE_MAP_MAC(OSRight, kVK_RightCommand)
357 0 : CODE_MAP_X11(OSRight, 0x0086)
358 : CODE_MAP_ANDROID(OSRight, 0x007E)
359 :
360 : CODE_MAP_WIN(ShiftLeft, 0x002A)
361 : CODE_MAP_MAC(ShiftLeft, kVK_Shift)
362 0 : CODE_MAP_X11(ShiftLeft, 0x0032)
363 : CODE_MAP_ANDROID(ShiftLeft, 0x002A)
364 :
365 : CODE_MAP_WIN(ShiftRight, 0x0036)
366 : CODE_MAP_MAC(ShiftRight, kVK_RightShift)
367 0 : CODE_MAP_X11(ShiftRight, 0x003E)
368 : CODE_MAP_ANDROID(ShiftRight, 0x0036)
369 :
370 : CODE_MAP_WIN(Space, 0x0039)
371 : CODE_MAP_MAC(Space, kVK_Space)
372 0 : CODE_MAP_X11(Space, 0x0041)
373 : CODE_MAP_ANDROID(Space, 0x0039)
374 :
375 : CODE_MAP_WIN(Tab, 0x000F)
376 : CODE_MAP_MAC(Tab, kVK_Tab)
377 0 : CODE_MAP_X11(Tab, 0x0017)
378 : CODE_MAP_ANDROID(Tab, 0x000F)
379 :
380 : // IME keys
381 : CODE_MAP_WIN(Convert, 0x0079)
382 0 : CODE_MAP_X11(Convert, 0x0064)
383 : CODE_MAP_ANDROID(Convert, 0x005C)
384 :
385 : CODE_MAP_WIN(Lang1, 0x0072) // for non-Korean layout
386 : CODE_MAP_WIN(Lang1, 0xE0F2) // for Korean layout
387 : CODE_MAP_MAC(Lang1, kVK_JIS_Kana)
388 0 : CODE_MAP_X11(Lang1, 0x0082)
389 : CODE_MAP_ANDROID(Lang1, 0x007A)
390 :
391 : CODE_MAP_WIN(Lang2, 0x0071) // for non-Korean layout
392 : CODE_MAP_WIN(Lang2, 0xE0F1) // for Korean layout
393 : CODE_MAP_MAC(Lang2, kVK_JIS_Eisu)
394 0 : CODE_MAP_X11(Lang2, 0x0083)
395 : CODE_MAP_ANDROID(Lang2, 0x007B)
396 :
397 : CODE_MAP_WIN(KanaMode, 0x0070)
398 0 : CODE_MAP_X11(KanaMode, 0x0065)
399 : CODE_MAP_ANDROID(KanaMode, 0x005D)
400 :
401 : CODE_MAP_WIN(NonConvert, 0x007B)
402 0 : CODE_MAP_X11(NonConvert, 0x0066)
403 : CODE_MAP_ANDROID(NonConvert, 0x005E)
404 :
405 : // Control pad section
406 : CODE_MAP_WIN(Delete, 0xE053)
407 : CODE_MAP_MAC(Delete, kVK_ForwardDelete)
408 0 : CODE_MAP_X11(Delete, 0x0077)
409 : CODE_MAP_ANDROID(Delete, 0x006F)
410 :
411 : CODE_MAP_WIN(End, 0xE04F)
412 : CODE_MAP_MAC(End, kVK_End)
413 0 : CODE_MAP_X11(End, 0x0073)
414 : CODE_MAP_ANDROID(End, 0x006B)
415 :
416 : CODE_MAP_MAC(Help, kVK_Help) // Insert key on PC keyboard
417 0 : CODE_MAP_X11(Help, 0x0092) // Help key on Sun keyboard
418 : CODE_MAP_ANDROID(Help, 0x008A) // Help key on Sun keyboard
419 :
420 : CODE_MAP_WIN(Home, 0xE047)
421 : CODE_MAP_MAC(Home, kVK_Home)
422 0 : CODE_MAP_X11(Home, 0x006E)
423 : CODE_MAP_ANDROID(Home, 0x0066)
424 :
425 : CODE_MAP_WIN(Insert, 0xE052)
426 0 : CODE_MAP_X11(Insert, 0x0076)
427 : CODE_MAP_ANDROID(Insert, 0x006E)
428 :
429 : CODE_MAP_WIN(PageDown, 0xE051)
430 : CODE_MAP_MAC(PageDown, kVK_PageDown)
431 0 : CODE_MAP_X11(PageDown, 0x0075)
432 : CODE_MAP_ANDROID(PageDown, 0x006D)
433 :
434 : CODE_MAP_WIN(PageUp, 0xE049)
435 : CODE_MAP_MAC(PageUp, kVK_PageUp)
436 0 : CODE_MAP_X11(PageUp, 0x0070)
437 : CODE_MAP_ANDROID(PageUp, 0x0068)
438 :
439 : // Arrow pad section
440 : CODE_MAP_WIN(ArrowDown, 0xE050)
441 : CODE_MAP_MAC(ArrowDown, kVK_DownArrow)
442 0 : CODE_MAP_X11(ArrowDown, 0x0074)
443 : CODE_MAP_ANDROID(ArrowDown, 0x006C)
444 :
445 : CODE_MAP_WIN(ArrowLeft, 0xE04B)
446 : CODE_MAP_MAC(ArrowLeft, kVK_LeftArrow)
447 0 : CODE_MAP_X11(ArrowLeft, 0x0071)
448 : CODE_MAP_ANDROID(ArrowLeft, 0x0069)
449 :
450 : CODE_MAP_WIN(ArrowRight, 0xE04D)
451 : CODE_MAP_MAC(ArrowRight, kVK_RightArrow)
452 0 : CODE_MAP_X11(ArrowRight, 0x0072)
453 : CODE_MAP_ANDROID(ArrowRight, 0x006A)
454 :
455 : CODE_MAP_WIN(ArrowUp, 0xE048)
456 : CODE_MAP_MAC(ArrowUp, kVK_UpArrow)
457 0 : CODE_MAP_X11(ArrowUp, 0x006F)
458 : CODE_MAP_ANDROID(ArrowUp, 0x0067)
459 :
460 : // Numpad section
461 : CODE_MAP_WIN(NumLock, 0xE045) // MSDN says 0x0045, though...
462 : CODE_MAP_MAC(NumLock, kVK_ANSI_KeypadClear)
463 0 : CODE_MAP_X11(NumLock, 0x004D)
464 : CODE_MAP_ANDROID(NumLock, 0x0045)
465 :
466 : CODE_MAP_WIN(Numpad0, 0x0052)
467 : CODE_MAP_MAC(Numpad0, kVK_ANSI_Keypad0)
468 0 : CODE_MAP_X11(Numpad0, 0x005A)
469 : CODE_MAP_ANDROID(Numpad0, 0x0052)
470 :
471 : CODE_MAP_WIN(Numpad1, 0x004F)
472 : CODE_MAP_MAC(Numpad1, kVK_ANSI_Keypad1)
473 0 : CODE_MAP_X11(Numpad1, 0x0057)
474 : CODE_MAP_ANDROID(Numpad1, 0x004F)
475 :
476 : CODE_MAP_WIN(Numpad2, 0x0050)
477 : CODE_MAP_MAC(Numpad2, kVK_ANSI_Keypad2)
478 0 : CODE_MAP_X11(Numpad2, 0x0058)
479 : CODE_MAP_ANDROID(Numpad2, 0x0050)
480 :
481 : CODE_MAP_WIN(Numpad3, 0x0051)
482 : CODE_MAP_MAC(Numpad3, kVK_ANSI_Keypad3)
483 0 : CODE_MAP_X11(Numpad3, 0x0059)
484 : CODE_MAP_ANDROID(Numpad3, 0x0051)
485 :
486 : CODE_MAP_WIN(Numpad4, 0x004B)
487 : CODE_MAP_MAC(Numpad4, kVK_ANSI_Keypad4)
488 0 : CODE_MAP_X11(Numpad4, 0x0053)
489 : CODE_MAP_ANDROID(Numpad4, 0x004B)
490 :
491 : CODE_MAP_WIN(Numpad5, 0x004C)
492 : CODE_MAP_MAC(Numpad5, kVK_ANSI_Keypad5)
493 0 : CODE_MAP_X11(Numpad5, 0x0054)
494 : CODE_MAP_ANDROID(Numpad5, 0x004C)
495 :
496 : CODE_MAP_WIN(Numpad6, 0x004D)
497 : CODE_MAP_MAC(Numpad6, kVK_ANSI_Keypad6)
498 0 : CODE_MAP_X11(Numpad6, 0x0055)
499 : CODE_MAP_ANDROID(Numpad6, 0x004D)
500 :
501 : CODE_MAP_WIN(Numpad7, 0x0047)
502 : CODE_MAP_MAC(Numpad7, kVK_ANSI_Keypad7)
503 0 : CODE_MAP_X11(Numpad7, 0x004F)
504 : CODE_MAP_ANDROID(Numpad7, 0x0047)
505 :
506 : CODE_MAP_WIN(Numpad8, 0x0048)
507 : CODE_MAP_MAC(Numpad8, kVK_ANSI_Keypad8)
508 0 : CODE_MAP_X11(Numpad8, 0x0050)
509 : CODE_MAP_ANDROID(Numpad8, 0x0048)
510 :
511 : CODE_MAP_WIN(Numpad9, 0x0049)
512 : CODE_MAP_MAC(Numpad9, kVK_ANSI_Keypad9)
513 0 : CODE_MAP_X11(Numpad9, 0x0051)
514 : CODE_MAP_ANDROID(Numpad9, 0x0049)
515 :
516 : CODE_MAP_WIN(NumpadAdd, 0x004E)
517 : CODE_MAP_MAC(NumpadAdd, kVK_ANSI_KeypadPlus)
518 0 : CODE_MAP_X11(NumpadAdd, 0x0056)
519 : CODE_MAP_ANDROID(NumpadAdd, 0x004E)
520 :
521 : CODE_MAP_WIN(NumpadComma, 0x007E)
522 : CODE_MAP_MAC(NumpadComma, kVK_JIS_KeypadComma)
523 0 : CODE_MAP_X11(NumpadComma, 0x0081)
524 : CODE_MAP_ANDROID(NumpadComma, 0x0079)
525 :
526 : CODE_MAP_WIN(NumpadDecimal, 0x0053)
527 : CODE_MAP_MAC(NumpadDecimal, kVK_ANSI_KeypadDecimal)
528 0 : CODE_MAP_X11(NumpadDecimal, 0x005B)
529 : CODE_MAP_ANDROID(NumpadDecimal, 0x0053)
530 :
531 : CODE_MAP_WIN(NumpadDivide, 0xE035)
532 : CODE_MAP_MAC(NumpadDivide, kVK_ANSI_KeypadDivide)
533 0 : CODE_MAP_X11(NumpadDivide, 0x006A)
534 : CODE_MAP_ANDROID(NumpadDivide, 0x0062)
535 :
536 : CODE_MAP_WIN(NumpadEnter, 0xE01C)
537 : CODE_MAP_MAC(NumpadEnter, kVK_ANSI_KeypadEnter)
538 : CODE_MAP_MAC(NumpadEnter, kVK_Powerbook_KeypadEnter)
539 0 : CODE_MAP_X11(NumpadEnter, 0x0068)
540 : CODE_MAP_ANDROID(NumpadEnter, 0x0060)
541 :
542 : CODE_MAP_WIN(NumpadEqual, 0x0059)
543 : CODE_MAP_MAC(NumpadEqual, kVK_ANSI_KeypadEquals)
544 0 : CODE_MAP_X11(NumpadEqual, 0x007D)
545 : CODE_MAP_ANDROID(NumpadEqual, 0x0075)
546 :
547 : CODE_MAP_WIN(NumpadMultiply, 0x0037)
548 : CODE_MAP_MAC(NumpadMultiply, kVK_ANSI_KeypadMultiply)
549 0 : CODE_MAP_X11(NumpadMultiply, 0x003F)
550 : CODE_MAP_ANDROID(NumpadMultiply, 0x0037)
551 :
552 : CODE_MAP_WIN(NumpadSubtract, 0x004A)
553 : CODE_MAP_MAC(NumpadSubtract, kVK_ANSI_KeypadMinus)
554 0 : CODE_MAP_X11(NumpadSubtract, 0x0052)
555 : CODE_MAP_ANDROID(NumpadSubtract, 0x004A)
556 :
557 : // Function section
558 : CODE_MAP_WIN(Escape, 0x0001)
559 : CODE_MAP_MAC(Escape, kVK_Escape)
560 0 : CODE_MAP_X11(Escape, 0x0009)
561 : CODE_MAP_ANDROID(Escape, 0x0001)
562 :
563 : CODE_MAP_WIN(F1, 0x003B)
564 : CODE_MAP_MAC(F1, kVK_F1)
565 0 : CODE_MAP_X11(F1, 0x0043)
566 : CODE_MAP_ANDROID(F1, 0x003B)
567 :
568 : CODE_MAP_WIN(F2, 0x003C)
569 : CODE_MAP_MAC(F2, kVK_F2)
570 0 : CODE_MAP_X11(F2, 0x0044)
571 : CODE_MAP_ANDROID(F2, 0x003C)
572 :
573 : CODE_MAP_WIN(F3, 0x003D)
574 : CODE_MAP_MAC(F3, kVK_F3)
575 0 : CODE_MAP_X11(F3, 0x0045)
576 : CODE_MAP_ANDROID(F3, 0x003D)
577 :
578 : CODE_MAP_WIN(F4, 0x003E)
579 : CODE_MAP_MAC(F4, kVK_F4)
580 0 : CODE_MAP_X11(F4, 0x0046)
581 : CODE_MAP_ANDROID(F4, 0x003E)
582 :
583 : CODE_MAP_WIN(F5, 0x003F)
584 : CODE_MAP_MAC(F5, kVK_F5)
585 0 : CODE_MAP_X11(F5, 0x0047)
586 : CODE_MAP_ANDROID(F5, 0x003F)
587 :
588 : CODE_MAP_WIN(F6, 0x0040)
589 : CODE_MAP_MAC(F6, kVK_F6)
590 0 : CODE_MAP_X11(F6, 0x0048)
591 : CODE_MAP_ANDROID(F6, 0x0040)
592 :
593 : CODE_MAP_WIN(F7, 0x0041)
594 : CODE_MAP_MAC(F7, kVK_F7)
595 0 : CODE_MAP_X11(F7, 0x0049)
596 : CODE_MAP_ANDROID(F7, 0x0041)
597 :
598 : CODE_MAP_WIN(F8, 0x0042)
599 : CODE_MAP_MAC(F8, kVK_F8)
600 0 : CODE_MAP_X11(F8, 0x004A)
601 : CODE_MAP_ANDROID(F8, 0x0042)
602 :
603 : CODE_MAP_WIN(F9, 0x0043)
604 : CODE_MAP_MAC(F9, kVK_F9)
605 0 : CODE_MAP_X11(F9, 0x004B)
606 : CODE_MAP_ANDROID(F9, 0x0043)
607 :
608 : CODE_MAP_WIN(F10, 0x0044)
609 : CODE_MAP_MAC(F10, kVK_F10)
610 0 : CODE_MAP_X11(F10, 0x004C)
611 : CODE_MAP_ANDROID(F10, 0x0044)
612 :
613 : CODE_MAP_WIN(F11, 0x0057)
614 : CODE_MAP_MAC(F11, kVK_F11)
615 0 : CODE_MAP_X11(F11, 0x005F)
616 : CODE_MAP_ANDROID(F11, 0x0057)
617 :
618 : CODE_MAP_WIN(F12, 0x0058)
619 : CODE_MAP_MAC(F12, kVK_F12)
620 0 : CODE_MAP_X11(F12, 0x0060)
621 : CODE_MAP_ANDROID(F12, 0x0058)
622 :
623 : CODE_MAP_WIN(F13, 0x0064)
624 : CODE_MAP_MAC(F13, kVK_F13) // PrintScreen on PC keyboard
625 0 : CODE_MAP_X11(F13, 0x00BF)
626 : CODE_MAP_ANDROID(F13, 0x00B7)
627 :
628 : CODE_MAP_WIN(F14, 0x0065)
629 : CODE_MAP_MAC(F14, kVK_F14) // ScrollLock on PC keyboard
630 0 : CODE_MAP_X11(F14, 0x00C0)
631 : CODE_MAP_ANDROID(F14, 0x00B8)
632 :
633 : CODE_MAP_WIN(F15, 0x0066)
634 : CODE_MAP_MAC(F15, kVK_F15) // Pause on PC keyboard
635 0 : CODE_MAP_X11(F15, 0x00C1)
636 : CODE_MAP_ANDROID(F15, 0x00B9)
637 :
638 : CODE_MAP_WIN(F16, 0x0067)
639 : CODE_MAP_MAC(F16, kVK_F16)
640 0 : CODE_MAP_X11(F16, 0x00C2)
641 : CODE_MAP_ANDROID(F16, 0x00BA)
642 :
643 : CODE_MAP_WIN(F17, 0x0068)
644 : CODE_MAP_MAC(F17, kVK_F17)
645 0 : CODE_MAP_X11(F17, 0x00C3)
646 : CODE_MAP_ANDROID(F17, 0x00BB)
647 :
648 : CODE_MAP_WIN(F18, 0x0069)
649 : CODE_MAP_MAC(F18, kVK_F18)
650 0 : CODE_MAP_X11(F18, 0x00C4)
651 : CODE_MAP_ANDROID(F18, 0x00BC)
652 :
653 : CODE_MAP_WIN(F19, 0x006A)
654 : CODE_MAP_MAC(F19, kVK_F19)
655 0 : CODE_MAP_X11(F19, 0x00C5)
656 : CODE_MAP_ANDROID(F19, 0x00BD)
657 :
658 : CODE_MAP_WIN(F20, 0x006B)
659 : CODE_MAP_MAC(F20, kVK_F20)
660 0 : CODE_MAP_X11(F20, 0x00C6)
661 : CODE_MAP_ANDROID(F20, 0x00BE)
662 :
663 : CODE_MAP_WIN(F21, 0x006C)
664 0 : CODE_MAP_X11(F21, 0x00C7)
665 : CODE_MAP_ANDROID(F21, 0x00BF)
666 :
667 : CODE_MAP_WIN(F22, 0x006D)
668 0 : CODE_MAP_X11(F22, 0x00C8)
669 : CODE_MAP_ANDROID(F22, 0x00C0)
670 :
671 : CODE_MAP_WIN(F23, 0x006E)
672 0 : CODE_MAP_X11(F23, 0x00C9)
673 : CODE_MAP_ANDROID(F23, 0x00C1)
674 :
675 : CODE_MAP_WIN(F24, 0x0076)
676 0 : CODE_MAP_X11(F24, 0x00CA)
677 : CODE_MAP_ANDROID(F24, 0x00C2)
678 :
679 : CODE_MAP_MAC(Fn, kVK_Function) // not available?
680 : CODE_MAP_ANDROID(Fn, 0x01D0)
681 :
682 : CODE_MAP_WIN(PrintScreen, 0xE037)
683 : CODE_MAP_WIN(PrintScreen, 0x0054) // Alt + PrintScreen
684 0 : CODE_MAP_X11(PrintScreen, 0x006B)
685 : CODE_MAP_ANDROID(PrintScreen, 0x0063)
686 :
687 : CODE_MAP_WIN(ScrollLock, 0x0046)
688 0 : CODE_MAP_X11(ScrollLock, 0x004E)
689 : CODE_MAP_ANDROID(ScrollLock, 0x0046)
690 :
691 : CODE_MAP_WIN(Pause, 0x0045)
692 : CODE_MAP_WIN(Pause, 0xE046) // Ctrl + Pause
693 0 : CODE_MAP_X11(Pause, 0x007F)
694 : CODE_MAP_ANDROID(Pause, 0x0077)
695 :
696 : // Media keys
697 : CODE_MAP_WIN(BrowserBack, 0xE06A)
698 0 : CODE_MAP_X11(BrowserBack, 0x00A6)
699 : CODE_MAP_ANDROID(BrowserBack, 0x009E)
700 :
701 : CODE_MAP_WIN(BrowserFavorites, 0xE066)
702 0 : CODE_MAP_X11(BrowserFavorites, 0x00A4)
703 : CODE_MAP_ANDROID(BrowserFavorites, 0x009C)
704 :
705 : CODE_MAP_WIN(BrowserForward, 0xE069)
706 0 : CODE_MAP_X11(BrowserForward, 0x00A7)
707 : CODE_MAP_ANDROID(BrowserForward, 0x009F)
708 :
709 : CODE_MAP_WIN(BrowserHome, 0xE032)
710 0 : CODE_MAP_X11(BrowserHome, 0x00B4)
711 : // CODE_MAP_ANDROID(BrowserHome) // not available? works as Home key.
712 :
713 : CODE_MAP_WIN(BrowserRefresh, 0xE067)
714 0 : CODE_MAP_X11(BrowserRefresh, 0x00B5)
715 : CODE_MAP_ANDROID(BrowserRefresh, 0x00AD)
716 :
717 : CODE_MAP_WIN(BrowserSearch, 0xE065)
718 0 : CODE_MAP_X11(BrowserSearch, 0x00E1)
719 : CODE_MAP_ANDROID(BrowserSearch, 0x00D9)
720 :
721 : CODE_MAP_WIN(BrowserStop, 0xE068)
722 0 : CODE_MAP_X11(BrowserStop, 0x0088)
723 : CODE_MAP_ANDROID(BrowserStop, 0x0080)
724 :
725 : // CODE_MAP_WIN(Eject) // not available?
726 : // CODE_MAP_MAC(Eject) // not available?
727 0 : CODE_MAP_X11(Eject, 0x00A9)
728 : CODE_MAP_ANDROID(Eject, 0x00A1)
729 :
730 : CODE_MAP_WIN(LaunchApp1, 0xE06B)
731 0 : CODE_MAP_X11(LaunchApp1, 0x0098)
732 : CODE_MAP_ANDROID(LaunchApp1, 0x0090)
733 :
734 : CODE_MAP_WIN(LaunchApp2, 0xE021)
735 0 : CODE_MAP_X11(LaunchApp2, 0x0094)
736 : // CODE_MAP_ANDROID(LaunchApp2) // not available?
737 :
738 : CODE_MAP_WIN(LaunchMail, 0xE06C)
739 0 : CODE_MAP_X11(LaunchMail, 0x00A3)
740 : // CODE_MAP_ANDROID(LaunchMail) // not available?
741 :
742 : CODE_MAP_WIN(MediaPlayPause, 0xE022)
743 0 : CODE_MAP_X11(MediaPlayPause, 0x00AC)
744 : CODE_MAP_ANDROID(MediaPlayPause, 0x00A4)
745 :
746 : CODE_MAP_WIN(MediaSelect, 0xE06D)
747 0 : CODE_MAP_X11(MediaSelect, 0x00B3)
748 : // CODE_MAP_ANDROID(MediaSelect) // not available?
749 :
750 : CODE_MAP_WIN(MediaStop, 0xE024)
751 0 : CODE_MAP_X11(MediaStop, 0x00AE)
752 : CODE_MAP_ANDROID(MediaStop, 0x00A6)
753 :
754 : CODE_MAP_WIN(MediaTrackNext, 0xE019)
755 0 : CODE_MAP_X11(MediaTrackNext, 0x00AB)
756 : CODE_MAP_ANDROID(MediaTrackNext, 0x00A3)
757 :
758 : CODE_MAP_WIN(MediaTrackPrevious, 0xE010)
759 0 : CODE_MAP_X11(MediaTrackPrevious, 0x00AD)
760 : CODE_MAP_ANDROID(MediaTrackPrevious, 0x00A5)
761 :
762 : CODE_MAP_WIN(Power, 0xE05E)
763 : CODE_MAP_MAC(Power, 0x007F) // On 10.7 and 10.8 only
764 : // CODE_MAP_X11(Power) // not available?
765 : CODE_MAP_ANDROID(Power, 0x0074)
766 :
767 : // CODE_MAP_WIN(Sleep) // not available?
768 : // CODE_MAP_X11(Sleep) // not available?
769 : CODE_MAP_ANDROID(Sleep, 0x008E)
770 :
771 : CODE_MAP_WIN(VolumeDown, 0xE02E)
772 : CODE_MAP_MAC(VolumeDown, kVK_VolumeDown) // not available?
773 0 : CODE_MAP_X11(VolumeDown, 0x007A)
774 : CODE_MAP_ANDROID(VolumeDown, 0x0072)
775 :
776 : CODE_MAP_WIN(VolumeMute, 0xE020)
777 : CODE_MAP_MAC(VolumeMute, kVK_Mute) // not available?
778 0 : CODE_MAP_X11(VolumeMute, 0x0079)
779 : CODE_MAP_ANDROID(VolumeMute, 0x0071)
780 :
781 : CODE_MAP_WIN(VolumeUp, 0xE030)
782 : CODE_MAP_MAC(VolumeUp, kVK_VolumeUp) // not available?
783 0 : CODE_MAP_X11(VolumeUp, 0x007B)
784 : CODE_MAP_ANDROID(VolumeUp, 0x0073) // side of body, not on keyboard
785 :
786 : // CODE_MAP_WIN(WakeUp) // not available?
787 0 : CODE_MAP_X11(WakeUp, 0x0097)
788 : CODE_MAP_ANDROID(WakeUp, 0x008F)
789 :
790 : // Legacy editing keys
791 0 : CODE_MAP_X11(Again, 0x0089) // Again key on Sun keyboard
792 : CODE_MAP_ANDROID(Again, 0x0081) // Again key on Sun keyboard
793 :
794 0 : CODE_MAP_X11(Copy, 0x008D) // Copy key on Sun keyboard
795 : CODE_MAP_ANDROID(Copy, 0x0085) // Copy key on Sun keyboard
796 :
797 0 : CODE_MAP_X11(Cut, 0x0091) // Cut key on Sun keyboard
798 : CODE_MAP_ANDROID(Cut, 0x0089) // Cut key on Sun keyboard
799 :
800 0 : CODE_MAP_X11(Find, 0x0090) // Find key on Sun keyboard
801 : CODE_MAP_ANDROID(Find, 0x0088) // Find key on Sun keyboard
802 :
803 0 : CODE_MAP_X11(Open, 0x008E) // Open key on Sun keyboard
804 : CODE_MAP_ANDROID(Open, 0x0086) // Open key on Sun keyboard
805 :
806 0 : CODE_MAP_X11(Paste, 0x008F) // Paste key on Sun keyboard
807 : CODE_MAP_ANDROID(Paste, 0x0087) // Paste key on Sun keyboard
808 :
809 0 : CODE_MAP_X11(Props, 0x008A) // Props key on Sun keyboard
810 : CODE_MAP_ANDROID(Props, 0x0082) // Props key on Sun keyboard
811 :
812 0 : CODE_MAP_X11(Select, 0x008C) // Front key on Sun keyboard
813 : CODE_MAP_ANDROID(Select, 0x0084) // Front key on Sun keyboard
814 :
815 0 : CODE_MAP_X11(Undo, 0x008B) // Undo key on Sun keyboard
816 : CODE_MAP_ANDROID(Undo, 0x0083) // Undo key on Sun keyboard
817 :
818 : #undef CODE_MAP_WIN
819 : #undef CODE_MAP_MAC
820 : #undef CODE_MAP_X11
821 : #undef CODE_MAP_ANDROID
|