我对 Razer Synapse 的使用体验非常糟糕,因为它会导致我的电脑不断随机出现 BSOD。我对其中一个宏按钮使用了灵敏度离合器,但当 Synapse 服务未运行时,灵敏度离合器无法正常工作。我尝试了 X-Mouse Button Control,但它不支持其他按钮。有没有办法在不安装 Synapse 的情况下获得完整的宏功能?
答案1
我所做的是暂时地安装 Synapse 为鼠标创建板载配置文件。我将 7 个宏键分别分配给 F13-F19,并将其保存到鼠标。现在,当我按下宏按钮时,它会触发相应的功能键之一。
然后,为了处理宏,我使用 AutoHotKey。我运行了一个简单的脚本来处理和重新映射功能键。如果你想像我一样使用灵敏度离合器,有人制作了一个很棒的脚本在 AutoHotKey 论坛上这正是我需要的。
我根据自己的目的对其进行了修改,使它充当离合器而不是拨动开关:
;=================================================================================
NormalMouseSpeed := true ; State of Mouse pointer speed
UserMouseSpeed := 0 ; Speed sensed before slow down
MouseThreshold1 := 6
MouseThreshold2 := 10
MouseEnhance := 1
;Set this to true if you need to debug (or just want to show tooltips)
ShowTooltips := false
SPI_GETMOUSESPEED := 0x70
SPI_SETMOUSESPEED := 0x71
SPI_SETMOUSE := 0x04
;=================================================================================
*F18::
throttleMouseSpeed(1)
return
*F18 UP::
unThrottleMouseSpeed()
return
;=================================================================================
throttleMouseSpeed(SlowMouseSpeed) {
global
if (NormalMouseSpeed) {
; SENSE BEFORE
DllCall("SystemParametersInfo", UInt,SPI_GETMOUSESPEED, UInt,0, UIntP,prevSpeed, UInt,0)
; Temporarily reduces the mouse cursor's speed.
; Retrieve the current speed so that it can be restored later
DllCall("SystemParametersInfo", UInt,SPI_GETMOUSESPEED, UInt,0, UIntP,UserMouseSpeed, UInt,0)
; Slow down mouse speed
DllCall("SystemParametersInfo", UInt,SPI_SETMOUSESPEED, UInt,0, UInt,SlowMouseSpeed, UInt,0)
; SENSE AFTER
DllCall("SystemParametersInfo", UInt,SPI_GETMOUSESPEED, UInt,0, UIntP,currentSpeed, UInt,0)
if (ShowTooltips) {
ToolTip, Mouse slow: %currentSpeed%/20
SetTimer, RemoveToolTip, 1000
}
; REMEMBER CURRENT STATE
NormalMouseSpeed := false
}
}
unThrottleMouseSpeed(){
global
; SENSE BEFORE
DllCall("SystemParametersInfo", UInt,SPI_GETMOUSESPEED, UInt,0, UIntP,prevSpeed, UInt,0)
; Restore the original speed.
DllCall("SystemParametersInfo", UInt, SPI_SETMOUSESPEED, UInt,0, UInt,UserMouseSpeed, UInt,0)
; Restore the original speed acceleration thresholds and speed
VarSetCapacity(MySet, 32, 0)
InsertInteger(MouseThreshold1, MySet, 0)
InsertInteger(MouseThreshold2, MySet, 4)
InsertInteger(MouseEnhance , MySet, 8)
DllCall("SystemParametersInfo", UInt,SPI_SETMOUSE, UInt,0, Str,MySet, UInt,1)
; SENSE AFTER
DllCall("SystemParametersInfo", UInt,SPI_GETMOUSESPEED, UInt,0, UIntP,currentSpeed, UInt,0)
if (ShowTooltips) {
ToolTip, Mouse restored: %currentSpeed%/20
SetTimer, RemoveToolTip, 1000
}
; REMEMBER CURRENT STATE
NormalMouseSpeed := true
}