JavaScript KeyCodes是什么?

84

JavaScript所支持的按键码是什么?如果各个浏览器的按键码不同,请列出每个浏览器所对应的按键码。


那么你想要完整的Unicode范围吗?你应该明确你所说的“完整”是什么意思。 - Jakub Hampl
完整的意思是包含所有按键码数字。我给出的示例中包含了8、9、13、16、17等数字...因此跳过了一些数字。 - Web_Designer
3
我相信有一定数量的字符被赋予了 JavaScript keycode。 - Web_Designer
7
为什么不使用JavaScript自己创建这样的表格呢? - pimvdb
1
@pimvdb,听从了您的建议!https://dev59.com/tW035IYBdhLWcg3wJcYv#14905611 - Web_Designer
@pimvdb 注意了,在JavaScript中不同的浏览器会给出不同的按键代码。如果你在JavaScript中尝试,请务必检查FireFox和非FireFox,并特别注意按键代码59、61、173、186、187、189。 - Mishax
7个回答

59

keyCodes(键码)与 ASCII 值不同。完整的 keyCode 参考请参见http://unixpapa.com/js/key.html

例如,数字小键盘具有 keyCodes 96-105,对应于 ASCII 中小写字母的开头。这可能会导致验证数字输入时出现问题。


2
链接的页面并不包含完整的参考资料。它充分解释了键码取决于键盘,而键码或键码组合的含义取决于解释它们的软件。因此,无法提供完整的列表。 - Jukka K. Korpela
9
最近我使用了一个方便的按键代码生成器,它位于http://www.javascriptkeycode.com,用来测试不同的键盘组合。 - Raz Wilson

32

13
糟糕的网站,每次都会让我的浏览器崩溃。不要使用这个! - Florian Leitgeb
@Floeee 抱歉,它目前为所有具有JavaScript键码的65536个字符生成表行。它非常高效地完成了这项工作,但仍需要10-20秒钟的时间。我可能会更改它,以便开始加载1000个字符,然后根据请求加载更多。回答已编辑以解释此事。 - Web_Designer
为什么不在页面开始时显示一个简单的文本消息来解释这个问题? - Jared
4
可能更准确的说法是“在您终止进程之前,需要10-20秒来使您的浏览器无法恢复。” - Dissident Rage
4
这些是字符编码而不是按键编码。 按键编码列在 http://unixpapa.com/js/key.html 的3.3部分。 - Semra
显示剩余4条评论

19

我需要这样一个东西来创建一个游戏的控制配置界面,所以我编译了一个标准美式键盘布局按键代码对应它们的按键名称的列表。

这里有一个包含码 -> 名称映射及其反向映射的演示: http://jsfiddle.net/vWx8V/

如果您想支持其他键盘布局,则需要修改这些映射并单独进行处理。

除非您正在寻找一个包括控制字符和其他特殊值(这些可能不会或很少使用键盘输入,并且可能超出Javascript的keydown/keypress/keyup事件范围)的按键代码值列表。其中许多是控制字符或特殊字符,如null (\0)等,您很可能不需要它们。

请注意,完整键盘上的按键数少于许多按键代码值。


再次感谢。将它们已经放入对象中是一个不错的时间节省器。 - charlie roberts
当我在我的Mac上按右键+cmd按钮时,它会返回右键单击? - aug

8
这款应用真的太棒了。它本质上是一个虚拟键盘,可以立即显示在标准美式键盘上按下的键码。

http://keycodes.atjayjo.com/


4
尽管楼主努力跟进,但这真的很棒! - sealocal

5

我根据此链接创建了一个包含KEY_CODE常量的gist:https://gist.github.com/DJDaveMark/eb9725825ac3a87616c66d05a8cf8f4a - DJDaveMark

3

1
运行此代码片段时,可能会给出一个可能的答案。

document.write('<table>')
for (var i = 0; i < 250; i++) {
  document.write('<tr><td>' + i + '</td><td>' + String.fromCharCode(i) + '</td></tr>')
}
document.write('</table>')
td {
  border: solid 1px;
  padding: 1px 12px;
  text-align: right;
}
table {
  border-collapse: collapse;
}
* {
  font-family: monospace;
  font-size: 1.1em;
}


2
这些不是键码,它们是字符代码。那是不同的。 - Lukas Eder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接