Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 59 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,3 +88,62 @@ with hid.Device(vid, pid) as h:
print(f'Serial Number: {h.serial}')
```


Sending and receiving data can be done with following code:

```python
import sys
import hid

vendor_id = 0x4335
product_id = 0x0002

usage_page = 0xFF60
usage = 0x61
report_length = 32

def get_raw_hid_interface():
device_interfaces = hid.enumerate(vendor_id, product_id)
raw_hid_interfaces = [i for i in device_interfaces if i['usage_page'] == usage_page and i['usage'] == usage]

if len(raw_hid_interfaces) == 0:
return None

interface = hid.Device(path=raw_hid_interfaces[0]['path'])

print(f"Manufacturer: {interface.manufacturer}")
print(f"Product: {interface.product}")

return interface

def send_raw_report(data):
interface = get_raw_hid_interface()

if interface is None:
print("No device found")
sys.exit(1)

request_data = [0x00] * (report_length + 1) # First byte is Report ID
request_data[1:len(data) + 1] = data
request_report = bytes(request_data)

print("Request:")
print(request_report)

try:
interface.write(request_report)

response_report = interface.read(report_length, timeout=1000)

print("Response:")
print(response_report)
finally:
interface.close()

if __name__ == '__main__':
send_raw_report([
0x41
])
```
Source: https://docs.qmk.fm/features/rawhid#simple-example