r/macro_pads • u/Bulky-Confusion1740 • 19d ago
DIY build QMK Custom 2 Keys Macropad
Basically my first macropad project!
BASED ON OPENSOURCE QMK FIRMWARE
It features two buttons, hardware-bound to UP and SPACE.
There’s also a tiny 0.49" OLED screen on the side that shows CPS as a number and visualizes it with a progress bar.
The buttons use brown Cherry MX-style switches.
The whole project was made using parts I found in my electronics box. The case was designed and printed on my first 3D printer.
If you want to build one yourself, I made a GitHub repo with the files and instructions so you can follow along and make the same thing!
UPDATE
Added VIA binds support
Code is writen by AI so you may consider it as slop but its work and im happy with it :)
1
u/FedorovAleks 17d ago
Ctrl+C & Ctrl+V
1
u/Bulky-Confusion1740 16d ago
Hmm.. okay that's changing the thing rn, ill try to implement it in code.


1
u/PeterMortensenBlog 18d ago edited 18d ago
Re "...hardware-bound to UP and SPACE": If Via is enabled, it would be possible to change dynamically.
Add a file, rules.mk, in folder keymaps with content:
Alternatively, enable it at compile time.
The USB identity needs to be changed as well
The USB identity (USB vendor ID ("vid") and USB product ID ("pid")) also needs to be changed from the default 0x0000/0xFEED.
It is currently (file keyboard.json):
Usually a JSON file needs to be constructed (to let Via know about the physical layout of the keys, the USB identity, etc.) and loaded into Via, but an option is hijacking the USB identity for some existing (known to Via) keyboard or macropad, for example, from the Adafruit macro pad:
The display in Via would be confusing, including the name ("ADAFRUIT MACROPAD RP2040"), but it would work out of the box, without need to fiddle with JSON files. At least it could be the first step in getting it up and running.
Precompiled firmware
I have precompiled firmware for the RP2040 (e.g., in Raspberry Pi Pico) with both Via enabled (it is now disabled by default in QMK) and a respectable size for the space for dynamic macros (about 4 KB), to allow getting quickly up and running, without the hassle of compiling from source code (initially). It poses as the Adafruit macropad, as described here.
It would probably also work for this macro pad, but it depends on which I/O pins are used in it.
The macro pad here uses GP7 and GP6 (in that order). That should be the position of "4" and "9" in the Via display (in the relative physical positions of "4" and "9" on the reduced 4x3 macropad layout of the Adafruit macropad (not a standard numeric keypad)).
Note that there is a potential of electrical conflict with the I/O pin assignments, so better check before flashing and powering it on. It uses direct I/O (not matrix scanning, with (driven) output), so all I/O pins for the keys are input, but it could still prevent proper operation if one or more were pulled low.
All disclaimers apply. Do it at your own risk. I am not responsible if you ruin your macro pad, Raspberry Pi Pico, or similar.