<script src="static/ga4.js" type="text/javascript"></script> </head> <body> <h1>Hotstrings</h1> <h2 id="toc">Inhaltsverzeichnis</h2> <ul> <li><a href="#intro">Einführung und einfache Beispiele</a></li> <li><a href="#EndChars">Endungszeichen</a></li> <li><a href="#Options">Optionen</a></li> <li><a href="#continuation">Lange Ersatztexte</a></li> <li><a href="#variant">Kontextabhängige Hotstrings</a></li> <li><a href="#AutoCorrect">AutoCorrect</a></li> <li><a href="#remarks">Bemerkungen</a></li> <li><a href="#Function">Benannte Funktions-Hotstrings</a></li> <li><a href="#Helper">Hotstring Helper</a></li> </ul> <h2 id="intro">Einführung und einfache Beispiele</h2> <p>Hotstrings werden hauptsächlich verwendet, um geschriebene Abkürzungen in lange Texte umzuwandeln (kurz Auto-Ersetzen), aber auch, um eine geskriptete Aktion zu starten. Im Prinzip verhalten sich Hotstrings wie <a href="Hotkeys.htm">Hotkeys</a>, außer dass sie in der Regel aus mehr als einem Zeichen (also einer Zeichenkette) bestehen.</p> <p>Um einen Hotstring zu definieren, umschließen Sie die auslösende Abkürzung mit Doppelpunktpaaren. Zum Beispiel:</p> <pre>::bzw::beziehungsweise</pre> <p>Das obige Beispiel hat die folgende Wirkung: Jedes Mal, wenn Sie die Abkürzung "bzw" eingeben, wird diese automatisch mit "beziehungsweise" ersetzt (allerdings geschieht das standardmäßig nur, wenn Sie nach der Eingabe von "bzw" ein <a href="#EndChars">Endungszeichen</a> wie <kbd>Leer</kbd>, <kbd>.</kbd> oder <kbd>Enter</kbd> eingeben).</p> <p id="auto">Das "beziehungsweise"-Beispiel oben ist ein sogenannter automatisch-ersetzender Hotstring. Er löscht automatisch den eingegebenen Text und ersetzt ihn mit der Zeichenkette nach dem zweiten Doppelpunktpaar. Ein Hotstring kann auch verwendet werden, um eine benutzerdefinierte Aktion auszuführen, wie in den folgenden Beispielen. Beachten Sie, dass die <a href="Concepts.htm#statement">Anweisungen</a> <u>unter</u> der Abkürzung im <a href="Functions.htm">Funktionskörper</a> des Hotstrings angegeben werden müssen:</p> <pre>::bzw:: { MsgBox 'Sie haben "bzw" eingegeben.' } :*:]d:: <em>; Dieser Hotstring ersetzt "]d" mit dem heutigen Datum via Anweisung unten.</em> { Send <a href="lib/FormatTime.htm">FormatTime</a>(, "d.M.yyyy HH:mm") <em>; z.B. 21.6.2011 15:10</em> }</pre> <p>Im obigen Beispiel dienen die geschweiften Klammern dazu, einen Funktionskörper für jeden Hotstring zu definieren. Die geschweifte Startklammer kann auf derselben Zeile wie das Doppelpunktpaar stehen, um den <a href="lib/Block.htm#otb">One True Brace (OTB) Style</a> zu unterstützen.</p> <p>Obwohl die beiden Beispiele oben keine automatisch-ersetzende Hotstrings sind, wird auch hier die eingegebene Abkürzung standardmäßig gelöscht. Dieses Löschen erfolgt durch automatisches Backspacing (wiederholtes Löschen des letzten Zeichens), was mit der <a href="#b0">b0-Option</a> deaktiviert werden kann.</p> <p id="ThisHotkey">Beim Auslösen eines Hotstrings wird der Name des Hotstrings (ohne die Doppelpunkte am Ende) als erster Parameter namens <code>ThisHotkey</code> übergeben. Zum Beispiel:</p> <pre>:X:bzw::MsgBox ThisHotkey <em>; Meldet :X:bzw</em></pre> <p>Bis auf wenige Ausnahmen ähnelt dies der internen Variable <a href="Variables.htm#ThisHotkey">A_ThisHotkey</a>. Der Parametername kann mit einer <a href="#Function">benannten Funktion</a> geändert werden.</p> <h2 id="EndChars">Endungszeichen</h2> <p>Um einen Hotstring auszulösen, müssen Sie standardmäßig nach der Eingabe der Abkürzung ein <em>Endungszeichen</em> eingeben (was aber mit der <a href="#Asterisk">Sternchen-Option</a> geändert werden kann). Zu den Endungszeichen gehören standardmäßig die folgenden: <strong>-()[]{}':;"/\,.?!`n`s`t</strong> (`n ist <kbd>Enter</kbd>, `s ist <kbd>Leer</kbd> und `t ist <kbd>Tab</kbd>). Dieser vordefinierte Zeichensatz kann mit dem folgenden Beispiel geändert werden; beachten Sie aber, dass die neuen Endungszeichen für <u>alle</u> Hotstrings gesetzt werden, nicht nur für Hotstrings, die danach folgen:</p> <pre>#Hotstring EndChars -()[]{}:;'"/\,.?!`n`s`t</pre> <p>Die Endungszeichen können während der Skriptausführung geändert werden, indem man die <a href="lib/Hotstring.htm">Hotstring</a>-Funktion wie folgt aufruft:</p> <pre>Hotstring("EndChars", "-()[]{}:;")</pre> <h2 id="Options">Optionen</h2> <p>Es gibt zwei Möglichkeiten, wie das Standardverhalten eines Hotstrings geändert werden kann:</p> <ol> <li>Die <a href="lib/_Hotstring.htm">#Hotstring</a>-Direktive, die alle Hotstrings beeinflusst, die sich im Skript physisch darunter befinden. Das folgende Beispiel aktiviert die Optionen C und R: <code>#Hotstring <strong>c r</strong></code>.</li> <li>Optionen in das erste Doppelpunktpaar des Hotstrings einfügen. Das folgende Beispiel aktiviert die Optionen C und * (Groß-/Kleinschreibung-sensitiv und "ohne Endungszeichen auslösbar") für einen einzelnen Hotstring: <code>:<strong>c*</strong>:j@::john@somedomain.com</code>.</li> </ol> <p>Die folgende Liste beschreibt die einzelnen Optionen. Mehrere Optionen können optional mit Leerzeichen voneinander getrennt werden.</p> <p id="Asterisk"><strong>*</strong> (Sternchen): Der Hotstring kann ohne Endungszeichen (z.B. <kbd>Leer</kbd>, <kbd>.</kbd> oder <kbd>Enter</kbd>) ausgelöst werden. Zum Beispiel:</p> <pre>:*:j@::jsmith@somedomain.com</pre> <p>Das obige Beispiel sendet seinen Ersatztext, sobald Sie das @-Zeichen eingegeben haben. Mit <strong>*0</strong> (unter Nutzung der <a href="lib/_Hotstring.htm">#Hotstring</a>-Direktive) kann diese Option wieder deaktiviert werden.</p> <p id="Question"><strong>?</strong> (Fragezeichen): Bewirkt, dass der Hotstring immer ausgelöst wird, egal ob er sich in einem anderen Wort befindet oder nicht, d.h. das davor eingegebene Zeichen kann alphanumerisch sein. Wenn Sie zum Beispiel den Hotstring <code>:?:de::Deutschland</code> verwenden, würde die Eingabe von "Fahrstunde " dazu führen, dass "FahrstunDeutschland " erzeugt wird. Mit <strong>?0</strong> kann diese Option wieder deaktiviert werden.</p> <p id="b0"><strong>B0</strong> (B gefolgt von einer Null): Bewirkt, dass die eingegebene Abkürzung <u>nicht</u> via automatisches Backspacing (wiederholtes Löschen des letzten Zeichens) gelöscht wird. Mit <strong>B</strong> kann das Backspacing, falls es zuvor deaktiviert war, wieder aktiviert werden. Mit {bs 5}, das <kbd>Backspace</kbd> fünfmal sendet, kann ein Skript das Backspacing selbst durchführen. Mit {left 5} kann <kbd>←</kbd> fünfmal gesendet werden. Der folgende Hotstring beispielsweise erzeugt "&lt;em&gt;&lt;/em&gt;" und verschiebt den Textcursor 5 Stellen nach links (so dass der Textcursor genau zwischen den Tags liegt):</p> <pre>:*b0:&lt;em&gt;::&lt;/em&gt;{left 5}</pre> <p id="C"><strong>C:</strong> Groß-/Kleinschreibung-sensitiv: Bewirkt, dass der Hotstring nur dann ausgelöst wird, wenn die Groß-/Kleinschreibung der eingegebenen Abkürzung exakt mit der im Skript definierten Variante übereinstimmt. Mit <strong>C0</strong> kann diese Option wieder deaktiviert werden.</p> <p id="C1"><strong>C1:</strong> Nicht an die Groß-/Kleinschreibung anpassen. Verwenden Sie diese Option, um <a href="#auto">automatisch-ersetzende Hotstrings</a> nicht-Groß-/Kleinschreibung-sensitiv zu machen und zu verhindern, dass sie sich an die Groß-/Kleinschreibung der von Ihnen eingegebenen Zeichen anpassen. Groß-/Kleinschreibung-anpassende Hotstrings (Standardeinstellung) erzeugen den Ersatztext komplett in Großbuchstaben, wenn Sie die Abkürzung komplett in Großbuchstaben eingeben. Wenn Sie den ersten Buchstaben großschreiben, wird auch der erste Buchstabe des Ersatztextes großgeschrieben (sofern es ein Buchstabe ist). Wenn Sie die Groß-/Kleinschreibung auf eine andere Weise eingeben, wird der Ersatztext ohne Änderung der Groß-/Kleinschreibung gesendet. Mit <strong>C0</strong> (unter Nutzung der <a href="lib/_Hotstring.htm">#Hotstring</a>-Direktive) kann diese Option wieder deaktiviert werden.</p> <p id="Kn"><strong>Kn:</strong> Tastenverzögerung: Diese selten verwendete Option bestimmt die Verzögerung zwischen den Tastendrücken, die via Auto-Backspacing oder <a href="#auto">Auto-Ersetzen</a> erzeugt werden. Geben Sie für <strong>n</strong> die neue Verzögerung an, z.B. k10 für eine Verzögerung von 10&nbsp;ms oder k-1 zum Deaktivieren der Verzögerung. Das genaue Verhalten dieser Option hängt vom gerade aktiven <a href="#SendMode">Send-Modus</a> ab:</p> <ul> <li>SI (SendInput): Die Tastenverzögerung wird ignoriert, da in diesem Modus keine Verzögerung möglich ist. Die Ausnahme hiervon ist, wenn SendInput <a href="lib/Send.htm#SendInputUnavail">nicht verfügbar</a> ist, dann fallen die Hotstrings in den SendPlay-Modus unten zurück (der die Tastenverzögerung berücksichtigt).</li> <li>SP (SendPlay): Standardmäßig gilt eine Verzögerung von 0, was bei SendPlay äquivalent zu -1 (keine Verzögerung) ist. In diesem Modus bezieht sich die Verzögerung auf die <a href="lib/SetKeyDelay.htm#dur">Druckdauer</a>, nicht auf die Verzögerung zwischen den Tastendrücken.</li> <li>SE (SendEvent): Standardmäßig gilt eine Verzögerung von 0. Eine Verzögerung von 0 wird für die meisten Zwecke empfohlen, weil sie relativ kurz ist und dafür sorgt, dass der Hotstring gut mit anderen Prozessen kooperiert (aufgrund eines internen <a href="lib/Sleep.htm">Sleep 0</a>). Geben Sie k-1 an, um die Verzögerung komplett zu deaktivieren; dies ist z.B. nützlich, um Auto-Ersetzungen zu beschleunigen, wenn Ihre CPU häufig stark belastet wird. Wenn sie auf -1 gesetzt ist, hat die Prozesspriorität eines Skripts einen großen Einfluss darauf, wie schnell es Tastendrücke senden kann. Um die Priorität eines Skripts zu erhöhen, verwenden Sie <code><a href="lib/ProcessSetPriority.htm">ProcessSetPriority</a> "High"</code>.</li> </ul> <p id="O"><strong>O:</strong> Bewirkt, dass <a href="#auto">automatisch-ersetzende Hotstrings</a> ihren Ersatztext ohne Endungszeichen erzeugen. Diese Option ist nützlich, wenn Sie weiterhin mit einem Endungszeichen verhindern wollen, dass der Hotstring versehentlich ausgelöst wird, aber gleichzeitig auch erreichen wollen, dass dieses Endungszeichen nicht auf dem Bildschirm erscheint. Verwenden Sie zum Beispiel den Hotstring <code>:o:ar::Aristokrat</code>, würde die Eingabe von "ar" gefolgt von einem Leerzeichen dazu führen, dass "Aristokrat" ohne Leerzeichen am Ende erzeugt wird, was Ihnen z.B. die Möglichkeit bietet, das Wort in den Plural zu setzen, ohne <kbd>Backspace</kbd> verwenden zu müssen. Mit <strong>O0</strong> (Buchstabe O gefolgt von einer Null) kann diese Option wieder deaktiviert werden.</p> <p id="Pn"><strong>Pn:</strong> Die <a href="misc/Threads.htm">Priorität</a> des Hotstrings (z.B. P1). Diese Option wird selten verwendet und funktioniert nicht bei <a href="#auto">automatisch-ersetzenden Hotstrings</a>.</p> <p id="raw"><strong>R:</strong> Bewirkt, dass der Ersatztext im <a href="lib/Send.htm#SendRaw">Rohzustand</a> gesendet wird, d.h. es findet keine Übersetzung von {Enter} zu <kbd>Enter</kbd>, ^c zu <kbd>Strg</kbd>+<kbd>C</kbd> usw. statt. Diese Option kann mit <strong>R0</strong> wieder deaktiviert oder mit <strong>T</strong> überschrieben werden.</p> <p class="note"><strong>Hinweis:</strong> Der <a href="#T">Text-Modus</a> kann für das Senden von Text zuverlässiger sein. Die Optionen R und T schließen sich gegenseitig aus.</p> <p id="SuspendExempt"><strong>S</strong> oder <strong>S0</strong>: Geben Sie den Buchstaben S an, um den Hotstring vor einer <a href="lib/Suspend.htm">Suspension</a> zu <a href="lib/_SuspendExempt.htm">schützen</a>. Geben Sie S0 (S mit der Zahl 0) an, um den Schutz zu entfernen, so dass der Hotstring wieder suspendiert werden kann. Wenn diese Option als Standardoption festgelegt ist, wird der Hotstring entweder durch <code>S</code> oder <code>#SuspendExempt</code> vor einer Suspension geschützt, d.h. um die Direktive zu überschreiben, muss <code>S0</code> explizit im Hotstring verwendet werden.</p> <p id="SendMode"><strong>SI</strong> oder <strong>SP</strong> oder <strong>SE</strong>: Bestimmt den Modus, den <a href="#auto">automatisch-ersetzende Hotstrings</a> zum Senden ihrer Tastendrücke verwenden. Diese Optionen schließen sich gegenseitig aus, d.h. es kann immer nur eine Option aktiv sein. Die folgende Liste beschreibt die einzelnen Optionen:</p> <ul> <li id="SI">SI steht für <a href="lib/Send.htm#SendInputDetail">SendInput</a>. Dieser Modus ist in der Regel schneller und zuverlässiger als die anderen Modi. Außerdem hat SendInput (wie auch SendPlay unten) den Vorteil, dass alles, was Sie während einer <a href="#auto">automatischen Ersetzung</a> eingeben, nach hinten verschoben wird. Dadurch wird verhindert, dass Ihre Tastendrücke mit denen des Ersatztextes vermischt werden. Wenn SendInput <a href="lib/Send.htm#SendInputUnavail">nicht verfügbar</a> ist, verwenden Hotstrings stattdessen automatisch SendPlay.</li> <li id="SP">SP steht für <a href="lib/Send.htm#SendPlayDetail">SendPlay</a>. Dieser Modus erhöht die Chance, dass Hotstrings in einigen Videospielen funktionieren.</li> <li id="SE">SE steht für <a href="lib/Send.htm#SendEvent">SendEvent</a>.</li> </ul> <p>SendInput ist der Standardmodus, der mit den oben genannten Optionen überschrieben werden kann. Anders als bei der SI-Option wird jedoch SendEvent anstelle von SendPlay verwendet, wenn SendInput nicht verfügbar ist.</p> <p id="T"><strong>T:</strong> Den Ersatztext im <a href="lib/Send.htm#SendText">Text-Modus</a> senden, d.h. jedes Zeichen via Zeichencode senden, ohne z.B. {Enter} in <kbd>Enter</kbd>, ^c in <kbd>Strg</kbd>+<kbd>C</kbd> usw. zu übersetzen und ohne jedes Zeichen in einen Tastendruck zu übersetzen. Diese Option wird automatisch für Hotstrings aktiviert, die einen <a href="#continuation">Fortsetzungsbereich</a> haben. Diese Option kann mit <strong>T0</strong> oder <strong>R0</strong> wieder deaktiviert oder mit <strong>R</strong> überschrieben werden.</p> <p id="X"><strong>X:</strong> Execute (Ausführen). Anstelle eines Ersatztextes akzeptiert der Hotstring einen Funktionsaufruf oder Ausdruck, den er ausführen soll. Zum Beispiel würde <code>:X:~mb::MsgBox</code> ein Mitteilungsfenster anzeigen, wenn der Benutzer "~mb" eingibt, anstatt diese Abkürzung automatisch mit "MsgBox" zu ersetzen. Das ist besonders für eine große Anzahl von Hotstrings nützlich, die Funktionen aufrufen, da sonst drei Zeilen pro Hotstring notwendig wären.</p> <p>Diese Option sollte nicht mit der <a href="lib/Hotstring.htm">Hotstring</a>-Funktion verwendet werden. Um beim Auslösen eines Hotstrings eine Funktion aufzurufen, übergeben Sie die Funktion per Referenz.</p> <p id="z"><strong>Z:</strong> Diese selten verwendete Option setzt den Hotstring-Erkenner jedes Mal zurück, wenn der Hotstring ausgelöst wird. Mit anderen Worten, das Skript wartet auf einen völlig neuen Hotstring und verwirft alles, was Sie zuvor eingegeben haben. Dadurch können unerwünschte Auslösungen von Hotstrings verhindert werden. Schauen Sie sich dazu das folgende Beispiel an:</p> <pre>:b0*?:11:: { Send "xx" }</pre> <p>Wenn Sie mit diesem Beispiel drei aufeinanderfolgende Einsen (111) eingeben, wird der Hotstring zweimal ausgelöst, weil die mittlere 1 sowohl das <em>letzte</em> Zeichen der ersten Auslösung als auch das <em>erste</em> Zeichen der zweiten Auslösung ist. Wenn Sie vor b0 den Buchstaben Z einfügen, müssten Sie vier statt drei Einsen eingeben, um den Hotstring zweimal auszulösen. Mit <strong>Z0</strong> kann diese Option wieder deaktiviert werden.</p> <h2 id="continuation">Lange Ersatztexte</h2> <p>Wenn der Ersatztext eines Hotstrings relativ lang ist, kann er via <a href="Scripts.htm#continuation">Fortsetzungsbereich</a> in mehrere kurze Zeilen aufgeteilt werden, um die Übersichtlichkeit und Wartbarkeit des Skripts zu verbessern. Zum Beispiel:</p> <pre>::text1:: ( Der gesamte Text zwischen der oberen und unteren Klammer wird als direkt geschriebener Text behandelt. Standardmäßig bleibt der Zeilenumbruch (Enter) zwischen der vorherigen und dieser Zeile erhalten. Standardmäßig bleibt die Einrückung (Tabulator) auf der linken Seite dieser Zeile erhalten. )</pre> <p>Unter <a href="Scripts.htm#continuation">Fortsetzungsbereich</a> erfahren Sie, wie Sie dieses Standardverhalten ändern können. Beachten Sie auch, dass ein Fortsetzungsbereich dazu führt, dass der Hotstring standardmäßig den <a href="#T">Text-Modus</a> verwendet. Die einzige Möglichkeit, dies zu überschreiben, besteht darin, bei jedem Hotstring mit einem Fortsetzungsbereich eine gegensätzliche Option anzugeben (z.B. <code>:t0:text1::</code> oder <code>:r:text2::</code>).</p> <h2 id="variant">Kontextabhängige Hotstrings</h2> <p>Mit der <a href="lib/_HotIf.htm">#HotIf</a>-Direktive können bestimmte Hotstrings kontextabhängig gemacht werden. Solche Hotstrings können je nach Bedingung (z.B. Typ des aktiven Fensters) einen anderen Ersatztext senden, eine andere Aktion ausführen oder gar nichts tun. Zum Beispiel:</p> <pre>#HotIf WinActive("ahk_class Notepad") ::bzw::Dieser Ersatztext erscheint nur in Notepad. #HotIf ::bzw::Dieser Ersatztext erscheint in einem anderen Fenster als Notepad.</pre> <h2 id="AutoCorrect">AutoCorrect</h2> <p>Das folgende Skript verwendet Hotstrings zum automatischen Korrigieren von ca. 4700 häufig vorkommenden englischen Rechtschreibfehlern. Mit dem Hotkey <kbd>Win</kbd>+<kbd>H</kbd> können Sie weitere Rechtschreibfehler hinzufügen:</p> <p>Download: <a href="https://www.autohotkey.com/download/AutoCorrect.ahk">AutoCorrect.ahk</a> (127 KB)</p> <p>Autor: <a href="http://www.biancolo.com/blog/autocorrect/">Jim Biancolo</a> und <a href="https://en.wikipedia.org/wiki/Wikipedia:Lists_of_common_misspellings">Wikipedia's Lists of Common Misspellings</a></p> <h2 id="remarks">Bemerkungen</h2> <p><a href="Variables.htm#Expressions">Ausdrücke</a> werden im Ersatztext aktuell nicht unterstützt. Um das zu umgehen, machen Sie solche Hotstrings nicht <a href="#auto">automatisch-ersetzend</a>. Verwenden Sie stattdessen die <a href="lib/Send.htm">Send</a>-Funktion entweder im Körper des Hotstrings oder in Kombination mit der <a href="#X">X-Option (Ausführen)</a>.</p> <p>Um ein zusätzliches Leer- oder Tabulatorzeichen nach einem Ersatztext zu senden, fügen Sie die <a href="misc/EscapeChar.htm">Escapesequenz</a> <code>`s</code> oder <code>`t</code> am Ende des Ersatztextes ein, z.B. <code>:*:bzw::beziehungsweise`s</code>.</p> <p id="ReplaceBrace">Bei einem automatisch-ersetzenden Hotstring, der nicht den <a href="#T">Text</a>- oder <a href="#raw">Raw</a>-Modus verwendet, muss im Ersatztext ein alleinstehendes <code>{</code> oder eines, dem nur Leerraumzeichen vorangestellt sind, mit geschweiften Klammern umschlossen werden, z.B. <code>:*:brace::{{}</code> und <code>:*:space_brace:: {{}</code>. Andernfalls wird es als geschweifte Startklammer für die Funktion des Hotstrings interpretiert, um den <a href="lib/Block.htm#otb">One True Brace (OTB) Style</a> zu unterstützen.</p> <p id="NoMouse">Standardmäßig setzt ein Links- oder Rechtsklick den Hotstring-Erkenner zurück. Mit anderen Worten, das Skript wartet auf einen völlig neuen Hotstring und verwirft alles, was Sie zuvor eingegeben haben (falls das unerwünscht ist, fügen Sie irgendwo im Skript die Zeile <code><a href="lib/_Hotstring.htm">#Hotstring</a> NoMouse</code> ein). Dieses Zurücksetzen-bei-Mausklick-Verhalten ist standardmäßig aktiv, weil jeder Klick üblicherweise die Texteinfügemarke (Textcursor) verschiebt oder den Tastaturfokus auf ein neues Steuerelement/Feld setzt. In solchen Fällen ist es generell wünschenswert: 1) einen Hotstring auch dann auslösen zu können, wenn die <a href="#Question">Fragezeichenoption</a> fehlt; 2) eine Auslösung zu verhindern, wenn Sie nach einem Mausklick etwas eingeben, das zufällig eine gültige Abkürzung aus der vorherigen Eingabe formt.</p> <p id="focus-reset">Der Hotstring-Erkenner prüft jedes Mal, wenn ein Zeichen eingegeben wird, das aktive Fenster und setzt sich zurück, wenn ein anderes als das vorherige Fenster aktiv ist. Wenn sich das aktive Fenster ändert, aber dann das vorherige Fenster wieder aktiv gemacht wird, bevor ein Zeichen eingegeben wurde, wird die Änderung nicht erkannt (aber der Hotstring-Erkenner könnte aus einem anderen Grund zurückgesetzt werden). Sie können den Hotstring-Erkenner auch mit <code><a href="lib/Hotstring.htm#Reset">Hotstring "Reset"</a></code> zurücksetzen.</p> <p>Die interne Variable <strong>A_EndChar</strong> enthält das Endungszeichen, mit dem Sie zuletzt einen nicht-automatisch-ersetzenden Hotstring ausgelöst haben. Wenn kein Endungszeichen erforderlich war (wegen der <a href="#Asterisk">*-Option</a>), ist diese Variable leer. A_EndChar ist nützlich bei der Erstellung von Hotstrings, die die Send-Funktion verwenden oder deren Verhalten davon abhängen soll, welches Endungszeichen Sie eingegeben haben. Mit <code>SendText A_EndChar</code> kann das Endungszeichen selbst gesendet werden (in diesem Fall <a href="lib/Send.htm">SendText</a>, weil das normale Send Zeichen wie !{} nicht korrekt senden würde).</p> <p>Innerhalb von Hotstring-Definitionen müssen nur umgekehrte Häkchen und Semikolons, denen ein Leer- oder Tabulatorzeichen vorangestellt ist, mit einem <a href="misc/EscapeChar.htm">Escapezeichen</a> versehen werden. Alle anderen Zeichen können ohne Escapezeichen angegeben werden, inklusive einzelne Doppelpunkte, sofern ihnen kein Zweifach-Doppelpunkt-Separator vorangestellt ist. Eine vollständige Liste finden Sie unter <a href="misc/EscapeChar.htm">Escapesequenzen</a>.</p> <p>Die Sonderzeichen der <a href="lib/Send.htm">Send-Funktion</a> wie {Enter} werden nur im Ersatztext von <a href="#auto">automatisch-ersetzenden Hotstrings</a> unterstützt (sofern die <a href="#raw">Raw-Option</a> nicht verwendet wird), nicht in der Abkürzung. Geben Sie stattdessen `n für <kbd>Enter</kbd> und `t (oder ein direkt geschriebenes Tabulatorzeichen) für <kbd>Tab</kbd> an (eine vollständige Liste finden Sie unter <a href="misc/EscapeChar.htm">Escapesequenzen</a>). Zum Beispiel würde der Hotstring <code>:*:ab`t::</code> ausgelöst werden, wenn Sie "ab" gefolgt von einem Tabulatorzeichen eingeben.</p> <p>Innerhalb von Hotstring-Definitionen werden Leer- und Tabulatorzeichen als direkt geschriebener Text behandelt. Zum Beispiel würden die folgenden Hotstrings zwei unterschiedliche Ergebnisse erzeugen: <code>::bzw::beziehungsweise</code> und <code>::bzw:: :beziehungsweise</code>.</p> <p>Jede Abkürzung eines Hotstrings darf nicht länger als 40 Zeichen sein. Das Programm warnt Sie, wenn diese Länge überschritten wurde. Die Länge des Ersatztextes ist hingegen auf ca. 5000 Zeichen begrenzt, sofern der <a href="#SendMode">Send-Modus</a> standardmäßig SendInput ist. Diese Einschränkung kann durch die Wahl eines anderen <a href="#SendMode">Send-Modus</a> oder durch die Verwendung von <a href="lib/Send.htm#SendPlayDetail">SendPlay</a> oder <a href="lib/Send.htm#SendEvent">SendEvent</a> entweder im Körper des Hotstrings oder in Kombination mit der <a href="#X">X-Option (Ausführen)</a> beseitigt werden.</p> <p>Die Reihenfolge, in der die Hotstrings definiert werden, bestimmt ihre relative Priorität zueinander. Mit anderen Worten, wenn Ihre Eingabe mehr als einen Hotstring auslösen kann, wird nur der erste im Skript gelistete Hotstring ausgelöst. Siehe auch: <a href="#variant">Kontextabhängige Hotstrings</a>.</p> <p>Jedes von Ihnen durchgeführte Backspacing wird bei der Erkennung von Hotstrings berücksichtigt. Allerdings bewirken die Navigationstasten <kbd>↑</kbd>, <kbd>→</kbd>, <kbd>↓</kbd>, <kbd>←</kbd>, <kbd>Bild↑</kbd>, <kbd>Bild↓</kbd>, <kbd>Pos1</kbd> und <kbd>Ende</kbd>, dass der Hotstring-Erkennungsprozess zurückgesetzt wird. Mit anderen Worten, der Erkennungsprozess wartet auf einen völlig neuen Hotstring.</p> <p>Der Ersatztext könnte auch dann gesendet werden, wenn das aktive Fenster die Tastendrücke des Benutzers ignoriert. Das heißt, der Hotstring wird auch ohne sichtbare Eingabe der Abkürzung ausgelöst. Auch hier können Sie <kbd>Backspace</kbd> drücken, um den letzten Tastendruck rückgängig zu machen (auch wenn Sie den Effekt nicht sehen).</p> <p>Die Funktion eines Hotstrings kann nur dann explizit vom Skript aufgerufen werden, wenn die Funktion benannt wurde. Siehe <a href="#Function">Benannte Funktions-Hotstrings</a>.</p> <p>Hotstrings werden weder überwacht noch während einer blockierten Eingabe durch einen unsichtbaren <a href="lib/InputHook.htm">Input-Hook</a> ausgelöst.</p> <p id="InputLevel">Standardmäßig können Hotstrings nicht durch Tastendrücke ausgelöst werden, die von einem AutoHotkey-Skript erzeugt wurden. Dadurch wird vermieden, dass eine Endlosschleife entsteht, in der sich Hotstrings immer wieder gegenseitig auslösen. Dieses Verhalten kann mit <a href="lib/_InputLevel.htm">#InputLevel</a> und <a href="lib/SendLevel.htm">SendLevel</a> kontrolliert werden. Allerdings verwenden automatisch-ersetzende Hotstrings immer Sendlevel 0 und können daher niemals <a href="lib/_UseHook.htm">Hook-Hotkeys</a> oder Hotstrings auslösen.</p> <p>Die <a href="lib/Suspend.htm">Suspend</a>-Funktion kann vorübergehend alle Hotstrings deaktivieren, außer denen, die Sie explizit ausgeschlossen haben. Für ein gezielteres Aktivieren/Deaktivieren von Hotkeys sollten Sie <a href="lib/_HotIf.htm">#HotIf</a> verwenden.</p> <p>Hotstrings können dynamisch erstellt werden, z.B. mit der <a href="lib/Hotstring.htm">Hotstring</a>-Funktion, die auch in der Lage ist, bestehende Hotstrings einzeln zu modifizieren, zu deaktivieren oder zu aktivieren.</p> <p>In bestimmten Fällen ist <a href="lib/InputHook.htm">InputHook</a> flexibler als Hotstrings. Zum Beispiel sind damit unsichtbare Tastendrücke im aktiven Fenster (z.B. eines Videospiels) möglich. Außerdem werden zeichenlose Endungstasten wie <kbd>Esc</kbd> unterstützt.</p> <p>Jedes Skript, das Hotstrings enthält, verwendet automatisch den <a href="lib/InstallKeybdHook.htm">Tastatur-Hook</a>.</p> <p>Hotstrings verhalten sich in einigen Punkten genauso wie Hotkeys:</p> <ul> <li>Sie werden von der <a href="lib/Suspend.htm">Suspend</a>-Funktion beeinflusst.</li> <li>Sie berücksichtigen <a href="lib/_MaxThreads.htm">#MaxThreads</a> und <a href="lib/_MaxThreadsPerHotkey.htm">#MaxThreadsPerHotkey</a> (aber nicht <a href="lib/_MaxThreadsBuffer.htm">#MaxThreadsBuffer</a>).</li> <li>Skripte, die Hotstrings enthalten, sind automatisch <a href="Scripts.htm#persistent">persistent</a>.</li> <li>Nicht-automatisch-ersetzende Hotstrings erzeugen beim Auslösen einen neuen <a href="misc/Threads.htm">Thread</a>. Sie aktualisieren auch interne Hotkey-Variablen wie <a href="Variables.htm#ThisHotkey">A_ThisHotkey</a>.</li> </ul> <p>Bekannte Einschränkung: Auf einigen Systemen können Hotstrings in Java-Anwendungen die Eingabe diakritischer Buchstaben (über tote Tasten) stören. Um das zu umgehen, schalten Sie <a href="lib/Suspend.htm">Suspend</a> vorübergehend ein (Suspend deaktiviert alle Hotstrings).</p> <h2 id="Function">Benannte Funktions-Hotstrings</h2> <p>Wenn die Funktion eines Hotstrings aufgerufen werden soll, ohne den Hotstring selbst auszulösen, können Sie einem oder mehreren Hotstrings eine benannte <a href="Functions.htm">Funktion</a> zuweisen, indem Sie diese einfach unterhalb des Doppelpunktpaares definieren. Zum Beispiel:</p> <pre><em>; Zeigt auch die Implementierung von Groß-/Kleinschreibung-Anpassung.</em> :C:BZW:: <em>; Alles großgeschrieben.</em> :C:Bzw:: <em>; Nur den ersten Buchstaben großgeschrieben.</em> : :bzw:: <em>; In einer beliebig anderen Kombination geschrieben.</em> bzw_an_schreibung_anpassen(hs) <em>; hs wird den Namen des Hotstrings enthalten, der die Funktion ausgelöst hat.</em> { if (hs == ":C:BZW") Send "BEZIEHUNGSWEISE" else if (hs == ":C:Bzw") Send "Beziehungsweise" else Send "beziehungsweise" } </pre> <p>Wenn die Funktion <em>bzw_an_schreibung_anpassen</em> explizit vom Skript aufgerufen wird, muss dem ersten Parameter (hs) ein Wert übergeben werden.</p> <p><a href="Hotkeys.htm">Hotkeys</a> können auch auf diese Weise definiert werden. Mehrere Hotkeys oder Hotstrings können vertikal gestapelt werden, um die gleiche Funktion aufzurufen.</p> <p>Zwischen dem Hotstring und dem Funktionsnamen dürfen nur Leerraumzeichen oder Kommentare stehen.</p> <p>Die Benennung einer Funktion begünstigt auch die Selbstdokumentation von Hotstrings, wie im obigen Code, wo der Funktionsname den Hotstring beschreibt.</p> <p>Mit der <a href="lib/Hotstring.htm">Hotstring</a>-Funktion kann einem Hotstring auch eine Funktion oder ein Funktionsobjekt zugewiesen werden.</p> <h2 id="Helper">Hotstring Helper</h2> <p>Schauen Sie sich das <a href="lib/Hotstring.htm#ExHelper">erste Beispiel</a> im Beispielabschnitt der <a href="lib/Hotstring.htm">Hotstring</a>-Seite an, welches für Vielnutzer von Hotstrings nützlich sein kann. Drücken Sie <kbd>Win</kbd>+<kbd>H</kbd> (oder einen anderen Hotkey Ihrer Wahl), um den aktuell markierten Text zu einem Hotstring zu machen. Wenn Sie z.B. in einem Textverarbeitungsprogramm "beziehungsweise" markieren und <kbd>Win</kbd>+<kbd>H</kbd> drücken, wird das Skript Sie auffordern, eine Abkürzung für diesen Text einzugeben (z.B. bzw), und dann den neuen Hotstring in das Skript einfügen und aktivieren.</p> </body> </html>