一些键盘"和弦" (同时按下键的组合)将无法在浏览器中正确注册(Chrome和Firefox测试)。例如,使用下面的代码,试试这个:
1)按下" e"键(它将记录"键69")
2)在按住" e"时,按"]" (它将记录"键221和#34;)
3)同时仍然按下" e"和"]",按"我" (这无法记录!)
然而,如果你放弃了我的话,那就是"并按" o"相反,它将成功记录键79和#34;。document.onkeydown = function(event){
var key = event.keyCode;
console.log("key", key);
};
任何人都可以解释这里发生了什么,以及是否有任何解决方法? 对于上下文,我正在开发一个基于QWERTY的音乐应用程序,我希望能够演奏我的所有和弦。
我知道keyCode
已被弃用,或许这种行为是其中一个原因?
解决这个问题的正确方法是什么?
答案 0 :(得分:2)
我99.9%肯定这取决于键盘的硬件本身。我尝试在连接到笔记本电脑的键盘上执行 e + ] + i 但它不起作用但是当我按下 e <键盘上的/ kbd> + ] 然后在笔记本电脑上按 i 然后它就可以了。键盘通常不是为了一次注册那么多键而构建的(除了 shift , ctrl 和 alt ),因为通常不需要它。主要用于游戏的专用键盘可以一次注册更多键。尝试谷歌搜索“反重影键盘”。以下是Quora关于该主题的问题。我有一个键盘,假设在家里一次注册13个键。我回家后会在几个小时内检查代码是否适用于该键盘。
在更好的键盘上正常工作。这是一个硬件问题。
答案 1 :(得分:0)
221是] 的keyCode,79是 o 的keyCode,所以它并不是说你得到代表两个组合的代码或者一次按下更多按键。所以:
如果您需要在JavaScript中组合键,那么您应该考虑altKey,ctrlKey,shiftKey,metaKey
Here's您可能觉得有用的旧例子。 希望它有所帮助。