Having recently become disabled due to the arrival of Parkinson's, my hand tremors reached the stage where using a computer mouse became seriously problematical. Imagine trying to point and click on a tiny icon or menu option when your hands figure they can do a merry dance on the screen! Here's the outline of the solution I found, which may be of interest to your friends and family members who might be afflicted by this chronic, incurable and degenerative illness.
Using a computer mouse to guide a cursor around a screen frequently offers no alternative, and can lead to intense frustration for people who need to fill in online forms, or make use of regular software products.
Using the Code
No code as such, but if your users might be compromised because of a physical affliction such as Parkinson's, you might want to offer them some help with the following comments.
The attached Config.zip file contains 2x configuration files for the JoyToKey utility software, which is linked below.
Having come from a background where I had always been very productive with using a computer mouse, I reached the stage where I became crippled - and just filling in a simple online form became extremely challenging. Even clicking on a regular sized submit button could take me over 30 seconds - and it wasn't unusual for me to hit the Cancel button accidentally, and have to start over - Cancel and Submit buttons are often located alongside each other and with my mouse dithering by an inch or more when I tried to click the left button, hitting the wrong button was easily possible!
I did some personal research on this, and although the end result would never return me to being productive in the sense of being able to earn a living, it has led to me being able to carry out simple tasks such as positioning the mouse cursor accurately, and doing stuff such as resizing/moving a window.
My investigation focused on the fact that a computer mouse can change direction instantly. Which is just great when your hands tremble uncontrollably.
Using Both Hands
It might not sound plausible, but with minor hand tremors using both hands is a possible option. Use one hand to do the physical movement of the mouse, and the other to click the left/right buttons.
However it does not work if your hand tremors are significant. My hand tremors cause a situation where the mouse cursor dances around an area of about an inch square as soon as I try to stop and hold position to click the mouse button, regardless of whether I'm using one or both hands.
Computer Mice For The Disabled
These are available - and cost literally hundreds of bucks. I personally think these are a complete waste of money, you can see why below....
I installed the SteadyMouse software. It's free software (donation-ware).
This helped a lot because the software acts like a car damper which smoothes out the bumps in the road as you drive over them, so by a process of analytical computation it smoothed out the 'spikes' of movement. But this sort of utility is frustrating, because you are forcing your mouse to move in a bowl of cold treacle - it tends to feel unresponsive (even if you don't suffer with hand trembling you can give this utility a go to see its effect). Also, SteadyMouse does not work with multiple monitors (mouse movement is constrained to a single monitor). So whilst it did give some positives to my working environment, it wasn't the solution I needed.
I then tried using a trackball instead of a mouse. No improvement - a trackball can reverse direction just as easily as a mouse.
The big positive I found with the trackball was that once the marble ball has found the position, the ball can be released and then the buttons can be clicked separately. However, finding and holding the actual position continued to be the problem....
Although it didn't resolve the problem I did however keep the trackball - it has a scroll ring which helps with paging up and down on long web pages (it is also possible to get a mouse with a scroll ring).
I then tried a joystick. This was instantly a winner for me because a joystick cannot reverse direction without going through the physical centre point. Joysticks tend to be spring-loaded, meaning they automatically return to the centre point when released - the mouse cursor stays where it got to, it doesn't follow the joystick back to the centre point.
The primary downside was setting the movement granularity to a usable value - too small and it takes forever to move around the screen, too large and it whizzes around like a speeding bullet - and impossible to stop over the point you want to select.
Note that a joystick does require the JoyToKey software which I explain for the gamepad below. You can't just take a joystick out of a box, plug it in, and start using it.
Although the joystick did get a small thumbs-up from me, it was a right royal pain trying to use a large physical joystick to do simple screen navigation, so overall I wasn't a happy camper. I might have got somewhere with two joysticks, configured as fast and slow - but that would have been problematical in terms of desk space. Maybe there might have been a joystick which offered some extra buttons for turbo mode etc - but I didn't figure that the joystick was going to be my final solution so I moved on.....
Finally I ended up buying a cheap and cheerful gamepad of the like you see with playstation and other game consoles - these gamepads can be purchased at any regular computer hardware store like PC World (however do shop around - there is a lot of choice available and PC World was not the cheapest). I bought one on ebay for about 10 bucks - that failed physically within a week so I figured that buyin a gamepad with warranty from a local store was the right move - not much more expensive. When combined with a simple and highly configurable software utility such as JoyToKey, the gamepad turned out to be the nearly perfect solution that I needed.
The gamepad got a very big thumbs-up from me. Combined with a trackball (which can be plugged in together) it proved to be the solution I needed - I can whizz around the screen with the trackball, and when I get near the area which I want to click on I can switch to the gamepad.
Some inconvenience, yes. But the gamepad works for me.
The total cost including simple gamepad and JoyToKey software license was below $30. This was money well spent for me, I can now accurately align the computer mouse to a specific screen pixel no problem, and because the gamepad I chose has 4 different banks of controls (2x buttons and 2x joysticks) I was quickly able to configure different speeds to each bank of controls, which I can switch instantly between.
Points of Interest
Using a gamepad DOES NOT and CANNOT replace the computer mouse. A gamepad is nowhere near as convenient as using a regular computer mouse (or trackball), and I still have my trackball connected to my PC - I switch between the trackball and gamepad as I need to. I will never be able to match the productivity that I once had, and I would hate to have to use this approach 8 hours a day in a regular job - but it has been a solution which has been favourable for the occasional use which I might need in order to carry out tasks using a computer system.
Buy A USB connected gamepad! You don't need to buy any fancy controller cards - it should plug into a USB socket just the same as a regular mouse does (you might of course need to buy a USB hub if you haven't got a spare USB socket on your PC).
Buy the cheapest gamepad! Trust me, you won't need one with a gazillion buttons or features, and things like shock control offer no value if you simply want to move the cursor around and click the left/right mouse buttons. I even decided that I would buy a wired rather than a wifi mouse, because I didn't want to find my mouse control being compromised by batteries which needed replacing/recharging. Don't be persuaded by a helpful shop assistant that spending more money will be worthwhile, it probably won't be - your decision should be based entirely upon whether the gamepad you buy has the right number of joysticks and buttons and NOT whether it is faster/more accurate.
I didn't find the perfect JoyToKey configuration for my needs instantly - it took some time, over a period of several weeks, until I eventually found the configured speeds I needed. However, once you've figured out how to use the (simple) JoyToKey user interface, it only takes seconds to make those changes - which are committed to a configuration file.
I did end up buying two different gamepads, one for my regular PC and another for my laptop. I could have bought the same, but I figured that I wanted to try a couple of different types. Although they both had the same feature set, the configuration required with JoyToKey was subtlely different, so I ended up building two separate JoyToKey configuration files. These configuration files are enclosed in the attached Config.zip file.