Parkinson’s mouse software

Project  / Project number: 368  /  Status:

Mouse software picture

AutoHotKey

0

The challenge

Our client has Parkinson’s and has degraded sensitivity in his fingers. This results in him accidentally holding down the mouse buttons when moving the cursor using a traditional mouse, or accidentally moving the cursor when using the buttons on a trackball device.

The solution

Remap engineer Mike Johnson of the Harrogate and Ripon group created some software to disable the mouse buttons while the cursor is moved and re-enable them whilst simultaneously locking the cursor in place. This is achieved with a simple keyboard click to toggle between states.

The software is based on AutoHotKey (www.autohotkey.com) which is an open-source scripting language used to modify and automate keyboard/mouse functions. It can be used with almost any keyboard/mouse/trackball combination as it is software-based and monitors all keyboard and mouse commands. No changes to hardware are needed. The client can also modify the controls themselves if they have basic programming skills. The script is below for reference:

 

#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
; SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.

#InstallMouseHook
Hotkey, LButton, , Off ;Set this to off to enable mouse click passthrough on startup
Hotkey, RButton, , Off ;These commands must appear before hotkeys assigned

Helptext = ;variable to contain help text
(
Keys enabled by MouseLock `n
CTRL + F1 :Help information (Show/Hide) `n
CTRL + ESC :Stop mouse control `n
CTRL + \ :Toggle the mouse keys On/Off `n
:and lock/unlock the cursor `n
CTRL + / :Reset mouse to default`n `n
Mouse Button 4 set to Left Click`n
Mouse Button 5 set to Double Click`n `n
)
winActivate, ahk_class Progman ;activate desktop so that tooltip appears top left
Tooltip, %Helptext%, 0, 0

LButton::Return ;Mouse Left disable
RButton::Return ;Mouse right disable
XButton1::Click ;Mouse button 4 set to Left click
XButton2::Click, 2 ;Mouse button 5 set to double click

hotkeyson := true
Toggle := false

^\:: ;CTRL + \ to activate cursor and button lock/unlock
if (hotkeyson) ;set hotkeys to on if true
{
BlockInput, MouseMove
Msgbox, , Mouselock, Cursor position locked! Mouse Buttons enabled.`n This message will autoclose in 5 secs, 5
Hotkey, LButton, , Off
Hotkey, RButton, , Off
hotkeyson := false
return
}
else
{
BlockInput, MouseMoveOff
Msgbox, , Mouselock, Cursor unlocked. Mouse buttons disabled!`n This message will autoclose in 5 secs, 5
Hotkey, LButton, , On
Hotkey, RButton, , On
hotkeyson := true
return
}

^/:: ;reset mouse
{
BlockInput, MouseMoveOff
Hotkey, LButton, Off
Hotkey, RButton, Off
Hotkey, XButton1, Off
Hotkey, XButton2, Off
Msgbox, , Mouselock, Mouse reset to default`n This message will autoclose in 5 secs, 5
return
}

^Esc:: ;CTRL + ESC to exit the script/app
Msgbox, , Mouselock, Stopped mouse control!`n This message will autoclose in 5 secs, 5
ExitApp
return

^F1::
If (Toggle = false)
{
Toggle := true
Tooltip, %Helptext%, 0 , 0
}
Else
{
Toggle := false
Tooltip
}
Return

;MCJ 28/Oct/2019

The benefit

Our client can now operate his computer mouse with a much greater degree of accuracy.

Leave a Reply

Your email address will not be published. Required fields are marked *