Phase 4 foundation, independent of the presentation mechanism:
- hid/hid_report.hpp: standard Xbox One report layout (64-byte input:
buttons/guide/triggers/sticks; 64-byte output: motors), the HID
report descriptor, and GIP state to report mapping.
- make_input_report(): remaps GIP button bits to the standard Xbox
bitmask, scales 10-bit triggers to 8-bit, sticks pass through.
- parse_output_report(): extracts motor intensities from output
reports for the rumble relay; malformed reports stop the motors.
- test_hid: unit tests for the mapping, scaling, and descriptor.
Report packing verified with a descriptor walker: input and output
are exactly 64 bytes each. Next step is presentation via DriverKit,
which needs a Developer ID with the DriverKit entitlement.
Co-Authored-By: qwen3.8-27b@q3_k_xl: implemented HID report layer
Add the CMake build for the Swift + C++ macOS port, mirroring the
refix layout: deps/ modules (Platform, Flags, Sanitizers, FindUnity),
per-module static libraries (usb, auth, mt76, gip, hid, api), a Swift
app entry point with a pure C bridge header, and a Unity test suite
behind BUILD_TESTING.
Swift requires the Ninja or Xcode generator; a guard in
CMakeLists.txt rejects anything else.
Co-Authored-By: qwen (qwen/qwen3.8-27b@q2_k_xl): scaffolded CMake build + tests