KeyboardEvent: keyCode 属性

已弃用: 此功能不再推荐。虽然一些浏览器可能仍然支持它,但它可能已经从相关的 Web 标准中删除,或者正在被删除,或者可能只为了兼容性目的而保留。避免使用它,并尽可能更新现有代码;查看本页底部 的兼容性表格以指导您的决定。请注意,此功能可能随时停止工作。

已弃用的 KeyboardEvent.keyCode 只读属性表示一个系统和实现相关的数字代码,它标识按下的键的未修改值。

这通常是与键对应的十进制 ASCII (RFC 20) 或 Windows 1252 代码。如果无法识别键,则此值为 0

如果可能,您应该避免使用它;它已经弃用了一段时间。相反,您应该使用 KeyboardEvent.code(用于按下的物理键)或 KeyboardEvent.key(用于键映射到的字符)。如果您要针对非常旧的浏览器,请检查这两个属性的兼容性。

注意: Web 开发人员在处理 keydownkeyup 事件时,不应使用 keyCode 属性来表示可打印字符。如上所述,keyCode 属性对可打印字符(特别是那些使用 ShiftAlt 键按下的字符)没有用。

keyCode 的值

标准位置上的可打印键

按下或释放标准位置上的可打印键所触发的键事件的值在不同浏览器之间不兼容。

IE 只是将本机虚拟键码值公开为 KeyboardEvent.keyCode

Google Chrome、Chromium 和 Safari 必须从输入字符中确定该值。如果输入的字符可以使用美国键盘布局输入,则它们使用美国键盘布局上的 keyCode 值。

Firefox 从 ASCII 字符中获取 keyCode 值,这些字符可以通过该键输入 - 即使使用 Shift 修饰符或支持 ASCII 的键盘布局。有关详细信息,请参见以下规则

  1. 如果系统是 Windows 并且按下的键的本机键码表明该键是 a-z 或 0-9,则使用该键的键码。
  2. 如果系统是 Mac 并且按下的键的本机键码表明该键是 0-9,则使用该键的键码。
  3. 如果按下的键在没有修饰符键的情况下输入一个 ASCII 字母或数字字符,则使用该键的键码。
  4. 如果按下的键在使用 Shift 键修饰符的情况下输入一个 ASCII 字母或数字字符,则使用该键的键码。
  5. 如果按下的键在没有修饰符键的情况下输入一个不同的 ASCII 字符,则使用该键的键码。
  6. 如果按下的键在使用 Shift 键修饰符的情况下输入一个不同的 ASCII 字符,则使用该键的键码。
  7. 否则,即按下的键输入一个 Unicode 字符
    1. 如果键盘布局支持 ASCII(即可以输入 ASCII 字母),则使用 0 或使用以下附加规则进行计算。
    2. 否则,即键盘布局不支持 ASCII,则使用环境中优先级最高的已安装的 ASCII 支持键盘布局
      1. 如果按下的键在备用键盘布局上输入一个 ASCII 字母或数字字符,则使用该键的键码。
      2. 否则,使用 0 或使用以下附加规则进行计算。

Gecko 设置尽可能多的标点符号键的 keyCode 值(当达到上述列表中的 7.1 或 7.2 点时)并使用以下规则

警告: 这些新附加规则的目的是让那些键盘布局将 Unicode 字符映射到美国键盘布局中的标点符号键的用户能够使用仅支持 ASCII 支持键盘布局或仅支持美国键盘布局的 Firefox 的 Web 应用程序。否则,新映射的 keyCode 值可能会与其他键冲突。例如,如果活动键盘布局是俄语,则 “Period” 键和 “Slash” 键的 keyCode 值均为 190 (KeyEvent.DOM_VK_PERIOD)。如果您需要区分这些键,但又不想自行支持世界上所有键盘布局,那么您可能应该使用 KeyboardEvent.code.

  1. 如果运行 macOS 或 Linux
    1. 如果活动键盘布局不支持 ASCII,并且有一个可用的备用 ASCII 支持键盘布局。
      1. 如果备用 ASCII 支持键盘布局仅通过未修改的键产生一个 ASCII 字符,则使用该字符的 keyCode
      2. 如果备用 ASCII 支持键盘布局使用 Shift 键修饰符产生一个 ASCII 字符,则使用该字符的 keyCode
      3. 否则,使用当美国键盘布局处于活动状态时由该键产生的 ASCII 字符的 keyCode
    2. 否则,使用当美国键盘布局处于活动状态时由该键产生的 ASCII 字符的 keyCode
  2. 如果在 Windows 上运行
    1. 使用当美国键盘布局处于活动状态时,与 Windows 中相同虚拟键码映射到的键产生的 ASCII 字符的 keyCode 值。
