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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 CODE_MAP_X11(Tab, 0x0017) 378 CODE_MAP_ANDROID(Tab, 0x000F) 379 380 // IME keys 381 CODE_MAP_WIN(Convert, 0x0079) 382 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 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 CODE_MAP_X11(Lang2, 0x0083) 395 CODE_MAP_ANDROID(Lang2, 0x007B) 396 397 CODE_MAP_WIN(KanaMode, 0x0070) 398 CODE_MAP_X11(KanaMode, 0x0065) 399 CODE_MAP_ANDROID(KanaMode, 0x005D) 400 401 CODE_MAP_WIN(NonConvert, 0x007B) 402 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 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 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 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 CODE_MAP_X11(Home, 0x006E) 423 CODE_MAP_ANDROID(Home, 0x0066) 424 425 CODE_MAP_WIN(Insert, 0xE052) 426 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 CODE_MAP_X11(F20, 0x00C6) 661 CODE_MAP_ANDROID(F20, 0x00BE) 662 663 CODE_MAP_WIN(F21, 0x006C) 664 CODE_MAP_X11(F21, 0x00C7) 665 CODE_MAP_ANDROID(F21, 0x00BF) 666 667 CODE_MAP_WIN(F22, 0x006D) 668 CODE_MAP_X11(F22, 0x00C8) 669 CODE_MAP_ANDROID(F22, 0x00C0) 670 671 CODE_MAP_WIN(F23, 0x006E) 672 CODE_MAP_X11(F23, 0x00C9) 673 CODE_MAP_ANDROID(F23, 0x00C1) 674 675 CODE_MAP_WIN(F24, 0x0076) 676 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 CODE_MAP_X11(PrintScreen, 0x006B) 685 CODE_MAP_ANDROID(PrintScreen, 0x0063) 686 687 CODE_MAP_WIN(ScrollLock, 0x0046) 688 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 CODE_MAP_X11(Pause, 0x007F) 694 CODE_MAP_ANDROID(Pause, 0x0077) 695 696 // Media keys 697 CODE_MAP_WIN(BrowserBack, 0xE06A) 698 CODE_MAP_X11(BrowserBack, 0x00A6) 699 CODE_MAP_ANDROID(BrowserBack, 0x009E) 700 701 CODE_MAP_WIN(BrowserFavorites, 0xE066) 702 CODE_MAP_X11(BrowserFavorites, 0x00A4) 703 CODE_MAP_ANDROID(BrowserFavorites, 0x009C) 704 705 CODE_MAP_WIN(BrowserForward, 0xE069) 706 CODE_MAP_X11(BrowserForward, 0x00A7) 707 CODE_MAP_ANDROID(BrowserForward, 0x009F) 708 709 CODE_MAP_WIN(BrowserHome, 0xE032) 710 CODE_MAP_X11(BrowserHome, 0x00B4) 711 // CODE_MAP_ANDROID(BrowserHome) // not available? works as Home key. 712 713 CODE_MAP_WIN(BrowserRefresh, 0xE067) 714 CODE_MAP_X11(BrowserRefresh, 0x00B5) 715 CODE_MAP_ANDROID(BrowserRefresh, 0x00AD) 716 717 CODE_MAP_WIN(BrowserSearch, 0xE065) 718 CODE_MAP_X11(BrowserSearch, 0x00E1) 719 CODE_MAP_ANDROID(BrowserSearch, 0x00D9) 720 721 CODE_MAP_WIN(BrowserStop, 0xE068) 722 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 CODE_MAP_X11(Eject, 0x00A9) 728 CODE_MAP_ANDROID(Eject, 0x00A1) 729 730 CODE_MAP_WIN(LaunchApp1, 0xE06B) 731 CODE_MAP_X11(LaunchApp1, 0x0098) 732 CODE_MAP_ANDROID(LaunchApp1, 0x0090) 733 734 CODE_MAP_WIN(LaunchApp2, 0xE021) 735 CODE_MAP_X11(LaunchApp2, 0x0094) 736 // CODE_MAP_ANDROID(LaunchApp2) // not available? 737 738 CODE_MAP_WIN(LaunchMail, 0xE06C) 739 CODE_MAP_X11(LaunchMail, 0x00A3) 740 // CODE_MAP_ANDROID(LaunchMail) // not available? 741 742 CODE_MAP_WIN(MediaPlayPause, 0xE022) 743 CODE_MAP_X11(MediaPlayPause, 0x00AC) 744 CODE_MAP_ANDROID(MediaPlayPause, 0x00A4) 745 746 CODE_MAP_WIN(MediaSelect, 0xE06D) 747 CODE_MAP_X11(MediaSelect, 0x00B3) 748 // CODE_MAP_ANDROID(MediaSelect) // not available? 749 750 CODE_MAP_WIN(MediaStop, 0xE024) 751 CODE_MAP_X11(MediaStop, 0x00AE) 752 CODE_MAP_ANDROID(MediaStop, 0x00A6) 753 754 CODE_MAP_WIN(MediaTrackNext, 0xE019) 755 CODE_MAP_X11(MediaTrackNext, 0x00AB) 756 CODE_MAP_ANDROID(MediaTrackNext, 0x00A3) 757 758 CODE_MAP_WIN(MediaTrackPrevious, 0xE010) 759 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 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 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 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 CODE_MAP_X11(WakeUp, 0x0097) 788 CODE_MAP_ANDROID(WakeUp, 0x008F) 789 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 793 794 CODE_MAP_X11(Copy, 0x008D) // Copy key on Sun keyboard 795 CODE_MAP_ANDROID(Copy, 0x0085) // Copy key on Sun keyboard 796 797 CODE_MAP_X11(Cut, 0x0091) // Cut key on Sun keyboard 798 CODE_MAP_ANDROID(Cut, 0x0089) // Cut key on Sun keyboard 799 800 CODE_MAP_X11(Find, 0x0090) // Find key on Sun keyboard 801 CODE_MAP_ANDROID(Find, 0x0088) // Find key on Sun keyboard 802 803 CODE_MAP_X11(Open, 0x008E) // Open key on Sun keyboard 804 CODE_MAP_ANDROID(Open, 0x0086) // Open key on Sun keyboard 805 806 CODE_MAP_X11(Paste, 0x008F) // Paste key on Sun keyboard 807 CODE_MAP_ANDROID(Paste, 0x0087) // Paste key on Sun keyboard 808 809 CODE_MAP_X11(Props, 0x008A) // Props key on Sun keyboard 810 CODE_MAP_ANDROID(Props, 0x0082) // Props key on Sun keyboard 811 812 CODE_MAP_X11(Select, 0x008C) // Front key on Sun keyboard 813 CODE_MAP_ANDROID(Select, 0x0084) // Front key on Sun keyboard 814 815 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 822