我想写一个程序来更改我的logitech G502鼠标上的DPI设置(我的目标是使用带有AutoHotkey的程序来帮助自动化我切换DPI分配的任务,并了解一些USB)。我对C++、C#和python都相当流利。但我对USB或驱动程序一点也不了解。
到目前为止,我已经:使用程序USBlyser识别在使用罗技软件时发送到我的鼠标的控制传输,数据的哪个字节对应于我的DPI设置,以及我鼠标的产品ID和供应商ID。
在网上四处查看后,我决定PyUSB将是一个很好的选择,可以与我的鼠标通信。在安装了与PyUSB一起使用的libUsb后,我意识到这会取代我当前的鼠标驱动程序,使其无法使用。
我是不是搞错了?在我的脑海中,我想做的就是向我的鼠标发送数据"10 FF 0E CA 01 00 00",我是否应该以某种方式与我现有的logitech驱动程序进行通信来实现这一点?或者我可以在不干扰现有驱动程序的情况下设置libUsb吗?
任何帮助都将不胜感激,布拉德利欢呼道。
libusb不会干扰任何东西。在PyUSB中,您可以选择直接与设备通信。要做到这一点,任何其他持有这个USB端口的应用程序都必须停止。鼠标壳中的Windows驱动程序。
我认为你可能会在驱动程序仍在使用鼠标时推送DPI激活码,但如何,我现在不知道。
或者,您可以暂时分离鼠标,传递代码,然后将鼠标释放回Windows,希望DPI配置不会重新设置种子。
若并没有通过,你们可能总是完全模仿鼠标驱动程序。这很容易。
互联网上有PyUSB关于如何解释鼠标数据的代码示例。因此,您可以直接通过Windows API或使用PyMouse库将识别的命令传递给操作系统。
在这种情况下,您不需要驱动程序,因为您的程序就是一个驱动程序,它可以向鼠标发送您想要的任何内容。
如何做你想做的事,你有很多选择。
例如,如果这只供您的本地使用,并且有一个接口已经在执行您想要的操作,请使用pywinauto自动执行该接口以执行宏来激活/禁用更高的DPI。
还有更多的可能性。
您可以用自己的版本替换Windows驱动程序,它将支持您想要的内容,从而在鼠标堆栈中创建自己的层。但这是极端的。
我认为你应该按顺序开始我写道:
-
查看您是否可以使用PyUSB发送所需的字节,而无需将鼠标从操作系统中分离
-
如果没有,请查看分离鼠标、更改DPI以及使用PyUSB将鼠标返回操作系统是否保持设置的DPI。
3.1如果没有,请使用PyUSB和PyMouse 制作自己的人工驱动程序
或
3.2使用pywinauto自动处理现有界面,为您更改DPI。