每个浏览器由标准位置上的可打印键触发的 keydown 事件的 keyCode 值
KeyboardEvent.code IE 11 Google Chrome 34 Chromium 34 Safari 7 Gecko 29
Windows Windows Mac (10.9) Linux (Ubuntu 14.04) Mac (10.9) Windows Mac (10.9) Linux (Ubuntu 14.04)
美国 日语 希腊语 美国 日语 希腊语 美国 日语 希腊语 美国 日语 希腊语 美国 日语 希腊语 美国 日语 希腊语 美国 日语 希腊语 美国 日语 希腊语
"Digit1" 0x31 (49) 0x31 (49) 0x31 (49) 0x31 (49) 0x31 (49) 0x31 (49) 0x31 (49) 0x31 (49)
"Digit2" 0x32 (50) 0x32 (50) 0x32 (50) 0x32 (50) 0x32 (50) 0x32 (50) 0x32 (50) 0x32 (50)
"Digit3" 0x33 (51) 0x33 (51) 0x33 (51) 0x33 (51) 0x33 (51) 0x33 (51) 0x33 (51) 0x33 (51)
"Digit4" 0x34 (52) 0x34 (52) 0x34 (52) 0x34 (52) 0x34 (52) 0x34 (52) 0x34 (52) 0x34 (52)
"Digit5" 0x35 (53) 0x35 (53) 0x35 (53) 0x35 (53) 0x35 (53) 0x35 (53) 0x35 (53) 0x35 (53)
"Digit6" 0x36 (54) 0x36 (54) 0x36 (54) 0x36 (54) 0x36 (54) 0x36 (54) 0x36 (54) 0x36 (54)
"Digit7" 0x37 (55) 0x37 (55) 0x37 (55) 0x37 (55) 0x37 (55) 0x37 (55) 0x37 (55) 0x37 (55)
"Digit8" 0x38 (56) 0x38 (56) 0x38 (56) 0x38 (56) 0x38 (56) 0x38 (56) 0x38 (56) 0x38 (56)
"Digit9" 0x39 (57) 0x39 (57) 0x39 (57) 0x39 (57) 0x39 (57) 0x39 (57) 0x39 (57) 0x39 (57)
"Digit0" 0x30 (48) 0x30 (48) 0x30 (48) 0x30 (48) 0x30 (48) 0x30 (48) 0x30 (48) 0x30 (48)
"KeyA" 0x41 (65) 0x41 (65) 0x41 (65) 0x41 (65) 0x41 (65) 0x41 (65) 0x41 (65) 0x41 (65)
"KeyB" 0x42 (66) 0x42 (66) 0x42 (66) 0x42 (66) 0x42 (66) 0x42 (66) 0x42 (66) 0x42 (66)
"KeyC" 0x43 (67) 0x43 (67) 0x43 (67) 0x43 (67) 0x43 (67) 0x43 (67) 0x43 (67) 0x43 (67)
"KeyD" 0x44 (68) 0x44 (68) 0x44 (68) 0x44 (68) 0x44 (68) 0x44 (68) 0x44 (68) 0x44 (68)
"KeyE" 0x45 (69) 0x45 (69) 0x45 (69) 0x45 (69) 0x45 (69) 0x45 (69) 0x45 (69) 0x45 (69)
"KeyF" 0x46 (70) 0x46 (70) 0x46 (70) 0x46 (70) 0x46 (70) 0x46 (70) 0x46 (70) 0x46 (70)
"KeyG" 0x47 (71) 0x47 (71) 0x47 (71) 0x47 (71) 0x47 (71) 0x47 (71) 0x47 (71) 0x47 (71)
"KeyH" 0x48 (72) 0x48 (72) 0x48 (72) 0x48 (72) 0x48 (72) 0x48 (72) 0x48 (72) 0x48 (72)
"KeyI" 0x49 (73) 0x49 (73) 0x49 (73) 0x49 (73) 0x49 (73) 0x49 (73) 0x49 (73) 0x49 (73)
"KeyJ" 0x4A (74) 0x4A (74) 0x4A (74) 0x4A (74) 0x4A (74) 0x4A (74) 0x4A (74) 0x4A (74)
"KeyK" 0x4B (75) 0x4B (75) 0x4B (75) 0x4B (75) 0x4B (75) 0x4B (75) 0x4B (75) 0x4B (75)
"KeyL" 0x4C (76) 0x4C (76) 0x4C (76) 0x4C (76) 0x4C (76) 0x4C (76) 0x4C (76) 0x4C (76)
"KeyM" 0x4D (77) 0x4D (77) 0x4D (77) 0x4D (77) 0x4D (77) 0x4D (77) 0x4D (77) 0x4D (77)
"KeyN" 0x4E (78) 0x4E (78) 0x4E (78) 0x4E (78) 0x4E (78) 0x4E (78) 0x4E (78) 0x4E (78)
"KeyO" 0x4F (79) 0x4F (79) 0x4F (79) 0x4F (79) 0x4F (79) 0x4F (79) 0x4F (79) 0x4F (79)
"KeyP" 0x50 (80) 0x50 (80) 0x50 (80) 0x50 (80) 0x50 (80) 0x50 (80) 0x50 (80) 0x50 (80)
"KeyQ" 0x51 (81) 0x51 (81) 0x51 (81) 0x51 (81) 0xBA (186)⚠️ 0x51 (81) 0x51 (81) 0xBA (186)⚠️ 0x51 (81) 0x51 (81) 0xBA (186)⚠️ 0x51 (81) 0x51 (81) 0x51 (81) 0xBA (186)⚠️ 0x51 (81)
"KeyR" 0x52 (82) 0x52 (82) 0x52 (82) 0x52 (82) 0x52 (82) 0x52 (82) 0x52 (82) 0x52 (82)
"KeyS" 0x53 (83) 0x53 (83) 0x53 (83) 0x53 (83) 0x53 (83) 0x53 (83) 0x53 (83) 0x53 (83)
"KeyT" 0x54 (84) 0x54 (84) 0x54 (84) 0x54 (84) 0x54 (84) 0x54 (84) 0x54 (84) 0x54 (84)
"KeyU" 0x55 (85) 0x55 (85) 0x55 (85) 0x55 (85) 0x55 (85) 0x55 (85) 0x55 (85) 0x55 (85)
"KeyV" 0x56 (86) 0x56 (86) 0x56 (86) 0x56 (86) 0x56 (86) 0x56 (86) 0x56 (86) 0x56 (86)
"KeyW" 0x57 (87) 0x57 (87) 0x57 (87) 0x57 (87) 0x57 (87) 0x57 (87) 0x57 (87) 0x57 (87)
"KeyX" 0x58 (88) 0x58 (88) 0x58 (88) 0x58 (88) 0x58 (88) 0x58 (88) 0x58 (88) 0x58 (88)
"KeyY" 0x59 (89) 0x59 (89) 0x59 (89) 0x59 (89) 0x59 (89) 0x59 (89) 0x59 (89) 0x59 (89)
"KeyZ" 0x5A (90) 0x5A (90) 0x5A (90) 0x5A (90) 0x5A (90) 0x5A (90) 0x5A (90) 0x5A (90)
KeyboardEvent.code 美国 日语 希腊语 美国 日语 希腊语 美国 日语 希腊语 美国 日语 希腊语 美国 日语 希腊语 美国 日语 希腊语 美国 日语 希腊语 美国 日语 希腊语
Windows Windows Mac (10.9) Linux (Ubuntu 14.04) Mac (10.9) Windows Mac (10.9) Linux (Ubuntu 14.04)
Internet Explorer 11 Google Chrome 34 Chromium 34 Safari 7 Gecko 29
每个浏览器由标准位置上的可打印键(美国布局中的标点符号)触发的 keydown 事件的 keyCode 值
KeyboardEvent.code IE 11 Google Chrome 34 Chromium 34 Safari 7 Gecko 29
Windows Windows Mac (10.9) Linux (Ubuntu 14.04) Mac (10.9) Windows (10.9) Mac (10.9) Linux (Ubuntu 14.04)
美国 日语 希腊语 美国 日语 希腊语 美国 日语 希腊语 美国 日语 希腊语 美国 日语 希腊语 美国 日语 希腊语 美国 日语 希腊语 美国 日语 希腊语
"Comma" 0xBC (188) 0xBC (188) 0xBC (188) 0xBC (188) 0xBC (188) 0xBC (188) 0xBC (188) 0xBC (188)
"Comma"Shift
"Period" 0xBE (190) 0xBE (190) 0xBE (190) 0xBE (190) 0xBE (190) 0xBE (190) 0xBE (190) 0xBE (190)
"Period"Shift
"Semicolon" 0xBA (186) 0xBB (187)⚠️ 0xBA (186) 0xBA (186) 0xBB (187)⚠️ 0xBA (186) 0xBA (186) 0xBA (186) [1] 0xE5 (229)⚠️ [2] 0xBA (186) 0xBA (186) 0xE5 (229)⚠️ [3] 0xBA (186) 0xBA (186) [1] 0xE5 (229)⚠️ [2] 0x3B (59) 0x3B (59) 0x00 (0)⚠️ 0x3B (59) 0x3B (59) [1] 0x00 (0)⚠️ 0x3B (59) 0x3B (59) 0x00 (0)⚠️
"Semicolon"Shift 0xBB (187)⚠️ [1] 0xBB (187)⚠️ 0xBB (187)⚠️ [1]
"Quote" 0xDE (222) 0xBA (186)⚠️ 0xDE (222) 0xDE (222) 0xBA (186)⚠️ 0xDE (222) 0xDE (222) 0xBA (186)⚠️ [1] 0xDE (222) 0xDE (222) 0xBA (186)⚠️ 0xDE (222) 0xDE (222) 0xBA (186)⚠️ [1] 0xDE (222) 0xDE (222) 0x3A (58)⚠️ 0xDE (222) 0xDE (222) 0x3A (58)⚠️ [1] 0xDE (222) 0xDE (222) 0x3A (58)⚠️ 0xDE (222)
"Quote" 带 Shift 键 0xDE (222)⚠️ [1] 0x38 (56)⚠️ 0xDE (222)⚠️ [1]
"BracketLeft" 0xDB (219) 0xC0(192)⚠️ 0xDB (219) 0xDB (219) 0xC0(192)⚠️ 0xDB (219) 0xDB (219) 0xDB (219) [1] 0xDB (219) 0xDB (219) 0x32 (50)⚠️ 0xDB (219) 0xDB (219) 0xDB (219) [1] 0xDB (219) 0xDB (219) 0x40 (64)⚠️ 0xDB (219) 0xDB (219) 0x40 (64)⚠️ [1] 0xDB (219) 0xDB (219) 0x40 (64)⚠️ 0xDB (219)
"BracketLeft"Shift 0xC0 (192)⚠️ [1] 0xC0 (192)⚠️ 0xC0 (192)⚠️ [1]
"BracketRight" 0xDD (221) 0xDB (219)⚠️ 0xDD (221) 0xDD (221) 0xDB (219)⚠️ 0xDD (221) 0xDD (221) 0xDB (219)⚠️ [1] 0xDD (221) 0xDD (221) 0xDB (219)⚠️ 0xDD (221) 0xDD (221) 0xDB (219)⚠️ [1] 0xDD (221) 0xDD (221) 0xDB (219)⚠️ 0xDD (221) 0xDD (221) 0xDB (219)⚠️ [1] 0xDD (221) 0xDD (221) 0xDB (219)⚠️ 0xDD (221)
"BracketRight"Shift
"Backquote" 0xC0 (192) ❌ N/A 0xC0 (192) 0xC0 (192) ❌ N/A 0xC0 (192) 0xC0 (192) 0xC0 (192) 0xF4 (244)⚠️ 0xC0 (192) 0xC0 (192) 0xC0 (192) ❌ N/A 0xC0 (192) 0xC0 (192) 0xC0 (192) 0x00 (0) 0xC0 (192)
"Backquote"Shift
"Backslash" 0xDC (220) 0xDD (221)⚠️ 0xDC (220) 0xDC (220) 0xDD (221)⚠️ 0xDC (220) 0xDC (220) 0xDC (220) 0xDD (221)⚠️ 0xDC (220) 0xDC (220) 0xDC (220) 0xDD (221)⚠️ 0xDC (220) 0xDC (220) 0xDC (220) 0xDD (221)⚠️ 0xDC (220)
"Backslash"Shift
"Minus" 0xBD (189) 0xBD (189) 0xBD (189) 0xBD (189) [1] 0xBD (189) 0xBD (189) 0xBD (189) 0xBD (189) 0xBD (189) 0xBD (189) [1] 0xBD (189) 0xAD (173) 0xAD (173) 0xAD (173)[1] 0xAD (173) 0xAD (173)
"Minus"Shift 0xBB (187)⚠️ [1] 0xBB (187)⚠️ 0xBD (189) 0xBB (187)⚠️ [1] 0xBD (189)
"Equal" 0xBB (187) 0xDE (222)⚠️ 0xBB (187) 0xBB (187) 0xDE (222)⚠️ 0xBB (187) 0xBB (187) 0xBB (187) [1] 0xBB (187) 0xBB (187) 0x36 (54)⚠️ 0xBB (187) 0xBB (187) 0xBB (187)[1] 0xBB (187) 0x3D (61) 0xA0 (160)⚠️ 0x3D (61) 0x3D (61) 0xA0 (160)⚠️ [1] 0x3D (61) 0x3D (61) 0xA0 (160)⚠️ 0x3D (61)
"Equal"Shift 0xC0 (192)⚠️ [1] 0xC0 (192)⚠️ 0xBB (187) 0xC0 (192)⚠️ [1] 0xBB (187)
"IntlRo" 0xC1 (193) 0xE2 (226)⚠️ 0xC1 (193) 0xC1 (193) 0xE2 (226)⚠️ 0xC1 (193) 0xBD (189) 0xBD (189) 0x00 (0)⚠️ [4] 0xDC (220)⚠️ [4] 0xBD (189) 0xBD (189) 0xE5 (229)⚠️ [5] 0x00 (0) 0xDC (220)⚠️ 0x00 (0) 0xA7 (167) 0xA7 (167) 0x00 (0) 0x00 (0) 0xDC (220)⚠️ 0x00 (0)
"IntlRo"Shift
"IntlYen" 0xFF (255) 0xDC (220)⚠️ 0xFF (255) 0xFF (255) 0xDC (220)⚠️ 0xFF (255) 0x00 (0)⚠️ 0x00 (0)⚠️ 0x00 (0)⚠️ [4] 0xDC (220)⚠️ [4] 0x00 (0)⚠️ 0x00 (0)⚠️ 0xE5 (229)⚠️ [5] 0x00 (0)⚠️ 0xDC (220)⚠️ 0x00 (0)⚠️ 0xDC (220) 0xDC (220) 0x00 (0)⚠️ 0x00 (0)⚠️ 0xDC (220)⚠️ 0x00 (0)⚠️
"IntlYen"Shift 0xDC (220) 0xDC (220) 0xBD (189)⚠️ 0xDC (220) 0xDC (220)
KeyboardEvent.code 美国 日语 希腊语 美国 日语 希腊语 美国 日语 希腊语 美国 日语 希腊语 美国 日语 希腊语 美国 日语 希腊语 美国 日语 希腊语 美国 日语 希腊语
Windows Windows Mac (10.9) Linux (Ubuntu 14.04) Mac (10.9) Windows Mac (10.9) Linux (Ubuntu 14.04)
Internet Explorer 11 Google Chrome 34 Chromium 34 Safari 7 Gecko 29

