d00c4aa371fadbf71eb936140d39d25abc737ac0
Add a Rust daemon that connects to QMK keyboards over their Raw HID interface (VID 0x3434, usage page 0xFF60 / usage 0x0061) and provides: - Bi-directional layer sync: CMD_LAYER_SYNC (0x40) packets are bridged between all connected keyboards so their active layers stay in sync. On connect, a FLAG_QUERY packet requests the current state from each keyboard. A second keyboard (numpad) is stubbed and ready to enable. - Volume monitoring: polls `pactl get-sink-volume @DEFAULT_SINK@` every 2 s and pushes CMD_VOLUME (0x41) packets on change. Compatible with both PulseAudio and PipeWire on KDE6/Wayland. - Brightness monitoring: polls /sys/class/backlight on the same interval and pushes CMD_BRIGHTNESS (0x42) packets on change. - Active-app stub: CMD_ACTIVE_APP (0x43) is reserved with detailed notes on KDE6/Wayland implementation approaches (KWin D-Bus, foreign toplevel protocol) for a future commit. Each keyboard runs a single combined read/write IO thread using a 10 ms read timeout to interleave HID reads and queued writes without needing two file handles. Protocol constants in src/protocol.rs mirror hid_protocol.h in the QMK firmware exactly. Licensed under GPL-3.0-or-later.
Description
No description provided
Languages
Rust
100%