Emit mouse buttons 6-9 as pickable actions
- Dominant language
- Rust
- Stars
- 21k
- Forks
- 675
- Avg merge
- 1d 6h
- Merged PRs (30d)
- 180
Description
## Summary
The `Action` vocabulary caps mouse output at button 5 (`MouseForward`). Apps that bind higher buttons (CAD, Blender, games, MMO-mouse emulators) cannot receive them, even though the injection layer already supports arbitrary button numbers on macOS (`post_other_button(n)`) and Linux (evdev `BTN_*`).
## Design sketch (from the retired superpowers spec)
- Four unit variants `MouseButton6`-`MouseButton9` directly after `MouseForward`, mirroring that pattern. The picker rows, category grouping, TOML roundtrip, and per-platform injection are all data-driven off the enum, and the exhaustive matches (picker icon, inject arms) turn a missed variant into a compile error.
- Windows: `SendInput`'s mouse path only carries flags for buttons 1-5, so 6-9 stay a documented macOS/Linux-only gap.
Full design: [specs/2026-06-29-mouse-buttons-6-9-design.md @ 91fe5d80](https://github.com/AprilNEA/OpenLogi/blob/91fe5d80f3a2c16cf16061b3abb5a01d47fc8637/docs/superpowers/specs/2026-06-29-mouse-buttons-6-9-design.md). A step-by-step plan rode along in #344 but was never executed; the artifacts were removed from `docs/` in favor of this issue. Note the spec predates the `openlogi-gui` -> `openlogi-desktop` rename and the `binding.rs` module split, so file paths in it are stale.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with the current Action enum and trace the data-driven picker rows, category grouping, TOML roundtrip, and platform injection arms; use the linked design spec as context, but verify paths because it predates the openlogi-desktop rename and binding.rs split. Done means MouseButton6 through MouseButton9 are represented across those paths, macOS and Linux injection works, exhaustive matches compile, and the Windows limitation is documented.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- linux, macos, rust
- Domain
- desktop
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 64/100