← 返回首页
Code values for keyboard events - Web APIs | MDN

Code values for keyboard events

The following tables show what code values are used for each native scancode or virtual keycode on major platforms. The reason is that 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.

In this article

Code values on Windows

This table shows the Windows scan codes representing keys and the KeyboardEvent.code values which correspond to those hardware keys. Only keys which generate scan codes on Windows are listed.

In the cells, "(❌ Missing)" means that this code value cannot be detected on this browser; "(⚠️ Not the same on xyz)" means that this string represents a different code value on the browser xyz and that special care has to be done when using it.

KeyboardEvent.code value Code Firefox Chrome 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008 0x0009 0x000A 0x000B 0x000C 0x000D 0x000E 0x000F 0x0010 0x0011 0x0012 0x0013 0x0014 0x0015 0x0016 0x0017 0x0018 0x0019 0x001A 0x001B 0x001C 0x001D 0x001E 0x001F 0x0020 0x0021 0x0022 0x0023 0x0024 0x0025 0x0026 0x0027 0x0028 0x0029 0x002A 0x002B 0x002C 0x002D 0x002E 0x002F 0x0030 0x0031 0x0032 0x0033 0x0034 0x0035 0x0036 0x0037 0x0038 0x0039 0x003A 0x003B 0x003C 0x003D 0x003E 0x003F 0x0040 0x0041 0x0042 0x0043 0x0044 0x0045 0x0046 0x0047 0x0048 0x0049 0x004A 0x004B 0x004C 0x004D 0x004E 0x004F 0x0050 0x0051 0x0052 0x0053 0x0054 (Alt + PrintScreen) 0x0055 0x0056 0x0057 0x0058 0x0059 0x005A 0x005B 0x005C 0x005D 0x005E 0x005F 0x0060 0x0061 0x0062 0x0063 0x0064 0x0065 0x0066 0x0067 0x0068 0x0069 0x006A 0x006B 0x006C 0x006D 0x006E 0x006F 0x0070 0x0071 (Hanja key without Korean keyboard layout) 0x0072 (Han/Yeong key without Korean keyboard layout) 0x0073 0x0074, 0x0075 0x0076 0x0077 0x0078 0x0079 0x007A 0x007B 0x007C 0x007D 0x007E 0x007F 0xE000 ~ 0xE007 0xE008 0xE009 0xE00A 0xE00B ~ 0xE00F 0xE010 0xE011 ~ 0xE016 0xE017 0xE018 0xE019 0xE01A, 0xE01B 0xE01C 0xE01D 0xE01E 0xE01F 0xE020 0xE021 0xE022 0xE023 0xE024 0xE025 ~ 0xE02B 0xE02C 0xE02D 0xE02E 0xE02F 0xE030 0xE031 0xE032 0xE033, 0xE034 0xE035 0xE036 0xE037 0xE038 0xE039, 0xE03A 0xE03B 0xE03C ~ 0xE044 0xE045 0xE046 (Ctrl + Pause) 0xE047 0xE048 0xE049 0xE04A 0xE04B 0xE04C 0xE04D 0xE04E 0xE04F 0xE050 0xE051 0xE052 0xE053 0xE054 ~ 0xE05A 0xE05B 0xE05C 0xE05D 0xE05E 0xE05F 0xE060 ~ 0xE062 0xE063 0xE064 0xE065 0xE066 0xE067 0xE068 0xE069 0xE06A 0xE06B 0xE06C 0xE06D 0xE06E ~ 0xE0F0 0xE0F1 (Hanja key with Korean keyboard layout) 0xE0F2 (Han/Yeong key with Korean keyboard layout)

"Unidentified"

