繁体   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