Handwiring a Custom Keyboard
Handwiring is the purest form of custom keyboard building. With no PCB, you wire each switch directly to a controller using a diode matrix. It takes more time than a PCB build, but gives you complete freedom — any layout, any controller, any case. If you can imagine it, you can build it.
Before You Build
Gather everything below before you start — it makes the whole build go smoothly.
Component Manifest
| Component | Qty | Specification |
|---|---|---|
| MX-compatible switches | Per layout | Any MX switch works |
| Pro Micro ATmega32U4 | 1 | Programmed via Arduino IDE |
| 1N4148 diodes | 1 per switch | Through-hole diodes |
| Hookup wire (24 AWG) | ~5m | Multiple colors strongly recommended |
| Case or plate | 1 | 3D printed, laser cut, or custom-made |
Tools Required
01
Soldering iron
02
Solder
03
Wire strippers
04
Flush cutters
05
Multimeter (continuity mode)
Build Steps
01
Step 1 // HANDWIRING
Mount Switches in Case
Mount all switches in your plate or case. They should snap in firmly with a click. This is your last chance to finalize the layout — take your time and make sure every position is correct before wiring.
Pro Tip
Sketch your layout on paper and number rows/columns before you start wiring.
02
Step 2 // HANDWIRING
Solder Row Diodes
Solder one 1N4148 diode to the bottom pin of each switch. The cathode (black stripe) must point toward the row wire — consistent direction on every switch. Bend the diode body close to the pin, solder, and clip the excess lead.
Pro Tip
Wrong diode direction on even one switch will make a whole row ghost — check every stripe before soldering.
03
Step 3 // HANDWIRING
Wire the Rows
Run a wire horizontally across each row, soldering to each diode cathode. One continuous wire per row is fine — just loop, strip, solder, and continue. Keep wires tidy and close to the switches.
Pro Tip
Use one wire color for all rows and a different color for all columns.
04
Step 4 // HANDWIRING
Wire the Columns
Run a wire vertically through each column, soldering to the top pin of each switch. One wire per column. The row wires connect to diode cathodes; column wires connect directly to switch pins. These two must never touch.
05
Step 5 // HANDWIRING
Connect to Controller
Connect each row wire and each column wire to a GPIO pin on your Pro Micro. Document every connection — row N → pin X, column N → pin Y. You will need this exact mapping in your Arduino sketch. Use a consistent numbering scheme.
Pro Tip
A spreadsheet mapping matrix positions to pin names makes the Arduino sketch much faster to write.
06
Step 6 // HANDWIRING
Flash Arduino Firmware & Validate Matrix
Open the firmware sketch in Arduino IDE. Set your matrix size and pin assignments (rowPins, colPins arrays) to match your wiring. Upload to the Pro Micro and test every key in a keyboard tester — look for missing keys or ghosting, which usually means a bad diode joint.
Pro Tip
Add Serial.println() debug output to identify dead rows/columns quickly during testing.
Join the Discussion
Stuck on a step, got a tip, or finished your build? Leave us a comment through the form — we read every one and it helps us improve the guide.
Leave a Comment →