在Windows上不会触发带有“Ctrl,Shift或Alt”的Keydown事件

时间:2017-06-29 11:50:21

标签: javascript keyboard-events

我想知道用户在mousemove期间按下 Shift 键的时间。

问题是当按下 Ctrl Shift Alt 时,Windows不会触发keydown事件。相反,在释放密钥时触发事件。在Mac上,一切都按预期工作,但是当你按下键时会触发keydown

关于鼠标移动事件的相同问题。 event.shiftKey只有在你按住 Shift 并触发了mousedown后才会成立......

这有什么变通方法吗?这是一个例子:https://jsfiddle.net/ecz0deqw/4/

document.onkeydown = function (e) {
    addText('Key pressed: ' + e.key) 
};
document.onmousemove = function (e) {
    if(e.shiftKey)
        addText('ShiftMove');
   else {
       addText('NoShift')
   }
} 
function addText(text) {
    var newP = document.createElement("p"); 
    newP.innerText = text;
    document.body.insertBefore(newP,document.body.childNodes[0]);
}

谢谢/ Eric

1 个答案:

答案 0 :(得分:0)

您的Windows计算机是VM吗? Parallels(至少)使用修饰键进行有趣的操作。

Actions>下Configure转到Mouse & Keyboard标签。在Keyboard标签旁边,选择Optimize for games

Parallels在该选项下面指出:"当键盘针对游戏进行优化时,修饰键变得更具响应性。"