I was recently contacted by a woman looking to help her friend. Her friend has Multiple Sclerosis, which can manifest in many ways but in this case it was extreme tremors that made using a computer mouse practically impossible.

After kicking a few ideas back and forth, we landed on this idea. We would emulate the mouse using giant buttons. The size and impreciseness of the buttons would help counteract the tremors.

I shared the different sizes of buttons available, and she picked out these 100mm big buttons from Adafruit. They’re big and tough, so they can take some abuse. I love them.

So, in order to do this project, I’d need 6 giant buttons, a box to hold them all, and a microcontroller that can do keyboard/mouse emulation. The cost for this project was starting to add up as those buttons are about $10 each. Luckily, Adafruit stepped in and volunteered to donate all the parts for this build! Thanks Adafruit! 

Since Adafruit was donating the parts, I used the Adafruit Feather 32u4 basic proto instead of the teensy which I had previously used.

Luckily, there’s an arduino library for keyboard/mouse emulation for the 32u4 already, so I could almost just copy/paste and be done aside from building a box and soldering some wires.

I slapped together this box to hold everything, with the buttons at an angle for slightly better ergonomics. Then I added coat of paint on it and sealed it up with polycrilic so it would be easy to clean.

After that, I soldered all the buttons in place and dropped the example code onto the board. When I plugged it in, my computer went nuts! I had left the code to detect the pins going “high” or being connected to the 3v to detect a button push, but the feather is the opposite. So when I plugged the board in, it thought all the buttons were being pressed constantly. A quick flip of the code helped fix the issue. This is a ridiculously beginner mistake, but hey, it was funny.

I chose to have the controller simulate keyboard presses instead of mouse movement for a reason. Though the board could move the mouse a certain amount of pixels per push, I wanted the user to have more control without having to reprogram things. If I do keyboard emulation, she can download a program called NeatMouse that does mouse emulation from keyboard presses, and she can have more granular control over sensitivity.

I’d love to call this a success, but there’s a huge last step to this process. She needs to use it for a while and see if it really helps. While it sounds like it should help, you never know, maybe it is too cumbersome. Maybe it is too big. Maybe the emulation is too imprecise. We’ll just have to see.

edit: She got it a couple days ago and says it is working great! She says it will take some getting used to, but already allowed her to play some things that she previously couldn’t.

Looking at this project from the user side, I could also see ditching the wooden box in favor of something that can sit on a lap comfortably. Maybe something like a lap board.