Rotatrix is a hardware mod of the Kensington SlimBlade Pro trackball that reads out full 3-axis ball rotation (XY plus twist) and maps it to continuous 3D control. The original device only used twist for discrete scroll gestures, which is a whole degree of freedom that can be put to more use.
For 3D control, I've found the most natural mapping is for the ball top to map to the object front, so normal trackball directions (up/down, left/right) become pitch and yaw, matching how rotation works with 2D “click and drag”, while twist rolls the object on screen. It feels natural for translation too: XY maps to familiar mouse motion, and twist corresponds to depth. Since you can twist the ball by moving a finger tangentially on the side of the ball, it feels like pushing and pulling the object.
I routinely use a SpaceMouse for 3D work, and one difference that stands out to me is that this is position control, not rate control (like a mouse vs a joystick). This gives a more direct control feel, like you're physically manipulating the object. Position control has a tradeoff: you have to re-grasp the ball to continue past your hand's range of travel. For large continuous motions, I added a rate mode; the ball's large range of travel actually gives finer rate control than a small-displacement device like a SpaceMouse puck.
How it works:
- I added a custom microcontroller inside the SlimBlade Pro alongside the stock one. It taps the SPI data stream from the two optical sensors (mounted at 90° on the ball housing) and presents its own interface to the host computer with raw (dx, dy) deltas for each sensor.
- Host software takes the 4D delta stream, calibrates it into so(3) - incremental 3D rotations - using a least-squares fit against known-orientation recordings, then applies configurable per-app bindings and outputs via an open protocol.
- The original trackball controller is untouched except that it's no longer connected to the USB port; it still works over Bluetooth/wireless.
Current state: working prototype, configurable per-app profiles with modal bindings (hold a key to switch what the ball does), dominant axis weighting for single-axis precision. I’m building out integrations with different 3D apps and I’m looking for early users to try it and give feedback, particularly people doing CAD, 3D modeling, or geospatial work.
Happy to go deep on the math, reverse engineering, software, or hardware. AMA.