提问人:MWRazer 提问时间:10/19/2023 更新时间:10/19/2023 访问量:35
如何检测和映射同时按下的多个键
How to detect and map many keys being pressed at once
问:
我正在使用 keydown 和 keyup 事件来检测按键。但是当我按下 2 或 3 个或更多键并按住它们时,大多数时候它不会识别之后按下的任何键,直到我停止按住这些键。我希望同时检测任意数量的按键。
似乎我看过的所有其他帖子都只是关于弄清楚如何同时映射多个键,而不是关于我遇到的这个特定问题。
这就是我在代码中映射按键的方式:
// a map of press-able keys
const key = {
w: false,
a: false,
s: false,
d: false
};
document.addEventListener('keydown', function(e) {
if (key[e.key.toLowerCase()] != undefined) {
key[e.key.toLowerCase()] = true;
}
});
document.addEventListener('keyup', function(e) {
if (key[e.key.toLowerCase()] != undefined) {
key[e.key.toLowerCase()] = false;
}
});
例如,如果我同时按住 W、A、S 和 D,大多数时候,它只会识别我按下的前 2 或 3 个,而忽略最后一个 1 或 2(key.a 和 key.w 可能为 true,但 key.s 和 key.d 可能是 false,即使它们被按下)。
这个实现有问题吗?或者我在搜索中找不到的 keydown 事件是否有限制?能够同时检测多个密钥的潜在解决方案是什么?
答:
2赞
Dick Larsson
10/19/2023
#1
键盘重影:是电脑键盘无法准确记录同时按下键的现象,通常会影响游戏和打字体验。采用防重影技术通过确保正确识别多个按键输入来缓解此问题。
Microsoft提供了一个交互式演示,您可以使用它来测试您的键盘。https://www.microsoft.com/applied-sciences/projects/anti-ghosting-demo
评论