Seu scanner não está enviando lixo. Esses são relatórios de entrada perfeitamente convencionais para um dispositivo de teclado USB HID convencional com o descritor de relatório de "inicialização" convencional de 8 bytes.
Decodificando-os, pode-se ver que seu scanner não está enviando as chaves para "S", "I" e assim por diante diretamente. Em vez disso, ele está simulando inseri-los com a tecla ⎇ Alt . Ele está fazendo várias suposições bastante ruins sobre o sistema operacional ao fazê-lo, qualquer um ou todos os quais poderiam ser facilmente defeituosos.
Por exemplo:
- O relatório de entrada
04 00 62 60 5b 00 00 00
são as chaves com os códigos de uso de USB HIDE2
,62
,60
e5B
pressionados simultaneamente. -
E2
,62
,60
e5B
são os códigos de uso de USB HID para ⎇ Alt Esquerdo , Ins / 0 , ↑ / 8 e PgDn / 3 . - 083 10 é o código para "S".
- O relatório de entrada
00 00 00 00 00 00 00 00
indica que todas essas chaves foram lançadas.
O resto realmente decodifica para "I", "P", "-", "4", "-" e "1", todos digitados desta forma como ⎇ Alt mais três números decimais. (Os dois últimos relatórios de entrada são pressione e solte de ⮠ Return .)
Você pode ver as várias suposições quebradas aqui.
- O scanner está assumindo que o driver do teclado analisa o relatório de entrada em uma determinada direção. Isso não é garantido, e o scanner deve gerar relatórios individuais para Ins / 0 , ↑ / 8 e PgDn / 3 sendo pressionados. e liberado por sua vez com a tecla modificadora pressionada por toda parte. É confiar em um acidente de implementação, e o que o scanner está realmente enviando é todas as quatro teclas sendo pressionadas e liberadas simultaneamente .
- O scanner está assumindo que ⎇ Alt esquerdo é a chave a ser usada para isso. Mas em alguns sistemas operacionais e layouts de teclado, ele pode ser ⇮ Alt Gr / ⎇ Alt Direita , que é
E6
(codificado como40
no primeiro byte do O relatório de entrada) não éE2
.De fato, o sistema operacional atual, o driver do teclado e o layout do teclado podem não suportar a inserção de caracteres usando códigos como esse. (O emulador de terminal do kernel
syscons
do FreeBSD faz, por exemplo. O Microsoft Windows também, é claro. Mas o kit de ferramentas do noshconsole-fb-realizer
, GUIs como o LXDE e XFCE4 , e parece todas as GUIs disponíveis no Ubuntu ; não.) - O scanner está assumindo que o NumLock está desativado. Se o NumLock estiver ligado, ele deve estar fingindo que uma das teclas Shift também esteja pressionada, a fim de reverter o sentido da fechadura.
Com alguns scanners, essas coisas podem ser modificadas digitalizando códigos de barras especiais de "controle". Isso é provavelmente o que aconteceu aqui. Você digitalizou um código de barras de "controle" que ligou o scanner a um modo operacional que o sistema operacional, o driver do teclado e o layout do teclado não suportam. Nesse caso, você precisa consultar o manual do seu scanner e encontrar o código de controle que desativa o comportamento.
Por exemplo: Com um scanner da série NLS-HR32, esse é o efeito de colocar o scanner em "modo ALT + teclado 2" ou "modo ALT + teclado 3" e você precisaria voltar para "desativar ALT + Teclado "ou" modo ALT + Teclado 1 ".