动态更改鼠标使用的 DPI

动态更改鼠标使用的 DPI

我知道在 Windows 中可以更改鼠标速度。但是,我想知道是否可以动态地做到这一点。例如,那些你只需要稍微移动鼠标指针的时刻,我发现由于一些 RSI 问题,这非常困难。如果我可以按住一个键然后动态更改鼠标速度,那就容易多了。谢谢

答案1

是的,鼠标光标速度是 WinAPI“SystemParametersInfoA”函数的一部分。

https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-systemparametersinfoa

查找这些参数:
SPI_SETMOUSESPEED 0x0071
SPI_GETMOUSESPEED 0x0070

速度值为1至20。

https://stackoverflow.com/q/2931122/4157407

下面是使用 Capslock 更改速度的 Autohotkey 脚本示例:

SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetStoreCapsLockMode, Off
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
#SingleInstance force


setspeed() {
    global speed
    dllcall("SystemParametersInfoA",   uint, 0x71,    uint, 0,    uint, speed,    uint, 0)
}

getspeed() {
    global speed
    dllcall("SystemParametersInfoA",   uint, 0x70,   uint, 0,   uintP, speed,   uint, 0)
}


toggle := 0
speed := 1
toggleSpeed := 3

speedOriginal := 0
dllcall("SystemParametersInfoA",   uint, 0x70,   uint,  0,   uintP, speedOriginal,   uint, 0)
tooltip %speedOriginal%


#if (toggle = 0)
capsLock::
    toggle := 1
    if toggle 
        speed := toggleSpeed
    setspeed()
    tooltip %speed%
return
#if 

capsLock up::
    speed := speedOriginal
    setspeed()
    toggle := 0
    tooltip %speed%
return

相关内容