KeyboardEvent:keyCode 属性

已弃用:此特性不再推荐。虽然某些浏览器可能仍然支持它,但它可能已经从相关的网络标准中删除,可能正在删除过程中,或者可能仅为兼容性目的而保留。请避免使用它,如果可能,请更新现有代码;请参阅本页底部的兼容性表格以指导您的决策。请注意,此特性可能随时停止工作。

已废弃的 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 尽可能地(当达到上述列表中的第 7.1 或 7.2 点时)根据以下规则设置标点符号键的 keyCode

警告:这些新的附加规则的目的是让其键盘布局将 Unicode 字符映射到美国键盘布局中的标点符号键的用户,能够使用仅支持 Firefox 且带有 ASCII 兼容键盘布局或仅带有美国键盘布局的 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 字符,则使用该 Shift 字符的 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)
美国 日语 希腊语 美国 日语 希腊语 美国 日语 希腊语 美国 日语 希腊语 美国 日语 希腊语 美国 日语 希腊语 美国 日语 希腊语 美国 日语 希腊语
"逗号" 0xBC (188) 0xBC (188) 0xBC (188) 0xBC (188) 0xBC (188) 0xBC (188) 0xBC (188) 0xBC (188)
"逗号"Shift
"句号" 0xBE (190) 0xBE (190) 0xBE (190) 0xBE (190) 0xBE (190) 0xBE (190) 0xBE (190) 0xBE (190)
"句号"Shift
"分号" 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)⚠️
"分号"Shift 0xBB (187)⚠️ [1] 0xBB (187)⚠️ 0xBB (187)⚠️ [1]
"引号" 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)
"引号" 和 Shift 0xDE (222)⚠️ [1] 0x38 (56)⚠️ 0xDE (222)⚠️ [1]
"左方括号" 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)
"左方括号"Shift 0xC0 (192)⚠️ [1] 0xC0 (192)⚠️ 0xC0 (192)⚠️ [1]
"右方括号" 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)
"右方括号"Shift
"反引号" 0xC0 (192) ❌ 不适用 0xC0 (192) 0xC0 (192) ❌ 不适用 0xC0 (192) 0xC0 (192) 0xC0 (192) 0xF4 (244)⚠️ 0xC0 (192) 0xC0 (192) 0xC0 (192) ❌ 不适用 0xC0 (192) 0xC0 (192) 0xC0 (192) 0x00 (0) 0xC0 (192)
"反引号"Shift
"反斜杠" 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)
"反斜杠"Shift
"减号" 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)
"减号"Shift 0xBB (187)⚠️ [1] 0xBB (187)⚠️ 0xBD (189) 0xBB (187)⚠️ [1] 0xBD (189)
"等号" 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)
"等号"Shift 0xC0 (192)⚠️ [1] 0xC0 (192)⚠️ 0xBB (187) 0xC0 (192)⚠️ [1] 0xBB (187)
"国际漫游键" 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)
"国际漫游键"Shift
"国际日元键" 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)⚠️
"国际日元键"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)
当它是 "AltGraph" 键时的 "AltRight" [1] [1] ❌不适用 0xE1 (225)⚠️ ❌ 不适用 [1] ❌ 不适用 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] 当日文键盘布局处于活动状态时,不按 Shift 键而按 CapsLock 键会产生 0xF0 (240)。该键作为标签为 "英数"字母数字 键工作。