[1] 该值来自 JIS 键盘输入。当您使用 ANSI 键盘时,keyCode 值和输入字符将从美国键盘布局中选择。

[2] 该键是一个死键。keyup 事件的值为 0xBA (186)

[3] 该键是一个死键。keyup 事件的值为 0x10 (16)

[4] 没有触发任何键事件。

[5] 该键在希腊键盘布局中不可用(不输入任何字符)。keyup 事件的值为 0x00 (0)

不可打印键(功能键)

每个浏览器由修饰键引起的 keydown 事件的 keyCode 值
KeyboardEvent.code IE 11 Google Chrome 34 Chromium 34 Safari 7 Gecko 29
Windows Windows Mac (10.9) Linux (Ubuntu 14.04) Mac (10.9) Windows Mac (10.9) Linux (Ubuntu 14.04)
"AltLeft" 0x12 (18) 0x12 (18) 0x12 (18) 0x12 (18) 0x12 (18) 0x12 (18) 0x12 (18) 0x12 (18)
"AltRight" 0x12 (18) 0x12 (18) 0x12 (18) 0x12 (18) 0x12 (18) 0x12 (18) 0x12 (18) 0x12 (18)
"AltRight" 当它为 "AltGraph" 键时 [1] [1] ❌N/A 0xE1 (225)⚠️ ❌ N/A [1] ❌ N/A 0xE1 (225)⚠️
"CapsLock" 0x14 (20) [2] 0x14 (20) [2] 0x14 (20) 0x14 (20) 0x14 (20) 0x14 (20) [2] 0x14 (20) 0x14 (20) [3]
"ControlLeft" 0x11 (17) 0x11 (17) 0x11 (17) 0x11 (17) 0x11 (17) 0x11 (17) 0x11 (17) 0x11 (17)
"ControlRight" 0x11 (17) 0x11 (17) 0x11 (17) 0x11 (17) 0x11 (17) 0x11 (17) 0x11 (17) 0x11 (17)
"MetaLeft" 0x5B (91) 0x5B (91) 0x5B (91) 0x5B (91) 0x5B (91) 0x5B (91) 0xE0 (224)⚠️ 0x5B (91)
"MetaRight" 0x5C (92) 0x5C (92) 0x5D (93)⚠️ 0x5C (92) 0x5D (93)⚠️ 0x5B (91)⚠️ 0xE0 (224)⚠️ 0x5B (91)⚠️
"ShiftLeft" 0x10 (16) 0x10 (16) 0x10 (16) 0x10 (16) 0x10 (16) 0x10 (16) 0x10 (16) 0x10 (16)
"ShiftRight" 0x10 (16) 0x10 (16) 0x10 (16) 0x10 (16) 0x10 (16) 0x10 (16) 0x10 (16) 0x10 (16)
KeyboardEvent.code Windows Windows Mac (10.9) Linux (Ubuntu 14.04) Mac (10.9) Windows Mac (10.9) Linux (Ubuntu 14.04)
IE 11 Google Chrome 34 Chromium 34 Safari 7 Gecko 29

