To improve scrolling in my application, I recently added support for high-resolution scrolling wheel events. According to the documentation this is pretty straightforward: The handler for WM_MOUSEWHEEL should support arbitrary values as opposed to just +/- 120.
Examples of applications doing this properly are Firefox and Chrome on Windows.
I am using a Logitech mouse with a high-res wheel (MX Master 3), but I noticed that all the events I am receiving are just +/- 120. However, I could find two pretty weird work-arounds:
- Rename my program to Firefox.exe
- Focus on Firefox (with my app in the background), move the mouse over and scroll there
The second trick works with other things as well. For example, it makes the Windows 10 Settings app scroll smoothly. Here's a demo of the difference in action (first 4 seconds focused, then unfocused with Firefox having focus): https://www.youtube.com/watch?v=gb1FUtyLxUg&feature=youtu.be
I assume the driver is doing this for compatibility with older apps that can't handle anything that isn't 120. But is there a way for my app to opt-in to get the better events? Or does the Logitech driver simply hardcode a bunch of browsers and everyone else is out of luck?
In the latest software from Logitech called Logi Options+ there is a built-in list of 4 applications where it enables high-resolution wheel scrolling. The list includes msedge.exe, iexplore.exe, chrome.exe and firefox.exe. This logic is present in logioptionsplus_agent.exe.
In their previous software SetPoint you could send a specific window message to one of its hidden windows to enable smooth scrolling in foreground application, but in Options+ they changed that.
I have made a small DLL that patches logioptionsplus_agent.exe in-memory to extend the list of applications that support high-res scrolling. It works for current and previous versions of Logi Options+, and may require updating the code when new versions change the calling code.
Here is the link to it: https://www.upload.ee/files/15420330/logioptionsplus_smoothwheel.zip.html
Instructions:
When a new version of Logi Options+ is installed (manually or automatically), you need to put version.dll into Logi Options+ path again (installer deletes everything there).