1

Тема: AHK: Скрипт не повторяет выполнения участка кода.


sc010::       ;нажатие Q
+sc010:: 
 	Send {q down} 
	Send {p down}
 	Send {q up}
 	KeyWait, Q 
 	Send {p up}
 Return

sc012::	      ;нажатие E
+sc012::       
 	Send {e down} 
 	Send {p down}
 	Send {e up} 
 	KeyWait, E 
 	Send {p up}
 Return

Если поочередно нажимать кнопки Q и E удерживая их то после первого прохода операции первой нажатой кнопки перестают выполнятся.
Пример:qp ep ep ep ep
т.е. после прожатия и удержания Q прожимаешь и удерживаешь Е(отпускаешь Q), нажимаешь Q(удерживаешь Е) и тд.

2 (изменено: ANTONIO, 2024-02-26 22:58:34)

Re: AHK: Скрипт не повторяет выполнения участка кода.

NewbieAhk
Если я правильно понял, что вы хотите сделать, а именно повторения, то это можно сделать с помощью  goto.


sc010::       ;нажатие Q
+sc010::
 	Send {q down}
	Send {p down}
 	Send {q up}
 	KeyWait, Q
 	Send {p up}
	goto sc012
 Return

sc012::	      ;нажатие E
+sc012::
 	Send {e down}
 	Send {p down}
 	Send {e up}
 	KeyWait, E
 	Send {p up}
	goto sc010
 Return
F10::ExitApp ;F10 выход с ахк(остановка)

3

Re: AHK: Скрипт не повторяет выполнения участка кода.

Идея с goto действительно позволяет нажимать эти кнопки поочередно удерживая их. Но увы, стоит кнопку отпустить программа впадает в бесконечный цикл, а это совсем не то что хотелось бы.

4

Re: AHK: Скрипт не повторяет выполнения участка кода.

Попробуйте так:

global q := false, e := false

*$q::
*$e::
    k := SubStr(A_ThisHotkey, 0)
    if !(%k%) {
        %k% := true
        Send {%k% down}{p down}{%k% up}
        timer := Func("KeyUp").Bind(k)
        SetTimer, % timer, 100
    }
return

KeyUp(key) {
    if !GetKeyState(key, "P") {
        SetTimer,, Delete
        Send {p up}
        %key% := false
    }
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder