Keychron Q6 Max und VIA unter Linux

Keychron stellt (aus meiner persönlichen Sicht) unglaublich schöne, hochwertige Keyboards her, die die tägliche Arbeit um ein angenehmes Tippgefühl sowie sinnvolle Funktionen ergänzen.

Mein Keychron Q6 Max -Keyboard lässt sich wie viele andere Keyboards dieses Herstellers (der damit nicht alleine dasteht ) über das VIA-Protokoll komplett konfigurieren. Über eine plattformunabhängige Web-Oberfläche lassen sich nahezu alle Tasten komplett neu belegen und, sofern die Tastatur das unterstützt, die Beleuchtungseffekte steuern. Einmal eingerichtet speichert die Tastatur die Konfiguration intern, sie ist also nicht abhängig von irgendeiner Software, die auf dem Hostgerät installiert sein muss.

Keychron unterstützt offiziell die Konfiguration über VIA für Windows und MacOS. Doch auch unter Linux funktioniert das Ganze, Voraussetzung ist wie bei den anderen Betriebssystemen derzeit (Stand 06/2024) nur einen auf Chrome basierten Browser. Chrome, Brave, Edge, Chromium und so weiter funktionieren also, Firefox jedoch nicht. Sogar Opera funktioniert, doch den möchte ich noch weniger als den Edge empfehlen.

Geräteunabhängige Konfiguration über Chromium-basierte Browser

Um die Tastatur zu konfigurieren, muss sie über das USB-Kabel mit dem Hostgerät verbunden werden und die Einstellung mittels Schieberegler auf “Cable” geändert werden. Die Konfiguration über Funk-Dongle oder Bluetooth ist nicht möglich. Ruft man nun die VIA-Konfigurationsseite des Herstellers (oder alternativ die generische Seite ) auf, beispielsweise mit Brave, erscheint ein Popup, das das Koppeln mit der Tastatur verlangt. Erscheint hier keine Tastatur, wurde entweder das Kabel nicht richtig gesteckt, der Modus nicht auf “Cable” gestellt oder die Tastatur ist nicht mit VIA kompatibel. Letzteres könnt ihr auf der Kompatibilitätsseite überprüfen.

