Skip to content

fix(thumbwheel): scale remapped vertical scrolling - #925

Open
hsearcy wants to merge 2 commits into
AprilNEA:masterfrom
hsearcy:fix/thumbwheel-vertical-scroll
Open

fix(thumbwheel): scale remapped vertical scrolling#925
hsearcy wants to merge 2 commits into
AprilNEA:masterfrom
hsearcy:fix/thumbwheel-vertical-scroll

Conversation

@hsearcy

@hsearcy hsearcy commented Aug 24, 2026

Copy link
Copy Markdown

Summary

Remapped thumb-wheel ScrollUp / ScrollDown actions currently go through the discrete-action path, so thumbwheel_sensitivity changes their trigger threshold but not the amount scrolled. On affected devices this produces the very slow vertical scrolling reported in #737, and setting the sensitivity as high as 100 still does not meaningfully change the scroll distance.

Route vertical scroll actions through the same continuous, native-resolution-aware accumulator used by horizontal thumb-wheel scrolling. The configured sensitivity is now a proportional multiplier for either scroll axis.

Changes

  • openlogi-agent-core: treat all four scroll actions as continuous thumb-wheel output, carrying explicit horizontal and vertical deltas; add vertical-axis regression coverage.
  • openlogi-inject: generalize diverted thumb-wheel injection to (delta_x, delta_y) on macOS, Linux, and Windows.
  • openlogi-core: document that thumb-wheel sensitivity scales remapped vertical scrolling too.
  • openlogi-desktop: add a Vertical Scroll (Reversed) thumb-wheel preset and cover its binding pair.
  • openlogi-ui: add the new preset label to every locale catalog.

Related work

Testing

  • cargo fmt --all -- --check
  • cargo clippy --workspace --all-targets -- -D warnings
  • cargo test -p openlogi-agent-core watchers::gesture::tests — 16 passed, including binding-change accumulator isolation
  • cargo test -p openlogi-desktop thumbwheel — 12 passed
  • cargo test -p openlogi-desktop services::i18n::tests::locale_file_resolves_keys — passed
  • cargo test -p openlogi-ui locale — 3 passed
  • cargo check -p openlogi-inject
  • cargo doc -p openlogi-inject -p openlogi-agent-core --no-deps --document-private-items with RUSTDOCFLAGS=-D warnings

cargo test --workspace passes all product and feature suites locally, but the command exits on an existing Windows-only xtask assertion: its workflow parser joins \\\n continuations while this checkout contains \\\r\n. The full non-GUI rustdoc command likewise reaches an existing Windows-gated broken link in openlogi-permissions; warnings-denied rustdoc passes for both changed non-GUI crates.

Not runtime-tested on hardware. The Windows injector compiled on the test host; macOS and Linux injection branches were hand-audited but not compiled locally.

Fixes #737

@greptile-apps

greptile-apps Bot commented Aug 24, 2026

Copy link
Copy Markdown

Greptile Summary

Routes remapped vertical thumb-wheel actions through the same sensitivity-scaled accumulator and cross-platform injection path as horizontal scrolling.

  • Tracks the active scroll binding so fractional progress is reset when the axis or direction changes.
  • Generalizes macOS, Linux, and Windows injection to carry horizontal and vertical deltas.
  • Adds a reversed vertical-scroll preset, regression tests, documentation updates, and localized labels.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains; the active scroll-binding identity now prevents fractional progress from crossing axes or directions after a live binding change.

Important Files Changed

Filename Overview
crates/openlogi-agent-core/src/watchers/gesture.rs Adds axis-aware continuous scrolling and resets retained fractional progress whenever the effective scroll binding changes, resolving the previous accumulator-crossing issue.
crates/openlogi-inject/src/inject.rs Generalizes diverted thumb-wheel reinjection to explicit horizontal and vertical deltas.
crates/openlogi-inject/src/inject/macos.rs Emits both scroll axes through the Core Graphics line-scroll event.
crates/openlogi-inject/src/inject/windows.rs Emits vertical and horizontal wheel inputs with the appropriate Win32 event flags.
crates/openlogi-desktop/src/features/mouse/thumbwheel.rs Adds and tests the reversed vertical-scroll preset and its action pair.

Reviews (2): Last reviewed commit: "fix(thumbwheel): isolate fractional bind..." | Re-trigger Greptile

Comment thread crates/openlogi-agent-core/src/watchers/gesture.rs
@hsearcy
hsearcy force-pushed the fix/thumbwheel-vertical-scroll branch from 59ed9e1 to c005054 Compare August 24, 2026 14:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: vertical scroll on thumb wheel doesn't work.

1 participant