ToolAct工具行动

键盘测试

测试键盘按键功能,实时显示按键状态和键值信息

Esc
F1
F2
F3
F4
F5
F6
F7
F8
F9
F10
F11
F12
`
1
2
3
4
5
6
7
8
9
0
-
=
Backspace
Tab
Q
W
E
R
T
Y
U
I
O
P
[
]
\
Caps
A
S
D
F
G
H
J
K
L
;
'
Enter
Shift
Z
X
C
V
B
N
M
,
.
/
Shift
Ctrl
Win
Alt
Space
Alt
Win
Menu
Ctrl

按键记录

按下任意键开始测试...

什么是键盘测试?

键盘测试用于确认按键事件是否真正到达浏览器,并查看浏览器如何描述每一次按键。它适合排查按键失灵、卡键、快捷键无效、笔记本键盘进水后异常、新机械键盘到手后的基础检查等问题。工具会显示 key、code、历史 keyCode、按键位置、是否重复触发,以及 Ctrl、Shift、Alt、Meta 等修饰键状态。通过这些信息,可以区分硬件问题、键盘布局差异和软件拦截:同一个物理按键在不同布局下可能输入不同字符。需要注意,Ctrl+Alt+Del、Alt+Tab 等系统级快捷键通常不会被网页捕获,看不到事件不一定代表键盘坏了。

使用方法

如何使用

  1. 将鼠标焦点放在测试区域
  2. 按下键盘上的任意键
  3. 观察按键高亮显示和信息面板
  4. 在下方查看按键历史

提示

  • 绿色高亮表示按键工作正常
  • 所有标准键盘按键均可测试
  • 支持检测修饰键(Ctrl、Shift、Alt、Meta)
  • 重复按键会在信息面板中标记

使用场景

诊断卡键或按键不稳定按下按键后观察虚拟键盘根据真实的 keydown 和 keyup 事件亮起。当前按键面板显示 key、code、keyCode、which、location、修饰键状态和重复标记,方便对比连击、抖动或只有按到底才触发的按键与正常按键的差异,判断是单个键还是整把键盘的问题。
检查左右修饰键和小键盘行为由于工具显示 KeyboardEvent 的 location 属性,能区分标准、左侧、右侧和小键盘位置(在浏览器支持的情况下)。对于依赖左 Ctrl 与右 Ctrl 区分、右 Alt 用于 AltGr、或小键盘 Enter 被操作系统映射为不同扫描码的快捷键密集型工作流,这一点非常实用。
记录简短的按键事件历史最近 50 次非重复按键保存在可见的历史记录中,方便对比你意图按下的键与浏览器实际接收到的键。清除和重置控件让你无需刷新页面即可进行专注测试,按键日志仅渲染在本地页面上,任何敏感输入内容都留在当前标签页。
验证游戏键盘的全键无冲和防鬼键同时按住多个字母键,观察活跃按键面板实时亮起。只注册部分按键的键盘未通过防鬼键或全键无冲声明,因为 USB HID 协议通常限制为 6KRO,而 PS/2 或 n-key rollover 键盘可报告全部 104 个键;WASD 加 Shift 组合时丢失字母是典型症状。
区分浏览器布局与物理键位映射对比显示的 key 值与报告的 code 值,检测 Dvorak 布局产生 QWERTY code 或非美式键盘在操作系统中仍使用过时布局发出美式键值等不匹配情况。在排查为何某个快捷键在系统 Shell 中有效但在监听 code 而非 key 的网页应用中无效时很有帮助。

技术原理

浏览器通过 KeyboardEvent 接口暴露键盘事件:每次按键触发 keydown 和 keyup 事件。KeyboardEvent 携带几个关键属性:key 是按键的字符值(受布局和 Shift 状态影响——例如 a 与 A);code 是物理位置标识(与布局无关——在 QWERTY 和 AZERTY 上 KeyA 都是 KeyA);keyCode 是遗留的数字值(已弃用但仍出现在旧代码中);location 表示按键位置(0 标准、1 左侧、2 右侧、3 数字键盘)。要检测组合键,需监听 ctrlKey、shiftKey、altKey、metaKey 四个布尔修饰键标志——例如 Ctrl+C 时 ctrlKey=true 且 key='c'。触发顺序为 keydown -> keypress(已弃用)-> keyup;按住按键时 keydown 持续触发且 event.repeat=true。游戏开发偏好使用 code(不受玩家切换布局影响),而输入框场景偏好使用 key(返回实际字符)。N-key rollover (NKRO) 指键盘硬件可以同时注册任意数量的按键;普通 USB 键盘受 USB HID 协议限制为 6KRO——同时按住超过 6 个键开始丢弃事件。PS/2 接口或带专用驱动的机械键盘可以实现真正的 NKRO。

  • KeyboardEvent.key 是字符值('a'/'A'/'Enter'),受布局和 Shift 影响——在输入框场景中使用。
  • KeyboardEvent.code 是物理位置标识('KeyA'/'Digit1'),与布局无关——用于游戏和快捷键绑定。
  • location 值:0 标准、1 左侧修饰键、2 右侧修饰键、3 数字键盘——用于区分左右 Shift、Ctrl、Alt 时非常有用。
  • 组合键:ctrlKey/shiftKey/altKey/metaKey 是四个布尔值,表示修饰键状态;与 key 组合即可检测 Ctrl+C、Cmd+Shift+P 等。
  • event.repeat=true 表示按住的键正在自动重复;在长按测试中,用此标志过滤重复事件。
  • 6KRO 与 NKRO:6 键无冲是 USB HID 协议限制;机械键盘可通过 PS/2 或专用驱动实现 N-key rollover (NKRO)。

示例

按下字母键

按下 A -> key: "a", code: "KeyA", keyCode: 65, location: 0(标准位置)

按下功能键

按下 F1 -> key: "F1", code: "F1", keyCode: 112, location: 0

按下组合键

按下 Ctrl+C -> 检测到 Ctrl (code: "ControlLeft", location: 1) + C (code: "KeyC", ctrlKey: true)

常见问题

测试可以检测哪些按键?

几乎所有浏览器能收到 keydown 事件的物理按键:字母数字、修饰键(Shift/Ctrl/Alt/Meta)、方向键、F1-F24 功能键、数字小键盘,以及部分浏览器支持的多媒体键(音量、播放控制)等。每按下一个键,屏幕键盘上对应位置就会变绿,便于发现失灵的键位。

为什么我的 Fn 键没反应?

在大多数笔记本上,Fn 由固件层处理,不会产生 JavaScript 键盘事件——这是正常现象,并非故障。功能行组合键(如 Fn+F5)通常只产生功能动作(如调高音量)而没有键码。请使用台式键盘或外接键盘测试这些键。

可以检测卡键或抖键吗?

可以。按一次按键,观察会触发多少个 keydown 事件。开关抖动会在毫秒级别产生多个事件。部分版本可列出原始事件时间戳,让抖键现象一目了然。

key、code 和 keyCode 有什么区别?

key 是按键的「值」("a"、"Shift"、"Enter");code 是物理位置标识("KeyA"、"ShiftLeft"),与键盘布局无关;keyCode 是已废弃的数字 ID(仍为兼容而保留)。要识别物理按键且不受语言布局影响,请使用 code。

可以测试无冲突按键(NKRO)吗?

部分支持。本页会显示当前按下的按键,你可以同时按多个键看能识别多少。USB HID 与 PS/2 键盘的鬼键限制不同;这里测试的是 Web 端真实表现,但若做硬核测量,专门的工具(如 Aqua's KeyTest、Switch Hitter)更权威。

死键和输入法组合会被识别吗?

输入法(中文、日文、韩文)在组词期间通常会屏蔽底层键事件。请关闭输入法、切换到直接输入模式来测试单个按键。死键(欧洲键盘上的尖音符、变音符等)会先触发 Dead,然后与下一个按键合成。

数据会发送到服务器吗?

不会。键盘事件全部在浏览器本地处理,不会被记录或传输。