- Da AutoHotKey ein leistungsstarkes, aber für Einsteiger zunächst einschüchterndes Windows-Automatisierungstool ist, wird eine echte Sammlung persönlicher Skripte als Lernmaterial veröffentlicht
- Das Material besteht aus insgesamt 14 Dateien und konzentriert sich auf Automatisierungsbeispiele, die man sofort ausprobieren kann, etwa Ordner öffnen, Text einfügen oder Shortcuts pro Programm erweitern
- Enthalten sind schnelle Eingaben für das aktuelle Datum, den em dash und
¯\\_(ツ)_/¯sowie ein modales Shortcut-System für vim-Nutzer und eine einfache GUI-Demo - Es gibt auch ein Skript, das Zeitstempel in UTC und lokale Zeit umwandelt, sodass man über reine Tastenkürzel hinaus praktische Workflow-Automatisierung sehen kann
- Jede Datei enthält Kommentare dazu, was der Code macht, und teilweise auch, warum er so implementiert wurde, wodurch sie sich gut als pädagogische Codebasis lesen lässt
Eine Sammlung von AutoHotKey-Beispielen nahe an realen Arbeitsabläufen
- Für Nutzer, denen das Lernen von AutoHotKey schwerfällt, werden die meisten der persönlich verwendeten Skripte zusammen mit Erklärungen veröffentlicht
- Der gesamte Code ist im GitHub-Repository zu finden und besteht aus insgesamt 14 Dateien
- Zu den wichtigsten Beispielen gehören:
Wie man sie als pädagogische Codebasis liest
- Dieses Repository ist ein Beispiel für eine pädagogische Codebasis, die so gestaltet wurde, dass Menschen durch das Lesen des Codes lernen können
- Jede Datei enthält viele Kommentare dazu, was der Code macht; bei manchen Implementierungen wird auch erläutert, warum ein bestimmter Ansatz gewählt wurde
- Eine separate Erklärung zu pädagogischen Codebasen folgt im Newsletter-Beitrag
- Wenn an bestimmten Stellen mehr Erklärung nötig ist, kann man diese per GitHub-Issue anfragen
1 Kommentare
Meinungen auf Hacker News
Ich glaube, ich kann zum ersten Mal etwas Nützliches zu einer Code-Diskussion beitragen. Als jemand, der schreibt, habe ich mir ein AutoHotkey-Skript gebaut, das jederzeit schnell eine leere notepad.exe öffnet: Mit der Taste
~wird sie geöffnet, beim erneuten Drücken geschlossen, und wenn Inhalt vorhanden ist, erscheint der Speichern-Dialog.Das ist alles, was mein AHK macht.
Wenn man schnell zum vorherigen Fenster zurückwechseln möchte, ohne Fenster zu schließen oder zu minimieren, ist der Windows-Standard-Shortcut Alt + Escape nützlich. Anders als Alt+Tab zeigt er keine Fensterübersicht, sondern wechselt direkt zum zuletzt fokussierten Fenster.
In AutoHotkey v1 kann man Boilerplate für einen Switcher/Launcher bauen, der nach einem Teil des Fenstertitels sucht und das Fenster aktiviert; wenn es bereits aktiv ist, kehrt er mit
send, !{escape}zurück, und wenn es nicht existiert, startet er es. Wenn man die Taskleiste nicht vollmüllen will, kann man auchWinHide/WinShowverwenden, aber das passt bei manchen Fenstern nicht gut; für die Fenstererkennung sindahk_exeoderahk_classmanchmal besser geeignet.WinActive("Untitled - Notepad")undWinExist("*Untitled - Notepad"), schließt oder aktiviert es, und führt andernfallsRun "Notepad"aus.WinActive()oderWinExist()kann man mehrere Titelbedingungen perorkombinieren und bei Bedarf auch eine ahk_class-Bedingung wie"Untitled - Notepad ahk_class Notepad"hinzufügen.AutoHotkey ist großartig, aber ich wünschte, die Sprache wäre etwas normaler. Ich habe mich damit abgequält, eine stabile Version von Aero Snap mit Golden-Ratio-Aufteilung zu bauen. Es sollte eigentlich nicht so schwierig sein, mehrere Monitore und Größen zu handhaben, aber merkwürdige
Loop-Syntax und stille Fehlschläge bei einfachen Fehlern haben mir den Spaß verdorben, sodass ich aufgegeben habe.Ich habe auch das ahk-Modul für Python gefunden, aber in Kombination mit dem
keyboard-Modul funktionierte es als Shortcut-Listener nicht so gut wie AutoHotkey.https://github.com/idbrii/daveconfig/blob/main/win/autohotke...
https://pypi.org/project/ahk/
Bei meiner Hochzeit habe ich mit AutoHotKey eine Fotobox gebaut. Ich habe eine einfache Software verwendet, die die Nikon meiner Verlobten per USB steuert, zusammen mit IrfanView auf dem Laptop; IrfanView war so konfiguriert, dass es einen Ordner überwacht und immer das neueste Foto anzeigt.
Mit AutoHotKey habe ich eine einfache GUI mit Preview-, Autofocus- und „SNAP“-Button gebaut. Wenn man SNAP drückte, lief ein großer Countdown, danach wurde ein Foto aufgenommen, die Kamera-Software minimiert und IrfanView in den Vordergrund geholt. Nach ein paar Sekunden ging es zurück zur Button-GUI. Die Gäste mochten es, wir sparten mehrere hundert Euro für die Miete einer Fotobox und bekamen schöne Fotos.
Dieses AutoHotKey-Skript war für mich ein Gamechanger. Ich habe Ctrl + Shift + V auf Einfügen ohne Formatierung gemappt: Es wandelt die Zwischenablage in Text um, fügt sie ein, wartet kurz und stellt dann die ursprüngliche Zwischenablage wieder her.
https://learn.microsoft.com/en-us/windows/powertoys/
https://stevemiller.net/puretext/
Eine Zwischenablage mit mehreren Werten, etwa den letzten 5 Clips, wäre auch schön, aber das ist vielleicht zu viel verlangt.
AHK gehört zu den Apps, die einen an Windows binden. Ich nutze es etwa, um der Tastatur Zeichen wie äöüß oder áóúñ hinzuzufügen, die Helligkeit der Zimmer- und Wohnungsbeleuchtung zu steuern, Zeitstempel wie
08:39 –,2023-08-22 08:39:46oder2023-08-22 — Tuesdaymit ein oder zwei Tasten einzufügen und beim Umschalten der Pause-Taste den Monitor über eine Tasmota-fähige Steckdose ein- und auszuschalten.Allerdings hätte ich gern eine Funktion, mit der ich eine zweite Tastatur wie ein Button-Pad verwenden kann, während deren Tasteneingaben abgefangen werden. Deshalb nutze ich derzeit eine kleine Bluetooth-Tastatur, die an einen Raspberry Pi Zero angeschlossen ist, um mehr Buttons zu haben.
https://www.hammerspoon.org/
https://miquelvir.medium.com/secondkeyboard-1c39e52e023b
Das hier gibt es auch: https://github.com/evilC/AutoHotInterception
https://github.com/autokey/autokey
Ich nutze AutoHotKey ebenfalls ständig. Darin habe ich sechs Shortcuts für Datums-/Zeitstempel, PuTTY-/SSH-Launcher für häufig genutzte Hosts und serielle Ports, zustandsbasierte Launcher für über zehn Apps wie Outlook, Windows Terminal und Total Commander, unformatiertes Einfügen überall, Einfügen mit entfernten Zeilenumbrüchen, eine AltGr-Eingabeebene für Sonderzeichen und Emojis sowie Medien-/Lautstärke-Shortcuts.
https://gist.github.com/raveren/bac5196d2063665d2154
Auf meinem privaten Linux-Laptop habe ich Caps Lock und Escape vertauscht und mich daran gewöhnt. Als ich Windows im Dual-Boot genutzt habe, habe ich dieselbe Einstellung mit PowerToys vorgenommen, aber in der Firma kann ich weder PowerToys noch Uncap installieren, daher bleibt nur AutoHotKey.
Als ich einer StackOverflow-Antwort gefolgt bin, sendeten Caps Lock und Escape beide jeweils beide Tasten, was gelegentlich meine Teams-Nachrichten ruiniert.
https://github.com/microsoft/PowerToys
https://github.com/susam/uncap
https://stackoverflow.com/questions/38558376/how-to-map-caps...
https://github.com/jtroo/kanata
Zum Beispiel implementiert https://github.com/evilC/TapHoldManager das in AHK. Wenn man Shift/Ctrl/Win/Alt unter
fdsaundjkl;legt, muss man den kleinen Finger weniger benutzen und die Finger bleiben öfter auf der Home Row.CapsLock::Esc,Esc::CapsLockAndere schnelle AHK-Verbesserungen wie das Starten von Programmen per globalem Shortcut habe ich ebenfalls zusammengestellt: https://nickjanetakis.com/blog/remap-and-set-global-hotkeys-...
https://superuser.com/questions/550679/where-can-i-find-wind...
https://github.com/hwalinga/dotfiles/blob/master/CapsLockCtr...
Es implementiert auch eine Dual-Function-Taste: CapsLock wirkt als Ctrl, wenn es zusammen mit einer anderen Taste gedrückt wird, und als Esc bei kurzem Drücken.
Wie andere schon gesagt haben, ist es erstaunlich, wie viel AHK unter Windows möglich macht. Persönlich kann ich sagen, dass ich dank AHK über 100.000 Dollar gespart oder verdient habe.
Allerdings gehört die AHK-Sprache selbst nicht gerade zu den angenehmsten zum Schreiben. Ich frage mich, warum es in Python oder Lua kein ähnlich mächtiges Tool gibt; auch https://github.com/pywinauto/pywinauto hat in der Praxis nicht so gut funktioniert wie AHK. Darunter steckt am Ende die WinAPI, daher könnte auch C# eine Option sein, wenn es eine gute Wrapper-Bibliothek gäbe. Ich denke, AHK ist deshalb beliebt, weil es hässlich ist, aber funktioniert.
https://www.autohotkey.com/boards/viewtopic.php?f=80&t=77248
AutoHotKey ist großartig. Ich nutze es für schnelleres App-Switching; in meinem Fall steuere ich alles, indem ich Right Alt als Taste zum „Aktivieren von Shortcuts“ verwende.
Wenn ich sie gedrückt halte und eine Buchstabentaste drücke, rotiert es durch die Instanzen der jeweiligen App. Zum Beispiel wechselt Alt+C zu einem VS-Code-Fenster, und Alt+F-Varianten öffnen neue App-Instanzen, etwa ein neues Chrome-Fenster mit einem bestimmten Profil. Alt+Zahl kann auf das aktuell fokussierte Fenster gesetzt werden, und wenn ich Alt antippe, wird ein Bearbeitungsmodus aktiviert, in dem ich das aktuelle Fenster einer Zahlentaste zuweisen kann. Im Bearbeitungsmodus werden H/J/K/L zu Navigationstasten für oben/unten/links/rechts, wodurch das Wechseln zwischen Apps viel schneller wird.
Am eindrucksvollsten war ein Skript, das ich früher gefunden und angepasst habe, als ich Diablo 3 gespielt habe. Weil ich meine Maushand zu stark auf das Mauspad drückte und dadurch Probleme mit Repetitive Strain Injury bekam, suchte ich nach einer Möglichkeit, mit einem Controller zu spielen.
Dieses Skript band die analoge Bewegung an einen kleinen Kreis um den Charakter, sodass man in jede Richtung flüssig laufen konnte; wenn man eine Taste drückte, wurde die Reichweite weiter nach außen verlegt, um Fernkampffähigkeiten zu wirken. Mit ein wenig Anpassung pro Klasse funktionierte es erstaunlich gut.