Precisa interceptar eventos do teclado HID (e depois bloqueá-los)
Tenho um dispositivo USB RFID que é registrado como dispositivo HID (um teclado USB mais ou menos
Estou procurando uma maneira de capturar essa entrada e bloqueá-la / filtrá-la antes que ela atinja o manipulador de eventos de teclado normal (e envie o código RFID de 10 dígitos para o console
É claro que eu teria que capturar exclusivamente esse dispositivo e deixar a entrada real do teclado em paz (ou transmiti-la
Minha idéia inicial era bloquear o dispositivo no UDEV (para que o módulo do kernel usbhid / event / kbd não se ligasse a ele) e escrever meu próprio driver básico para este dispositivo - mas não sei por onde começar, ou se isso vai funcionar.
O que seria ótimo (e não tenho certeza se isso pode ser feito) - é se eu escrever um módulo de filtro de eventos que possa ficar alinhado com o driver de eventos e capturar (filtrar) a entrada apropriada de RFID, mas deixe todo o resto passar. Imagino que esse módulo não exija muito código e seria o mais prátic
Socorro
[EDIT: Devo acrescentar que o Xorg NÃO está instalado - somente console]
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
Mais informações
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)