如何在python中将键码转换为字符?

如何在python中将键码转换为字符?,python,keycode,Python,Keycode,我正在Linux中编写一个程序,它读取并区分来自两个USB设备(两个条形码阅读器)的输入,这两个设备模拟键盘 我已经可以从USB读取输入,但它发生在操作系统转换字符中的键码之前 例如,当我读到“a”时,我得到了24,“b”25,等等 例如,当我读到“a”时,我得到了4,“b”5,等等 有没有办法不用手动映射就将代码转换成字符 一些输出示例: 按键=a输出=数组('B',[0,0,4,0,0,0,0]) KEYPRESS=SHIFT+a输出=数组('B',[2,0,4,0,0,0]) 按键=1输出

我正在Linux中编写一个程序,它读取并区分来自两个USB设备(两个条形码阅读器)的输入,这两个设备模拟键盘

我已经可以从USB读取输入,但它发生在操作系统转换字符中的键码之前

例如,当我读到“a”时,我得到了24,“b”25,等等

例如,当我读到“a”时,我得到了4,“b”5,等等

有没有办法不用手动映射就将代码转换成字符

一些输出示例:

按键=a输出=数组('B',[0,0,4,0,0,0,0])

KEYPRESS=SHIFT+a输出=数组('B',[2,0,4,0,0,0])

按键=1输出=数组('B',[0,0,30,0,0,0,0])

按键=输入输出=数组('B',[0,0,81,0,0,0,0])

谢谢

使用该函数。Python使用不同于您所接收的字符映射(),因此您必须向键值中添加73来修复偏移量

>>> chr(24 + 73)
'a'
>>> chr(25 + 73)
'b'
我已经可以从USB读取输入,但它发生在操作系统之前 翻译字符中的键代码。 在我看来,您的界面或驱动程序似乎存在问题

在ASCII中,“a”应具有序数值97,其二进制表示形式为
0b1100001
,其中您接收的是27,其二进制表示形式为
0b11000
,类似地,对于“b”,您应接收“0B11000010”,而不是接收25,其二进制表示形式为
0b11001
。检查硬件以确定是否从输入中删除了第1位和第3位。


您收到的是USB扫描代码。我认为没有第三方python库可以为您进行转换。我建议您参考其中任何一个,并从中创建一个USB扫描代码与相应ASCII的字典

谢谢你,Abhijit,但是我的接收数据是正确的。我在我的帖子里犯了一个错误,但我已经改正了。再次感谢你,阿比吉特!我会搜索pythonusb或其他第三方是否有这种方法!你的答案很有用,对不起,我没有足够的分数来打分。谢谢!这是一个很好的解决方案,但它只适用于字母字符。4+93=97但当我按“1”时,我已经读了30+93!=49