/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
/**
* This header file defines simple code mapping between native scancode or
* something and DOM code name index.
* You must define NS_NATIVE_KEY_TO_DOM_CODE_NAME_INDEX macro before include
* this.
*
* It must have two arguments, (aNativeKey, aCodeNameIndex).
* aNativeKey is a scancode value or something (depends on the platform).
* aCodeNameIndex is the widget::CodeNameIndex value.
*/
// Windows
#define CODE_MAP_WIN(aCPPCodeName, aNativeKey)
// Mac OS X
#define CODE_MAP_MAC(aCPPCodeName, aNativeKey)
// GTK and Qt on Linux
#define CODE_MAP_X11(aCPPCodeName, aNativeKey)
// Android
#define CODE_MAP_ANDROID(aCPPCodeName, aNativeKey)
#if defined(XP_WIN)
# undef CODE_MAP_WIN
// aNativeKey is scan code
# define CODE_MAP_WIN(aCPPCodeName, aNativeKey) \
NS_NATIVE_KEY_TO_DOM_CODE_NAME_INDEX(aNativeKey, \
CODE_NAME_INDEX_
##aCPPCodeName)
#elif defined(XP_MACOSX)
# undef CODE_MAP_MAC
// aNativeKey is key code starting with kVK_.
# define CODE_MAP_MAC(aCPPCodeName, aNativeKey) \
NS_NATIVE_KEY_TO_DOM_CODE_NAME_INDEX(aNativeKey, \
CODE_NAME_INDEX_
##aCPPCodeName)
#elif defined(MOZ_WIDGET_GTK)
# undef CODE_MAP_X11
// aNativeKey is hardware_keycode of GDKEvent or nativeScanCode of QKeyEvent.
# define CODE_MAP_X11(aCPPCodeName, aNativeKey) \
NS_NATIVE_KEY_TO_DOM_CODE_NAME_INDEX(aNativeKey, \
CODE_NAME_INDEX_
##aCPPCodeName)
#elif defined(ANDROID)
# undef CODE_MAP_ANDROID
// aNativeKey is scan code
# define CODE_MAP_ANDROID(aCPPCodeName, aNativeKey) \
NS_NATIVE_KEY_TO_DOM_CODE_NAME_INDEX(aNativeKey, \
CODE_NAME_INDEX_
##aCPPCodeName)
#endif
// Writing system keys
CODE_MAP_WIN(Backquote,
0x0029)
CODE_MAP_MAC(Backquote, kVK_ANSI_Grave)
CODE_MAP_X11(Backquote,
0x0031)
CODE_MAP_ANDROID(Backquote,
0x0029)
CODE_MAP_WIN(Backslash,
0x002B)
CODE_MAP_MAC(Backslash, kVK_ANSI_Backslash)
CODE_MAP_X11(Backslash,
0x0033)
CODE_MAP_ANDROID(Backslash,
0x002B)
CODE_MAP_WIN(Backspace,
0x000E)
CODE_MAP_MAC(Backspace, kVK_Delete)
CODE_MAP_X11(Backspace,
0x0016)
CODE_MAP_ANDROID(Backspace,
0x000E)
CODE_MAP_WIN(BracketLeft,
0x001A)
CODE_MAP_MAC(BracketLeft, kVK_ANSI_LeftBracket)
CODE_MAP_X11(BracketLeft,
0x0022)
CODE_MAP_ANDROID(BracketLeft,
0x001A)
CODE_MAP_WIN(BracketRight,
0x001B)
CODE_MAP_MAC(BracketRight, kVK_ANSI_RightBracket)
CODE_MAP_X11(BracketRight,
0x0023)
CODE_MAP_ANDROID(BracketRight,
0x001B)
CODE_MAP_WIN(Comma,
0x0033)
CODE_MAP_MAC(Comma, kVK_ANSI_Comma)
CODE_MAP_X11(Comma,
0x003B)
CODE_MAP_ANDROID(Comma,
0x00033)
CODE_MAP_WIN(Digit0,
0x000B)
CODE_MAP_MAC(Digit0, kVK_ANSI_0)
CODE_MAP_X11(Digit0,
0x0013)
CODE_MAP_ANDROID(Digit0,
0x000B)
CODE_MAP_WIN(Digit1,
0x0002)
CODE_MAP_MAC(Digit1, kVK_ANSI_1)
CODE_MAP_X11(Digit1,
0x000A)
CODE_MAP_ANDROID(Digit1,
0x0002)
CODE_MAP_WIN(Digit2,
0x0003)
CODE_MAP_MAC(Digit2, kVK_ANSI_2)
CODE_MAP_X11(Digit2,
0x000B)
CODE_MAP_ANDROID(Digit2,
0x0003)
CODE_MAP_WIN(Digit3,
0x0004)
CODE_MAP_MAC(Digit3, kVK_ANSI_3)
CODE_MAP_X11(Digit3,
0x000C)
CODE_MAP_ANDROID(Digit3,
0x0004)
CODE_MAP_WIN(Digit4,
0x0005)
CODE_MAP_MAC(Digit4, kVK_ANSI_4)
CODE_MAP_X11(Digit4,
0x000D)
CODE_MAP_ANDROID(Digit4,
0x0005)
CODE_MAP_WIN(Digit5,
0x0006)
CODE_MAP_MAC(Digit5, kVK_ANSI_5)
CODE_MAP_X11(Digit5,
0x000E)
CODE_MAP_ANDROID(Digit5,
0x0006)
CODE_MAP_WIN(Digit6,
0x0007)
CODE_MAP_MAC(Digit6, kVK_ANSI_6)
CODE_MAP_X11(Digit6,
0x000F)
CODE_MAP_ANDROID(Digit6,
0x0007)
CODE_MAP_WIN(Digit7,
0x0008)
CODE_MAP_MAC(Digit7, kVK_ANSI_7)
CODE_MAP_X11(Digit7,
0x0010)
CODE_MAP_ANDROID(Digit7,
0x0008)
CODE_MAP_WIN(Digit8,
0x0009)
CODE_MAP_MAC(Digit8, kVK_ANSI_8)
CODE_MAP_X11(Digit8,
0x0011)
CODE_MAP_ANDROID(Digit8,
0x0009)
CODE_MAP_WIN(Digit9,
0x000A)
CODE_MAP_MAC(Digit9, kVK_ANSI_9)
CODE_MAP_X11(Digit9,
0x0012)
CODE_MAP_ANDROID(Digit9,
0x000A)
CODE_MAP_WIN(Equal,
0x000D)
CODE_MAP_MAC(Equal, kVK_ANSI_Equal)
CODE_MAP_X11(Equal,
0x0015)
CODE_MAP_ANDROID(Equal,
0x000D)
CODE_MAP_WIN(IntlBackslash,
0x0056)
CODE_MAP_MAC(IntlBackslash, kVK_ISO_Section)
CODE_MAP_X11(IntlBackslash,
0x005E)
CODE_MAP_ANDROID(IntlBackslash,
0x0056)
// Win: IntlHash's scan code is shared with "Backslash" key.
// Mac: IntlHash's virtual key code is shared with "Backslash" key.
// X11: IntlHash's scan code is shared with "Backslash" key.
// Android: IntlHash's scan code is shared with "Backslash" key.
CODE_MAP_WIN(IntlRo,
0x0073)
CODE_MAP_MAC(IntlRo, kVK_JIS_Underscore)
CODE_MAP_X11(IntlRo,
0x0061)
CODE_MAP_ANDROID(IntlRo,
0x0059)
CODE_MAP_WIN(IntlYen,
0x007D)
CODE_MAP_MAC(IntlYen, kVK_JIS_Yen)
CODE_MAP_X11(IntlYen,
0x0084)
CODE_MAP_ANDROID(IntlYen,
0x007C)
CODE_MAP_WIN(KeyA,
0x001E)
CODE_MAP_MAC(KeyA, kVK_ANSI_A)
CODE_MAP_X11(KeyA,
0x0026)
CODE_MAP_ANDROID(KeyA,
0x001E)
CODE_MAP_WIN(KeyB,
0x0030)
CODE_MAP_MAC(KeyB, kVK_ANSI_B)
CODE_MAP_X11(KeyB,
0x0038)
CODE_MAP_ANDROID(KeyB,
0x0030)
CODE_MAP_WIN(KeyC,
0x002E)
CODE_MAP_MAC(KeyC, kVK_ANSI_C)
CODE_MAP_X11(KeyC,
0x0036)
CODE_MAP_ANDROID(KeyC,
0x002E)
CODE_MAP_WIN(KeyD,
0x0020)
CODE_MAP_MAC(KeyD, kVK_ANSI_D)
CODE_MAP_X11(KeyD,
0x0028)
CODE_MAP_ANDROID(KeyD,
0x0020)
CODE_MAP_WIN(KeyE,
0x0012)
CODE_MAP_MAC(KeyE, kVK_ANSI_E)
CODE_MAP_X11(KeyE,
0x001A)
CODE_MAP_ANDROID(KeyE,
0x0012)
CODE_MAP_WIN(KeyF,
0x0021)
CODE_MAP_MAC(KeyF, kVK_ANSI_F)
CODE_MAP_X11(KeyF,
0x0029)
CODE_MAP_ANDROID(KeyF,
0x0021)
CODE_MAP_WIN(KeyG,
0x0022)
CODE_MAP_MAC(KeyG, kVK_ANSI_G)
CODE_MAP_X11(KeyG,
0x002A)
CODE_MAP_ANDROID(KeyG,
0x0022)
CODE_MAP_WIN(KeyH,
0x0023)
CODE_MAP_MAC(KeyH, kVK_ANSI_H)
CODE_MAP_X11(KeyH,
0x002B)
CODE_MAP_ANDROID(KeyH,
0x0023)
CODE_MAP_WIN(KeyI,
0x0017)
CODE_MAP_MAC(KeyI, kVK_ANSI_I)
CODE_MAP_X11(KeyI,
0x001F)
CODE_MAP_ANDROID(KeyI,
0x0017)
CODE_MAP_WIN(KeyJ,
0x0024)
CODE_MAP_MAC(KeyJ, kVK_ANSI_J)
CODE_MAP_X11(KeyJ,
0x002C)
CODE_MAP_ANDROID(KeyJ,
0x0024)
CODE_MAP_WIN(KeyK,
0x0025)
CODE_MAP_MAC(KeyK, kVK_ANSI_K)
CODE_MAP_X11(KeyK,
0x002D)
CODE_MAP_ANDROID(KeyK,
0x0025)
CODE_MAP_WIN(KeyL,
0x0026)
CODE_MAP_MAC(KeyL, kVK_ANSI_L)
CODE_MAP_X11(KeyL,
0x002E)
CODE_MAP_ANDROID(KeyL,
0x0026)
CODE_MAP_WIN(KeyM,
0x0032)
CODE_MAP_MAC(KeyM, kVK_ANSI_M)
CODE_MAP_X11(KeyM,
0x003A)
CODE_MAP_ANDROID(KeyM,
0x0032)
CODE_MAP_WIN(KeyN,
0x0031)
CODE_MAP_MAC(KeyN, kVK_ANSI_N)
CODE_MAP_X11(KeyN,
0x0039)
CODE_MAP_ANDROID(KeyN,
0x0031)
CODE_MAP_WIN(KeyO,
0x0018)
CODE_MAP_MAC(KeyO, kVK_ANSI_O)
CODE_MAP_X11(KeyO,
0x0020)
CODE_MAP_ANDROID(KeyO,
0x0018)
CODE_MAP_WIN(KeyP,
0x0019)
CODE_MAP_MAC(KeyP, kVK_ANSI_P)
CODE_MAP_X11(KeyP,
0x0021)
CODE_MAP_ANDROID(KeyP,
0x0019)
CODE_MAP_WIN(KeyQ,
0x0010)
CODE_MAP_MAC(KeyQ, kVK_ANSI_Q)
CODE_MAP_X11(KeyQ,
0x0018)
CODE_MAP_ANDROID(KeyQ,
0x0010)
CODE_MAP_WIN(KeyR,
0x0013)
CODE_MAP_MAC(KeyR, kVK_ANSI_R)
CODE_MAP_X11(KeyR,
0x001B)
CODE_MAP_ANDROID(KeyR,
0x0013)
CODE_MAP_WIN(KeyS,
0x001F)
CODE_MAP_MAC(KeyS, kVK_ANSI_S)
CODE_MAP_X11(KeyS,
0x0027)
CODE_MAP_ANDROID(KeyS,
0x001F)
CODE_MAP_WIN(KeyT,
0x0014)
CODE_MAP_MAC(KeyT, kVK_ANSI_T)
CODE_MAP_X11(KeyT,
0x001C)
CODE_MAP_ANDROID(KeyT,
0x0014)
CODE_MAP_WIN(KeyU,
0x0016)
CODE_MAP_MAC(KeyU, kVK_ANSI_U)
CODE_MAP_X11(KeyU,
0x001E)
CODE_MAP_ANDROID(KeyU,
0x0016)
CODE_MAP_WIN(KeyV,
0x002F)
CODE_MAP_MAC(KeyV, kVK_ANSI_V)
CODE_MAP_X11(KeyV,
0x0037)
CODE_MAP_ANDROID(KeyV,
0x002F)
CODE_MAP_WIN(KeyW,
0x0011)
CODE_MAP_MAC(KeyW, kVK_ANSI_W)
CODE_MAP_X11(KeyW,
0x0019)
CODE_MAP_ANDROID(KeyW,
0x0011)
CODE_MAP_WIN(KeyX,
0x002D)
CODE_MAP_MAC(KeyX, kVK_ANSI_X)
CODE_MAP_X11(KeyX,
0x0035)
CODE_MAP_ANDROID(KeyX,
0x002D)
CODE_MAP_WIN(KeyY,
0x0015)
CODE_MAP_MAC(KeyY, kVK_ANSI_Y)
CODE_MAP_X11(KeyY,
0x001D)
CODE_MAP_ANDROID(KeyY,
0x0015)
CODE_MAP_WIN(KeyZ,
0x002C)
CODE_MAP_MAC(KeyZ, kVK_ANSI_Z)
CODE_MAP_X11(KeyZ,
0x0034)
CODE_MAP_ANDROID(KeyZ,
0x002C)
CODE_MAP_WIN(Minus,
0x000C)
CODE_MAP_MAC(Minus, kVK_ANSI_Minus)
CODE_MAP_X11(Minus,
0x0014)
CODE_MAP_ANDROID(Minus,
0x000C)
CODE_MAP_WIN(Period,
0x0034)
CODE_MAP_MAC(Period, kVK_ANSI_Period)
CODE_MAP_X11(Period,
0x003C)
CODE_MAP_ANDROID(Period,
0x0034)
CODE_MAP_WIN(Quote,
0x0028)
CODE_MAP_MAC(Quote, kVK_ANSI_Quote)
CODE_MAP_X11(Quote,
0x0030)
CODE_MAP_ANDROID(Quote,
0x0028)
CODE_MAP_WIN(Semicolon,
0x0027)
CODE_MAP_MAC(Semicolon, kVK_ANSI_Semicolon)
CODE_MAP_X11(Semicolon,
0x002F)
CODE_MAP_ANDROID(Semicolon,
0x0027)
CODE_MAP_WIN(Slash,
0x0035)
CODE_MAP_MAC(Slash, kVK_ANSI_Slash)
CODE_MAP_X11(Slash,
0x003D)
CODE_MAP_ANDROID(Slash,
0x0035)
// Functional keys
CODE_MAP_WIN(AltLeft,
0x0038)
CODE_MAP_MAC(AltLeft, kVK_Option)
CODE_MAP_X11(AltLeft,
0x0040)
CODE_MAP_ANDROID(AltLeft,
0x0038)
CODE_MAP_WIN(AltRight,
0xE038)
CODE_MAP_MAC(AltRight, kVK_RightOption)
CODE_MAP_X11(AltRight,
0x006C)
CODE_MAP_ANDROID(AltRight,
0x0064)
CODE_MAP_WIN(CapsLock,
0x003A)
CODE_MAP_MAC(CapsLock, kVK_CapsLock)
CODE_MAP_X11(CapsLock,
0x0042)
CODE_MAP_ANDROID(CapsLock,
0x003A)
CODE_MAP_WIN(ContextMenu,
0xE05D)
CODE_MAP_MAC(ContextMenu, kVK_PC_ContextMenu)
CODE_MAP_X11(ContextMenu,
0x0087)
CODE_MAP_ANDROID(ContextMenu,
0x007F)
CODE_MAP_WIN(ControlLeft,
0x001D)
CODE_MAP_MAC(ControlLeft, kVK_Control)
CODE_MAP_X11(ControlLeft,
0x0025)
CODE_MAP_ANDROID(ControlLeft,
0x001D)
CODE_MAP_WIN(ControlRight,
0xE01D)
CODE_MAP_MAC(ControlRight, kVK_RightControl)
CODE_MAP_X11(ControlRight,
0x0069)
CODE_MAP_ANDROID(ControlRight,
0x0061)
CODE_MAP_WIN(Enter,
0x001C)
CODE_MAP_MAC(Enter, kVK_Return)
CODE_MAP_X11(Enter,
0x0024)
CODE_MAP_ANDROID(Enter,
0x001C)
CODE_MAP_WIN(MetaLeft,
0xE05B)
CODE_MAP_MAC(MetaLeft, kVK_Command)
CODE_MAP_X11(MetaLeft,
0x0085)
CODE_MAP_ANDROID(MetaLeft,
0x007D)
CODE_MAP_WIN(MetaRight,
0xE05C)
CODE_MAP_MAC(MetaRight, kVK_RightCommand)
CODE_MAP_X11(MetaRight,
0x0086)
CODE_MAP_ANDROID(MetaRight,
0x007E)
CODE_MAP_WIN(ShiftLeft,
0x002A)
CODE_MAP_MAC(ShiftLeft, kVK_Shift)
CODE_MAP_X11(ShiftLeft,
0x0032)
CODE_MAP_ANDROID(ShiftLeft,
0x002A)
CODE_MAP_WIN(ShiftRight,
0x0036)
CODE_MAP_MAC(ShiftRight, kVK_RightShift)
CODE_MAP_X11(ShiftRight,
0x003E)
CODE_MAP_ANDROID(ShiftRight,
0x0036)
CODE_MAP_WIN(Space,
0x0039)
CODE_MAP_MAC(Space, kVK_Space)
CODE_MAP_X11(Space,
0x0041)
CODE_MAP_ANDROID(Space,
0x0039)
CODE_MAP_WIN(Tab,
0x000F)
CODE_MAP_MAC(Tab, kVK_Tab)
CODE_MAP_X11(Tab,
0x0017)
CODE_MAP_ANDROID(Tab,
0x000F)
// IME keys
CODE_MAP_WIN(Convert,
0x0079)
CODE_MAP_X11(Convert,
0x0064)
CODE_MAP_ANDROID(Convert,
0x005C)
CODE_MAP_WIN(Lang1,
0x0072)
// for non-Korean layout
CODE_MAP_WIN(Lang1,
0xE0F2)
// for Korean layout
CODE_MAP_MAC(Lang1, kVK_JIS_Kana)
CODE_MAP_X11(Lang1,
0x0082)
CODE_MAP_ANDROID(Lang1,
0x007A)
CODE_MAP_WIN(Lang2,
0x0071)
// for non-Korean layout
CODE_MAP_WIN(Lang2,
0xE0F1)
// for Korean layout
CODE_MAP_MAC(Lang2, kVK_JIS_Eisu)
CODE_MAP_X11(Lang2,
0x0083)
CODE_MAP_ANDROID(Lang2,
0x007B)
CODE_MAP_WIN(KanaMode,
0x0070)
CODE_MAP_X11(KanaMode,
0x0065)
CODE_MAP_ANDROID(KanaMode,
0x005D)
CODE_MAP_WIN(NonConvert,
0x007B)
CODE_MAP_X11(NonConvert,
0x0066)
CODE_MAP_ANDROID(NonConvert,
0x005E)
// Control pad section
CODE_MAP_WIN(
Delete,
0xE053)
CODE_MAP_MAC(
Delete, kVK_ForwardDelete)
CODE_MAP_X11(
Delete,
0x0077)
CODE_MAP_ANDROID(
Delete,
0x006F)
CODE_MAP_WIN(End,
0xE04F)
CODE_MAP_MAC(End, kVK_End)
CODE_MAP_X11(End,
0x0073)
CODE_MAP_ANDROID(End,
0x006B)
CODE_MAP_MAC(Help, kVK_Help)
// Insert key on PC keyboard
CODE_MAP_X11(Help,
0x0092)
// Help key on Sun keyboard
CODE_MAP_ANDROID(Help,
0x008A)
// Help key on Sun keyboard
CODE_MAP_WIN(Home,
0xE047)
CODE_MAP_MAC(Home, kVK_Home)
CODE_MAP_X11(Home,
0x006E)
CODE_MAP_ANDROID(Home,
0x0066)
CODE_MAP_WIN(Insert,
0xE052)
CODE_MAP_X11(Insert,
0x0076)
CODE_MAP_ANDROID(Insert,
0x006E)
CODE_MAP_WIN(PageDown,
0xE051)
CODE_MAP_MAC(PageDown, kVK_PageDown)
CODE_MAP_X11(PageDown,
0x0075)
CODE_MAP_ANDROID(PageDown,
0x006D)
CODE_MAP_WIN(PageUp,
0xE049)
CODE_MAP_MAC(PageUp, kVK_PageUp)
CODE_MAP_X11(PageUp,
0x0070)
CODE_MAP_ANDROID(PageUp,
0x0068)
// Arrow pad section
CODE_MAP_WIN(ArrowDown,
0xE050)
CODE_MAP_MAC(ArrowDown, kVK_DownArrow)
CODE_MAP_X11(ArrowDown,
0x0074)
CODE_MAP_ANDROID(ArrowDown,
0x006C)
CODE_MAP_WIN(ArrowLeft,
0xE04B)
CODE_MAP_MAC(ArrowLeft, kVK_LeftArrow)
CODE_MAP_X11(ArrowLeft,
0x0071)
CODE_MAP_ANDROID(ArrowLeft,
0x0069)
CODE_MAP_WIN(ArrowRight,
0xE04D)
CODE_MAP_MAC(ArrowRight, kVK_RightArrow)
CODE_MAP_X11(ArrowRight,
0x0072)
CODE_MAP_ANDROID(ArrowRight,
0x006A)
CODE_MAP_WIN(ArrowUp,
0xE048)
CODE_MAP_MAC(ArrowUp, kVK_UpArrow)
CODE_MAP_X11(ArrowUp,
0x006F)
CODE_MAP_ANDROID(ArrowUp,
0x0067)
// Numpad section
CODE_MAP_WIN(NumLock,
0xE045)
// MSDN says 0x0045, though...
CODE_MAP_MAC(NumLock, kVK_ANSI_KeypadClear)
CODE_MAP_X11(NumLock,
0x004D)
CODE_MAP_ANDROID(NumLock,
0x0045)
CODE_MAP_WIN(Numpad0,
0x0052)
CODE_MAP_MAC(Numpad0, kVK_ANSI_Keypad0)
CODE_MAP_X11(Numpad0,
0x005A)
CODE_MAP_ANDROID(Numpad0,
0x0052)
CODE_MAP_WIN(Numpad1,
0x004F)
CODE_MAP_MAC(Numpad1, kVK_ANSI_Keypad1)
CODE_MAP_X11(Numpad1,
0x0057)
CODE_MAP_ANDROID(Numpad1,
0x004F)
CODE_MAP_WIN(Numpad2,
0x0050)
CODE_MAP_MAC(Numpad2, kVK_ANSI_Keypad2)
CODE_MAP_X11(Numpad2,
0x0058)
CODE_MAP_ANDROID(Numpad2,
0x0050)
CODE_MAP_WIN(Numpad3,
0x0051)
CODE_MAP_MAC(Numpad3, kVK_ANSI_Keypad3)
CODE_MAP_X11(Numpad3,
0x0059)
CODE_MAP_ANDROID(Numpad3,
0x0051)
CODE_MAP_WIN(Numpad4,
0x004B)
CODE_MAP_MAC(Numpad4, kVK_ANSI_Keypad4)
CODE_MAP_X11(Numpad4,
0x0053)
CODE_MAP_ANDROID(Numpad4,
0x004B)
CODE_MAP_WIN(Numpad5,
0x004C)
CODE_MAP_MAC(Numpad5, kVK_ANSI_Keypad5)
CODE_MAP_X11(Numpad5,
0x0054)
CODE_MAP_ANDROID(Numpad5,
0x004C)
CODE_MAP_WIN(Numpad6,
0x004D)
CODE_MAP_MAC(Numpad6, kVK_ANSI_Keypad6)
CODE_MAP_X11(Numpad6,
0x0055)
CODE_MAP_ANDROID(Numpad6,
0x004D)
CODE_MAP_WIN(Numpad7,
0x0047)
CODE_MAP_MAC(Numpad7, kVK_ANSI_Keypad7)
CODE_MAP_X11(Numpad7,
0x004F)
CODE_MAP_ANDROID(Numpad7,
0x0047)
CODE_MAP_WIN(Numpad8,
0x0048)
CODE_MAP_MAC(Numpad8, kVK_ANSI_Keypad8)
CODE_MAP_X11(Numpad8,
0x0050)
CODE_MAP_ANDROID(Numpad8,
0x0048)
CODE_MAP_WIN(Numpad9,
0x0049)
CODE_MAP_MAC(Numpad9, kVK_ANSI_Keypad9)
CODE_MAP_X11(Numpad9,
0x0051)
CODE_MAP_ANDROID(Numpad9,
0x0049)
CODE_MAP_WIN(NumpadAdd,
0x004E)
CODE_MAP_MAC(NumpadAdd, kVK_ANSI_KeypadPlus)
CODE_MAP_X11(NumpadAdd,
0x0056)
CODE_MAP_ANDROID(NumpadAdd,
0x004E)
CODE_MAP_WIN(NumpadComma,
0x007E)
CODE_MAP_MAC(NumpadComma, kVK_JIS_KeypadComma)
CODE_MAP_X11(NumpadComma,
0x0081)
CODE_MAP_ANDROID(NumpadComma,
0x0079)
CODE_MAP_WIN(NumpadDecimal,
0x0053)
CODE_MAP_MAC(NumpadDecimal, kVK_ANSI_KeypadDecimal)
CODE_MAP_X11(NumpadDecimal,
0x005B)
CODE_MAP_ANDROID(NumpadDecimal,
0x0053)
CODE_MAP_WIN(NumpadDivide,
0xE035)
CODE_MAP_MAC(NumpadDivide, kVK_ANSI_KeypadDivide)
CODE_MAP_X11(NumpadDivide,
0x006A)
CODE_MAP_ANDROID(NumpadDivide,
0x0062)
CODE_MAP_WIN(NumpadEnter,
0xE01C)
CODE_MAP_MAC(NumpadEnter, kVK_ANSI_KeypadEnter)
CODE_MAP_MAC(NumpadEnter, kVK_Powerbook_KeypadEnter)
CODE_MAP_X11(NumpadEnter,
0x0068)
CODE_MAP_ANDROID(NumpadEnter,
0x0060)
CODE_MAP_WIN(NumpadEqual,
0x0059)
CODE_MAP_MAC(NumpadEqual, kVK_ANSI_KeypadEquals)
CODE_MAP_X11(NumpadEqual,
0x007D)
CODE_MAP_ANDROID(NumpadEqual,
0x0075)
CODE_MAP_WIN(NumpadMultiply,
0x0037)
CODE_MAP_MAC(NumpadMultiply, kVK_ANSI_KeypadMultiply)
CODE_MAP_X11(NumpadMultiply,
0x003F)
CODE_MAP_ANDROID(NumpadMultiply,
0x0037)
CODE_MAP_WIN(NumpadSubtract,
0x004A)
CODE_MAP_MAC(NumpadSubtract, kVK_ANSI_KeypadMinus)
CODE_MAP_X11(NumpadSubtract,
0x0052)
CODE_MAP_ANDROID(NumpadSubtract,
0x004A)
// Function section
CODE_MAP_WIN(Escape,
0x0001)
CODE_MAP_MAC(Escape, kVK_Escape)
CODE_MAP_X11(Escape,
0x0009)
CODE_MAP_ANDROID(Escape,
0x0001)
CODE_MAP_WIN(F1,
0x003B)
CODE_MAP_MAC(F1, kVK_F1)
CODE_MAP_X11(F1,
0x0043)
CODE_MAP_ANDROID(F1,
0x003B)
CODE_MAP_WIN(F2,
0x003C)
CODE_MAP_MAC(F2, kVK_F2)
CODE_MAP_X11(F2,
0x0044)
CODE_MAP_ANDROID(F2,
0x003C)
CODE_MAP_WIN(F3,
0x003D)
CODE_MAP_MAC(F3, kVK_F3)
CODE_MAP_X11(F3,
0x0045)
CODE_MAP_ANDROID(F3,
0x003D)
CODE_MAP_WIN(F4,
0x003E)
CODE_MAP_MAC(F4, kVK_F4)
CODE_MAP_X11(F4,
0x0046)
CODE_MAP_ANDROID(F4,
0x003E)
CODE_MAP_WIN(F5,
0x003F)
CODE_MAP_MAC(F5, kVK_F5)
CODE_MAP_X11(F5,
0x0047)
CODE_MAP_ANDROID(F5,
0x003F)
CODE_MAP_WIN(F6,
0x0040)
CODE_MAP_MAC(F6, kVK_F6)
CODE_MAP_X11(F6,
0x0048)
CODE_MAP_ANDROID(F6,
0x0040)
CODE_MAP_WIN(F7,
0x0041)
CODE_MAP_MAC(F7, kVK_F7)
CODE_MAP_X11(F7,
0x0049)
CODE_MAP_ANDROID(F7,
0x0041)
CODE_MAP_WIN(F8,
0x0042)
CODE_MAP_MAC(F8, kVK_F8)
CODE_MAP_X11(F8,
0x004A)
CODE_MAP_ANDROID(F8,
0x0042)
CODE_MAP_WIN(F9,
0x0043)
CODE_MAP_MAC(F9, kVK_F9)
CODE_MAP_X11(F9,
0x004B)
CODE_MAP_ANDROID(F9,
0x0043)
CODE_MAP_WIN(F10,
0x0044)
CODE_MAP_MAC(F10, kVK_F10)
CODE_MAP_X11(F10,
0x004C)
CODE_MAP_ANDROID(F10,
0x0044)
CODE_MAP_WIN(F11,
0x0057)
CODE_MAP_MAC(F11, kVK_F11)
CODE_MAP_X11(F11,
0x005F)
CODE_MAP_ANDROID(F11,
0x0057)
CODE_MAP_WIN(F12,
0x0058)
CODE_MAP_MAC(F12, kVK_F12)
CODE_MAP_X11(F12,
0x0060)
CODE_MAP_ANDROID(F12,
0x0058)
CODE_MAP_WIN(F13,
0x0064)
CODE_MAP_MAC(F13, kVK_F13)
// PrintScreen on PC keyboard
CODE_MAP_X11(F13,
0x00BF)
CODE_MAP_ANDROID(F13,
0x00B7)
CODE_MAP_WIN(F14,
0x0065)
CODE_MAP_MAC(F14, kVK_F14)
// ScrollLock on PC keyboard
CODE_MAP_X11(F14,
0x00C0)
CODE_MAP_ANDROID(F14,
0x00B8)
CODE_MAP_WIN(F15,
0x0066)
CODE_MAP_MAC(F15, kVK_F15)
// Pause on PC keyboard
CODE_MAP_X11(F15,
0x00C1)
CODE_MAP_ANDROID(F15,
0x00B9)
CODE_MAP_WIN(F16,
0x0067)
CODE_MAP_MAC(F16, kVK_F16)
CODE_MAP_X11(F16,
0x00C2)
CODE_MAP_ANDROID(F16,
0x00BA)
CODE_MAP_WIN(F17,
0x0068)
CODE_MAP_MAC(F17, kVK_F17)
CODE_MAP_X11(F17,
0x00C3)
CODE_MAP_ANDROID(F17,
0x00BB)
CODE_MAP_WIN(F18,
0x0069)
CODE_MAP_MAC(F18, kVK_F18)
CODE_MAP_X11(F18,
0x00C4)
CODE_MAP_ANDROID(F18,
0x00BC)
CODE_MAP_WIN(F19,
0x006A)
CODE_MAP_MAC(F19, kVK_F19)
CODE_MAP_X11(F19,
0x00C5)
CODE_MAP_ANDROID(F19,
0x00BD)
CODE_MAP_WIN(F20,
0x006B)
CODE_MAP_MAC(F20, kVK_F20)
CODE_MAP_X11(F20,
0x00C6)
CODE_MAP_ANDROID(F20,
0x00BE)
CODE_MAP_WIN(F21,
0x006C)
CODE_MAP_X11(F21,
0x00C7)
CODE_MAP_ANDROID(F21,
0x00BF)
CODE_MAP_WIN(F22,
0x006D)
CODE_MAP_X11(F22,
0x00C8)
CODE_MAP_ANDROID(F22,
0x00C0)
CODE_MAP_WIN(F23,
0x006E)
CODE_MAP_X11(F23,
0x00C9)
CODE_MAP_ANDROID(F23,
0x00C1)
CODE_MAP_WIN(F24,
0x0076)
CODE_MAP_X11(F24,
0x00CA)
CODE_MAP_ANDROID(F24,
0x00C2)
CODE_MAP_MAC(Fn, kVK_Function)
// not available?
CODE_MAP_ANDROID(Fn,
0x01D0)
CODE_MAP_WIN(PrintScreen,
0xE037)
CODE_MAP_WIN(PrintScreen,
0x0054)
// Alt + PrintScreen
CODE_MAP_X11(PrintScreen,
0x006B)
CODE_MAP_ANDROID(PrintScreen,
0x0063)
CODE_MAP_WIN(ScrollLock,
0x0046)
CODE_MAP_X11(ScrollLock,
0x004E)
CODE_MAP_ANDROID(ScrollLock,
0x0046)
CODE_MAP_WIN(Pause,
0x0045)
CODE_MAP_WIN(Pause,
0xE046)
// Ctrl + Pause
CODE_MAP_X11(Pause,
0x007F)
CODE_MAP_ANDROID(Pause,
0x0077)
// Media keys
CODE_MAP_WIN(BrowserBack,
0xE06A)
CODE_MAP_X11(BrowserBack,
0x00A6)
CODE_MAP_ANDROID(BrowserBack,
0x009E)
CODE_MAP_WIN(BrowserFavorites,
0xE066)
CODE_MAP_X11(BrowserFavorites,
0x00A4)
CODE_MAP_ANDROID(BrowserFavorites,
0x009C)
CODE_MAP_WIN(BrowserForward,
0xE069)
CODE_MAP_X11(BrowserForward,
0x00A7)
CODE_MAP_ANDROID(BrowserForward,
0x009F)
CODE_MAP_WIN(BrowserHome,
0xE032)
CODE_MAP_X11(BrowserHome,
0x00B4)
// CODE_MAP_ANDROID(BrowserHome) // not available? works as Home key.
CODE_MAP_WIN(BrowserRefresh,
0xE067)
CODE_MAP_X11(BrowserRefresh,
0x00B5)
CODE_MAP_ANDROID(BrowserRefresh,
0x00AD)
CODE_MAP_WIN(BrowserSearch,
0xE065)
CODE_MAP_X11(BrowserSearch,
0x00E1)
CODE_MAP_ANDROID(BrowserSearch,
0x00D9)
CODE_MAP_WIN(BrowserStop,
0xE068)
CODE_MAP_X11(BrowserStop,
0x0088)
CODE_MAP_ANDROID(BrowserStop,
0x0080)
// CODE_MAP_WIN(Eject) // not available?
// CODE_MAP_MAC(Eject) // not available?
CODE_MAP_X11(Eject,
0x00A9)
CODE_MAP_ANDROID(Eject,
0x00A1)
CODE_MAP_WIN(LaunchApp1,
0xE06B)
CODE_MAP_X11(LaunchApp1,
0x0098)
CODE_MAP_ANDROID(LaunchApp1,
0x0090)
CODE_MAP_WIN(LaunchApp2,
0xE021)
CODE_MAP_X11(LaunchApp2,
0x0094)
// CODE_MAP_ANDROID(LaunchApp2) // not available?
CODE_MAP_WIN(LaunchMail,
0xE06C)
CODE_MAP_X11(LaunchMail,
0x00A3)
// CODE_MAP_ANDROID(LaunchMail) // not available?
CODE_MAP_WIN(MediaPlayPause,
0xE022)
CODE_MAP_X11(MediaPlayPause,
0x00AC)
CODE_MAP_ANDROID(MediaPlayPause,
0x00A4)
CODE_MAP_WIN(MediaSelect,
0xE06D)
CODE_MAP_X11(MediaSelect,
0x00B3)
// CODE_MAP_ANDROID(MediaSelect) // not available?
CODE_MAP_WIN(MediaStop,
0xE024)
CODE_MAP_X11(MediaStop,
0x00AE)
CODE_MAP_ANDROID(MediaStop,
0x00A6)
CODE_MAP_WIN(MediaTrackNext,
0xE019)
CODE_MAP_X11(MediaTrackNext,
0x00AB)
CODE_MAP_ANDROID(MediaTrackNext,
0x00A3)
CODE_MAP_WIN(MediaTrackPrevious,
0xE010)
CODE_MAP_X11(MediaTrackPrevious,
0x00AD)
CODE_MAP_ANDROID(MediaTrackPrevious,
0x00A5)
CODE_MAP_WIN(Power,
0xE05E)
CODE_MAP_MAC(Power,
0x007F)
// On 10.7 and 10.8 only
// CODE_MAP_X11(Power) // not available?
CODE_MAP_ANDROID(Power,
0x0074)
// CODE_MAP_WIN(Sleep) // not available?
// CODE_MAP_X11(Sleep) // not available?
CODE_MAP_ANDROID(Sleep,
0x008E)
CODE_MAP_WIN(VolumeDown,
0xE02E)
CODE_MAP_MAC(VolumeDown, kVK_VolumeDown)
// not available?
CODE_MAP_X11(VolumeDown,
0x007A)
CODE_MAP_ANDROID(VolumeDown,
0x0072)
CODE_MAP_WIN(VolumeMute,
0xE020)
CODE_MAP_MAC(VolumeMute, kVK_Mute)
// not available?
CODE_MAP_X11(VolumeMute,
0x0079)
CODE_MAP_ANDROID(VolumeMute,
0x0071)
CODE_MAP_WIN(VolumeUp,
0xE030)
CODE_MAP_MAC(VolumeUp, kVK_VolumeUp)
// not available?
CODE_MAP_X11(VolumeUp,
0x007B)
CODE_MAP_ANDROID(VolumeUp,
0x0073)
// side of body, not on keyboard
// CODE_MAP_WIN(WakeUp) // not available?
CODE_MAP_X11(WakeUp,
0x0097)
CODE_MAP_ANDROID(WakeUp,
0x008F)
// Legacy editing keys
CODE_MAP_X11(Again,
0x0089)
// Again key on Sun keyboard
CODE_MAP_ANDROID(Again,
0x0081)
// Again key on Sun keyboard
CODE_MAP_X11(Copy,
0x008D)
// Copy key on Sun keyboard
CODE_MAP_ANDROID(Copy,
0x0085)
// Copy key on Sun keyboard
CODE_MAP_X11(Cut,
0x0091)
// Cut key on Sun keyboard
CODE_MAP_ANDROID(Cut,
0x0089)
// Cut key on Sun keyboard
CODE_MAP_X11(Find,
0x0090)
// Find key on Sun keyboard
CODE_MAP_ANDROID(Find,
0x0088)
// Find key on Sun keyboard
CODE_MAP_X11(Open,
0x008E)
// Open key on Sun keyboard
CODE_MAP_ANDROID(Open,
0x0086)
// Open key on Sun keyboard
CODE_MAP_X11(Paste,
0x008F)
// Paste key on Sun keyboard
CODE_MAP_ANDROID(Paste,
0x0087)
// Paste key on Sun keyboard
CODE_MAP_X11(Props,
0x008A)
// Props key on Sun keyboard
CODE_MAP_ANDROID(Props,
0x0082)
// Props key on Sun keyboard
CODE_MAP_X11(Select,
0x008C)
// Front key on Sun keyboard
CODE_MAP_ANDROID(Select,
0x0084)
// Front key on Sun keyboard
CODE_MAP_X11(Undo,
0x008B)
// Undo key on Sun keyboard
CODE_MAP_ANDROID(Undo,
0x0083)
// Undo key on Sun keyboard
#undef CODE_MAP_WIN
#undef CODE_MAP_MAC
#undef CODE_MAP_X11
#undef CODE_MAP_ANDROID