Erkbd
Erkbd
3D printed, handwired, 44 key split mechanical keyboard
Overview
erkbd - Eriks Keyboard
Erkbd is a 3D printed, handwired 44 key split keyboard powered by qmk.
It features two encoders, two 1.3" 128x64 oled displays, and uses the waveshare rp2040zero development board.
It is inspired primarily by crkbd together with the layout of the void ergo s
The keyboard was designed using FreeCAD and printed using a Creality Ender 3v3 ke 3D printer using creality CR PLA filament.
The name ERiks KeyBoarD is ment to honor corne (crkbd), which pulled me down this money burning rabbit hole combined with the fact that my name is Erik.
Images


The knife was a short but intense meme on reddit.com/r/ErgoMechKeyboards they are not included.
Issues and things to be aware of before building
If you decide to build this be aware that this was my first 3D modeling project with no previous CAD experience. It is not perfect and there are a few issues listed here.
Case dimensions
For aesthic reasons I wanted the caps to be as close as possible to the case edge, it took some trial and error before getting it right. Printing with another printer or using other keycaps may cause the caps to hit the edge.
Before soldering, assemble the case and plate with switches and keycaps along the border and make sure the keycaps stay clear of the case.
You might be able to just sand the edges a little but let me know if it doesnt fit properly, and i will try to fix a new version with a larger gap.
Controller mount
The edges of the controller mount was too low in the first revision and i ended up having to use more hot glue than i would have liked to secure them. I have raised them a little and now the controllers should fit better and stay in place with just friction but i have not tried this this out since i have no more controllers.
Switch holes
The plate is 3mm thick but has pockets for the switches to click in. They fit well enough for regular use but if you plan to change keycaps i recomend putting some hot glue on each switch to secure them or be very careful when pulling the caps to not damage the matrix
Bumpers
To keep the profile low and avoid the screws from hitting each other in the middle of the spacers there are no pockets for the screws on the bottom of the case. Without bumpons they will scratch your desk.
Different OLED PCBs
There are different pcb versions of the sh1106 OLED modules where the pin headers are in slightly different places.

