如何在Python中将键码转换为字符?
我正在Linux上写一个程序,这个程序可以读取并区分来自两个USB设备(两个条形码扫描器)的输入,这些设备模拟键盘的功能。
我已经可以读取USB的输入了,但这个输入是在操作系统把按键代码转换成字符之前读取的。
比如说,当我读取到'a'时,我得到的是24,'b'时得到的是25,等等……
举个例子,当我读取到'a'时,我得到的是4,'b'时得到的是5,等等……
有没有办法在不手动映射的情况下把这个代码转换成字符呢?
以下是一些输出示例:
按下KEYPRESS = a 输出 = array('B', [0, 0, 4, 0, 0, 0, 0, 0])
按下KEYPRESS = SHIFT + a 输出 = array('B', [2, 0, 4, 0, 0, 0, 0, 0])
按下KEYPRESS = 1 输出 = array('B', [0, 0, 30, 0, 0, 0, 0, 0])
按下KEYPRESS = ENTER 输出 = array('B', [0, 0, 81, 0, 0, 0, 0, 0])
谢谢!
2 个回答
2
我已经可以从USB读取输入了,但这发生在操作系统将按键代码转换成字符之前。
我觉得问题出在你的接口或驱动程序上。
在ASCII编码中,字母'a'的值是97,它的二进制表示是0b1100001
,而你收到的是27,它的二进制表示是0b11000
。同样,字母'b'应该是0b1100010
,但你收到的是25,二进制是0b11001
。检查一下你的硬件,看看输入的第1位和第3位是否丢失了。
你收到的是USB扫描码。我认为没有第三方的Python库可以帮你完成这个转换。我建议你参考一下USB扫描码表,然后根据这个表创建一个USB扫描码和对应ASCII字符的字典。