某些键组合可防止javascript中的键事件

时间:2015-03-10 20:30:59

标签: javascript

处理需要能够同时按住多个键才能触发独特功能的应用。

我遇到某种情况,某些键组合会阻止“keydown”被触发。

持有水平行1 > 2 > 3 > 4 > 5 > 6或垂直列1 > Q > A > Z

(6个键似乎是浏览器一次识别的最大值)但是 - 如果用户持有角形,例如1 > 2 > w,则会阻止事件。

可以使用这个小提琴演示: http://jsfiddle.net/B1KMusic/U5L2X/light/

有趣的是,虽然键的“形状”显得很重要 - 2 > 3 > W3 > 4 > R等也会被阻止。

即使此形状在键盘上旋转,相同的形状如:C -> X -> SN -> H -> J也会这样做。

如果留下间隙且角落未“连接”,则事件将正常运行3 > E > D > V - 但如果按下C,则无效。

这里发生了什么?这是一些有意的浏览器默认设置,以防止密钥捣碎?


编辑:正如所提供的答案所指出的,这是一个硬件问题,因此包含硬件信息是有意义的:在2013年末Macbook Pro上测试过,apple stackexchange问​​题确认了答案:https://apple.stackexchange.com/questions/47699/are-apple-keyboards-multi-key-rollover

1 个答案:

答案 0 :(得分:5)

这是键盘的硬件限制,而不是浏览器的问题。大多数键盘使用矩阵布置用于键开关,因此不能检测按下的键的某些组合。将要和不会工作的具体组合取决于硬件,但一般来说,假设可以同时按下两个以上的非修改键是不安全的。

某些游戏键盘支持n-key rollover(即,同时按下任意数量的键),但这些很少见。