moonlight-stream / moonlight-qt

GameStream client for PCs (Windows, Mac, Linux, and Steam Link)
GNU General Public License v3.0
10.56k stars 616 forks source link

Local Mouse Cursor for Smoother Remote Desktop Interaction #1432

Open givegrandpaclimb opened 2 weeks ago

givegrandpaclimb commented 2 weeks ago

Is your feature request related to a problem? Please describe.

When using a remote machine, the latency of mouse operations is noticeable, which significantly impacts user experience, especially in scenarios requiring precise operations or quick reactions, such as playing games or using graphic design software. This latency makes the operation feel sluggish and even difficult to perform normally.

Describe the solution you'd like

I would like a feature that hides the remote machine's mouse cursor and displays the local mouse cursor instead. Local mouse movements would be captured and sent to the remote machine, but the remote machine's cursor would be hidden. This way, the user's visual feedback will be immediate, reducing the perceived mouse latency and making the operation feel smoother.

Describe alternatives you've considered

Additional context

The implementation of this feature may need to consider compatibility with different operating systems and remote desktop protocols. Ideally, the feature should be togglable on or off based on user needs. It would be even better if some customization options were provided, such as adjusting the appearance of the local mouse cursor.

Zod1234 commented 1 week ago

I was about to open a ticket about the polling rate of the mouse. I'm not sure if your solution would work entirely. For desktop apps, it would seem smoother, but for fps games, even if the mouse was local, it would still only request a low amount of updates based on movement of the mouse with a seemingly low polling rate.

My client is a hardware steam link. I'm not sure if it's a flaw of this device with mice, but gamepads seem smooth. It's not a latency issue but it feels and looks like the mouse is polling at 40hz. I don't expect 1000hz, but 125hz I think should be doable over a network.