Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python GTK无法从条形码扫描仪设备接收键盘输入_Python_Keyboard_Gtk - Fatal编程技术网

Python GTK无法从条形码扫描仪设备接收键盘输入

Python GTK无法从条形码扫描仪设备接收键盘输入,python,keyboard,gtk,Python,Keyboard,Gtk,我有一个便宜的亚马逊原产地条形码扫描仪,它看起来像一个USB键盘。在Windows应用程序上扫描各种二维码时,输出适当的文本完全没有问题 但是,我使用的任何Windows GTK应用程序都不会解释此文本。这包括一个定制的Python应用程序,以及GIMP、Glade和gedit。例外情况是空格和新行字符,它们被准确地解释。编辑:我的问题是,我需要它来处理我的Python GTK应用程序 在Python中转储键事件时,返回的键代码在65000+代码点范围内。一些字符串“ABCDEFGH”的简短打印

我有一个便宜的亚马逊原产地条形码扫描仪,它看起来像一个USB键盘。在Windows应用程序上扫描各种二维码时,输出适当的文本完全没有问题

但是,我使用的任何Windows GTK应用程序都不会解释此文本。这包括一个定制的Python应用程序,以及GIMP、Glade和gedit。例外情况是空格和新行字符,它们被准确地解释。编辑:我的问题是,我需要它来处理我的Python GTK应用程序

在Python中转储键事件时,返回的键代码在65000+代码点范围内。一些字符串“ABCDEFGH”的简短打印输出…:

应用程序在普通USB键盘上接受普通按键没有问题,复制/粘贴也可以正常工作

最奇怪的是,这些奇怪的键码没有出现在其他诊断应用程序中,例如,我试图用Google Chrome和一些JS读取键码,然后返回了更典型的ASCII键码范围(大约65-90)。我还借了一台更贵的摩托罗拉符号扫描仪,它也能正常工作。这台廉价的Eyoyo EY-001扫描仪似乎是唯一一台以这种方式工作的设备

我还没有在Linux上尝试过这个。这将是我的下一步


这台扫描仪似乎正在发送一组奇怪的扩展密钥代码,或者以某种不寻常的方式发送密钥代码,GTK无法很好地处理这些代码。因为代码似乎是重复的,所以如果它是编码的话,似乎不可能轻易地删除这种编码。还有其他人遇到过这个问题吗?有什么已知的解决办法吗?

所以,我想出来了,这是一个非常奇怪的原因

“键盘”设备未发送实际字符。相反,它持有
ALT
,然后发送
097
,最后释放
ALT
,以发送
a
。Pygame可以捕捉到这种行为。GTK似乎无法正确捕获此操作,而是返回垃圾数据

由于
-nnn
格式是一种特定于Windows的输入键盘代码的方式,我怀疑这是一种稍微向后兼容的方式,用于二维码扫描仪通过键盘接口发送扩展字符集。然而,这并不能解释为什么其他键盘模拟条形码扫描仪不能以这种方式工作


要解决此问题,必须选择ALT键并将以下三位数字解码为ASCII字符。

通常,堆栈溢出是针对编程过程中出现的问题,或用于编程的软件。您的问题是如何将现有的软件与现有的硬件结合使用,这很不幸地超出了Stackoverflow的范围。但是,由于您花费了大量精力编写问题,甚至包括原始密钥转储,我将您的问题标记为迁移到SuperUser,在那里,他们将使用通用软件和硬件问题,以及您的问题的主题。@ferrybig我不认为这是一个超级用户问题,因为它涉及到为什么库返回错误的值,以及如何在Python中解决这个问题。
keyval PRS ffb0 (65456)
keyval REL ffb0 (65456)
keyval PRS ffb9 (65465)
keyval REL ffb9 (65465)
keyval PRS ffb7 (65463)
keyval REL ffb7 (65463)
keyval REL ffe9 (65513)
keyval PRS ffe9 (65513)
keyval PRS ffb0 (65456)
keyval REL ffb0 (65456)
keyval PRS ffb9 (65465)
keyval REL ffb9 (65465)
keyval PRS ffb8 (65464)
keyval REL ffb8 (65464)
keyval REL ffe9 (65513)
keyval PRS ffe9 (65513)
keyval PRS ffb0 (65456)
keyval REL ffb0 (65456)
keyval PRS ffb9 (65465)
keyval REL ffb9 (65465)
keyval PRS ffb9 (65465)
keyval REL ffb9 (65465)
keyval REL ffe9 (65513)
keyval PRS ffe9 (65513)
keyval PRS ffb1 (65457)
keyval REL ffb1 (65457)
keyval PRS ffb0 (65456)
keyval REL ffb0 (65456)
keyval PRS ffb0 (65456)
keyval REL ffb0 (65456)
keyval REL ffe9 (65513)
keyval PRS ffe9 (65513)