1 (изменено: RacalCucumber, 2024-03-21 18:25:31)

Тема: AHK: операции при удерживаемой кнопке хоткей

Есть скрипт, который отдельно при нажатии и отдельно отпускании кнопки R(условно) посылает сканкод клавиатуры G(условно). Кнопка активации R назначается через команду
Hotkey, ~%hk%, sub, on UseErrorLevel

Сам скрипт из двух  пар Send {%% Down}{%% Up} и одного keywait %hk% я проводить не буду в силу его очевидности.

Есть потребность добавить следующее:
Если при удерживаемой нажатой кнопке R нажать левую кнопку мышки, то должна быть выполнена последовательность операция с колесиком мышки, затем послано G. При этом после этого отпускание кнопки R никаких больше действий производится не должно до ее повторного нажатия.


global hk = "r"
global HK_1_5 = "g"

~r::
{
	Send {%HK_1_5% Down}{%HK_1_5% Up}
	Loop
	{
		sleep, 10
		GetKeyState, state, %hk% ;проверяем нажата ли кнопка хк
		If (state = "U") 
		{
			Send {%HK_1_5% Down}{%HK_1_5% Up}
			break
		}	
		if GetKeyState("LButton", "P") ;проверяем не нажата ли левая кнопка мышки
		{
			Sleep, 30
			Send {%HK_1_5% Down}{%HK_1_5% Up}
			Sleep, 30
			loop 4
			{
				MouseClick, WheelDown,,, 1
				Sleep, 30
			}
			break
		}
	}
}

Вот этот код если я зажимаю R, кликаю левой кнопкой мышки выполняет ту часть что должна выполнятся после клика. Но при отпускании кнопки R после этого выполняется и та часть кода, которая должна исполняться без клика мышки. Как мне сделать, что бы выполнялось только что-то одно?