The KeyboardEvent.code property represents a physical key on the keyboard (as opposed to the character generated by pressing the key). In other words, this property returns a value which isn't altered by keyboard layout or the state of the modifier keys.

If the inputting keyboard isn't a physical keyboard, but is instead a virtual keyboard or accessibility device, the returned value will be set by the browser to match as closely as possible to what would happen with a physical keyboard, to maximize compatibility between physical and virtual input devices.

This property is useful when you want to handle keys based on their physical positions on the input device rather than the characters associated with those keys; this is especially common when writing code to handle input for games which simulate a gamepad-like environment using keys on the keyboard. However, you need to be careful when you use this value to look at printable key events, because the keycode's name may not match the actual character that's printed on the key or that's generated by the computer when the key is pressed. For example, the code returned is "KeyQ" is for the "q" key on a QWERTY layout keyboard, but it corresponds to the "'" key on Dvorak keyboards and the "a" key on AZERTY keyboards. That makes it impossible to visually display what the name of the key is to users if they're not using an anticipated keyboard layout.

To determine what character corresponds with the key event, use the KeyboardEvent.key property instead.

Example

This example code establishes an event listener for keydown events which handles keyboard input for a game which uses the typical "WASD" keyboard layout for steering forward, left, backward, and right. This will use the same four keys physically regardless of what the actual corresponding characters are, such as if the user is using an AZERTY keyboard.

window.addEventListener("keydown", function (event) {
  if (event.defaultPrevented) {
    return; // Should do nothing if the key event was already consumed.
  }

  switch (event.code) {
    case "KeyS":
      // Handle "s" key as "down arrow" key.
      break;
    case "KeyW":
      // Handle "w" key as "up arrow" key.
      break;
    case "KeyA":
      // Handle "a" key as "left arrow" key.
      break;
    case "KeyD":
      // Handle "d" key as "right arrow" key.
      break;
    default:
      return; // Quit when this doesn't handle the key event.
  }

  // Consume the event for suppressing "double action".
  event.preventDefault();
}, true);

Specification

Specification Status Comment
Document Object Model (DOM) Level 3 Events Specification
The definition of 'KeyboardEvent.code' in that specification.
Working Draft Initial definition, included code values.

Browser compatibility

Feature Chrome Firefox (Gecko) Internet Explorer Microsoft Edge Opera Safari (WebKit)
Basic support (Yes) 32.0 (32.0) [1] No support No support [3] (Yes) No support [2]
Without scancode (Windows) No support 32.0 (32.0) No support No support No support No support
Without scancode (Linux) No support No support No support No support No support No support
Feature Android Android Webview Firefox Mobile (Gecko) IE Phone Opera Mobile Safari Mobile Chrome for Android
Basic support No support No support 32.0 (32.0) [1] No support No support No support [2] No support
Virtual keyboard No support ? No support No support No support No support ?

[1] Disabled on release builds until Firefox 38.

[2] WebKit bug #149584

[3] Edge feature request on UserVoice

Code values

The following tables show what code values are used for each native scancode or virtual keycode on major platforms. Because some browsers choose to interpret physical keys differently, there are some differences in which keys map to which codes. These tables show those variations when known.

Code values on Windows (When scancode is available)

