TransWikia.com

Are there any alternatives to Razer Synapse with full macro functionality for a mouse?

Super User Asked on December 3, 2021

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?

One Answer

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
}

Answered by Drakinite on December 3, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP