Today I finished working on my new ergonomic mouse, which features a giant weighted scroll wheel. I started this project on March 26th, and worked on it for about 15 hours altogether.
Read on for pictures of the process.
Several of my co-workers mentioned to me today (after seeing the finished product) that there is well-established microcontroller code for making your own mouse from scratch. However, I am not an electrical engineer, nor do I make many things from scratch. I cannibalized a Logitech MouseMan Wheel which was in perfect working order to make the new mouse. As you can see, I have more than one; they are (in my opinion) one of the most comfortable and well made mice I’ve ever used.
Although I owe some credit to jpaturzo’s “Homebrew USB Knob” (for the notion to get the knob from a VCR’s read/write head), my first impulse was that it was a waste of a good idea. I liked the idea of a scroll wheel with some inertia to it (instead of friction), but why separate it from the mouse?
After removing the original scroll wheel assembly from the mouse, I drilled a hole in the center of the wheel itself. Then I put a brass standoff in the drill press and used a file to smooth it down to the right diameter. This was mostly because I couldn’t think of any other way to connect the two together.
To join the standoff to the VCR’s head, I cut an X in the axle and then wrapped tape around it. This formed a sort of cup which I filled with epoxy, then dropped in the standoff.
After spinning it a few times to make sure it was aligned, I let it set.
Once that had dried (it worked very well), I started working out how I was going to attach it to the mouse. I wanted something ergonomic, where my hand would be perpendicular to the table. So, I stood the head on its end and went from there.
The angled piece of aluminum was helpful in 2 ways. First, it raised the head assembly over the circuit boards and mouse ball. Second, the angle made it stiff enough to be able to hold the weight of my hand and the head without flexing.
I made the first cuts using a miter box and a hacksaw.
There are a bandsaw and drill press where I work, which I used to finish the cuts on the aluminum and fit it to the head assembly.
I’m happy to say that I was able to attach the angle pieces to the head assembly using its existing posts and holes — I did not have to cut or drill the VCR parts.
For the first time, the head stood on its own. I took the opportunity to hold the optical sensor to the wheel and make sure it worked (it did).
The hard part now would be figuring out how I was going to put buttons on it. The first idea I had was to cannibalize another mouse and attach its button assembly to where my fingers would be.
After a little trial and error, it was evident that the whole thing would just be too clunky. So, I would have to do it the hard way (which is usually the right way).
The decision to drop the second mouse assembly worked well for me, since it forced me to use the original mouse buttons in the final design.
But, since they were designed to be pressed via the large plastic button panels on the mouse’s shell, I had to make my own buttons for them. I took a chance with these pushbutton switches from the local Radio Shack. It paid off — the switches were easy to separate with 2 pairs of pliers.
Update 4/12/06: The reason I didn’t use the pushbuttons as they were is because they didn’t click, had a spring that was too stiff, and had too much distance between “up” and “down”. In short, higher finger strain and no tactile feedback.
What you’re looking at in this picture are (from bottom to top), the pushbutton switch as it was sold to me, the piece I discarded, and the actual button, which I planned to mount to the mouse switch.
Trying to attach them together with a bent paper clip wouldn’t work.
So for the second time, I would have to do it the hard way.
Fortunately, I had some Madison strips lying around which I figured would be thin enough for the job.
Even better, they were about the right width for the switches!
I had to cut 5 holes in each one: 1 for the button itself, and 4 to line up with the holes in the switches. This took a while, but I took my time and didn’t make any mistakes.
It took quite a few tools to get the desired results from the metal (without damaging the push buttons or switches).
My workbench is … small.
But the switches came out great. I still used paper clips to wire them together, but now the metal frames kept the button aligned with the switch action.
The next day at work, I used the bandsaw to trim some excess pieces of metal from the VCR head. Its as if Phillips didn’t have ergonomics in mind when they designed the head…
To make the plate that would hold the buttons, I had to dig up some of my trigonometry education (hopefully my high school math teacher is smiling somewhere). I wanted the plate to form a 45 degree angle with the wheel, so I determined that I would need a piece of metal with an inner arc radius of 1.414 times the radius of the wheel.
I used a paper template just to make sure, then cut the actual piece with sheet metal nibblers.
To get this number, I reasoned that the plate would be perpendicular to the wheel if its arc radius was the same as the wheel’s radius. If the plate was flush with (wrapped around) the wheel, the arc radius would have to be infinite — a straight line.
So, that seemed like the cosecant function and sure enough, R = r/sin(45) gave me the proper arc radius. It also happened to be the same size as my coffee mug, which saved me from having to look for a compass.
That looks like 45 degrees to me.
Here again, I’d like to point out that I was able to use the features of the existing assembly to attach the button plate.
In this picture, I’ve marked where the buttons are going to go. From here on out, I was too interested in finishing to take pictures.
So, jump ahead to the finished product. I used Shapelock to make the hand rest and to “glue” the wheel to the bottom half of the mouse shell.
I also used Shapelock to form a holder for the optical sensor board, which is held in position by yet another bent paper clip.
The wiring is messy, but it doesn’t affect the operation of the mouse and there was really no other way I could route the wires that wouldn’t interfere with the wheel.
Because of physical limitations, I had to make the optical sensor stick out pretty far from the center of the mouse. This is more of a cosmetic problem than an actual problem, because the wheel is heavy enough (and centered enough) that the mouse is impossible to tip over.
Not only does the scroll wheel work beautifully, the mouse is very comfortable to hold. Although there are features like “auto scroll” in some word processors and web browsers, this mechanical version works in every application and on every platform.
The tactile feedback from the wheel is incredible too; by feeling the wheel spinning past your finger, you can judge how far you’ve travelled through a document and make very precise stops.
Unlike auto-scrolling, in which scroll speed is determined from the pointer position, with this scroll wheel the speed is controlled by your finger’s speed — just like the scroll position is controlled by your finger’s position. In other words, this wheel makes a lot of sense to your hands because the interaction model stays the same in both short and long scrolls.
If you have access to an old VCR, this project is definitely worth all the effort involved. And if you are a company who makes mice, I hope you give me a free mouse if you improve on this idea.