Необходимо перехватить события HID Keyboard (а затем заблокировать их)
У меня есть RFID USB-устройство, которое регистрируется как HID-устройство (клавиатура USB более или менее).
Я ищу способ захватить этот ввод и заблокировать / отфильтровать его, прежде чем он попадет в обычный обработчик событий клавиатуры (и выведет 10-значный код RFID на консоль).
Я бы, конечно, должен был захватить только это устройство и оставить реальный ввод с клавиатуры в одиночку (или передать его).
Моя первоначальная идея состояла в том, чтобы заблокировать устройство в UDEV (чтобы модуль ядра usbhid / event / kbd не привязывался к нему) и написать свой базовый драйвер для этого устройства - но я не знаю, с чего начать, или если это буду даже работать.
Что было бы здорово (и я не уверен, что такое можно сделать) - это если я напишу модуль фильтра событий, который может находиться в очереди с драйвером событий, и получит (затем отфильтрует) соответствующий входной сигнал из Блок RFID, но пусть все остальное проходит. Я предполагаю, что такой модуль не потребовал бы большого количества кода, и был бы самым практичным.
Помогите?
[EDIT: я должен добавить, что Xorg НЕ установлен - только консоль]
cat /proc/bus/input:
I: Bus=0003 Vendor=0419 Product=0912 Version=0100
N: Name="NewRoad Sem. NewRoad System PS2 Interface"
P: Phys=usb-0000:00:1d.3-2/input0
S: Sysfs=/devices/pci0000:00/0000:00:1d.3/usb5/5-2/5-2:1.0/input/input20
U: Uniq=
H: Handlers=sysrq kbd mouse0 event3
B: PROP=0
B: EV=120017
B: KEY=70000 0 0 e080ffdf01cfffff fffffffffffffffe
B: REL=103
B: MSC=10
B: LED=1f
Больше информации:
lsusb -d 0419:0912 -v
Bus 005 Device 019: ID 0419:0912 Samsung Info. Systems America, Inc.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x0419 Samsung Info. Systems America, Inc.
idProduct 0x0912
bcdDevice 0.01
iManufacturer 1 NewRoad Sem.
iProduct 2 NewRoad System PS2 Interface
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 34
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 4
bmAttributes 0xa0
(Bus Powered)
Remote Wakeup
MaxPower 100mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 1 Boot Interface Subclass
bInterfaceProtocol 1 Keyboard
iInterface 5
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.00
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 119
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0008 1x 8 bytes
bInterval 10
Device Status: 0x0000
(Bus Powered)