在处理多个按键事件时,我发现这个代码很精简
$(document).bind('keypress', function(event) {
if( event.which === 65 && event.shiftKey ) {
alert('you pressed SHIFT+A');
}
});
但是要使它与Windows密钥组合起来......就像
一样event.which === 65 && event.windowsKey
它失败了......
是否有任何选项可以使其与Windows密钥一起使用?
如果它是一台mac机器,那么没有键作为windows ..那么什么可能是mac中windows键的备用选项
答案 0 :(得分:2)
keyup
活动。which = 91
,右侧命令为which = 93
。我不知道Windows上有什么,但你可以自己测试一下。 正如@ian所评论的,它们应分别为91和92。 测试
$(document).on('keyup', function(e) {
var modKey = "";
if (e.shiftKey) modKey += "shiftKey,";
if (e.ctrlKey) modKey += "ctrlKey,";
if (e.altKey) modKey += "altKey,";
if (e.metaKey) modKey += "metaKey,";
console.log ("which: " + e.which + " modkey: " + modKey );
});
更新:尝试使用keydown
事件和event.metaKey
$(document).on('keydown', function(e) {
if(e.which === 65 && event.metaKey ) {
console.log ("You pressed Windows + A");
}
});
答案 1 :(得分:0)
记住你之前按过的键。就像你按下shift一样。在onKeyRelease上获取布尔值或shiftPressed = true
的内容,使其再次为假。这样你就可以在做某事之前检查shiftPressed == true && aPressed == true
是否
我刚才做了一些WASD游戏。如果您看到代码,也许更有意义:
var up = false;
var down = false;
var left = false;
var right = false;
function keyUp(e) {
keyCode = (e.keyCode ? e.keyCode : e.which);
if (keyCode == 37 || keyCode == 65) {
left = false;
}
if (keyCode == 38 || keyCode == 87) {
up = false;
}
if (keyCode == 39 || keyCode == 68) {
right = false;
}
if (keyCode == 40 || keyCode == 83) {
down = false;
}
}
function forceStopMoving() {
left = false;
up = false;
right = false;
down = false;
}
function keyDown(e) {
keyCode = (e.keyCode ? e.keyCode : e.which);
if (keyCode == 37 || keyCode == 65) {
left = true;
}
if (keyCode == 38 || keyCode == 87) {
up = true;
}
if (keyCode == 39 || keyCode == 68) {
right = true;
}
if (keyCode == 40 || keyCode == 83) {
down = true;
}
}