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/. */
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
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.
19 #define CODE_MAP_WIN(aCPPCodeName, aNativeKey)
21 #define CODE_MAP_MAC(aCPPCodeName, aNativeKey)
22 // GTK and Qt on Linux
23 #define CODE_MAP_X11(aCPPCodeName, aNativeKey)
25 #define CODE_MAP_ANDROID(aCPPCodeName, aNativeKey)
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)
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)
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)
53 // Writing system keys
54 CODE_MAP_WIN(Backquote
, 0x0029)
55 CODE_MAP_MAC(Backquote
, kVK_ANSI_Grave
)
56 CODE_MAP_X11(Backquote
, 0x0031)
57 CODE_MAP_ANDROID(Backquote
, 0x0029)
59 CODE_MAP_WIN(Backslash
, 0x002B)
60 CODE_MAP_MAC(Backslash
, kVK_ANSI_Backslash
)
61 CODE_MAP_X11(Backslash
, 0x0033)
62 CODE_MAP_ANDROID(Backslash
, 0x002B)
64 CODE_MAP_WIN(Backspace
, 0x000E)
65 CODE_MAP_MAC(Backspace
, kVK_Delete
)
66 CODE_MAP_X11(Backspace
, 0x0016)
67 CODE_MAP_ANDROID(Backspace
, 0x000E)
69 CODE_MAP_WIN(BracketLeft
, 0x001A)
70 CODE_MAP_MAC(BracketLeft
, kVK_ANSI_LeftBracket
)
71 CODE_MAP_X11(BracketLeft
, 0x0022)
72 CODE_MAP_ANDROID(BracketLeft
, 0x001A)
74 CODE_MAP_WIN(BracketRight
, 0x001B)
75 CODE_MAP_MAC(BracketRight
, kVK_ANSI_RightBracket
)
76 CODE_MAP_X11(BracketRight
, 0x0023)
77 CODE_MAP_ANDROID(BracketRight
, 0x001B)
79 CODE_MAP_WIN(Comma
, 0x0033)
80 CODE_MAP_MAC(Comma
, kVK_ANSI_Comma
)
81 CODE_MAP_X11(Comma
, 0x003B)
82 CODE_MAP_ANDROID(Comma
, 0x00033)
84 CODE_MAP_WIN(Digit0
, 0x000B)
85 CODE_MAP_MAC(Digit0
, kVK_ANSI_0
)
86 CODE_MAP_X11(Digit0
, 0x0013)
87 CODE_MAP_ANDROID(Digit0
, 0x000B)
89 CODE_MAP_WIN(Digit1
, 0x0002)
90 CODE_MAP_MAC(Digit1
, kVK_ANSI_1
)
91 CODE_MAP_X11(Digit1
, 0x000A)
92 CODE_MAP_ANDROID(Digit1
, 0x0002)
94 CODE_MAP_WIN(Digit2
, 0x0003)
95 CODE_MAP_MAC(Digit2
, kVK_ANSI_2
)
96 CODE_MAP_X11(Digit2
, 0x000B)
97 CODE_MAP_ANDROID(Digit2
, 0x0003)
99 CODE_MAP_WIN(Digit3
, 0x0004)
100 CODE_MAP_MAC(Digit3
, kVK_ANSI_3
)
101 CODE_MAP_X11(Digit3
, 0x000C)
102 CODE_MAP_ANDROID(Digit3
, 0x0004)
104 CODE_MAP_WIN(Digit4
, 0x0005)
105 CODE_MAP_MAC(Digit4
, kVK_ANSI_4
)
106 CODE_MAP_X11(Digit4
, 0x000D)
107 CODE_MAP_ANDROID(Digit4
, 0x0005)
109 CODE_MAP_WIN(Digit5
, 0x0006)
110 CODE_MAP_MAC(Digit5
, kVK_ANSI_5
)
111 CODE_MAP_X11(Digit5
, 0x000E)
112 CODE_MAP_ANDROID(Digit5
, 0x0006)
114 CODE_MAP_WIN(Digit6
, 0x0007)
115 CODE_MAP_MAC(Digit6
, kVK_ANSI_6
)
116 CODE_MAP_X11(Digit6
, 0x000F)
117 CODE_MAP_ANDROID(Digit6
, 0x0007)
119 CODE_MAP_WIN(Digit7
, 0x0008)
120 CODE_MAP_MAC(Digit7
, kVK_ANSI_7
)
121 CODE_MAP_X11(Digit7
, 0x0010)
122 CODE_MAP_ANDROID(Digit7
, 0x0008)
124 CODE_MAP_WIN(Digit8
, 0x0009)
125 CODE_MAP_MAC(Digit8
, kVK_ANSI_8
)
126 CODE_MAP_X11(Digit8
, 0x0011)
127 CODE_MAP_ANDROID(Digit8
, 0x0009)
129 CODE_MAP_WIN(Digit9
, 0x000A)
130 CODE_MAP_MAC(Digit9
, kVK_ANSI_9
)
131 CODE_MAP_X11(Digit9
, 0x0012)
132 CODE_MAP_ANDROID(Digit9
, 0x000A)
134 CODE_MAP_WIN(Equal
, 0x000D)
135 CODE_MAP_MAC(Equal
, kVK_ANSI_Equal
)
136 CODE_MAP_X11(Equal
, 0x0015)
137 CODE_MAP_ANDROID(Equal
, 0x000D)
139 CODE_MAP_WIN(IntlBackslash
, 0x0056)
140 CODE_MAP_MAC(IntlBackslash
, kVK_ISO_Section
)
141 CODE_MAP_X11(IntlBackslash
, 0x005E)
142 CODE_MAP_ANDROID(IntlBackslash
, 0x0056)
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.
149 CODE_MAP_WIN(IntlRo
, 0x0073)
150 CODE_MAP_MAC(IntlRo
, kVK_JIS_Underscore
)
151 CODE_MAP_X11(IntlRo
, 0x0061)
152 CODE_MAP_ANDROID(IntlRo
, 0x0059)
154 CODE_MAP_WIN(IntlYen
, 0x007D)
155 CODE_MAP_MAC(IntlYen
, kVK_JIS_Yen
)
156 CODE_MAP_X11(IntlYen
, 0x0084)
157 CODE_MAP_ANDROID(IntlYen
, 0x007C)
159 CODE_MAP_WIN(KeyA
, 0x001E)
160 CODE_MAP_MAC(KeyA
, kVK_ANSI_A
)
161 CODE_MAP_X11(KeyA
, 0x0026)
162 CODE_MAP_ANDROID(KeyA
, 0x001E)
164 CODE_MAP_WIN(KeyB
, 0x0030)
165 CODE_MAP_MAC(KeyB
, kVK_ANSI_B
)
166 CODE_MAP_X11(KeyB
, 0x0038)
167 CODE_MAP_ANDROID(KeyB
, 0x0030)
169 CODE_MAP_WIN(KeyC
, 0x002E)
170 CODE_MAP_MAC(KeyC
, kVK_ANSI_C
)
171 CODE_MAP_X11(KeyC
, 0x0036)
172 CODE_MAP_ANDROID(KeyC
, 0x002E)
174 CODE_MAP_WIN(KeyD
, 0x0020)
175 CODE_MAP_MAC(KeyD
, kVK_ANSI_D
)
176 CODE_MAP_X11(KeyD
, 0x0028)
177 CODE_MAP_ANDROID(KeyD
, 0x0020)
179 CODE_MAP_WIN(KeyE
, 0x0012)
180 CODE_MAP_MAC(KeyE
, kVK_ANSI_E
)
181 CODE_MAP_X11(KeyE
, 0x001A)
182 CODE_MAP_ANDROID(KeyE
, 0x0012)
184 CODE_MAP_WIN(KeyF
, 0x0021)
185 CODE_MAP_MAC(KeyF
, kVK_ANSI_F
)
186 CODE_MAP_X11(KeyF
, 0x0029)
187 CODE_MAP_ANDROID(KeyF
, 0x0021)
189 CODE_MAP_WIN(KeyG
, 0x0022)
190 CODE_MAP_MAC(KeyG
, kVK_ANSI_G
)
191 CODE_MAP_X11(KeyG
, 0x002A)
192 CODE_MAP_ANDROID(KeyG
, 0x0022)
194 CODE_MAP_WIN(KeyH
, 0x0023)
195 CODE_MAP_MAC(KeyH
, kVK_ANSI_H
)
196 CODE_MAP_X11(KeyH
, 0x002B)
197 CODE_MAP_ANDROID(KeyH
, 0x0023)
199 CODE_MAP_WIN(KeyI
, 0x0017)
200 CODE_MAP_MAC(KeyI
, kVK_ANSI_I
)
201 CODE_MAP_X11(KeyI
, 0x001F)
202 CODE_MAP_ANDROID(KeyI
, 0x0017)
204 CODE_MAP_WIN(KeyJ
, 0x0024)
205 CODE_MAP_MAC(KeyJ
, kVK_ANSI_J
)
206 CODE_MAP_X11(KeyJ
, 0x002C)
207 CODE_MAP_ANDROID(KeyJ
, 0x0024)
209 CODE_MAP_WIN(KeyK
, 0x0025)
210 CODE_MAP_MAC(KeyK
, kVK_ANSI_K
)
211 CODE_MAP_X11(KeyK
, 0x002D)
212 CODE_MAP_ANDROID(KeyK
, 0x0025)
214 CODE_MAP_WIN(KeyL
, 0x0026)
215 CODE_MAP_MAC(KeyL
, kVK_ANSI_L
)
216 CODE_MAP_X11(KeyL
, 0x002E)
217 CODE_MAP_ANDROID(KeyL
, 0x0026)
219 CODE_MAP_WIN(KeyM
, 0x0032)
220 CODE_MAP_MAC(KeyM
, kVK_ANSI_M
)
221 CODE_MAP_X11(KeyM
, 0x003A)
222 CODE_MAP_ANDROID(KeyM
, 0x0032)
224 CODE_MAP_WIN(KeyN
, 0x0031)
225 CODE_MAP_MAC(KeyN
, kVK_ANSI_N
)
226 CODE_MAP_X11(KeyN
, 0x0039)
227 CODE_MAP_ANDROID(KeyN
, 0x0031)
229 CODE_MAP_WIN(KeyO
, 0x0018)
230 CODE_MAP_MAC(KeyO
, kVK_ANSI_O
)
231 CODE_MAP_X11(KeyO
, 0x0020)
232 CODE_MAP_ANDROID(KeyO
, 0x0018)
234 CODE_MAP_WIN(KeyP
, 0x0019)
235 CODE_MAP_MAC(KeyP
, kVK_ANSI_P
)
236 CODE_MAP_X11(KeyP
, 0x0021)
237 CODE_MAP_ANDROID(KeyP
, 0x0019)
239 CODE_MAP_WIN(KeyQ
, 0x0010)
240 CODE_MAP_MAC(KeyQ
, kVK_ANSI_Q
)
241 CODE_MAP_X11(KeyQ
, 0x0018)
242 CODE_MAP_ANDROID(KeyQ
, 0x0010)
244 CODE_MAP_WIN(KeyR
, 0x0013)
245 CODE_MAP_MAC(KeyR
, kVK_ANSI_R
)
246 CODE_MAP_X11(KeyR
, 0x001B)
247 CODE_MAP_ANDROID(KeyR
, 0x0013)
249 CODE_MAP_WIN(KeyS
, 0x001F)
250 CODE_MAP_MAC(KeyS
, kVK_ANSI_S
)
251 CODE_MAP_X11(KeyS
, 0x0027)
252 CODE_MAP_ANDROID(KeyS
, 0x001F)
254 CODE_MAP_WIN(KeyT
, 0x0014)
255 CODE_MAP_MAC(KeyT
, kVK_ANSI_T
)
256 CODE_MAP_X11(KeyT
, 0x001C)
257 CODE_MAP_ANDROID(KeyT
, 0x0014)
259 CODE_MAP_WIN(KeyU
, 0x0016)
260 CODE_MAP_MAC(KeyU
, kVK_ANSI_U
)
261 CODE_MAP_X11(KeyU
, 0x001E)
262 CODE_MAP_ANDROID(KeyU
, 0x0016)
264 CODE_MAP_WIN(KeyV
, 0x002F)
265 CODE_MAP_MAC(KeyV
, kVK_ANSI_V
)
266 CODE_MAP_X11(KeyV
, 0x0037)
267 CODE_MAP_ANDROID(KeyV
, 0x002F)
269 CODE_MAP_WIN(KeyW
, 0x0011)
270 CODE_MAP_MAC(KeyW
, kVK_ANSI_W
)
271 CODE_MAP_X11(KeyW
, 0x0019)
272 CODE_MAP_ANDROID(KeyW
, 0x0011)
274 CODE_MAP_WIN(KeyX
, 0x002D)
275 CODE_MAP_MAC(KeyX
, kVK_ANSI_X
)
276 CODE_MAP_X11(KeyX
, 0x0035)
277 CODE_MAP_ANDROID(KeyX
, 0x002D)
279 CODE_MAP_WIN(KeyY
, 0x0015)
280 CODE_MAP_MAC(KeyY
, kVK_ANSI_Y
)
281 CODE_MAP_X11(KeyY
, 0x001D)
282 CODE_MAP_ANDROID(KeyY
, 0x0015)
284 CODE_MAP_WIN(KeyZ
, 0x002C)
285 CODE_MAP_MAC(KeyZ
, kVK_ANSI_Z
)
286 CODE_MAP_X11(KeyZ
, 0x0034)
287 CODE_MAP_ANDROID(KeyZ
, 0x002C)
289 CODE_MAP_WIN(Minus
, 0x000C)
290 CODE_MAP_MAC(Minus
, kVK_ANSI_Minus
)
291 CODE_MAP_X11(Minus
, 0x0014)
292 CODE_MAP_ANDROID(Minus
, 0x000C)
294 CODE_MAP_WIN(Period
, 0x0034)
295 CODE_MAP_MAC(Period
, kVK_ANSI_Period
)
296 CODE_MAP_X11(Period
, 0x003C)
297 CODE_MAP_ANDROID(Period
, 0x0034)
299 CODE_MAP_WIN(Quote
, 0x0028)
300 CODE_MAP_MAC(Quote
, kVK_ANSI_Quote
)
301 CODE_MAP_X11(Quote
, 0x0030)
302 CODE_MAP_ANDROID(Quote
, 0x0028)
304 CODE_MAP_WIN(Semicolon
, 0x0027)
305 CODE_MAP_MAC(Semicolon
, kVK_ANSI_Semicolon
)
306 CODE_MAP_X11(Semicolon
, 0x002F)
307 CODE_MAP_ANDROID(Semicolon
, 0x0027)
309 CODE_MAP_WIN(Slash
, 0x0035)
310 CODE_MAP_MAC(Slash
, kVK_ANSI_Slash
)
311 CODE_MAP_X11(Slash
, 0x003D)
312 CODE_MAP_ANDROID(Slash
, 0x0035)
315 CODE_MAP_WIN(AltLeft
, 0x0038)
316 CODE_MAP_MAC(AltLeft
, kVK_Option
)
317 CODE_MAP_X11(AltLeft
, 0x0040)
318 CODE_MAP_ANDROID(AltLeft
, 0x0038)
320 CODE_MAP_WIN(AltRight
, 0xE038)
321 CODE_MAP_MAC(AltRight
, kVK_RightOption
)
322 CODE_MAP_X11(AltRight
, 0x006C)
323 CODE_MAP_ANDROID(AltRight
, 0x0064)
325 CODE_MAP_WIN(CapsLock
, 0x003A)
326 CODE_MAP_MAC(CapsLock
, kVK_CapsLock
)
327 CODE_MAP_X11(CapsLock
, 0x0042)
328 CODE_MAP_ANDROID(CapsLock
, 0x003A)
330 CODE_MAP_WIN(ContextMenu
, 0xE05D)
331 CODE_MAP_MAC(ContextMenu
, kVK_PC_ContextMenu
)
332 CODE_MAP_X11(ContextMenu
, 0x0087)
333 CODE_MAP_ANDROID(ContextMenu
, 0x007F)
335 CODE_MAP_WIN(ControlLeft
, 0x001D)
336 CODE_MAP_MAC(ControlLeft
, kVK_Control
)
337 CODE_MAP_X11(ControlLeft
, 0x0025)
338 CODE_MAP_ANDROID(ControlLeft
, 0x001D)
340 CODE_MAP_WIN(ControlRight
, 0xE01D)
341 CODE_MAP_MAC(ControlRight
, kVK_RightControl
)
342 CODE_MAP_X11(ControlRight
, 0x0069)
343 CODE_MAP_ANDROID(ControlRight
, 0x0061)
345 CODE_MAP_WIN(Enter
, 0x001C)
346 CODE_MAP_MAC(Enter
, kVK_Return
)
347 CODE_MAP_X11(Enter
, 0x0024)
348 CODE_MAP_ANDROID(Enter
, 0x001C)
350 CODE_MAP_WIN(OSLeft
, 0xE05B)
351 CODE_MAP_MAC(OSLeft
, kVK_Command
)
352 CODE_MAP_X11(OSLeft
, 0x0085)
353 CODE_MAP_ANDROID(OSLeft
, 0x007D)
355 CODE_MAP_WIN(OSRight
, 0xE05C)
356 CODE_MAP_MAC(OSRight
, kVK_RightCommand
)
357 CODE_MAP_X11(OSRight
, 0x0086)
358 CODE_MAP_ANDROID(OSRight
, 0x007E)
360 CODE_MAP_WIN(ShiftLeft
, 0x002A)
361 CODE_MAP_MAC(ShiftLeft
, kVK_Shift
)
362 CODE_MAP_X11(ShiftLeft
, 0x0032)
363 CODE_MAP_ANDROID(ShiftLeft
, 0x002A)
365 CODE_MAP_WIN(ShiftRight
, 0x0036)
366 CODE_MAP_MAC(ShiftRight
, kVK_RightShift
)
367 CODE_MAP_X11(ShiftRight
, 0x003E)
368 CODE_MAP_ANDROID(ShiftRight
, 0x0036)
370 CODE_MAP_WIN(Space
, 0x0039)
371 CODE_MAP_MAC(Space
, kVK_Space
)
372 CODE_MAP_X11(Space
, 0x0041)
373 CODE_MAP_ANDROID(Space
, 0x0039)
375 CODE_MAP_WIN(Tab
, 0x000F)
376 CODE_MAP_MAC(Tab
, kVK_Tab
)
377 CODE_MAP_X11(Tab
, 0x0017)
378 CODE_MAP_ANDROID(Tab
, 0x000F)
381 CODE_MAP_WIN(Convert
, 0x0079)
382 CODE_MAP_X11(Convert
, 0x0064)
383 CODE_MAP_ANDROID(Convert
, 0x005C)
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 CODE_MAP_X11(Lang1
, 0x0082)
389 CODE_MAP_ANDROID(Lang1
, 0x007A)
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 CODE_MAP_X11(Lang2
, 0x0083)
395 CODE_MAP_ANDROID(Lang2
, 0x007B)
397 CODE_MAP_WIN(KanaMode
, 0x0070)
398 CODE_MAP_X11(KanaMode
, 0x0065)
399 CODE_MAP_ANDROID(KanaMode
, 0x005D)
401 CODE_MAP_WIN(NonConvert
, 0x007B)
402 CODE_MAP_X11(NonConvert
, 0x0066)
403 CODE_MAP_ANDROID(NonConvert
, 0x005E)
405 // Control pad section
406 CODE_MAP_WIN(Delete
, 0xE053)
407 CODE_MAP_MAC(Delete
, kVK_ForwardDelete
)
408 CODE_MAP_X11(Delete
, 0x0077)
409 CODE_MAP_ANDROID(Delete
, 0x006F)
411 CODE_MAP_WIN(End
, 0xE04F)
412 CODE_MAP_MAC(End
, kVK_End
)
413 CODE_MAP_X11(End
, 0x0073)
414 CODE_MAP_ANDROID(End
, 0x006B)
416 CODE_MAP_MAC(Help
, kVK_Help
) // Insert key on PC keyboard
417 CODE_MAP_X11(Help
, 0x0092) // Help key on Sun keyboard
418 CODE_MAP_ANDROID(Help
, 0x008A) // Help key on Sun keyboard
420 CODE_MAP_WIN(Home
, 0xE047)
421 CODE_MAP_MAC(Home
, kVK_Home
)
422 CODE_MAP_X11(Home
, 0x006E)
423 CODE_MAP_ANDROID(Home
, 0x0066)
425 CODE_MAP_WIN(Insert
, 0xE052)
426 CODE_MAP_X11(Insert
, 0x0076)
427 CODE_MAP_ANDROID(Insert
, 0x006E)
429 CODE_MAP_WIN(PageDown
, 0xE051)
430 CODE_MAP_MAC(PageDown
, kVK_PageDown
)
431 CODE_MAP_X11(PageDown
, 0x0075)
432 CODE_MAP_ANDROID(PageDown
, 0x006D)
434 CODE_MAP_WIN(PageUp
, 0xE049)
435 CODE_MAP_MAC(PageUp
, kVK_PageUp
)
436 CODE_MAP_X11(PageUp
, 0x0070)
437 CODE_MAP_ANDROID(PageUp
, 0x0068)
440 CODE_MAP_WIN(ArrowDown
, 0xE050)
441 CODE_MAP_MAC(ArrowDown
, kVK_DownArrow
)
442 CODE_MAP_X11(ArrowDown
, 0x0074)
443 CODE_MAP_ANDROID(ArrowDown
, 0x006C)
445 CODE_MAP_WIN(ArrowLeft
, 0xE04B)
446 CODE_MAP_MAC(ArrowLeft
, kVK_LeftArrow
)
447 CODE_MAP_X11(ArrowLeft
, 0x0071)
448 CODE_MAP_ANDROID(ArrowLeft
, 0x0069)
450 CODE_MAP_WIN(ArrowRight
, 0xE04D)
451 CODE_MAP_MAC(ArrowRight
, kVK_RightArrow
)
452 CODE_MAP_X11(ArrowRight
, 0x0072)
453 CODE_MAP_ANDROID(ArrowRight
, 0x006A)
455 CODE_MAP_WIN(ArrowUp
, 0xE048)
456 CODE_MAP_MAC(ArrowUp
, kVK_UpArrow
)
457 CODE_MAP_X11(ArrowUp
, 0x006F)
458 CODE_MAP_ANDROID(ArrowUp
, 0x0067)
461 CODE_MAP_WIN(NumLock
, 0xE045) // MSDN says 0x0045, though...
462 CODE_MAP_MAC(NumLock
, kVK_ANSI_KeypadClear
)
463 CODE_MAP_X11(NumLock
, 0x004D)
464 CODE_MAP_ANDROID(NumLock
, 0x0045)
466 CODE_MAP_WIN(Numpad0
, 0x0052)
467 CODE_MAP_MAC(Numpad0
, kVK_ANSI_Keypad0
)
468 CODE_MAP_X11(Numpad0
, 0x005A)
469 CODE_MAP_ANDROID(Numpad0
, 0x0052)
471 CODE_MAP_WIN(Numpad1
, 0x004F)
472 CODE_MAP_MAC(Numpad1
, kVK_ANSI_Keypad1
)
473 CODE_MAP_X11(Numpad1
, 0x0057)
474 CODE_MAP_ANDROID(Numpad1
, 0x004F)
476 CODE_MAP_WIN(Numpad2
, 0x0050)
477 CODE_MAP_MAC(Numpad2
, kVK_ANSI_Keypad2
)
478 CODE_MAP_X11(Numpad2
, 0x0058)
479 CODE_MAP_ANDROID(Numpad2
, 0x0050)
481 CODE_MAP_WIN(Numpad3
, 0x0051)
482 CODE_MAP_MAC(Numpad3
, kVK_ANSI_Keypad3
)
483 CODE_MAP_X11(Numpad3
, 0x0059)
484 CODE_MAP_ANDROID(Numpad3
, 0x0051)
486 CODE_MAP_WIN(Numpad4
, 0x004B)
487 CODE_MAP_MAC(Numpad4
, kVK_ANSI_Keypad4
)
488 CODE_MAP_X11(Numpad4
, 0x0053)
489 CODE_MAP_ANDROID(Numpad4
, 0x004B)
491 CODE_MAP_WIN(Numpad5
, 0x004C)
492 CODE_MAP_MAC(Numpad5
, kVK_ANSI_Keypad5
)
493 CODE_MAP_X11(Numpad5
, 0x0054)
494 CODE_MAP_ANDROID(Numpad5
, 0x004C)
496 CODE_MAP_WIN(Numpad6
, 0x004D)
497 CODE_MAP_MAC(Numpad6
, kVK_ANSI_Keypad6
)
498 CODE_MAP_X11(Numpad6
, 0x0055)
499 CODE_MAP_ANDROID(Numpad6
, 0x004D)
501 CODE_MAP_WIN(Numpad7
, 0x0047)
502 CODE_MAP_MAC(Numpad7
, kVK_ANSI_Keypad7
)
503 CODE_MAP_X11(Numpad7
, 0x004F)
504 CODE_MAP_ANDROID(Numpad7
, 0x0047)
506 CODE_MAP_WIN(Numpad8
, 0x0048)
507 CODE_MAP_MAC(Numpad8
, kVK_ANSI_Keypad8
)
508 CODE_MAP_X11(Numpad8
, 0x0050)
509 CODE_MAP_ANDROID(Numpad8
, 0x0048)
511 CODE_MAP_WIN(Numpad9
, 0x0049)
512 CODE_MAP_MAC(Numpad9
, kVK_ANSI_Keypad9
)
513 CODE_MAP_X11(Numpad9
, 0x0051)
514 CODE_MAP_ANDROID(Numpad9
, 0x0049)
516 CODE_MAP_WIN(NumpadAdd
, 0x004E)
517 CODE_MAP_MAC(NumpadAdd
, kVK_ANSI_KeypadPlus
)
518 CODE_MAP_X11(NumpadAdd
, 0x0056)
519 CODE_MAP_ANDROID(NumpadAdd
, 0x004E)
521 CODE_MAP_WIN(NumpadComma
, 0x007E)
522 CODE_MAP_MAC(NumpadComma
, kVK_JIS_KeypadComma
)
523 CODE_MAP_X11(NumpadComma
, 0x0081)
524 CODE_MAP_ANDROID(NumpadComma
, 0x0079)
526 CODE_MAP_WIN(NumpadDecimal
, 0x0053)
527 CODE_MAP_MAC(NumpadDecimal
, kVK_ANSI_KeypadDecimal
)
528 CODE_MAP_X11(NumpadDecimal
, 0x005B)
529 CODE_MAP_ANDROID(NumpadDecimal
, 0x0053)
531 CODE_MAP_WIN(NumpadDivide
, 0xE035)
532 CODE_MAP_MAC(NumpadDivide
, kVK_ANSI_KeypadDivide
)
533 CODE_MAP_X11(NumpadDivide
, 0x006A)
534 CODE_MAP_ANDROID(NumpadDivide
, 0x0062)
536 CODE_MAP_WIN(NumpadEnter
, 0xE01C)
537 CODE_MAP_MAC(NumpadEnter
, kVK_ANSI_KeypadEnter
)
538 CODE_MAP_MAC(NumpadEnter
, kVK_Powerbook_KeypadEnter
)
539 CODE_MAP_X11(NumpadEnter
, 0x0068)
540 CODE_MAP_ANDROID(NumpadEnter
, 0x0060)
542 CODE_MAP_WIN(NumpadEqual
, 0x0059)
543 CODE_MAP_MAC(NumpadEqual
, kVK_ANSI_KeypadEquals
)
544 CODE_MAP_X11(NumpadEqual
, 0x007D)
545 CODE_MAP_ANDROID(NumpadEqual
, 0x0075)
547 CODE_MAP_WIN(NumpadMultiply
, 0x0037)
548 CODE_MAP_MAC(NumpadMultiply
, kVK_ANSI_KeypadMultiply
)
549 CODE_MAP_X11(NumpadMultiply
, 0x003F)
550 CODE_MAP_ANDROID(NumpadMultiply
, 0x0037)
552 CODE_MAP_WIN(NumpadSubtract
, 0x004A)
553 CODE_MAP_MAC(NumpadSubtract
, kVK_ANSI_KeypadMinus
)
554 CODE_MAP_X11(NumpadSubtract
, 0x0052)
555 CODE_MAP_ANDROID(NumpadSubtract
, 0x004A)
558 CODE_MAP_WIN(Escape
, 0x0001)
559 CODE_MAP_MAC(Escape
, kVK_Escape
)
560 CODE_MAP_X11(Escape
, 0x0009)
561 CODE_MAP_ANDROID(Escape
, 0x0001)
563 CODE_MAP_WIN(F1
, 0x003B)
564 CODE_MAP_MAC(F1
, kVK_F1
)
565 CODE_MAP_X11(F1
, 0x0043)
566 CODE_MAP_ANDROID(F1
, 0x003B)
568 CODE_MAP_WIN(F2
, 0x003C)
569 CODE_MAP_MAC(F2
, kVK_F2
)
570 CODE_MAP_X11(F2
, 0x0044)
571 CODE_MAP_ANDROID(F2
, 0x003C)
573 CODE_MAP_WIN(F3
, 0x003D)
574 CODE_MAP_MAC(F3
, kVK_F3
)
575 CODE_MAP_X11(F3
, 0x0045)
576 CODE_MAP_ANDROID(F3
, 0x003D)
578 CODE_MAP_WIN(F4
, 0x003E)
579 CODE_MAP_MAC(F4
, kVK_F4
)
580 CODE_MAP_X11(F4
, 0x0046)
581 CODE_MAP_ANDROID(F4
, 0x003E)
583 CODE_MAP_WIN(F5
, 0x003F)
584 CODE_MAP_MAC(F5
, kVK_F5
)
585 CODE_MAP_X11(F5
, 0x0047)
586 CODE_MAP_ANDROID(F5
, 0x003F)
588 CODE_MAP_WIN(F6
, 0x0040)
589 CODE_MAP_MAC(F6
, kVK_F6
)
590 CODE_MAP_X11(F6
, 0x0048)
591 CODE_MAP_ANDROID(F6
, 0x0040)
593 CODE_MAP_WIN(F7
, 0x0041)
594 CODE_MAP_MAC(F7
, kVK_F7
)
595 CODE_MAP_X11(F7
, 0x0049)
596 CODE_MAP_ANDROID(F7
, 0x0041)
598 CODE_MAP_WIN(F8
, 0x0042)
599 CODE_MAP_MAC(F8
, kVK_F8
)
600 CODE_MAP_X11(F8
, 0x004A)
601 CODE_MAP_ANDROID(F8
, 0x0042)
603 CODE_MAP_WIN(F9
, 0x0043)
604 CODE_MAP_MAC(F9
, kVK_F9
)
605 CODE_MAP_X11(F9
, 0x004B)
606 CODE_MAP_ANDROID(F9
, 0x0043)
608 CODE_MAP_WIN(F10
, 0x0044)
609 CODE_MAP_MAC(F10
, kVK_F10
)
610 CODE_MAP_X11(F10
, 0x004C)
611 CODE_MAP_ANDROID(F10
, 0x0044)
613 CODE_MAP_WIN(F11
, 0x0057)
614 CODE_MAP_MAC(F11
, kVK_F11
)
615 CODE_MAP_X11(F11
, 0x005F)
616 CODE_MAP_ANDROID(F11
, 0x0057)
618 CODE_MAP_WIN(F12
, 0x0058)
619 CODE_MAP_MAC(F12
, kVK_F12
)
620 CODE_MAP_X11(F12
, 0x0060)
621 CODE_MAP_ANDROID(F12
, 0x0058)
623 CODE_MAP_WIN(F13
, 0x0064)
624 CODE_MAP_MAC(F13
, kVK_F13
) // PrintScreen on PC keyboard
625 CODE_MAP_X11(F13
, 0x00BF)
626 CODE_MAP_ANDROID(F13
, 0x00B7)
628 CODE_MAP_WIN(F14
, 0x0065)
629 CODE_MAP_MAC(F14
, kVK_F14
) // ScrollLock on PC keyboard
630 CODE_MAP_X11(F14
, 0x00C0)
631 CODE_MAP_ANDROID(F14
, 0x00B8)
633 CODE_MAP_WIN(F15
, 0x0066)
634 CODE_MAP_MAC(F15
, kVK_F15
) // Pause on PC keyboard
635 CODE_MAP_X11(F15
, 0x00C1)
636 CODE_MAP_ANDROID(F15
, 0x00B9)
638 CODE_MAP_WIN(F16
, 0x0067)
639 CODE_MAP_MAC(F16
, kVK_F16
)
640 CODE_MAP_X11(F16
, 0x00C2)
641 CODE_MAP_ANDROID(F16
, 0x00BA)
643 CODE_MAP_WIN(F17
, 0x0068)
644 CODE_MAP_MAC(F17
, kVK_F17
)
645 CODE_MAP_X11(F17
, 0x00C3)
646 CODE_MAP_ANDROID(F17
, 0x00BB)
648 CODE_MAP_WIN(F18
, 0x0069)
649 CODE_MAP_MAC(F18
, kVK_F18
)
650 CODE_MAP_X11(F18
, 0x00C4)
651 CODE_MAP_ANDROID(F18
, 0x00BC)
653 CODE_MAP_WIN(F19
, 0x006A)
654 CODE_MAP_MAC(F19
, kVK_F19
)
655 CODE_MAP_X11(F19
, 0x00C5)
656 CODE_MAP_ANDROID(F19
, 0x00BD)
658 CODE_MAP_WIN(F20
, 0x006B)
659 CODE_MAP_MAC(F20
, kVK_F20
)
660 CODE_MAP_X11(F20
, 0x00C6)
661 CODE_MAP_ANDROID(F20
, 0x00BE)
663 CODE_MAP_WIN(F21
, 0x006C)
664 CODE_MAP_X11(F21
, 0x00C7)
665 CODE_MAP_ANDROID(F21
, 0x00BF)
667 CODE_MAP_WIN(F22
, 0x006D)
668 CODE_MAP_X11(F22
, 0x00C8)
669 CODE_MAP_ANDROID(F22
, 0x00C0)
671 CODE_MAP_WIN(F23
, 0x006E)
672 CODE_MAP_X11(F23
, 0x00C9)
673 CODE_MAP_ANDROID(F23
, 0x00C1)
675 CODE_MAP_WIN(F24
, 0x0076)
676 CODE_MAP_X11(F24
, 0x00CA)
677 CODE_MAP_ANDROID(F24
, 0x00C2)
679 CODE_MAP_MAC(Fn
, kVK_Function
) // not available?
680 CODE_MAP_ANDROID(Fn
, 0x01D0)
682 CODE_MAP_WIN(PrintScreen
, 0xE037)
683 CODE_MAP_WIN(PrintScreen
, 0x0054) // Alt + PrintScreen
684 CODE_MAP_X11(PrintScreen
, 0x006B)
685 CODE_MAP_ANDROID(PrintScreen
, 0x0063)
687 CODE_MAP_WIN(ScrollLock
, 0x0046)
688 CODE_MAP_X11(ScrollLock
, 0x004E)
689 CODE_MAP_ANDROID(ScrollLock
, 0x0046)
691 CODE_MAP_WIN(Pause
, 0x0045)
692 CODE_MAP_WIN(Pause
, 0xE046) // Ctrl + Pause
693 CODE_MAP_X11(Pause
, 0x007F)
694 CODE_MAP_ANDROID(Pause
, 0x0077)
697 CODE_MAP_WIN(BrowserBack
, 0xE06A)
698 CODE_MAP_X11(BrowserBack
, 0x00A6)
699 CODE_MAP_ANDROID(BrowserBack
, 0x009E)
701 CODE_MAP_WIN(BrowserFavorites
, 0xE066)
702 CODE_MAP_X11(BrowserFavorites
, 0x00A4)
703 CODE_MAP_ANDROID(BrowserFavorites
, 0x009C)
705 CODE_MAP_WIN(BrowserForward
, 0xE069)
706 CODE_MAP_X11(BrowserForward
, 0x00A7)
707 CODE_MAP_ANDROID(BrowserForward
, 0x009F)
709 CODE_MAP_WIN(BrowserHome
, 0xE032)
710 CODE_MAP_X11(BrowserHome
, 0x00B4)
711 // CODE_MAP_ANDROID(BrowserHome) // not available? works as Home key.
713 CODE_MAP_WIN(BrowserRefresh
, 0xE067)
714 CODE_MAP_X11(BrowserRefresh
, 0x00B5)
715 CODE_MAP_ANDROID(BrowserRefresh
, 0x00AD)
717 CODE_MAP_WIN(BrowserSearch
, 0xE065)
718 CODE_MAP_X11(BrowserSearch
, 0x00E1)
719 CODE_MAP_ANDROID(BrowserSearch
, 0x00D9)
721 CODE_MAP_WIN(BrowserStop
, 0xE068)
722 CODE_MAP_X11(BrowserStop
, 0x0088)
723 CODE_MAP_ANDROID(BrowserStop
, 0x0080)
725 // CODE_MAP_WIN(Eject) // not available?
726 // CODE_MAP_MAC(Eject) // not available?
727 CODE_MAP_X11(Eject
, 0x00A9)
728 CODE_MAP_ANDROID(Eject
, 0x00A1)
730 CODE_MAP_WIN(LaunchApp1
, 0xE06B)
731 CODE_MAP_X11(LaunchApp1
, 0x0098)
732 CODE_MAP_ANDROID(LaunchApp1
, 0x0090)
734 CODE_MAP_WIN(LaunchApp2
, 0xE021)
735 CODE_MAP_X11(LaunchApp2
, 0x0094)
736 // CODE_MAP_ANDROID(LaunchApp2) // not available?
738 CODE_MAP_WIN(LaunchMail
, 0xE06C)
739 CODE_MAP_X11(LaunchMail
, 0x00A3)
740 // CODE_MAP_ANDROID(LaunchMail) // not available?
742 CODE_MAP_WIN(MediaPlayPause
, 0xE022)
743 CODE_MAP_X11(MediaPlayPause
, 0x00AC)
744 CODE_MAP_ANDROID(MediaPlayPause
, 0x00A4)
746 CODE_MAP_WIN(MediaSelect
, 0xE06D)
747 CODE_MAP_X11(MediaSelect
, 0x00B3)
748 // CODE_MAP_ANDROID(MediaSelect) // not available?
750 CODE_MAP_WIN(MediaStop
, 0xE024)
751 CODE_MAP_X11(MediaStop
, 0x00AE)
752 CODE_MAP_ANDROID(MediaStop
, 0x00A6)
754 CODE_MAP_WIN(MediaTrackNext
, 0xE019)
755 CODE_MAP_X11(MediaTrackNext
, 0x00AB)
756 CODE_MAP_ANDROID(MediaTrackNext
, 0x00A3)
758 CODE_MAP_WIN(MediaTrackPrevious
, 0xE010)
759 CODE_MAP_X11(MediaTrackPrevious
, 0x00AD)
760 CODE_MAP_ANDROID(MediaTrackPrevious
, 0x00A5)
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)
767 // CODE_MAP_WIN(Sleep) // not available?
768 // CODE_MAP_X11(Sleep) // not available?
769 CODE_MAP_ANDROID(Sleep
, 0x008E)
771 CODE_MAP_WIN(VolumeDown
, 0xE02E)
772 CODE_MAP_MAC(VolumeDown
, kVK_VolumeDown
) // not available?
773 CODE_MAP_X11(VolumeDown
, 0x007A)
774 CODE_MAP_ANDROID(VolumeDown
, 0x0072)
776 CODE_MAP_WIN(VolumeMute
, 0xE020)
777 CODE_MAP_MAC(VolumeMute
, kVK_Mute
) // not available?
778 CODE_MAP_X11(VolumeMute
, 0x0079)
779 CODE_MAP_ANDROID(VolumeMute
, 0x0071)
781 CODE_MAP_WIN(VolumeUp
, 0xE030)
782 CODE_MAP_MAC(VolumeUp
, kVK_VolumeUp
) // not available?
783 CODE_MAP_X11(VolumeUp
, 0x007B)
784 CODE_MAP_ANDROID(VolumeUp
, 0x0073) // side of body, not on keyboard
786 // CODE_MAP_WIN(WakeUp) // not available?
787 CODE_MAP_X11(WakeUp
, 0x0097)
788 CODE_MAP_ANDROID(WakeUp
, 0x008F)
790 // Legacy editing keys
791 CODE_MAP_X11(Again
, 0x0089) // Again key on Sun keyboard
792 CODE_MAP_ANDROID(Again
, 0x0081) // Again key on Sun keyboard
794 CODE_MAP_X11(Copy
, 0x008D) // Copy key on Sun keyboard
795 CODE_MAP_ANDROID(Copy
, 0x0085) // Copy key on Sun keyboard
797 CODE_MAP_X11(Cut
, 0x0091) // Cut key on Sun keyboard
798 CODE_MAP_ANDROID(Cut
, 0x0089) // Cut key on Sun keyboard
800 CODE_MAP_X11(Find
, 0x0090) // Find key on Sun keyboard
801 CODE_MAP_ANDROID(Find
, 0x0088) // Find key on Sun keyboard
803 CODE_MAP_X11(Open
, 0x008E) // Open key on Sun keyboard
804 CODE_MAP_ANDROID(Open
, 0x0086) // Open key on Sun keyboard
806 CODE_MAP_X11(Paste
, 0x008F) // Paste key on Sun keyboard
807 CODE_MAP_ANDROID(Paste
, 0x0087) // Paste key on Sun keyboard
809 CODE_MAP_X11(Props
, 0x008A) // Props key on Sun keyboard
810 CODE_MAP_ANDROID(Props
, 0x0082) // Props key on Sun keyboard
812 CODE_MAP_X11(Select
, 0x008C) // Front key on Sun keyboard
813 CODE_MAP_ANDROID(Select
, 0x0084) // Front key on Sun keyboard
815 CODE_MAP_X11(Undo
, 0x008B) // Undo key on Sun keyboard
816 CODE_MAP_ANDROID(Undo
, 0x0083) // Undo key on Sun keyboard
821 #undef CODE_MAP_ANDROID