Нажмите одну клавишу, чтобы удерживать вторую клавишу, пока не будет нажата третья.

Нажмите одну клавишу, чтобы удерживать вторую клавишу, пока не будет нажата третья.

Я пытаюсь получить следующее поведение с AutoHotKey: при Aнажатии клавиши AHK удерживает Sклавишу до тех пор, пока Dклавиша не будет нажата. Следующий скрипт не работает так, как ожидалось:

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

Связанный контент