[PR #38] [MERGED] fix(mouse): send clicks and scrolls on active mouse device #41

Closed
opened 2026-10-15 12:51:33 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/games-on-whales/inputtino/pull/38
Author: @happyme531
Created: 5/13/2026
Status: ✅ Merged
Merged: 5/16/2026
Merged by: @ABeltramo

Base: stable ← Head: fix-absolute-mouse-buttons-scroll


📝 Commits (2)

  • 65227c7 fix(mouse): send clicks and scrolls on active mouse device
  • 9336f0a test(mouse): cover absolute mouse review feedback

📊 Changes

3 files changed (+94 additions, -6 deletions)

View changed files

📝 src/uinput/include/inputtino/protected_types.hpp (+2 -1)
📝 src/uinput/mouse.cpp (+33 -5)
📝 tests/testLibinput.cpp (+59 -0)

📄 Description

Summary

  • route mouse buttons and wheel events through the absolute mouse device after absolute motion is used
  • advertise button, wheel, hi-res wheel, and MSC_SCAN capabilities on the absolute mouse device
  • add libinput coverage for buttons and wheel events on the absolute mouse device

Context

This fixes unreliable scrolling/clicking in remote desktop mouse mode when clients send absolute pointer motion. In that mode, movement was emitted from the absolute virtual mouse while buttons and scroll were emitted from the relative virtual mouse, so compositors/libinput could treat those events as coming from different pointers.

Refs moonlight-stream/moonlight-qt#1020

Testing

  • git diff --check
  • cmake -S . -B build-pr-lib -DCMAKE_BUILD_TYPE=Debug -DBUILD_TESTING=OFF
  • cmake --build build-pr-lib -j16
  • Manually verified through Sunshine/Moonlight remote desktop mouse mode on Linux

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/games-on-whales/inputtino/pull/38 **Author:** [@happyme531](https://github.com/happyme531) **Created:** 5/13/2026 **Status:** ✅ Merged **Merged:** 5/16/2026 **Merged by:** [@ABeltramo](https://github.com/ABeltramo) **Base:** `stable` ← **Head:** `fix-absolute-mouse-buttons-scroll` --- ### 📝 Commits (2) - [`65227c7`](https://github.com/games-on-whales/inputtino/commit/65227c7f9002e72d077ccc61b22b2a89b6786f7e) fix(mouse): send clicks and scrolls on active mouse device - [`9336f0a`](https://github.com/games-on-whales/inputtino/commit/9336f0a91317fb92a1f68c8d87a216de1efad806) test(mouse): cover absolute mouse review feedback ### 📊 Changes **3 files changed** (+94 additions, -6 deletions) <details> <summary>View changed files</summary> 📝 `src/uinput/include/inputtino/protected_types.hpp` (+2 -1) 📝 `src/uinput/mouse.cpp` (+33 -5) 📝 `tests/testLibinput.cpp` (+59 -0) </details> ### 📄 Description ## Summary - route mouse buttons and wheel events through the absolute mouse device after absolute motion is used - advertise button, wheel, hi-res wheel, and MSC_SCAN capabilities on the absolute mouse device - add libinput coverage for buttons and wheel events on the absolute mouse device ## Context This fixes unreliable scrolling/clicking in remote desktop mouse mode when clients send absolute pointer motion. In that mode, movement was emitted from the absolute virtual mouse while buttons and scroll were emitted from the relative virtual mouse, so compositors/libinput could treat those events as coming from different pointers. Refs moonlight-stream/moonlight-qt#1020 ## Testing - git diff --check - cmake -S . -B build-pr-lib -DCMAKE_BUILD_TYPE=Debug -DBUILD_TESTING=OFF - cmake --build build-pr-lib -j16 - Manually verified through Sunshine/Moonlight remote desktop mouse mode on Linux --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-15 12:51:33 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
games-on-whales/inputtino#41
No description provided.