[1] 在 Windows 上,按下 AltGraph 键会同时触发 "ControlLeft""AltRight" 键事件。

[2] 当日语键盘布局处于活动状态时,按下 CapsLock 键而不按 Shift 键会触发 0xF0 (240)。该键充当 Alphanumeric 键,其标签为 "英数"

[3] 当日语键盘布局处于活动状态时,按下 "CapsLock" 键而不按 Shift 键会触发 0x00 (0)。该键充当 "Alphanumeric" 键,其标签为 "英数"

每个浏览器由不可打印键引起的 keydown 事件的 keyCode 值
KeyboardEvent.code IE 11 Google Chrome 34 Chromium 34 Safari 7 Gecko 29
Windows Windows Mac (10.9) Linux (Ubuntu 14.04) Mac (10.9) Windows Mac (10.9) Linux (Ubuntu 14.04)
"ContextMenu" 0x5D (93) 0x5D (93) 0x00 (0)⚠️ [1] 0x5D (93) 0x00 (0)⚠️ [1] 0x5D (93) 0x5D (93) 0x5D (93)
"Enter" 0x0D (13) 0x0D (13) 0x0D (13) 0x0D (13) 0x0D (13) 0x0D (13) 0x0D (13) 0x0D (13)
"Space" 0x20 (32) 0x20 (32) 0x20 (32) 0x20 (32) 0x20 (32) 0x20 (32) 0x20 (32) 0x20 (32)
"Tab" 0x09 (9) 0x09 (9) 0x09 (9) 0x09 (9) 0x09 (9) 0x09 (9) 0x09 (9) 0x09 (9)
"Delete" 0x2E (46) 0x2E (46) 0x2E (46) 0x2E (46) 0x2E (46) 0x2E (46) 0x2E (46) 0x2E (46)
"End" 0x23 (35) 0x23 (35) 0x23 (35) 0x23 (35) 0x23 (35) 0x23 (35) 0x23 (35) 0x23 (35)
"Help" ❌ N/A ❌ N/A 0x2D (45)
⚠️ [2]
0x2F (47)
⚠️ [3]
0x2D (45)
⚠️ [2]
❌ N/A 0x2D (45)
⚠️ [2]
0x06 (6)
⚠️ [3]
"Home" 0x24 (36) 0x24 (36) 0x24 (36) 0x24 (36) 0x24 (36) 0x24 (36) 0x24 (36) 0x24 (36)
"Insert" 0x2D (45) 0x2D (45) 0x2D (45) 0x2D (45) 0x2D (45) 0x2D (45) 0x2D (45) 0x2D (45)
"PageDown" 0x22 (34) 0x22 (34) 0x22 (34) 0x22 (34) 0x22 (34) 0x22 (34) 0x22 (34) 0x22 (34)
"PageUp" 0x21 (33) 0x21 (33) 0x21 (33) 0x21 (33) 0x21 (33) 0x21 (33) 0x21 (33) 0x21 (33)
"ArrowDown" 0x28 (40) 0x28 (40) 0x28 (40) 0x28 (40) 0x28 (40) 0x28 (40) 0x28 (40) 0x28 (40)
"ArrowLeft" 0x25 (37) 0x25 (37) 0x25 (37) 0x25 (37) 0x25 (37) 0x25 (37) 0x25 (37) 0x25 (37)
"ArrowRight" 0x27 (39) 0x27 (39) 0x27 (39) 0x27 (39) 0x27 (39) 0x27 (39) 0x27 (39) 0x27 (39)
"ArrowUp" 0x26 (38) 0x26 (38) 0x26 (38) 0x26 (38) 0x26 (38) 0x26 (38) 0x26 (38) 0x26 (38)
"Escape" 0x1B (27) 0x1B (27) 0x1B (27) 0x1B (27) 0x1B (27) 0x1B (27) 0x1B (27) 0x1B (27)
"PrintScreen" 0x2C (44) [4] 0x2C (44) [4] 0x7C (124)
⚠️ [5]
0x2A (42)⚠️ 0x7C (124)
⚠️ [5]
0x2C (44) [4] 0x2C (44) 0x2A (42)⚠️
"ScrollLock" 0x91 (145) 0x91 (145) 0x7D (125)
⚠️ [5]
0x91 (145) 0x7D (125)
⚠️ [5]
0x91 (145) 0x91 (145) 0x91 (145)
"Pause" 0x13 (19) [6] 0x13 (19) [6] 0x7E (126)
⚠️ [5]
0x13 (19) 0x7E (126)
⚠️ [5]
0x13 (19) [6] 0x13 (19) 0x13 (19)
KeyboardEvent.code Windows Windows Mac (10.9) Linux (Ubuntu 14.04) Mac (10.9) Windows Mac (10.9) Linux (Ubuntu 14.04)
IE 11 Google Chrome 34 Chromium 34 Safari 7 Gecko 29

[1] keypress 事件被触发,其 keyCodecharCode0x10 (16),但文本实际上没有输入到编辑器中。

[2] 在 Mac 上,Help 键映射到 PC 键盘的 Insert 键。这些 keyCode 值与 Insert 键的 keyCode 值相同。

[3] 在 Fedora 20 上测试。

[4] 仅触发 keyup 事件。

[5] PC 的 PrintScreenScrollLockPause 分别映射到 Mac 的 F13F14F15。Chrome 和 Safari 将它们映射到与 Mac 键相同的 keyCode 值。

[6] Pause 键与 Control 键一起生成 0x03 (3)

