[[Vorlage(Getestet, focal)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Programme_starten:] }}} [[Inhaltsverzeichnis()]] [[Bild(./autokey_logo.png, 48, align=left)]] [github:autokey/autokey:AutoKey] {en} ist quasi das Linux-Gegenstück zur quelloffenen Windows-Software [wikipedia:AutoHotkey:]. Beiden Programmen liegt die Idee zugrunde, die Eingabe von sich wiederholenden Textbausteinen und die Ausführung beliebiger Aktionen per Tastenkürzel zu vereinfachen, um eintönige Arbeitsschritte zu automatisieren und hierdurch Fehler zu vermeiden. Wer innerhalb einer Textverarbeitung wie z.B. [:LibreOffice:] einmal mit der AutoText-Funktion gearbeitet hat, kann die Möglichkeiten des Programms schon gut einschätzen. Anders als bei einer rein anwendungsbezogenen Lösung können mit AutoKey jedoch Textbausteine und Aktionen einheitlich und systemweit, also z.B. für Textverarbeitung, E-Mail-Programm und Webbrowser gleichzeitig definiert werden. Ein wesentlichen Unterschied zwischen AutoKey und Autohotkey ist die verwendete Skriptsprache: Autohotkey nutzt die eigene, sehr weit entwickelte Skriptsprache AHKScript. Durch die Integration von [:Python:] gehen die Skriptmöglichkeiten in Autokey deutlich über AHKScript hinaus. In dem inzwischen nicht mehr weiterentwickelten Autokey 0.90.4 (ist noch in den Quellen von Bionic) wird als Skriptsprache noch Python 2, in autokey-py3 das aktuelle Python 3 verwendet. Die Benutzeroberfläche ähnelt einer frühen Version der kommerziellen Windows-Software [http://www.phraseexpress.com/de/ PhraseExpress] {de}, die ebenfalls verspricht, die eigene Produktivität zu steigern. Einziger Wermutstropfen: die Konfiguration ist ausschließlich auf Englisch. Mit Hilfe dieses Artikels sollte der Einsatz dieses praktischen Werkzeugs auch ohne Englisch-Studium gelingen. = Installation = == aus den offiziellen Paketquellen == [[Bild(Wiki/Icons/synaptic.png, 48, align=right)]] Autokey kann direkt aus den offiziellen Paketquellen installiert [1] werden, das benötigte Paket hängt vom eingesetzten Desktop ab: GNOME, MATE, Xfce, LXDE: {{{#!vorlage Paketinstallation autokey-gtk, universe }}} KDE, LXQt: {{{#!vorlage Paketinstallation autokey-qt, universe }}} == aktuelle Version aus dem Git-Repository == Die aktuelle stabile Version kann über die [github:autokey/autokey:Projektseite] {en} installiert werden. Sie ist kein Bestandteil der offiziellen Paketquellen, muss im Quelltext herunterladen und dann installiert werden. {{{#!vorlage Befehl sudo apt install python3-pip python3-venv git pip3 install --user git+https://github.com/autokey/autokey }}} Anschließend liegen die ausführbaren Dateien unter '''~/.local/bin'''. [[Vorlage(Fremd, Software)]] Eine bestehende Autokey-Installation mit Phrasen und Skripten kann ohne Probleme weiterverwendet werden. Da Python 3 originär Unicode verwendet, hat autokey-py3 für deutschsprachige Nutzer den entscheidenden Vorteil, dass es Umlaute von Hause aus unterstützt. Diese lassen sich auch in Skripten nutzen (z.B. `keyboard.send_keys ("Unprätentiöser Text mit Umlaut")`), was früher dazu geführt hat, dass die Tastatureingabe hing und Autokey manuell beendet werden musste. = Bedienung = Anschließend kann das Programm bei Ubuntu-Varianten mit einem Anwendungsmenü über den Eintrag ''"Zubehör -> AutoKey"'' gestartet [2] werden. [[Bild(./autokey_config.png, 350, align=right)]] == Einstellungen = Nach dem Aufruf des Programms öffnet sich ein Fenster, in dem man das gewünschte Verhalten konfigurieren kann (siehe Abbildung rechts). Unter ''"My Phrases"'' sind bereits Einträge für Textbausteine wie etwa ein Adressblock enthalten, während ''"Sample Scripts"'' Funktionen wie das automatische Einfügen eines Datums zur Verfügung stellen. Die folgenden Beispiele sollen zeigen, wie einfach sich AutoKey nutzen lässt. === Beispiele === Beispiel 1: Adresse (als Textbaustein) einfügen 1. unter ''"My Phrases -> Addresses -> Home Address"'' die eigenen Adressdaten hinterlegen 1. das Textkürzel für den Textbaustein ist bereits eingetragen und lautet `adr` 1. Speichern Nun wird jede Eingabe von `adr` + [[Vorlage(Tasten, space)]] (Leertaste) automatisch durch die eigene Adresse ersetzt. {{{#!vorlage Hinweis Die Taste [[Vorlage(Tasten, backspace)]] ermöglicht weiterhin die Verwendung des Kürzels als Text, sprich macht die Ersetzung rückgängig. }}} Beispiel 2: Datum (per Skript) einfügen 1. unter ''"Sample Scripts -> Insert Date"'' befindet sich bereits eine entsprechende Funktion 1. nun definiert man als ''"Abbreviation"'' beispielsweise das Textkürzel `date` 1. Speichern Ab jetzt wird jede Eingabe von `date` + [[Vorlage(Tasten, space)]] automatisch durch das aktuelle Datum ersetzt (z.B. `Di 25. Okt 20:47:07 CEST 2011`) {{{#!vorlage Hinweis Im Unterschied zu Beispiel 1 lässt sich die Ersetzung per Skript __nicht__ mit [[Vorlage(Tasten, backspace)]] rückgängig machen. }}} Wenn die Ausgabe zu genau ist, bearbeitet man die Funktion ''"Insert Date"'' und ändert die Zeile: {{{ output = system.exec_command("date") }}} in {{{ output = system.exec_command("date[mark] +%Y-%m-%d[/mark]") }}} Nun erhält man nur das Datum (in der neuen Schreibweise). Mehr Informationen enthält die [:man:Manpage] zum Befehl `date`. Beispiel 3: Anmeldung bei ubuntuusers.de (oder einer anderen Internetseite) auf Knopfdruck. Dazu legt man sich folgenden Textbaustein an: {{{ BENUTZERNAMEKENNWORT }}} wobei `BENUTZERNAME` und `KENNWORT` entsprechend angepasst werden müssen (die anderen Bestandteile bitte exakt so übernehmen!). Dann noch ein Tastenkürzel einstellen und speichern. ''"Login"'' auf ubuntuusers.de anklicken, Tastenkürzel drücken – fertig. {{{#!vorlage Warnung Das Kennwort wird im Klartext in der Datei '''~/.config/autokey/autokey.bin''' gespeichert. Daher sollte man die [:Rechte:] für diese Datei bzw. den Ordner '''~/.config/autokey/''' so setzen, dass niemand außer dem Besitzer selbst Zugriff darauf hat. }}} === Weitere Möglichkeiten === Alle Einträge unter ''"My Phrases"'' und ''"Sample Scripts"'' können über die rechte Maustaste [[Vorlage(Tasten, rmb)]] bearbeitet werden. Dazu zählen z.B. das Umbenennen, das Zusammenfassen in Gruppen oder das Entfernen von Einträgen. Jeder Textbaustein (und jedes Skript) besitzt drei Kriterien: * ''"Abbreviation"'' - wörtlich die Abkürzung, also das Textkürzel für den Textbaustein oder das Skript * ''"Hotkey"'' - optionales Tastenkürzel * ''"Window Filter"'' - innerhalb welcher Programme aktiv? (Voreinstellung: alle) Falls man mal ein Textkürzel vergessen hat: mit [[Vorlage(Tasten, ctrl+f7)]] lassen sich die eigenen Textbausteine auch ohne Kenntnis des Kürzels einfügen. Skripte werden hier nicht aufgeführt. Zwei der enthaltenen Skripte machen das Leben mit AutoKey noch leichter: * ''"Phrase from selection"'' - legt einen neuen Textbaustein aus markiertem Text an. * ''"Abbreviation from selection"'' - legt einen neuen Textbaustein aus markiertem Text an und fragt anschließend das Textkürzel ab. In beiden Fällen ist es sinnvoll, zuerst ein Tastenkürzel (Hotkey) für die Funktion zu vergeben und zu speichern, bevor man dann Text markiert und das Skript via Hotkey aufruft. Wer sich intensiver mit Skripten beschäftigen möchte, muss leider [:Python:] lernen. Was sich eher später als früher, aber definitiv auszahlt. == Panel-Symbol == Beim Schließen des Einstellungsfensters bleibt AutoKey im Hintergrund aktiv und kann über das Symbol [[Bild(./autokey_icon.png, 18)]] im Benachrichtigungsfeld des Panels verwendet werden. Ein Linksklick [[Vorlage(Tasten, lmb)]] auf das Symbol öffnet ein kleines Fenster, [[Bild(./autokey_abbreviation.png)]] in dem man das Kürzel des Textbausteins eingeben kann. Ein Rechtsklick [[Vorlage(Tasten, rmb)]] auf das Symbol öffnet ein Menü, in dem man mit * ''"Enable Expansions"'' - das Programm vorübergehend deaktiviert (oder wieder aktiviert) * ''"Configure"'' - das Einstellungsfenster öffnet (siehe oben) * ''"Remove Icon"'' - das Panel-Symbol ausblenden kann (siehe Abschnitt [#Unity Unity] weiter unten) * ''"Beenden"'' - das Programm endgültig schließt = Konfiguration = [[Bild(./autokey_preferences.png, 250, align=right)]] Um AutoKey nach der Anmeldung automatisch zu starten, wählt man im Programmfenster ''"Edit -> Preferences"'' und aktiviert ''"Automatically start Autokey at login"''. Mit den weiteren Möglichkeiten kann sich je nach Geschmack beschäftigen. Dabei hilft die unten genannte englische Dokumentation weiter. Alle Einstellungen werden im Ordner '''~/.config/autokey/''' gespeichert. = Problembehebung = == Tastenkürzel == Leider gibt es ein generelles Problem speziell bei Tastenkürzeln (Hotkeys): die verschiedenen Desktop-Umgebungen wie die [:GNOME_Shell:] oder [:KDE:KDE SC] und viele Programme verwenden eigene Tastenkürzel. So kann es passieren, dass diese mit eigenen AutoKey-Tastenkürzeln kollidieren oder AutoKey sich gar nicht mehr nutzen ließ. Prinzipiell müsste man also zuerst alle verwendeten Tastenkürzel kennen, bevor man eigene mit AutoKey anlegt. Ein möglicher Ausweg ist, Tastenkürzel mit einer Programmangabe (''"Window Filter"'') zu kombinieren, um Problemen vorzubeugen. == Vertauschte Zeichen == In einzelnen Programmen (etwa in [:LibreOffice:]) kann es beim Einfügen von Textbausteinen zu Vertauschungen von Zeichen kommen. Im obigen [#Beispiele Beispiel] der Datumseingabe wird dann etwa das Datum `19-11-2013` zu `20113--119` entstellt. Dieses Problem ist darauf zurückzuführen, dass das jeweilige Programm die Tastatureingaben von AutoKey nicht schnell genug verarbeiten kann. Werden Pausen zwischen den einzeln gesendeten Zeichen eingefügt, funktioniert AutoKey problemlos. Bezogen auf das Beispiel schafft ein kurzes Skript Abhilfe: Hier werden die Datumsbestandteile wie Tag/Monat/Jahr zunächst zwischengespeichert und zwischen jedem Einfügevorgang wird eine kurze Pause eingelegt, welcher für den Benutzer nicht wahrnehmbar ist. {{{ output_y = system.exec_command("date +%Y") output_m = system.exec_command("date +%m") output_d = system.exec_command("date +%d") keyboard.send_keys(output_d + "-") time.sleep(0.01) keyboard.send_keys(output_m + "-") time.sleep(0.01) keyboard.send_keys(output_y) }}} Hinweis: Da das Datum keine Umlaute enthält, funktioniert das Skript problemlos unter beiden Versionen von AutoKey. Sollen in Skripten auch Umlaute verwendet werden, empfiehlt sich die Verwendung von Autokey-py3. = Alternative Texpander = Eine mögliche Alternative kann [https://github.com/leehblue/texpander Texpander] {en} sein. Siehe [https://leehblue.com/ubuntu-text-expander/ Texpander – Text Expander For Linux] {en}. = Links = * Projektseite: [github:guoci/autokey-py3:Autokey-py3] {en} (Python 3) * Dokumentation: * [https://autokey.github.io/index.html API Dokumentation] {en} * [github:autokey/autokey/wiki:Autokey Wiki] {en} * [wikipedia_en:Autokey:AutoKey] Eintrag im englischen Wikipedia * [https://www.linux-community.de/ausgaben/linuxuser/2012/08/textbausteine-einfuegen-und-aktionen-automatisieren-mit-autokey/ Wie von Geisterhand - Textbausteine einfügen und Aktionen automatisieren mit Autokey] {de} - Linux User, 08/2012 * [http://saravananthirumuruganathan.wordpress.com/2010/04/14/autokey-linux-utility-for-text-substitution-hotkeys-and-desktop-automation/ Linux Utility for Text Substitution, Hotkeys and Desktop Automation] {en} - Blogbeitrag 04/2010, viele Beispiele #tag: GNOME, Xfce, LXDE, KDE, Editor, Programmierung, Büro