Allow users of Logitech mice (mine is an MX Master 3) to enjoy smooth scrolling in all applications.
Compile the solution (or download bianries from the releases), create config.ini file next to the logioptionspprun.exe and logioptionspp.dll, like:
[General]
LOGI_PATH=C:\Program Files\LogiOptionsPlus\logioptionsplus_agent.exe
BLACKLIST_APPS=explorer.exe, Taskmgr.exeor
[General]
LOGI_PATH=C:\Program Files\LogiOptionsPlus\logioptionsplus_agent.exe
WHITELIST_APPS=vscode.exe, my_other_app.exewhere LOGI_PATH is the full path to the logioptionsplus_agent.exe
BLACKLIST_APPS is a comma "," sperated list of executables that you do NOT want to be treated as "chrome.exe", meaning, NOT to receive smooth scrooling. For example, explorer.exe and Taskmgr.exe are applications that feel a bit strange with the smooth scrool.
WHITELIST_APPS is a comma "," sperated list of executables that you want to be treated as "chrome.exe", meaning, to receive smooth scrooling.
NOTE that defining both BLACKLIST_APPS and WHITELIST_APPS is contradictory; defining one of them defines the selection mode; when both are defined it will function in whitelist mode.
Execute logioptionspprun.exe by double clicking it.
If you are here you may be irritated with the fact that your Logitech mouse on does smooth scrolling in certain applications. If you are wondering if it is Logitech's fault or if it is the applications' fault, let me assure you, it is Logitech's fault!
Basically Logitech runs some applications in the backgorund, like the logioptionsplus_agent.exe that is continuously evalutating
the application currently in the foregorund; if the foreground application is one of ("magically smoothly scrollable"):
- chrome.exe
- iexplorer.exe
- msedge.exe
- firefox.exe
than it will do smooth scrolling, otherwise it won't, regardless of the settings that you make via LogioOptions+.
See this discussion as an example: https://www.reddit.com/r/logitech/comments/14h34we/systemwide_smooth_scrolling/
The logioptionsplus_agent.exe is getting the name of the executable in foreground by using MSWindows libraries, namelly kernelbase.dll calling QueryFullProcessImageNameW.
The idea is to intercept this call and return one of the "magically smoothly scrollable" names.
To intercept I am trying to use MS Detours (see: https://github.com/microsoft/Detours)
To make the injection there seem to be two possible approaches:
- use detours to preload and start
logioptionsplus_agent.exe - inject runtime: start a thread on the
logioptionsplus_agent.exeprocess and load the interceptor DLL
Currently I am more focused in making 1. to work.
- logioptionspp: "Logitech Options Plus Plus" the interceptor DLL
- logioptionspprun: "Logitech Options Plus Plus Runner" the executable responsible for preloading (inject) the library on
logioptionsplus_agent.exe - Detours-main: submodule of the master from https://github.com/microsoft/Detours at some point
- MS Visual Studio 2022 Community (you know where to find this)
- x64dbg (https://help.x64dbg.com/en/latest/index.html)