Hotkeys
aus AHK, der freien Wissensdatenbank
Hotkeys werden definiert, in dem man in einem Skript eine Subroutinen-Sprungmarke mit zwei Doppelpunkten statt wie sonst nur einem erstellt. Im unteren Beispiel wird Win+Y zu einem Hotkey der beim Drücken augenblicklich zur #y Sprungmarke (engl: label) springt und die Anweisungen bis zum ersten auftretenden return oder exit ausführt:
#y:: WinActivate, Unbenannt - Editor return
Wenn ein Hotkey nur eine einzige Codezeile benötigt, kann diese direkt rechts neben die zwei Doppelpunkte geschrieben werden. Oder anders gesagt - das abschließende return ist darin schon eingeschlossen.
#y::WinActivate, Untitled - Notepad
Sie können folgende Symbole benutzen um einen Hotkey zu definieren:
| # | Win (Windows Taste) |
| ! | Alt |
| ^ | Control |
| + | Shift |
| < | Benutzt die linken Tasten, wenn zwei Tasten vorhanden sind. z.B. <!a ist das gleiche wie !a mit der Ausnahme, das nur die linke Alt Taste das Ereignis auslösen wird. Dieses Feature wird unter Windows 95/98/ME nicht unterstützt. |
| > | Benutzt die rechten Tasten, wenn zwei Tasten vorhanden sind. Dieses Feature wird unter Windows 95/98/ME nicht unterstützt. |
| <^>! | AltGr. Wenn Ihr Tastaturlayout statt der rechten Alt Taste eine AltGr Taste besitzt, kann mit dieser Folge von Zeichen für AltGr verwendet werden (benötigt Windows NT/2k/XP oder höher). Zum Beispiel: <^>!m::MsgBox Sie haben AltGr+m gedrückt. ^!m::MsgBox Sie haben Ctrl+Alt+m gedrückt. |
| * | Stern: Löse den Hotkey aus, auch wenn zusätzliche Tasten (modifiers) gedrückt gehalten werden. Beispiel: *ScrollLock::Run, Notepad ; Starte Notepad unabhängig davon, ob eine Strg/Alt/Shift/Windowstaste zusätzlich dazu gedrückt wird. Dieses Feature wird unter Windows 95/98/ME nicht unterstützt. |
| ~ | Die ursprüngliche Funktion des Hotkeys soll nicht unterdrückt (vom System verborgen) werden, wenn der Hotkey ausgelöst wird. In den beiden unteren Beispielen wird der Klick auf die Maustaste an das aktive Fenster gesendet, was sonst nicht passieren würde.: ~RButton::MsgBox Sie haben die rechte Maustaste gedrückt. ~RButton & C::MsgBox Sie haben C gedrückt, während Sie die rechte Maustaste gedrückt gehalten haben. Beachten Sie: Spezielle Hotkeys, die ein Ersatz für Alt+Tab sind, ignorieren dieses Symbol. Dieses Feature wird unter Windows 95/98/ME nicht unterstützt. |
| $ | Dieses Symbol ist eigenlich nur notwendig, wenn das Skript den Send Befehl verwendet, um die Tastenkombination zu senden, aus der der Hotkey selbst besteht. Andernfalls würde er unabsichtlich ausgelöst werden. Das genaue Verhalten des $ Präfix variiert in Abhängigkeit zum eingesetzten Betriebssystem. Unter Windows 95/98/Me und AutoHotkey v1.0.23+: Der Hotkey ist während des Ausführens seines Threads deaktiviert und wird im Anschluß wieder aktiviert. Als Nebeneffekt verhält sich #MaxThreadsPerHotkey für den Fall, daß es höher als 1 eingestellt ist, in diesem speziellen Fall so, als ob es für diese Hotkeys auf 1 eingestellt wäre. Unter anderen Betriebssystemen und für alle Versionen von AutoHotkey: Der $ Präfix erzwingt die Verwendung des keyboard hook um den Hotkey zu implementieren. Als Nebeneffekt hindert das den Send Befehl daran, den Hotkey auszulösen. Der $ Präfix ist gleichbedeutend mit der Verwendung von #UseHook vor der Definition des Hotkeys. |
| UP | Das Wort UP kann an den Namen eines Hotkeys angehängt werden, um dafür zu sorgen, daß der Hotkey erst mit dem Loslassen der Taste statt mit dem Herunterdrücken der Taste ausgelöst wird. Beispiele: LWin::Send {LControl Down} ; Belegt die linke Windowstaste mit der linken Strg.Taste LWin Up: Send {LControl Up} ^!r Up::MsgBox Sie haben Strg+Alt+R gedrückt und wieder losgelassen. Dieses Feature funktioniert nicht mit Joystick Knöpfen. Außerdem wird v1.0.28+ und Windows NT4/2000/XP oder später benötigt. |
(Eine komplette Liste aller Keyboardtasten und Maus/Joysticktasten finden Sie in der Keyboard, Maus und Joystickreferenz)
Um mehr als eine Umschaltertaste zu verwenden, müssen Sie diese Tasten einfach hintereinander schreiben. Zum Beispiel:
^!s::
MsgBox Sie haben Strg+Alt+S grdrückt.
return
Hotkey Sprungmarken können wie ganz normle Sprungmarken genutzt werden: Sie können mit GoSub/Goto zu diesen springen und auch mehr als eine Hotkey Sprungmarke wie in folgenden Beispielen, die gleiche Subroutine ausführen lassen:
^Numpad0::
^Numpad1::
MsgBox, Beide der obigen Hotkeys führen diese Subroutine aus.
return
Eine Taste oder Tastenkombination kann für das gesamte System deaktiviert werden, wenn man ihr keine Aktion zuweist. Um zum Beispiel die rechte Windowstaste zu deaktivieren:
RWIN::return
Hotkeys können mit dem Hotkey Befehl auch während der Skriptausführung erstellt, deaktiviert oder aktiviert werden.
Beachten Sie: Das Programm ist quasi multi-threaded, was das Ausführen eines Hotkeys sogar dann erlaubt, wenn eine vorherige Hotkey subroutine noch läuft. Zum Beispiel können neue Hotkeys sogar dann gestartet werden, wenn durch den aktuellen Hotkey gerade eine MsgBox angezeigt wird.
Features die nur unter Windows NT, 2K, XP oder höher verfügbar sind:
Einen Überblick finden Sie unter zusätzliche Features. Dazu ein paar detailiertere Informationen:
Sie können eine benutzerdefinierte Kombination zweier Tasten ganz einfach mittels eines "&" Zeichens dazwischen definieren. Im unteren Beispiel würden Sie Numpad0 gedrückt halten und dann die zweite Taste drücken, um den Hotkey auszulösen:
Numpad0 & Numpad1::AltTab Numpad0 & Numpad2::ShiftAltTab
Im oberen Beispiel wird aus Numpad0 eine sogenannten Prefix Taste. Prefix Tasten kann man natürlich, wie im nächsten Beispiel, ihre eigene Aktion zuweisen. Ihre Aktion wird allerdings nur ausgelöst, wenn die Taste losgelassen wird und keine anderen Hotkeys modifiziert hat, solange sie gedrückt gehalten wurde:
Numpad0::Run, calc.exe
Wenn der Tilde (~) Operator auch nur einmal zusammen mit einer Prefix Taste genutzt wird, wird der Prefix immer an das aktive Fenster gesendet. In beiden der folgenden Hotkeys empfängt zum Beispiel das aktive Fenster alle rechten Mausklicks auch wenn nur eine der beiden Definitionen ein Tilde enthält:
~RButton & LButton::MsgBox Sie haben die linke Maustaste gedrückt, während Sie die rechte gedrückt hielten. RButton & WheelUp::MsgBox Sie haben das Mausrad nach oben gedreht, während Sie die rechte Maustaste gedrückt hielten.
AltTab und ShiftAltTab sind zwei der speziellen Befehle, die nur erkannt werden, wenn sie mit Hotkeys verwendet werden. Sie können, wie alle anderen Skript Befehle auch, mit Maustasten und Drehbewegungen des Mausrades verwendet werden. Beispiel:
LAlt & LButton::AltTab LAlt & WheelDown::AltTab LAlt & WheelUp::ShiftAltTab
Das Mausrad kann als vollständiger Ersatz für AltTab umgewandelt werden. Ein Drücken der Mausrades ruft das Menü auf und mit dem Rad navigiert man durch die Einträge:
MButton::AltTabMenu WheelDown::AltTab WheelUp::ShiftAltTab
Um möglichst einfach AltTab mit Ihrer rechten Hand auf Ihrer Tastatur auszuführen, können Sie folgendes versuchen:
; Rechte Strg Taste gedrückt halten und wiederholt die rechte Shift Taste drücken um sich vorwärts zu bewegen. RControl & RShift::AltTab ; Ohne die rechte Strg Taste loslassen zu müssen, können Sie für die entgegengesetzte Richtung einfach Enter drücken. RControl & Enter::ShiftAltTab
Die anderen, verfügbaren AltTab Aktionen sind AltTabAndMenu (wenn das Menü angezeigt wird, darin vorwärts bewegen; andernfalls, das Menü anzeigen) und AltTabMenuDismiss (das AltTab Menü schließen). Zur Zeit müssen alle AltTab Aktionen wie in den oberen Beispielen direkt einem Hotkey zugewiesen werden (Sie können zum Beispiel nicht wie ein Befehl verwendet werden).
Sie können festlegen, daß die Num-Taste, Hochstell-Taste und Scroll-Taste immer an (AlwaysOn) oder aus (AlwaysOff) sind. Zum Beispiel:
SetNumlockState, AlwaysOn
Die von Windows bereits vorgegebenen Hotkeys wie z.B. Win+E (#e) und Win+R (#r) können individuell überschrieben werden, indem man diesen Tastenkombinationen in einem Skript eine Aktion zuweist. Details dazu finden Sie auf der Seite Außer Kraft Setzen oder Deaktivieren von Hotkeys.
Jede Nummerntaste aus dem Nummernblock kann dazu benutzt werden, in Abhängigkeit vom Status der Numlocktaste zwei verschiedene Subroutinen aufzurufen. Alternativ kann eine Nummerntaste des Nummernblocks auch dazu gebracht werden, unabhängig vom Status der Numlocktaste beide Male die selbe Subroutine aufzurufen. Siehe dazu folgendes Beispiel:
NumpadEnd:: Numpad1:: MsgBox, Dieser Hotkey wird unabhängig vom Status der Numlocktaste ausgelöst. return
Magic Words, das Auflösen von Abkürzungen (Auto-Vervollständigen), und "hotstrings" (benötigt XP/2k/NT): Dies wird alles im Artikel Hotstrings erklärt.
