Presione una tecla para mantener presionada una segunda tecla, hasta que se presione la tercera

Presione una tecla para mantener presionada una segunda tecla, hasta que se presione la tercera

Estoy intentando obtener el siguiente comportamiento con AutoHotKey: cuando Ase presiona la tecla, AHK mantiene presionada la Stecla hasta que Dse presiona la tecla. El siguiente script no funciona como se esperaba:

a::
    Send {s Down}
    return

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

Tampoco lo siguiente:

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

d::
    release_s = 1
    return

Respuesta1

Prueba este:

a::Send, {s down}

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

Problema en tu código:

GetKeyState("s", "P")sólo dará cuenta defísicollaves. Spor el otro ha sido enviado comovirtualclave por AHK.

Respuesta2

Enviar {s Down} no provocará la repetición de una clave. Necesitas usar un bucle. Prueba esto:

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


d::
    stop = 1
    return

información relacionada