← projects

custom macropad pcb

2025
custom macropad pcb
KiCad layout: 3×3 switch matrix with per-key diodes along the right edge.

summary

Custom 3×3 mechanical macropad designed as a full schematic-to-firmware exercise: PCB layout in KiCad, board fabrication, and USB HID firmware on an Arduino Micro.

hardware

  • Nine mechanical switches arranged in a 3×3 matrix, reducing I/O requirements to six microcontroller pins (three rows and three columns).
  • One diode per switch blocks reverse current paths that cause ghosting, enabling reliable multi-key presses without phantom detections.
  • Schematic, custom footprints, board outline, and hand routing completed in KiCad prior to fabrication.
  • Board geometry includes an angled outline chosen during layout rather than left as a default rectangle.

firmware

  • Firmware runs on an Arduino Micro and enumerates to the host as a standard USB HID keyboard, requiring no custom drivers.
  • Scan loop drives one row at a time, reads column states, applies software debouncing, and reports key events over HID.
  • Matrix scanning and debounce timing were tuned for reliable single- and multi-key input under normal typing cadence.

process

  • Project scoped as the smallest board that still exercises the full PCB workflow: schematic capture, footprints, routing, fabrication, assembly, and firmware bring-up.
  • Hand routing the matrix highlighted the gap between a correct schematic and a practically routable board layout.
built with
kicad, c++, arduino micro, usb hid

source on github