Wartet, bis eine Tastatur-, Maus- oder Joystick-Taste losgelassen oder nach unten gedrückt wird.
KeyWait, TasteName , Optionen
Nahezu jedes Zeichen, das mit der Tastatur erzeugt werden kann, oder einer der Tastennamen aus der Tastenliste, darunter auch Maus- und Joystick-Tasten. Abgesehen von den Joystick-Tasten werden andere Joystick-Attribute nicht unterstützt.
Ein eindeutiger virtueller Tastencode wie vkFF
kann auch angegeben werden. Diese Angabe ist in Ausnahmefällen nützlich, wo eine Taste keinen Namen hat und keine sichtbaren Zeichen beim Drücken erzeugt. Der virtuelle Tastencode einer solchen Taste kann durch Befolgen der Schritte am unteren Ende der Tastenliste ermittelt werden.
Wenn dieser Parameter leer ist, wird der Befehl solange warten, bis der Benutzer die angegebene Tastatur-, Maus- oder Joystick-Taste physisch loslässt. Bei nicht installiertem Tastatur-Hook ist das künstliche Loslassen von TasteName (z. B. via Send-Befehl) das gleiche wie, als hätte man sie physisch losgelassen. Bei nicht installiertem Maus-Hook gilt das gleiche wie oben, aber in Bezug auf Maustasten.
Optionen: Eine Zeichenkette mit einen oder mehreren der folgenden Buchstaben (in beliebiger Reihenfolge, optional durch Leerzeichen getrennt):
D: Warten, bis die Taste nach unten gedrückt wurde.
L: Überprüft den logischen Status der Taste; dieser Status macht dem Betriebssystem und aktivem Fenster glauben, dass die Taste gedrückt wurde, welches aber nicht unbedingt dem physischen Status entspricht. Diese Option wird bei Joystick-Tasten ignoriert.
T: Zeitlimit (z. B. T3
). Die zu wartenden Sekunden, bevor eine Zeitüberschreitung erfolgt und ErrorLevel auf 1 gesetzt wird. Der Befehl hört bereits auf zu warten, wenn die Taste den angegebenen Zustand erreicht hat, und nicht erst, wenn das Zeitlimit abgelaufen ist. In diesem Fall wird ErrorLevel sofort auf 0 gesetzt und die Ausführung des Skripts fortgesetzt.
Der Zeitlimit-Wert kann eine Floating-Point-Zahl wie 2.5 sein, aber kein Hexadezimalwert wie 0x03.
ErrorLevel wird auf 1 gesetzt, wenn der Befehl das Zeitlimit überschritten hat, ansonsten auf 0.
Der physische Zustand einer Tastatur- oder Maustaste ist in der Regel derselbe wie der logische Zustand, es sei denn, der Tastatur- und/oder Maus-Hook ist installiert, dann spiegelt dieser genau wider, ob der Benutzer die Taste physisch gedrückt hält oder nicht. Mit dem KeyHistory-Befehl oder -Menüpunkt können Sie überprüfen, ob Ihr Skript die Hooks benutzt. Durch Hinzufügen von #InstallKeybdHook und/oder #InstallMouseHook können die Hooks im Skript erzwungen werden.
Während der Befehl im Wartezustand ist, können neue Threads via Hotkeys, benutzerdefinierte Menüpunkte oder Timer gestartet werden.
Wenn Sie auf das Loslassen von zwei oder mehr Tasten warten wollen, können Sie KeyWait mehrmals nutzen. Zum Beispiel:
KeyWait Control ; Wartet darauf, dass sowohl STRG als auch ALT losgelassen wird. KeyWait Alt
Im Beispiel-Abschnitt von Input wird gezeigt, wie man auf das Drücken einer Taste warten kann, die zu einer bestimmten Reihe von Tasten gehört.
GetKeyState(), Tastenliste, Input, KeyHistory, #InstallKeybdHook, #InstallMouseHook, ClipWait, WinWait
Wartet bis zu 3 Sekunden, bis die erste Joystick-Taste nach unten gedrückt wird.
KeyWait, Joy1, D T3
Wenn dieser Hotkey gedrückt wird, wartet KeyWait, bis die Feststelltaste physisch losgelassen wird. Dies hat zur Folge, dass nachfolgende Anweisungen beim Loslassen statt Drücken ausgeführt werden. Dieses Verhalten ist äquivalent zu ~CapsLock up::
.
~CapsLock:: KeyWait, CapsLock ; Wartet, bis der Benutzer diese Taste physisch losgelassen hat. MsgBox Sie haben die FESTSTELL-Taste gedrückt und losgelassen. return
Belegt eine Tastatur- oder Maustaste neu (dies dient nur zur Veranschaulichung, weil das interne Neubelegungs-Feature leichter zu handhaben ist). Die linke Maustaste wird gedrückt gehalten, während NumpadAdd unten ist, was NumpadAdd effektiv in die linke Maustaste transformiert.
*NumpadAdd:: MouseClick, left,,, 1, 0, D ; Hält die linke Maustaste gedrückt. KeyWait, NumpadAdd ; Wartet, bis die Taste losgelassen wird. MouseClick, left,,, 1, 0, U ; Lässt die Maustaste los. return
Erkennt, ob eine Taste zweimal gedrückt wurde (ähnlich wie ein Doppelklick). Mit KeyWait wird die Autowiederholungsfunktion der Tastatur daran gehindert, einen ungewollten Doppeldruck zu erzeugen, wenn man die rechte STRG-Taste zum Modifizieren einer anderen Taste gedrückt hält. Es lässt den Thread des Hotkeys laufen, wodurch die Autowiederholung blockiert wird, solange #MaxThreadsPerHotkey auf den Standardwert 1 ist. Hinweis: Es gibt ein ausführlicheres Skript zur Unterscheidung zwischen einfachem, doppeltem und dreifachem Drücken im unteren Bereich der SetTimer-Seite.
~RControl:: if (A_PriorHotkey != "~RControl" or A_TimeSincePriorHotkey > 400) { ; Zu viel Zeit zwischen den Instanzen, daher kein doppeltes Drücken. KeyWait, RControl return } MsgBox Sie haben die rechte STRG-Taste doppelt gedrückt. return