AutoHotKey-Hacks

AutoHotkey (AHK), kennste, kennste? Das ist ein – jedenfalls unter Windows – sehr mächtiges Open Source-Tool, wenn es um das Nutzen von eigenen Tastenkombinationen, das Automatisieren von Vorgängen oder Mausaktionen geht. Eine eierlegende Wollmilchsau.

Allerdings finde ich die Nutzung schon immer etwas holprig. AutoHotkey ist skriptbasiert, das muss man mögen und können. Wobei die Sache mit dem Können in Zeiten mächtiger LLMs schon an Schrecken verloren hat. Wenn man eine Idee hat, die man damit umsetzen will, dann bekommt man das mittlerweile auch gelöst. Zudem ist seit Version 2 alles etwas glatter und konsistenter geworden.

Wenn man eine Idee hat… Daher will ich hier mal kurz zeigen, was ich mit AutoHotkey so mache, vielleicht inspiriert es ja den einen oder die andere. Was ich hier nicht zeige ist den Einstieg in die Nutzung von AutoHotkey, denn Youtube ist voll von solchen Tutorials, da wirst du fündig. Und wild ist das nicht.

Bsp. 1: Der Klassiker: Öffnen eines Programms

Ich verwende als Passwortmanager Keepass XC, und den brauche ich ständig. Ich will also eine sehr einfache Möglichkeit haben, Keepass XC zu öffnen und den Fokus direkt auf das Suchfeld zu legen. Für die Verwendung von Passwörtern im Browser ist das nicht nötig, da ist Keepass XC bestens integriert, aber für alle andere Dinge schon.

Was ich also will: Mit “Strg + Alt + K” (K wie Keepass) soll Keepass XC ggf. gestartet, auf jeden Fall geöffnet und der Fokus auf das Suchfeld gesetzt werden. Gelöst habe ich das so:

; Welches Fenster soll gesucht werden? (Prozessnamen statt Fenstertitel, sonst Probleme, wenn z.B. "KeePassXC" in einem VS Code Tab steht).
targetTitle := "ahk_exe KeePassXC.exe"

; --- Haupt-Hotkey: Strg + Alt + K ---
^!k:: {
    ; Fall 1: Das Fenster ist bereits im Vordergrund -> Minimieren
    if WinActive(targetTitle) {
        WinMinimize
    }
    else {
        ; Fall 2: Das Programm läuft noch gar nicht -> Starten
        if !WinExist(targetTitle) {
            try {
                Run("C:\Program Files\KeePassXC\KeePassXC.exe")
                ; Warte max. 10 Sek., bis das Fenster vom System registriert wird
                if !WinWait(targetTitle, , 10) {
                    MsgBox("KeePassXC startete zu langsam.", "Zeitüberschreitung", "IconHand")
                    return
                }
            } catch {
                MsgBox("Die Datei 'KeePassXC.exe' wurde unter dem Pfad nicht gefunden.", "Fehler", "IconHand")
                return
            }
        }

        ; Fall 3: Programm läuft im Hintergrund -> Aktivieren und Fokus setzen
        WinActivate(targetTitle)

        ; Warte kurz, bis das Fenster wirklich den Fokus hat, bevor wir Tippen
        if WinWaitActive(targetTitle, , 2) {
            Send("^f") ; Sendet Strg+F für die Suche
        }
    }
}

Das ist zwar etwas umfangreicher als nötig, hat dafür aber schon diverses Error-Handling mit drin. Mit diesem Code bin ich seit Jahren mehr als glücklich und verwende den mehrfach täglich.

Bsp. 2: Tastaturlayout (bei Laptops) anpassen

Seit einigen Jahren arbeite mit einem Laptop, bei dem mir das Standard-Tastaturlayout nicht gefällt. Und zwar hat er physische “Page Up”- und “Page Down”-Tasten, die von mir dagegen häufig verwendeten Tasten “Home” / “Pos1” und “End” sind nur über den Umweg der Function-Taste erreichbar. Das nervt, ist aber ein ganz klassisches Anwendungsszenario für AutoHotkey.

Mit diesem Code macht man aus der Eingabe von “Page Up” ein “Pos1” usw.:

; Tasten direkt vertauschen:
PgUp::Home      ; Drücke ich PgUp, wird stattdessen Home gesendet
PgDn::End       ; Drücke ich PgDn, wird stattdessen End gesendet
Home::PgUp      ; Drücke ich Home, wird stattdessen PgUp gesendet
End::PgDn       ; Drücke ich End,  wird stattdessen PgDn gesendet

; Dasselbe für die Kombination mit Shift:
+PgUp::+Home    ; Shift+PgUp verhält sich wie Shift+Home
+PgDn::+End     ; Shift+PgDn verhält sich wie Shift+End
+Home::+PgUp    ; Shift+Home verhält sich wie Shift+PgUp
+End::+PgDn     ; Shift+End  verhält sich wie Shift+PgDn

; In AutoHotkey bedeutet:
;   + = Shift, ^ = Strg, ! = Alt, # = Win

Das löst das Problem mit dem “falschen” Tastenlayout problemlos.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert