Что нового

[Мышь, клавиатура] Как зажать кнопку с шагом по времени?

Xakka

Новичок
Сообщения
1
Репутация
0
Версия AutoIt: 3.3.6

Описание:
Товарищи, подскажите как можно реализовать функцию зажатия кнопки с шагом по времени, т.е. при зажиме кнопки X нужно чтобы моментально отправлялось событие зажима кнопки Y, но временной интервал зажима Y должен быть кратным 1000мс;
Например:
- при зажиме X менее 1000мс (например 56мс) кнопка Y должна быть зажата на минимальное время, соответственно 1000мс;
- при зажиме X более 1000мс (например 5382мс) кнопка Y должна быть зажата на максимальное время, соответственно 6000мс.

Примечание:
Сейчас использую такой код, что не совсем удобно:
Код:
HotKeySet("{x}", Send_Y)
Opt("SendKeyDelay", 1)
Opt("SendKeyDownDelay", 1000)

while 1
   Sleep(100)
WEnd

Func Send_Y()
   Send("Y")
EndFunc
 

InnI

AutoIT Гуру
Сообщения
4,951
Репутация
1,446
Xakka
Зажатия клавиш (down, up) работают только в играх. В текстовых редакторах будет только одно нажатие и одно отпускание.
Код:
#include <Misc.au3>

HotKeySet("x", "Empty")

Do
  If _IsPressed("58") Then
    $t = TimerInit()
    Send("{y down}")
    Do
      Sleep(1)
    Until Not _IsPressed("58")
    Sleep((Floor(TimerDiff($t) / 1000) + 1) * 1000 - TimerDiff($t))
    Send("{y up}")
  Else
    Sleep(1)
  EndIf
Until 0

Func Empty()
EndFunc


И соблюдайте правила форума: код AutoIt должен быть в тегах
Код:
 
Верх