Skip to the content
PCBKitNew board
2 layers64 × 93 mmMacropad, the printed circuit board in 3D

My custom Macropad designed and built from scratch

Size
64 × 93 mm
Copper layers
2
Thickness
1.6 mm
Parts
25
Nets
24
Pads
93
Tracks, vias
126, 0
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
16 Mar 2026
Updated
23 Mar 2026

Overview

Macropad is an open-source printed circuit board by arnv15, from the arnv15/Command-Node repository on GitHub. It is a 2-layer board of 64 × 93 mm with 25 parts on 24 nets, routed with 126 tracks and 0 vias.

Its parts include 10 diodes, 10 switches and 2 ICs. It belongs with the keyboards and input boards of this library.

README

README.md

Command Node

A fully custom 3D printed macropad built from scratch with a 3×3 key grid, rotary encoder, and OLED display.

Features

  • 9x Cherry MX switches in a 3×3 layout
  • EC11 rotary encoder (volume control + OS toggle click)
  • 0.91" 128×32 SSD1306 OLED display showing name and current OS layer
  • Dual OS support — toggle between Windows and Mac layouts instantly
  • KMK firmware written in CircuitPython (no compiling needed!)
  • 3D printed case with heat-set inserts
  • Seeed XIAO RP2040 microcontroller

Overall Design

Macropad render

The macropad features a compact 3×3 key layout with the rotary encoder and OLED display across the top. The USB-C port is accessible from the right side. The two-part 3D printed case is held together with M3 screws and heat-set inserts.

PCB

SchematicPCB Layout
SchematicPCB

The PCB was designed in KiCad. The switch matrix uses COL2ROW diode direction with 1N4148 diodes. The OLED connects via I2C on SDA/SCL pins, and the EC11 encoder click is wired as a direct pin (no diode needed).

  • I ran DRC and there are 0 errors

CAD

Case assembly

The case is two-part and 3D printed. The top shell holds the switches, encoder, and OLED in place, while the bottom shell houses the PCB. Everything is secured with 4x M3x16mm screws threading into M3x5x4mm heat-set inserts pressed into the bottom shell.

OnShape Link

Firmware

Written using KMK (CircuitPython) — no compiling or flashing needed after the initial CircuitPython setup. Just edit code.py on the CIRCUITPY drive and it reloads automatically.

Key layout:

text
[ Prev  ] [ Play  ] [ Next  ]
[ Ctrl+Z] [ Ctrl+C] [ Ctrl+V]
[ Scrnsh] [ Sleep ] [ Scrnsvr]
         [Enc Click = OS Toggle]

Encoder rotation: Volume down / Volume up

OS Toggle: Pressing the encoder switches between Windows mode (Ctrl shortcuts, Print Screen) and Mac mode (Cmd shortcuts, Cmd+Shift+4 screenshot). The OLED updates to show the current OS.

OLED display: Shows name and current active OS layer dynamically.

You can find the full main.py in the firmware/ folder of this repo.

BOM

PartQuantityNotes
Seeed XIAO RP20401Microcontroller
Cherry MX Switches9Any MX-compatible switch
1N4148 Diodes (through-hole)109 for switch matrix + 1 for encoder click
EC11 Rotary Encoder1With push-click
0.91" SSD1306 OLED (128×32, I2C)1Pin order: GND-VCC-SCL-SDA
DSA Keycaps9White blank
M3x16mm Screws4For case assembly
M3x5x4mm Heat-set Inserts4Press into bottom shell
PCB1Custom KiCad design
3D Printed Case (top + bottom)1 setPLA or PETG

Parts

25
QtyValueFootprintReferences
101N4148Diode_THT:D_DO-35_SOD27_P7.62mm_HorizontalD1, D2, D3, D4, D5, D6, D7, D8, D9, D10
9SW_Push_45degButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW1, SW2, SW3, SW4, SW5, SW6, SW7, SW8, SW9
3MountingHoleMountingHole:MountingHole_3.2mm_M3H1, H3, H4
1MOUDLE-SEEEDUINO-XIAOfootprints:XIAO-Generic-Hybrid-14P-2.54-21X17.8MMU3
1OLED_0.91_128x32KiCad-SSD1306-0.91-OLED-4pin-128x32.pretty-master:SSD1306-0.91-OLED-4pin-128x32U1
1RotaryEncoder_SwitchRotary_Encoder:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mmSW10

Questions

How big is the Macropad PCB?

It measures 64 × 93 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Macropad use?

25 parts. 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 Macropad KiCad files?

From the arnv15/Command-Node repository on GitHub, at the commit this page was made from: the board is PCB/Macropad.kicad_pcb and its schematic PCB/Macropad.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Macropad design in my own project?

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

Similar boards

  • 2 layers159.5 × 30 mmType f, the printed circuit board in 3D

    Type f

    google/mozc-devices

    Circuit diagrams and firmware source code for Gboard DIY keyboards

    25 parts3kApache-2.0
  • 2 layers113.5 × 95.1 mmSweep high, the printed circuit board in 3D

    Sweep high

    davidphilipbarr/Sweep

    Sweep - a small promicro based keyboard inspired by the Ferris.

    25 parts2.1k
  • 2 layers58.4 × 114.3 mmPicoPedal, the printed circuit board in 3D

    PicoPedal

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    25 parts915
  • 2 layers54 × 15 mmXyp gpib, the printed circuit board in 3D

    Xyp gpib

    xyphro/UsbGpib

    Versatile, cheap and portable USB to GPIB converter (USBTMC class based)

    25 parts690MIT
  • 2 layers50 × 76 mmVoron 0, the printed circuit board in 3D

    Voron 0

    dennisss/dacha

    Monorepo for awesome tools/projects/libraries

    25 parts397Apache-2.0
  • 2 layers237.5 × 102.9 mmStorage, the printed circuit board in 3D

    Storage

    jes/scamp-cpu

    A homebrew 16-bit CPU with a homebrew Unix-like-ish operating system.

    25 parts301Unlicense
  • 2 layers43.3 × 21 mmNanoS3 Carrier, the printed circuit board in 3D

    NanoS3 Carrier

    UnexpectedMaker/esp32s3

    Assorted files for my ESP32-S3 development boards

    25 parts296