Is there an existing issue for this?
Is your issue described in the documentation?
Is your issue present in the latest beta/pre-release?
None
Describe the Bug
Hi guys, this is my current problem:
When streaming Tom Clancy's Rainbow Six Siege via a Moonlight/Sunshine setup, a severe input bug occurs involving the mouse wheel. The system setup consists of a Windows host PC running Sunshine and a Debian Linux client using Moonlight. The input device connected to the client is a wired Logitech G502 HERO. As soon as the mouse wheel is moved by even a single notch in Rainbow Six Siege, the input gets stuck in an infinite loop. The game interprets the input as a continuously held key, resulting in a rapid, non-stop weapon switching loop.
Expected Behavior
Scrolling the mouse wheel by a single notch should result in a single, discrete weapon switch in Games, just like it behaves locally or on the host's desktop.
Additional Context
Technical Analysis & Root Cause:
Notably, this behavior is exclusively limited to the Rainbow Six Siege engine. In other games (e.g., Titanfall 2) and on the regular Windows desktop of the host, the scroll wheel functions flawlessly.
Based on an analysis of how Sunshine processes scroll events (LizardByte/Sunshine/src/input.cpp and LizardByte/Sunshine/src/platform/windows/input.cpp), the issue is caused by a conflict between Linux libinput high-resolution scroll events and the aggressive raw input handling of R6 Siege:
The libinput behavior: libinput on the Debian client sends many small, high-resolution scroll deltas (e.g., values like 15, 30) instead of a single standard ±120 value per notch.
With High-Res Scrolling ENABLED: Sunshine passes every tiny delta individually as a MOUSEEVENTF_WHEEL event to Windows via SendInput(). Siege's raw input system interprets every single micro-event as a full weapon switch trigger, causing the infinite loop.
With High-Res Scrolling DISABLED: Sunshine uses an accumulator to collect the deltas until they reach the standard WHEEL_DELTA (120). However, because libinput sends such a massive flood of micro-events, Sunshine still generates a rapid succession of full, discrete ticks.
The R6 Siege Engine (Anvil + BattlEye): Rainbow Six Siege uses highly aggressive raw input polling without any debounce logic for scroll wheel events. While the Windows desktop and other games internally filter these rapid scroll bursts, Siege interprets the rapid sequence of discrete events generated by Sunshine's accumulator as a continuous, held-down input.
Troubleshooting Steps Already Taken:
Disabling "High Resolution Scrolling Support" in the Sunshine Web UI (ineffective due to the accumulator behavior described above).
Toggling the "Raw Input" setting in the Rainbow Six Siege in-game options.
Attempting to artificially "digitize" the signal on the Linux level using tools like imwheel to force hard, discrete scroll steps. While this stops the high-res flooding, it triggers a side effect where the game (or the BattlEye anti-cheat) completely blocks regular mouse clicks.
Host Operating System
Windows
Operating System Version
11
Architecture
amd64/x86_64
Package
Linux - AppImage
GPU Type
Nvidia
GPU Model
RTX 5060Ti
GPU Driver/Mesa Version
Version 595.97
Capture Method
None
Apps
Log output
Online logs
No response
Is there an existing issue for this?
Is your issue described in the documentation?
Is your issue present in the latest beta/pre-release?
None
Describe the Bug
Hi guys, this is my current problem:
When streaming Tom Clancy's Rainbow Six Siege via a Moonlight/Sunshine setup, a severe input bug occurs involving the mouse wheel. The system setup consists of a Windows host PC running Sunshine and a Debian Linux client using Moonlight. The input device connected to the client is a wired Logitech G502 HERO. As soon as the mouse wheel is moved by even a single notch in Rainbow Six Siege, the input gets stuck in an infinite loop. The game interprets the input as a continuously held key, resulting in a rapid, non-stop weapon switching loop.
Expected Behavior
Scrolling the mouse wheel by a single notch should result in a single, discrete weapon switch in Games, just like it behaves locally or on the host's desktop.
Additional Context
Technical Analysis & Root Cause:
Notably, this behavior is exclusively limited to the Rainbow Six Siege engine. In other games (e.g., Titanfall 2) and on the regular Windows desktop of the host, the scroll wheel functions flawlessly.
Based on an analysis of how Sunshine processes scroll events (LizardByte/Sunshine/src/input.cpp and LizardByte/Sunshine/src/platform/windows/input.cpp), the issue is caused by a conflict between Linux libinput high-resolution scroll events and the aggressive raw input handling of R6 Siege:
The libinput behavior: libinput on the Debian client sends many small, high-resolution scroll deltas (e.g., values like 15, 30) instead of a single standard ±120 value per notch.
With High-Res Scrolling ENABLED: Sunshine passes every tiny delta individually as a MOUSEEVENTF_WHEEL event to Windows via SendInput(). Siege's raw input system interprets every single micro-event as a full weapon switch trigger, causing the infinite loop.
With High-Res Scrolling DISABLED: Sunshine uses an accumulator to collect the deltas until they reach the standard WHEEL_DELTA (120). However, because libinput sends such a massive flood of micro-events, Sunshine still generates a rapid succession of full, discrete ticks.
The R6 Siege Engine (Anvil + BattlEye): Rainbow Six Siege uses highly aggressive raw input polling without any debounce logic for scroll wheel events. While the Windows desktop and other games internally filter these rapid scroll bursts, Siege interprets the rapid sequence of discrete events generated by Sunshine's accumulator as a continuous, held-down input.
Troubleshooting Steps Already Taken:
Disabling "High Resolution Scrolling Support" in the Sunshine Web UI (ineffective due to the accumulator behavior described above).
Toggling the "Raw Input" setting in the Rainbow Six Siege in-game options.
Attempting to artificially "digitize" the signal on the Linux level using tools like imwheel to force hard, discrete scroll steps. While this stops the high-res flooding, it triggers a side effect where the game (or the BattlEye anti-cheat) completely blocks regular mouse clicks.
Host Operating System
Windows
Operating System Version
11
Architecture
amd64/x86_64
Package
Linux - AppImage
GPU Type
Nvidia
GPU Model
RTX 5060Ti
GPU Driver/Mesa Version
Version 595.97
Capture Method
None
Apps
Log output
Online logs
No response