Merge pull request #4558 from dhalbert/6.2.x-fix-hid-order

Put mouse before gamepad due to MacOS being finicky
This commit is contained in:
Jeff Epler 2021-04-04 20:36:14 -05:00 committed by GitHub
commit 71576932a3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -17,9 +17,11 @@ ALL_DEVICES = "CDC CDC2 MSC AUDIO HID VENDOR"
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"
@ -352,7 +354,8 @@ if include_hid:
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))
)