<script src="../static/ga4.js" type="text/javascript"></script> </head> <body> <h1>KeyWait</h1> <p>Wartet, bis eine Tastatur-, Maus- oder Controllertaste losgelassen oder nach unten gedrückt wird.</p> <pre class="Syntax"><span class="func">KeyWait</span>, TasteName <span class="optional">, Optionen</span></pre> <h2 id="Parameters">Parameter</h2> <dl> <dt>TasteName</dt> <dd><p>Nahezu jedes Zeichen, das mit der Tastatur erzeugt werden kann, oder einer der Tastennamen aus der <a href="../KeyList.htm">Tastenliste</a>, einschließlich Maus- und Controllertasten. Andere Controllerwerte werden nicht unterstützt.</p> <p>Es kann auch explizit ein eindeutiger virtueller Tastencode wie <code>vkFF</code> 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 <a href="../KeyList.htm#SpecialKeys">Tastenliste</a> an, um zu erfahren, wie der virtuelle Tastencode einer solchen Taste ermittelt werden kann.</p></dd> <dt>Optionen</dt> <dd><p>Wenn leer oder weggelassen, wird der Befehl solange warten, bis der Benutzer die angegebene Tastatur-, Maus- oder Controllertaste physisch loslässt. Wenn aber der <a href="_InstallKeybdHook.htm">Tastatur-Hook</a> nicht installiert ist und <em>TasteName</em> eine Tastaturtaste ist, die künstlich losgelassen wurde (z.B. via <a href="Send.htm">Send</a>-Befehl), wird die Taste so behandelt, als wäre sie physisch losgelassen worden. Dasselbe gilt für Maustasten, wenn der <a href="_InstallMouseHook.htm">Maus-Hook</a> nicht installiert ist.</p> <p>Andernfalls geben Sie eine Zeichenkette an, die aus einer oder mehreren der folgenden Optionen besteht (in beliebiger Reihenfolge, optional durch Leerzeichen getrennt):</p> <p><strong>D:</strong> Warten, bis die Taste nach unten gedrückt wird.</p> <p><strong>L:</strong> 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.</p> <p><strong>T:</strong> Zeitlimit (z.B. <code>T3</code>). Die zu wartenden Sekunden, bevor eine Zeitüberschreitung erfolgt und <a href="../misc/ErrorLevel.htm">ErrorLevel</a> auf 1 gesetzt wird. Der Befehl 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 wird <a href="../misc/ErrorLevel.htm">ErrorLevel</a> sofort auf 0 gesetzt und die Skriptausführung fortgesetzt.</p> <p>Der Zeitlimit-Wert kann eine Floating-Point-Zahl wie 2.5 sein, aber kein Hexadezimalwert wie 0x03.</p></dd> </dl> <h2 id="ErrorLevel">ErrorLevel</h2> <p><a href="../misc/ErrorLevel.htm">ErrorLevel</a> wird auf 1 gesetzt, wenn der Befehl das Zeitlimit überschritten hat, andernfalls auf 0.</p> <h2 id="Remarks">Bemerkungen</h2> <p>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 dem <a href="KeyHistory.htm">KeyHistory</a>-Befehl oder -Menüpunkt können Sie prüfen, ob Ihr Skript die Hooks verwendet. Um die Installation eines Hooks zu erzwingen, fügen Sie die <a href="_InstallKeybdHook.htm">#InstallKeybdHook</a>- und/oder <a href="_InstallMouseHook.htm">#InstallMouseHook</a>-Direktive in das Skript ein.</p> <p>Während der Befehl wartet, können neue <a href="../misc/Threads.htm">Threads</a> via <a href="../Hotkeys.htm">Hotkeys</a>, <a href="Menu.htm">benutzerdefinierte Menüpunkte</a> oder <a href="SetTimer.htm">Timer</a> gestartet werden.</p> <p>Um auf das Loslassen von zwei oder mehr Tasten zu warten, verwenden Sie KeyWait mehrmals. Zum Beispiel:</p> <pre>KeyWait Control <em>; Warten, bis STRG und ALT losgelassen werden.</em> KeyWait Alt</pre> <p>Um auf das Drücken einer beliebigen Taste aus einer Liste von Tasten zu warten, siehe <a href="Input.htm#ExAnyKey">Input-Beispiel #1</a>.</p> <h2 id="Related">Siehe auch</h2> <p><a href="GetKeyState.htm">GetKeyState</a>, <a href="../KeyList.htm">Tastenliste</a>, <a href="Input.htm">Input</a>, <a href="KeyHistory.htm">KeyHistory</a>, <a href="_InstallKeybdHook.htm">#InstallKeybdHook</a>, <a href="_InstallMouseHook.htm">#InstallMouseHook</a>, <a href="ClipWait.htm">ClipWait</a>, <a href="WinWait.htm">WinWait</a></p> <h2 id="Examples">Beispiele</h2> <div class="ex" id="ExBasic"> <p><a class="ex_number" href="#ExBasic"></a> Wartet, bis die A-Taste losgelassen wird.</p> <pre>KeyWait, a</pre> </div> <div class="ex" id="ExDown"> <p><a class="ex_number" href="#ExDown"></a> Wartet, bis die linke Maustaste nach unten gedrückt wird.</p> <pre>KeyWait, LButton, D</pre> </div> <div class="ex" id="ExTimeout"> <p><a class="ex_number" href="#ExTimeout"></a> Wartet bis zu 3 Sekunden, bis die erste Controllertaste nach unten gedrückt wird.</p> <pre>KeyWait, Joy1, D T3</pre> </div> <div class="ex" id="ExLogical"> <p><a class="ex_number" href="#ExLogical"></a> Wartet, bis die linke ALT-Taste logisch losgelassen wird.</p> <pre>KeyWait, LAlt, L</pre> </div> <div class="ex" id="ExHotkey"> <p><a class="ex_number" href="#ExHotkey"></a> 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 <code>~CapsLock up::</code>.</p> <pre>~CapsLock:: KeyWait, CapsLock <em>; Wartet auf das physische Loslassen.</em> MsgBox Sie haben die FESTSTELL-Taste gedrückt und losgelassen. return</pre> </div> <div class="ex" id="ExRemap"> <p><a class="ex_number" href="#ExRemap"></a> Belegt eine Tastatur- oder Maustaste neu. (Dieses Beispiel dient nur zur Illustration, da es einfacher wäre, die <a href="../misc/Remap.htm">interne Neubelegung</a> zu verwenden.) Im folgenden Hotkey wird die Maustaste gedrückt gehalten, während NumpadAdd unten ist, was NumpadAdd effektiv zu einer Maustaste macht.</p> <pre>*NumpadAdd:: MouseClick, left,,, 1, 0, D <em>; Die linke Maustaste gedrückt halten.</em> KeyWait, NumpadAdd <em>; Wartet, bis die Taste losgelassen wird.</em> MouseClick, left,,, 1, 0, U <em>; Die Maustaste loslassen.</em> return</pre> </div> <div class="ex" id="ExDouble"> <p><a class="ex_number" href="#ExDouble"></a> 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 <a href="SetTimer.htm#ExampleCount">SetTimer-Beispiel #3</a>.</p> <pre>~RControl:: if (A_PriorHotkey != "~RControl" or A_TimeSincePriorHotkey &gt; 400) { <em>; Zu viel Zeit zwischen den Instanzen, also kein Doppeldruck.</em> KeyWait, RControl return } MsgBox Sie haben die rechte STRG-Taste doppelt gedrückt. return</pre> </div> </body> </html>