Skip to the content
PCBKitNew board
2 layers76 × 74 mmHexpad, the printed circuit board in 3D

A 6-key (3×2) macropad with a rotary encoder: 3D-printed case, custom 2-layer PCB, and KMK firmware, driven by a Seeed XIAO RP2040. Keys wire direct to GPIO (no matrix, no diodes), and the encoder handles volume/scroll.

Size
76 × 74 mm
Copper layers
2
Thickness
1.6 mm
Parts
12
Nets
10
Pads
55
Tracks, vias
58, 0
Pours
1
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
3 Jun 2026
Updated
6 Jun 2026

Overview

Hexpad is an open-source printed circuit board by Antoncarlens-code, from the Antoncarlens-code/Hexpad-macropad repository on GitHub. It is a 2-layer board of 76 × 74 mm with 12 parts on 10 nets, routed with 58 tracks and 0 vias.

Its parts include 6 switches and 1 IC. It belongs with the RP2040 boards of this library.

README

README.md

Hexpad — a hex-shaped 6-key macropad

A 6-key (3×2) macropad with a rotary encoder: 3D-printed case, custom 2-layer PCB, and KMK firmware, driven by a Seeed XIAO RP2040. Keys wire direct to GPIO (no matrix, no diodes), and the encoder handles volume/scroll.

Hexpad full render

Inspiration & challenges

I wanted a compact editing/clipboard pad with a volume knob that didn't look like every other square macropad — so Hexpad uses a hexagonal silhouette around a centered 3×2 key cluster with the encoder up top.

Two things were genuinely fiddly. First, the original top-plate CAD came out of an early IDE session malformed — the plate solid was fused to a stray slab 74 mm below it, so it "levitated" in the slicer. I had to reverse-engineer the real dimensions from the STEP geometry and rebuild the plate as a clean parametric build123d script. Second, rather than hand-draw the board I generated the PCB programmatically with KiCad's pcbnew API from a single coordinate spec, which guarantees the switch, encoder, and mounting-hole positions line up exactly with the printed plate (19.05 mm pitch, mounts at ±32 × ±31 mm).

Gallery

SchematicPCBCase
SchematicPCBCase

Bill of materials

Full sheet: docs/electronics/hexpad-bom.csv.

QtyPartNotes
1Seeed XIAO RP2040MCU, mounted on the back; USB-C exits the front edge
6Cherry MX (or compatible) switchMX_Only_1.00u, direct-wired, one GPIO each
1Alps EC11 rotary encoder w/ switchA/B + push → 3 GPIO, common → GND
4M2 screw (~6 mm)through the case into the plate's corner posts
6 / 1MX keycaps / encoder knobcosmetic
0diodesnone — direct wiring is valid for ≤7 keys

Project layout

FolderContents
cad/Enclosure: STEP blueprints + parametric build123d source
pcb/KiCad 10 PCB project, schematic, + fabrication Gerbers
firmware/KMK (CircuitPython) keymap
docs/electronics/Schematic (SVG), BOM, PCB design notes
docs/images/Render + schematic/PCB/case photos for this README

PCB

FilePurpose
pcb/hexpad.kicad_schSchematic (XIAO + 6 switches + encoder)
pcb/hexpad.kicad_pcbKiCad 10 board, branded, routed
pcb/hexpad-gerbers.zipUpload to JLCPCB to order boards
pcb/build_hexpad_pcb.py / build_hexpad_sch.pyRegenerate board/schematic from the spec

2-layer, 76 × 74 mm (within the 100 mm limit), silkscreen-branded "Hexpad", matching the plate's switch / encoder / mounting coordinates.

Firmware

KMK keymap at firmware/code.py. Default: front row Copy/Paste/Cut, rear row Undo/Redo/Save, encoder = volume (press = mute). See firmware/README.md for flashing and remapping.

Pin map

InputXIAO pinInputXIAO pin
SW1–SW3 (front)D0, D1, D2Encoder A / BD8 / D9
SW4–SW6 (rear)D3, D6, D7Encoder pushD10

D4/D5 (SDA/SCL) left free for a future OLED. All inputs use the RP2040's internal pull-ups.

Toolchain

build123d (CAD → STEP) · KiCad 10 (PCB) · Bambu Studio (slicing) · CircuitPython + KMK.

Submission checklist (Hackpad)

  • DRC: 0 errors, 0 unconnected (only silk + courtyard warnings) — re-plotted after branding
  • "Hexpad" on the PCB silkscreen
  • "Hexpad" engraved on the top plate (front margin, 0.6 mm deep) — reprint the plate to get it physically
  • 3D-printed parts need no supports / tolerances ~0.25 mm (verify on your physical print)
  • PCB < 100 × 100 mm; ≤16 switches, ≤2 encoders, ≤1 OLED, ≤16 LEDs
  • README photos: render + PCB + schematic + case (docs/images/)

Build checklist

  • CAD: top plate + bottom case
  • PCB: schematic + routed board + Gerbers
  • Firmware keymap
  • Re-plot Gerbers after the silkscreen branding change
  • Order PCB from JLCPCB · print case · solder · flash · assemble

Parts

12
QtyValueFootprintReferences
6SW_MXSW_Cherry_MX_1.00u_PCBSW1, SW2, SW3, SW4, SW5, SW6
4M2MountingHole_2.2mm_M2H1, H2, H3, H4
1EC11RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mmENC1
1XIAO-RP2040U1

Questions

How big is the Hexpad PCB?

It measures 76 × 74 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Hexpad use?

12 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 Hexpad KiCad files?

From the Antoncarlens-code/Hexpad-macropad repository on GitHub, at the commit this page was made from: the board is pcb/hexpad.kicad_pcb and its schematic pcb/hexpad.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Hexpad design in my own project?

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

Similar boards

  • 2 layersNrf bga, the printed circuit board in 3D

    Nrf bga

    github-linguist/linguist

    Language Savant. If your repository's language is being reported incorrectly, send us a pull request!

    12 parts14kMIT
  • 2 layers66.9 × 74.5 mmDeskHop, the printed circuit board in 3D

    DeskHop

    hrvach/deskhop

    Fast Desktop Switching Device

    12 parts7.9kGPL-3.0
  • 2 layers40 × 15 mmSensors, the printed circuit board in 3D

    Sensors

    google/mozc-devices

    Circuit diagrams and firmware source code for Gboard DIY keyboards

    12 parts3kApache-2.0
  • 2 layers42.7 × 56.5 mmTle6240 driver, the printed circuit board in 3D

    Tle6240 driver

    rusefi/rusefi

    rusefi - GPL internal combustion engine control unit

    12 parts1.2k
  • 2 layers49 × 25 mm5v boost regulator, the printed circuit board in 3D

    5v boost regulator

    hackclub/OnBoard

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

    12 parts915
  • 2 layers28.3 × 10.3 mmTap Photosensor PCB, the printed circuit board in 3D

    Tap Photosensor PCB

    VoronDesign/Voron-Tap

    Tap is a nozzle-based z-probe for the V2 and Trident printer designs. The entire toolhead moves to trigger an optical switch. Tap offers many advantages:

    12 parts716GPL-3.0
  • 2 layers25.4 × 70.4 mmTpmsniffer, the printed circuit board in 3D

    Tpmsniffer

    stacksmashing/pico-tpmsniffer

    A simple, very experimental TPM sniffer for LPC bus

    12 parts696