Wie man Hotkeys schreibt

Ein Hotkey ist eine Taste oder Tastenkombination, die eine Aktion auslöst. So wird z.B. mit Win+E normalerweise der Dateiexplorer gestartet und mit F1 häufig eine programmspezifische Hilfefunktion aktiviert. AutoHotkey bietet die Möglichkeit, Hotkeys zu definieren, die überall oder nur in bestimmten Applikationen jede erdenkliche Aktion ausführen können.

Die Definition eines Hotkeys erfolgt in der Regel durch die Angabe des Hotkey-Namens, gefolgt von einem Doppelpunktpaar und dann der Aktion:

#n::Run "notepad"

Dieses Beispiel definiert einen Hotkey, der Notepad startet, wenn Sie Win+N drücken. Wie Sie es ausprobieren können, erfahren Sie unter Wie man Beispielcodes ausführt.

Weitere Informationen zum Ausführen von Programmen finden Sie unter Wie man Programme ausführt.

Wenn mehrere Zeilen erforderlich sind, verwenden Sie geschweifte Klammern, um den Anfang und das Ende der Hotkey-Aktion zu markieren. Dies wird als Block bezeichnet.

#n::
{
    if WinExist("ahk_class Notepad")
        WinActivate  ; Das oben gefundene Fenster aktivieren
    else
        Run "notepad"  ; Ein neues Notepad-Fenster öffnen
}

Die geschweifte Startklammer kann auf derselben Zeile wie der Hotkey stehen, nach ::.

Der Block nach einem Doppelpunktpaar-Hotkey ist implizit der Körper einer Funktion, aber diese Information ist nur wichtig, wenn Sie Ihre eigenen Variablen definieren. Für den Moment genügt es zu wissen, dass mit einem Block mehrere Zeilen zu einer einzigen Aktion oder Anweisung zusammengefasst werden (siehe Kontrollfluss für weitere Informationen).

Einfache Hotkeys

Bei den meisten Hotkeys besteht der Hotkey-Name aus optionalen Modifikatorsymbolen, unmittelbar gefolgt von einem einzelnen Buchstaben oder Symbol oder einem Tastennamen. Probieren Sie die folgenden Änderungen am obigen Beispiel aus:

Hinweis: Das letzte Zeichen vor :: wird nie als Modifikatorsymbol interpretiert.

Bei dieser Art von Hotkey kann nur die letzte Taste in der Kombination direkt als einzelnes Zeichen geschrieben oder ihr Name vollständig ausgeschrieben werden. Zum Beispiel:

Die regulären Modifikatoren sind STRG (^), ALT (!), UMSCHALT (+) und WIN (#).

Die Symbole < und > können jedem der vier oben genannten Modifikatoren vorangestellt werden, um die linke oder rechte Variante der jeweiligen Taste zu definieren. Die Modifikatorkombination <^>! entspricht der AltGr-Taste (falls auf Ihrer Tastatur vorhanden), eine Kombination von LCtrl und RAlt.

Die anderen Modifikatoren sind:

Um einen Hotkey nur beim Loslassen und nicht beim Drücken der Taste auszulösen, verwenden Sie das UP-Suffix.

Siehe auch: Hotkey-Modifikatorsymbole, Tastenliste

Kontextabhängige Hotkeys

Mit der #HotIf-Direktive kann eine Bedingung angegeben werden, die für die Aktivierung des Hotkeys erfüllt sein muss, zum Beispiel:

Zum Beispiel:

#HotIf WinActive("ahk_class Notepad")
^a::MsgBox "Sie haben STRG+A gedrückt, während Notepad aktiv war. Drückt man STRG+A in einem anderen Fenster, wird die Tastenkombination selbst gesendet."
#c::MsgBox "Sie haben WIN+C gedrückt, während Notepad aktiv war."

#HotIf
#c::MsgBox "Sie haben WIN+C gedrückt, während ein anderes Fenster als Notepad aktiv war."

Die Bedingung wird durch Angabe eines Ausdrucks definiert, der jedes Mal ausgewertet wird, wenn der Hotkey gedrückt wird. Wenn die Auswertung des Ausdrucks True ergibt, wird die Aktion des Hotkeys ausgeführt.

Derselbe Hotkey kann mehrfach verwendet werden, indem für jedes Vorkommen des Hotkeys (auch Hotkey-Variante genannt) eine andere Bedingung angegeben wird. Wenn Sie den Hotkey drücken, führt das Programm die erste Hotkey-Variante aus, deren Bedingung erfüllt ist, oder die Variante ohne Bedingung (z.B. das letzte #c:: im obigen Beispiel).

Wenn die Bedingung des Hotkeys nicht erfüllt ist und es keine bedingungslose Variante des Hotkeys gibt, wird der Tastendruck an das aktive Fenster weitergeleitet, als wäre der Hotkey nie definiert worden. Wenn z.B. Notepad nicht aktiv ist, während das obige Beispiel läuft, wird Strg+A seine normale Funktion ausführen (üblicherweise "Alles markieren").

Probieren Sie die folgenden Änderungen am Beispiel aus:

Um korrekt zu bestimmen, auf welches Fenster sich der Hotkey auswirken soll, müssen manchmal andere Kriterien als der Fenstertitel verwendet werden. Weitere Informationen finden Sie unter Wie man Fenster manipuliert.

Siehe auch: #HotIf, Ausdrücke (Expressions), WinActive

Benutzerdefinierte Kombinationen

Eine benutzerdefinierte Kombination ist ein Hotkey, der zwei Tasten kombiniert, die normalerweise nicht zusammen gehören. Zum Beispiel definiert Numpad0 & Numpad1:: einen Hotkey, der aktiviert wird, wenn Numpad0 gedrückt gehalten und Numpad1 gedrückt wird.

Wenn Sie eine Taste als Präfix in einer benutzerdefinierten Kombination verwenden, geht AutoHotkey davon aus, dass Sie nicht möchten, dass die normale Funktion dieser Taste aktiviert wird, da dies mit ihrer Verwendung als Modifikatortaste kollidieren würde. Es gibt zwei Möglichkeiten, die normale Funktion der Taste wiederherzustellen:

  1. Verwenden Sie einen anderen Hotkey, z.B. Numpad0::Send "{Numpad0}", um die ursprüngliche Funktion der Taste wiederherzustellen. Standardmäßig wird der Hotkey nur aktiviert, wenn Sie Numpad0 loslassen, und nur, wenn Sie Numpad0 und Numpad1 nicht in Kombination gedrückt haben.
  2. Stellen Sie der Kombination ein Tildezeichen (~) voran, wie in ~Numpad0 & Numpad1::. Dadurch wird verhindert, dass AutoHotkey die normale Funktion von Numpad0 unterdrückt, es sei denn, Sie haben auch Numpad0:: definiert, dann sorgt das Tildezeichen dafür, dass dieser Hotkey sofort aktiviert wird und nicht erst, wenn Sie Numpad0 loslassen.

Hinweis: Benutzerdefinierte Kombinationen unterstützen nur 2-Tasten-Kombinationen und können nicht mit anderen Modifikatoren kombiniert werden, wie z.B. !#^+ für ALT, WIN, STRG und UMSCHALT.

Obwohl AutoHotkey benutzerdefinierte Kombinationen von mehr als zwei Tasten nicht direkt unterstützt, kann ein ähnliches Ergebnis mit #HotIf erzielt werden. Wenn Sie das folgende Beispiel ausführen und Strg+Feststell+Leer oder Strg+Leer+Feststell drücken, sollte eine Meldung erscheinen:

#HotIf GetKeyState("Ctrl")
Space & CapsLock::
CapsLock & Space::MsgBox "Erfolg!"

In diesem Beispiel muss zuerst STRG gedrückt werden. Dies hat den Vorteil, dass die Leer- und Feststelltaste ihre normale Funktion ausführen, wenn Sie STRG nicht gedrückt halten.

Siehe auch: Benutzerdefinierte Kombinationen

Sonstige Features

Die Hotkeys von AutoHotkey bieten noch einige andere Features, die es zu erkunden lohnt. Während die meisten Applikationen nur Kombinationen von STRG, ALT, UMSCHALT und manchmal WIN mit nur einer weiteren Taste ermöglichen (und oft nicht alle Tasten unterstützen), ist AutoHotkey nicht so eingeschränkt. Weitere Informationen finden Sie unter Hotkeys.