0

複数のキープレスイベントを操作しているときに、正常に機能するこのコードを見つけました

$(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キーの代替オプションは何ですか

4

2 に答える 2

2
  1. keyupイベントを使用します。
  2. Mac では、左のコマンドは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");
    }
});
于 2013-05-17T06:53:25.677 に答える
0

前に押したキーを覚えておいてください。シフトを押した場合のように。onKeyReleaseでブール値または何かを取得して、shiftPressed = true再び false にします。そうすれば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;
    }
}
于 2013-05-17T06:33:24.453 に答える