January 7, 2026
Description
This is a mechanism to turn the Ploopy trackpad into a clickpad. The design is heavily inspired by the Apple iPad Pro keyboard's trackpad mechanism and can be clicked anywhere on its surface, unlike many laptop clickpads.
Even though it was not designed for a switch, I used the the GPIO for the unstuffed diagnostic LED, GPIO24.
There are two variations- one with the trackpad flat and another with it angled. Both models use the original trackpads top surface, bootloader cover, and omniclick hinge.stl. The only difference is the flat version uses omniclick flat support.stl and the angled one uses omniclick angled support.stl.
###Part Printing
Because it has living hinges (hinges made from the plastic itself), the hinge part should be printed with a relatively flexible filament like PETG. The material for the supports doesn't matter so much, and may benefit from a stiffer one, though I used PETG throughout.
The hinge and flat support can be printed in their normal orientation. The angled support is designed to be printed rotated on its back, then the support tab broken or cut off.
###Assembly
The hinge screws onto either support at four points with M3x10mm flat head screws. The hinge part then hooks onto the trackpad top part and screws on as normal with the screws supplied by Ploopy.
Center a tact switch under the central hinge support, preferably on some carrier board and insulated from the traces underneath with a total thickness under 4.5mm. Use the hinge part before it is screwed to the support, hook it onto the trackpad top part, then mark the location of the center support on the back side of the PCB. Wire one contact of the switch to ground and the other to the right LED contact as pictured.
###Firmware Changes
In Ploopy's multitouch_experiment branch for the Pavonis keyboard/trackpad, config.h, change #define DEBUG_LED_PIN GP24 to #define DIRECT_PINS {{GP24}}
Change the button assignment in keymap.c from const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {{{ KC_NO }}}; to const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {{{ KC_BTN1 }}}; In this example, KC_BTN1 is the primary (left) mouse button, but it can probably be changed to anything that QMK supports.
Compiling is done with regular QMK tools, programming is the same as for a regular Ploopy trackpad, RP2040 bootloader style.
###Final Notes
License:
Creative Commons - Attribution - Share Alike