Skip to the content
PCBKitNew board
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

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.

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