Code Firefox Chrome
0x0000 "" ""
0x0001 "Escape" "Escape"
0x0002 "Digit0" "Digit0"
0x0003 "Digit1" "Digit1"
0x0004 "Digit2" "Digit2"
0x0005 "Digit3" "Digit3"
0x0006 "Digit4" "Digit4"
0x0007 "Digit5" "Digit5"
0x0008 "Digit6" "Digit6"
0x0009 "Digit7" "Digit7"
0x000A "Digit8" "Digit8"
0x000B "Digit9" "Digit9"
0x000C "Minus" "Minus"
0x000D "Equal" "Equal"
0x000E "Backspace" "Backspace"
0x000F "Tab" "Tab"
0x0010 "KeyQ" "KeyQ"
0x0011 "KeyW" "KeyW"
0x0012 "KeyE" "KeyE"
0x0013 "KeyR" "KeyR"
0x0014 "KeyT" "KeyT"
0x0015 "KeyY" "KeyY"
0x0016 "KeyU" "KeyU"
0x0017 "KeyI" "KeyI"
0x0018 "KeyO" "KeyO"
0x0019 "KeyP" "KeyP"
0x001A "BracketLeft" "BracketLeft"
0x001B "BracketRight" "BracketRight"
0x001C "Enter" "Enter"
0x001D "ControlLeft" "ControlLeft"
0x001E "KeyA" "KeyA"
0x001F "KeyS" "KeyS"
0x0020 "KeyD" "KeyD"
0x0021 "KeyF" "KeyF"
0x0022 "KeyG" "KeyG"
0x0023 "KeyH" "KeyH"
0x0024 "KeyJ" "KeyJ"
0x0025 "KeyK" "KeyK"
0x0026 "KeyL" "KeyL"
0x0027 "Semicolon" "Semicolon"
0x0028 "Quote" "Quote"
0x0029 "Backquote" "Backquote"
0x002A "ShiftLeft" "ShiftLeft"
0x002B "Backslash" "Backslash"
0x002C "KeyZ" "KeyZ"
0x002D "KeyX" "KeyX"
0x002E "KeyC" "KeyC"
0x002F "KeyV" "KeyV"
0x0030 "KeyB" "KeyB"
0x0031 "KeyN" "KeyN"
0x0032 "KeyM" "KeyM"
0x0033 "Comma" "Comma"
0x0034 "Period" "Period"
0x0035 "Slash" "Slash"
0x0036 "ShiftRight" "ShiftRight"
0x0037 "NumpadMultiply" "NumpadMultiply"
0x0038 "AltLeft" "AltLeft"
0x0039 "Space" "Space"
0x003A "CapsLock" "CapsLock"
0x003B "F1" "F1"
0x003C "F2" "F2"
0x003D "F3" "F3"
0x003E "F4" "F4"
0x003F "F5" "F5"
0x0040 "F6" "F6"
0x0041 "F7" "F7"
0x0042 "F8" "F8"
0x0043 "F9" "F9"
0x0044 "F10" "F10"
0x0045 "Pause" "Pause"
0x0046 "ScrollLock" "ScrollLock"
0x0047 "Numpad7" "Numpad7"
0x0048 "Numpad8" "Numpad8"
0x0049 "Numpad9" "Numpad9"
0x004A "NumpadSubtract" "NumpadSubtract"
0x004B "Numpad4" "Numpad4"
0x004C "Numpad5" "Numpad5"
0x004D "Numpad6" "Numpad6"
0x004E "NumpadAdd" "NumpadAdd"
0x004F "Numpad1" "Numpad1"
0x0050 "Numpad2" "Numpad2"
0x0051 "Numpad3" "Numpad3"
0x0052 "Numpad0" "Numpad0"
0x0053 "NumpadDecimal" "NumpadDecimal"
0x0054 (Alt + PrintScreen) "PrintScreen" ""
0x0055 "" ""
0x0056 "IntlBackslash" "IntlBackslash"
0x0057 "F11" "F11"
0x0058 "F12" "F12"
0x0059 "NumpadEqual" ""
0x005A "" ""
0x005B "" "F13"
0x005C "" "F14"
0x005D "" "F15"
0x005E "" ""
0x005F "" ""
0x0060 "" ""
0x0061 "" ""
0x0062 "" ""
0x0063 "" "F16"
0x0064 "F13" "F17"
0x0065 "F14" "F18"
0x0066 "F15" "F19"
0x0067 "F16" "F20"
0x0068 "F17" "F21"
0x0069 "F18" "F22"
0x006A "F19" "F23"
0x006B "F20" "F24"
0x006C "F21" ""
0x006D "F22" ""
0x006E "F23" ""
0x006F "" ""
0x0070 "KanaMode" ""
0x0071 (Hanja key without Korean keyboard layout) "Lang2" ""
0x0072 (Han/Yeong key without Korean keyboard layout) "Lang1" ""
0x0073 "IntlRo" ""
0x0074, 0x0075 "" ""
0x0076 "F24" ""
0x0077, 0x0078 "" ""
0x0079 "Convert" ""
0x007A "" ""
0x007B "NonConvert" ""
0x007C "" ""
0x007D "IntlYen" "IntlYen"
0x007E "NumpadComma" ""
0x007F "" ""
0xE0000xE007 "" ""
0xE008 "" "Undo"
0xE009 "" ""
0xE00A "" "Paste"
0xE00B0xE00F "" ""
0xE010 "MediaTrackPrevious" "MediaTrackPrevious"
0xE0110xE016 "" ""
0xE017 "" "Cut"
0xE018 "" "Copy"
0xE019 "MediaTrackNext" "MediaTrackNext"
0xE01A, 0xE01B "" ""
0xE01C "NumpadEnter" "NumpadEnter"
0xE01D "ControlRight" "ControlRight"
0xE01E "" "LaunchMail"
0xE01F "" ""
0xE020 "VolumeMute" "VolumeMute"
0xE021 "LaunchApp2" ""
0xE022 "MediaPlayPause" "MediaPlayPause"
0xE023 "" ""
0xE024 "MediaStop" "MediaStop"
0xE0250xE02B "" ""
0xE02C "" "Eject"
0xE02D "" ""
0xE02E "VolumeDown" "VolumeDown"
0xE02F "" ""
0xE030 "VolumeUp" "VolumeUp"
0xE031 "" ""
0xE032 "BrowserHome" "BrowserHome"
0xE033, 0xE034 "" ""
0xE035 "NumpadDivide" "NumpadDivide"
0xE036 "" ""
0xE037 "PrintScreen" "PrintScreen"
0xE038 "AltRight" "AltRight"
0xE039, 0xE03A "" ""
0xE03B "" "Help"
0xE03C0xE044 "" ""
0xE045 "NumLock" "NumLock"
0xE046 (Ctrl + Pause) "Pause" "Pause"
0xE047 "Home" "Home"
0xE048 "ArrowUp" "ArrowUp"
0xE049 "PageUp" "PageUp"
0xE04A "" ""
0xE04B "ArrowLeft" "ArrowLeft"
0xE04C "" ""
0xE04D "ArrowRight" "ArrowRight"
0xE04E "" ""
0xE04F "End" "End"
0xE050 "ArrowDown" "ArrowDown"
0xE051 "PageDown" "PageDown"
0xE052 "Insert" "Insert"
0xE053 "Delete" "Delete"
0xE0540xE05A "" ""
0xE05B "OSLeft" "OSLeft"
0xE05C "OSRight" "OSRight"
0xE05D "ContextMenu" "ContextMenu"
0xE05E "Power" ""
0xE05F0xE064 "" ""
0xE065 "BrowserSearch" "BrowserSearch"
0xE066 "BrowserFavorites" "BrowserFavorites"
0xE067 "BrowserRefresh" "BrowserRefresh"
0xE068 "BrowserStop" "BrowserStop"
0xE069 "BrowserForward" "BrowserForward"
0xE06A "BrowserBack" "BrowserBack"
0xE06B "LaunchApp1" ""
0xE06C "LaunchMail" ""
0xE06D "MediaSelect" ""
0xE06E ~ 0xE0F0 "" ""
0xE0F1 (Hanja key with Korean keyboard layout) "Lang2" ""
0xE0F2 (Han/Yeong key with Korean keyboard layout) "Lang1" ""

