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

Dir*_*irk 7 linux xorg input

当我在文本控制台(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,
Run Code Online (Sandbox Code Playgroud)

条形码中的每个数字都有一个 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
Run Code Online (Sandbox Code Playgroud)

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

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

jof*_*fel 2

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