Skip to the content
2 layers80 × 90 mmMacro keypad, the printed circuit board in 3D

Custom USB-C mechanical macro keypad - KiCad PCB design around an RP2040

Size
80 × 90 mm
Copper layers
2
Thickness
1.6 mm
Parts
70
Nets
68
Pads
316
Tracks, vias
845, 112
Pours
2
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
26 Jun 2026
Updated
29 Aug 2026

Overview

Macro keypad is an open-source printed circuit board by johnppilli, from the johnppilli/macro-keypad repository on GitHub. It is a 2-layer board of 80 × 90 mm with 70 parts on 68 nets, routed with 845 tracks and 112 vias.

It is built around the RP2040, W25Q16JVSSIQ and AP2112K-3.3, with the WS2812B among its other parts. Its parts include 27 capacitors, 18 diodes, 12 switches, 3 resistors and 3 ICs. It belongs with the keyboards and input boards and the RP2040 boards of this library.

Main components

4

README

README.md

Macro Keypad

A 3×3 hot-swap USB-C macro keypad built around an RP2040, with per-key RGB and a rotary encoder. Designed in KiCad from schematic through fabrication.

TopBottom
Board topBoard bottom

Bare 2-layer board from JLCPCB, before assembly.

Hardware

  • RP2040 (QFN-56) with a 12 MHz crystal and a W25Q16JV 2 MB QSPI flash
  • USB-C receptacle for power and data, with 5.1 kΩ CC pulldowns
  • AP2112K-3.3 LDO dropping USB 5 V to the 3.3 V rail
  • 3×3 key matrix on Kailh MX hot-swap sockets, one SOD-123 diode per key so simultaneous presses don't ghost
  • 9× WS2812B addressable RGB, daisy-chained as one data line for per-key backlight
  • EC11 rotary encoder with integrated push switch
  • BOOTSEL and RESET buttons, plus a 4-pin SWD header for debugging
  • Decoupling on every supply pin per the RP2040 hardware design guide
  • 2-layer board, ERC and DRC clean, fabricated by JLCPCB

Full component list: docs/bom.csv — 70 parts across 19 line items. Schematic as PDF: docs/schematic.pdf.

Layout

text
hardware/      KiCad project — schematic, board, and project-local footprint library
fabrication/   Gerbers and drill files as sent to the fab, plus the board outline DXF
docs/          Schematic PDF, BOM, board photos

hardware/keyswitches.pretty holds the Kailh hot-swap footprint and is wired up through hardware/fp-lib-table, so the project opens with all footprints resolved on a clean KiCad install.

Building the board

Open hardware/macro-keypad.kicad_pro in KiCad 10. To re-order boards, zip the contents of fabrication/gerbers/ and upload — 2 layers, 1.6 mm, HASL is fine.

Status

The board is fabricated and I'm hand-soldering the switches, diodes, and supporting components. Firmware is in progress: a USB HID keyboard with matrix scanning and debounce on the RP2040. Bring-up and testing come once assembly is done.

Known gaps for a v2

  • No ESD protection on the USB data lines. A USBLC6-2SC6 across D+/D− is the obvious addition and there's room for it near the connector.
  • The matrix diodes are specified only as generic D in SOD-123. They need a real part number in the BOM (1N4148W or equivalent) before anyone else can build this.

Parts

