纯Python库,用于解析HID报告描述符
项目描述
python-hid-parser
纯Python库,用于解析HID报告描述符
示例
>>> import hid_parser
>>> simple_mouse_rdesc_raw = [
...     0x05, 0x01,  # .Usage Page (Generic Desktop)        0
...     0x09, 0x02,  # .Usage (Mouse)                       2
...     0xa1, 0x01,  # .Collection (Application)            4
...     0x09, 0x02,  # ..Usage (Mouse)                      6
...     0xa1, 0x02,  # ..Collection (Logical)               8
...     0x09, 0x01,  # ...Usage (Pointer)                   10
...     0xa1, 0x00,  # ...Collection (Physical)             12
...     0x05, 0x09,  # ....Usage Page (Button)              14
...     0x19, 0x01,  # ....Usage Minimum (1)                16
...     0x29, 0x03,  # ....Usage Maximum (3)                18
...     0x15, 0x00,  # ....Logical Minimum (0)              20
...     0x25, 0x01,  # ....Logical Maximum (1)              22
...     0x75, 0x01,  # ....Report Size (1)                  24
...     0x95, 0x03,  # ....Report Count (3)                 26
...     0x81, 0x02,  # ....Input (Data,Var,Abs)             28
...     0x75, 0x05,  # ....Report Size (5)                  30
...     0x95, 0x01,  # ....Report Count (1)                 32
...     0x81, 0x03,  # ....Input (Cnst,Var,Abs)             34
...     0x05, 0x01,  # ....Usage Page (Generic Desktop)     36
...     0x09, 0x30,  # ....Usage (X)                        38
...     0x09, 0x31,  # ....Usage (Y)                        40
...     0x15, 0x81,  # ....Logical Minimum (-127)           42
...     0x25, 0x7f,  # ....Logical Maximum (127)            44
...     0x75, 0x08,  # ....Report Size (8)                  46
...     0x95, 0x02,  # ....Report Count (2)                 48
...     0x81, 0x06,  # ....Input (Data,Var,Rel)             50
...     0xc0,        # ...End Collection                    52
...     0xc0,        # ..End Collection                     53
...     0xc0,        # .End Collection                      54
... ]
>>> rdesc = hid_parser.ReportDescriptor(simple_mouse_rdesc_raw)
>>> rdesc.get_input_report_size()
3bytes
>>> for item in rdesc.get_input_items():
...     print(item)
...
VariableItem(offset=0bits, size=1bit, usage=Usage(page=Button, usage=Button 1 (primary/trigger)))
VariableItem(offset=1bit, size=1bit, usage=Usage(page=Button, usage=Button 2 (secondary)))
VariableItem(offset=2bits, size=1bit, usage=Usage(page=Button, usage=Button 3 (tertiary)))
PaddingItem(offset=3bits, size=5bits)
VariableItem(offset=1byte, size=1byte, usage=Usage(page=Generic Desktop Controls, usage=X))
VariableItem(offset=2bytes, size=1byte, usage=Usage(page=Generic Desktop Controls, usage=Y))
>>> import hid_parser
>>> vendor_command_rdesc_raw = [
...     0x06, 0x00, 0xff,  # .Usage Page (Vendor Defined Page 1)  0
...     0x09, 0x01,        # .Usage (Vendor Usage 1)              3
...     0xa1, 0x01,        # .Collection (Application)            5
...     0x85, 0x10,        # ..Report ID (16)                     7
...     0x75, 0x08,        # ..Report Size (8)                    9
...     0x95, 0x06,        # ..Report Count (6)                   11
...     0x15, 0x00,        # ..Logical Minimum (0)                12
...     0x26, 0xff, 0x00,  # ..Logical Maximum (255)              15
...     0x09, 0x01,        # ..Usage (Vendor Usage 1)             18
...     0x81, 0x00,        # ..Input (Data,Arr,Abs)               20
...     0x09, 0x01,        # ..Usage (Vendor Usage 1)             22
...     0x91, 0x00,        # ..Output (Data,Arr,Abs)              24
...     0xc0,              # .End Collection                      26
... ]
>>> rdesc = hid_parser.ReportDescriptor(vendor_command_rdesc_raw)
>>> rdesc.get_input_report_size(0x10)
6bytes
>>> for item in rdesc.get_input_items(0x10):
...     print(item)
...
ArrayItem(
    offset=0bits, size=1byte,
    usages=[
        Usage(page=Vendor Page, usage=0x0001),
    ],
)
ArrayItem(
    offset=1byte, size=1byte,
    usages=[
        Usage(page=Vendor Page, usage=0x0001),
    ],
)
ArrayItem(
    offset=2bytes, size=1byte,
    usages=[
        Usage(page=Vendor Page, usage=0x0001),
    ],
)
ArrayItem(
    offset=3bytes, size=1byte,
    usages=[
        Usage(page=Vendor Page, usage=0x0001),
    ],
)
ArrayItem(
    offset=4bytes, size=1byte,
    usages=[
        Usage(page=Vendor Page, usage=0x0001),
    ],
)
ArrayItem(
    offset=5bytes, size=1byte,
    usages=[
        Usage(page=Vendor Page, usage=0x0001),
    ],
)
          项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关 安装软件包 的更多信息。
源分布
         hid-parser-0.0.3.tar.gz  (30.7 kB 查看哈希值)
      
    构建分布
         hid_parser-0.0.3-py3-none-any.whl  (22.4 kB 查看哈希值)
      
    
    
       关闭
    
      
        
    
    
  
hid-parser-0.0.3.tar.gz的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | cdb9be87e89e0e67752b4b87fbd07c116b5849cc6a6095d5a58f5b5dd062bc0e | |
| MD5 | b2c79f11bc524b442e6d7d9b9e1feb38 | |
| BLAKE2b-256 | 48af6266119b18570fee7dc838c3389e37db3586a4e2003de709cf4ac24e395a | 
    
       关闭
    
      
        
    
    
  
hid_parser-0.0.3-py3-none-any.whl的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | abbb6323728fef5e2f65b8d91960cf1b8ede2545f92fe319417470997d6e6819 | |
| MD5 | 0881c7a0bad2a3598355b6768ed720bb | |
| BLAKE2b-256 | 5a8509466ddd8762c3e792878543277db1c09e481a57c33d6b835ec4d6e4487b |