当我在 Windows XP 和 7 中工作时,我希望使用默认设置启用鼠标加速。但是,当我使用 Photoshop 等应用程序或第一人称射击游戏等游戏时,我需要将其关闭。
我目前通过打开鼠标设置对话框来打开或关闭它,但这种方法已经过时了。尤其是当我启动《军团要塞 2》并加入服务器时,才发现我忘了关闭它,所以我必须关闭它并重新执行所有操作。太过时了。
我尝试创建两个 reg 文件来更改所需的值HKEY_CURRENT_USER/Control Panel/Mouse
,但没有成功。必须有某种东西才能触发更改。
所以我在寻找替代方案。键盘快捷键可能是最简单、最可靠的方法,例如ALT+F11将其关闭,ALT+F12将其打开,甚至更好,ALT+F12将其切换。我认为这些快捷键不会干扰其他任何事情。
只有一个问题——我该如何实现这一点?我不是程序员。
答案1
自动热键可以用来自动封装您需要在单个热键中执行的整个过程,该热键将为您切换复选框,除非有人为您编写特殊软件,否则这将是完成该任务的唯一方法。
通过脚本实现自动化或摆脱加速...;-)
答案2
因为我也有同样的问题,所以才发现这个问题。我的用例是,我有两个鼠标,一个是普通鼠标,一个是轨迹球鼠标。大多数时候我使用轨迹球鼠标,因此我需要开启鼠标加速功能。但我用普通鼠标玩游戏,因此开启加速功能后我无法做任何精确的操作。
因此我编写了这个脚本来在开启和关闭之间切换设置:
$RegistryPath = 'HKCU:\Control Panel\Mouse'
# Get current mouse speed setting (1 = acceleration on; 0 = acceleration off)
$mode = (Get-ItemProperty -Path $RegistryPath -Name MouseSpeed).MouseSpeed
if ($mode -eq 1) {
# Toggle off
New-ItemProperty -Path $RegistryPath -Name 'MouseSpeed' -Value '0' -PropertyType String -Force
New-ItemProperty -Path $RegistryPath -Name 'MouseThreshold1' -Value '0' -PropertyType String -Force
New-ItemProperty -Path $RegistryPath -Name 'MouseThreshold2' -Value '0' -PropertyType String -Force
}
else {
# Toggle on
New-ItemProperty -Path $RegistryPath -Name 'MouseSpeed' -Value '1' -PropertyType String -Force
New-ItemProperty -Path $RegistryPath -Name 'MouseThreshold1' -Value '6' -PropertyType String -Force
New-ItemProperty -Path $RegistryPath -Name 'MouseThreshold2' -Value '10' -PropertyType String -Force
}
# Apply the registry settings we just changed, solution from: https://superuser.com/a/1650546/957702
Add-Type @"
using System.Runtime.InteropServices;
public class PInvoke {
[DllImport("user32.dll")] public static extern int SystemParametersInfo(int uiAction, int uiParam, int[] pvParam, int fWinIni);
[DllImport("user32.dll")] public static extern int SystemParametersInfo(int uiAction, int uiParam, System.IntPtr pvParam, int fWinIni);
}
"@
$mouse = Get-ItemProperty $RegistryPath
# MouseThreshold1, MouseThreshold2, MouseSpeed -> SPI_SETMOUSE
[PInvoke]::SystemParametersInfo(0x0004, 0, [int[]]($mouse.MouseThreshold1, $mouse.MouseThreshold2, $mouse.MouseSpeed), 0)
将上述内容放入.ps1
文件中并以您喜欢的方式触发它。