【发布时间】:2015-10-11 21:06:06
【问题描述】:
我正在制作一个键盘映射器(它基本上允许我们检查同时按下的多个键),但我遇到了一个问题。
问题是它不会检测到所有被按下的键。比如:we pressed 10 keys but the code says that only 7 keys are being pressed,比如we pressed 6 keys but the code says that only 4 keys are being pressed,是的,很随机……
那么解决方法是什么?
注意:
- 我已经尝试过
addEventListener等方法 - 我已经尝试过其他人制作的键盘映射器,但他们都有同样的问题(至少我遇到过的问题)
- 我愿意接受其他方法(除了这个)
- 我是新手,所以...是的 :p
谢谢!
代码如下:
var obj = {};
$(document).ready(function() {
document.addEventListener("keydown", function(event) {
obj[event.keyCode] = true;
$("#output").text("" + JSON.stringify(obj));
});
$(document).keyup(function() {
obj[event.keyCode] = false;
$("#output").text("" + JSON.stringify(obj));
});
});
<!DOCTYPE HTML>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<p>"PRESS ANY KEY"</p>
<p>KeyDown:
<p id="output"></p>
</p>
<br/>
</body>
</html>
【问题讨论】:
-
问题从键盘本身开始:许多常见的键盘不会注意同时按下的键超过三个或四个。
-
如果您的键盘是通过 USB 连接的,那么您只能按 6 个键和几个修饰键 IIRC。具有 n 键翻转和 PS/2 的键盘没有此限制。 n键翻转相关测试:here.
标签: javascript keyboard-events keydown keyup