键盘事件值(键码、元键等)

Avatar of Chris Coyier
Chris Coyier

KeyboardEvent 触发时,您可以测试按下了哪个键,因为该事件包含您可以编写逻辑来处理的信息。

document.addEventListener("keydown", function(event) {
  console.log(event.which);
})

例如,按下 a,您将获得 65。显然,最好是针对 which 编写逻辑,因为 keyCodecharCode 很复杂

event.which 属性将 event.keyCodeevent.charCode 规范化。建议监控 event.which 以获取键盘键输入。

并且:

在按键事件中,按下的键的 Unicode 值存储在 keyCodecharCode 属性中,但不会同时存储在两者中。如果按下的键生成一个字符(例如“a”),则 charCode 设置为该字符的代码,并尊重字母大小写。(即,charCode 会考虑 Shift 键是否被按下)。否则,按下的键的代码将存储在 keyCode 中。

测试工具

键码值

以下表格包含来自 event.which 的值。

代码
退格键 8
制表符 9
回车键 13
Shift 键 16
Ctrl 键 17
Alt 键 18
暂停/中断 19
大写锁定 20
Esc 键 27
(空格) 32
Page Up 33
Page Down 34
End 35
Home 36
左箭头 37
上箭头 38
右箭头 39
下箭头 40
Insert 45
Delete 46
0 48
1 49
2 50
3 51
4 52
5 53
6 54
7 55
8 56
9 57
a 65
b 66
c 67
d 68
代码
e 69
f 70
g 71
h 72
i 73
j 74
k 75
l 76
m 77
n 78
o 79
p 80
q 81
r 82
s 83
t 84
u 85
v 86
w 87
x 88
y 89
z 90
左 Windows 键 91
右 Windows 键 92
选择键 93
数字小键盘 0 96
数字小键盘 1 97
数字小键盘 2 98
数字小键盘 3 99
数字小键盘 4 100
数字小键盘 5 101
数字小键盘 6 102
数字小键盘 7 103
代码
数字小键盘 8 104
数字小键盘 9 105
乘号 106
加号 107
减号 109
小数点 110
除号 111
F1 112
F2 113
F3 114
F4 115
F5 116
F6 117
F7 118
F8 119
F9 120
F10 121
F11 122
F12 123
Num Lock 144
Scroll Lock 145
分号 186
等号 187
逗号 188
连字符 189
句点 190
正斜杠 191
重音符 192
左括号 219
反斜杠 220
右括号 221
单引号 222

Zell Liew 发现,在 Firefox 中,这 3 个键码与其他浏览器不同

  • ; 在 Firefox 中为 59,但在其他浏览器中为 186。
  • = 在 Firefox 中为 61,但在其他浏览器中为 187。
  • - 在 Firefox 中为 173,但在其他浏览器中为 189。

这些键码值仅在 keydownkeyup 事件期间有效。在 Mac 上,keypress 事件会提供完全不同的代码集。例如

event.which 在 keydown 中event.which 在 keypress 中
a6597
b6698
c6799