首页·键码

120 个按键的 code 与 keyCode

KeyboardEvent 给出的那些值。code 是键盘上的物理位置,不随布局变化;key 是当下敲出来的字符,会变。

code 与 key 的区别

code 是键盘上的物理位置,韩文键盘还是法文键盘都一样。key 是当下敲出来的字符,会变——同一个位置可能是 a、A 或 ㅁ。问“按了哪个位置”用 code,问“输入了什么”用 key。

keyCode 已从标准中移除。新代码请用 code 或 key,这里的数字用来读旧代码。

字母26

位置固定为 KeyA。哪怕键盘上敲出的是韩文 ㅁ,code 依然是 KeyA。

数字10

数字行。它们的 keyCode 与小键盘上同样的数字不同。

符号12

keyCode 在各家浏览器里分道扬镳的,就是这一片。

小键盘16

location 是 3,这正是它和数字行的区别。

功能键20

F1 是 112、F2 是 113,依次排下去。

移动8

不打字,只移动光标。

编辑6

删除、插入、换行。

修饰键8

单按没有作用,要压在别的键上。左右共用一个 keyCode。

锁定键3

按一下,状态就一直保持。

系统4

处理窗口和屏幕的键。

输入法7

切换输入法的键——韩/英、汉字、日语转换都在这里。

怎么看这一页

  • code 是位置,key 是敲出来的字符。做快捷键要按 code 比较。
  • keyCode 已废弃,只在读旧代码时用。
  • 左右 Shift 的 keyCode 相同,靠 location 区分。
  • 数字行的 1 和小键盘的 1 是两个键——49 和 97。

常见问题

Q. 该用 code 还是 key?

要抓位置(比如快捷键)用 code,要知道输入了什么用 key。换了键盘布局,code 依然不变。

Q. 为什么不建议用 keyCode?

它已从标准移除,而且各浏览器给的值并不一致,符号键尤其如此。

Q. Enter 的键码是多少?

keyCode 是 13,code 是 Enter。小键盘上的 Enter,code 是 NumpadEnter,keyCode 同样是 13。

Q. 怎么区分左右 Shift?

靠 keyCode 分不出来,两个都是 16。看 code(ShiftLeft、ShiftRight)或 location(1、2)。

Q. 韩文键盘上的 code 一样吗?

一样。按下打出 ㅁ 的那个位置,code 仍然是 KeyA——因为 code 指的是位置。