有些 "chords" 不适用于 onkeydown (JavaScript)
Some "chords" do not work with onkeydown (JavaScript)
某些键盘 "chords"(同时按下的组合键)无法在浏览器中正确注册(Chrome 和 Firefox 已测试)。例如,使用下面的代码,试试这个:
1) 按"e"键(会记录"key 69")
2) 在按住 "e" 的同时按“]”(它将记录 "key 221")
3) 在按住 "e" 和 "] 的同时,按 "i"(记录失败!)
4) 但是,如果您在 "i" 上放松并改为按 "o",它将成功记录 "key 79"。
document.onkeydown = function(event){
var key = event.keyCode;
console.log("key", key);
};
谁能解释一下这是怎么回事,是否有任何解决方法?
对于上下文,我正在开发一个基于 QWERTY 的音乐应用程序,我希望能够演奏我所有的和弦。
我知道 keyCode
已被弃用,也许这种行为是原因之一?
解决这个问题的正确方法是什么?
我 99.9% 确定这取决于键盘的硬件本身。我尝试在连接到笔记本电脑的键盘上执行 e + ] + i 但它不起作用但是当我在那个键盘上按 e + ] 然后在笔记本电脑上按 i 然后它工作.键盘通常不会被构建为一次注册那么多键(除了 shift、ctrl 和 alt ) 因为通常不需要它。有专门为游戏而设计的特殊键盘,可以一次注册更多键。尝试使用谷歌搜索“防重影键盘”。这是关于 Quora 关于该主题的问题。我有一个键盘,假设在家里一次按下 13 个键。我会在回家后的几个小时内检查代码是否适用于该键盘。
更新:
在更好的键盘上工作正常。这是一个硬件问题。
221 是 ] 的密钥代码,79 是 o 的密钥代码,所以这并不是说您得到的代码代表同时按下两个或多个键的组合。所以:
- 按 "e" 键(它将记录 "key 69")- 没关系
- 在按住 "e" 的同时,按“]”(它将记录 "key 221")- 您将获得最后一次按下的 kew 的代码 (221) ]
- 同时按住 "e" 和“]”,按 "i"(这失败了
log!) - 我无法重现这种情况,我得到代码 73,它是 i
的代码
- 但是,如果您在 "i" 上松开并改为按 "o",它将
成功登录 "key 79"。 - 您正在获取最后一次按下的 kew 的代码 o
如果您需要在 JavaScript 中组合键,那么您应该考虑 altKey, ctrlKey, shiftKey, metaKey
Here's 一个您可能会觉得有用的旧示例。
希望对你有帮助。
某些键盘 "chords"(同时按下的组合键)无法在浏览器中正确注册(Chrome 和 Firefox 已测试)。例如,使用下面的代码,试试这个:
1) 按"e"键(会记录"key 69")
2) 在按住 "e" 的同时按“]”(它将记录 "key 221")
3) 在按住 "e" 和 "] 的同时,按 "i"(记录失败!)
4) 但是,如果您在 "i" 上放松并改为按 "o",它将成功记录 "key 79"。
document.onkeydown = function(event){
var key = event.keyCode;
console.log("key", key);
};
谁能解释一下这是怎么回事,是否有任何解决方法? 对于上下文,我正在开发一个基于 QWERTY 的音乐应用程序,我希望能够演奏我所有的和弦。
我知道 keyCode
已被弃用,也许这种行为是原因之一?
解决这个问题的正确方法是什么?
我 99.9% 确定这取决于键盘的硬件本身。我尝试在连接到笔记本电脑的键盘上执行 e + ] + i 但它不起作用但是当我在那个键盘上按 e + ] 然后在笔记本电脑上按 i 然后它工作.键盘通常不会被构建为一次注册那么多键(除了 shift、ctrl 和 alt ) 因为通常不需要它。有专门为游戏而设计的特殊键盘,可以一次注册更多键。尝试使用谷歌搜索“防重影键盘”。这是关于 Quora 关于该主题的问题。我有一个键盘,假设在家里一次按下 13 个键。我会在回家后的几个小时内检查代码是否适用于该键盘。
更新:
在更好的键盘上工作正常。这是一个硬件问题。
221 是 ] 的密钥代码,79 是 o 的密钥代码,所以这并不是说您得到的代码代表同时按下两个或多个键的组合。所以:
- 按 "e" 键(它将记录 "key 69")- 没关系
- 在按住 "e" 的同时,按“]”(它将记录 "key 221")- 您将获得最后一次按下的 kew 的代码 (221) ]
- 同时按住 "e" 和“]”,按 "i"(这失败了 log!) - 我无法重现这种情况,我得到代码 73,它是 i 的代码
- 但是,如果您在 "i" 上松开并改为按 "o",它将 成功登录 "key 79"。 - 您正在获取最后一次按下的 kew 的代码 o
如果您需要在 JavaScript 中组合键,那么您应该考虑 altKey, ctrlKey, shiftKey, metaKey
Here's 一个您可能会觉得有用的旧示例。 希望对你有帮助。