工作原理
每次按键都会触发 W3C UI Events 标准定义的 keydown 和 keyup 事件。测试器读取 event.code(无论布局如何都表示按键的物理位置,例如 KeyA 或 ShiftRight),以及 event.key(该键在当前布局和修饰键下产生的字符或功能)。
屏幕键盘是全尺寸 ANSI 布局,并在左 Shift 旁加了 ISO 额外键。媒体键、语言键等布局之外的按键会单独列出。如果浏览器支持 Keyboard Map API,字母键会显示你自己的布局字符。
event.key 与 event.code
同一个物理按键可能产生不同的值,所以两个都会显示。
| 你按下 | event.key | event.code |
|---|---|---|
| 美式布局的 A | "a" | "KeyA" |
| Shift + A | "A" | "KeyA" |
| 法语 AZERTY 布局下的同一个键 | "q" | "KeyA" |
| 右 Shift | "Shift" | "ShiftRight" |
| 小键盘上的 1(Num Lock 开启) | "1" | "Numpad1" |
鬼键与全键无冲
许多键盘按矩阵布线,同时按下三个或更多键时有些组合无法全部识别:可能某个键没反应(阻塞),也可能出现没有按下的键(鬼键)。“最多同时”显示这把键盘报告同时按下的最大键数。支持全键无冲(NKRO)的游戏键盘会报告每个键;引导模式下的 USB 键盘通常最多 6 个键加修饰键。
提示
- 其他键都亮而某一个键始终不亮,可能是坏了或有异物;按一次却亮两次,可能是按键抖动(连击)。
- 用你真正会用的组合来测试,例如游戏中的 W A S D 加 Shift 和空格。
- 操作系统会比浏览器先截获一些快捷键,这些无法在这里测试。
标准与出处
- UI Events · W3C
- UI Events KeyboardEvent code 取值 · W3C
- UI Events KeyboardEvent key 取值 · W3C
- KeyboardEvent.code · MDN Web Docs
最后核对于 2026年10月18日
常见问题
为什么某个键不亮?
要么按键或轴坏了,要么这个键根本没有传到浏览器:Fn 和 Win+L、Cmd+Tab 等系统快捷键由操作系统处理。在其他程序里试一下就能分辨。
event.key 和 event.code 有什么区别?
event.code 是按键的物理位置,不随布局改变;event.key 是该键此刻输入的值,取决于布局、Shift 和其他修饰键。使用中文输入法时 key 可能显示为 Process。
怎样测试全键无冲?
一个接一个按下按键且不松开。“最多同时”就是键盘报告同时按下的最大数量。如果按住的键不亮,说明这个组合已到键盘上限。