Mit „Autohotkey“ habe ich mich schon mehrfach beschäftigt. Das war jedoch meist sehr speziell. Aus konkretem Anlass habe ich eine Anleitung für Einsteiger geschrieben, wie damit schlaue Textbausteine erzeugt und verwaltet werden können.
Weil ich selbst weiß, wie doof man sich gelegentlich fühlt, wenn Kenner ein geniales Produkt beschreiben, versuche ich mich nachfolgend mit einer „Einsteiger-Anleitung“.
zur Verbesserung ist willkommen, denn da ich selbst schon ein bisschen Ahnung habe, übersehe ich eventuell selbst schon relevante Details, die zum „Showstopper“ werden können.
Ziel: Eine „Autohotkey-Entwicklungsumgebung“ und Textbausteinverwaltung damit. Die erforderlichen Programme werden alle mit Download-Adresse vorgestellt, die Beispieldaten stehen am Ende in einer herunterladbare Datei, mit der direkt gearbeitet werden kann. Eine kompkate Zusammenfassung ist das nachfolgende Video. Ich empfehle dennoch die aufmerksame Lektüre des Tutorials… .
Was wird benötigt:
- Der AutoHotkey-Installer. Bitte nur da das Installationsprogramm herunter laden. Er wird von dieversen Zeitschriften, etc. zwar ebenfalls angeboten, dort sind die Daten jedoch oft veraltet oder werden mit fragwürdigen Zusätzen versehen.
- Auf der gleichen Seite gibt es weiter unten einen Verweis auf „Help files in other languages“, da ist „German (Deutsch)“ von Interesse. Der Link führt zu GitHUB, dort gibt es die aktuelle deutsche Hilfe als ZIP-Datei.
- Für die Erstellung der Textbausteine ist ein Texteditor erforderlich. Grundsätzlich ist jeder Editor geeignet, der mit Text-Dateien im UTF-8-Format umgehen kann. Es gibt das „Komplettpaket“ SciTE4AutoHotkey, das für AutoHotkey vorkonfiguriert ist. Es ist zwar schon etwas älter, jedoch ein gutes Rundum-Sorglos-Paket, weshalb ich es für diese Anleitung verwende. Bitte das
Portable.zip
herunter laden.
Word, Open/FreeOffice oder vergleichbare Programme sind ungeeignet.
- Tipp
-
Im AutoHotkey-Forum gibt es einen Beitrag, der sich mit der Konfiguration von Editoren beschäftigt.
Installieren und Auspacken
- Zuerst wird der Installer für Autohotkey gestartet. Den vorgeschlagenen Installationspfad unbedingt ändern. Im Windows-Programm-Verzeichnis gelten eingeschränkte Rechte, die für die nachfolgende Beschreibung „Showstopper“ sind. Außerdem werden dann die Dateien „kreuz und quer“ über den Rechner verteilt, was es schwierig bis unmöglich macht, die eigenen Einstellungen auf einen anderen Rechner zu portieren. Vorzugsweise wird das Programm in den
Dokumente
-Ordner und dort in ein UnterverzeichnisAutohotkey
installiert, damit dieses Verzeichnis in der persönlichen Datensicherung mit drin ist. Die Installation wird mitExit
beendet. - Die ZIP-Pakete für die Hilfe und den Editor werden jetzt in dieses Verzeichnis kopiert, weil es das Entpacken mit den richtigen Dateipfaden vereinfacht:
- Die deutsche Hilfe (
AutoHotkeyHelp<em>DE.zip
) wird ohne Unterordner in dieses Verzeichnis entpackt. Der Entpacker wird wahrscheinlich ein Unterverzeichnis vorschlagen, dass einfach aus dem Pfad gelöscht wird. Die Warnung, weil die bereits vorhandene (englische) Hilfe den gleichen Datei-Namen hat, wird ignoriert. Wir wollen es deutsch. - Der Editor (
SciTe4AHKxxxx<em>Portable.zip
) soll in einem UnterordnerSciTE
liegen. Der Entpacker wird einen komplizierteren Pfad (den aktuellen verlängert um den Dateinamen) vorschlagen. Den „Dateinamen“ einfach entfernen, denn aus dem Paket wird ein OrdnerSciTE
entpackt.
Einrichten
Im SciTE
-Odern das Programm SciTE.exe
starten. Das ist (noch) englisch. Damit der Editor deutsch spricht, das Menü Options
aufklappen und Open <em>config.properties
anklicken. Es öffnet sich eine Datei mit der Zeile
locale.properties=locales\English.locale.properties
Einfach English
mit Deutsch
ersetzen (keine Leerzeichen, genau so geschrieben). Diese Datei speichern ( STRG
+ S
oder Menü File
→ Save
) und das Programm schließen. Beim nächsten Start wird das Menü deutschsprachig sein.
Optionen
→ Benutzereinstellungen öffnen
dauerhaft einstellen. Details s. nebenstehendes Bild.
Damit die Unterstützung für Autohotkey perfekt wird, sollte noch die Datei AutoHtokey.chm
aus dem übergeordneten Verzeichnis („Autohotkey“) in das „SciTE“-Verzeichnis kopiert werden (mit gedrückter STRG
-Taste die Datei mit der Maus auf den SciTE
-Ordner ziehen).
Der erste Befehl
Damit das Ändern und anlegen von Textbausteinen möglichst bequem geht, ist ein Tastenbefehl nützlich. Weil sich das ebenfalls mit AutoHotkey erledigen lässt, wird das der erste Befehl in der „Textbaustein-Datei“. Ich habe mir dafür die Tastenkombination STRG
+ WIN
+ 0
ausgesucht, weil die sehr wahrscheinlich von sonst keinem anderen Programm verwendet wird.
Dafür wird der Editor (SciTE.exe im Verzeichnis SciTE) gestartet und in die leere Datei dieser Text geschrieben:
; AHK datei editieren STRG WIN 0
^#0::
Run %A_ScriptDir%\SciTE\SciTE.exe %A_ScriptDir%\AutoHotkey.ahk ;
return
Dieser Text wird im „Autohotkey“-Verzeichnis mit dem Namen autohotkey.ahk
gespeichert.
Unter Windows ist die Schreibweise der Datei (groß/klein) unerheblich. In anderen Betriebsystemen ist die Schreibweise relevant. Falls der Dateiaufruf scheitert, zuerst die Schreibweise in der Datei und den Dateinamen vergleichen!
Oben in der Menü-Leiste des Editors gibt es einen grüne „Wanze“ (Debug, F7
). Da mal drücken! Idealerweise erscheint nun unten rechts ein kleiner grüner Knopf mit einem „H“ drauf. Dann ist alles in Ordnung. Es kann auch eine Fehlermeldung erscheinen, die auf einen Fehler in einer Zeile hinweist. Für die Fehlersuche gibt es weiter unten ein paar Hinweise.
Wenn alles glatt lief, geht es jetzt an die …
Textbausteine
Wir beginnen mit einem „Klassiker“, die „freundlichen Grüße“. Mit der Befehlszeile
:*:mfg::Mit freundlichen Grüßen{Enter}
lässt sich das elegant in allen Programmen erledigen, sobald das Skript aktualisiert und aktiviert wurde. Die Eingabe der drei Buchstaben mfg
wird sofort in „Mit freundlichen Grüßen“ umgewandelt und mit einem Zeilenvorschub abgeschlossen. Womit sich das Wort in geschwungenen Klammern bereits erklärt haben dürfte. Die Notation für besondere Tasten wird in der Hilfedatei gut erklärt. F1
im Editor drücken und auf der ersten Seite „Hotkeys“ anklicken.
Die „automatische Auslösung“ wird mit dem :<em>::
(zwei Doppelpunkte am Ende!) eingeleitet. Das eingegebene Kürzel wird dabei wieder entfernt.
- Tipp
-
Damit es keine Überraschungen beim normalen Schreiben gibt, fangen meine spezielleren Kürzel meistens mit
#
an1. „#das“ ist unkritisch, ohne „#“ würden beim Schreiben wunderliche Dinge passieren.
Damit das Kürzel expandiert wird, muss die Datei gespeichert werden. Dann – zum Ausprobieren – die Tasten F7
(Fehlersuche) und anschließend (wenn keine Fehler) F5
drücken oder den „Play“-Knopf, der nach klicken auf die „Wanze“ erscheint.
In einem Textbaustein kann zusätzlich zur Ausgabe von Text der Eingabecursor gesteuert werden. Ein (einfaches) Beispiel:
:*:#sdh::+{Home}Sehr geehrte Damen und Herren,{Enter}{Enter}
Der Eingabe-Cursor springt von der aktuellen Position auf den Zeilenanfang und markiert dabei vorhandenen Text, der mit der Ausgabe überschrieben wird. Das erspart ggf. das vorherige Löschen eines automatischen Textanfangs („Sehr geehrte“) im Mailprogramm.
+{Home}
=Shift
+Pos1
-
In allen gängigen Programmen markiert das einen Textbereich vom Cursor zum Zeilenanfang-
Textbausteine lassen sich personalisieren, indem angehalten und auf eine Eingabe gewartet wird:
Befehl | Was bedeutet das |
---|---|
:<em>:#sg:: | Das Kürzel „#sg“ eingeben |
sendInput, +{Home}Sehr geehrte | Ab Zeilenanfang wird „Sehr geehrte“ ausgegeben |
Input, tmp, V, {Enter} | auf eine sichtbare Eingabe warten, die mit {Enter} beendet wird |
sendInput, {up}{End},{Enter}{Enter} | Den Cursor eine Zeile hoch und ans Zeilenende bewegen dort ein Komma und zweimal {Enter} ausgeben |
Return | Textbaustein („Makro“) beenden |
Die Hilfe für die Befehle wird mit
F1
geöffnet, wenn der Cursor darauf steht.
Der vorige Textbaustein lässt sich problemlos „spezialisieren“, wenn beispielsweise nach dem letzten sendInput
weitere folgen, mit denen ein kompletter Text ausgegeben wird.
:*:#obst::
sendInput, +{Home}Sehr geehrte
Input, tmp, V, {Enter}
sendInput, {up}{End},{Enter}{Enter}
sendInput, frisch eingetroffen: Äpfel aus Spanien.{Enter}Ab sofort, solange Vorrat reicht.{Enter}
sendInput, Wir freuen uns auf Ihren Besuch{!}{Enter}{Enter}Mit freundlichen Grüßen{Enter}{Enter}Obsthandlung Frisch OHG
Return
sendInput
simuliert die Tastatureingabe. Daher ist es völlig egal, wie der Text in der Datei formatiert ist oder wie viele Befehlszeilen dort stehen. Es wird nur ausgegeben, was hinter dem Befehl steht, der nächste fügt sich nahtlos an (kein Zeilenvorschub, Leerzeichen, o.ä.). Weil es Änderungen (und Fehlersuche) vereinfacht, sollten lange Texte trotzdem in mehrere Ausgaben aufgeteilt werden.
Sogar Hervorhebungen sind möglich
Einige Programme beherrschen Auszeichungen wie beispielsweise fett, kursiv, Überschriften, etc. Textbausteine können so angelegt werden, dass sie statt nur den Text „formatierten Text“ ausgeben, wenn das Programm damit etwas anfangen kann.
Dafür ist etwas mehr Vorarbeit und Zubehör erforderlich, damit ein verbesserter Zugriff auf die Zwischenablage möglich ist. Das wird mit dem Zusatzpaket WinClip erreicht. Geschrieben mit Autohotkey, werden die im ZIP enthaltenen Dateien einfach in das Autohotkey
-Verzeichnis entpackt.
Damit die Zwischenablage von allen nachfolgenden Befehlen genutzt werden kann, werden nach dem Auspacken der ZIP-Datei diese zwei Zeilen möglichst an den Anfang der Datei geschrieben (die Reihenfolge ist wichtig!):
# Include WinClipAPI.ahk
# Include WinClip.ahk
Sobald das eingefügt ist, funktioniert das nächste Skript, das wie der Vorgänger einen größeren Textblock ausgibt – jedoch wahlweise (übertrieben, zum abgucken) formatiert. Als „i-Tüpfelchen“ wird noch die Anrede in einem Formualr abgefragt:
:*:#fobst::
Unformatiert := "Sehr geehrte%a%,`r`n`r`nheute eingetroffen: Äpfel aus Spanien`r`nAb sofort, solange Vorrat reicht.`r`nWir freuen uns auf Ihren Besuch!`r`n`r`nMit freundlichen Grüßen`r`n`r`nObsthandung Frisch"
Formatiert := "<h4>Sehr geehrte%a%,</h4><p><u>heute eingetroffen</u>: <b>Äpfel aus Spanien</b><br/>Ab sofort, solange Vorrat reicht.</p><p><i>Wir freuen uns auf Ihren Besuch!</i></p><p><br/>Obsthandlung Frisch</p>"
InputBox, Anrede, "Anrede vervollständigen", Sehr geehrte, ,400,130
if Errorlevel {
Anrede := " Damen und Herren"
}
else {
Anrede := StrReplace(Anrede, "Herr", "r Herr", count)
Anrede := StrReplace(Anrede, "Frau", " Frau", count)
}
Unformatiert := StrReplace(Unformatiert, "%a%", Anrede, count)
Formatiert := StrReplace(Formatiert, "%a%", Anrede, count)
CBackup := ClipboardAll
WinClip.Clear(Unformatiert)
WinClip.SetHTML(Formatiert)
WinClip.Paste()
WinClip.Clear()
Clipboard := CBackup
CBackup =
return
Befehl | Was bedeutet das |
---|---|
:<em>:#fobst:: | Mit dem Kürzel „#vobst“ wird der Textbaustein aufgerufen |
Unformatiert := "…" | Der Text für Programme, die keine Formatierung anzeigen können Bitte beachten: • der Doppenpunkt vor dem „=“, • statt {Enter} muss ` rn ` benutzt werden |
Formatiert := "…" | Formatierter Text in HTML-Schreibweise |
InputBox … | Erzeugt eine Eingabebox für den Namen |
if Errorlevel | Wenn „Cancel“ geklickt wird, … |
Anrede := "…" | …, wird eine allgemeine Anrede erzeugt. |
else | Andernfalls, … |
Anrede := StrReplace … | …, wird ein Leerzeichen und bei Herr noch das „r“ für „gehehrter“ ersetzt |
Unformatiert := StrReplace … | Der Platzhalter %a% wird mit der Anrede ersetzt |
Formtiert := StrReplace … | dito. |
CBackupg := ClipboardAll | Die aktuelle Zwischenablage wird in eine Variable gerettet |
WinClip.Clear〈Unformatiert〉 | Die Ablage wird mit dem reinen Text ersetzt |
WinClip.SetHTML〈Formatiert〉 | Zusätzlich wird der HTML-formatierte Text in die Ablage gelegt |
WinClip.Paste〈〉 | Die Zwischenablage wird ausgegeben („Einfügen“, STRG +V ) |
WinClip.Clear〈〉 | Die Zwischenablage wird geleert |
Clipboard := CBackup | Die Ablage wird wieder mit dem vorherigen Inhalt gefüllt |
CBackup := | Die Puffer-Variable wird geleert |
Return | Fertig. |
Die Variante mit der Zwischenablage arbeitet signifikant schneller, weil statt der Ausgabe einzelner Buchstaben (→ sendInput = „wie von Tastatur eingegeben“) ein kompletter Text in einem Zug eingefügt wird.
In der Beispieldatei gibt es den Textbaustein „#tobst“, der ohne „winclip“-Erweiterung reinen Text über die Zwischenablage ausgibt.
Wie fange ich an?
Für den Einstieg kann die Beispieldatei genommen werden, in der alle Beispiele dieser Seite enthalten sind. Mittels „kopieren und ändern“ können schnell eigene Textbausteine erzeugt werden. Das Schema:
- Geeignetes Beispiel als Vorlage aussuchen und in die Zwischenablage kopieren
- An geeigneter Stelle in die Datei kopieren, darauf achten, dass kein vorhandener Baustein beschädigt wird
- Das Aufruf-Kürzel anpassen
- Text anpassen
- Datei speichern
- Das Script mit der „Wanze“ testen, wenn alles funktioniert, den Editor schließen
Wenn AutoHotkey.exe gestartet war, muss jetzt per „Rechtsklick“ auf den grünen „H“-Knopf unten rechts → „Reload“ das geänderte Skript neu geladen werden.
- Wie schon weiter oben angerissen:
-
Es lässt sich vorab testen, ob alles funktioniert. Dafür die Taste
F7
im Editor drücken oder auf die „grüne Wanze“ in der Bildleiste klicken. Bei einem Fehler erscheint eine Meldung, in welcher Zeile ein Fehler gefunden wird.
Es wird immer nur ein Fehler angezeigt. Das kann ein Punkt zu viel oder zu wenig sein, manchmal ist der Fehler auch in der vorangegangenen Zeile. Die Nerven behalten.
Für einen Testlauf kann der „Play“-Knopf gedrückt werden . Dann stehen alle Befehle der Datei zur Verfügung, so lange der Editor auf ist. Damit es ohne geht, genügt ein Doppelklick auf autohotkey.exe
. Dann läuft das Programm bis zum Herunterfahren des Rechners oder es wird – mit Rechtslick auf das Icon – beendet.
Autostart
Wenn AutoHotkey mit dem Start des Rechners sofort verfügbar sein soll, lässt sich das leicht einrichten:
- Im Autohotkey-Verzeichnis mit Rechtsklick auf
autohotkey.exe
eine → „Verknüfung erstellen“ - Mit
WIN
+r
die Kommando-Zeile öffnen - Mit dem Befehl
shell:startup
den „Autostart“-Ordner öffnen - In diesen ordner die erzeugte Verknüpfung verschieben
Beim Nächsten Start des Rechners wird AutoHotkey direkt geladen.
Alternativ kann die erzeugte Verknüpfung auch einfach auf den Desktop gezogen werden. AutoHotkey startet dann erst, wenn es damit gestartet wird.
Kopie für den Zweitrechner
Die Übertragung dieser Autohotkey-Installation ist denkbar einfach: Das gesamte Verzeichnis wird 1:1 auf den anderen Rechner kopiert. Lediglich die Verknüpfung für den Autostart bzs. Programmstart muss passend zur neuen Umgebung neu erzeugt werden. Eine „Sicherung“ des aktuellen Standes in einer ZIP- oder 7z-Datei ist nützlich, wenn z.B. ein Update von Teilen unerwartete Seiteneffekte hervorruft. In einem Archiv transportiert sich die Entwicklungs- und Arbeitsumgebung außerdem viel einfacher.
Das Ergebnis
Wie eingangs versprochen, gibt es die Beispiele als fertige Datei zum Herunterladen, eingepackt in eine ZIP-Datei. Wenn es noch keine autohotkey.ahk
gibt, kann die Datei autohotkey-demo.ahk
entsprechend umbenannt werden.
ZIP-Archiv vom 23.02.2021, 17:03 Uhr, Größe: 1.29 KB
- Tipp
-
Wenn die Datei in
autohotkey.ahk
umbenannt in dasAutohotkey
-Verzeichnis kopiert wird, kann sofort damit herumprobiert werden. Danach einfach „autohotkey.exe“ doppelt anklicken.
Zu guter Letzt
Die Hilfe-Datei ist gleichzeitig ein ziemlich brauchbares Tutorial. Weil AutoHotkey viel mehr als nur „Textbausteine einfügen“ kann, lohnt es sich durchaus, sich etwas intensiver damit auseinander zu setzten. So lassen sich probemlos Befehle erstellen, die das aktuelle Datum, die Kalenderwoche, ein Termin in 14 Tagen ausgeben lassen, oder Formulare automatisiert befüllt werden.