feat: implement initial cyborg multi-action button mappings

- Added support for Single, Long, and Double press actions in libazeron.
- Mapped Cyborg surgical command IDs (0x20F6, 0x20F8, 0x204A).
- Updated azeron-cli to support --long and --double mapping flags.
- Updated protocol documentation with newly discovered Cyborg commands.
- Added TODO.md for remaining joystick and timing tasks.
This commit is contained in:
2026-02-22 19:08:13 +00:00
parent db5c3505da
commit 18f84a538a
12 changed files with 37131 additions and 152 deletions

20
TODO.md Normal file
View File

@@ -0,0 +1,20 @@
# Azeron Cyborg Linux Support - Remaining Tasks
## Protocol Implementation
- [ ] **Joystick Bulk Write (`0x26EC`)**: Implement `azeron_protocol_set_stick_config` using the new bulk write format.
- Map mode byte (index 3).
- Map stick angle (index 8).
- Map deadzone/sensitivity.
- [ ] **Global Timings (`0x2000`)**: Implement a function to set Long Press and Double Click delays.
- [ ] **Verify Read Configuration**: Confirm if `0x26FB` works for Cyborg or if a new read command is required (Heartbeat showed `0x12EA/EB` pairs).
- [ ] **Surgical Button Persistence**: Verify if `0x204B` (Commit) is sufficient for all surgical updates or if `0x26ED` is needed.
## CLI Enhancements
- [ ] **Joystick Commands**: Add `set-stick-mode` and `set-stick-angle`.
- [ ] **Timing Commands**: Add `set-delays --long <ms> --double <ms>`.
- [ ] **Action Feedback**: Update `show-mappings` to display all three actions (Single, Long, Double) per button.
## Testing & Validation
- [ ] **Linux Verification**: Test all surgical updates (`0x20F6/F8/4A`) using `libusb` on Linux.
- [ ] **Persistence Check**: Ensure settings survive a device power cycle.
- [ ] **Input Monitoring**: Verify that Linux input events (EV_KEY) correctly match the new mappings.