kbd-tst.py ist ein einfaches Tastaturtestprogramm. Es testet die Funktionalität aller Tasten und gibt dem Benutzer grafisches Feedback (also nur ASCII-Semigrafiken im Textterminal) wie:
Einfacher und benutzerfreundlicher Tastaturtest ohne externe Abhängigkeiten (nur mit Standard-Systemdienstprogrammen) ...
Es gibt eine Möglichkeit, die Tastatur ohne ein solches Dienstprogramm wie dieses zu testen, indem Sie beispielsweise einen Texteditor verwenden. In diesem Fall müssen Sie sich merken, welche Schlüssel getestet wurden, und keine ungetesteten übersehen. Und mit dem visuellen Feedback, das mit kbd-test live auf dem Bildschirm angezeigt wird, wird alles noch einfacher.
Hier sind einige typische:
Trotz minimalistischer Umsetzung bestehen folgende Anforderungen:
Hinweis: Aufgrund der xinput-Abhängigkeit kann kbd-tst nur auf Linux-ähnlichen Systemen mit Xorg ausgeführt werden
Die gesamte kbd-tst-Implementierung ist auf „Xinput-Tests“ ausgerichtet. Xinput wird als Unterprozess ausgeführt und Ausgabeereignisse werden analysiert und als Tastaturlayout auf dem Bildschirm mit zusätzlichen Informationen und Statistiken visualisiert. Der visuelle Teil wird mithilfe von ANSI-Escape-Sequenzen implementiert, um die Position und Farbe des Text-Terminal-Cursors zu steuern. Das Tastaturlayout wird aus externen ASCII-Layoutdateien (*.lay) wie „apple.lay“ oder „at101.lay“ bereitgestellt.
Damit kbd-tst funktioniert, müssen wir irgendwie Folgendes angeben:
Um Hilfe zur Verwendung anzuzeigen, können wir die Standardparameter „-h“ oder „--help“ bereitstellen
= Keyboard Test Program version 2017.7.28 = (c) 2017 by Robert P =
Usage: kbd-tst.py [id] [layout] [-h|--help]
kbd-tst.py [-h|--help] [layout] [id]
-h ... shows this usage help and quits
--help ... shows this usage help and quits
id ... optional keyboard device id as shown in 'xinput list' output (default user assisted autodetection)
layout ... optional keyboard ASCII layout file [*.lay] (default the first file in kbd-tst dir)
Notes:
* parameters are optional
* not providing device id will initiate a user assisted autodetection sequence requiring physical disconneting
and reconecting the keyboard under test (KUT)
* not providing the layout file is usefull if there is only single layout file in kbd-tst directory
* all unrecognized keys from layout file are shown as errors and counted as [ missing_keycodes ]
* all parameters can be supplied in arbitrary order
* in case of multiple specification the last one wins,
for example in sequence of parameters 'id1 layout1 layout2 id2' id2/layout2 pair wins
* test ends when all successfully recognized keys from layout file are tested [ to_go = 0 ]
* to end test prematurely just type phrase 'quit' (without the quotes)
Known issues:
- keys ike apple keyb VOL+/VOL-/MUTE/EJECT do not generate xinput events and therefore cannot be tested right now
- if more than one device id is found by autodetection sequence only the first one is used, which is some cases
might be incorrect. In this case provide the correct device id as a parameter (id can be found by trial and error
from 'xinput list' and verified by 'xinput test id' to show 'key press xx' and 'key release xx' events)
[ xinput double entries related bug: https://bugs.launchpad.net/ubuntu/+source/hal/+bug/277946 ]
Das Testverfahren besteht lediglich aus den Schritten:
Aufgrund der dynamischen Natur und der Hot-Plugging-Unterstützung von xinput-IDs müssen wir die korrekte Geräte-ID von KUT (unter Test stehender Keyboatd) finden. Dies ist der wichtigste und in manchen Fällen auch schwierigste Teil des Testverfahrens.
Glücklicherweise gibt es eine integrierte benutzergestützte automatische Erkennungsmodalität. Dies erfordert den Anschluss des KUT (zu testende Tastatur), falls KUT noch nicht angeschlossen ist. Wenn KUT bereits verbunden ist, ist eine erneute Verbindung erforderlich. Die automatische Erkennungsfunktion überwacht das System, während KUT angeschlossen ist, und kann dann die xinput-ID automatisch identifizieren. In manchen Fällen werden jedoch durch HAL zwei Geräte erstellt, sodass die automatische Erkennung keine Auswahl treffen kann. Dann wird der erste durch automatische Erkennung ausgewählt. Wenn dies nicht die richtige ist, müssen Sie die xinput-ID manuell als Befehlszeilenparameter angeben:
> kbd-tst.py 12
Die Layoutdatei ist eine einfache visuelle ASCII-Grafikdarstellung des physischen Tastaturlayouts. Jede Taste wird durch eckige Klammern dargestellt, wobei die Tastenbeschriftung darin durch Leerzeichen umschlossen ist. Beispiel: Eine Taste mit der Nummer Eins wird als [1] dargestellt, was optisch wie eine Tastenkappe aussieht. Diese Layoutdatei wird geladen, analysiert (ggf. werden Parsing-Fehler angezeigt) und dann auch für visuelles Feedback auf dem Bildschirm verwendet. Weitere Informationen finden Sie in den bereitgestellten Layoutdateien (apple.lay, at101.lay).
Als Parameter muss der Name der gewünschten Layoutdatei angegeben werden, die geladen werden soll:
> kbd-tst.py at101.lay
Wenn kein Layoutdateiparameter angegeben ist, wird die erste Layoutdatei im Verzeichnis verwendet. Dies ist nützlich, wenn sich nur eine einzelne Datei im Verzeichnis befindet.
Die Schaltflächenlegende in der Layoutdatei muss durch das rev_xmodmap-Wörterbuch in der Layout-Klasse übersetzbar sein. Dadurch können kürzere Tastenbeschriftungen verwendet werden, um das ASCII-Tastaturlayout korrekt zu gestalten. Wenn die Schaltflächenbezeichnung aus der Layoutdatei keinen Eintrag im rev_xmodmap-Wörterbuch hat, wird eine Fehlermeldung angezeigt. Der Test wird fortgesetzt, es ist jedoch nicht möglich, alle Schlüssel zu testen. Daher endet eine solche Ausführung mit einer (gelben/orangefarbenen) Warnung (siehe Screenshots unten mit Warnungen zur Layout-Last und zum Testbericht).
Fühlen Sie sich frei, Ihre eigenen spezifischen Layoutdateien in das Layoutverzeichnis einzubringen ...
Am Ende des Tests wird der einzeilige Bericht mit Zusammenfassung erstellt:
Die folgenden Dateien:
Hoffe es hilft...
Version 2017.07.27 – die erste GitHub-Veröffentlichung im Jahr 2017
Schlüsselwörter : Tastatur, Test, kbdtst, Layout, kbd-tst, Python, xinput, xmodmap