Tecla como si fuera un doble click

Esta sección es para preguntas sobre programación/scripting usando AutoHotkey.

Moderator: Flipeador

User avatar
randysejas
Posts: 21
Joined: 25 Jul 2018, 13:03

Tecla como si fuera un doble click

02 Sep 2018, 10:17

Buenas!... quisiera que al apretar 2 veces y de forma inmediata (algo así como un doble click con el mouse) en este caso el del cursor arriba... haga un Ctrl+C y si se podría hacer otra cosa con 3 pulsaciones tal vez un Ctrl+V

1 pulsasión de tecla arriba... arriba
2 pulsasiones de tecla arriba... Ctrl+C
3 pulsasiones de tecla arriba... Ctrl+V

Es posible?... muchas gracias por adelantado
User avatar
Flipeador
Posts: 1204
Joined: 15 Nov 2014, 21:31
Location: Argentina
Contact:

Re: Tecla como si fuera un doble click

02 Sep 2018, 11:34

Hola

Code: Select all

n := 0

Up::
SetTimer _up, off
SetTimer _up2, off
if ( A_PriorHotkey == A_ThisHotkey && A_TimeSincePriorHotkey < 150 )
{
    if (n)
    {
        SendInput ^v
        n := 0
        return
    }
    SetTimer _up2, -150
    n := 1
}
else
    SetTimer _up, -150
return

_up:
n := 0
SendInput {Up}
return

_up2:
n := 0
SendInput ^c
return
User avatar
randysejas
Posts: 21
Joined: 25 Jul 2018, 13:03

Re: Tecla como si fuera un doble click

02 Sep 2018, 11:51

Gracias Flipeador... funciona!... pero para el caso de las 3 presionadas (3clicks), veo que se tiene que hacer muy rápido y a veces funciona y a veces no (funciona al 100% si te concentras demasiado para presionar 3 veces de forma muuy rápida).... qué es lo que se debería de cambiar para configurar los tiempos?....... y por favor si no es mucho pedir, si puedes escribir el código solo para cuando se presiona 1 vez y 2 veces (ya no para presionar 3 veces)..... muchas gracias!
User avatar
Flipeador
Posts: 1204
Joined: 15 Nov 2014, 21:31
Location: Argentina
Contact:

Re: Tecla como si fuera un doble click

02 Sep 2018, 11:56

Para configurar los tiempos prueba modificar los valores 150, para la tercera pulsación, debes aumentar (disminuir si tenemos en cuenta el signo) el del temporizador _up2.

Para cuando se presiona una vez, ¿que quieres que haga?.
Para dejarlo solo con 2:

Code: Select all

Up::
SetTimer _up, off
if ( A_PriorHotkey == A_ThisHotkey && A_TimeSincePriorHotkey < 150 )
    SendInput ^c
else
    SetTimer _up, -150
return

_up:
SendInput {Up}
return
Deberías leer que hace cada comando en la documentación, solo tienes que aplicar un poco de lógica, nada complicado.
User avatar
randysejas
Posts: 21
Joined: 25 Jul 2018, 13:03

Re: Tecla como si fuera un doble click

04 Sep 2018, 07:14

Gracias Flipeador! funcionó muy bien para lo que quería (y si... eso de leer la documentación es necesario)..... ahora traté de implementar el código que hiciste en el total commander, pero me doy cuenta que cuando quiero navegar con los cursores (manteniendo presionada la tecla de arriba por mucho rato) va ejecutando el código del programa como si estuviera presionando varias veces la tecla de arriba...... abría alguna forma de que el código se ejecute cuando se presiona la tecla (o sea presionar y soltar)??... muchas gracias por adelantado!
User avatar
Flipeador
Posts: 1204
Joined: 15 Nov 2014, 21:31
Location: Argentina
Contact:

Re: Tecla como si fuera un doble click

05 Sep 2018, 15:44

Code: Select all

Up::
SetTimer _up, off
if ( A_PriorHotkey == A_ThisHotkey && A_TimeSincePriorHotkey < 150 )
    SendInput ^c
else {
    KeyWait Up, T0.5
    if (ErrorLevel)
    {
        while (GetKeyState("Up", "P")) {
            SendInput {Up}
            Sleep 50
        }
        return
    }
    SetTimer _up, -150
}
return

_up:
SendInput {Up}
return

Return to “Pedir Ayuda”

Who is online

Users browsing this forum: No registered users and 22 guests