Code values on Mac

On Mac OS X, it's hard to get scancode or something which can distinguish a physical key from a key event. Therefore, Gecko always maps code value from the virtual keycode.

Virtual keycode Gecko Chromium (48)
kVK_ANSI_A (0x00) "KeyA" "KeyA"
kVK_ANSI_S (0x01) "KeyS" "KeyS"
kVK_ANSI_D (0x02) "KeyD" "KeyD"
kVK_ANSI_F (0x03) "KeyF" "KeyF"
kVK_ANSI_H (0x04) "KeyH" "KeyH"
kVK_ANSI_G (0x05) "KeyG" "KeyG"
kVK_ANSI_Z (0x06) "KeyZ" "KeyZ"
kVK_ANSI_X (0x07) "KeyX" "KeyX"
kVK_ANSI_C (0x08) "KeyC" "KeyC"
kVK_ANSI_V (0x09) "KeyV" "KeyV"
kVK_ISO_Section (0x0A) "IntlBackslash" "IntlBackslash"
kVK_ANSI_B (0x0B) "KeyB" "KeyB"
kVK_ANSI_Q (0x0C) "KeyQ" "KeyQ"
kVK_ANSI_W (0x0D) "KeyW" "KeyW"
kVK_ANSI_E (0x0E) "KeyE" "KeyE"
kVK_ANSI_R (0x0F) "KeyR" "KeyR"
kVK_ANSI_Y (0x10) "KeyY" "KeyY"
kVK_ANSI_T (0x11) "KeyT" "KeyT"
kVK_ANSI_1 (0x12) "Digit1" "Digit1"
kVK_ANSI_2 (0x13) "Digit2" "Digit2"
kVK_ANSI_3 (0x14) "Digit3" "Digit3"
kVK_ANSI_4 (0x15) "Digit4" "Digit4"
kVK_ANSI_6 (0x16) "Digit6" "Digit6"
kVK_ANSI_5 (0x17) "Digit7" "Digit7"
kVK_ANSI_Equal (0x18) "Equal" "Equal"
kVK_ANSI_9 (0x19) "Digit9" "Digit9"
kVK_ANSI_7 (0x1A) "Digit7" "Digit7"
kVK_ANSI_Minus (0x1B) "Minus" "Minus"
kVK_ANSI_8 (0x1C) "Digit8" "Digit8"
kVK_ANSI_0 (0x1D) "Digit0" "Digit0"
kVK_ANSI_RightBracket (0x1E) "BracketRight" "BracketRight"
kVK_ANSI_O (0x1F) "KeyO" "KeyO"
kVK_ANSI_U (0x20) "KeyU" "KeyU"
kVK_ANSI_LeftBracket (0x21) "BracketLeft" "BracketLeft"
kVK_ANSI_I (0x22) "KeyI" "KeyI"
kVK_ANSI_P (0x23) "KeyP" "KeyP"
kVK_Return (0x24) "Enter" "Enter"
kVK_ANSI_L (0x25) "KeyL" "KeyL"
kVK_ANSI_J (0x26) "KeyJ" "KeyJ"
kVK_ANSI_Quote (0x27) "Quote" "Quote"
kVK_ANSI_K (0x28) "KeyK" "KeyK"
kVK_ANSI_Semicolon (0x29) "Semicolon" "Semicolon"
kVK_Tab (0x30) "Tab" "Tab"
kVK_Space (0x31) "Space" "Space"
kVK_ANSI_Grave (0x32) "Backquote" "Backquote"
kVK_Delete (0x33) "Backspace" "Backspace"
Enter key on keypad of PowerBook (0x34) "NumpadEnter" ""
kVK_Escape (0x35) "Escape" "Escape"
right-command key (0x36) "OSRight" "OSRight"
kVK_Command (0x37) "OSLeft" "OSLeft"
kVK_Shift (0x38) "ShiftLeft" "ShiftLeft"
kVK_CapsLock (0x39) "CapsLock" "CapsLock"
kVK_Option (0x3A) "AltLeft" "AltLeft"
kVK_Control (0x3B) "ControlLeft" "ControlLeft"
kVK_RightShift (0x3C) "ShiftRight" "ShiftRight"
kVK_RightOption (0x3D) "AltRight" "AltRight"
kVK_RightControl (0x3E) "ControlRight" "ControlRight"
kVK_Function (0x3F) "Fn" (no events fired actually) "" (no events fired actually)
kVK_F17 (0x40) "F17" "F17"
kVK_ANSI_KeypadDecimal (0x41) "NumpadDecimal" "NumpadDecimal"
kVK_ANSI_KeypadMultiply (0x43) "NumpadMultiply" "NumpadMultiply"
kVK_ANSI_KeypadPlus (0x45) "NumpadAdd" "NumpadAdd"
kVK_ANSI_KeypadClear (0x47) "NumLock" "NumLock"
kVK_VolumeUp (0x48) "VolumeUp" "VolumeUp"
kVK_VolumeDown (0x49) "VolumeDown" "VolumeDown"
kVK_Mute (0x4A) "VolumeMute" "VolumeMute"
kVK_ANSI_KeypadDivide (0x4B) "NumpadDivide" "NumpadDivide"
kVK_ANSI_KeypadEnter (0x4C) "NumpadEnter" "NumpadEnter"
kVK_ANSI_KeypadMinus (0x4E) "NumpadSubtract" "NumpadSubtract"
kVK_F18 (0x4F) "F18" "F18"
kVK_F19 (0x50) "F19" "F19"
kVK_ANSI_KeypadEquals (0x51) "NumpadEqual" "NumpadEqual"
kVK_ANSI_Keypad0 (0x52) "Numpad0" "Numpad0"
kVK_ANSI_Keypad1 (0x53) "Numpad1" "Numpad1"
kVK_ANSI_Keypad2 (0x54) "Numpad2" "Numpad2"
kVK_ANSI_Keypad3 (0x55) "Numpad3" "Numpad3"
kVK_ANSI_Keypad4 (0x56) "Numpad4" "Numpad4"
kVK_ANSI_Keypad5 (0x57) "Numpad5" "Numpad5"
kVK_ANSI_Keypad6 (0x58) "Numpad6" "Numpad6"
kVK_ANSI_Keypad7 (0x59) "Numpad7" "Numpad7"
kVK_F20 (0x5A) "F20" "F20"
kVK_ANSI_Keypad8 (0x5B) "Numpad8" "Numpad8"
kVK_ANSI_Keypad9 (0x5C) "Numpad9" "Numpad9"
kVK_JIS_Yen (0x5D) "IntlYen" "IntlYen"
kVK_JIS_Underscore (0x5E) "IntlRo" "IntlRo"
kVK_JIS_KeypadComma (0x5F) "NumpadComma" "NumpadComma"
kVK_F5 (0x60) "F5" "F5"
kVK_F6 (0x61) "F6" "F6"
kVK_F7 (0x62) "F7" "F7"
kVK_F3 (0x63) "F3" "F3"
kVK_F8 (0x64) "F8" "F8"
kVK_F9 (0x65) "F9" "F9"
kVK_JIS_Eisu (0x66) "Lang2" "" (no events fired actually)
kVK_F11 (0x67) "F11" "F11"
kVK_JIS_Kana (0x68) "Lang1" "KanaMode" (no events fired actually)
kVK_F13 (0x69) "F13" "F13"
kVK_F16 (0x6A) "F16" "F16"
kVK_F14 (0x6B) "F14" "F14"
kVK_F10 (0x6D) "F10" "F10"
kVK_F12 (0x6F) "F12" "F12"
kVK_F15 (0x71) "F15" "F15"
kVK_Help (0x72) "Help" "Insert"
kVK_Home (0x73) "Home" "Home"
kVK_PageUp (0x74) "PageUp" "PageUp"
kVK_ForwardDelete (0x75) "Delete" "Delete"
kVK_F4 (0x76) "F4" "F4"
kVK_End (0x77) "End" "End"
kVK_F2 (0x78) "F2" "F2"
kVK_PageDown (0x79) "PageDown" "PageDown"
kVK_F1 (0x7A) "F1" "F1"
kVK_LeftArrow (0x7B) "ArrowLeft" "ArrowLeft"
kVK_RightArrow (0x7C) "ArrowRight" "ArrowRight"
kVK_DownArrow (0x7D) "ArrowDown" "ArrowDown"
kVK_UpArrow (0x7E) "ArrowUp" "ArrowUp"

