Тема: Устранение паузы в обработке хоткея
Доброго дня!
Написал скрипт
#NoEnv
#Warn
SetWorkingDir %A_ScriptDir%
UIMenuState := 0
SendMode, Event
SetKeyDelay, 0, 50
SetScrollLockState, Off ; Используется для индикации работы скрипта
Suspend ; Выключаем по умолчанию
~ScrollLock::Suspend ; Собственно сам выключатель
; При посадке (включается клавишей выпуска шасси) клавиши {r}{w} работают как боковые трастеры
; поэтому лучше вообще отключать скрипт
; **********************************************
#IfWinActive, Elite - Dangerous (CLIENT)
; Игра позволяет назначить несколько функций на одну клавишу
; в зависимости от того в каком режиме полета, либо элементе интерфейса мы находимся
~2:: ; ****************************
~3:: ; Проверка - в меню ли мы (их в интерфейсе корабля 3 шт)
~4:: ; ****************************
If UIMenuState = 0
UIMenuState := 1
Else
UIMenuState := 0 ; Из меню можно выйти кнопкой самого меню {2}{3}{4} или кнопкой выхода {LShift}
Return
~LShift:: ; У клавиши 2 функции: 1. Вертикальный трастер 2. Выход из меню
UIMenuState := 0
KeyWait, LShift
Return
~*z:: ; Подаем энергию на подсистему двигателей
Send, {Up}{Up}{Up}{Up}
Return
~*w:: ; Если мы в меню - листаем вкладки меню влево. Иначе - подаем энергию на подсистему щитов
If UIMenuState = 0
Send, {Left}{Left}{Left}{Left}
Return
~*r:: ; Если мы в меню - листаем вкладки меню вправо. Иначе - подаем энергию на подсистему орудий
If UIMenuState = 0
Send, {Right}{Right}{Right}{Right}
Return
Все работает. Все прекрасно. Есть лишь одно маленькое неудобство - если зажат Shift (работает вертикальный трастер), и нажать любую из клавиш {r}{w}{z}, то действие Shift'а кратковременно прерывается, а после отпускания {r}{w}{z} - возобновляется.
Подсказали решение: добавить {Blind} в команды Send. Все получилось. Теперь скрипт работает идеально.