""
"Escape" "Escape"
"Digit1" "Digit1"
"Digit2" "Digit2"
"Digit3" "Digit3"
"Digit4" "Digit4"
"Digit5" "Digit5"
"Digit6" "Digit6"
"Digit7" "Digit7"
"Digit8" "Digit8"
"Digit9" "Digit9"
"Digit0" "Digit0"
"Minus" "Minus"
"Equal" "Equal"
"Backspace" "Backspace"
"Tab" "Tab"
"KeyQ" "KeyQ"
"KeyW" "KeyW"
"KeyE" "KeyE"
"KeyR" "KeyR"
"KeyT" "KeyT"
"KeyY" "KeyY"
"KeyU" "KeyU"
"KeyI" "KeyI"
"KeyO" "KeyO"
"KeyP" "KeyP"
"BracketLeft" "BracketLeft"
"BracketRight" "BracketRight"
"Enter" "Enter"
"ControlLeft" "ControlLeft"
"KeyA" "KeyA"
"KeyS" "KeyS"
"KeyD" "KeyD"
"KeyF" "KeyF"
"KeyG" "KeyG"
"KeyH" "KeyH"
"KeyJ" "KeyJ"
"KeyK" "KeyK"
"KeyL" "KeyL"
"Semicolon" "Semicolon"
"Quote" "Quote"
"Backquote" "Backquote"
"ShiftLeft" "ShiftLeft"
"Backslash" "Backslash"
"KeyZ" "KeyZ"
"KeyX" "KeyX"
"KeyC" "KeyC"
"KeyV" "KeyV"
"KeyB" "KeyB"
"KeyN" "KeyN"
"KeyM" "KeyM"
"Comma" "Comma"
"Period" "Period"
"Slash" "Slash"
"ShiftRight" "ShiftRight"
"NumpadMultiply" "NumpadMultiply"
"AltLeft" "AltLeft"
"Space" "Space"
"CapsLock" "CapsLock"
"F1" "F1"
"F2" "F2"
"F3" "F3"
"F4" "F4"
"F5" "F5"
"F6" "F6"
"F7" "F7"
"F8" "F8"
"F9" "F9"
"F10" "F10"
"Pause" "Pause"
"ScrollLock" "ScrollLock"
"Numpad7" "Numpad7"
"Numpad8" "Numpad8"
"Numpad9" "Numpad9"
"NumpadSubtract" "NumpadSubtract"
"Numpad4" "Numpad4"
"Numpad5" "Numpad5"
"Numpad6" "Numpad6"
"NumpadAdd" "NumpadAdd"
"Numpad1" "Numpad1"
"Numpad2" "Numpad2"
"Numpad3" "Numpad3"
"Numpad0" "Numpad0"
"NumpadDecimal" "NumpadDecimal"
"PrintScreen" (⚠️ Not the same on Chrome) "" (❌ Missing)
"Unidentified" ""
"IntlBackslash" "IntlBackslash"
"F11" "F11"
"F12" "F12"
"NumpadEqual" "NumpadEqual" (was "" prior to Chrome 48)
"Unidentified" ""
"Unidentified" "" (was "F13" prior to Chrome 48)
"Unidentified" "" (was "F14" prior to Chrome 48)
"Unidentified" "" (was "F15" prior to Chrome 48)
"Unidentified" ""
"Unidentified" ""
"Unidentified" ""
"Unidentified" ""
"Unidentified" ""
"Unidentified" "" (was "F16" prior to Chrome 48)
"F13" "F13" (was "F17" prior to Chrome 48)
"F14" "F14" (was "F18" prior to Chrome 48)
"F15" "F15" (was "F19" prior to Chrome 48)
"F16" "F16" (was "F20" prior to Chrome 48)
"F17" "F17" (was "F21" prior to Chrome 48)
"F18" "F18" (was "F22" prior to Chrome 48)
"F19" "F19" (was "F23" prior to Chrome 48)
"F20" "F20" (was "F24" prior to Chrome 48)
"F21" "F21" (was "" prior to Chrome 48)
"F22" "F22" (was "" prior to Chrome 48)
"F23" "F23" (was "" prior to Chrome 48)
"Unidentified" ""
"KanaMode" "KanaMode" (was "" prior to Chrome 48)
"Lang2" "Lang2" (was "" prior to Chrome 48)
"Lang1" "Lang1" (was "" prior to Chrome 48)
"IntlRo" "IntlRo" (was "" prior to Chrome 48)
"Unidentified" ""
"F24" "F24" (was "" prior to Chrome 48)
"Unidentified" (❌ Missing) "Lang4" (was "" prior to Chrome 48) (⚠️ Not the same on Firefox)
"Unidentified" (❌ Missing) "Lang3" (was "" prior to Chrome 48) (⚠️ Not the same on Firefox)
"Convert" "Convert" (was "" prior to Chrome 48)
"Unidentified" ""
"NonConvert" "NonConvert" (was "" prior to Chrome 48)
"Unidentified" ""
"IntlYen" "IntlYen"
"NumpadComma" "NumpadComma" (was "" prior to Chrome 48)
"Unidentified" ""
"Unidentified" ""
"Unidentified" (❌ Missing) "Undo" (⚠️ Not the same on Firefox)
"Unidentified" ""
"" (❌ Missing) "Paste" (⚠️ Not the same on Firefox)
"" ""
"MediaTrackPrevious" "MediaTrackPrevious"
"" ""
"Unidentified" (❌ Missing) "Cut" (⚠️ Not the same on Firefox)
"Unidentified" (❌ Missing) "Copy" (⚠️ Not the same on Firefox)
"MediaTrackNext" "MediaTrackNext"
"Unidentified" ""
"NumpadEnter" "NumpadEnter"
"ControlRight" "ControlRight"
"Unidentified" "" (was "LaunchMail" prior to Chrome 48)
"Unidentified" ""
"AudioVolumeMute" "AudioVolumeMute"
"LaunchApp2" "LaunchApp2" (was "" prior to Chrome 48)
"MediaPlayPause" "MediaPlayPause"
"Unidentified" ""
"MediaStop" "MediaStop"
"Unidentified" ""
"Unidentified" (❌ Missing) "Eject" (⚠️ Not the same on Firefox)
"Unidentified" ""
"VolumeDown" (⚠️ Not the same on Chrome) "AudioVolumeDown" (was "VolumeDown" prior to Chrome 52) (⚠️ Not the same on Firefox)
"Unidentified" ""
"VolumeUp" (⚠️ Not the same on Chrome) "AudioVolumeUp" (was "VolumeUp" prior to Chrome 52) (⚠️ Not the same on Firefox)
"Unidentified" ""
"BrowserHome" "BrowserHome"
"Unidentified" ""
"NumpadDivide" "NumpadDivide"
"Unidentified" ""
"PrintScreen" "PrintScreen"
"AltRight" "AltRight"
"Unidentified" ""
"Unidentified" (❌ Missing) "Help" (⚠️ Not the same on Firefox)
"Unidentified" ""
"NumLock" "NumLock"
"Pause" "Pause"
"Home" "Home"
"ArrowUp" "ArrowUp"
"PageUp" "PageUp"
"Unidentified" ""
"ArrowLeft" "ArrowLeft"
"Unidentified" ""
"ArrowRight" "ArrowRight"
"Unidentified" ""
"End" "End"
"ArrowDown" "ArrowDown"
"PageDown" "PageDown"
"Insert" "Insert"
"Delete" "Delete"
"Unidentified" ""
"MetaLeft" (was "OSLeft" prior to Firefox 118) "MetaLeft" (was "OSLeft" prior to Chrome 52)
"MetaRight" (was "OSRight" prior to Firefox 118) "MetaRight" (was "OSRight" prior to Chrome 52)
"ContextMenu" "ContextMenu"
"Power" "Power" (was "" prior to Chrome 48)
"Unidentified" (❌ Missing) "Sleep" (was "" prior to Chrome 48) (⚠️ Not the same on Firefox)
"Unidentified" ""
"Unidentified" (❌ Missing) "WakeUp" (was "" prior to Chrome 48) (⚠️ Not the same on Firefox)
"Unidentified" ""
"BrowserSearch" "BrowserSearch"
"BrowserFavorites" "BrowserFavorites"
"BrowserRefresh" "BrowserRefresh"
"BrowserStop" "BrowserStop"
"BrowserForward" "BrowserForward"
"BrowserBack" "BrowserBack"
"LaunchApp1" "LaunchApp1" (was "" prior to Chrome 48)
"LaunchMail" "LaunchMail" (was "" prior to Chrome 48)
"MediaSelect" "MediaSelect" (was "" prior to Chrome 48)
"Unidentified" ""
"Lang2" (⚠️ Not the same on Chrome) "" (❌ Missing)
"Lang1" (⚠️ Not the same on Chrome) "" (❌ Missing)

