Keyboard Test
繁體中文

按鍵代碼查詢:我按了哪個鍵?

按下任何一個鍵,立刻看到它的名稱、code、舊式的 keyCode 數字,以及它是左側、右側還是數字鍵盤上的那一顆。適合用來查印字磨掉的鍵帽、重新對應按鍵、設定遊戲按鍵與寫程式。

按任何一個鍵,名稱、代碼與位置就會顯示在這裡。
最近按過的鍵
keycodekeyCode位置修飾鍵
–

按下任何一個鍵,下方的方塊就會告訴你按了哪個鍵:它的名稱、code、數字形式的 keyCode,以及它是左側、右側還是數字鍵盤上的版本。大大的標籤是 key 的值,下面一行顯示 code、keyCode 與位置,表格則保留你最近按過的 12 個鍵。

如何使用按鍵代碼查詢

  1. 在頁面任意處點一下,或點一下方塊,讓它取得鍵盤焦點。
  2. 按下一個鍵。大大的標籤會顯示按鍵名稱,下面一行顯示 code、keyCode 與位置。如果你同時按住 Shift、Ctrl、Alt 或 Meta,還會多一行修飾鍵列出它們。
  3. 繼續按其他鍵。每按一個,就會以同樣的五個欄位加入「最近按過的鍵」表格,最新的在最上面,最多 12 列。
  4. 按「重設」可以清除畫面與表格。

按住一個鍵不放,作業系統會自動重複輸入。重複的輸入會更新大標籤,但不會加進表格,所以按住很久的同一個鍵,只會占一列。空白鍵、Tab、Backspace、上下方向鍵、斜線鍵與引號鍵會被頁面接管,這樣測試時頁面不會捲動、不會切換焦點,也不會跳出瀏覽器的快速尋找列。同時按住 Ctrl 或 Cmd 的按鍵,會照常交給瀏覽器當成快速鍵處理。

key 與 code:你需要哪一個?

瀏覽器用兩種方式描述每一次按鍵,兩者回答的是不同的問題。

US 配置
key
"a"
code
KeyA

S 左邊那顆鍵打出小寫 a。

US 配置,按住 Shift
key
"A"
code
KeyA

同一顆實體鍵、同一個 code,只有意義變了。

AZERTY 配置
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"、"ö"、"?"
不管語言,這是哪一顆實體按鍵?codeKeyA、Digit1、Backquote
這是左 Shift 還是右 Shift?code,或位置ShiftLeft、ShiftRight
這是數字鍵盤上的 Enter 嗎?code,或位置NumpadEnter,位置為數字鍵盤
舊程式碼要的是哪個數字?keyCode65、13、32

遊戲按鍵設定、按鍵對應工具,以及任何希望在每種配置下都有相同手感的功能,請用 code。處理文字、搜尋快速鍵,以及任何在意使用者想打哪個字母的場合,請用 key。

keyCode 是什麼?為什麼還要顯示它

keyCode 是瀏覽器最早用來回報按鍵的方式:每個鍵一個數字,大致對應 Windows 的虛擬鍵碼。它已經被棄用很多年,瀏覽器也建議改用 key 或 code,但因為太多現有的程式依賴它,所以始終沒有被移除。教學文章、舊的遊戲引擎、表單驗證指令碼與許多外掛,至今仍會拿它來比對數字,所以大家還是會去查。

下面是常見的數值,在各瀏覽器間都一致:

按鍵keyCodecode
A 到 Z65 到 90KeyA 到 KeyZ
0 到 9(主鍵區)48 到 57Digit0 到 Digit9
數字鍵盤 0 到 996 到 105Numpad0 到 Numpad9
F1 到 F12112 到 123F1 到 F12
Enter13Enter 或 NumpadEnter
空白鍵32Space
Escape27Escape
Backspace8Backspace
Tab9Tab
Shift、Ctrl、Alt16、17、18ShiftLeft 等等
方向鍵(左、上、右、下)37、38、39、40ArrowLeft、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 的值會隨你目前的輸入法與配置而變。

有些鍵到不了網頁:作業系統把 Win 鍵、Print Screen 和媒體鍵留給自己,A 則直接通過。

相關的鍵盤測試

這個頁面一次只詳細顯示一次按壓。要檢查鍵盤上每個鍵都有反應,請到首頁使用鍵盤測試,它會把每次按鍵對應到你的鍵盤版型圖上。如果同時按好幾個鍵時有些沒有顯示,鍵盤鬼鍵測試會顯示組合中哪些鍵有送達、哪些被丟掉。如果某個鍵是延遲送達而不是送錯,鍵盤延遲測試則可以測量反應速度,讓你比較兩支鍵盤。

常見問題

怎麼知道我按了哪個鍵?

在頁面點一下,然後按下那個鍵。大大的標籤會顯示按鍵的名稱,下面一行則顯示它的 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 旁邊。

更多鍵盤測試

以下每項測試都會針對鍵盤的某個面向做更深入的檢查。