[3] 当日文键盘布局处于活动状态时,不按 Shift 键而按 "CapsLock" 键会产生 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)
"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)
"空格键" 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" ❌ 不适用 ❌ 不适用 0x2D (45)
⚠️ [2]
0x2F (47)
⚠️ [3]
0x2D (45)
⚠️ [2]
❌ 不适用 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) 不适用 [4] 0x82 (130) 0x82 (130) 0x82 (130) 0x00 (0)⚠️ [3]
"F20" 0x83 (131) 0x83 (131) 0x83 (131) 不适用 [4] 0xE5 (229)⚠️ [5] 0x83 (131) 0x00 (0)⚠️ 不适用 [6]
"F21" 0x84 (132) 0x84 (132) 0x00 (0)⚠️ [7] 不适用 [4] 0x00 (0)⚠️ [7] 0x84 (132) 不适用 [8] 不适用 [6]
"F22" 0x85 (133) 0x85 (133) 0x00 (0)⚠️ [7] 不适用 [4] 0x00 (0)⚠️ [7] 0x85 (133) 不适用 [8] 不适用 [6]
"F23" 0x86 (134) 0x86 (134) 0x00 (0)⚠️ [7] 不适用 [4] 0x00 (0)⚠️ [7] 0x86 (134) 不适用 [8] 不适用 [6]
"F24" 0x87 (135) 0x87 (135) 0x00 (0)⚠️ [7] 不适用 [4] 0x00 (0)⚠️ [7] 0x87 (135) 不适用 [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 键符号。如果这些键导致正确的键符号,这些值必须与 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)
"数字键盘0" 0x60 (96) 0x60 (96) 0x60 (96) 0x60 (96) 0x60 (96) 0x60 (96) 0x60 (96) 0x60 (96)
"数字键盘1" 0x61 (97) 0x61 (97) 0x61 (97) 0x61 (97) 0x61 (97) 0x61 (97) 0x61 (97) 0x61 (97)
"数字键盘2" 0x62 (98) 0x62 (98) 0x62 (98) 0x62 (98) 0x62 (98) 0x62 (98) 0x62 (98) 0x62 (98)
"数字键盘3" 0x63 (99) 0x63 (99) 0x63 (99) 0x63 (99) 0x63 (99) 0x63 (99) 0x63 (99) 0x63 (99)
"数字键盘4" 0x64 (100) 0x64 (100) 0x64 (100) 0x64 (100) 0x64 (100) 0x64 (100) 0x64 (100) 0x64 (100)
"数字键盘5" 0x65 (101) 0x65 (101) 0x65 (101) 0x65 (101) 0x65 (101) 0x65 (101) 0x65 (101) 0x65 (101)
"数字键盘6" 0x66 (102) 0x66 (102) 0x66 (102) 0x66 (102) 0x66 (102) 0x66 (102) 0x66 (102) 0x66 (102)
"数字键盘7" 0x67 (103) 0x67 (103) 0x67 (103) 0x67 (103) 0x67 (103) 0x67 (103) 0x67 (103) 0x67 (103)
"数字键盘8" 0x68 (104) 0x68 (104) 0x68 (104) 0x68 (104) 0x68 (104) 0x68 (104) 0x68 (104) 0x68 (104)
"数字键盘9" 0x69 (105) 0x69 (105) 0x69 (105) 0x69 (105) 0x69 (105) 0x69 (105) 0x69 (105) 0x69 (105)
"数字键盘加号" 0x6B (107) 0x6B (107) 0x6B (107) 0x6B (107) 0x6B (107) 0x6B (107) 0x6B (107) 0x6B (107)
"数字键盘逗号" 输入 "," 0xC2 (194) 0xC2 (194) 0xBC (188)⚠️ 始终输入 "." 0xBC (188)⚠️ 0xC2 (194) 0x6C (108)⚠️ 始终输入 "."
"数字键盘逗号" 输入 "." 或空字符串 0xC2 (194) 0xC2 (194) 0xBE (190)⚠️ 0x6E (110)⚠️ 0xBE (190)⚠️ 0xC2 (194) 0x6C (108)⚠️ 0x6E (110)⚠️
"数字键盘小数点" 输入 "." 0x6E (110) 0x6E (110) 0x6E (110) 0x6E (110) 0x6E (110) 0x6E (110) 0x6E (110) 0x6E (110)
"数字键盘小数点" 输入 "," 0x6E (110) 0x6E (110) 0x6E (110) 0x6C (108)⚠️ 0x6E (110) 0x6E (110) 0x6E (110) 0x6C (108)⚠️
"数字键盘除号" 0x6F (111) 0x6F (111) 0x6F (111) 0x6F (111) 0x6F (111) 0x6F (111) 0x6F (111) 0x6F (111)
"数字键盘回车" 0x0D (13) 0x0D (13) 0x0D (13) 0x0D (13) 0x0D (13) 0x0D (13) 0x0D (13) 0x0D (13)
"数字键盘等号" 0x0C (12) 0x0C (12) 0xBB (187)⚠️ 0xBB (187)⚠️ 0xBB (187)⚠️ 0x0C (12) 0x3D (61)⚠️ 0x3D (61)⚠️
"数字键盘乘号" 0x6A (106) 0x6A (106) 0x6A (106) 0x6A (106) 0x6A (106) 0x6A (106) 0x6A (106) 0x6A (106)
"数字键盘减号" 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)
"数字键盘0" ("插入") 0x2D (45) 0x2D (45) 0x2D (45) 0x2D (45) 0x2D (45)
"数字键盘1" ("结束") 0x23 (35) 0x23 (35) 0x23 (35) 0x23 (35) 0x23 (35)
"数字键盘2" ("向下箭头") 0x28 (40) 0x28 (40) 0x28 (40) 0x28 (40) 0x28 (40)
"数字键盘3" ("PageDown") 0x22 (34) 0x22 (34) 0x22 (34) 0x22 (34) 0x22 (34)
"数字键盘4" ("向左箭头") 0x25 (37) 0x25 (37) 0x25 (37) 0x25 (37) 0x25 (37)
"数字键盘5" 0x0C (12) 0x0C (12) 0x0C (12) 0x0C (12) 0x0C (12)
"数字键盘6" ("向右箭头") 0x27 (39) 0x27 (39) 0x27 (39) 0x27 (39) 0x27 (39)
"数字键盘7" ("Home") 0x24 (36) 0x24 (36) 0x24 (36) 0x24 (36) 0x24 (36)
"数字键盘8" ("向上箭头") 0x26 (38) 0x26 (38) 0x26 (38) 0x26 (38) 0x26 (38)
"数字键盘9" ("PageUp") 0x21 (33) 0x21 (33) 0x21 (33) 0x21 (33) 0x21 (33)
"数字键盘小数点" ("删除") 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) 主键盘上的回车/Enter 键。
DOM_VK_ENTER 0x0E (14) 保留,但未使用。 已废弃 (已删除,参见 Firefox bug 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 中添加了对该键码的 Linux 支持。
DOM_VK_HANGUL 0x15 (21) Gecko 4.0 中添加了对该键码的 Linux 支持。
DOM_VK_EISU 0x 16 (22) 日语 Mac 键盘上的“英数”键。
DOM_VK_JUNJA 0x17 (23) Gecko 4.0 中添加了对该键码的 Linux 支持。
DOM_VK_FINAL 0x18 (24) Gecko 4.0 中添加了对该键码的 Linux 支持。
DOM_VK_HANJA 0x19 (25) Gecko 4.0 中添加了对该键码的 Linux 支持。
DOM_VK_KANJI 0x19 (25) Gecko 4.0 中添加了对该键码的 Linux 支持。
DOM_VK_ESCAPE 0x1B (27) Escape 键。
DOM_VK_CONVERT 0x1C (28) Gecko 4.0 中添加了对该键码的 Linux 支持。
DOM_VK_NONCONVERT 0x1D (29) Gecko 4.0 中添加了对该键码的 Linux 支持。
DOM_VK_ACCEPT 0x1E (30) Gecko 4.0 中添加了对该键码的 Linux 支持。
DOM_VK_MODECHANGE 0x1F (31) Gecko 4.0 中添加了对该键码的 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 中添加了对该键码的 Linux 支持。
DOM_VK_PRINT 0x2A (42) Gecko 4.0 中添加了对该键码的 Linux 支持。
DOM_VK_EXECUTE 0x2B (43) Gecko 4.0 中添加了对该键码的 Linux 支持。
DOM_VK_PRINTSCREEN 0x2C (44) Print Screen 键。
DOM_VK_INSERT 0x2D (45) 插入键。
DOM_VK_DELETE 0x2E (46) 删除键。
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) “@”符号键。
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 中添加了对该键码的 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) 尖号(“^”)键。
DOM_VK_EXCLAMATION 0xA1 (161) 感叹号(“!”)键。
DOM_VK_DOUBLE_QUOTE 0xA2 (162) 双引号(“"”)键。
DOM_VK_HASH 0xA3 (163) 井号(“#”)键。
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(注意)键。
DOM_VK_CRSEL 0xF7 (247) IBM 3270 键盘布局的 CrSel(光标选择)键。
DOM_VK_EXSEL 0xF8 (248) IBM 3270 键盘布局的 ExSel(扩展选择)键。
DOM_VK_EREOF 0xF9 (249) IBM 3270 键盘布局的 Erase EOF 键。
DOM_VK_PLAY 0xFA (250) IBM 3270 键盘布局的播放键。
DOM_VK_ZOOM 0xFB (251) 缩放键。
DOM_VK_PA1 0xFD (253) IBM 3270 键盘布局的 PA1 键。
DOM_VK_WIN_OEM_CLEAR 0xFE (254) 清除键,但我们不确定与 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();
  }
});

规范

规范
UI 事件
# dom-keyboardevent-keycode

浏览器兼容性

Windows 上的 OEM 特定键

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

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

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