跳到主要內容
Tools

鍵盤按鍵碼

按下任意鍵,立即顯示 JavaScript 的 key、code、keyCode、位置與修飾鍵,也能觀察注音、倉頡等輸入法的組字事件。

最後按下的按鍵

按下任意鍵

使用注音、倉頡等輸入法時,組字期間的 keydown 會是 key「Process」、keyCode 229、isComposing 為 true;選字完成後的文字要看 compositionend 或 input 事件,不要用 keydown 判斷。

為了不讓你意外離開頁面而遺失紀錄,本工具只攔截會返回上一頁或重新整理的按鍵(Alt + ←/→、Backspace、F5、Ctrl/⌘ + R),其他按鍵照常運作。

事件紀錄

還沒有事件,請按下任意鍵。

常用按鍵對照表

key 會隨鍵盤配置與 Shift 改變,code 代表實體按鍵位置、不受配置影響。下表為美式鍵盤。 keyCode 與 which 已被標為過時,新程式請改用 key 或 code。

keycodekeyCode
EnterEnter13
EscapeEscape27
TabTab9
" "Space32
BackspaceBackspace8
DeleteDelete46
ArrowLeftArrowLeft37
ArrowUpArrowUp38
ArrowRightArrowRight39
ArrowDownArrowDown40
HomeHome36
EndEnd35
PageUpPageUp33
PageDownPageDown34
ShiftShiftLeft16
ControlControlLeft17
AltAltLeft18
MetaMetaLeft91
CapsLockCapsLock20
F1F1112
F12F12123
"a"KeyA65
"z"KeyZ90
"0"Digit048
"9"Digit957
"0"Numpad096
EnterNumpadEnter13
"-"Minus189
"="Equal187
","Comma188
"."Period190
"/"Slash191
";"Semicolon186
"'"Quote222
"["BracketLeft219
"\\"Backslash220
"`"Backquote192

使用說明

  1. 在頁面上按下任意鍵,上方會用大字顯示按鍵,並列出 event.key、event.code、keyCode、which、location 與修飾鍵。
  2. 要測試輸入法時,點進輸入欄位並切換到注音或倉頡,邊打字邊看事件紀錄中的 compositionstart、compositionupdate、compositionend 與 input。
  3. 要記錄 Tab 鍵時勾選「攔截 Tab 鍵」,在欄位中按 Tab 不會移動焦點;按 Esc 立即解除。
  4. 按「複製紀錄」把事件紀錄複製成文字,方便貼到問題回報中。

常見問題

key、code、keyCode 有什麼差別?

key 是按鍵產生的值,會隨鍵盤配置、Shift 與輸入法改變,例如同一個鍵可能是「a」或「A」。code 是實體按鍵的位置,例如「KeyA」,不受配置影響,適合做遊戲的 WASD 控制。keyCode 與 which 是舊的數字代碼,各瀏覽器不一致且已被標為過時,新程式請改用 key 或 code。

用注音輸入時,為什麼 key 是 Process、keyCode 是 229?

使用輸入法組字時,按鍵先交給輸入法處理,瀏覽器在 keydown 回報 key「Process」、keyCode 229,isComposing 為 true。這時按下的 Enter 通常是在「選字」而不是送出,所以程式在處理 Enter 送出表單或訊息前,應先檢查 event.isComposing,否則中文使用者選字時就會誤送出。

什麼是組字事件(composition events)?

輸入法開始組字時觸發 compositionstart,每次組字內容改變觸發 compositionupdate(data 是目前的注音或字根),選定文字後觸發 compositionend(data 是最後輸入的文字)。要取得使用者實際輸入的中文,應該看 compositionend 或 input 事件,而不是 keydown。

為什麼有些按鍵沒有反應,或會被瀏覽器攔截?

作業系統與瀏覽器會保留部分快捷鍵,例如 Ctrl/⌘ + W 關閉分頁、Ctrl/⌘ + T 開新分頁,網頁無法攔截,也收不到事件。本工具只會攔截會返回上一頁或重新整理的按鍵,避免你意外離開而遺失紀錄,其他按鍵都維持原本的功能。

為什麼 Tab 鍵預設不攔截?

Tab 是鍵盤使用者移動焦點的主要方式,永久攔截會讓人「困在」頁面裡,違反無障礙原則。需要時才勾選攔截,而且只在輸入欄位中有效,按 Esc 就會解除。

location 代表什麼?

用來區分同名但位置不同的按鍵:0 是一般按鍵,1 是左側(例如左 Shift),2 是右側(例如右 Ctrl),3 是數字鍵台(例如數字鍵台的 Enter 與 0)。

鍵盤快捷鍵

/
搜尋工具(在工具頁會回到首頁的搜尋欄)
?
顯示這個說明
Esc
關閉對話框
Ctrl / ⌘Enter
執行工具的主要動作(支援的工具)

在輸入框中打字時,/ 與 ? 不會觸發快捷鍵。