运行 xorg 和 evdev 时的条形码扫描仪输入

运行 xorg 和 evdev 时的条形码扫描仪输入

当我在文本控制台(CTRL+ALT+F1 或不运行 X)中扫描条形码时,我得到了正确的输入,但是当我尝试在 X 上运行的应用程序时,我没有得到正确的条形码。

扫描仪配置为返回条形码,后跟“n”。在 XI 下仅获取“n”,而不获取前面的条形码。

我运行 xev 看看发生了什么。以下是输出的摘录:

> 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,

条形码中的每个数字都有一个 KeyPress/KeyRelease 事件对,但 Alt_L 的 KeyPress 和 KeyRelease 事件之间没有发生任何事件?

我应该寻找解决方案的组合键,或者如何匹配普通控制台的行为?

附注我使用的是 Welch Allyn ST3400 条码扫描仪。

编辑:

我在命令行上运行 showkey 并扫描条形码。这是我得到的输出:

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

条形码扫描仪似乎使用 Left-Alt+#+#+# 来获取正确的字符。条形码扫描仪似乎从未发送与 Left-Alt 一起使用的数字键盘键的释放事件?我在另一个论坛上读到了类似的内容 - 但没有解决方案。如果我手动使用 Left-Alt+#+#+# 和 showkey,我会按下并释放每个键。

现在的问题是,为什么当我运行 Xorg 时没有 KeyPress 事件?

答案1

通常,您可以重新配置条形码阅读器以输出更好的可用输出。配置通常是通过扫描特殊条形码来完成的 - 请查看文档。

相关内容