1

Тема: AHK: Убрать задержку горячей клавиши

Здравствуйте.
Такая проблема:
При длительном зажатии горячей клавиши, ее команды сначала выполняются 1 раз, затем идет секундная пауза, потом они выполняются циклично без остановок до отпуска клавиши.
Нужно вот это секундную паузу убрать, что-бы выполнение сразу переходило в цикл.

Пробовал сделать так:

x::
loop
{
      if GetKeyState("x", "P")
      {
            ***************
            ***************
            Исполняемый код
            ***************
            ***************
      }
      Else
      {
            Break
      }

      Sleep, 1
}
Return

Но такой способ прерывает основной поток программы.

Подскажите, как это сделать?

2

Re: AHK: Убрать задержку горячей клавиши

Можно попробовать так:

vk58:: ; x
While GetKeyState("vk58", "P")
   {
      ; Исполняемый код
   }
Sleep, 10 ; малое значение может вызывать притормаживания, да и смысла нет в значении 1, тогда уж без него, хотя... (имхо)
Return

3

Re: AHK: Убрать задержку горячей клавиши

G0r пишет:

Подскажите, как это сделать?

Можно попробовать воспользоваться таймером, но успех зависит от того, какой код в цикле.

vk58::   ; x
   if !key
   {
      SetTimer, Timer, -10
      key = 1
   }
   Return
   
vk58 Up:: key =

Timer:
   While GetKeyState("vk58", "P")
   {
      ; здесь код
      Sleep, 10  ; меньшее значение будет приравнено к 10
   }
   Return
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

4

Re: AHK: Убрать задержку горячей клавиши

Спасибо всем.
Я решил проблему по другому: "вручную" создал горячую клавишу через таймер.


SetTimer, KeyX, 1

KeyX:
if GetKeyState("x", "P")
{
***************
**************
Исполняемый код
***************
***************
}
Return