Code values on Mac

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

In the cells,

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

Code values on Linux (X11)

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.

In the cells, "(❌ Missing)" means that this code value cannot be detected on this browser.

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

"Unidentified"

""
"BrowserSearch" (⚠️ Not the same on Chromium) "BrowserSearch" (was "BrightnessUp" prior to Chromium 48)

Code values on Firefox for Android

scancode Firefox 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008 0x0009 0x000A 0x000B 0x000C 0x000D 0x000E 0x000F 0x0010 0x0011 0x0012 0x0013 0x0014 0x0015 0x0016 0x0017 0x0018 0x0019 0x001A 0x001B 0x001C 0x001D 0x001E 0x001F 0x0020 0x0021 0x0022 0x0023 0x0024 0x0025 0x0026 0x0027 0x0028 0x0029 0x002A 0x002B 0x002C 0x002D 0x002E 0x002F 0x0030 0x0031 0x0032 0x0033 0x0034 0x0035 0x0036 0x0037 0x0038 0x0039 0x003A 0x003B 0x003C 0x003D 0x003E 0x003F 0x0040 0x0041 0x0042 0x0043 0x0044 0x0045 0x0046 0x0047 0x0048 0x0049 0x004A 0x004B 0x004C 0x004D 0x004E 0x004F 0x0050 0x0051 0x0052 0x0053 0x0054, 0x0055 0x0056 0x0057 0x0058 0x0059 0x005A, 0x005B 0x005C 0x005D 0x005E 0x005F 0x0060 0x0061 0x0062 0x0063 0x0064 0x0065 0x0066 0x0067 0x0068 0x0069 0x006A 0x006B 0x006C 0x006D 0x006E 0x006F 0x0070 0x0071 0x0072 0x0073 0x0074 0x0075 0x0076 0x0077 0x0078 0x0079 0x007A 0x007B 0x007C 0x007D 0x007E 0x007F 0x0080 0x0081 0x0082 0x0083 0x0084 0x0085 0x0086 0x0087 0x0088 0x0089 0x008A 0x008B ~ 0x008D 0x008E 0x008F 0x0090 0x0091 ~ 0x009B 0x009C 0x009D 0x009E 0x009F 0x00A0 0x00A1 0x00A2 0x00A3 0x00A4 0x00A5 0x00A6 0x00A7 ~ 0x00AC 0x00AD 0x00AE ~ 0x00B6 0x00B7 0x00B8 0x00B9 0x00BA 0x00BB 0x00BC 0x00BD 0x00BE 0x00BF 0x00C0 0x00C1 0x00C2 0x00C3 ~ 0x00D8 0x00D9 0x00DA ~ 0x01CF 0x01D0
"Escape"
"Digit1"
"Digit2"
"Digit3"
"Digit4"
"Digit5"
"Digit6"
"Digit7"
"Digit8"
"Digit9"
"Digit0"
"Minus"
"Equal"
"Backspace"
"Tab"
"KeyQ"
"KeyW"
"KeyE"
"KeyR"
"KeyT"
"KeyY"
"KeyU"
"KeyI"
"KeyO"
"KeyP"
"BracketLeft"
"BracketRight"
"Enter"
"ControlLeft"
"KeyA"
"KeyS"
"KeyD"
"KeyF"
"KeyG"
"KeyH"
"KeyJ"
"KeyK"
"KeyL"
"Semicolon"
"Quote"
"Backquote"
"ShiftLeft"
"Backslash"
"KeyZ"
"KeyX"
"KeyC"
"KeyV"
"KeyB"
"KeyN"
"KeyM"
"Comma"
"Period"
"Slash"
"ShiftRight"
"NumpadMultiply"
"AltLeft"
"Space"
"CapsLock"
"F1"
"F2"
"F3"
"F4"
"F5"
"F6"
"F7"
"F8"
"F9"
"F10"
"NumLock"
"ScrollLock"
"Numpad7"
"Numpad8"
"Numpad9"
"NumpadSubtract"
"Numpad4"
"Numpad5"
"Numpad6"
"NumpadAdd"
"Numpad1"
"Numpad2"
"Numpad3"
"Numpad0"
"NumpadDecimal"