The frame is modeled for the right one in the picture. If you use left (which i did because i wanted white text) you will have to desolder the pin headers and solder wire directly to the pcb from below. The firmware can stay the same.
If you dont want to desolder the headers make sure to get the one to the right in the picture (blue text) then the headers will fit.
Also note that these they have ground and vcc pins reversed.
Spacer positions
The screws for two of the spacers holding the plate up are hidden behind the oled modules. This makes it important to mount these first. Care should also be taken if removing the case so they don't fall out to avoid having to remove the oled frame.
BOM
plate
- ~18g x2 PLA Filament
- 46 pcs mx compatible switches and keycaps
- 2 pcs waveshare rp2040 zero development boards link
- 2 pcs EC11 Rotary encoders link
- 2 pcs DIP PJ320A trrs jacks link
- 44 pcs 1N4148 diodes (or similar) link
- 1 pcs 4.7K resistor link
- Wire for the matrix. I tried using 26 AWG solid core wire i had lying around for everything but found it to thick and ended up wiring the matrix separatly with solid core wire and connect to the controller with thin stranded wire i teared of a ribbon cable.
Case
- ~40g x2 PLA Filament
- 18 pcs 5mm M2 brass female/female spacers and 36 matching screws (18 is a little overkill so some could be skipped) link
- Silicone Bumpons link
Oleds
- ~3g x2 PLA Filament
- 2 pcs 1.3" SH1107 oleds (see note on different versions above) link
- 8 pcs M3*12mm bolts (for mounting the oleds) link
- 8 pcs M3*bolts
Regarding the m3 bolts you can use whichever you want as long as the dimensions match but don't get ugly ones.
Firmware
The keyboard source along with a default and debug keymap can be found in the official qmk_firmware repo here.
The prebuilt firmware in this repository is only intended for testing.
When creating your own keymap you can copy the keymaps/default directory for data driven keymap.json configuration or keymaps/debug if you want to use a regular keymap.c
The only difference is that the debug version logs matrix events to the console and prints handedness instead of mod/layer status to the oleds.
Build steps
Printing
The keyboard consists of 3 parts. The switch plate (printed face down), the case (printed face up) and the oled frame (printed face down). In addition to this you need to print 8 washers that sits between the oled pcb and plate to make the components stay clear of the plate and align the top of the frame with the bottom of the keycaps.
Since the oled frame and plate are printed upside down. The structure of your print plate and z-offset calibration will have a big impact on the result
Flash the controllers.
Before starting, flash the controllers with the debug version of the firmware. The default way to enter bootloader is to hold down boot and tap reset on the board.
After flashing, bootloader can be entered by
- Double tapping reset on the controller
- Bootmagic (Holding down key 0, 0 (left side) or 4, 5 (right side) when powering on
- Adding QK_BOOT to your keymap.
Mount the switch plate and case.
Screw all the spacers to the switch plate and mount switches.
See Issues for note about keycap clearance and access to spacers
Handedness pin. LEFT side only
To identify which half is left and which half is right a ~4.7K Pull up resistor needs to be soldered between pin GP1 and 3.3V on the left half of the keyboard.
This is not a great position but wrapping the legs with electrical tape and bending it behind the usb port works decently
Solder and mount the OLEDS
Solder wire to the oled modules (see the note in the first section about different oled versions) make sure to note down which pin is which, you will not be able to see the text on the pcb once the frame is mounted.
Feed the wire through the hole in the plate and and screw everything in place using the M3 screws. The order from the top is
- Oled frame
- Oled module
- Printed washers
- Switch plate
Solder the the wires to the controllers.
| Oled pin | Controller pin |
|---|---|
| VDD | 3.3v |
| GND | GND |
| SDA | GP2 |
| SCL | GP3 |
Remember to add the resistor.
Verify that the controler and oled works. When plugged right or left should be printed on the oled depending on wich side is connected.
Wire the matrix
There are many handwiring guides around. this is a good starting place.
Pins
The matrix pins are different on the right and left side.
Left side
| Row | PIN |
|---|---|
| 0 | GP4 |
| 1 | GP5 |
| 2 | GP6 |
| 3 | GP7 |
| Column | PIN |
|---|---|
| 0 | GP8 |
| 1 | GP9 |
| 2 | GP10 |
| 3 | GP11 |
| 4 | GP12 |
| 5 | GP13 |
Right side
| Row | PIN |
|---|---|
| 0 | GP28 |
| 1 | GP27 |
| 2 | GP26 |
| 3 | GP15 |
| Column | PIN |
|---|---|
| 0 | GP9 |
| 1 | GP10 |
| 2 | GP11 |
| 3 | GP12 |
| 4 | GP13 |
| 5 | GP14 |
Encoders When looked at from the bottom with the two pins pointing left and three pins to the right the order follows the table.
| Pad | Pin |
|---|---|
| A | GP7 |
| GND | GND |
| B | GP8 |
The two pins on the other side are soldered to the matrix as a regular switch
TRRS
Push the trs jack into the slot on the plate with the three pins on one side pointing out sideways on the top
The jack will be held in place by the case so hot glue is optional but recommenced
| ttrs | controller |
|---|---|
| 1 leg | GP0 |
| 1 leg | GND |
| 1 leg | 5v |
Make sure you use the same legs on both halves. Double check with a multimeter before powering on.
Test, glue if needed, and assemble
Test everything before assembling the case, especially that you are able to enter the bootloader using bootmagic on both sides. Check the qmk console that all keys are properly registred.
Add hot glue where needed, in theory it should be possible to use no glue and have everything fixed by friction but i recommend at least glueing the trs jack, and controller. It makes mounting the case easier and will make it less fragile, when inserting and the cable.
Then insert the plate in the case and secure with the m2 screws.
Happy hacking.
Files in this package
- CAD source: erkbd.FCStd
- Exports: case_left.3mf, case_right.3mf, oled_frame_left.3mf, oled_frame_right.3mf, switch_plate_left.3mf, switch_plate_right.3mf, washer.3mf
- Images: case.png, oled_frame_back.png, oled_frame_front.png, oled_washer.png, switch_plate_back.png, switch_plate_front.png
Source & license
- Original author: erikpeyronson
- Source repository: https://github.com/erikpeyronson/erkbd
- License: MIT
Imported into the CommunityCAD Archive with attribution preserved. All rights remain with the original author under the stated license.
More models
Awesome KeebsCommunityCAD Archive· DXF · STL +1
Redox KeyboardCommunityCAD Archive· STEP · F3D +2
QalbleCommunityCAD Archive· STEP · STL
Idawgz32CommunityCAD Archive· 3MF
Aurora KeyboardCommunityCAD Archive· STEP · SLDPRT +3
CheapinoCommunityCAD Archive· STEP · STL
Print3RCommunityCAD Archive· STEP · FCSTD +3
Bancouver40CommunityCAD Archive· STEP · DXF +2