3

У меня есть USB цифровая клавиатура, как это:

Мне нужно написать символы (от A до Z) на этой клавиатуре, и моя идея состоит в том, чтобы использовать его, как на старом сотовом телефоне:

Если я нажимаю 1x 2, он пишет A, 2x 2 - B, 4x 9 - Z и т.д.

Возможно ли это сделать? И как? Используете udev?

2 ответа2

2

У меня нет полного ответа, но вот некоторые вещи, которые могут помочь.

Если ваша клавиатура подключена к компьютеру с графическим интерфейсом на базе Gnome или KDE, AutoKey можно использовать для превращения клавиш в горячие клавиши, которые могут выполнять практически все, что вы только можете придумать. Поскольку нажатия клавиш на клавиатуре, вероятно, неотличимы от соответствующих клавиш на обычной клавиатуре, все, что вы делаете, также влияет на них.

Запустите xev из терминала и нажмите каждую клавишу на панели, чтобы увидеть, какие коды клавиш генерируются. Они, вероятно, такие же, как и для обычной клавиатуры, но если нет, вы можете использовать эти коды, чтобы различать их.

Если вы находитесь во встроенной системе (или даже на сервере) без графического интерфейса, вышеописанное не будет работать.

Я не очень разбираюсь в устройствах Linux, но этот пост может дать вам подсказку о том, как обрабатывать ввод с клавиатуры непосредственно в сценарий или программу. Как только вы нажмете клавишу в сценарии, вы можете делать что угодно в ответ на них.

Так как это скрипт / программа, вам нужно найти способ получить его вывод в желаемое место назначения.

Первый подход, который приходит на ум, - это использование трубы. Это сработает, если вывод идет только в одну программу.

Если решение должно быть более общим, именованный канал может работать. Мне еще не приходилось их использовать, поэтому я немного схематично расскажу, как бы вы использовали один и тот же именованный канал, последовательно подключенный к разным программам.

1

Решение заключается в использовании метода множественного нажатия .

В приложении необходимо вручную установить метод многопрессового ввода. Если вы хотите использовать multipress по умолчанию, вам нужно создать файл /.xinputrc с содержимым:

GTK_IM_MODULE=multipress
QT_IM_MODULE=multipress

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .