2

I've had an extremely bad experience with Razer Synapse, because it causes constant and random BSOD's on my computer. I use a sensitivity clutch for one of my macro buttons, but when the Synapse service isn't running, the sensitivity clutch doesn't work properly. I tried X-Mouse Button Control, but it doesn't have support for additional buttons. Is there any way to get full macro capabilities without having Synapse installed?

Drakinite
  • 173

1 Answers1

3

What I did was temporarily install Synapse to create an onboard profile for the mouse. I assigned the 7 macro keys to F13-F19 respectively, and saved it to the mouse. Now, when I press the macro buttons, it fires one of the corresponding function keys.

Then, to handle the macros, I use AutoHotKey. I have a simple script running that handles and remaps the function keys. If you're looking to use a sensitivity clutch like I did, someone made a lovely script on the AutoHotKey forums that did exactly what I needed.

I modified it for my own purposes to act as a clutch instead of a toggle:


;=================================================================================
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

}

Drakinite
  • 173