2010-01-19 11 views
29

No soy estúpido ... realmente. ¿Cómo se asigna una secuencia de teclas (es decir: Ctrl +Q,F) en AutoHotKey.clave de AutoHotKey SECUENCIA, no solo tecla de acceso directo de una sola tecla

Tengo Ctrl +Q abajo:

^q:: 

Incluso tengo F:

f:: 

Los ejemplos en los archivos de ayuda, incluso muestran cómo hacer dos pulsaciones de teclas en una fila:

Numpad0 & Numpad1:: 

Pero simplemente no funcionará con:

^q & f :: 

o cualquiera de estos o bien:

LCtrl & q & f:: 
^q & ^f:: 
^q^f:: 
^qf:: 

¿Cómo llevar a cabo una secuencia de teclas de activación algo, cuando una de esas claves es la Ctrl clave? Intenté usar un HOTSTRING en su lugar, pero no pude encontrar la forma de incluir el carácter Ctrl, en ese contexto.

Respuesta

25

Muy bien; La respuesta parece ser:

^q:: 
Input Key, L1 
if Key=f 
...some code here... 
return 
+1

He manejado esto de una manera eficaz pero fea en el pasado. Me gusta su enfoque mejor, y lo he combinado con el comando Progress para hacer menús agradables de secuencia de teclas, como el que uso para iniciar navegadores ** [aquí] (https: //gist.github.com/ajkerrigan/a0e54dbdd5fb3dea5113) **. Gracias por una mejor manera! – ajk

+1

Esto estropeó mi tecla Ctrl después de algunos intentos, así que por ejemplo no pude presionar ctrl-shift-escape más – BornToCode

3

O usted puede hacerlo de esta manera:

q & f:: 
    if GetKeyState("Control") { 
     ; Do something 
     return 
    } 
    return 

Creo que esto es un poco más legible que usando la clave de entrada, L1 como en la anterior.

+5

La notación de signo de & comercial requiere que ambas teclas se mantengan presionadas en el ** mismo ** tiempo. En mayúsculas, el OP especifica "secuencia", por lo que esta respuesta no funcionará. – horta

1

Esto llama CTRL +F. Si Q se mantiene presionada en ese momento, su código se dispara.

^f:: 
    If GetKeyState("q", "p") { 
     MsgBox test 
    } Else { 
     Send ^f 
    } 
return 
+2

OP requiere una secuencia de claves. Esta respuesta requiere golpes de tecla simultáneos. – horta

5

En caso de que alguien está buscando una cosa similar, pero en realidad quieren CtrlQ + CtrlF y única si Ctrl se lleva a cabo a lo largo (por lo que, para algunos, este podría parecer CtrlQ + F), a continuación se explica cómo hacerlo:

$Ctrl::Send {Ctrl Down} 
$Ctrl UP:: 
    ChordIsBroken := True 
    Send {Ctrl Up} 
    Return 
^q:: 
    ChordIsBroken := False 
    Input, OutputVar, L1 M 
    If (!ChordIsBroken && Asc(OutputVar) = 6) 
    { 
     MsgBox "Hello, World!" 
    } 
    Else 
    { 
     SendInput %OutputVar% 
    } 
    Return 

Consulte https://superuser.com/a/725303/145431 para mi explicación.

Cuestiones relacionadas