AprilNEA / AprilNEA/OpenLogi

Emit mouse buttons 6-9 as pickable actions

Open
#709 1 comment 0 reactions 0 assignees View on GitHub
needs: triage platform: linux platform: macos type: feature
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.