Яндекс.Метрика

HotkeyModifierTimeout -Autohotkey

Влияет на поведение модификаторов горячих клавиш: CTRL, ALT, WIN и SHIFT.

Влияет на поведение модификаторов горячих клавиш: CTRL, ALT, WIN и SHIFT.

#HotkeyModifierTimeout Milliseconds

Параметры

Milliseconds Длина таймаута в миллисекундах. При значении -1 таймаут никогда не истекает (модификаторы после Send возвращаются в нажатое положение всегда), при значении 0 таймаута нет совсем (модификаторы не нажимаются вновь никогда).

Примечания

Эта директива не нужна в следующих случаях:

  • Горячие клавиши посылают нажатия в режиме SendInput или SendPlay. Причина в том, что в этих режимах физические нажатия и отпускания клавиш во время посылки запоминаются и выполняются после завершения команды Send.
  • Скриптом установлен хук клавиатуры (вы можете узнать, установлен ли хук, через пункт меню "View->Key history" в главном окне скрипта или через команду KeyHistory). Причина в том, что хук способен отслеживать, какие модификаторы (Alt, Ctrl, Win, Shift) физически удерживает пользователь.

Для иллюстрации работы этой директивы рассмотрим следующий пример:

^!a::Send, abc

Когда выполняется данная команда, то первое, что она делает, это отпускает клавиши Ctrl и Alt, чтобы символы были посланы правильно. После посылки всех нажатий команда не знает, можно ли ей вновь нажать Ctrl и Alt (удерживает ли их всё-ещё пользователь). Но если заданный таймаут не истёк, команда будет считать, что пользователь ещё не успел отпустить модификаторы, и она нажмёт их вновь для соответствия их физическому состоянию. Если таймаут истёк, команда не будет опять нажимать модификаторы, так что пользователь должен будет отпустить и нажать их снова, чтобы модифицировать ими ту же или какую-либо другую клавишу.

Величина таймаута должна быть меньше времени, в течение которого пользователь обычно удерживает модификаторы горячей клавиши перед их отпусканием. Иначе нажатое состояние модификаторов может быть восстановлено, когда пользователь их уже отпустил, что приведёт к их залипанию.

Вы можете уменьшить или совсем устранить необходимость в этой директиве одним из следующих способов:

  • Установите хук клавиатуры, добавив строку #InstallKeybdHook в любое место скрипта (однако хук не поддерживается в Win9x).
  • Используйте режимы посылки SendInput или SendPlay вместо традиционного SendEvent.
  • Когда используете SendEvent, уменьшите через SetKeyDelay задержку до 0 или -1, что может помочь за счёт ускорения посылки клавиш.

Если этой директивы в скрипте нет, таймаут считается равным 50.

Пример

#HotkeyModifierTimeout 100
Теги страницы: