我在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!
答案 0 :(得分:2)
答案 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字典。