kbd-tst.py — простая программа тестирования клавиатуры. Он проверяет функциональность всех клавиш, предоставляя пользователю графическую (ну, только полуграфику ASCII в текстовом терминале) обратную связь, например:
Простой и удобный тест клавиатуры без внешних зависимостей (с использованием только стандартных системных утилит)...
Существует способ протестировать клавиатуру без какой-либо такой утилиты, например, с помощью текстового редактора. В этом случае вам необходимо запомнить, какие ключи были проверены, и не пропустить непроверенные. А все проще с визуальной обратной связью, отображаемой в реальном времени на экране с помощью kbd-test.
Вот несколько типичных:
Несмотря на минималистичную реализацию, есть следующие требования:
Примечание. Из-за зависимости от xinput kbd-tst может работать только в Linux-подобных системах с Xorg.
Вся реализация kbd-tst ориентирована на «тест xinput». Xinput выполняется как подпроцесс, а выходные события анализируются и визуализируются в виде раскладки экранной клавиатуры с дополнительной информацией и статистикой. Визуальная часть реализована с использованием escape-последовательностей ANSI для управления положением и цветом курсора текстового терминала. Раскладка клавиатуры предоставляется из внешних файлов раскладки ASCII (*.lay), таких как «apple.lay» или «at101.lay».
Чтобы kbd-tst работал, нам нужно как-то указать следующее:
Для отображения справки по использованию мы можем предоставить стандартный параметр «-h» или «--help».
= 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 ]
Процедура тестирования состоит из следующих шагов:
Из-за динамического характера и поддержки горячего подключения идентификаторов xinput нам необходимо найти правильный идентификатор устройства KUT (тестируемая клавиатура). Это самая важная, а в некоторых случаях и самая сложная часть процедуры тестирования.
К счастью, существует встроенная функция автоматического определения с помощью пользователя. Для этого необходимо подключить КУТ (проверяемая клавиатура), если КУТ еще не подключен. Если КУТ уже подключен, необходимо повторное подключение. Функция автоопределения наблюдает за системой, пока KUT подключен, а затем может автоматически идентифицировать идентификатор xinput. Однако в некоторых случаях HAL создает два устройства, что делает невозможным выбор при автоопределении. Затем автоматическим определением выбирается первый. Если это неправильный вариант, вам придется вручную указать идентификатор xinput в качестве параметра командной строки:
> kbd-tst.py 12
Файл макета представляет собой простое визуальное представление физической раскладки клавиатуры в формате ASCII. Каждая клавиша представлена квадратными скобками, внутри которых находится метка клавиши, заключенная в пробелы, например: клавиша с номером один обозначается как [ 1 ], что визуально выглядит как колпачок клавиатуры. Этот файл макета загружается, анализируется (ошибки анализа отображаются, если таковые имеются), а затем также используется для визуальной обратной связи на экране. Подробную информацию см. в предоставленных файлах макетов (apple.lay, at101.lay).
В качестве параметра необходимо указать имя необходимого файла макета для загрузки:
> kbd-tst.py at101.lay
Если параметр файла макета не указан, берется первый файл макета в каталоге. Это полезно, если в каталоге только один файл.
Легенда кнопки в файле макета должна быть переведена с помощью словаря rev_xmodmap в классе Layout. Это позволяет использовать более короткие названия кнопок для более удобной разработки раскладки клавиатуры ASCII. Если метка кнопки из файла макета не имеет записи в словаре rev_xmodmap, отображается сообщение об ошибке. Тест продолжится, но проверить все ключи не будет возможности. Поэтому такое выполнение завершится предупреждением (желтым/оранжевым) (см. скриншоты ниже с предупреждениями о загрузке макета и отчетом о тестировании).
Не стесняйтесь добавлять свои собственные файлы макетов в каталог макетов...
В конце теста генерируется однострочный отчет со сводкой:
Следующие файлы:
Надеюсь, это поможет...
версия 2017.07.27 — первый выпуск GitHub в 2017 году.
Ключевые слова : клавиатура, тест, kbdtst, макет, kbd-tst, python, xinput, xmodmap