每个浏览器由功能键引起的 keydown 事件的 keyCode 值
KeyboardEvent.code IE 11 Google Chrome 34 Chromium 34 Safari 7 Gecko 29
Windows Windows Mac (10.9) Linux (Ubuntu 14.04) Mac (10.9) Windows Mac (10.9) Linux (Ubuntu 14.04)
"F1" 0x70 (112) 0x70 (112) 0x70 (112) 0x70 (112) 0x70 (112) 0x70 (112) 0x70 (112) 0x70 (112)
"F2" 0x71 (113) 0x71 (113) 0x71 (113) 0x71 (113) 0x71 (113) 0x71 (113) 0x71 (113) 0x71 (113)
"F3" 0x72 (114) 0x72 (114) 0x72 (114) 0x72 (114) 0x72 (114) 0x72 (114) 0x72 (114) 0x72 (114)
"F4" 0x73 (115) 0x73 (115) 0x73 (115) 0x73 (115) 0x73 (115) 0x73 (115) 0x73 (115) 0x73 (115)
"F5" 0x74 (116) 0x74 (116) 0x74 (116) 0x74 (116) 0x74 (116) 0x74 (116) 0x74 (116) 0x74 (116)
"F6" 0x75 (117) 0x75 (117) 0x75 (117) 0x75 (117) 0x75 (117) 0x75 (117) 0x75 (117) 0x75 (117)
"F7" 0x76 (118) 0x76 (118) 0x76 (118) 0x76 (118) 0x76 (118) 0x76 (118) 0x76 (118) 0x76 (118)
"F8" 0x77 (119) 0x77 (119) 0x77 (119) 0x77 (119) 0x77 (119) 0x77 (119) 0x77 (119) 0x77 (119)
"F9" 0x78 (120) 0x78 (120) 0x78 (120) 0x78 (120) 0x78 (120) 0x78 (120) 0x78 (120) 0x78 (120)
"F10" 0x79 (121) 0x79 (121) 0x79 (121) 0x79 (121) 0x79 (121) 0x79 (121) 0x79 (121) 0x79 (121)
"F11" 0x7A (122) 0x7A (122) 0x7A (122) 0x7A (122) 0x7A (122) 0x7A (122) 0x7A (122) 0x7A (122)
"F12" 0x7B (123) 0x7B (123) 0x7B (123) 0x7B (123) 0x7B (123) 0x7B (123) 0x7B (123) 0x7B (123)
"F13" 0x7C (124) 0x7C (124) 0x7C (124) 0x7C (124) [1] 0x7C (124) 0x7C (124) 0x2C (44) ⚠️ [2] 0x00 (0)⚠️ [3]
"F14" 0x7D (125) 0x7D (125) 0x7D (125) 0x7D (125) [1] 0x7D (125) 0x7D (125) 0x91 (145) ⚠️ [2] 0x00 (0)⚠️ [3]
"F15" 0x7E (126) 0x7E (126) 0x7E (126) 0x7E (126) [1] 0x7E (126) 0x7E (126) 0x13 (19) ⚠️ [2] 0x00 (0)⚠️ [3]
"F16" 0x7F (127) 0x7F (127) 0x7F (127) 0x7F (127) [1] 0x7F (127) 0x7F (127) 0x7F (127) 0x00 (0)⚠️ [3]
"F17" 0x80 (128) 0x80 (128) 0x80 (128) 0x80 (128) [1] 0x80 (128) 0x80 (128) 0x80 (128) 0x00 (0)⚠️ [3]
"F18" 0x81 (129) 0x81 (129) 0x81 (129) 0x81 (129) [1] 0x81 (129) 0x81 (129) 0x81 (129) 0x00 (0)⚠️ [3]
"F19" 0x82 (130) 0x82 (130) 0x82 (130) N/A [4] 0x82 (130) 0x82 (130) 0x82 (130) 0x00 (0)⚠️ [3]
"F20" 0x83 (131) 0x83 (131) 0x83 (131) N/A [4] 0xE5 (229)⚠️ [5] 0x83 (131) 0x00 (0)⚠️ N/A [6]
"F21" 0x84 (132) 0x84 (132) 0x00 (0)⚠️ [7] N/A [4] 0x00 (0)⚠️ [7] 0x84 (132) N/A [8] N/A [6]
"F22" 0x85 (133) 0x85 (133) 0x00 (0)⚠️ [7] N/A [4] 0x00 (0)⚠️ [7] 0x85 (133) N/A [8] N/A [6]
"F23" 0x86 (134) 0x86 (134) 0x00 (0)⚠️ [7] N/A [4] 0x00 (0)⚠️ [7] 0x86 (134) N/A [8] N/A [6]
"F24" 0x87 (135) 0x87 (135) 0x00 (0)⚠️ [7] N/A [4] 0x00 (0)⚠️ [7] 0x87 (135) N/A [8] 0x00 (0)⚠️ [3]
KeyboardEvent.code Windows Windows Mac (10.9) Linux (Ubuntu 14.04) Mac (10.9) Windows Mac (10.9) Linux (Ubuntu 14.04)
IE 11 Google Chrome 34 Chromium 34 Safari 7 Gecko 29

[1] 在 Fedora 20 上测试。

[2] 在 PC 上,PrintScreenScrollLockPause 分别映射到 Mac 的 F13F14F15。Firefox 为它们设置与 PC 键相同的 keyCode 值。

[3] 在 Fedora 20 上测试。这些键不会导致 GDK_Fxx keysyms。如果这些键导致正确的 keysyms,则这些值必须与 IE 相同。

[4] 在 Fedora 20 上测试。这些键不会在 Chromium 上导致 DOM 键事件。

[5] keyUp 事件的 keyCode 值为 0x83 (131)

[6] 在 Fedora 20 上测试。这些键不会在 Firefox 上导致 DOM 键事件。

[7] 仅触发 keydown 事件。

[8] Firefox 上没有触发任何 DOM 键事件。

数字键盘键

每个浏览器在 NumLock 状态下由数字键盘键引起的 keydown 事件的 keyCode 值
KeyboardEvent.code IE 11 Google Chrome 34 Chromium 34 Safari 7 Gecko 29
Windows Windows Mac (10.9) Linux (Ubuntu 14.04) Mac (10.9) Windows Mac (10.9) Linux (Ubuntu 14.04)
"NumLock" 0x90 (144) 0x90 (144) 0x0C (12)⚠️ [1] 0x90 (144) 0x0C (12)⚠️ [1] 0x90 (144) 0x0C (12)⚠️ [1] 0x90 (144)
"Numpad0" 0x60 (96) 0x60 (96) 0x60 (96) 0x60 (96) 0x60 (96) 0x60 (96) 0x60 (96) 0x60 (96)
"Numpad1" 0x61 (97) 0x61 (97) 0x61 (97) 0x61 (97) 0x61 (97) 0x61 (97) 0x61 (97) 0x61 (97)
"Numpad2" 0x62 (98) 0x62 (98) 0x62 (98) 0x62 (98) 0x62 (98) 0x62 (98) 0x62 (98) 0x62 (98)
"Numpad3" 0x63 (99) 0x63 (99) 0x63 (99) 0x63 (99) 0x63 (99) 0x63 (99) 0x63 (99) 0x63 (99)
"Numpad4" 0x64 (100) 0x64 (100) 0x64 (100) 0x64 (100) 0x64 (100) 0x64 (100) 0x64 (100) 0x64 (100)
"Numpad5" 0x65 (101) 0x65 (101) 0x65 (101) 0x65 (101) 0x65 (101) 0x65 (101) 0x65 (101) 0x65 (101)
"Numpad6" 0x66 (102) 0x66 (102) 0x66 (102) 0x66 (102) 0x66 (102) 0x66 (102) 0x66 (102) 0x66 (102)
"Numpad7" 0x67 (103) 0x67 (103) 0x67 (103) 0x67 (103) 0x67 (103) 0x67 (103) 0x67 (103) 0x67 (103)
"Numpad8" 0x68 (104) 0x68 (104) 0x68 (104) 0x68 (104) 0x68 (104) 0x68 (104) 0x68 (104) 0x68 (104)
"Numpad9" 0x69 (105) 0x69 (105) 0x69 (105) 0x69 (105) 0x69 (105) 0x69 (105) 0x69 (105) 0x69 (105)
"NumpadAdd" 0x6B (107) 0x6B (107) 0x6B (107) 0x6B (107) 0x6B (107) 0x6B (107) 0x6B (107) 0x6B (107)
"NumpadComma" 输入 "," 0xC2 (194) 0xC2 (194) 0xBC (188)⚠️ 始终输入 "." 0xBC (188)⚠️ 0xC2 (194) 0x6C (108)⚠️ 始终输入 "."
"NumpadComma" 输入 "." 或空字符串 0xC2 (194) 0xC2 (194) 0xBE (190)⚠️ 0x6E (110)⚠️ 0xBE (190)⚠️ 0xC2 (194) 0x6C (108)⚠️ 0x6E (110)⚠️
"NumpadDecimal" 输入 "." 0x6E (110) 0x6E (110) 0x6E (110) 0x6E (110) 0x6E (110) 0x6E (110) 0x6E (110) 0x6E (110)
"NumpadDecimal" 输入 "," 0x6E (110) 0x6E (110) 0x6E (110) 0x6C (108)⚠️ 0x6E (110) 0x6E (110) 0x6E (110) 0x6C (108)⚠️
"NumpadDivide" 0x6F (111) 0x6F (111) 0x6F (111) 0x6F (111) 0x6F (111) 0x6F (111) 0x6F (111) 0x6F (111)
"NumpadEnter" 0x0D (13) 0x0D (13) 0x0D (13) 0x0D (13) 0x0D (13) 0x0D (13) 0x0D (13) 0x0D (13)
"NumpadEqual" 0x0C (12) 0x0C (12) 0xBB (187)⚠️ 0xBB (187)⚠️ 0xBB (187)⚠️ 0x0C (12) 0x3D (61)⚠️ 0x3D (61)⚠️
"NumpadMultiply" 0x6A (106) 0x6A (106) 0x6A (106) 0x6A (106) 0x6A (106) 0x6A (106) 0x6A (106) 0x6A (106)
"NumpadSubtract" 0x6D (109) 0x6D (109) 0x6D (109) 0x6D (109) 0x6D (109) 0x6D (109) 0x6D (109) 0x6D (109)
KeyboardEvent.code Windows Windows Mac (10.9) Linux (Ubuntu 14.04) Mac (10.9) Windows Mac (10.9) Linux (Ubuntu 14.04)
IE 11 Google Chrome 34 Chromium 34 Safari 7 Gecko 29

