我知道在 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