Skip to content

Commit

Permalink
Merge pull request #4560 from dhalbert/fix-hid-order
Browse files Browse the repository at this point in the history
Put mouse before gamepad due to MacOS being finicky
  • Loading branch information
dhalbert authored Apr 5, 2021
2 parents ae80378 + 0357af1 commit a156243
Showing 1 changed file with 4 additions and 1 deletion.
5 changes: 4 additions & 1 deletion tools/gen_usb_descriptor.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,11 @@
ALL_DEVICES_SET = frozenset(ALL_DEVICES.split())
DEFAULT_DEVICES = "CDC MSC AUDIO HID"

# This list is in preferred order. MacOS does not like GAMEPAD coming before MOUSE.
ALL_HID_DEVICES = (
"KEYBOARD MOUSE CONSUMER SYS_CONTROL GAMEPAD DIGITIZER XAC_COMPATIBLE_GAMEPAD RAW"
)
ALL_HID_DEVICES_ORDER = dict((name, idx) for (idx, name) in enumerate(ALL_HID_DEVICES.split()))
ALL_HID_DEVICES_SET = frozenset(ALL_HID_DEVICES.split())
# Digitizer works on Linux but conflicts with mouse, so omit it.
DEFAULT_HID_DEVICES = "KEYBOARD MOUSE CONSUMER GAMEPAD"
Expand Down Expand Up @@ -352,7 +354,8 @@ def make_cdc_data_interface(name, cdc_ep_num_data_in, cdc_ep_num_data_out):
else:
report_id = 1
concatenated_descriptors = bytearray()
for name in args.hid_devices:
# Sort HID devices by preferred order.
for name in sorted(args.hid_devices, key=ALL_HID_DEVICES_ORDER.get):
concatenated_descriptors.extend(
bytes(hid_report_descriptors.REPORT_DESCRIPTOR_FUNCTIONS[name](report_id))
)
Expand Down

0 comments on commit a156243

Please sign in to comment.