Skip to content

Smooth move-repeat pointer movement #583

Description

@enaboapps

Summary

Replace repeated full-delta pointer jumps with continuous, time-based pixel movement for mouse.move repeat commands.

Scope

  • Run held move-repeat at an internal 8 ms cadence.
  • Preserve the existing command delta, pointer speed, movement interval, and acceleration settings as the velocity model.
  • Emit an immediate pixel-sized step for short presses, then accumulate fractional displacement into whole-pixel movement.
  • Account for timer jitter without large catch-up jumps.
  • Keep one-off movement and all scrolling behavior unchanged.
  • Preserve equivalent Windows and macOS behavior and all existing repeat cleanup guarantees.

Acceptance criteria

  • Held pointer movement is continuous rather than a full jump at each configured repeat interval.
  • A short press produces an immediate pixel-sized movement.
  • Average speed continues to respond to pointer speed and Movement interval.
  • Acceleration still ramps from 25% to full speed using the selected duration.
  • Release, replacement, disable, disconnect, shutdown, and injection failure stop movement deterministically.
  • Protocol and persisted settings schemas remain compatible.
  • Automated tests use fake input adapters and cover timing, accumulation, generation ownership, and unchanged scroll/one-off behavior.
  • Required frontend and Rust validation passes on Node.js 24 and Rust 1.97.1.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions