Ploopy is a company located in Canada that makes open-source mouse with 3D printing material. They’re especially known for creating trackball mouses with modern sensors. Ploopy devices use QMK firmware by default, this gives you a lot of flexibility to customize your mouse.
Ploopy Classic is their most iconic model, a modern, open-source 3D-printed imitation to the Microsoft Trackball Explorer.
One of the weakest point on the Ploopy Classic (I think) is the scroll wheel. It is not pleasant to use. To fix this, it would be nice if we can hold or click a button, which then enables drag scroll, so that we can simply use the trackball itself to do scrolling. This is especially helpful if we need to scroll through a wide range of pages. Luckily, QMK Ploopy firmware already supports this, but we need to compile the firmware with the setting enabled, and flash the firmware to the mouse.
We need to first set up QMK by simply following their documentation .
First we need to install QMK via
1curl -fsSL https://install.qmk.fm | sh
Now we need to setup the QMK environment. It is generally preferred to setup based on your own fork on QMK firmware. To do this, simply go to their GitHub and create a fork, but this is not necessary. Now we set up the QMK environment via
1qmk setup <github_username>/qmk_firmware -H <path>
If you didn’t create your own fork of qmk firmware,
simply leave that option blank. Then put the <path>
where you want to install QMK home directory.
I personally prefer to put it in $HOME/Desktop.
The default location is to put it in $HOME.
Now thats done, we can compile our own version of
Ploopy Classic Trackball Mouse.
After QMK is set up, go to the default ploopy mouse firmware in
/qmk_firmware/keyboards/ploopyco/trackball/. Here trackball
refers to the ploopy trackball mouse.
For the Ploopy trackball mouse, there are a total of 5 buttons.
This means we have 2 extra buttons, located to the right of
trackball, for customizations. These were used for page backward
and forward by default, but I never use these.
Instead I want to map:
We first need to map keys (buttons) on our mouse to have the
corresponding function, and thankfully, there are already these
key-codes available. To create a custom keymap, let’s create
a subdirectory called custom,
/qmk_firmware/keyboards/ploopyco/trackball/keymaps,
to contain our custom settings.
We already have a default keymap located in /trackball/keymaps/default.
For starter, copy the keymap.c file in /default to /custom.
The original keymap.c should look like:
1#include QMK_KEYBOARD_H
2
3const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
4 [0] = LAYOUT( /* Base */
5 MS_BTN1, MS_BTN3, MS_BTN2,
6 MS_BTN4, MS_BTN5
7 ),
8};
Now we want to edit our /keymaps/custom/keymap.c to have:
1#include QMK_KEYBOARD_H
2
3const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
4 [0] = LAYOUT( /* Base */
5 MS_BTN1, MS_BTN3, MS_BTN2,
6 DPI_CONFIG, DRAG_SCROLL
7 ),
8};
where I have changed MS_BTN4 to DPI_CONFIG and MS_BTN5 to DRAG_SCROLL.
Now we want to add a configuration file to have some setting.
Create a config.h file in /keymaps/custom to have
1#pragma once
2
3// Invert Drag Scroll Direction
4// Scroll trackball upwards to scroll backwards
5#define PLOOPY_DRAGSCROLL_INVERT 1
6
7// Different DPI Settings
8#define PLOOPY_DPI_OPTIONS { 400, 600, 800, 1200, 1600 }
9#define PLOOPY_DPI_DEFAULT 1
10
11// Fix Drag Scroll DPI to 100
12#define PLOOPY_DRAGSCROLL_DPI 100
Now we can compile via:
1qmk compile -kb ploopyco/trackball/<rev-#> -km custom
where <rev-#> is the revision number of your ploopy classic
trackball, this you need to check yourself.
For ploopy classic 2, <rev-#> is rev1_007.
After its compiled, unplug your ploopy mouse, then hold down button 4 (the one right next to trackball) and plug in again, and then release the button. Now even though its plugged in, you won’t be able to use the mouse. Now in terminal, we flash the firmware via
1qmk flash -kb ploopyco/trackball/<rev-#> -km custom
If all steps are done correctly, the your ploopy mouse should have the ability to do drag scroll once you hit button 5.
We can clean up the build file via
1qmk clean