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、位置、修飾鍵狀態和重複觸發狀態,讓你可以判斷連點、彈跳或僅在按到底才觸發的按鍵是否異常,而不必假設整把鍵盤壞了。
檢查左/右修飾鍵和數字鍵盤行為由於工具顯示 KeyboardEvent 的 location 屬性,可以在瀏覽器支援的範圍內區分標準、左側、右側和數字鍵盤位置。這對依賴左 Ctrl 與右 Ctrl、右 Alt 作為 AltGr,或數字鍵盤 Enter 被作業系統映射為不同掃描碼的快捷鍵密集工作流程特別有用。
擷取簡短的按鍵事件歷史最近 50 次非重複按鍵會保留在可見的歷史記錄中,方便對照你打算按下的鍵與瀏覽器實際接收到的鍵。清除和重置控制讓你不必重新整理頁面即可執行專注測試,按鍵記錄僅在本機頁面渲染,任何敏感輸入內容都留在這個分頁中。
驗證遊戲鍵盤的 N 鍵無衝和防鬼鍵功能同時按住多個字母鍵,觀察活動面板即時亮起。如果鍵盤只記錄部分按下的鍵,就代表它未通過防鬼鍵或 N 鍵無衝的宣稱,因為 USB HID 通常限制在 6KRO,而 PS/2 或 N 鍵無衝鍵盤能回報全部 104 個按鍵;WASD 加 Shift 組合時遺失字母是典型症狀。
區分瀏覽器鍵盤配置與實體按鍵對應對照顯示的 key 值與回報的 code 值,偵測如 Dvorak 配置產生 QWERTY code,或非美式鍵盤因作業系統中過時的配置仍發出以美式為中心的值等不匹配情況。這對診斷為什麼某個快捷鍵在系統 Shell 中有效但在監聽 code 而非 key 的 Web 應用中無效很有幫助。

技術原理

瀏覽器透過 KeyboardEvent 介面呈現鍵盤事件:每次按鍵會觸發 keydown 和 keyup 事件。KeyboardEvent 攜帶多個關鍵屬性:key 是按鍵的字元值(受配置和 Shift 狀態影響——例如 a vs 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 鍵無衝(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 vs NKRO:6 鍵無衝是 USB HID 協議的限制;機械鍵盤可透過 PS/2 或專用驅動程式達到 N 鍵無衝(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 鍵盤的鬼鍵限制不同;在這裡測試能得到實際在網頁中的結果,但對發燒級的測量來說,專用測試工具(Aqua's KeyTest、Switch Hitter)更具權威性。

Dead key 與輸入法組字會被偵測嗎?

輸入法(中、日、韓)組字期間通常會壓制底層的按鍵事件。請把輸入法切到直接輸入模式來測試個別按鍵。Dead key(歐洲鍵盤上的銳音、變音符號等)會先送出 Dead,再與下一個按鍵組合。

有任何資料會傳到伺服器嗎?

沒有。鍵盤事件全部在您的瀏覽器中處理。不會被記錄、也不會被傳輸。