The KeyboardEvent.code
property represents a physical key, that is value not changed neither by the modifier state, nor by keyboard layout.
If the inputting keyboard isn't a physical keyboard, e.g., using virtual keyboard or accessibility tools, web browsers should set proper code value for compatibility as far as possible.
Uninitialized value must be ""
(empty string).
This is useful when you attempt to distinguish keys physically. However, you need to be careful when you reference this value for printable key events. For example, "KeyQ"
is set for the "q" key of the QWERTY keyboard layout, the "'" key of the Dvorak keyboard layout and the "a" key of the AZERTY keyboard layout. This means that you cannot show the actual key label for users. In other words, it's impossible to generate a proper tutorial for all users if some of them use an unexpected keyboard layout.
Example
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: only available on Nightly, Aurora and Developer Editions. Starting with Gecko 38.0 (Firefox 38.0 / Thunderbird 38.0 / SeaMonkey 2.35), it's enabled in release builds, too.
[3] Edge feature request on UserVoice
Code values
The following tables show what code values are used for each native scancode or virtual keycode.
Code values on Windows (When scancode is available)
scancode | Gecko | Chromium (48) |
---|---|---|
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 |
"" |
"" |
0xE000 ~ 0xE007 |
"" |
"" |
0xE008 |
"" |
"Undo" |
0xE009 |
"" |
"" |
0xE00A |
"" |
"Paste" |
0xE00B ~ 0xE00F |
"" | "" |
0xE010 |
"MediaTrackPrevious" |
"MediaTrackPrevious" |
0xE011 ~ 0xE016 |
"" |
"" |
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" |
0xE025 ~ 0xE02B |
"" |
"" |
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" |
0xE03C ~ 0xE044 |
"" |
"" |
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" |
0xE054 ~ 0xE05A |
"" |
"" |
0xE05B |
"OSLeft" |
"OSLeft" |
0xE05C |
"OSRight" |
"OSRight" |
0xE05D |
"ContextMenu" |
"ContextMenu" |
0xE05E |
"Power" |
"" |
0xE05F ~ 0xE064 |
"" |
"" |
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 mapps 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" |
"" |
0x0099 ~ 0x00A2 |
"" |
"" |
0x00A3 |
"LaunchMail" |
"" |
0x00A4 |
"BrowserFavorites" |
"" |
0x00A5 |
"" |
"" |
0x00A6 |
"BrowserBack" |
"BrowserBack" |
0x00A7 |
"BrowserForward" |
"BrowserForward" |
0x00A8 |
"" |
"" |
0x00A9 |
"Eject" |
"" |
0x00AA |
"" |
"" |
0x00AB |
"MediaTrackNext" |
"" |
0x00AC |
"MediaPlayPause" |
"" |
0x00AD |
"MediaTrackPrevious" |
"" |
0x00AE |
"MediaStop" |
"" |
0x00AF ~ 0x00B2 |
"" |
"" |
0x00B3 |
"MediaSelect" |
"" |
0x00B4 |
"BrowserHome" |
"" |
0x00B5 |
"BrowserRefresh" |
"BrowserRefresh" |
0x00B6 ~ 0x00BA |
"" |
"" |
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" |
0x008B ~ 0x008D |
"" |
0x008E |
"Sleep" |
0x008F |
"WakeUp" |
0x0090 |
"LaunchApp1" |
0x0091 ~ 0x009B |
"" |
0x009C |
"BrowserFavorites" |
0x009D |
"" |
0x009E |
"BrowserBack" |
0x009F |
"BrowserForward" |
0x00A0 |
"" |
0x00A1 |
"Eject" |
0x00A2 |
"" |
0x00A3 |
"MediaTrackNext" |
0x00A4 |
"MediaPlayPause" |
0x00A5 |
"MediaTrackPrevious" |
0x00A6 |
"MediaStop" |
0x00A7 ~ 0x00AC |
"" |
0x00AD |
"BrowserRefresh" |
0x00AE ~ 0x00B6 |
"" |
0x00B7 |
"F13" |
0x00B8 |
"F14" |
0x00B9 |
"F15" |
0x00BA |
"F16" |
0x00BB |
"F17" |
0x00BC |
"F18" |
0x00BD |
"F19" |
0x00BE |
"F20" |
0x00BF |
"F21" |
0x00C0 |
"F22" |
0x00C1 |
"F23" |
0x00C2 |
"F24" |
0x00C3 ~ 0x00D8 |
"" |
0x00D9 |
"BrowserSearch" |
0x00DA ~ 0x01CF |
"" |
0x01D0 |
"Fn" |