鍵盤測試
測試鍵盤按鍵功能,實時顯示按鍵狀態和鍵值資訊
按鍵記錄
什麼是鍵盤測試?
鍵盤測試用來確認按鍵事件是否真正到達瀏覽器,並查看瀏覽器如何描述每一次按鍵。它適合排查按鍵失靈、卡鍵、快捷鍵無效、筆電鍵盤進水後異常、新機械鍵盤到手後的基礎檢查等問題。工具會顯示 key、code、舊版 keyCode、按鍵位置、是否重複觸發,以及 Ctrl、Shift、Alt、Meta 等修飾鍵狀態。透過這些資訊,可以區分硬體問題、鍵盤配置差異與軟體攔截:同一個物理按鍵在不同配置下可能輸入不同字元。要注意,Ctrl+Alt+Del、Alt+Tab 等系統級快捷鍵通常不會被網頁捕捉,看不到事件不一定代表鍵盤故障。
使用方式
使用方式
- 將滑鼠游標移至測試區域
- 按下鍵盤上的任意按鍵
- 觀察按鍵高亮顯示與資訊面板
- 查看下方的按鍵歷史紀錄
提示
- 綠色高亮表示該按鍵運作正常
- 所有標準鍵盤按鍵皆可測試
- 支援偵測修飾鍵(Ctrl、Shift、Alt、Meta)
- 重複按下的按鍵會在資訊面板中標記
使用場景
技術原理
瀏覽器透過 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,再與下一個按鍵組合。
有任何資料會傳到伺服器嗎?
沒有。鍵盤事件全部在您的瀏覽器中處理。不會被記錄、也不會被傳輸。