a24cfe64c4
R1-R10 audit Gap 10: evdevd had zero HID quirk consumption. The lookup_hid_quirks entry point in redox-driver-sys was populated by R10 with 191 compiled-in entries + TOML support, but no consumer read it. Every InputDevice entering the evdev scheme flew past the HID quirk table. This change: - Adds a redox-driver-sys path dependency to source/Cargo.toml. Path mirrors the depth used by pcid/usbhidd (4 ../ levels to reach local/, then recipes/drivers/redox-driver-sys/source). - Adds source/src/quirks.rs with one public function, log_hid_quirks(vendor, product, kind), that calls lookup_hid_quirks and emits an info-level line on a non-empty result, debug-level on empty. - Wires the call into EvdevScheme::add_device() at the moment the InputDevice is created, before it is pushed onto the device list. - Adds 'mod quirks' to main.rs module declarations. Caveat (carried forward from the audit, 2026-06-07): evdevd currently constructs InputDevice with vendor=0 because the upstream usbhidd produces orbclient::Event streams without forwarding the real USB vendor/product IDs. The lookup therefore returns empty flags in practice. Once the orbclient event pipe is extended to carry the device IDs, the wiring below will start logging the matched flag sets without any further code change. This is documented in the module-level docstring of quirks.rs. 4 unit tests cover the wiring: - synthetic zero-vendor returns empty - synthetic product IDs 0..32 return empty (these are the IDs evdevd currently assigns) - a real Linux HID table entry (0x06d6:0x0025 → BADPAD) returns the expected flag - the log helper does not panic on any input Note on pre-existing test errors: cargo test fails to compile the test binary because of unrelated errors in src/translate.rs:517,534 and src/gesture.rs:1 (a 'translate_gesture' function that no longer exists). These pre-date this change and are out of scope for Gap 10. cargo check is clean (zero new warnings from this change); the failing tests are in the existing scheme.rs and device.rs test modules that have nothing to do with the new quirks module.