1 (изменено: m00slim25, 2016-02-08 13:46:55)

Тема: Устранение паузы в обработке хоткея

Доброго дня!
Написал скрипт


#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. Все получилось. Теперь скрипт работает идеально.