AutoHotKey: mantenga presionada una tecla

AutoHotKey: mantenga presionada una tecla

Tengo un script AutoHotKey que debería presionar F3cuando mantengo presionado Ctrly presionar F2cuando lo suelto Ctrl.

Mi guión actualmente:

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

Pero cuando lo mantengo presionado Ctrl, no hace nada. Cuando lo suelto Ctrl, golpea tanto F3como F2. Alguien me puede decir como arreglar esto?

Respuesta1

Este código proporciona la funcionalidad deseada:

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

Respuesta2

Eltecla ArribaLa opción para las teclas de acceso rápido parece ser lo que necesitas.

Aquí se prueba el código de trabajo:

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

Ctrl Up::Send {F2}

Respuesta3

a través de:http://www.autohotkey.com/docs/commands/Send.htm

Para mantener presionada o soltar una tecla: escriba entre llaves el nombre de la tecla seguido de la palabra Abajo o Arriba. Por ejemplo:

Enviar {b abajo}{b arriba}
Enviar {TAB abajo}{TAB arriba}
Enviar {Arriba abajo}; Presione la tecla de flecha hacia arriba.
Dormir 1000; Mantenlo presionado por un segundo.
Enviar> {Arriba arriba}; Suelte la tecla de flecha hacia arriba.

Cuando se mantiene presionada una tecla mediante el método anterior, no comienza a repetirse automáticamente como lo haría si la mantuviera presionada físicamente (esto se debe a que la repetición automática es una característica del controlador/hardware). Sin embargo, se puede utilizar un bucle para simular la repetición automática. El siguiente ejemplo envía 20 pulsaciones de teclas de tabulación:

Bucle 20 {
Enviar {Tab abajo} ; La repetición automática consta de eventos descendentes consecutivos (sin eventos ascendentes).
Dormir 30; El número de milisegundos entre pulsaciones de teclas (o utilice SetKeyDelay).
}
Enviar {Tab arriba}; Suelta la llave.

También se puede utilizar la palabra DownTemp. Su efecto es el mismo que Abajo excepto por las teclas modificadoras (Control/Shift/Alt/Win). En esos casos, DownTemp indica a los envíos posteriores que la tecla no está inactiva permanentemente y que puede soltarse cada vez que se pulsa una tecla. Por ejemplo, Enviar {Control DownTemp} seguido más tarde de Enviar a produciría una pulsación de tecla "a" normal, no una pulsación de tecla de control-A.

información relacionada