[1] "NumLock" 键在 Mac 上充当 "Clear" 键。

每个浏览器在没有 NumLock 状态下由数字键盘键引起的 keydown 事件的 keyCode 值
KeyboardEvent.code IE 11 Google Chrome 34 Chromium 34 Gecko 29
Windows Windows Linux (Ubuntu 14.04) Windows Linux (Ubuntu 14.04)
"Numpad0" ("Insert") 0x2D (45) 0x2D (45) 0x2D (45) 0x2D (45) 0x2D (45)
"Numpad1" ("End") 0x23 (35) 0x23 (35) 0x23 (35) 0x23 (35) 0x23 (35)
"Numpad2" ("ArrowDown") 0x28 (40) 0x28 (40) 0x28 (40) 0x28 (40) 0x28 (40)
"Numpad3" ("PageDown") 0x22 (34) 0x22 (34) 0x22 (34) 0x22 (34) 0x22 (34)
"Numpad4" ("ArrowLeft") 0x25 (37) 0x25 (37) 0x25 (37) 0x25 (37) 0x25 (37)
"Numpad5" 0x0C (12) 0x0C (12) 0x0C (12) 0x0C (12) 0x0C (12)
"Numpad6" ("ArrowRight") 0x27 (39) 0x27 (39) 0x27 (39) 0x27 (39) 0x27 (39)
"Numpad7" ("Home") 0x24 (36) 0x24 (36) 0x24 (36) 0x24 (36) 0x24 (36)
"Numpad8" ("ArrowUp") 0x26 (38) 0x26 (38) 0x26 (38) 0x26 (38) 0x26 (38)
"Numpad9" ("PageUp") 0x21 (33) 0x21 (33) 0x21 (33) 0x21 (33) 0x21 (33)
"NumpadDecimal" ("Delete") 0x2E (46) 0x2E (46) 0x2E (46) 0x2E (46) 0x2E (46)
KeyboardEvent.code Windows Windows Linux (Ubuntu 14.04) Windows Linux (Ubuntu 14.04)
IE 11 Google Chrome 34 Chromium 34 Gecko 29

注意: 最新的 Mac 没有 NumLock 键,因此没有状态。这就是为什么不提供解锁状态的原因。

keyCode 值的常量

Gecko 在 KeyboardEvent 中定义了许多 keyCode 值,以明确地创建映射表。这些值对 Firefox 的附加组件开发人员很有用,但在公共网页中并没有那么有用。

