Python 如何将USB键盘数据包或使用id/代码转换为ASCII或其他方便的格式?

Python 如何将USB键盘数据包或使用id/代码转换为ASCII或其他方便的格式?,python,keyboard,usb,wireshark,packet,Python,Keyboard,Usb,Wireshark,Packet,我正在分析从USB键盘捕获的数据包。我正在寻找一个python库或字典,它可以将保存使用ID(单个按键)的最后一个字节,甚至仅仅第三个字节转换为ASCII码(或者转换为其他有用的数据结构,让我可以快速提取键入的字符) 下面是几个代表“g”和“{”按键的示例数据包(第二个数据包是“[”,右移位被按下)。(注意:只看最后8个字节) 有关用法ID的更多信息,请参阅的第53页。 是相关的,但我正在寻找一种在python中实现这一点的简单方法,而不必创建自己的字典。请注意,这不会返回正确的代码。由于您的键

我正在分析从USB键盘捕获的数据包。我正在寻找一个python库或字典,它可以将保存使用ID(单个按键)的最后一个字节,甚至仅仅第三个字节转换为ASCII码(或者转换为其他有用的数据结构,让我可以快速提取键入的字符)

下面是几个代表“g”和“{”按键的示例数据包(第二个数据包是“[”,右移位被按下)。(注意:只看最后8个字节)

有关用法ID的更多信息,请参阅的第53页。
是相关的,但我正在寻找一种在python中实现这一点的简单方法,而不必创建自己的字典。请注意,这不会返回正确的代码。

由于您的键盘实际上只发送USB HID使用ID,因此您必须编写一个转换表(afaik,并且:转换由驱动程序/内核模块完成)

usb\u hid
中,内核模块是一个转换表,因此如果键盘可以使用此模块,则可以跳过转换()

它以
0,0,0,0,30,48,46,…
compare to开头
.这是一个将USB HID使用ID转换为普通PS/2扫描码的表格(表格为十六进制)

在中,有一个现成的USB HID使用ID解决方案链接到扫描代码表,您可以复制:

在该表中,USB行是USB使用页面+USB使用ID,因此
0x070004
是keycode'KEY\u A'

如果您有scancode或keycode,您可以像在或中一样使用
evdev

0000  1b 00 40 39 2d ac 89 b6 ff ff 00 00 00 00 09 00   ..@9-...........
0010  01 02 00 01 00 81 01 08 00 00 00 00 00 0a 00 00   ................
0020  00 00 00                                          ...

0000  1b 00 c0 e8 82 b4 89 b6 ff ff 00 00 00 00 09 00   ................
0010  01 02 00 01 00 81 01 08 00 00 00 00 00 00 00 00   ................
0020  00 00 00                                          ...

0000  1b 00 40 39 2d ac 89 b6 ff ff 00 00 00 00 09 00   ..@9-...........
0010  01 02 00 01 00 81 01 08 00 00 00 20 00 00 00 00   ........... ....
0020  00 00 00                                          ...

0000  1b 00 c0 e8 82 b4 89 b6 ff ff 00 00 00 00 09 00   ................
0010  01 02 00 01 00 81 01 08 00 00 00 20 00 2f 00 00   ........... ./..
0020  00 00 00                                          ...