Drücken Sie eine Taste, um eine zweite Taste gedrückt zu halten, bis die dritte gedrückt wird

Drücken Sie eine Taste, um eine zweite Taste gedrückt zu halten, bis die dritte gedrückt wird

Ich versuche, mit AutoHotKey das folgende Verhalten zu erzielen: Wenn die ATaste gedrückt wird, hält AHK die STaste gedrückt, bis die DTaste gedrückt wird. Das folgende Skript funktioniert nicht wie erwartet:

a::
    Send {s Down}
    return

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

Das Folgende ist auch nicht der Fall:

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

d::
    release_s = 1
    return

Antwort1

Probier diese:

a::Send, {s down}

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

Problem in Ihrem Code:

GetKeyState("s", "P")wird nur berücksichtigenphysischSchlüssel. Sauf der anderen Seite wurde gesendet alsvirtuellSchlüssel von AHK.

Antwort2

Das Senden von {s Down} führt nicht zur Wiederholung einer Taste. Sie müssen eine Schleife verwenden. Probieren Sie Folgendes aus:

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


d::
    stop = 1
    return

verwandte Informationen