KMonad

  nor   Lesezeit: 4 Minuten  🗪 1 Kommentar

Umfangreiches Tastatur-Remapping einfach erklärt.

kmonad

KMonad ist eine freie Software zum Tastatur-Remapping. Sie arbeitet direkt mit Input-Gerätedateien und somit unabhängig von X11 oder Wayland. Sie funktioniert also mit beidem und sogar ohne GUI in der blanken Kommandozeile. KMonad ist auch mit MacOS und Windows nutzbar.

KMonad muss unter Linux mit einem User ausgeführt werden, der Mitglied der Gruppen input und uinput ist, um die Tastaturereignisse abfangen und eigene erzeugen zu können. Damit diese Ereignisse nicht frei zugänglich liegen, würde ich empfehlen, diese Berechtigungen nicht einfach dem eigenen Standarduser zu geben. Kmonad kann auch z.B. in einem eigenen User ausgeführt werden, es ist dann nicht auf diesen beschränkt.

Als sehr einfaches Beispiel für eine KMonad-Konfiguration soll hier die Capslock-Taste umdefiniert werden zu einer Taste, die die Tasten H,J,K,L zu Pfeiltasten umschaltet. Die Syntax für die Konfigurationsdatei ist zwar Lisp-inspiriert, es sind aber überhaupt keine Lisp-Vorkenntnisse nötig. Für dieses Beispiel sieht die Konfigurationsdatei wie folgt aus:

(defcfg
    input  (device-file "/dev/input/by-path/tastatur-geräte-datei-kbd")
    output (uinput-sink "kmonad")
    fallthrough true
)
(defsrc
        caps
        h       j       k       l
)
(deflayer default
        (layer-toggle hjkl)
        _       _       _       _
)
(deflayer hjkl
        _
        KeyLeft KeyDown KeyUp   KeyRight
)

Die ersten drei Abschnitte defcfg, defsrc und deflayer default sollten in jeder Konfiguration vorhanden sein. Die Angaben zu input und output haben mit den Gerätedateien zu tun, wo das Remapping passieren soll. USB-Tastaturen sollte man über den Pfad /dev/input/by-id/ angeben. Laptop-Tastaturen sind möglicherweise nur unter /dev/input/by-path/ zu finden. Die Zeile fallthrough true ist wichtig: Sie legt fest, dass im defsrc-Block nicht gelistete Tasten auf ihre Originalfunktion zurückfallen sollen. Die Alternative fallthrough false würde bedeuten, nicht in defsrc gelistete Tasten sollen blockiert werden, also unbenutzbar sein.

Im defsrc-Block werden alle Tasten gelistet, mit denen wir im späteren Verlauf der Konfiguration etwas anstellen wollen. Für ausführliche Konfigurationen mit mehreren Layern und vielen Anpassungen empfiehlt es sich, hier die vollständige Tastatur einschliesslich Zahlenreihe, Sonderzeichen und Spezialtasten wiederzugeben. Für dieses Minimalbeispiel werden der Übersicht halber nur die 5 Tasten, deren Bedeutung geändert werden soll, angegeben und der Rest wie oben erklärt in ihrer Originalfunktion belassen.

In den deflayer-Blöcken müssen genauso viele Elemente gelistet sein, wie im defsrc-Block angegeben. An jeder Position wird definiert, zu welcher Funktion die an dieser Stelle im defsrc-Block gelistete Taste umgedeutet werden soll. Der Block deflayer default gibt dabei natürlich an, was die Tasten standardmässig tun sollen. In unserem Beispiel wird hier bei den vier Buchstabentasten ein Unterstrich angegeben. Das bedeutet, dass hier keine Umdefinierung vorgesehen ist. Die vier Buchstabentasten sollen also per default schlicht sie selbst sein. Der Capslocktaste hingegen wird eine neue Bedeutung zugeteilt. Solange sie gedrückt gehalten wird, soll über dem Defaultlayer der Layer hjkl liegen. Wird sie losgelassen, gilt wieder das Standardlayout.

Zu guter Letzt muss noch der alternative hjkl-Layer definiert werden, in welchem das eigentliche Ziel, diese Tasten auch für die vier Richtungen nutzen zu können, umgesetzt wird. An Position der Capslocktaste wird nichts neues definiert, es wird einfach wieder ein Unterstrich gesetzt. Anstelle von H, J, K und L werden hier die Richtungstasten in der Reihenfolge aufgeführt, die Vim-Nutzern bekannt, wenn nicht gar tief ins Muskelgedächtnis eingebrannt sein dürfte.

Mit KMonad ist noch wesentlich mehr möglich. Es können beliebig viele Layer definiert werden, Tasten so belegt werden, dass sie je nach Haltelänge unterschiedliche Wirkungen haben, Makros und Befehle ausgelöst werden und einiges mehr. Zu finden ist das Projekt hier:

Quelle: https://github.com/kmonad/kmonad

Tags

Tastatur, Belegung, Konfiguration, kmonad, Mapping

Christoph
Geschrieben von Christoph am 26. August 2022 um 22:52

Sehr cooler Hinweis und gut zu wissen!