AutoHotKey — удерживайте клавишу нажатой

AutoHotKey — удерживайте клавишу нажатой

У меня есть скрипт AutoHotKey, который должен срабатывать, F3когда я удерживаю клавишу Ctrl, и срабатывать, F2когда я отпускаю клавишу Ctrl.

Мой текущий сценарий:

$ctrl::
Suspend, On
Send, {F3}
While (GetKeyState("Ctrl",P))
{
}
Send, {F2}
Suspend, Off
Return

Но когда я удерживаю Ctrl, ничего не происходит. Когда я отпускаю Ctrl, он бьет и по F3и по F2. Может кто-нибудь сказать мне, как это исправить?

решение1

Этот код обеспечивает желаемую вами функциональность:

$~ctrl::
    send {f3}
    keyWait, ctrl
    send {f2}
return

решение2

Theнажатие клавишиВариант с горячими клавишами, похоже, то, что вам нужно.

Вот проверенный рабочий код:

Ctrl::
Send {F3}
keywait, Ctrl, L ; prevent F3 from firing while Ctrl is being held down.
return

Ctrl Up::Send {F2}

решение3

с помощью:http://www.autohotkey.com/docs/commands/Send.htm

Чтобы удерживать или отпускать клавишу: заключите в фигурные скобки название клавиши, а затем слово Down или Up. Например:

Send {b down}{b up}
Send {TAB down}{TAB up}
Send {Up down} ; Нажмите клавишу со стрелкой вверх.
Sleep 1000 ; Удерживайте ее нажатой в течение одной секунды.
Send> {Up up} ; Отпустите клавишу со стрелкой вверх.

Когда клавиша удерживается с помощью метода выше, она не начинает автоматически повторяться, как если бы вы удерживали ее физически (это связано с тем, что автоматически повторяться — это функция драйвера/оборудования). Однако для имитации автоматического повтора можно использовать цикл. Следующий пример отправляет 20 нажатий клавиши Tab:

Loop 20 {
Send {Tab down} ; Автоповтор состоит из последовательных событий нажатия (без событий нажатия).
Sleep 30 ; Количество миллисекунд между нажатиями клавиш (или используйте SetKeyDelay).
}
Send {Tab up} ; Отпустите клавишу.

Также можно использовать слово DownTemp. Его эффект такой же, как у Down, за исключением клавиш-модификаторов (Control/Shift/Alt/Win). В этих случаях DownTemp сообщает последующим посылкам, что клавиша не нажата постоянно и может быть отпущена, когда нажатие клавиши требует этого. Например, Send {Control DownTemp}, а затем Send a, произведет обычное нажатие клавиши "a", а не нажатие клавиши control-A.

Связанный контент