Iterative RollerMouse Building Tutorial

After building an ergonomic hand-wired keyboard over several iterations, my next step was a mousing solution, particularly one that works without taking my hands off the keyboard. While touchpads or trackballs are viable approachs, I had a different approach in mind.

1 Roller Bar Mouse

Fifteen years ago I tried a roller bar mouse [my guide] and was hooked, but it did not fit my curved keyboard. The roller mouse principle is an outer pipe sliding left/right and rolling up/down, sitting on a stationary inner bar or rod; effectively you have a cylindrical track ball. Now we are going to integrate that into an ergonomic keyboard.

Original RollerMouse by ContourDesign
Original RollerMouse, courtesy of ContourDesign

Purely due to availability, I chose lengths of 20cm for the moving outer round pipe (Rundrohr) and 30cm for the stationary inner round bar (Rundstab). Then I had to find some appropriate bearings (Kugellager). We can either go for bearings with comparatively massive 6mm inside, 19mm outside diameter [amazon] with fitting 19/22mm outer pipe [amazon] and 6mm inner bar [amazon]; or for bearings with more delicate 3mm inside, 7mm outside diameter [amazon] with fitting 7/9mm outer pipe [amazon] and 3mm inner bar [amazon].

I opted for the latter, and due to the wonders of industrial precision, the bearing outsides fit into the 7/9mm pipe on the first try, and the bearing insides fit onto the 3mm bar after a bit of hard pressing because the cuts at both ends make the bar a bit thicker there. For the optical sensor I took an ancient Logitech M-BJ69 (seriously, I am not making the name up) [Linux] and 3d printed custom mouse board holders around it, containing 3.1mm holes taking the same 3mm rods that also hold the cylinder.

Roller mouse kr03, first prototype
Roller mouse kr03, first prototype

As always, tolerances between 50µm and 150µm are a good idea for fitting parts together. It took some tries and the 3mm rods were still hard to press through for some holes, and slightly loose for other holes. Vertical distance from the optical sensor needed to compensate for the missing mouse bottom plate, an additional 1mm or so. At first the pipe was too shiny, and mouse cursor movement was slight and somewhat erratic. Testing crepe tape around the cylinder for a more diffuse reflectance improved cursor movement, and spray paint [amazon] was my smoother and more permanent solution.

So the big question now is: How to integrate this mouse with my kr02 keyboard? Just laying it on the side reveals that the cylinder is not really nice to grab with the thumb.

Roller mouse kr03 and keyb kr02, side-by-side
Roller mouse kr03 and keyb kr02, side-by-side

So the cylinder should go halfway into the palm rest, and also towards the back where it is currently blocked by the breadboard. Also, an angle of 15° or so would be nice, such that my hands can come a bit from the outside, instead of straight on. So we need to touch the keyboard design.

2 Keyboard or rather Palm Rest Redesign

Since the keyb_kr02 has a one-piece base plate with unsufficient attachment points, we need to redesign that base plate, now using 4 parts for faster prototyping, tacked together with dovetail joint pieces. A ground plate thickness of 1.5mm has sufficient stability. Dovetails of 6mm→4mm from outer to inner, with 4mm thickness, are also stable enough.

I decided to integrate the rollerbar into the palm rest, at an 15° angle to have a slight inward hand orientation. Two "palm rest pieces" instead of one long one allowed for faster prototyping, since now a lot of binder joints and a (sawtooth) bar receptacle were needed. The sawtooth is meant for adjusting the vertical position of the receptacle in 1.5mm steps, the distance between two teeth.

Keyboard kr02 palm rest (right), as rollerbar receptacle
Keyboard kr02 palm rest (right), as rollerbar receptacle; the bar comes out at the left.

To connect the mouse plate, the palm rests and the rollerbar, I designed binder struts with horizontal and vertical connectors to fix against rotation. Again in two parts, a longer structural one directly at the palm rest, and a shorter one that does the fine-tuning at the mouse holder. This fine-tuning determines the roller bar positioning relative to the optical sensor.

Roller mouse kr03 (v2) between two palm rest pieces
Roller mouse kr03 (v2) between two palm rest pieces

However the assembly was not stable enough, even with both vertical and horizontal binders: Small rotations on large levers added up to big translations resulting in the roller bar being too low, particularly on uneven surfaces like cloth.

So the next step will be to re-introduce a second rod for stabilization, under the assumptation that steel rods are a lot more stable than a filament assembly. This also means touching the palm rest CAD once more.

To be continued...

EOF (Oct:2024)