Geklickt, gekoppelt - doch dann geschieht nichts. Die Seite zeigt keine Konfigurationsoptionen an, nicht einmal die Tastatur erscheint als Auswahl. Was ist da los? Ein Blick in die Geräte-Konsole von Chromium (der Link funktioniert nicht? Einfach chrome://device-log in die Adresszeile eingeben) zeigt den Übeltäter. Die folgenden HID-Fehlermeldungen tauchen zum Zeitpunkt des Verbindungsversuchs auf (der Gerätepfad kann sich am Ende unterscheiden):

Failed to open '/dev/hidraw9': FILE_ERROR_ACCESS_DENIED
HIDEvent[11:37:58] Access denied opening device read-write, trying read-only.

Der Browser (bzw. der User) hat keinen Schreibzugriff auf das Keyboard. Wir haben nun zwei Möglichkeiten, das Problem zu beheben: Wir setzen für die Zeit der Konfiguration entsprechende Nutzerrechte manuell und entziehen diese hinterher, oder wir definieren udev-Regeln, die Nutzern generell Schreibrechte für VIA-kompatible Geräte einräumen. Letzteres ist aus meiner Sicht die sinnvollere Lösung, ich zeige jedoch der Vollständigkeit halber beide auf.

Methode 1: udev-Regeln

Keychron verwendet die QMK-Firmware für ihre Keyboards. Das ist insofern schön, da es sich um eine OpenSource-Entwicklung handelt und damit eine breite und offene Unterstützung von Geräten gewährleistet wird. Im offiziellen Repository auf Github kann sich so jeder, der tiefer in die Materie eintauchen möchte, nach Belieben einarbeiten.

So tief brauchen wir uns aber gar nicht mit der Materie zu beschäftigen. Die udev-Regeln reichen uns vollkommen, diese finden wir hier . Wir speichern die Datei so wie sie ist ab und kopieren sie danach mittels sudo cp ~/Downloads/50-qmk.rules /etc/udev/rules.d an die richtige Stelle. Solltet ihr sie an einer anderen Stelle als ~/Downloads oder unter einem anderen Namen gespeichert haben, passt ihr natürlich die Kommandozeile entsprechend an.

Nach einem erneuten Einstecken der Tastatur via USB-Kabel sollte nun auch in der VIA-Oberfläche das Gerät auftauchen und ihr könnt loslegen.

Methode 2: Manuelles Setzen der Berechtigungen

Solltet ihr kein udev einsetzen (bei den meisten Linux-Distributionen ist es standardmäßig aktiv) oder Bedenken bzgl. der von Dritten bereitgestellten udev-Datei haben, könnt ihr das Problem auch per Hand temporär beheben.

Kopiert euch einfach den Gerätepfad aus der Chromium-Konsole (siehe oben) heraus und ersetzt den Beispiel-Gerätepfad aus der folgenden Kommandozeile damit:

sudo chmod a+rw /dev/hidraw9

Nun könnt ihr die Tastatur über die VIA-Oberfläche konfigurieren. Nach getaner Arbeit würde ich empfehlen, die Zugriffsrechte wieder auf ihren Standard zurückzusetzen, auch hier bitte daran denken, den Beispiel-Gerätepfad mit dem aus der Konsole zu ersetzen:

sudo chmod 600 /dev/hidraw9

Achtung! OS-Wahl und Layer

Ein Problem, über das viele Erstnutzer stolpern dürften, ist das Problem mit den vier angezeigten Layern. Layer sind verschiedene Tastaturebenen, die sich durch Tastenkombinationen ansteuern lassen. Ihr kennt das, FN+F4 schaltet die tastaturbeleuchtung an und aus, FN+F10 die Lautsprecher, und so weiter. Nun unterscheiden sich aber auch die betriebssystemspezifischen Tastenkombinationen voneinander: Windows hat zusätzlich zur Umschalt- und FN-Taste die Win- und Alt-Tasten, MacOS die Mac- und Options-Tasten. Diese sehen nicht nur unterschiedlich aus, sondern werden auch vom Betriebssystem unterschiedlich interpretiert. Ein einfaches Auswechseln der KeyCaps reicht also nicht, ein Mac würde trotzdem den falschen (Windows-) Keycode bekommen, wenn man die Mac-Taste drückt.

Keychron unterstützt zwei Modi bei seinen Tastaturen. Windows- und Mac-Modus. Über einen Wahlschalter wird so intern die Belegung der Tasten, bzw. der Keycode, den sie generieren, verändert. So reicht es, einen simplen Schalter umzulegen, um zwischen Windows- und Mac-Modus hin und her zu schalten, ohne dass das Betriebssystem dabei mitbekommt, dass ein zweiter Modus überhaupt existiert.

Durch die Art, wie dieses Umschalten softwareseitig mittels VIA abgebildet wird, ergibt sich ein Problem: VIA kennt zwei Layer, die sich konfigurieren lassen. Diese sind allerdings Modus-spezifisch. Damit man, egal in welchem Modus man sich gerade befindet, beide Modi konfigurieren kann, bildet VIA auf der Konfigurationsoberfläche einfach vier Modi ein: Zwei für die Mac-Belegung, zwei für Windows.

Standardmäßig ist auf der generischen VIA-Seite Layer 0 aktiviert (der Keychron-Wrapper erkennt den aktuellen Modus und aktiviert automatisch den richtigen Basis-Layer). Befindet man sich nun im Windows-Modus (den ich persönlich verwende, da er auch unter Linux am sinnvollsten erscheint) und ändert eine Tastenbelegung in Layer 0 oder 1, wird man schnell enttäuscht feststellen, dass die entsprechenden Änderungen nicht greifen. Layer 0 und 1 sind nämlich die Layer für den Mac-Modus. Ändert man hingegen die Tastenbelegung auf Layer 2 und 3, führt das zum Erfolg.

Keychron legt übrigens bei der Q6 Max KeyCaps sowohl für Mac- als auch für Windows-Belegungen bei, damit man seinen primären Modus direkt sichtbar belegen kann. Zusätzlich liegt ein “Lock”-KeyCap bei, den ich persönlich anstelle des “Mikrofon”-KeyCaps verwende, der über der “Home”-Taste ein Shortcut zu Siri bzw. Cortana ist. Da ich beides nicht nutze, habe ich diese Taste also mit “Win+L” belegt, also dem Shortcut, um den Bildschirm zu sperren. Der Makro-Editor der generischen VIA-Seite erfasst zumindest bei mir nicht alle Tastendrücke sauber im Aufzeichnungsmodus (die Keychron-Seite habe ich ehrlicherweise nicht vollständig getestet), aber das ist kein Problem, hier kann man sich mit dem manuellen Editor behelfen: {+KC_LGUI}{KC_L}{-KC_LGUI}