按鍵代碼查詢:我按了哪個鍵?
按下任何一個鍵,立刻看到它的名稱、code、舊式的 keyCode 數字,以及它是左側、右側還是數字鍵盤上的那一顆。適合用來查印字磨掉的鍵帽、重新對應按鍵、設定遊戲按鍵與寫程式。
| key | code | keyCode | 位置 | 修飾鍵 |
|---|---|---|---|---|
| – | ||||
按下任何一個鍵,下方的方塊就會告訴你按了哪個鍵:它的名稱、code、數字形式的 keyCode,以及它是左側、右側還是數字鍵盤上的版本。大大的標籤是 key 的值,下面一行顯示 code、keyCode 與位置,表格則保留你最近按過的 12 個鍵。
如何使用按鍵代碼查詢
- 在頁面任意處點一下,或點一下方塊,讓它取得鍵盤焦點。
- 按下一個鍵。大大的標籤會顯示按鍵名稱,下面一行顯示 code、keyCode 與位置。如果你同時按住 Shift、Ctrl、Alt 或 Meta,還會多一行修飾鍵列出它們。
- 繼續按其他鍵。每按一個,就會以同樣的五個欄位加入「最近按過的鍵」表格,最新的在最上面,最多 12 列。
- 按「重設」可以清除畫面與表格。
按住一個鍵不放,作業系統會自動重複輸入。重複的輸入會更新大標籤,但不會加進表格,所以按住很久的同一個鍵,只會占一列。空白鍵、Tab、Backspace、上下方向鍵、斜線鍵與引號鍵會被頁面接管,這樣測試時頁面不會捲動、不會切換焦點,也不會跳出瀏覽器的快速尋找列。同時按住 Ctrl 或 Cmd 的按鍵,會照常交給瀏覽器當成快速鍵處理。
key 與 code:你需要哪一個?
瀏覽器用兩種方式描述每一次按鍵,兩者回答的是不同的問題。
- key
- "a"
- code
- KeyA
S 左邊那顆鍵打出小寫 a。
- key
- "A"
- code
- KeyA
同一顆實體鍵、同一個 code,只有意義變了。
- key
- "q"
- code
- KeyA
同一個位置在法文鍵盤打出 q,code 仍然是 KeyA。
key 是這次按壓在你目前的鍵盤配置下的意義,已經套用了修飾鍵。按下印著 A 的鍵,key 是 "a";按住 Shift 就變成 "A";切換到德文配置,L 旁邊的那顆鍵就會變成 "ö"。不會打出字元的按鍵則有描述性的名稱:Enter、Escape、ArrowLeft、Backspace、F5。空白鍵在這個頁面上會顯示成 Space 這個字,這樣才看得見。
code 是實體按鍵的位置,名稱取自美式鍵盤上的印字,與配置、語言和 Shift 無關。位在 S 左邊的那顆鍵,在全世界任何鍵盤上都是 KeyA,即使在 AZERTY 鍵盤上它打出的是 Q。數字列是 Digit1 到 Digit0,功能鍵是 F1 到 F12,成對的按鍵名稱裡會帶有左右(ShiftLeft、ControlRight),數字鍵盤則是 Numpad1、NumpadAdd、NumpadEnter 等等。
| 你想知道的事 | 要用 | 範例 |
|---|---|---|
| 這顆鍵會打出什麼字元? | key | "a"、"A"、"ö"、"?" |
| 不管語言,這是哪一顆實體按鍵? | code | KeyA、Digit1、Backquote |
| 這是左 Shift 還是右 Shift? | code,或位置 | ShiftLeft、ShiftRight |
| 這是數字鍵盤上的 Enter 嗎? | code,或位置 | NumpadEnter,位置為數字鍵盤 |
| 舊程式碼要的是哪個數字? | keyCode | 65、13、32 |
遊戲按鍵設定、按鍵對應工具,以及任何希望在每種配置下都有相同手感的功能,請用 code。處理文字、搜尋快速鍵,以及任何在意使用者想打哪個字母的場合,請用 key。
keyCode 是什麼?為什麼還要顯示它
keyCode 是瀏覽器最早用來回報按鍵的方式:每個鍵一個數字,大致對應 Windows 的虛擬鍵碼。它已經被棄用很多年,瀏覽器也建議改用 key 或 code,但因為太多現有的程式依賴它,所以始終沒有被移除。教學文章、舊的遊戲引擎、表單驗證指令碼與許多外掛,至今仍會拿它來比對數字,所以大家還是會去查。
下面是常見的數值,在各瀏覽器間都一致:
| 按鍵 | keyCode | code |
|---|---|---|
| A 到 Z | 65 到 90 | KeyA 到 KeyZ |
| 0 到 9(主鍵區) | 48 到 57 | Digit0 到 Digit9 |
| 數字鍵盤 0 到 9 | 96 到 105 | Numpad0 到 Numpad9 |
| F1 到 F12 | 112 到 123 | F1 到 F12 |
| Enter | 13 | Enter 或 NumpadEnter |
| 空白鍵 | 32 | Space |
| Escape | 27 | Escape |
| Backspace | 8 | Backspace |
| Tab | 9 | Tab |
| Shift、Ctrl、Alt | 16、17、18 | ShiftLeft 等等 |
| 方向鍵(左、上、右、下) | 37、38、39、40 | ArrowLeft、ArrowUp、ArrowRight、ArrowDown |
標點符號就是 keyCode 失靈的地方。分號鍵在 Chrome 與 Edge 回報 186,在 Firefox 卻是 59;減號鍵在 Chrome 是 189,在 Firefox 是 173。此外,不論有沒有按住 Shift,字母的 keyCode 都一樣,所以光看 keyCode 分不出 "a" 與 "A"。如果你要寫新的程式,請讀取 code 或 key,這裡顯示的 keyCode 只是拿來對照你正在維護的舊指令碼。
位置(location)是什麼
有些鍵在鍵盤上有兩顆,位置就是用來告訴你按的是哪一顆。瀏覽器回報的是數字,這個頁面則以文字顯示。
| 位置 | 意義 | 適用的按鍵 |
|---|---|---|
| 標準 | 這個鍵只有一顆 | 字母、數字、F 鍵與大多數其他按鍵 |
| 左側 | 左手邊的那一顆 | Shift、Ctrl、Alt、Win 或 Cmd |
| 右側 | 右手邊的那一顆 | Shift、Ctrl、Alt、Win 或 Cmd |
| 數字鍵盤 | 數字鍵盤上的按鍵 | 數字鍵盤的數字、運算符號、NumpadEnter、Num Lock |
位置對 Enter 與修飾鍵最有用。主鍵區的 Enter 與數字鍵盤的 Enter,key 名稱都是 Enter,keyCode 也一樣,但 code 不同,而且數字鍵盤那顆的位置是「數字鍵盤」。同樣的,兩個 Shift 的 key 與 keyCode 都相同,只能靠 code 與位置區分。如果遊戲只讓你設定一個 Shift,而你不確定它聽的是哪一邊,就把兩顆都按一次,比較看看。
數字鍵盤的數字鍵值得特別說明。Num Lock 開啟時,Numpad7 的 key 是 "7";Num Lock 關閉時,同一顆實體按鍵的 key 變成 "Home",而 code 仍然是 Numpad7,位置也仍然是「數字鍵盤」。詳細說明請見數字鍵盤測試頁面。
查詢按鍵代碼的常見用途
重新對應按鍵。 Windows 上的 PowerToys 鍵盤管理員、macOS 上的 Karabiner-Elements 這類工具,都是以實體位置辨識按鍵,也就是和 code 對得上。按下你想重新對應的鍵,記下 code,再到工具裡找。如果某些鍵在切換語言後意義不對,可以比較 key 與 code:code 正確、key 不對,就是配置設定的問題,而不是硬體故障。
印字磨掉的鍵。 鍵帽上的印字磨掉了,在這裡按一下,就能讀出 key 的值。如果是需要搭配 Shift 才會打出符號的鍵,兩種按法各按一次,兩個字元都會出現在表格裡。
遊戲按鍵設定。 遊戲通常以實體按鍵儲存設定,設定選單有時會用你不熟悉的名稱顯示按鍵。如果某個設定一直無法生效,請在這裡按那個鍵,確認瀏覽器是否看得到它,也能知道它是左側或右側的修飾鍵,還是遊戲另外處理的數字鍵盤按鍵。
寫程式。 JavaScript 的鍵盤處理函式收到的,就是這個頁面讀取的同一種事件:帶有 key、code、keyCode 與 location 屬性的 KeyboardEvent。按下你想處理的鍵,把 code 的值複製到你的處理函式,再看「修飾鍵」那一行,就知道會設定哪些旗標。至於 Dead、Unidentified 或 Process 這類按鍵,表格會告訴你在那種配置下,你的處理函式實際會收到什麼。
購買前或灑到飲料後檢查鍵盤。 如果某個鍵打出了錯的字元,這個頁面可以告訴你:硬體回報的是正確的位置,只是意義不對,那是配置問題;或者回報的位置根本不同,那就是接線或韌體問題。要確認每個鍵都有反應,請改用完整的鍵盤測試。
看不到的按鍵
Fn 鍵由鍵盤內部處理,永遠不會傳到電腦。在 Windows 上,Win 鍵會開啟開始功能表,Print Screen 只會在放開時回報,甚至完全不回報。媒體鍵、亮度鍵,以及筆電的 Fn 組合鍵,通常是直接對系統執行動作,不會產生頁面讀得到的按鍵事件。鎖定鍵則會回報:Caps Lock、Num Lock 與 Scroll Lock 都有各自的 code,不過 macOS 只在按下 Caps Lock 時送出事件,放開時不會送出。如果你預期應該看到的某個鍵毫無反應,先在文字編輯器裡試試看;若在那邊有作用、在這裡卻沒有,就是上面那些由系統處理的按鍵,而不是開關壞了。台灣常見的注音或倉頡印字鍵盤,實體按鍵位置與美式鍵盤相同,所以 code 的顯示也一樣,只有 key 的值會隨你目前的輸入法與配置而變。
相關的鍵盤測試
這個頁面一次只詳細顯示一次按壓。要檢查鍵盤上每個鍵都有反應,請到首頁使用鍵盤測試,它會把每次按鍵對應到你的鍵盤版型圖上。如果同時按好幾個鍵時有些沒有顯示,鍵盤鬼鍵測試會顯示組合中哪些鍵有送達、哪些被丟掉。如果某個鍵是延遲送達而不是送錯,鍵盤延遲測試則可以測量反應速度,讓你比較兩支鍵盤。
常見問題
怎麼知道我按了哪個鍵?
在頁面點一下,然後按下那個鍵。大大的標籤會顯示按鍵的名稱,下面一行則顯示它的 code、keyCode 與位置。最近按過的 12 個鍵會留在下方的表格,所以你可以連續按好幾個鍵,再回頭一一對照。
key 和 code 有什麼不同?
key 代表這次按壓的意義,也就是它會打出的字元或執行的動作,例如 a、A、Enter 或 ArrowUp。code 則是實體按鍵的位置,例如 KeyA 或 Digit1,不會隨 Shift 或鍵盤語言改變。同一顆鍵配合 Shift 一起按,key 會變,code 卻維持不變。
keyCode 還有人在用嗎?
keyCode 已被列為棄用,瀏覽器建議改用 key 或 code,但它仍然能用,而且許多舊程式碼、教學文章與遊戲引擎還是依賴它。它是一個數字:A 是 65、Enter 是 13、空白鍵是 32、Escape 是 27。標點符號鍵的數值在不同瀏覽器之間可能不一樣,這也是它被取代的原因之一。
位置是什麼意思?
位置(location)是用來分辨成對按鍵到底按的是哪一顆。「標準」表示這個鍵只有一顆,「左側」與「右側」用來區分兩個 Shift、Ctrl、Alt 以及 Win 或 Cmd 鍵,「數字鍵盤」則表示這顆鍵在數字鍵盤上,所以數字鍵盤的 Enter 與主鍵區的 Enter,即使 key 名稱都是 Enter,也能被區分開來。
為什麼我的鍵顯示 Dead 或 Unidentified?
Dead 表示這是你的鍵盤配置中的重音符號鍵,它會等你按下一個字母之後才打出字元,常見於歐洲語言的配置。Unidentified 則表示瀏覽器收到了無法對應到已知名稱的按鍵事件,常發生在部分媒體鍵、巨集鍵或廠商自訂的按鍵。兩種情況下,code 與 keyCode 欄位通常仍然能認出實體按鍵。
為什麼按 Fn、Print Screen 或 Win 鍵都沒有任何顯示?
Fn 由鍵盤內部處理,不會當成按鍵傳到電腦。Windows 上的 Print Screen 和 Win 鍵,則會在瀏覽器看到之前就被作業系統攔下,大多數媒體鍵與亮度鍵也一樣。這些都不代表按鍵壞了,只是網頁看不到它們。
可以用這個查遊戲或指令碼要用的按鍵代碼嗎?
可以。按下那個鍵,凡是針對實體按鍵運作的東西,例如遊戲按鍵設定、AutoHotkey 或 JavaScript 事件處理,就用 code 的值;在意實際打出什麼字元的場合,則用 key 的值。如果某個函式庫或遊戲要求數字的 keyCode,那個數字就顯示在 code 旁邊。
更多鍵盤測試
以下每項測試都會針對鍵盤的某個面向做更深入的檢查。