簡體   English   中英

鍵碼是如何決定的?

[英]How are keycodes decided?

是否有 keyCode 為 1 的密鑰? 我試過研究,但找不到任何東西。 每個鍵的鍵碼由什么決定? 就是想...

var directions = {
    37: "left",
    38: "up",
    39: "right",
    40: "down",
    87:"up",
    68:"right",
    83:"down",
    65:"left"
};

這里顯示了左、右、上、下鍵和 w、a、s、d 鍵的鍵碼。

(修改)

UIEvents 標准中涵蓋了鍵盤事件的舊keyCode屬性的值。 特別是

  • keyCode通常是按下的鍵的 ASCII 字符代碼,特別是對於數字和大寫字母。
  • 對於小寫字母, keyupkeydown事件返回的keyCode值的大寫字母的ASCII碼,但是-
  • keypress事件keypress寫字母的keycode是小寫字母的 ASCII 碼。
  • 一些按鍵的keyCode ,其功能類似於ASCII控制字符,是控制字符的ASCII碼。 EG TABCRBSESC分別為 Tab、Enter、Backspace 或 Esc 標簽鍵返回 ASCII 代碼。
  • 對於具有 ASCII 碼的非字母數字鍵, keyCode可以從7.3.37.3.4節所示的鍵碼表中獲得。 因此,它們的keyCode值不是它們的 ASCII 值。
  • 如果鍵不是可打印字符,則它沒有相應的 ASCII 代碼,也不會生成按鍵事件。 這種鍵可以使用來自小寫字母代碼(例如, Del使用“d”,功能鍵F1F11使用字母“p”到“z”)或字符的 ASCII 代碼的keyCode值用於keydownkeyup事件其密鑰代碼取自表 7.3.3 或 7.3.4。 上面有鏈接。 EG F12使用關於“{”的ASCII碼, ArrowLeft為“%”和pageDown為““”作為它們keyCode值)。

    鍵碼是如何決定的?

keyCode值的起源可能可以追溯到物理鍵盤的掃描代碼如何以兩個字節的形式發送到 PC:一個字節用於按下的字符,一個狀態字節用於修改鍵,如 Shift、Alt 等。 這可以通過針對不同鍵盤布局的查找表進行轉換,但至少有一個瀏覽器最終會使用keyCode解決方案來表示使用 8 位值表示按下了哪個鍵。 無論瀏覽器是什么,其他瀏覽器都會效仿以變得“兼容”。

避免在現代瀏覽器中使用keyCode值,除非需要支持在事件對象的key屬性中不提供 Unicode 或 命名值的舊瀏覽器。


是否有 keyCode 為 1 的密鑰?

ASCII 碼值 1 是 ASCII SOH (標題開始)控制字符,它是在舊的 ASCII 鍵盤上通過同時按下CtrlA鍵生成的。 沒有提到它是由它自己的鍵盤鍵生成的(它沒有一個),或者在標准的第 7 節中被用於其他任何東西。

簡而言之,不可能從瀏覽器中的 PC 鍵盤生成keycode1 *。 您可以嘗試使用ctrlKey事件屬性集檢測A鍵,但Ctrl+A在軟件中廣泛用於“全選”。

* 在 Windows 下,在按住 ALT 鍵的同時在鍵盤上鍵入 0,0 和 1 會產生一個SOH字符,並且我的編輯器會識別出這樣的字符。 在 Firefox 中嘗試這個技巧沒有用,只是為ALT001生成了關鍵事件。

https://www.w3schools.com/jsref/event_key_keycode.asp

utf8/16 已經取代了 ASCII,因為計算已經適應系統地處理世界上所有的語言。 https://www.w3schools.com/charsets/ref_html_utf8.asp

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM