USB HID代码之谜

时间:2018-12-09 06:56:22

标签: python-3.x

我目前正在用Python 3写出USB HID代码。

NULL_CHAR = chr(0)
def write_report(report):
with open('/dev/hidg0', 'rb+') as fd:
    fd.write(report.encode())

# Press SHIFT + a = A
write_report(chr(32)+NULL_CHAR+chr(4)+NULL_CHAR*5)
# Release all keys
write_report(NULL_CHAR*8)

我的问题:

通过查看USB.org(v1.12-10-21-2004-https://www.usb.org/document-library/hid-usage-tables-112)中的标准“ USB HID使用表” ...

通过积极运行上述示例,我知道 (使用十进制FYI中的“用法ID”), CHR(32) ,但是在HID表中,它显示了 Decimal( 32)是键盘 <3> <#> ..

那是怎么回事?

我使用的表是否错误,我应该使用ASCii代码而不是USB HID键盘代码吗?

是否有更好/更准确的代码表?

因为如果chr(32)实际上是,那么<3>是什么?

除了全文行之外,是否有更简便的方法来组合键入功能键(F1 + F3 + F5)并通过USB发出,这比我目前的操作方式更容易?

任何帮助专业人员解决此问题的方法将不胜感激!!!

1 个答案:

答案 0 :(得分:0)

不确定您是否还需要答案,但我在为同一件事头疼了一天后想通了。 您发送的信息必须始终以 8 个字节传输。 所以从你的例子来看:

pick 483ac92 first commit
pick bb739b7 second commit
pick 59f2bf0 very long commit with multiline

chr(32) 是字节 0(这是修饰符),然后是字节 1 的空字符,然后是字节 2 的实际字符,然后是另外 5 个空字符,使其成为 8。 修饰符遵循与实际字符不同的系统。

write_report(chr(32)+NULL_CHAR+chr(4)+NULL_CHAR*5)

所以 32 的原因是因为它是十六进制中 0x20 的十进制等效值。 希望这对您或其他任何寻找此答案的人有所帮助。