"Unidentified"

"IntlBackslash"
"F11"
"F12"
"IntlRo"

"Unidentified"

"Convert"
"KanaMode"
"NonConvert"

"Unidentified"

"NumpadEnter"
"ControlRight"
"NumpadDivide"
"PrintScreen"
"AltRight"

"Unidentified"

"Home"
"ArrowUp"
"PageUp"
"ArrowLeft"
"ArrowRight"
"End"
"ArrowDown"
"PageDown"
"Insert"
"Delete"

"Unidentified"

"VolumeMute"

"VolumeDown"

"VolumeUp"

"Power"
"NumpadEqual"

"Unidentified"

"Pause"

"Unidentified"

"NumpadComma"
"Lang1"
"Lang2"
"IntlYen"

"MetaLeft" (was "OSLeft" prior to Firefox 118)

"MetaRight" (was "OSRight" prior to Firefox 118)

"ContextMenu"
"BrowserStop"
"Again"
"Props"
"Undo"
"Select"
"Copy"
"Open"
"Paste"
"Find"
"Cut"
"Help"

"Unidentified"

"Sleep"
"WakeUp"
"LaunchApp1"

"Unidentified"

"BrowserFavorites"

"Unidentified"

"BrowserBack"
"BrowserForward"

"Unidentified"

"Eject"

"Unidentified"

"MediaTrackNext"
"MediaPlayPause"
"MediaTrackPrevious"
"MediaStop"

"Unidentified"

"BrowserRefresh"
"Unidentified"
"F13"
"F14"
"F15"
"F16"
"F17"
"F18"
"F19"
"F20"
"F21"
"F22"
"F23"
"F24"

"Unidentified"

"BrowserSearch"

"Unidentified"

"Fn"