Hotkeys (Maus-, Joystick- und Tastaturkombinationen)

Inhaltsverzeichnis

Einführung und einfache Beispiele

Hotkeys werden manchmal auch als Tastenkürzel bezeichnet, weil sie in der Lage sind, schnell und einfach eine Aktion auszulösen (z. B. das Ausführen eines Programms oder Tastatur-Makros). Im folgenden Beispiel wird der Hotkey WIN+N dazu gebracht, den Editor zu starten. Das Raute-Zeichen [#] ist die WIN-Taste, die als Modifikatortaste bezeichnet wird:

#n::
Run Notepad
return

Im oberen Beispiel dient das Return dazu, den Hotkey zu beenden. Muss ein Hotkey nur eine einzige Zeile ausführen, kann diese Zeile rechts neben den Doppelpunkten vorkommen. In diesem Fall ist das Return inbegriffen:

#n::Run Notepad

Um mehrere Modifikatoren mit einem Hotkey zu kombinieren, liste diese nebeneinander auf (die Reihenfolge spielt keine Rolle). Im folgenden Beispiel wird ^!s verwendet, das STRG+ALT+S kennzeichnet:

^!s::
Send Mit freundlichen Grüßen,{Enter}John Smith  ; Diese Zeile sendet Tastatureingaben an das aktive (vorderste) Fenster.
return

Folgende Modifikatorsymbole können zum Definieren von Hotkeys verwendet werden:

Symbol Beschreibung
# WIN-Taste (Windows-Logo-Taste). Windows Vista und höher: Seit v1.0.48.01 warten Hotkeys, die die WIN-Taste enthalten (z. B. #a), auf das Loslassen der WIN-Taste, bevor ein beliebiger Text gesendet wird, der ein "L" enthält. Dadurch wird verhindert, dass bei Verwendung von Send innerhalb solch eines Hotkeys der PC unbeabsichtigt gesperrt wird. Diese Änderung gilt für alle Sendmethoden, außer SendPlay (weil es das nicht braucht) und Blind-Modus.
! ALT-Taste
^ STRG-Taste
+ UMSCHALT-Taste
& Ein Und-Zeichen kann zwischen zwei beliebigen Tasten oder Maustasten verwendet werden, um diese zu einem benutzerdefinierten Hotkey zu verbinden. Siehe unten für weitere Details.
< Verwendet die linke Version der angegebenen Modifikatortaste. Zum Beispiel ist <!a das gleiche wie !a, außer dass die linke ALT-Taste zum Auslösen des Hotkeys benötigt wird.
> Verwendet die rechte Version der angegebenen Modifikatortaste.
<^>!

ALTGR-Taste (alternativer Schriftsatz). Hat deine Tastaturbelegung die ALTGR-Taste anstelle einer rechten ALT-Taste, kann diese Symbolreihe als ALTGR verwendet werden. Zum Beispiel:

<^>!m::MsgBox Sie haben ALTGR+M gedrückt.
<^<!m::MsgBox Sie haben STRGLinks+ALTLinks+M gedrückt.

Soll ALTGR allerdings selbst zum Hotkey werden, verwende folgende Kombination (ohne den oben genannten Hotkeys):

LControl & RAlt::MsgBox Sie haben ALTGR gedrückt.
*

Platzhalter: Führt den Hotkey auch dann aus, wenn zusätzliche Modifikatortasten gedrückt gehalten werden. Das wird oft in Verbindung mit der Neubelegung von Tasten verwendet. Zum Beispiel:

*#c::Run Calc.exe  ; WIN+C, UMSCHALT+WIN+C und STRG+WIN+C usw. werden den folgenden Hotkey auslösen.
*ScrollLock::Run Notepad  ; Die ROLLEN-Taste löst den folgenden Hotkey aus, selbst wenn Modifikatortasten gedrückt gehalten werden.

Platzhalter-Hotkeys benutzen immer den Tastatur-Hook, ebenso wie jeder andere Hotkey, der mit einem Platzhalter-Hotkey übereinstimmen würde. Zum Beispiel würde *a:: bewirken, dass ^a:: auch auf den Hook zurückgreift.

~

Beim Drücken des Hotkeys wird seine ursprüngliche Funktion nicht blockiert (bzw. nicht im System versteckt). In den beiden folgenden Beispielen wird der Mausklick des Benutzers weiterhin an das aktive Fenster gesendet:

~RButton::MsgBox Sie haben die rechte Maustaste gedrückt.
~RButton & C::MsgBox Sie haben C gedrückt, während die rechte Maustaste gedrückt wird.

Im Gegensatz zu den anderen Präfix-Symbolen darf das Tilde-Präfix in einigen Hotkey-Varianten vorkommen und in anderen nicht. Fügt man eine Tilde allerdings an die Präfixtaste einer beliebigen benutzerdefinierten Kombination, die weder ausgeschaltet noch suspendiert wurde, dann wird Tilde das Verhalten dieser Präfixtaste bei allen Kombinationen beeinflussen.

Spezielle Hotkeys, die etwas mit Alt-Tab zu tun haben, ignorieren immer das Tilde-Präfix.

[v1.1.14+]: Fügt man das Tilde-Präfix an eine benutzerdefinierte Modifikatortaste (Präfixtaste), die auch als eigener Hotkey dient, dann wird dieser Hotkey ausgelöst, sobald die Taste gedrückt wird, anstatt sie bis zum Loslassen der Taste hinauszuzögern. Zum Beispiel wird der oben genannte Hotkey ~RButton ausgelöst, sobald die Maustaste gedrückt wird. Vor v1.1.14 (oder ohne Tilde-Präfix) wurde er erst nach dem Loslassen der Maustaste ausgelöst, aber nur, wenn die Tastenkombination RButton & C nicht aktiviert war.

Fügt man das Tilde-Präfix nur an die benutzerdefinierte Kombination und nicht an den kombinationslosen Hotkey, wird die native Funktion der Taste weiterhin blockiert. Im folgenden Beispiel wird gezeigt, wie durch Halten der AppsKey-Taste ein ToolTip angezeigt wird, ohne das Kontextmenü auszulösen:

AppsKey::ToolTip Drücke < oder > zum Durchschalten der Fenster.
AppsKey Up::ToolTip
~AppsKey & <::Send !+{Esc}
~AppsKey & >::Send !{Esc}

Wenn mindestens eine Variante eines Tastatur-Hotkeys den Tilde-Modifikator hat, dann benutzt dieser Hotkey immer den Tastatur-Hook.

$

Dieses Präfix ist normalerweise nur notwendig, wenn das Skript den Send-Befehl verwendet, um Tasten zu senden, die den Hotkey selbst enthalten, der sich ansonsten selbst auslösen würde. Das $-Präfix erzwingt den Tastatur-Hook zum Implementieren des Hotkeys, wodurch als Nebeneffekt der Send-Befehl den Hotkey nicht mehr auslösen kann. Dieser Präfix ist das gleiche wie, als hätte man #UseHook irgendwo vor der Hotkey-Definition angegeben.

Das $-Präfix hat keinen Effekt auf Maus-Hotkeys, weil sie immer den Maus-Hook verwenden. Es hat außerdem keinen Effekt auf Hotkeys, die bereits den Tastatur-Hook benötigen, einschließlich aller Tastatur-Hotkeys mit den Modifikatoren Tilde (~) oder Platzhalter (*), Taste-Oben-Hotkeys und benutzerdefinierten Kombinationen. Mit ListHotkeys kann man feststellen, ob ein bestimmter Hotkey den Tastatur-Hook benutzt.

[v1.1.06+]: #InputLevel und SendLevel ermöglichen zusätzliche Kontrolle darüber, welche Hotkeys und Hotstrings durch den Send-Befehl ausgelöst werden sollen.

UP

Das Wort UP kann nach dem Namen eines Hotkeys erfolgen, um den Hotkey dazu zubringen, beim Loslassen ausgeführt zu werden, anstatt beim Drücken. Im folgenden Beispiel wird die linke WIN-Taste mit der linken STRG-Taste neu belegt:

*LWin::Send {LControl Down}
*LWin Up::Send {LControl Up}

"Up" kann auch bei normalen Hotkeys verwendet werden. Zum Beispiel: ^!r Up::MsgBox Sie haben STRG+ALT+R gedrückt und losgelassen. Das funktioniert auch mit kombinierten Hotkeys (z. B. F1 & e Up::).

Einschränkungen: 1) "Up" funktioniert nicht bei Joystick-Tasten; und 2) Ein "Up"-Hotkey ohne entsprechend normalem/gedrücktem Gegenstück wird diese Taste komplett übernehmen, um zu verhindern, dass sie stecken bleibt. Dieses Verhalten kann beispielsweise unterdrückt werden, wenn ein Tilde-Präfix hinzugefügt wird (z. B. ~LControl up::).