Code values on Linux (X11) (When scancode is available)

Note that X has too many keys and some of them are not testable with usual keyboard. So, following table is created from source code which maps from scancode to code value.

scancode (hardware_keycode) Gecko Chromium (44)
0x0009 "Escape" "Escape"
0x000A "Digit1" "Digit1"
0x000B "Digit2" "Digit2"
0x000C "Digit3" "Digit3"
0x000D "Digit4" "Digit4"
0x000E "Digit5" "Digit5"
0x000F "Digit6" "Digit6"
0x0010 "Digit7" "Digit7"
0x0011 "Digit8" "Digit8"
0x0012 "Digit9" "Digit9"
0x0013 "Digit0" "Digit0"
0x0014 "Minus" "Minus"
0x0015 "Equal" "Equal"
0x0016 "Backspace" "Backspace"
0x0017 "Tab" "Tab"
0x0018 "KeyQ" "KeyQ"
0x0019 "KeyW" "KeyW"
0x001A "KeyE" "KeyE"
0x001B "KeyR" "KeyR"
0x001C "KeyT" "KeyT"
0x001D "KeyY" "KeyY"
0x001E "KeyU" "KeyU"
0x001F "KeyI" "KeyI"
0x0020 "KeyO" "KeyO"
0x0021 "KeyP" "KeyP"
0x0022 "BracketLeft" "BracketLeft"
0x0023 "BracketRight" "BracketRight"
0x0024 "Enter" "Enter"
0x0025 "ControlLeft" "ControlLeft"
0x0026 "KeyA" "KeyA"
0x0027 "KeyS" "KeyS"
0x0028 "KeyD" "KeyD"
0x0029 "KeyF" "KeyF"
0x002A "KeyG" "KeyG"
0x002B "KeyH" "KeyH"
0x002C "KeyJ" "KeyJ"
0x002D "KeyK" "KeyK"
0x002E "KeyL" "KeyL"
0x002F "Semicolon" "Semicolon"
0x0030 "Quote" "Quote"
0x0031 "Backquote" "Backquote"
0x0032 "ShiftLeft" "ShiftLeft"
0x0033 "Backslash" "Backslash"
0x0034 "KeyZ" "KeyZ"
0x0035 "KeyX" "KeyX"
0x0036 "KeyC" "KeyC"
0x0037 "KeyV" "KeyV"
0x0038 "KeyB" "KeyB"
0x0039 "KeyN" "KeyN"
0x003A "KeyM" "KeyM"
0x003B "Comma" "Comma"
0x003C "Period" "Period"
0x003D "Slash" "Slash"
0x003E "ShiftRight" "ShiftRight"
0x003F "NumpadMultiply" "NumpadMultiply"
0x0040 "AltLeft" "AltLeft"
0x0041 "Space" "Space"
0x0042 "CapsLock" "CapsLock"
0x0043 "F1" "F1"
0x0044 "F2" "F2"
0x0045 "F3" "F3"
0x0046 "F4" "F4"
0x0047 "F5" "F5"
0x0048 "F6" "F6"
0x0049 "F7" "F7"
0x004A "F8" "F8"
0x004B "F9" "F9"
0x004C "F10" "F10"
0x004D "NumLock" "NumLock"
0x004E "ScrollLock" "ScrollLock"
0x004F "Numpad7" "Numpad7"
0x0050 "Numpad8" "Numpad8"
0x0051 "Numpad9" "Numpad9"
0x0052 "NumpadSubtract" "NumpadSubtract"
0x0053 "Numpad4" "Numpad4"
0x0054 "Numpad5" "Numpad5"
0x0055 "Numpad6" "Numpad6"
0x0056 "NumpadAdd" "NumpadAdd"
0x0057 "Numpad1" "Numpad1"
0x0058 "Numpad2" "Numpad2"
0x0059 "Numpad3" "Numpad3"
0x005A "Numpad0" "Numpad0"
0x005B "NumpadDecimal" "NumpadDecimal"
0x005C, 0x005D "" ""
0x005E "IntlBackslash" "IntlBackslash"
0x005F "F11" "F11"
0x0060 "F12" "F12"
0x0061 "IntlRo" "IntlRo"
0x0062, 0x0063 "" ""
0x0064 "Convert" "Convert"
0x0065 "KanaMode" "KanaMode"
0x0066 "NonConvert" "NonConvert"
0x0067 "" ""
0x0068 "NumpadEnter" "NumpadEnter"
0x0069 "ControlRight" "ControlRight"
0x006A "NumpadDivide" "NumpadDivide"
0x006B "PrintScreen" "PrintScreen"
0x006C "AltRight" "AltRight"
0x006D "" ""
0x006E "Home" "Home"
0x006F "ArrowUp" "ArrowUp"
0x0070 "PageUp" "PageUp"
0x0071 "ArrowLeft" "ArrowLeft"
0x0072 "ArrowRight" "ArrowRight"
0x0073 "End" "End"
0x0074 "ArrowDown" "ArrowDown"
0x0075 "PageDown" "PageDown"
0x0076 "Insert" "Insert"
0x0077 "Delete" "Delete"
0x0078 "" ""
0x0079 "VolumeMute" "VolumeMute"
0x007A "VolumeDown" "VolumeDown"
0x007B "VolumeUp" "VolumeUp"
0x007C "" "Power"
0x007D "NumpadEqual" "NumpadEqual"
0x007E "" "NumpadChangeSign"
0x007F "Pause" "Pause"
0x0080 "" ""
0x0081 "NumpadComma" ""
0x0082 "Lang1" "HangulMode"
0x0083 "Lang2" "Hanja"
0x0084 "IntlYen" "IntlYen"
0x0085 "OSLeft" "OSLeft"
0x0086 "OSRight" "OSRight"
0x0087 "ContextMenu" "ContextMenu"
0x0088 "BrowserStop" "Cancel"
0x0089 "Again" Requires Gecko 38.0 ""
0x008A "Props" Requires Gecko 38.0 ""
0x008B "Undo" Requires Gecko 38.0 "Undo"
0x008C "Select" Requires Gecko 38.0 ""
0x008D "Copy" Requires Gecko 38.0 "Copy"
0x008E "Open" Requires Gecko 38.0 ""
0x008F "Paste" Requires Gecko 38.0 "Paste"
0x0090 "Find" Requires Gecko 38.0 ""
0x0091 "Cut" Requires Gecko 38.0 "Cut"
0x0092 "Help" "Help"
0x0093 "" ""
0x0094 "LaunchApp2" ""
0x0095, 0x0096 "" ""
0x0097 "WakeUp" ""
0x0098 "LaunchApp1" ""
0x00990x00A2 "" ""
0x00A3 "LaunchMail" ""
0x00A4 "BrowserFavorites" ""
0x00A5 "" ""
0x00A6 "BrowserBack" "BrowserBack"
0x00A7 "BrowserForward" "BrowserForward"
0x00A8 "" ""
0x00A9 "Eject" ""
0x00AA "" ""
0x00AB "MediaTrackNext" ""
0x00AC "MediaPlayPause" ""
0x00AD "MediaTrackPrevious" ""
0x00AE "MediaStop" ""
0x00AF0x00B2 "" ""
0x00B3 "MediaSelect" ""
0x00B4 "BrowserHome" ""
0x00B5 "BrowserRefresh" "BrowserRefresh"
0x00B60x00BA "" ""
0x00BB "" "NumpadParenLeft"
0x00BC "" "NumpadParenRight"
0x00BD, 0x00BE "" ""
0x00BF "F13" ""
0x00C0 "F14" ""
0x00C1 "F15" ""
0x00C2 "F16" ""
0x00C3 "F17" ""
0x00C4 "F18" ""
0x00C5 "F19" ""
0x00C6 "F20" ""
0x00C7 "F21" ""
0x00C8 "F22" ""
0x00C9 "F23" ""
0x00CA "F24" ""
0x00CB ~ 0x00E0 "" ""
0x00E1 "BrowserSearch" ""

