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 筆)
typekeycodekeyCodelocationrepeat修飾鍵

如何使用鍵碼查詢

  1. 按任何一個鍵。大方框會顯示按鍵值,旁邊的欄位會顯示 event.key、event.code、event.keyCode、event.location、按住的修飾鍵、開啟中的鎖定鍵,以及 event.repeat。
  2. 按下開始完整擷取,也能檢查瀏覽器平常自己會用的按鍵,例如 Tab、空白鍵、F 鍵與許多快捷鍵。快速按兩次 Esc,或按停止即可離開。
  3. 打開事件記錄,可依序看到最近 80 筆 keydown 與 keyup 事件,例如用來檢查按鍵組合。
  4. 按下複製最後一個事件(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 只會放進你自己的剪貼簿。

相關測試

指南