Сложный и интересный вопрос!
Я думаю, что 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
или просто свой сервер и посмотрите, что произойдет.
Для чего бы это ни стоило и для любого, у кого есть похожая проблема, найти это;
Не знаю, возможно ли отключить "клавиатуру", но так как система в любом случае безголовая, вы можете просто запустить службу для обработки входных данных в TTY1, заменив обычную подсказку для входа. Вы все еще можете войти в систему через ssh или любой другой TTY, но при загрузке, по умолчанию, вход считывателя штрих-кода обрабатывается правильно без дополнительных действий.
Хорошим бонусом является то, что все это можно запустить внутри сеанса работы с экраном, так что вы можете подключиться к нему, используя ssh.
Для получения инструкций, посмотрите мой ответ на SU здесь.
Я не знаю, если это то, что вы хотите сделать, но если вы пытаетесь отключить эмуляцию клавиатуры, которая выводит последовательности штрих-кода в 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
Просто откройте этот файл в своем коде, чтобы читать строки, отправленные штрих-кодом