JavaScript keycode 查詢
按任何一個鍵,就能看到瀏覽器在鍵盤事件中回報的確切內容:按鍵值、實體代碼、舊式 keyCode、位置、按住的修飾鍵、鎖定鍵與重複旗標。適合網頁開發、按鍵對應,以及辨識不知名的按鍵。
按任意鍵。開始完整擷取後,也能檢查 Tab、空白鍵、F 鍵與快捷鍵(按兩次 Esc 或「停止」結束)。
—
event.key- —
event.code- —
event.keyCode- —
event.location- —
修飾鍵- —
已開啟的鎖定鍵- —
event.repeat- —
event.keyCode 和 event.which 已被棄用,但瀏覽器仍會回報;實體按鍵請使用 event.code,產生的字元請使用 event.key。
事件紀錄(最近 80 筆)
| type | key | code | keyCode | location | repeat | 修飾鍵 |
|---|
如何使用鍵碼查詢
- 按任何一個鍵。大方框會顯示按鍵值,旁邊的欄位會顯示
event.key、event.code、event.keyCode、event.location、按住的修飾鍵、開啟中的鎖定鍵,以及event.repeat。 - 按下開始完整擷取,也能檢查瀏覽器平常自己會用的按鍵,例如 Tab、空白鍵、F 鍵與許多快捷鍵。快速按兩次 Esc,或按停止即可離開。
- 打開事件記錄,可依序看到最近 80 筆
keydown與keyup事件,例如用來檢查按鍵組合。 - 按下複製最後一個事件(JSON),就能把數值貼到錯誤回報或程式碼中。清除記錄會清空清單。
各個數值的意義
key:經過鍵盤配置與修飾鍵處理後產生的字元或按鍵名稱。Shift+2 在美式配置會得到"@",在英式配置會得到'"'。code:實體按鍵,以美式 QWERTY 鍵盤上的位置命名。在法文 AZERTY 鍵盤上,標示 A 的鍵回報的是KeyQ。遊戲操作與依位置設定的快捷鍵請使用它。keyCode(以及 JSON 中的which):已被棄用但仍會回報的舊式數字。不同配置與瀏覽器之間會有差異;新程式請改用key或code。location:0 標準、1 左側、2 右側、3 數字鍵盤。可用來分辨左右的 Shift、Ctrl、Alt 與 Meta,以及數字鍵盤和上排數字。- 修飾鍵與鎖定鍵:事件發生時按住的 Control、Shift、Alt 與 Meta,以及 Caps Lock、Num Lock 或 Scroll Lock 是否開啟,由
getModifierState()回報。 repeat:按住按鍵時自動重複產生的事件會顯示是。
常見的意外情況
Dead:許多國際配置的重音符號鍵在按下一個鍵之前不會產生字元,所以key是Dead。Process或 keyCode 229:輸入法(例如注音、倉頡、日文,或某些手機鍵盤)正在組字,真正的按鍵被隱藏了。使用中文輸入法時很常見,切換到英文輸入再測試即可。- AltGr 在 Windows 上通常會以 Control 加 Alt 的形式出現,所以你可能會看到兩個事件和兩個修飾鍵。
- Mac 的 Command 鍵:按住 Command 時,瀏覽器不會回報其他鍵的放開動作。
- 空白的
code或Unidentified:鍵盤、驅動程式或遠端連線沒有提供實體按鍵。Fn 鍵完全不會出現,因為它在鍵盤內部就被處理掉了。
限制
這個頁面顯示的是作業系統與鍵盤配置處理過按鍵之後,瀏覽器所提供的資訊。它無法顯示原始的掃描碼或 USB HID 資料,看不到作業系統先攔截的按鍵(例如 Ctrl+Alt+Del),也不會更改或重新對應按鍵。它也不會測量鍵盤延遲或回報率。要確認鍵盤上每個鍵都正常,請用鍵盤測試;要測試同時按下多個鍵,請用防鬼鍵測試。
常見問題
key 和 code 有什麼不同?
code 代表實體按鍵的位置,不論配置如何都相同。key 是在目前配置與修飾鍵之下這次按壓產生的結果,例如 a、A 或 @。
keyCode 還能用嗎?
瀏覽器仍會回報它,但它已被棄用,而且在不同配置與瀏覽器之間不一致。字元請用 event.key,實體位置請用 event.code。
我打的內容會被傳送到任何地方嗎?
不會。事件只會顯示在這個頁面上,關閉分頁就會消失。複製 JSON 只會放進你自己的剪貼簿。