常量 描述
DOM_VK_CANCEL 0x03 (3) 取消键。
DOM_VK_HELP 0x06 (6) 帮助键。
DOM_VK_BACK_SPACE 0x08 (8) 退格键。
DOM_VK_TAB 0x09 (9) Tab 键。
DOM_VK_CLEAR 0x0C (12) NumLock 解锁时数字键盘上的 "5" 键。或者在 Mac 上,位于 NumLock 键的清除键。
DOM_VK_RETURN 0x0D (13) 主键盘上的回车/输入键。
DOM_VK_ENTER 0x0E (14) 保留,但未使用。 已弃用 (已删除,请参阅 Firefox 错误 969247.)
DOM_VK_SHIFT 0x10 (16) Shift 键。
DOM_VK_CONTROL 0x11 (17) Control 键。
DOM_VK_ALT 0x12 (18) Alt (Mac 上的 Option) 键。
DOM_VK_PAUSE 0x13 (19) 暂停键。
DOM_VK_CAPS_LOCK 0x14 (20) 大写锁定。
DOM_VK_KANA 0x15 (21) 在 Gecko 4.0 中添加了对该 keyCode 的 Linux 支持。
DOM_VK_HANGUL 0x15 (21) 在 Gecko 4.0 中添加了对该 keyCode 的 Linux 支持。
DOM_VK_EISU 0x 16 (22) 日语 Mac 键盘上的 "英数" 键。
DOM_VK_JUNJA 0x17 (23) 在 Gecko 4.0 中添加了对该 keyCode 的 Linux 支持。
DOM_VK_FINAL 0x18 (24) 在 Gecko 4.0 中添加了对该 keyCode 的 Linux 支持。
DOM_VK_HANJA 0x19 (25) 在 Gecko 4.0 中添加了对该 keyCode 的 Linux 支持。
DOM_VK_KANJI 0x19 (25) 在 Gecko 4.0 中添加了对该 keyCode 的 Linux 支持。
DOM_VK_ESCAPE 0x1B (27) Esc 键。
DOM_VK_CONVERT 0x1C (28) 在 Gecko 4.0 中添加了对该 keyCode 的 Linux 支持。
DOM_VK_NONCONVERT 0x1D (29) 在 Gecko 4.0 中添加了对该 keyCode 的 Linux 支持。
DOM_VK_ACCEPT 0x1E (30) 在 Gecko 4.0 中添加了对该 keyCode 的 Linux 支持。
DOM_VK_MODECHANGE 0x1F (31) 在 Gecko 4.0 中添加了对该 keyCode 的 Linux 支持。
DOM_VK_SPACE 0x20 (32) 空格键。
DOM_VK_PAGE_UP 0x21 (33) Page Up 键。
DOM_VK_PAGE_DOWN 0x22 (34) Page Down 键。
DOM_VK_END 0x23 (35) End 键。
DOM_VK_HOME 0x24 (36) Home 键。
DOM_VK_LEFT 0x25 (37) 左箭头。
DOM_VK_UP 0x26 (38) 上箭头。
DOM_VK_RIGHT 0x27 (39) 右箭头。
DOM_VK_DOWN 0x28 (40) 下箭头。
DOM_VK_SELECT 0x29 (41) 在 Gecko 4.0 中添加了对该 keyCode 的 Linux 支持。
DOM_VK_PRINT 0x2A (42) 在 Gecko 4.0 中添加了对该 keyCode 的 Linux 支持。
DOM_VK_EXECUTE 0x2B (43) 在 Gecko 4.0 中添加了对该 keyCode 的 Linux 支持。
DOM_VK_PRINTSCREEN 0x2C (44) Print Screen 键。
DOM_VK_INSERT 0x2D (45) Ins(ert) 键。
DOM_VK_DELETE 0x2E (46) Del(ete) 键。
DOM_VK_0 0x30 (48) 标准键位上的 "0" 键。
DOM_VK_1 0x31 (49) 标准键位上的 "1" 键。
DOM_VK_2 0x32 (50) 标准键位上的 "2" 键。
DOM_VK_3 0x33 (51) 标准键位上的 "3" 键。
DOM_VK_4 0x34 (52) 标准键位上的 "4" 键。
DOM_VK_5 0x35 (53) 标准键位上的 "5" 键。
DOM_VK_6 0x36 (54) 标准键位上的 "6" 键。
DOM_VK_7 0x37 (55) 标准键位上的 "7" 键。
DOM_VK_8 0x38 (56) 标准键位上的 "8" 键。
DOM_VK_9 0x39 (57) 标准键位上的 "9" 键。
DOM_VK_COLON 0x3A (58) 冒号 (":") 键。
DOM_VK_SEMICOLON 0x3B (59) 分号 (";") 键。
DOM_VK_LESS_THAN 0x3C (60) 小于 ("<") 键。
DOM_VK_EQUALS 0x3D (61) 等号 ("=") 键。
DOM_VK_GREATER_THAN 0x3E (62) 大于 (">") 键。
DOM_VK_QUESTION_MARK 0x3F (63) 问号 ("?") 键。
DOM_VK_AT 0x40 (64) Atmark ("@") 键。
DOM_VK_A 0x41 (65) "A" 键。
DOM_VK_B 0x42 (66) "B" 键。
DOM_VK_C 0x43 (67) "C" 键。
DOM_VK_D 0x44 (68) "D" 键。
DOM_VK_E 0x45 (69) "E" 键。
DOM_VK_F 0x46 (70) "F" 键。
DOM_VK_G 0x47 (71) "G" 键。
DOM_VK_H 0x48 (72) "H" 键。
DOM_VK_I 0x49 (73) "I" 键。
DOM_VK_J 0x4A (74) "J" 键。
DOM_VK_K 0x4B (75) "K" 键。
DOM_VK_L 0x4C (76) "L" 键。
DOM_VK_M 0x4D (77) "M" 键。
DOM_VK_N 0x4E (78) "N" 键。
DOM_VK_O 0x4F (79) "O" 键。
DOM_VK_P 0x50 (80) "P" 键。
DOM_VK_Q 0x51 (81) "Q" 键。
DOM_VK_R 0x52 (82) "R" 键。
DOM_VK_S 0x53 (83) "S" 键。
DOM_VK_T 0x54 (84) "T" 键。
DOM_VK_U 0x55 (85) "U" 键。
DOM_VK_V 0x56 (86) "V" 键。
DOM_VK_W 0x57 (87) "W" 键。
DOM_VK_X 0x58 (88) "X" 键。
DOM_VK_Y 0x59 (89) "Y" 键。
DOM_VK_Z 0x5A (90) "Z" 键。
DOM_VK_WIN 0x5B (91) Windows 上的 Windows 徽标键。或 Linux 上的 Super 或 Hyper 键。
DOM_VK_CONTEXT_MENU 0x5D (93) 打开上下文菜单键。
DOM_VK_SLEEP 0x5F (95) 在 Gecko 4.0 中添加了对该 keyCode 的 Linux 支持。
DOM_VK_NUMPAD0 0x60 (96) 数字键盘上的 "0"。
DOM_VK_NUMPAD1 0x61 (97) 数字键盘上的 "1"。
DOM_VK_NUMPAD2 0x62 (98) 数字键盘上的 "2"。
DOM_VK_NUMPAD3 0x63 (99) 数字键盘上的 "3"。
DOM_VK_NUMPAD4 0x64 (100) 数字键盘上的 "4"。
DOM_VK_NUMPAD5 0x65 (101) 数字键盘上的 "5"。
DOM_VK_NUMPAD6 0x66 (102) 数字键盘上的 "6"。
DOM_VK_NUMPAD7 0x67 (103) 数字键盘上的 "7"。
DOM_VK_NUMPAD8 0x68 (104) 数字键盘上的 "8"。
DOM_VK_NUMPAD9 0x69 (105) 数字键盘上的 "9"。
DOM_VK_MULTIPLY 0x6A (106) 数字键盘上的 "*"。
DOM_VK_ADD 0x6B (107) 数字键盘上的 "+"。
DOM_VK_SEPARATOR 0x6C (108)
DOM_VK_SUBTRACT 0x6D (109) 数字键盘上的 "-"。
DOM_VK_DECIMAL 0x6E (110) 数字键盘上的小数点。
DOM_VK_DIVIDE 0x6F (111) 数字键盘上的 "/"。
DOM_VK_F1 0x70 (112) F1 键。
DOM_VK_F2 0x71 (113) F2 键。
DOM_VK_F3 0x72 (114) F3 键。
DOM_VK_F4 0x73 (115) F4 键。
DOM_VK_F5 0x74 (116) F5 键。
DOM_VK_F6 0x75 (117) F6 键。
DOM_VK_F7 0x76 (118) F7 键。
DOM_VK_F8 0x77 (119) F8 键。
DOM_VK_F9 0x78 (120) F9 键。
DOM_VK_F10 0x79 (121) F10 键。
DOM_VK_F11 0x7A (122) F11 键。
DOM_VK_F12 0x7B (123) F12 键。
DOM_VK_F13 0x7C (124) F13 键。
DOM_VK_F14 0x7D (125) F14 键。
DOM_VK_F15 0x7E (126) F15 键。
DOM_VK_F16 0x7F (127) F16 键。
DOM_VK_F17 0x80 (128) F17 键。
DOM_VK_F18 0x81 (129) F18 键。
DOM_VK_F19 0x82 (130) F19 键。
DOM_VK_F20 0x83 (131) F20 键。
DOM_VK_F21 0x84 (132) F21 键。
DOM_VK_F22 0x85 (133) F22 键。
DOM_VK_F23 0x86 (134) F23 键。
DOM_VK_F24 0x87 (135) F24 键。
DOM_VK_NUM_LOCK 0x90 (144) Num Lock 键。
DOM_VK_SCROLL_LOCK 0x91 (145) Scroll Lock 键。
DOM_VK_WIN_OEM_FJ_JISHO 0x92 (146) Windows 上的 OEM 特定键。用于富士通 OASYS 的 "字典" 键。
DOM_VK_WIN_OEM_FJ_MASSHOU 0x93 (147) Windows 上的 OEM 特定键。用于富士通 OASYS 的 "取消注册单词" 键。
DOM_VK_WIN_OEM_FJ_TOUROKU 0x94 (148) Windows 上的 OEM 特定键。用于富士通 OASYS 的 "注册单词" 键。
DOM_VK_WIN_OEM_FJ_LOYA 0x95 (149) Windows 上的 OEM 特定键。用于富士通 OASYS 的 "左 OYAYUBI" 键。
DOM_VK_WIN_OEM_FJ_ROYA 0x96 (150) Windows 上的 OEM 特定键。用于富士通 OASYS 的 "右 OYAYUBI" 键。
DOM_VK_CIRCUMFLEX 0xA0 (160) Circumflex ("^") 键。
DOM_VK_EXCLAMATION 0xA1 (161) 感叹号 ("!") 键。
DOM_VK_DOUBLE_QUOTE 0xA2 (162) 双引号 (""") 键。
DOM_VK_HASH 0xA3 (163) Hash ("#") 键。
DOM_VK_DOLLAR 0xA4 (164) 美元符号 ("$") 键。
DOM_VK_PERCENT 0xA5 (165) 百分号 ("%") 键。
DOM_VK_AMPERSAND 0xA6 (166) 和号 ("&") 键。
DOM_VK_UNDERSCORE 0xA7 (167) 下划线 ("_") 键。
DOM_VK_OPEN_PAREN 0xA8 (168) 左括号 ("(") 键。
DOM_VK_CLOSE_PAREN 0xA9 (169) 右括号 (")") 键。
DOM_VK_ASTERISK 0xAA (170) 星号 ("*") 键。
DOM_VK_PLUS 0xAB (171) 加号 ("+") 键。
DOM_VK_PIPE 0xAC (172) 竖线 ("|") 键。
DOM_VK_HYPHEN_MINUS 0xAD (173) 连字符/减号 ("-") 键。
DOM_VK_OPEN_CURLY_BRACKET 0xAE (174) 左花括号 ("{") 键。
DOM_VK_CLOSE_CURLY_BRACKET 0xAF (175) 右花括号 ("}") 键。
DOM_VK_TILDE 0xB0 (176) 波浪号 ("~") 键。
DOM_VK_VOLUME_MUTE 0xB5 (181) 音频静音键。
DOM_VK_VOLUME_DOWN 0xB6 (182) 音频音量减键
DOM_VK_VOLUME_UP 0xB7 (183) 音频音量加键
DOM_VK_COMMA 0xBC (188) 逗号 (",") 键。
DOM_VK_PERIOD 0xBE (190) 句号 (".") 键。
DOM_VK_SLASH 0xBF (191) 斜杠 ("/") 键。
DOM_VK_BACK_QUOTE 0xC0 (192) 反引号 ("`") 键。
DOM_VK_OPEN_BRACKET 0xDB (219) 左方括号 ("[") 键。
DOM_VK_BACK_SLASH 0xDC (220) 反斜杠 ("\") 键。
DOM_VK_CLOSE_BRACKET 0xDD (221) 右方括号 ("]") 键。
DOM_VK_QUOTE 0xDE (222) 单引号 (''') 键。
DOM_VK_META 0xE0 (224) Linux 上的 Meta 键,Mac 上的 Command 键。
DOM_VK_ALTGR 0xE1 (225) Linux 上的 AltGr 键 (3 级 Shift 键或 5 级 Shift 键)。
DOM_VK_WIN_ICO_HELP 0xE3 (227) Windows 上的 OEM 特定键。用于 Olivetti ICO 键盘。
DOM_VK_WIN_ICO_00 0xE4 (228) Windows 上的 OEM 特定键。用于 Olivetti ICO 键盘。
DOM_VK_WIN_ICO_CLEAR 0xE6 (230) Windows 上的 OEM 特定键。用于 Olivetti ICO 键盘。
DOM_VK_WIN_OEM_RESET 0xE9 (233) Windows 上的 OEM 特定键。用于诺基亚/爱立信的设备。
DOM_VK_WIN_OEM_JUMP 0xEA (234) Windows 上的 OEM 特定键。用于诺基亚/爱立信的设备。
DOM_VK_WIN_OEM_PA1 0xEB (235) Windows 上的 OEM 特定键。用于诺基亚/爱立信的设备。
DOM_VK_WIN_OEM_PA2 0xEC (236) Windows 上的 OEM 特定键。用于诺基亚/爱立信的设备。
DOM_VK_WIN_OEM_PA3 0xED (237) Windows 上的 OEM 特定键。用于诺基亚/爱立信的设备。
DOM_VK_WIN_OEM_WSCTRL 0xEE (238) Windows 上的 OEM 特定键。用于诺基亚/爱立信的设备。
DOM_VK_WIN_OEM_CUSEL 0xEF (239) Windows 上的 OEM 特定键。用于诺基亚/爱立信的设备。
DOM_VK_WIN_OEM_ATTN 0xF0 (240) Windows 上的 OEM 特定键。用于诺基亚/爱立信的设备。
DOM_VK_WIN_OEM_FINISH 0xF1 (241) Windows 上的 OEM 特定键。用于诺基亚/爱立信的设备。
DOM_VK_WIN_OEM_COPY 0xF2 (242) Windows 上的 OEM 特定键。用于诺基亚/爱立信的设备。
DOM_VK_WIN_OEM_AUTO 0xF3 (243) Windows 上的 OEM 特定键。用于诺基亚/爱立信的设备。
DOM_VK_WIN_OEM_ENLW 0xF4 (244) Windows 上的 OEM 特定键。用于诺基亚/爱立信的设备。
DOM_VK_WIN_OEM_BACKTAB 0xF5 (245) Windows 上的 OEM 特定键。用于诺基亚/爱立信的设备。
DOM_VK_ATTN 0xF6 (246) IBM 中端计算机 (例如 AS/400) 的 Attn (Attention) 键。
DOM_VK_CRSEL 0xF7 (247) IBM 3270 键盘布局的 CrSel (Cursor Selection) 键。
DOM_VK_EXSEL 0xF8 (248) IBM 3270 键盘布局的 ExSel (Extend Selection) 键。
DOM_VK_EREOF 0xF9 (249) IBM 3270 键盘布局的 Erase EOF 键。
DOM_VK_PLAY 0xFA (250) IBM 3270 键盘布局的 Play 键。
DOM_VK_ZOOM 0xFB (251) 缩放键。
DOM_VK_PA1 0xFD (253) IBM 3270 键盘布局的 PA1 键。
DOM_VK_WIN_OEM_CLEAR 0xFE (254) Clear 键,但我们不确定它与 `DOM_VK_CLEAR` 的含义差异。

示例

js
window.addEventListener(
  "keydown",
  (event) => {
    if (event.defaultPrevented) {
      return; // Should do nothing if the default action has been cancelled
    }

    let handled = false;
    if (event.key !== undefined) {
      // Handle the event with KeyboardEvent.key
      handled = true;
    } else if (event.keyCode !== undefined) {
      // Handle the event with KeyboardEvent.keyCode
      handled = true;
    }

    if (handled) {
      // Suppress "double action" if event handled
      event.preventDefault();
    }
  },
  true,
);

规范

规范
UI 事件
# dom-keyboardevent-keycode

浏览器兼容性

BCD 表仅在浏览器中加载

Windows 上的 OEM 特定键

在 Windows 上,虚拟键码的一些值被定义 (保留) 用于 OEM 特定键。它们可用于非标准键盘上的特殊键。换句话说,某些值被两个或多个供应商 (或硬件) 用于不同的含义。

从 Gecko 21 开始 (以及早于 15),OEM 特定键值仅在 Windows 上的 keyCode 属性中可用。因此,它们对普通 Web 应用程序没有用。它们仅对 Intranet 应用程序或类似情况有用。

有关详细信息,请参阅 MSDN 中的 "制造商特定的虚拟键码 (Windows CE 5.0)"。