Назад | Перейти на главную страницу

«Привязать» USB-клавиатуру исключительно к конкретному приложению

Что у меня есть:

Чего я (не) хочу:

Что я (не знаю) знаю:

Спасибо за любые подсказки ...!

[1] Когда устройство считывает штрих-код, оно отправляет обнаруженный код как одно нажатие клавиши и фиксируется с возвращение.

Сложный и интересный вопрос!

думаю udev может быть способен на это. Создать файл /etc/udev/rules.d/99-barcode-reader.rules и поместите туда что-то подобное:

ACTIONS!="add", GOTO="barcode_end"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="dead", ATTRS{idProduct}=="beef", PROGRAM="/bin/sh -c 'logger -p user.info Hey, I see a new device $env{BUSNUM} $env{DEVNUM}'", RUN+="/bin/sh -c '/usr/local/bin/your_barcode_application &'"
LABEL="barcode_end"

Замените «мертвый» и «говядина» значениями, которые вы получаете для idVendor и idProduct, на lsusb.

Начать сначала udevd или просто ваш сервер, и посмотрите, что произойдет.

Я не знаю, хотите ли вы этого, но если вы пытаетесь отключить эмуляцию клавиатуры, которая выводит последовательности штрих-кода в stdin / console, просто попробуйте следующее:

Создайте файл "/etc/udev/rules.d/10-barcode.rules"

SUBSYSTEM=="input", ACTION=="add", ATTRS{idVendor}=="xxxx", ATTRS{idProduct}=="yyy", RUN+="/bin/sh -c 'echo remove > /sys$env{DEVPATH}/uevent'"
ACTION=="add", ATTRS{idVendor}=="xxxx", ATTRS{idProduct}=="yyyy", SYMLINK+="barcode"

Конечно, замените xxxx и yyyy своими собственными vendor_id и product_id и перезагрузите правила с помощью "udevadm control --reload"

Это удалит часть события / ввода, которая имитирует клавиатуру, и сохранит часть hidraw для доступа к сканированию штрих-кода. Вторая строка просто создает устройство / dev / barcode для чтения, связанное с hidraw

Просто откройте этот файл в своем коде, чтобы прочитать строки, отправленные штрих-кодом.

Для чего это стоит, и для тех, у кого подобная проблема найти это;

Я не знаю, можно ли отключить «клавиатуру», но, поскольку система в любом случае лишена головы, вы можете просто запустить службу для обработки ввода в TTY1, заменив обычное приглашение входа в систему. Вы по-прежнему можете войти в систему через ssh или любой другой TTY, но при загрузке по умолчанию считыватель штрих-кода обрабатывается правильно, без дополнительных действий.

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

Инструкции см. В моем ответе на SU Вот.