yalanne
Да, мне стоило более подробно расписать задачу, но время было позднее, а после битвы с ahk 'думалка' была похожа на плавленный сырок. Итак:
По поводу контрола: в контексте скрипта написанного Вами выше я пытался добавить его в список "клавиш исключений", которые не прерывали бы скрипт. что собственно у меня не вышло.
А по логике - выходит, что мы его просто не трогаем, он работает в обычном режиме и не прерывает скрипт.
Попробую объяснить работу приложения, возможно так будет проще.
Действие в приложении выполняется нажатием клавиш q-d и последующим нажатием на ЛКМ,
ПКМ - отвечает на "навигацию", положение курсора.
Условия таковы, что если я нажимаю на q-d, но потом жму на ПКМ для перемещения курсора, то при последующем нажатии на ЛКМ действие не будет произведено, так как ПКМ отменяет нажатия на q-d, и нужно заново нажимать на них и далее на ЛКМ.
И второе условие, двойное нажатие на любую из клавиш q-d вызывает другое действие.
(Последнее условие в работе скрипта не участвует, важно только что бы двойных нажатий на q-d скрипт не производил ни при каких условиях).
Мне нужно, что бы я мог держать зажатой правую клавишу, управляя положением курсора посредством цмкла повтора нажатий ПКМ, но при нажатии на q-d, этот цикл бы прекращался, и возобновлялся только после нажатия на ЛКМ или нового нажатия на ПКМ.
( И соответственно, если ни была нажата ни одна из клавиш q-d, то просто отжатие ПКМ привет к остановке цикла тоже )
Алгоритм таков: ( на примере клавиши 'q' )
Если ПКМ удерживается в нажатом состоянии (выполняется цикл повтора нажатий), то:
- Нажатие на 'q' вызывает сначала остановку этого цикла, а затем отправляет сама себя, далее идет ожидание:
а) либо ЛКМ, нажатие на которую приведет к действию в приложении и затем, через небольшой промежуток времени, например 400мс, возобновит повтор цикла нажатий ПКМ,
при условии, что ПКМ все еще находится в нажатом состоянии).
б) либо ПКМ, новое нажатие на которую возобновляет цикл, если он приостановлен. (само же нажатие q-d отменяется приложением, так что здесь все просто)
г) если после нажатия на q-d ПКМ была отпущена, то это ничего не меняет, цикл на уже находится в режиме паузы, а скрипт ожидает нажатия на ЛКМ или ПКМ.
Нужен ли какой нибудь лимит времени ожидания левой кнопки мыши?
Нет, лимит не нужен, ожидаем нажатие на ЛКМ или ПКМ.
Правая кнопка мыши должна быть зажата все это время?
Или же во время ожидания левой кнопки мыши правую можно отпустить?
Во время ожидания - ПКМ может быть как отпущена, так и все еще зажата (просто в случае, если она зажата, чисто физически можно будет нажать только ЛКМ, но это не имеет значения).
Вроде как все, тяжко совмещать процесс обучения, с процессом написания, сначала нужно продумать алгоритм, а потом пытаться его воспроизвести, но что бы его написать - нужно знать возможности ahk, как и что реализовать лучше.
Пока пробовал разобраться самостоятельно с коррекцией кода возник один вопрос, как сымитировать обычное нажатие на клавишу? Т.е. назначить клавишу хоткеем выполняющую тоже, что она бы выполняла на будучи им. (Нужно для того, к примеру, что бы добавить ей изменение какой-нибудь глобальной переменной, но при этом не теряя ее оригинальной функции).