QMK und Kinesis Advantage: Selbst die Tastatur-Latenz messen - und reduzieren

Lässt sich die Latenz von Tastatureingaben extern messen? Durchaus. Wir erklären, wie das geht, und beschreiben häufige Ursachen für lange Latenzzeiten.

Artikel von Michael Stapelberg veröffentlicht am
Wegen ihrer LED bot sich die Caps-Lock-Taste zum Testen an.
Wegen ihrer LED bot sich die Caps-Lock-Taste zum Testen an. (Bild: Pexels)

Dieser Text ist eine Übersetzung. Das Original ist im Blog von Michael Stapelberg zu finden.

Ich habe in den letzten Jahren an einigen Projekten zum Thema Eingabelatenz bei Tastaturen gearbeitet. Konkret geht es mir dabei um Austauschcontroller für die Advantage-Produktreihe der Firma Kinesis. 2018 habe ich den Kinx-Tastaturcontroller mit 0,2 ms Eingabelatenz vorgestellt und 2020 dann den Kint-Tastaturcontroller. Letzterer ist mit verschiedenen Teensy-Mikrocontrollern und sowohl mit der alten KB500- als auch mit der neueren KB600-Revision der Kinesis Advantage kompatibel, die intern andere Steckverbindungen nutzt, um die Tastenblöcke anzuschließen.

Während der Kinx-Controller von 2018 über eine integrierte Latenzmessung verfügte, begann ich mit dem Kint-Design bei null, da ich dieses Mal lieber die QMK-Tastaturfirmware anstelle einer selbst entwickelten Firmware verwenden wollte. Das hat mich zum Nachdenken gebracht: Gibt es eine Möglichkeit, die Latenzzeiten extern zu messen,­ idealerweise ganz ohne Änderungen an der Firmware?

In diesem Artikel erkläre ich, wie man eine Messumgebung einrichtet, mit der man die Eingabelatenz eines Tastaturcontrollers messen kann und die sowohl für originale als auch für selbst gebaute Controller geeignet ist. Ich verwende als Beispiel meine Kinesis-Advantage-Tastatur, doch dieser Ansatz sollte sich auf alle Tastaturen übertragen lassen.

Stellenmarkt
  1. Projekt- und Testmanager (m/w/d)
    BfS Bundesamt für Strahlenschutz, Berlin, Salzgitter, Oberschleißheim
  2. CAD/CAM Programmierer (w/m/d)
    AIXTRON SE, Herzogenrath
Detailsuche

Außerdem erkläre ich einige häufige Ursachen für lange Latenzzeiten bei der Tastatureingabe und zeige, wie diese in der QMK-Tastatur-Firmware behoben werden können.

So ist die Messung aufgebaut

Ich simuliere mit einem Teensy 4.0 das Drücken der Feststelltaste und messe die Dauer, bis der Tastendruck zu einem Wechsel der Feststelltasten-LED führt. Ich habe mich dabei für die Feststelltaste entschieden, weil sie eine der wenigen Tasten ist, die einen LED-Wechsel bewirkt.

  • Der Teensy 4.0 mit dem KinT-Controller und einem Laptop verbunden (Bild: Michael Stapelberg)
  • Alle GPIO-Pins angeschlossen (Bild: Michael Stapelberg)
  • Verwendung des SparkFun Logic Level Converter (bidirektional) (Bild: Michael Stapelberg)
  • Schaltdrähte auf der Platine (Bild: Michael Stapelberg)
  • Wenig invasiv: die Tastköpfe an die Kontakte halten (Bild: Michael Stapelberg)
Der Teensy 4.0 mit dem KinT-Controller und einem Laptop verbunden (Bild: Michael Stapelberg)

QMK-Debug-Konsole aktivieren

Bereiten wir nun die QMK-Arbeitskopie vor. Ich arbeite für jedes Projekt gerne mit einer separaten QMK-Arbeitskopie:


% docker run -it -v $PWD:/usr/src archlinux
# pacman -Sy && pacman -S qmk make which diffutils python-hidapi python-pyusb
# cd /usr/src
# qmk clone -b develop qmk/qmk_firmware $PWD/qmk-input-latency
# cd qmk-input-latency

Die Firmware für meine Tastatur kompiliere ich folgendermaßen:


# make kinesis/kint36:stapelberg

Um die Debug-Konsole zu aktivieren, muss ich meine QMK-Keymap Stapelberg bearbeiten, indem ich die Datei keyboards/kinesis/keymaps/stapelberg/rules.mk wie folgt aktualisiere:


CONSOLE_ENABLE = yes

Nachdem die Firmware kompiliert und geflasht ist, erkennt das Tool hid_listen das Gerät und wartet auf QMK-Debug-Meldungen:


% sudo hid_listen
Waiting for device:...
Listening:

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
Die Pins identifizieren 
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9.  


Aktuell auf der Startseite von Golem.de
E-Mail-Hosting
"Wir haben laufend Probleme mit GMX und Web.de"

Probleme, wie sie die Bahn jüngst mit GMX und Web.de hatte, kennt der Mailprovider Tinc schon lang. Antworten bleibe GMX schuldig, sagt uns der CEO.
Ein Interview von Moritz Tremmel

E-Mail-Hosting: Wir haben laufend Probleme mit GMX und Web.de
Artikel
  1. Cloudgaming: Google Stadia scheiterte nur an sich selbst
    Cloudgaming
    Google Stadia scheiterte nur an sich selbst

    Die Technik war nicht das Problem von Alphabets ambitioniertem Cloudgaming-Dienst. Das Problem liegt bei Google. Ein Nachruf.
    Eine Analyse von Daniel Ziegener

  2. Copilot, Java, RISC-V, Javascript, Tor: KI macht produktiver und Rust gewinnt wichtige Unterstützer
    Copilot, Java, RISC-V, Javascript, Tor
    KI macht produktiver und Rust gewinnt wichtige Unterstützer

    Dev-Update Die Diskussion um die kommerzielle Verwertbarkeit von Open Source erreicht Akka und Apache Flink, OpenAI macht Spracherkennung, Facebook hilft Javascript-Enwicklern und Rust wird immer siegreicher.
    Von Sebastian Grüner

  3. Ello LC1: Bastler baut 8-Bit-Computer in Kreditkartengröße
    Ello LC1
    Bastler baut 8-Bit-Computer in Kreditkartengröße

    Der Ello LC1 ist dank cleverer Konstruktion nur unwesentlich dicker als eine Platine und bietet einen Basic-Interpreter sowie ein LC-Display.

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    Daily Deals • LG OLED TV 2022 65" 120 Hz 1.799€ • ASRock Mainboard f. Ryzen 7000 319€ • MindStar (G.Skill DDR5-6000 32GB 299€, Mega Fastro SSD 2TB 135€) • Alternate (G.Skill DDR5-6000 32GB 219,90€) • Xbox Series S + FIFA 23 259€ • PCGH-Ratgeber-PC 3000€ Radeon Edition 2.500€ [Werbung]
    •  /