UP-Hotkeys und ihre entsprechenden DOWN-Parts (sofern vorhanden) benutzen immer den Tastatur-Hook.

Mit einer ähnlichen Methode kann ein Hotkey zu einer Präfix-Taste gemacht werden. Der Vorteil davon ist, dass der Hotkey beim Loslassen nur ausgeführt wird, wenn keine andere Taste gedrückt wird, während er gedrückt gehalten wird. Zum Beispiel:

LControl & F1::Return  ; Macht die linke STRG-Taste zu einem Präfix, wenn sie mindestens einmal vor "&" verwendet wird.
LControl::MsgBox Sie haben LControl ohne Auswirkung losgelassen.

(In der Tastenliste können alle möglichen Tasten von der Tastatur, Maus und des Joysticks gefunden werden)


Es können mehrere Hotkeys vertikal gestapelt werden, damit sie die gleiche Aktion ausführen. Zum Beispiel:

^Numpad0::
^Numpad1::
MsgBox Durch Drücken von STRG+Numpad0 oder STRG+Numpad1 wird diese Meldung angezeigt.
return

Eine Taste oder Tastenkombination kann vollständig deaktiviert werden, indem sie dazu gebracht wird, nichts zu tun. Das folgende Beispiel deaktiviert die rechte WIN-Taste:

RWin::Return

Kontextabhängige Hotkeys

Die Direktiven #IfWinActive/Exist und #If können Hotkeys dazu bringen, je nach Bedingung unterschiedliche (oder überhaupt keine) Aktionen durchzuführen. Zum Beispiel:

#IfWinActive, ahk_class Notepad
^a::MsgBox Sie haben STRG+A gedrückt, während der Editor aktiv ist. Das Drücken von STRG+A in jedem anderen Fenster wird stattdessen die Tastatureingabe STRG+A übergeben.
#c::MsgBox Sie haben WIN+C gedrückt, während der Editor aktiv ist.

#IfWinActive
#c::MsgBox Sie haben WIN+C gedrückt, während ein Fenster außer dem Editor aktiv ist.

#If MouseIsOver("ahk_class Shell_TrayWnd")
WheelUp::Send {Volume_Up}     ; Mausrad über die Taskleiste: Lautstärke erhöhen/verringern.
WheelDown::Send {Volume_Down} ;

Benutzerdefinierte Kombinationen

Mithilfe von " & " kann eine benutzerdefinierte Kombination von zwei Tasten (außer Joystick-Tasten) definiert werden. Im folgenden Beispiel würde der Hotkey ausgelöst werden, wenn man Numpad0 gedrückt hält und danach die zweite Taste drückt:

Numpad0 & Numpad1::MsgBox, Sie haben Numpad1 gedrückt, während Numpad0 gedrückt wurde.
Numpad0 & Numpad2::Run Notepad