Code values on Android and Firefox OS (When scancode is available)

scancode Gecko
0x0001 "Escape"
0x0002 "Digit1"
0x0003 "Digit2"
0x0004 "Digit3"
0x0005 "Digit4"
0x0006 "Digit5"
0x0007 "Digit6"
0x0008 "Digit7"
0x0009 "Digit8"
0x000A "Digit9"
0x000B "Digit0"
0x000C "Minus"
0x000D "Equal"
0x000E "Backspace"
0x000F "Tab"
0x0010 "KeyQ"
0x0011 "KeyW"
0x0012 "KeyE"
0x0013 "KeyR"
0x0014 "KeyT"
0x0015 "KeyY"
0x0016 "KeyU"
0x0017 "KeyI"
0x0018 "KeyO"
0x0019 "KeyP"
0x001A "BracketLeft"
0x001B "BracketRight"
0x001C "Enter"
0x001D "ControlLeft"
0x001E "KeyA"
0x001F "KeyS"
0x0020 "KeyD"
0x0021 "KeyF"
0x0022 "KeyG"
0x0023 "KeyH"
0x0024 "KeyJ"
0x0025 "KeyK"
0x0026 "KeyL"
0x0027 "Semicolon"
0x0028 "Quote"
0x0029 "Backquote"
0x002A "ShiftLeft"
0x002B "Backslash"
0x002C "KeyZ"
0x002D "KeyX"
0x002E "KeyC"
0x002F "KeyV"
0x0030 "KeyB"
0x0031 "KeyN"
0x0032 "KeyM"
0x0033 "Comma"
0x0034 "Period"
0x0035 "Slash"
0x0036 "ShiftRight"
0x0037 "NumpadMultiply"
0x0038 "AltLeft"
0x0039 "Space"
0x003A "CapsLock"
0x003B "F1"
0x003C "F2"
0x003D "F3"
0x003E "F4"
0x003F "F5"
0x0040 "F6"
0x0041 "F7"
0x0042 "F8"
0x0043 "F9"
0x0044 "F10"
0x0045 "NumLock"
0x0046 "ScrollLock"
0x0047 "Numpad7"
0x0048 "Numpad8"
0x0049 "Numpad9"
0x004A "NumpadSubtract"
0x004B "Numpad4"
0x004C "Numpad5"
0x004D "Numpad6"
0x004E "NumpadAdd"
0x004F "Numpad1"
0x0050 "Numpad2"
0x0051 "Numpad3"
0x0052 "Numpad0"
0x0053 "NumpadDecimal"
0x0054, 0x0055 ""
0x0056 "IntlBackslash"
0x0057 "F11"
0x0058 "F12"
0x0059 "IntlRo"
0x005A, 0x005B ""
0x005C "Convert"
0x005D "KanaMode"
0x005E "NonConvert"
0x005F ""
0x0060 "NumpadEnter"
0x0061 "ControlRight"
0x0062 "NumpadDivide"
0x0063 "PrintScreen"
0x0064 "AltRight"
0x0065 ""
0x0066 "Home"
0x0067 "ArrowUp"
0x0068 "PageUp"
0x0069 "ArrowLeft"
0x006A "ArrowRight"
0x006B "End"
0x006C "ArrowDown"
0x006D "PageDown"
0x006E "Insert"
0x006F "Delete"
0x0070 ""
0x0071 "VolumeMute"
0x0072 "VolumeDown"
0x0073 "VolumeUp"
0x0074 "Power"
0x0075 "NumpadEqual"
0x0076 ""
0x0077 "Pause"
0x0078 ""
0x0079 "NumpadComma"
0x007A "Lang1"
0x007B "Lang2"
0x007C "IntlYen"
0x007D "OSLeft"
0x007E "OSRight"
0x007F "ContextMenu"
0x0080 "BrowserStop"
0x0081 "Again" Requires Gecko 38.0
0x0082 "Props" Requires Gecko 38.0
0x0083 "Undo" Requires Gecko 38.0
0x0084 "Select" Requires Gecko 38.0
0x0085 "Copy" Requires Gecko 38.0
0x0086 "Open" Requires Gecko 38.0
0x0087 "Paste" Requires Gecko 38.0
0x0088 "Find" Requires Gecko 38.0
0x0089 "Cut" Requires Gecko 38.0
0x008A "Help"
0x008B0x008D ""
0x008E "Sleep"
0x008F "WakeUp"
0x0090 "LaunchApp1"
0x00910x009B ""
0x009C "BrowserFavorites"
0x009D ""
0x009E "BrowserBack"
0x009F "BrowserForward"
0x00A0 ""
0x00A1 "Eject"
0x00A2 ""
0x00A3 "MediaTrackNext"
0x00A4 "MediaPlayPause"
0x00A5 "MediaTrackPrevious"
0x00A6 "MediaStop"
0x00A70x00AC ""
0x00AD "BrowserRefresh"
0x00AE0x00B6 ""
0x00B7 "F13"
0x00B8 "F14"
0x00B9 "F15"
0x00BA "F16"
0x00BB "F17"
0x00BC "F18"
0x00BD "F19"
0x00BE "F20"
0x00BF "F21"
0x00C0 "F22"
0x00C1 "F23"
0x00C2 "F24"
0x00C30x00D8 ""
0x00D9 "BrowserSearch"
0x00DA0x01CF ""
0x01D0 "Fn"

Document Tags and Contributors

 Last updated by: Imphil,