In a previous post, I wrote about my excursion into 3D printed mice with the Ploopy Classic Trackball. I’ve been using the Ploopy Classic for months at this point and I really like it, even with a few minor gripes. In fact, I like the Ploopy Classic so much that I bought a Ploopy Adept kit! I’ve been interested in buying the Adept for a while, since it is a similar form factor to the Kensington SlimBlade Pro which I enjoyed using. This post for the Adept will be shorter, because the Adept is really simple to assemble and configure.

Assembly is very straightforward for the Adept. The only scary part is soldering the optical sensor to the board, but this is the only hard part; no other soldering is necessary. Soldering the sensor is pretty much the exact same as it was with the Ploopy Classic. The pins are tiny, but I found it wasn’t that difficult with a little dabble of flux and some patience. Once the sensor is soldered to the board, you basically just plop the board in the base, put the top over the base, and screw it all together. Putting the roller bearings together and inserting them can be a little tricky, but again, it’s the same steps as the Ploopy Classic. After assembly was complete, I plugged it in and it worked!

Ploopy Adept

Similar to the Ploopy Classic, I wanted to modify the default keymapping to my liking. This can be achieved using Via, but I went ahead and created my own keymap in my qmk_firmware fork. Here’s the button layout I use:

[0] = LAYOUT( KC_BTN3, KC_BTN5, DRAG_SCROLL, KC_BTN4, KC_BTN1, KC_BTN2 )

This gives the following mapping:

  • Bottom Left: mouse button 1 - left click
  • Bottom Right: mouse button 2 - right click
  • Top Left: mouse button 3
  • Top Right: mouse button 4 - used to switch applications
  • Top Middle Left: mouse button 5
  • Top Middle Right: drag scroll

The default drag scroll needed some configuration in config.h, since I felt it went the wrong direction and was way too fast. This sets the DPI of the trackball:

#define PLOOPY_DPI_OPTIONS { 1200 }
#define PLOOPY_DPI_DEFAULT 1

This inverts the trackball scroll direction:

#define PLOOPY_DRAGSCROLL_INVERT

And finally, these divisors reduce the speed when scrolling. A higher number equates to a slower scroll:

#define PLOOPY_DRAGSCROLL_DIVISOR_H 120.0
#define PLOOPY_DRAGSCROLL_DIVISOR_V 120.0

The only other configuration I added was to optimize the build size. Adding the following to rules.mk enables Link Time Optimization:

EXTRAFLAGS += -flto

Since enabling Link Time Optimization is incompatible with some features, I disabled those features in config.h:

#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION

Credit for reducing the firmware size goes to this post and my full set of configuration changes can be found here.

So how does the Adept stack up against other trackballs? I think it’s an absolutely fantastic device! The buttons are beautifully clicky, the ball feels amazing with the roller bearings, and it’s quite comfortable to use for long periods of time. I was worried the casing would be too tall and tilt my wrist at an uncomfortable angle, but I find that it’s easy to hover my whole hand over the trackball and buttons. I’ve used it for several full work days now and I’m not experiencing any abnormal wrist strain. I look forward to using the Adept for some time to come!