是否存在 keyCode 为 1 的 key ?我尝试过研究但找不到任何东西。每个键的键码由什么决定?只是想知道...
var directions = {
37: "left",
38: "up",
39: "right",
40: "down",
87:"up",
68:"right",
83:"down",
65:"left"
};
这里显示了左、右、上、下键和 w、a、s、d 键的键码。
最佳答案
(已修改)
旧值 keyCode
UIEvents standard 涵盖了键盘事件的属性。特别是
-
keyCode
通常是所按下按键的 ASCII 字符代码,尤其是数字和大写字母。 - 对于小写字母,
keyup
和keydown
事件返回为keyCode
值大写字母的 ASCII 代码,但是 - keycode
对于keypress
中的小写字母events 是小写字母的 ASCII 代码。keyCode
对于某些按键,其功能与ASCII控制字符类似,是控制字符的ASCII码。例如。TAB
,CR
,BS
或ESC
分别为 Tab、Enter、Backspace 或 Esc 标记键返回 ASCII 代码。- 对于具有 ASCII 代码的非字母数字键,
keyCode
可以从7.3.3节中显示的关键代码表获得或7.3.4 。结果他们的keyCode
value 不是它们的 ASCII 值。 - 如果按键不是可打印字符,则它没有相应的 ASCII 代码,并且不会生成按键事件。这种 key 可以使用
keyCode
值为keydown
和keyup
来自小写字母代码的事件(例如Del
使用“d”,功能键F1
到F11
使用字母“p”到“z”),或者来自其键码取自表 7.3 的字符的 ASCII 代码.3或7.3.4。上面链接了。例如。F12
使用 ASCII 代码表示“{”,ArrowLeft
对于 '%' 和pageDown
'"' 作为其keyCode
值。) <小时/>How are keycodes decided?
keyCode
的由来这些值可能可以追溯到物理键盘上的扫描代码如何以两个字节发送到 PC:一个用于按下的字符,另一个用于修饰键(如 Shift、Alt 等)的状态字节。这可以通过针对不同键盘布局的查找表进行转换,但在这一过程中,至少有一个浏览器最终得到 keyCode
。解决方案使用 8 位值来表示按下了哪个键。无论哪种浏览器,其他浏览器都会效仿以变得“兼容”。
避免使用keyCode
现代浏览器中的值,除非需要支持不提供 Unicode 或 named-values 的旧版浏览器。在事件对象的 key
中属性。
Is there a key with a keyCode of 1?
ASCII 码值 1 是 ASCII SOH
(标题开始)控制字符,在旧的 ASCII 键盘上按 Ctrl
生成。和 A
同时按键。标准第 7 节中没有提到它是由自己的键盘键生成的(它没有键盘键),也没有提到它被用于其他任何用途。
简而言之,不可能生成 keycode
1
的值从浏览器中的 PC 键盘*。您可以尝试检测 A
键为ctrlKey
事件属性已设置,但 Ctrl+A
在软件中广泛用于“全选”。
* 在 Windows 下,按住 ALT 键的同时在键盘上键入 0,0 和 1 会生成 SOH
性格,并得到我的编辑的认可。在 Firefox 中尝试这个技巧并没有奏效,只是产生了 ALT
的关键事件。 , 0
, 0
和1
。
关于javascript - 键码是如何决定的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59482038/