“Свяжите” клавиатуру USB исключительно с определенным приложением

Я думаю, что необходимо дать эту команду:

доступ управления внутри

6
задан 2 May 2012 в 18:22
3 ответа

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

Я думаю, что 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 или просто свой сервер и посмотрите, что произойдет.

2
ответ дан 3 December 2019 в 00:39

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

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

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

Для получения инструкций, посмотрите мой ответ на SU здесь.

1
ответ дан 3 December 2019 в 00:39

Я не знаю, если это то, что вы хотите сделать, но если вы пытаетесь отключить эмуляцию клавиатуры, которая выводит последовательности штрих-кода в 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

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

0
ответ дан 3 December 2019 в 00:39

Теги

Похожие вопросы