feat(linux/input): optional absolute mouse as relative motion - #5529
feat(linux/input): optional absolute mouse as relative motion#5529danalec wants to merge 1 commit into
Conversation
|
@danalec It won't pass until I approve the workflows. Anyway... Thank you for the PR submission, but it looks like you used AI to create this PR. Please read and follow our Contributing guidelines and specifically our AI Usage policy. Additionally, please update the PR to use the correct template. You can find it at https://github.com/LizardByte/.github/blob/master/.github/pull_request_template.md?plain=1 |
7fc91f8 to
25164e4
Compare
|
This might also fix absolute touch input on KDE in a multi-monitor scenario as that currently sends the touch events to a fixed monitor (configurable in systemsettings) instead of selecting the correct monitor by absolute coordinates. |
639fe89 to
822ee0e
Compare
808857e to
c4bbe39
Compare
Some compositors implement assistive features that only track relative pointer motion; Wayland's PointerMotionAbsolute moves the cursor but such features do not follow it (e.g. the COSMIC screen magnifier focal point, pop-os/cosmic-comp#2760). Add an absolute_mouse_as_relative option (disabled by default) that converts absolute client coordinates into relative deltas. The first absolute event still anchors the cursor absolutely. Subsequent events are turned into relative deltas driven by dead reckoning. The KMS capture path publishes the real cursor-plane position every frame; the estimate snaps to it while the client is idle, and a coordinate saturated at the client's own surface edge targets the matching host edge so movement cannot stall mid-screen. On backends without cursor feedback the conversion still works from dead reckoning alone.
c4bbe39 to
5787155
Compare
|



Description
Moonlight TV clients (and other absolute-motion sources) send absolute mouse
positions. The Linux backend forwards them as absolute uinput events, which
compositors treat as absolute pointer motion.
COSMIC's magnifier does not track the cursor on absolute motion:
PointerMotionAbsolutemoves the cursor but never callsupdate_focal_point(pop-os/cosmic-comp#2760; same symptom class as #1418/VirtualBox). Relative
motion updates the zoom on every event.
This adds an
absolute_mouse_as_relativeoption (disabled by default) thatconverts absolute client coordinates into relative deltas:
baseline.
cursor arrives at the compositor as relative pointer motion.
internal estimate snaps to it while the client is idle, and a coordinate
saturated at the client's own surface edge targets the matching host edge,
so movement cannot stall mid-screen. On backends without cursor feedback
the conversion works from dead reckoning alone.
Documented in
docs/configuration.md.Screenshot
Issues Fixed or Closed
Roadmap Issues
Type of Change
Checklist
AI Usage