AutoHotKey - Mantenha pressionada uma tecla

AutoHotKey - Mantenha pressionada uma tecla

Eu tenho um script AutoHotKey que deve ser acionado F3quando eu mantenho pressionado Ctrle acionado F2quando eu solto Ctrl.

Meu script atualmente:

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

Mas quando eu pressiono Ctrl, não faz nada. Quando eu solto Ctrl, atinge ambos F3e F2. Alguém pode me dizer como consertar isso?

Responder1

Este código fornece a funcionalidade desejada:

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

Responder2

Oteclaropção para as teclas de atalho parece ser o que você precisa.

Aqui está o código de trabalho testado:

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

Ctrl Up::Send {F2}

Responder3

através da:http://www.autohotkey.com/docs/commands/Send.htm

Para manter pressionada ou soltar uma tecla: Coloque entre colchetes o nome da tecla seguido da palavra Para baixo ou Para cima. Por exemplo:

Enviar {b para baixo}{b para cima}
Enviar {TAB para baixo}{TAB para cima}
Enviar {para cima para baixo} ; Pressione a tecla de seta para cima.
Durma 1000; Mantenha-o pressionado por um segundo.
Enviar> {Para cima} ; Solte a tecla de seta para cima.

Quando uma tecla é pressionada através do método acima, ela não inicia a repetição automática como faria se você a estivesse segurando fisicamente (isso ocorre porque a repetição automática é um recurso de driver/hardware). No entanto, um Loop pode ser usado para simular a repetição automática. O exemplo a seguir envia 20 pressionamentos de tecla tab:

Loop 20 {
Send {Tab down} ; A repetição automática consiste em eventos inativos consecutivos (sem eventos ativos).
Durma 30; O número de milissegundos entre pressionamentos de tecla (ou use SetKeyDelay).
}
Enviar {Tab para cima} ; Solte a chave.

A palavra DownTemp também pode ser usada. Seu efeito é o mesmo de Down, exceto pelas teclas modificadoras (Control/Shift/Alt/Win). Nesses casos, DownTemp informa aos envios subsequentes que a chave não está permanentemente inativa e pode ser liberada sempre que um pressionamento de tecla exigir. Por exemplo, Send {Control DownTemp} seguido posteriormente por Send a produziria um pressionamento de tecla "a" normal, não um pressionamento de tecla control-A.

informação relacionada