Клавиша остановки нажата или отправить событие клавиши только тогда, когда сама клавиша удерживается - PullRequest
0 голосов
/ 17 июня 2020

Как мне всегда останавливать SendInput и ControlSend для нажатия клавиши DOWN, когда клавиша DOWN больше не удерживается?

~Down::
SendInput {Down down}
ControlSend,, {Down down}
Return

Изменить: ОК, но это немного медленно:

Down::
SendInput {Down down}
ControlSend,, {Down down}
return
Down Up::
SendInput {Down up}
ControlSend,, {Down up}
Return

Я уже вижу, что While l oop работает намного быстрее, но еще не работает должным образом на 100%.
Как мне эффективно обернуть свой код выше в процедуру While l oop?

Edit2: определение одного ключа в режиме While l oop работает правильно:

Down::
While GetKeyState("Down", "P")
{
SendInput, {Down down}
ControlSend,, {Down down}
}
SendInput, {Down Up}
ControlSend,, {Down Up}
Return

Edit3: определение нескольких ключей не работает - это также не работает должным образом:

$Down::
$Left::
$Right::
SendInput, % "{" . LTrim(A_ThisHotkey, "$") . " Down}"
KeyWait, % LTrim(A_ThisHotkey, "$")
SendInput, % "{" . LTrim(A_ThisHotkey, "$") . " Up}"
Return

1 Ответ

0 голосов
/ 21 июня 2020

Эта работа?

    $down::
    sendinput {down down}
    controlsend,,{down down}
    while (getkeystate("down","p")){
        sleep 20
    }
    sendinput {down up}
    controlsend,,{down up}
    return
...