Die Präfixtasten verlieren ihre ursprüngliche Funktion: Im obigen Beispiel wurde Numpad0 als Präfixtaste definiert; wenn man nur diese Taste drückt, wird nichts passieren. Um das zu vermeiden, kann man die Numpad0-Taste wie folgt konfigurieren, damit sie eine neue Aktion durchführen kann:

Numpad0::WinMaximize A   ; Maximiert das aktive/vorderste Fenster.
Numpad0::Send {Numpad0}  ; Numpad0 erzeugt beim Loslassen eine Numpad0-Tastatureingabe. Siehe unteren Kommentar.

Auslösen beim Loslassen: Das Vorhandensein einer der oben genannten benutzerdefinierten Tastenkombinationen bewirkt, dass Numpad0 losgelassen wird, um die angegebene Aktion durchführen zu können, aber nur, wenn man keine andere Taste drückte, während Numpad0 gedrückt gehalten wurde. Seit v1.1.14 kann dieses Verhalten durch Anfügen des Tilde-Präfixes an beiden Hotkeys unterdrückt werden.

Modifikatoren: Im Gegensatz zu normalen Hotkeys verhalten sich benutzerdefinierte Hotkeys so, als gelte bei ihnen standardmäßig der Platzhalter-Modifikator (*). Zum Beispiel wird 1 & 2:: auch dann aktiviert, wenn man STRG oder ALT gedrückt hält, während ^1:: nur via STRG+1 aktiviert werden kann, und nicht via STRG+ALT+1.

In Verbindung mit vordefinierten Modifikatortasten funktionieren normale Hotkeys in der Regel besser als "benutzerdefinierte" Kombinationen. Zum Beispiel wäre <+s:: empfehlenswerter als LShift & s::.

Kombinationen von drei oder mehr Tasten werden nicht unterstützt. Kombinationen, die deine Tastatur-Hardware unterstützt, können in der Regel mithilfe von #If und GetKeyState erkannt werden, aber die Ergebnisse können inkonsistent sein. Zum Beispiel:

; Halte die MENÜ- und ALT-Taste gedrückt, und drücke dann Bindestrich (-).
#if GetKeyState("AppsKey", "P")
Alt & -::MsgBox Hotkey aktiviert.

; Notwendig, wenn ALT zuerst gedrückt gehalten wird:
#if GetKeyState("Alt", "P")
AppsKey & -::MsgBox Hotkey aktiviert.

; , & . & -::
#if GetKeyState(",") && GetKeyState(".")
-::MsgBox

Tastatur-Hook: Benutzerdefinierte Kombinationen mit Tastatur-Tasten benutzen immer den Tastatur-Hook, ebenso wie alle Hotkeys, die die Präfixtaste als Suffix benutzen. Zum Beispiel würde a & b:: bewirken, dass ^a:: immer den Hook benutzt.

Sonstige Features

NUM-, FESTSTELL- und ROLLEN-Taste: Diese Tasten können dazu gezwungen werden, "AlwaysOn" (immer an) oder "AlwaysOff" (immer aus) zu sein. Zum Beispiel: SetNumlockState AlwaysOn.

