

Macro keypad
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
4RP2040
LQFN-56(7x7)12bit 133MHz 30 LQFN-56(7x7) Microcontrollers (MCU/MPU/SOC) ROHSRaspberry PiMicrocontrollers (MCU/MPU/SOC)W25Q16JVSSIQ
SOIC-8-208mil-40℃~+85℃ 100,000 cycles 10uA 133MHz 16Mbit 2.7V~3.6V 20 Years 3ms SPI SOIC-8-208mil NOR FLASH ROHSWinbondNOR FLASHAP2112K-3.3
SOT253.3V 600mA CMOS Low Dropout Linear Regulator with EnableDiodes IncorporatedUncategorisedWS2812B
5mm X 5mm Surface Mount RGB LED with Intelligent ControlWorldsemiUncategorised
README
README.mdMacro 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.
| Top | 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
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 photoshardware/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
Din SOD-123. They need a real part number in the BOM (1N4148W or equivalent) before anyone else can build this.
Parts
70| Qty | Value | Footprint | References |
|---|---|---|---|
| 19 | 100nF | Capacitor_SMD:C_0603_1608Metric | C3, C4, C5, C10, C11, C12, C15, C19, C20, C21, C22, C23, C24, C25, C26, C27 +3 |
| 9 | D | Diode_SMD:D_SOD-123 | D1, D2, D3, D4, D5, D6, D7, D8, D9 |
| 9 | SW_Push | keyswitches:Kailh_socket_MX_optional | SW3, SW4, SW5, SW6, SW7, SW8, SW9, SW10, SW11 |
| 9 | WS2812B | LED_SMD:LED_SK6812MINI_PLCC4_3.5x3.5mm_P1.75mm | D10, D11, D12, D13, D14, D15, D16, D17, D18 |
| 4 | MountingHole | MountingHole:MountingHole_2.2mm_M2 | H1, H2, H3, H4 |
| 3 | 10nF | Capacitor_SMD:C_0603_1608Metric | C16, C17, C18 |
| 2 | 10uF | Capacitor_SMD:C_0603_1608Metric | C1, C2 |
| 2 | 15pF | Capacitor_SMD:C_0603_1608Metric | C13, C14 |
| 2 | 5.1k | Resistor_SMD:R_0603_1608Metric | R1, R2 |
| 2 | SW_Push | Button_Switch_THT:SW_PUSH_6mm | SW1, SW2 |
| 1 | 1k | Resistor_SMD:R_0603_1608Metric | R3 |
| 1 | 1uF | Capacitor_SMD:C_0603_1608Metric | C7 |
| 1 | AP2112K-3.3 | Package_TO_SOT_SMD:SOT-23-5 | U3 |
| 1 | Conn_01x04 | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J2 |
| 1 | Crystal_GND24 | Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm | Y1 |
| 1 | RP2040 | Package_DFN_QFN:QFN-56-1EP_7x7mm_P0.4mm_EP3.2x3.2mm | U1 |
| 1 | RotaryEncoder_Switch | Rotary_Encoder:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm | SW12 |
| 1 | USB_C_Receptacle_USB2.0_14P | Connector_USB:USB_C_Receptacle_GCT_USB4085 | J1 |
| 1 | W25Q16JVSS | Package_SO:SOIC-8_5.3x5.3mm_P1.27mm | U2 |
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 mm

- 4 layers73 × 41 mm

- 4 layers72 × 44 mm

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 mm

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 mm

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 mm

Flashover
Cherry-Blossom-Development/GreywireStudio
GreywireStudio - a combined software/hardware product
95 parts - 2 layers80 × 56 mm

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 mm

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

