Bug 511029 - high resolution scroll events get ignored
Summary: high resolution scroll events get ignored
Status: RESOLVED FIXED
Alias: None
Product: KRdp
Classification: Plasma
Component: general (other bugs)
Version First Reported In: 6.5.0
Platform: Neon Linux
: NOR normal
Target Milestone: ---
Assignee: Unassigned bugs
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-10-24 15:51 UTC by Bernhard
Modified: 2026-02-28 11:51 UTC (History)
3 users (show)

See Also:
Latest Commit:
Version Fixed/Implemented In: 6.6.2
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Bernhard 2025-10-24 15:51:07 UTC
SUMMARY
Scrolling with a touchpad doesn't work (at any reasonable speed). Honestly I thought this should have been fixed by BUG:496747 but apparently not. Notably, this hasn't worked correctly in any Plasma version for me.

STEPS TO REPRODUCE
1. Use a mouse or touchpad with high resolution ("pixel perfect") scrolling
2. Connect using Krdc
3. Try scrolling normally (and slowly)

OBSERVED RESULT
My understanding is only scroll events that seem to cover enough "distance" in a single event seem get through, making for very slow scrolling (because most events are ignored) - and no scrolling at all if I don't give it all I've got and go warp speed with my fingers :)

EXPECTED RESULT
Either:
- Correct modern scrolling
Scroll the correct distance. Works with krdc connected to a windows host, so this pretty much has to be on krdp.

- Legacy accounting for scroll distance:
Accumulate wheel delta and send a normal legacy 120px (I think?) scroll event once that threshold has been reached.

SOFTWARE/OS VERSIONS
krdp computer:
Linux/KDE Plasma: KDE Neon 24.04
KDE Plasma Version: 6.5.0
KDE Frameworks Version: 6.19.0
Qt Version: 6.9.2

Client pc:
krdc client 25.08.2
Linux/KDE Plasma: Arch Linux
KDE Plasma Version: 6.4.5
KDE Frameworks Version: 6.19.0
Qt Version: 6.10.0
Comment 1 Nate Graham 2025-10-24 17:40:13 UTC
Might be Bug 485724?
Comment 2 Bernhard 2025-10-24 18:00:39 UTC
(In reply to Nate Graham from comment #1)
> Might be Bug 485724?

My Logitech M710 works correctly when directly connected to either system, just not through KRDP.

Also scrolling doesn't work with KRDP at all when doing it slowly, no matter for how long you scroll slowly.

Both of those facts lead me to believe that it's not that Bug 485724
Comment 3 Bug Janitor Service 2026-02-09 18:01:56 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/krdp/-/merge_requests/143
Comment 4 Bug Janitor Service 2026-02-09 19:15:03 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/krdp/-/merge_requests/144
Comment 5 David Edmundson 2026-02-24 13:13:45 UTC
Git commit 433babfefcd28bf186e5d184ad8450dcd0f52157 by David Edmundson, on behalf of reali es.
Committed on 24/02/2026 at 13:13.
Pushed by davidedmundson into branch 'master'.

Fix scroll wheel for RDP clients sending high-resolution or zero-position events

## Summary

Some RDP clients, notably Microsoft Remote Desktop for Mac, send wheel events with:
1. **(0,0) as the mouse position** — MRD omits cursor coordinates for wheel events
2. **Sub-120 axis rotation values** — macOS smooth scrolling sends high-resolution deltas (1-22 per event) instead of the standard 120 per wheel notch

This caused scrolling to be completely non-functional with MRD on both the Portal and Plasma screencast session paths.

### Changes

- **InputHandler.cpp**: Track last known mouse position from move events and substitute it when a wheel event arrives with a null position
- **PortalSession.cpp**: Switch from `NotifyPointerAxisDiscrete` (integer steps, truncates sub-120 values to 0) to `NotifyPointerAxis` (smooth scroll, preserves sub-notch precision)
- **PlasmaScreencastV1Session.cpp**: Fix `wl_fixed_t` conversion using `wl_fixed_from_double()` (was passing raw int, making values ~256x smaller than intended)
- Both session paths now convert Qt angleDelta (1/8-degree units) to degrees by dividing by 8, producing 15.0 per standard notch — matching libinput's wheel axis convention

### Test plan

- [x] Connect with Microsoft Remote Desktop for Mac — scrolling should work in both directions with natural speed
- [x] Connect with xfreerdp/standard RDP client — verify scrolling still works correctly (standard 120-per-notch values)
- [ ] Test horizontal scrolling if client supports it
- [x] Verify mouse position is correct during scroll (not jumping to top-left corner)

M  +31   -4    src/InputHandler.cpp
M  +7    -3    src/PlasmaScreencastV1Session.cpp
M  +6    -7    src/PortalSession.cpp

https://invent.kde.org/plasma/krdp/-/commit/433babfefcd28bf186e5d184ad8450dcd0f52157
Comment 6 Nate Graham 2026-02-24 14:46:58 UTC
Git commit d8c1f28634289806e88d4ff14a53237cced059a8 by Nate Graham.
Committed on 24/02/2026 at 14:29.
Pushed by ngraham into branch 'Plasma/6.6'.

Fix scroll wheel for RDP clients sending high-resolution or zero-position events

## Summary

Some RDP clients, notably Microsoft Remote Desktop for Mac, send wheel events with:
1. **(0,0) as the mouse position** — MRD omits cursor coordinates for wheel events
2. **Sub-120 axis rotation values** — macOS smooth scrolling sends high-resolution deltas (1-22 per event) instead of the standard 120 per wheel notch

This caused scrolling to be completely non-functional with MRD on both the Portal and Plasma screencast session paths.

### Changes

- **InputHandler.cpp**: Track last known mouse position from move events and substitute it when a wheel event arrives with a null position
- **PortalSession.cpp**: Switch from `NotifyPointerAxisDiscrete` (integer steps, truncates sub-120 values to 0) to `NotifyPointerAxis` (smooth scroll, preserves sub-notch precision)
- **PlasmaScreencastV1Session.cpp**: Fix `wl_fixed_t` conversion using `wl_fixed_from_double()` (was passing raw int, making values ~256x smaller than intended)
- Both session paths now convert Qt angleDelta (1/8-degree units) to degrees by dividing by 8, producing 15.0 per standard notch — matching libinput's wheel axis convention

### Test plan

- [x] Connect with Microsoft Remote Desktop for Mac — scrolling should work in both directions with natural speed
- [x] Connect with xfreerdp/standard RDP client — verify scrolling still works correctly (standard 120-per-notch values)
- [ ] Test horizontal scrolling if client supports it
- [x] Verify mouse position is correct during scroll (not jumping to top-left corner)


(cherry picked from commit 433babfefcd28bf186e5d184ad8450dcd0f52157)

405b694f Fix scroll wheel for RDP clients sending high-resolution or zero-position events

Co-authored-by: reali es <kde@reali.es>

M  +31   -4    src/InputHandler.cpp
M  +7    -3    src/PlasmaScreencastV1Session.cpp
M  +6    -7    src/PortalSession.cpp

https://invent.kde.org/plasma/krdp/-/commit/d8c1f28634289806e88d4ff14a53237cced059a8