Explorer-Tastenkürzel überschreiben: Die vordefinierten Hotkeys von Windows wie WIN+E (#e) und WIN+R (#r) können einzeln überschrieben werden, indem man ihnen im Skript einfach eine Aktion zuweist. Siehe "Überschreiben oder Deaktivieren von Hotkeys" für Details.

Alt-Tab ersetzen: Hotkeys können eine alternative Methode für Alt-Tab bereitstellen. Zum Beispiel ermöglichen dir die folgenden zwei Hotkeys, Alt-Tab mit deiner rechten Hand durchzuführen:

RControl & RShift::AltTab  ; Halte rechte STRG-Taste gedrückt und drücke danach mehrmals die rechte UMSCHALT-Taste, um durchzuschalten.
RControl & Enter::ShiftAltTab  ; Ohne die rechte STRG-Taste loszulassen, drücke ENTER, um die Richtung umzukehren.

Siehe Alt-Tab für weitere Details.

Mausrad-Hotkeys

Hotkeys, die beim Drehen des Mausrads ausgeführt werden, können mit WheelDown und WheelUp realisiert werden. Seit v1.0.48 werden auch WheelLeft und WheelRight unterstützt, allerdings funktionieren diese nicht in Betriebssystemen älter als Windows Vista. Hier einige Beispiele für Mausrad-Hotkeys:

MButton & WheelDown::MsgBox Sie haben das Mausrad nach unten gedreht, während die mittlere Maustaste gedrückt wurde.
^!WheelUp::MsgBox Sie haben das Mausrad nach oben gedreht, während STRG+ALT gedrückt wurde.

Seit v1.0.43.03 enthält die Built-in-Variable A_EventInfo die Anzahl an gedrehten Rasterungen (standardmäßig 1). Allerdings kann A_EventInfo unter folgenden Umständen größer oder kleiner als 1 sein:

Einige der nützlichsten Mausrad-Hotkeys sind solche, die alternative Methoden zum Scrollen eines Fenstertextes bereitstellen. Die folgenden Hotkey-Paare scrollen beispielsweise horizontal statt vertikal, wenn man das Mausrad dreht, während die linke STRG-Taste gedrückt wurde:

~LControl & WheelUp::  ; Scrollt nach links.
ControlGetFocus, fcontrol, A
Loop 2  ; <-- Erhöhe diesen Wert, um das Scrollen zu beschleunigen.
    SendMessage, 0x114, 0, 0, %fcontrol%, A  ; 0x114 ist WM_HSCROLL und die 0 danach SB_LINELEFT.
return

~LControl & WheelDown::  ; Scrollt nach rechts.
ControlGetFocus, fcontrol, A
Loop 2  ; <-- Erhöhe diesen Wert, um das Scrollen zu beschleunigen.
    SendMessage, 0x114, 1, 0, %fcontrol%, A  ; 0x114 ist WM_HSCROLL und die 1 danach SB_LINERIGHT.
return

Da Mausrad-Hotkeys nur Ereignisse beim Drücken erzeugen (nie beim Loslassen), können sie nicht als Hotkeys verwendet werden, die das Wort "UP" enthalten.

Tipps und Hinweise

Jede Ziffernblocktaste kann dazu gebracht werden, je nach Status der NUM-Taste zwei verschiedene Hotkey-Subroutinen zu starten. Alternativ kann man eine Ziffernblocktaste auch dazu bringen, die gleiche Subroutine zu starten, unabhängig vom Status der NUM-Taste. Zum Beispiel:

NumpadEnd::
Numpad1::
MsgBox, Dieser Hotkey wurde gestartet, egal ob die NUM-Taste An ist oder nicht.
return

Wenn der Tilde-Operator (~) einmal in Verbindung mit einer Präfixtaste verwendet wurde, ändert er das Verhalten dieser Präfixtaste bei allen Kombinationen. Zum Beispiel würde bei beiden folgenden Hotkeys das aktive Fenster alle Rechtsklick-Ereignisse empfangen, obwohl das Tilde-Zeichen nur in einer der Definitionen vorkommt:

~RButton & LButton::MsgBox Sie haben die linke Maustaste gedrückt, während die rechte gedrückt wurde.
RButton & WheelUp::MsgBox Sie haben das Mausrad nach oben gedreht, während die rechte Maustaste gedrückt wurde.

Der Suspend-Befehl kann vorübergehend alle Hotkeys deaktivieren, außer solche, bei denen eine Ausnahme gemacht worden ist. Um solche Hotkeys gezielt zu bestimmen, verwende #IfWinActive/Exist.

Mithilfe des Hotkey-Befehls können Hotkeys dynamisch erstellt werden, während das Skript läuft. Der Hotkey-Befehl kann zudem Hotkeys, die im Skript bereits vorkommen, einzeln bearbeiten, deaktivieren oder aktivieren.

Joystick-Hotkeys unterstützen Modifikatortasten wie ^ (STRG) und # (WIN) zurzeit nicht als Präfix. Allerdings kann man GetKeyState wie folgt verwenden, um diesen Effekt nachzuahmen:

Joy2::
if not GetKeyState("Control")  ; Weder die linke noch die rechte STRG-Taste ist gedrückt.
    return  ; also nichts tun.
MsgBox Sie haben die zweite Taste vom ersten Joystick gedrückt, während die STRG-Taste gedrückt wurde.
return

Manchmal ist es notwendig, dass ein Hotkey auf das Loslassen seiner Modifikatortasten warten muss, bevor er fortfahren kann. Siehe dazu folgendes Beispiel:

^!s::Send {Delete}

Durch Drücken von STRG+ALT+S wird das System dazu gebracht, sich so zu verhalten, als hätte man STRG+ALT+ENTF gedrückt (aufgrund der aggressiven Erkennung dieser Tastenkombination). Um das zu umgehen, sollte man mit KeyWait auf das Loslassen der Tasten warten; zum Beispiel:

^!s::
KeyWait Control
KeyWait Alt
Send {Delete}
return

Erzeugt ein Hotkey-Label wie #z:: ein Fehler wie "Invalid Hotkey" (ungültiger Hotkey), hat die Tastaturbelegung/Sprache deines Systems dieses bestimmte Zeichen möglicherweise nicht (in diesem Fall "Z"). Probiere nur Zeichen aus, die auf deiner Tastaturbelegung vorhanden sind.

Ein Hotkey-Label kann als Ziel von Gosub oder Goto verwendet werden. Zum Beispiel: Gosub ^!s.

Häufig werden Hotkeys dazu verwendet, eine wiederholende Aktion zu starten und zu stoppen, wie z. B. mehrere Tastatureingaben oder Mausklicks. Ein Beispiel dazu findet man in diesem FAQ-Thema.

Jedes Skript kann aus mehreren Threads bestehen, wodurch es möglich ist, dass ein neuer Hotkey gestartet werden kann, obwohl eine vorherige Hotkey-Subroutine noch läuft. Zum Beispiel können neue Hotkeys gestartet werden, während eine MsgBox mit dem aktuellen Hotkey angezeigt wird.

Alt-Tab-Hotkeys

Jeder Alt-Tab-Hotkey muss eine Kombination von zwei Tasten sein, das üblicherweise mit einem Und-Zeichen (&) erreicht werden kann. Im folgenden Beispiel kann man die rechte ALT-Taste gedrückt halten und J oder K drücken, um das Alt-Tab-Menü durchzuschalten:

RAlt & j::AltTab
RAlt & k::ShiftAltTab

AltTab und ShiftAltTab sind zwei spezielle Befehle, die nur erkannt werden, wenn sie auf der gleichen Zeile des Hotkeys vorkommen. Hier die komplette Liste:

AltTab: Ist das Alt-Tab-Menü sichtbar, wird es durchgeschaltet. Ansonsten wird das Menü geöffnet (nur wenn der Hotkey eine "&"-Kombination von zwei Tasten ist, sonst passiert nichts).

ShiftAltTab: Das gleiche wie oben, nur in die entgegengesetzte Richtung.

AltTabAndMenu: Ist das Alt-Tab-Menü sichtbar, wird es durchgeschaltet. Ansonsten wird das Menü geöffnet.

AltTabMenuDismiss: Schließt das Alt-Tab-Menü.

Zur Veranschaulichung der oben genannten Sonderbefehle könnte man beispielsweise das Mausrad als vollständigen Ersatz für Alt-Tab umfunktionieren. Die folgenden Hotkeys würden bewirken, dass durch Klicken der mittleren Maustaste das Menü geöffnet und durch Drehen des Mausrads das Menü durchgeschaltet werden kann:

MButton::AltTabMenu
WheelDown::AltTab
WheelUp::ShiftAltTab

Um ein Alt-Tab-Menü, das per Hotkey aufgerufen wurde, zu schließen, ohne das ausgewählte Fenster zu aktivieren, verwende ein Hotkey wie folgt. Möglicherweise sind Anpassungen notwendig, je nachdem, womit das Alt-Tab-Menü ursprünglich angezeigt wurde und ob das Skript den Tastatur-Hook installiert hat.

LCtrl & CapsLock::AltTab
!MButton::  ; Mittlere Maustaste. Mit dem !-Präfix kann er nur ausgeführt werden, wenn die ALT-Taste gedrückt wird (sobald das Alt-Tab-Menü sichtbar ist).
IfWinExist ahk_class #32771  ; Zeigt an, dass das Alt-Tab-Menü auf dem Bildschirm vorhanden ist.
    Send !{Escape}{Alt up}
return

Zurzeit müssen alle speziellen Alt-Tab-Aktionen direkt einem Hotkey wie oben zugewiesen werden (das heißt, dass sie nicht verwendet werden können, als wären sie Befehle). Sie werden nicht von #IfWin oder #If beeinflusst.

Per Hotkeys können auch benutzerdefinierte Alt-Tab-Aktionen erstellt werden. Im folgenden Beispiel kann man F1 drücken, um das Menü zu öffnen und darin durchzuschalten. Danach F2, um das ausgewählte Fenster zu aktivieren (oder ESC drücken, um abzubrechen):

*F1::Send {Alt down}{tab} ; Sternchen ist in diesem Fall notwendig.
!F2::Send {Alt up}  ; Lässt die ALT-Taste los, um das ausgewählte Fenster zu aktivieren.
~*Escape::
IfWinExist ahk_class #32771
    Send {Escape}{Alt up}  ; Schließt das Menü, ohne das ausgewählte Fenster zu aktivieren.
return

Funktions-Hotkeys [v1.1.20+]

Es ist möglich, einem oder mehreren Hotkeys eine Funktion zuzuweisen, indem man sie wie folgt einfach direkt unter dem Hotkey-Label definiert:

; STRG+UMSCHALT+O, um den enthaltenen Ordner im Explorer zu öffnen.
; STRG+UMSCHALT+E, um den Ordner zu öffnen und darin die aktuelle Datei zu markieren.
; Unterstützt SciTE und Notepad++.
^+o::
^+e::
    editor_ordner_öffnen() {
        WinGetTitle, pfad, A
        if RegExMatch(pfad, "\*?\K(.*)\\[^\\]+(?= [-*] )", pfad)
            if (FileExist(pfad) && A_ThisHotkey = "^+e")
                Run explorer.exe /select`,"%pfad%"
            else
                Run explorer.exe "%pfad1%"
    }

Es dürfen nur Leerraumzeichen, Kommentare oder Direktiven zwischen den Hotkey-Labeln oder Labeln und der Funktion vorkommen. Es werden keine Labels erstellt, wenn Hotkeys auf diese Weise definiert werden; allerdings endet der automatische Ausführungsbereich beim ersten Hotkey, selbst wenn ihm eine Funktion zugewiesen wurde.

Das Verwenden einer Funktion hat den Vorteil, dass lokale Variablen verwendet werden können, um so Konflikte zu vermeiden, wenn zwei oder mehr Hotkeys die gleichen Variablennamen für unterschiedliche Zwecke verwenden. Außerdem fördert es selbstdokumentierende Hotkeys, wie im Code oben, wo der Funktionsname den Hotkey beschreibt.

Mit dem Hotkey-Befehl kann man auch eine Funktion oder ein Funktionsobjekt einem Hotkey zuweisen.