Wartet, bis eine Tastatur-, Maus- oder Controllertaste losgelassen oder nach unten gedrückt wird.
KeyWait TasteName , Optionen
Typ: Zeichenkette
Nahezu jedes Zeichen, das mit der Tastatur erzeugt werden kann, oder einer der Tastennamen aus der Tastenliste, einschließlich Maus- und Controllertasten. Andere Controllerwerte werden nicht unterstützt.
Es kann auch explizit ein eindeutiger virtueller Tastencode wie vkFF
angegeben werden. Dies ist nützlich für den seltenen Fall, dass eine Taste keinen Namen hat und beim Drücken kein sichtbares Zeichen erzeugt. Schauen Sie sich die Anleitung am Ende der Tastenliste an, um zu erfahren, wie der virtuelle Tastencode einer solchen Taste ermittelt werden kann.
Typ: Zeichenkette
Wenn leer oder weggelassen, wird die Funktion solange warten, bis der Benutzer die angegebene Tastatur-, Maus- oder Controllertaste physisch loslässt. Wenn aber der Tastatur-Hook nicht installiert ist und TasteName eine Tastaturtaste ist, die künstlich losgelassen wurde (z.B. via Send-Funktion), wird die Taste so behandelt, als wäre sie physisch losgelassen worden. Dasselbe gilt für Maustasten, wenn der Maus-Hook nicht installiert ist.
Andernfalls geben Sie eine Zeichenkette an, die aus einer oder mehreren der folgenden Optionen besteht (in beliebiger Reihenfolge, optional durch Leerzeichen getrennt):
D: Warten, bis die Taste nach unten gedrückt wird.
L: Prüft den logischen Status der Taste; das ist der Status, den das Betriebssystem und das aktive Fenster für diese Taste vermuten, der aber nicht unbedingt dem physischen Status entspricht. Diese Option wird bei Controllertasten ignoriert.
T: Zeitlimit (z.B. T3
). Die zu wartenden Sekunden, bevor eine Zeitüberschreitung erfolgt und 0 zurückgegeben wird. Die Funktion hört bereits auf zu warten, wenn die Taste den angegebenen Status erreicht hat, und nicht erst, wenn das Zeitlimit abgelaufen ist. In diesem Fall gibt die Funktion sofort 1 zurück.
Der Zeitlimit-Wert kann eine Floating-Point-Zahl wie 2.5 sein, aber kein Hexadezimalwert wie 0x03.
Typ: Integer (boolesch)
Diese Funktion gibt 0 (false) zurück, wenn die Funktion das Zeitlimit überschritten hat, andernfalls 1 (true).
Der physische Status einer Tastatur- oder Maustaste ist in der Regel derselbe wie der logische Status, 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 der KeyHistory-Funktion oder dem zugehörigen Menüpunkt können Sie prüfen, ob Ihr Skript die Hooks verwendet. Um die Installation eines Hooks zu erzwingen, fügen Sie die InstallKeybdHook- und/oder InstallMouseHook-Funktion in das Skript ein.
Während die Funktion wartet, können neue Threads via Hotkeys, benutzerdefinierte Menüpunkte oder Timer gestartet werden.
Um auf das Loslassen von zwei oder mehr Tasten zu warten, verwenden Sie KeyWait mehrmals. Zum Beispiel:
KeyWait "Control" ; Warten, bis STRG und ALT losgelassen werden. KeyWait "Alt"
Um auf das Drücken einer beliebigen Taste aus einer Liste von Tasten zu warten, siehe InputHook-Beispiel #4.
GetKeyState, Tastenliste, InputHook, KeyHistory, InstallKeybdHook, InstallMouseHook, ClipWait, WinWait
Wartet bis zu 3 Sekunden, bis die erste Controllertaste 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 ähnelt ~CapsLock up::
.
~CapsLock:: { KeyWait "CapsLock" ; Wartet auf das physische Loslassen. MsgBox "Sie haben die FESTSTELL-Taste gedrückt und losgelassen." }
Belegt eine Tastatur- oder Maustaste neu. (Dieses Beispiel dient nur zur Illustration, da es einfacher wäre, die interne Neubelegung zu verwenden.) Im folgenden Hotkey wird die Maustaste gedrückt gehalten, während NumpadAdd unten ist, was NumpadAdd effektiv zu einer Maustaste macht.
*NumpadAdd:: { MouseClick "left",,, 1, 0, "D" ; Die linke Maustaste gedrückt halten. KeyWait "NumpadAdd" ; Wartet, bis die Taste losgelassen wird. MouseClick "left",,, 1, 0, "U" ; Die Maustaste loslassen. }
Erkennt, ob eine Taste zweimal gedrückt wurde (ähnlich einem Doppelklick). KeyWait verhindert, dass die Autowiederholungsfunktion der Tastatur einen ungewollten Doppeldruck erzeugt, wenn die rechte STRG-Taste zum Modifizieren einer anderen Taste gedrückt gehalten wird. Hierzu wird der Thread des Hotkeys am Laufen gehalten, wodurch die Autowiederholung blockiert wird, solange #MaxThreadsPerHotkey standardmäßig 1 ist. Für ein ausführlicheres Skript, das zwischen einfachem, doppeltem und dreifachem Tastendruck unterscheidet, siehe SetTimer-Beispiel #3.
~RControl:: { if (A_PriorHotkey != "~RControl" or A_TimeSincePriorHotkey > 400) { ; Zu viel Zeit zwischen den Instanzen, also kein Doppeldruck. KeyWait "RControl" return } MsgBox "Sie haben die rechte STRG-Taste doppelt gedrückt." }