Add wheel scroll settings#94
Conversation
There was a problem hiding this comment.
ℹ️ Minor suggestions inline — one observation about the scroll-settings default check.
Reviewed changes — Adds three scroll-preference controls (invert, strength, tactility) to the Settings window and changes default horizontal gesture swipes to desktop/Space switching.
- Default gesture direction update —
PrevTab/NextTabreplaced withPreviousDesktop/NextDesktop. - ScrollSettings shared state —
Arc<RwLock<ScrollSettings>>mirrors the persisted config to the hook runtime. - Scroll event transformation —
transform_scroll/quantize_scrollapply inversion, strength, and chunking to captured wheel events. - Session-tap re-injection — Transformed scroll events are posted at
CGEventTapLocation::Sessionto avoid re-capture by OpenLogi's HID tap. - Settings UI — Invert switch, strength slider (1–10), and tactility slider (0–10) in a new "Scroll" group box.
- Generalized
setting_row— Signature changed fromcontrol: Switchtocontrol: impl IntoElementto accept sliders alongside switches. - Expanded native-click passthrough —
Back→BrowserBackandForward→BrowserForwardadded.
Big Pickle (free) (credentials for Anthropic not configured) | 𝕏
There was a problem hiding this comment.
✅ Prior feedback addressed — no new issues found.
Reviewed changes — Fixed the ScrollSettings::default() mismatch with AppSettings defaults by replacing the derived Default with a manual impl whose strength: 1 matches the app config.
- Manual
Defaultimpl forScrollSettings— Replaced#[derive(Default)]with a manualimpl Defaultwherestrength: 1aligns withAppSettings::wheel_strength. This restores the identity fast-path inhook_runtime.rs.
Big Pickle (free) (credentials for Anthropic not configured) | 𝕏
|
This should close #126 |

Summary
This proposes two related mouse-control improvements:
Implementation notes
AppSettingsand mirrored into the hook runtime through a sharedScrollSettingsvalue.Verification
Ran locally on macOS:
cargo fmt --all cargo check -p openlogi-gui cargo test -p openlogi-gui -p openlogi-coreResults:
openlogi-core: 34 passedopenlogi-gui: 14 passed