feat(hid): support alternate gesture controls and disabled mode - #494
Open
4dux wants to merge 3 commits into
Open
feat(hid): support alternate gesture controls and disabled mode#4944dux wants to merge 3 commits into
4dux wants to merge 3 commits into
Conversation
Greptile SummaryThe PR adds an explicit Disabled gesture-control mode and supports the alternate raw-XY thumb-control CID while preferring the standard gesture CID.
Confidence Score: 5/5The PR appears safe to merge. No blocking failure remains; current control selection requires diversion capability, Disabled mode accepts divertable controls without requiring raw-XY support, and capture teardown restores the selected standard or alternate CID.
|
| Filename | Overview |
|---|---|
| crates/openlogi-hid/src/gesture.rs | Adds mode-aware control selection, actual-CID event handling and restoration, and correctly resolves both previously reported capability-selection defects. |
| crates/openlogi-hid/src/reprog_controls.rs | Defines the alternate gesture-control CID and explicit preference ordering. |
| crates/openlogi-agent-core/src/watchers/gesture.rs | Derives the desired gesture mode from shared state and restarts capture when that mode changes. |
| crates/openlogi-agent-core/src/orchestrator.rs | Publishes the persisted Disabled state to the capture watcher during each rebuild. |
| crates/openlogi-core/src/config.rs | Adds Disabled-state accessors while preserving existing gesture maps. |
| crates/openlogi-core/src/config/settings.rs | Extends the serialized gesture-owner scalar with the Disabled variant. |
| crates/openlogi-gui/src/mouse_model/view.rs | Presents Off and Disabled as distinct gesture-owner choices. |
| crates/openlogi-gui/src/state.rs | Persists Disabled mode and refreshes the projected binding state. |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart LR
Config["gesture_owner config"] --> Orchestrator["Orchestrator rebuild"]
Orchestrator --> Watcher["Gesture watcher"]
Watcher --> Native["Native: leave firmware ownership"]
Watcher --> Disabled["Disabled: divert without raw XY"]
Watcher --> Gestures["Gestures: divert with raw XY"]
Disabled --> Capture["HID++ capture session"]
Gestures --> Capture
Capture --> Selector["Select standard CID, then alternate CID"]
Selector --> Device["Logitech control"]
Reviews (5): Last reviewed commit: "fix(hid): select gesture controls by mod..." | Re-trigger Greptile
4dux
force-pushed
the
feat/gesture-control-disable
branch
from
August 2, 2026 12:35
a7cf8f8 to
af9d850
Compare
4dux
force-pushed
the
feat/gesture-control-disable
branch
from
August 4, 2026 08:32
a7f8bf5 to
2974543
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Some Logitech devices expose a raw-XY-capable thumb control under an alternate CID rather than the standard dedicated gesture CID
0x00c3. Recognize CID0x00d0as an alternate candidate when it advertises raw-XY support, without gating the behavior on a product ID or model name.Also add an explicit
Disabledmode. UnlikeOff, which restores native firmware behavior,Disableddiverts and discards the control without requesting raw-XY motion. This suppresses the native action without freezing normal pointer movement.Changes
0x00d0as an alternate gesture control.gesture_owner = "Disabled"state distinct from"Off".Disabledchoice besideOff.OffandDisabled.Testing
cargo fmt --all -- --checkcargo test -p openlogi-core -p openlogi-hid -p openlogi-agent-core -p openlogi-agent -p openlogi-guicargo clippy -p openlogi-core -p openlogi-hid -p openlogi-agent-core -p openlogi-agent --all-targets -- -D warningsDisabledsuppresses its native action, pointer motion remains active while it is held, and the setting survives an agent restart.