Muitas vezes, você pode reconfigurar seu leitor de código de barras para produzir uma saída utilizável melhor. A configuração geralmente é feita com a digitalização de códigos de barras especiais - veja a documentação.
Quando eu digitalizo um código de barras em um console de texto (CTRL + ALT + F1 ou não estou executando X) recebo a entrada correta, mas quando tento um aplicativo em execução no X, não obtenho o código de barras correto.
O scanner está configurado para retornar o código de barras seguido por um 'n'. Em X eu só obtenho o 'n', não o código de barras anterior.
Eu corri o xev para ver o que está acontecendo. Aqui está um trecho da saída:
> KeyPress event, serial 35, synthetic NO, window 0x6800001,
> state 0x10, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
> KeyRelease event, serial 35, synthetic NO, window 0x6800001,
> state 0x18, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
> KeyPress event, serial 35, synthetic NO, window 0x6800001,
> state 0x10, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
> KeyRelease event, serial 35, synthetic NO, window 0x6800001,
> state 0x18, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
Existe um par de eventos KeyPress / KeyRelease para cada dígito no código de barras, mas não há eventos entre o evento KeyPress e KeyRelease para Alt_L?
Devo examinar as teclas de composição para uma solução ou como posso corresponder ao comportamento de um console normal?
ps. Estou usando um scanner de código de barras Welch Allyn ST3400.
EDITAR:
Eu corri showkey na linha de comando e digitalizados em um código de barras. Esta é a saída que recebi:
keycode 28 release
keycode 56 press
keycode 82 press
keycode 76 press
keycode 80 press
keycode 56 release
keycode 56 press
keycode 82 press
keycode 75 press
keycode 73 press
keycode 56 release
Parece que o scanner de código de barras está usando Left-Alt + # + # + # para obter os caracteres corretos. Também parece que o scanner de código de barras nunca envia um evento de lançamento para as teclas numpad que ele usou junto com o Left-Alt? Eu li algo semelhante em um fórum diferente - sem uma solução embora. Se eu usar manualmente Left-Alt + # + # + # com showkey, eu vou pressionar e soltar para cada tecla.
A questão agora é: por que não há evento KeyPress quando estou executando o Xorg?