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

时间:2014-05-30 16:26:51

标签: python keycode

我在Linux上编写程序,读取并区分两个模拟键盘的USB设备(两个条形码阅读器)的输入。

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

例如,当我读到' a'我有24岁,' b' 25等......

例如,当我读到'我得到了4,' b' 5,等等....

有没有办法在没有手动映射的情况下在char中转换代码?

一些输出例子:

KEYPRESS =输出= 数组(' B',[0,0,4,0,0,0,0,0])

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

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

KEYPRESS = ENTER output = 数组(' B',[0,0,81,0,0,0,0,0])

THX!

2 个答案:

答案 0 :(得分:2)

使用chr功能。 Python使用不同的字符映射(ASCII),但您必须在键值上添加73来修复偏移量。

>>> chr(24 + 73)
'a'
>>> chr(25 + 73)
'b'

答案 1 :(得分:2)

  

我已经可以从USB读取输入,但它在OS之前发生   在一个charactere中翻译keycode。   <击>   我的界面或驱动程序中出现了这个问题。

<击>

在ASCII&#39; a&#39;应该具有序数值97,其二进制表示为0b1100001,其中您接收的是27,其二进制表示为0b11000,类似于&#39; b&#39;你原本应该收到&#39; 0b1100010&#39;而你收到了25 0b11001。检查硬件以确定是否从输入中删除了第1位和第3位。

您收到的是USB扫描码。我认为没有第三方python库可以为您进行转换。我建议你引用USB Scan Code Table中的任何一个,然后从中创建一个USB扫描码与相应的ASCII字典。