If you ever struggled with annoying extra buttons layout in this model preventing you from using Hypershift switch in your Razer mouse of choice - welcome.
Here is the solution, not ideal but is enough for me:
- Install AutoHotKey
- Launch its dashboard app and create a new script
- Put the script below into your file
- Make sure the script is configured to autostart (the easiest - create a link in the Windows startup folder Win + R -→ type shell:startup → hit Enter)
- Use Ctrl + Alt + M to run and stop Synapse app and service quick.
At least my love to my both devices has been advocated. Would love to have cleaner solution.
The developers’ idea appears to be simple. If Razer Synapse Service.exe runs then both hypershifts are synchronized between your devices. If not - they will work independently. So that way you can use hypershift on your mouse for an extra buttons layout while not screwing use of W by dummy Volume Up. Works like a charm. Much better than start and stop manually everytime at least.
The script:
#SingleInstance Force
SetWorkingDir, C:\Program Files (x86)\Razer\Synapse3\WPFUI\Framework\Razer Synapse 3 Host\
App := "Razer Synapse 3.exe" ; Change the name to application you are checking.
Service := "Razer Synapse Service.exe" ; Change the name to application you are checking.
if not A_IsAdmin
Run *RunAs "%A_ScriptFullPath%" ; (A_AhkPath is usually optional if the script has the .ahk extension.) You would typically check first.
^!m:: ; Ctrl+Alt+M
{
Process, Exist, % App,
if !ErrorLevel
{
; msgbox, % App " is not running!"
Process, Exist, % Service,
if !ErrorLevel
{
Run, % App
}
else
{
KillApp(Service)
; msgbox, % Service " should be killed now!"
}
}
else
{
; msgbox, % App " is running!"
KillApp(App)
; msgbox, % App " should be killed now!"
KillApp(Service)
; msgbox, % Service " should be killed now!"
}
}
KillApp(appArg)
{
wmi := ComObjGet("winmgmts:")
cmd := "*RunAs taskkill.exe /F"
for app in wmi.ExecQuery("SELECT * FROM Win32_Process WHERE Name = '" appArg "'")
{
cmd .= " /PID " app.ProcessId
; msgbox, % app.ProcessId " found!"
}
Run % cmd,, Hide
}