处理需要能够同时按住多个键才能触发独特功能的应用。
我遇到某种情况,某些键组合会阻止“keydown”被触发。
持有水平行1 > 2 > 3 > 4 > 5 > 6
或垂直列1 > Q > A > Z
(6个键似乎是浏览器一次识别的最大值)但是 - 如果用户持有角形,例如1 > 2 > w
,则会阻止事件。
可以使用这个小提琴演示: http://jsfiddle.net/B1KMusic/U5L2X/light/
有趣的是,虽然键的“形状”显得很重要 - 2 > 3 > W
和3 > 4 > R
等也会被阻止。
即使此形状在键盘上旋转,相同的形状如:C -> X -> S
和N -> H -> J
也会这样做。
如果留下间隙且角落未“连接”,则事件将正常运行3 > E > D > V
- 但如果按下C
,则无效。
这里发生了什么?这是一些有意的浏览器默认设置,以防止密钥捣碎?
编辑:正如所提供的答案所指出的,这是一个硬件问题,因此包含硬件信息是有意义的:在2013年末Macbook Pro上测试过,apple stackexchange问题确认了答案:https://apple.stackexchange.com/questions/47699/are-apple-keyboards-multi-key-rollover
答案 0 :(得分:5)
这是键盘的硬件限制,而不是浏览器的问题。大多数键盘使用矩阵布置用于键开关,因此不能检测按下的键的某些组合。将要和不会工作的具体组合取决于硬件,但一般来说,假设可以同时按下两个以上的非修改键是不安全的。
某些游戏键盘支持n-key rollover(即,同时按下任意数量的键),但这些很少见。