The jb3x3 is a cheap, dead simple 3x3 macropad powered by an Arduino Pro Micro, chosen for its slim profile, HID capability, and low cost.
The PCB files for production can be found in jb3x3_pcb_files.zip
where they can be uploaded to a service such as JLCPCB. The bottom plate is stored in the 3x3pcb.dxf
file.
Originally designed for use with Zoom, the keypad has infinite uses – Discord shortcuts, convenient macro keys, or control a livestream with ease.
For a batch of 10 PCBs the cost came out to less than $15 per unit, not including labor/solder/tools.
The keypad is designed for a Cherry MX-compatible switch, meaning many common, cheap switches can be used. I used “Otemu” switches - very cheap but functional. The controller is designed to be an Arduino Pro Micro, ideally flashed with QMK (but manual programming is of course possible).
- Setup QMK environment
- Make jb3x3 keyboard:
qmk new-keymap -kb jb3x3
- Make new folder in
jb3x3/keymaps
(if it gets created from the above step just transfer files) - Make new
keymap.c
file - Edit/configure keymap (written in C obviously)
- Reference section Notes re: Programming
- Compile:
qmk compile -kb jb3x3 -km <keymap>
- Flash the .hex file to keyboard, I recommend the GUI tool but I’m sure you’ll figure it out
- When flashing you need to put the Arduino into the proper mode, I think just short GND/RST, then plug in the keyboard, then disconnect
- It’ll show up in the software a bit differently
- Let me know if you have issues with this, haven’t done it in a while
jakebox/keymap.c
is a good reference- https://beta.docs.qmk.fm/using-qmk/simple-keycodes/keycodes
- Modifier keys are keys wrapped in, for example,
LCTRL(kc)
- These can of course be stacked
- Can use
MO(#)
to shift to a mod layer easily (this is my preferred method)- While they key is held shift to another layer
- Corresponding key on the layer you’re shifting to needs to have
KC_TRNS
- See
teacher_mac/keymap.c