首頁·鍵碼

120 個按鍵的 code 與 keyCode

KeyboardEvent 給出的那些值。code 是鍵盤上的實體位置,不隨配置變化;key 是當下敲出來的字元,會變。

code 與 key 的區別

code 是鍵盤上的實體位置,韓文鍵盤還是法文鍵盤都一樣。key 是當下敲出來的字元,會變——同一個位置可能是 a、A 或 ㅁ。問「按了哪個位置」用 code,問「輸入了什麼」用 key。

keyCode 已從標準中移除。新程式請用 code 或 key,這裡的數字用來讀舊程式。

字母26

位置固定為 KeyA。哪怕鍵盤上敲出的是韓文 ㅁ,code 依然是 KeyA。

數字10

數字列。它們的 keyCode 與數字鍵盤上同樣的數字不同。

符號12

keyCode 在各家瀏覽器裡分道揚鑣的,就是這一片。

數字鍵盤16

location 是 3,這正是它和數字列的區別。

功能鍵20

F1 是 112、F2 是 113,依序排下去。

移動8

不打字,只移動游標。

編輯6

刪除、插入、換行。

修飾鍵8

單按沒有作用,要壓在別的鍵上。左右共用一個 keyCode。

鎖定鍵3

按一下,狀態就一直保持。

系統4

處理視窗和螢幕的鍵。

輸入法7

切換輸入法的鍵——韓/英、漢字、日語轉換都在這裡。

怎麼看這一頁

  • code 是位置,key 是敲出來的字元。做快速鍵要按 code 比較。
  • keyCode 已廢棄,只在讀舊程式時用。
  • 左右 Shift 的 keyCode 相同,靠 location 區分。
  • 數字列的 1 和數字鍵盤的 1 是兩個鍵——49 和 97。

常見問題

Q. 該用 code 還是 key?

要抓位置(例如快速鍵)用 code,要知道輸入了什麼用 key。換了鍵盤配置,code 依然不變。

Q. 為什麼不建議用 keyCode?

它已從標準移除,而且各瀏覽器給的值並不一致,符號鍵尤其如此。

Q. Enter 的鍵碼是多少?

keyCode 是 13,code 是 Enter。數字鍵盤上的 Enter,code 是 NumpadEnter,keyCode 同樣是 13。

Q. 怎麼區分左右 Shift?

靠 keyCode 分不出來,兩個都是 16。看 code(ShiftLeft、ShiftRight)或 location(1、2)。

Q. 韓文鍵盤上的 code 一樣嗎?

一樣。按下打出 ㅁ 的那個位置,code 仍然是 KeyA——因為 code 指的是位置。