2010-01-19 6 views
29

Ich bin nicht dumm ... wirklich. Wie ordnen Sie eine Taste SEQUENCE (dh: Ctrl + Q, F) in AutoHotKey.AutoHotKey-Taste SEQUENCE, nicht nur Ein-Tasten-Hotkey

Ich habe Ctrl +Q unten:

^q:: 

Ich habe sogar F:

f:: 

Die Beispiele in den Hilfedateien auch zeigen, wie man Führen Sie zwei Tastenanschläge nacheinander aus:

Numpad0 & Numpad1:: 

Aber es wird einfach nicht funktionieren mit:

^q & f :: 

Oder eine dieser entweder:

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

Wie kann ich eine Tastenfolge Triggerung etwas erreichen, wenn eine dieser Tasten ist die Ctrl Schlüssel? Ich schaute stattdessen mit einem HOTSTRING, aber konnte nicht herausfinden, wie man das Ctrl Zeichen in diesem Zusammenhang einbaut!

Antwort

25

In Ordnung; Die Antwort scheint zu sein:

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

Ich habe das in der Vergangenheit auf eine effektive, aber hässliche Weise behandelt. Ich mag Ihre Herangehensweise besser und habe sie mit dem Progress-Befehl kombiniert, um nette Key-Sequence-Menüs zu erstellen, wie das, mit dem ich Browser starte ** [hier] (https: //gist.github.com/ajkerrigan/a0e54dbdd5fb3dea5113) **. Danke für einen besseren Weg! – ajk

+1

Das hat meine Strg-Taste nach ein paar Versuchen durcheinander gebracht, so konnte ich zum Beispiel ctrl-shift-escape nicht mehr drücken – BornToCode

3

Oder man kann es wie folgt tun:

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

Ich denke, das ist ein bisschen besser lesbar ist als Eingabetaste, L1, wie in oben.

+5

Die kaufmännische Notation erfordert, dass beide Tasten zum ** gleichen ** Zeitpunkt gehalten werden. In Großbuchstaben spezifiziert das OP "Sequenz", so dass diese Antwort nicht funktioniert. – horta

1

Dies fängt CTRL + F. Wenn Q in diesem Moment gedrückt gehalten wird, wird Ihr Code ausgelöst.

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

OP benötigt eine Folge von Schlüsseln. Diese Antwort erfordert gleichzeitige Tastenanschläge. – horta

5

Falls jemand für eine ähnliche Sache suchen, aber eigentlich wollen CtrlQ + CtrlF und nur wenn Ctrl ist überall (so, um einige dieser gehalten könnte scheinen wie CtrlQ + F), dann hier ist, wie es geht:

$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 

Siehe https://superuser.com/a/725303/145431 für meine Erklärung.

Verwandte Themen