在 Windows 10 上使用 Logitech 鼠标接收高精度 WM_MOUSEWHEEL 事件

Dan*_*ann 5 scroll smooth-scrolling logitech windows-10

为了改进应用程序中的滚动,我最近添加了对高分辨率滚轮事件的支持。根据文档,这非常简单:WM_MOUSEWHEEL 的处理程序应该支持任意值,而不是仅 +/- 120。

正确执行此操作的应用程序示例是 Windows 上的 Firefox 和 Chrome。

我使用的是带有高分辨率滚轮的 Logitech 鼠标 (MX Master 3),但我注意到我收到的所有事件都只是 +/- 120。但是,我可以找到两个非常奇怪的解决方法:

  • 将我的程序重命名为 Firefox.exe
  • 专注于 Firefox(我的应用程序在后台),将鼠标移到那里并滚动到那里

第二个技巧也适用于其他事情。例如,它使 Windows 10 设置应用程序滚动顺畅。以下是操作差异的演示(前 4 秒聚焦,然后 Firefox 聚焦则不聚焦):https://www.youtube.com/watch ?v=gb1FUtyLxUg&feature=youtu.be

我认为驱动程序这样做是为了与无法处理 120 以外的任何内容的旧应用程序兼容。但是有没有办法让我的应用程序选择加入以获得更好的事件?或者罗技驱动程序只是硬编码了一堆浏览器而其他人都运气不佳?

小智 0

在罗技最新推出的 Logi Options+ 软件中,内置了 4 个应用程序列表,可实现高分辨率滚轮滚动。该列表包括 msedge.exe、iexplore.exe、chrome.exe 和 firefox.exe。此逻辑存在于 logioptionsplus_agent.exe 中。

在他们以前的软件 SetPoint 中,您可以将特定的窗口消息发送到其隐藏窗口之一,以在前台应用程序中实现平滑滚动,但在 Options+ 中,他们改变了这一点。

我制作了一个小型 DLL,可以在内存中修补 logioptionsplus_agent.exe,以扩展支持高分辨率滚动的应用程序列表。它适用于当前和以前版本的 Logi Options+,并且当新版本更改调用代码时可能需要更新代码。

这是它的链接: https://www.upload.ee/files/15420330/logioptionsplus_smoothwheel.zip.html

指示:

  • 将存档中的文件 version.dll 放置在 logioptionsplus_agent.exe 附近(默认情况下为 C:\Program Files\LogiOptionsPlus)
  • 在%AppData%\logioptionsplus(例如,C:\Users\User\AppData\Roaming\logioptionsplus\wheel_apps_list.txt)中创建文本文件wheel_apps_list.txt,其中包含支持高分辨率滚轮滚动的可执行文件列表(示例中提供)档案)
  • 重新加载后台进程 Logi Options+ Agent(您可以通过任务管理器杀死进程 logioptionsplus_* 来完成此操作,这样它们将自动重新启动)

当安装新版本的 Logi Options+(手动或自动)时,您需要再次将 version.dll 放入 Logi Options+ 路径(安装程序会删除那里的所有内容)。