1つのキーを押して2番目のキーを押したままにし、3番目のキーが押されるまで押し続けます。

1つのキーを押して2番目のキーを押したままにし、3番目のキーが押されるまで押し続けます。

AutoHotKey で次の動作を実現しようとしています: キーが押されると、AHK はキーが押されるまでキーAを押し続けます。次のスクリプトは期待どおりに動作しません:SD

a::
    Send {s Down}
    return

d::
    if (GetKeyState("s", "P"))
        {
        Send {s Up}
        }
    return

以下も同様です。

a::
    release_s = 0
    Loop
        {
        SendInput, s
        if release_s
            break
        }
    return

d::
    release_s = 1
    return

答え1

これを試してみてください:

a::Send, {s down}

d::
    if(GetKeyState("s")) {
        Send, {s up}
    }
return

コードの問題:

GetKeyState("s", "P")のみを説明します物理的なキー。S一方は、バーチャルキーはAHK製。

答え2

{s Down} を送信してもキーの繰り返しは発生しません。ループを使用する必要があります。これを試してみてください:

a::
    stop = 0
    Loop 
    {
        SendInput, s
        Sleep 50 ;adjust for speed of repetition
        if stop
            break
    }
    return


d::
    stop = 1
    return

関連情報