70
QtyValueFootprintReferences
19100nFCapacitor_SMD:C_0603_1608MetricC3, C4, C5, C10, C11, C12, C15, C19, C20, C21, C22, C23, C24, C25, C26, C27 +3
9DDiode_SMD:D_SOD-123D1, D2, D3, D4, D5, D6, D7, D8, D9
9SW_Pushkeyswitches:Kailh_socket_MX_optionalSW3, SW4, SW5, SW6, SW7, SW8, SW9, SW10, SW11
9WS2812BLED_SMD:LED_SK6812MINI_PLCC4_3.5x3.5mm_P1.75mmD10, D11, D12, D13, D14, D15, D16, D17, D18
4MountingHoleMountingHole:MountingHole_2.2mm_M2H1, H2, H3, H4
310nFCapacitor_SMD:C_0603_1608MetricC16, C17, C18
210uFCapacitor_SMD:C_0603_1608MetricC1, C2
215pFCapacitor_SMD:C_0603_1608MetricC13, C14
25.1kResistor_SMD:R_0603_1608MetricR1, R2
2SW_PushButton_Switch_THT:SW_PUSH_6mmSW1, SW2
11kResistor_SMD:R_0603_1608MetricR3
11uFCapacitor_SMD:C_0603_1608MetricC7
1AP2112K-3.3Package_TO_SOT_SMD:SOT-23-5U3
1Conn_01x04Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ2
1Crystal_GND24Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mmY1
1RP2040Package_DFN_QFN:QFN-56-1EP_7x7mm_P0.4mm_EP3.2x3.2mmU1
1RotaryEncoder_SwitchRotary_Encoder:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mmSW12
1USB_C_Receptacle_USB2.0_14PConnector_USB:USB_C_Receptacle_GCT_USB4085J1
1W25Q16JVSSPackage_SO:SOIC-8_5.3x5.3mm_P1.27mmU2

Similar boards

  • 2 layers21 × 49.5 mmHackducky, the printed circuit board in 3D

    Hackducky

    hackclub/hackducky

    The hackclub themed USB rubber ducky ! - Check out hackducky

    51 parts33
  • 4 layers73 × 41 mmBadge, the printed circuit board in 3D

    Badge

    souptik-samanta/Pcb-Badge

    63 parts4MIT
  • 4 layers72 × 44 mmPicflash board, the printed circuit board in 3D

    Picflash board

    nthclrd/picflash

    Programmeur PIC open source en Rust : remplace MPLAB IPE/XC8 pour les PIC16, pilote les PICkit 4/5/Basic ou une carte RP2040 maison (KiCad)

    115 parts1MIT
  • 4 layers115.5 × 79.5 mmRocket Project, the printed circuit board in 3D

    Rocket Project

    ZachS07/RP2040-IMU-Altimeter-PCB

    Custom PCB motion and altitude data logger. RP2040 microcontroller with onboard IMU, barometric sensor, and flash storage. It's suitable for model rockets, drones, and other applications.

    33 parts1
  • 6 layers42.8 × 66.3 mmPlant Monitor, the printed circuit board in 3D

    Plant Monitor

    C-yue28/Plant-Monitor

    ML-powered plant monitor, tracking metrics such as temperature, humidity, soil moisture, etc to inform plant watering behavior.

    59 parts
  • 4 layers87.6 × 84 mmFlashover, the printed circuit board in 3D

    Flashover

    Cherry-Blossom-Development/GreywireStudio

    GreywireStudio - a combined software/hardware product

    95 parts
  • 2 layers80 × 56 mmHelios mppt node, the printed circuit board in 3D

    Helios mppt node

    draarivpatel-ui/helios-cad-forge

    Helios-6 is a parametric dual-axis solar tracker gimbal, OpenSCAD + watertight STL mesh generator, Spencer (1971) solar ephemeris calculator, and KiCad 8 RP2040 + INA219 telemetry node.

    48 partsMIT
  • 4 layers90 × 70 mmBypass clean before shorter-22, the printed circuit board in 3D

    Bypass clean before shorter-22

    JesseLevine727/AirNote

    A touchless musical instrument built around a fully integrated RP2040, VL53L1X distance sensor and MAX98357A speaker amplifier. One hand selects eleven pentatonic notes over two octaves.

    73 parts

Questions

How big is the Macro keypad PCB?

It measures 80 × 90 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Macro keypad use?

70 parts, built around the RP2040, W25Q16JVSSIQ, AP2112K-3.3 and WS2812B. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Macro keypad KiCad files?

From the johnppilli/macro-keypad repository on GitHub, at the commit this page was made from: the board is hardware/macro-keypad.kicad_pcb and its schematic hardware/macro-keypad.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Macro keypad design in my own project?

Its repository states no licence, so its author keeps all rights: ask johnppilli before reusing the design.