Skip to the content
PCBKitNew board
2 layers144 × 79 mmMacroPad, the printed circuit board in 3D

A 6 button macropad with a display for button labels and a mouse knob with haptic feedback! — v2 redesign: new Pico SDK firmware + USB configurator.

Size
144 × 79 mm
Copper layers
2
Thickness
1.6 mm
Parts
59
Nets
31
Pads
187
Tracks, vias
212, 35
Pours
1
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
21 Aug 2026
Updated
21 Aug 2026

Overview

MacroPad is an open-source printed circuit board by loredavid, from the loredavid/Hapticpad repository on GitHub, published under the CERN-OHL-S-2.0 licence. It is a 2-layer board of 144 × 79 mm with 59 parts on 31 nets, routed with 212 tracks and 35 vias.

It is built around the WS2812B. Its parts include 20 capacitors, 20 diodes and 8 switches. It belongs with the keyboards and input and robots and motor control boards and the RP2040 boards of this library.

Main components

1

README

README.md

HapticPad v2

HapticPad

A six-key macropad with an OLED label screen and a brushless wheel that generates its detents in software — the clicks you feel are torque curves, not a mechanical ratchet, so every profile can have a different feel.

Version 2 is a ground-up firmware rewrite on the Raspberry Pi Pico SDK, plus a desktop configurator that sets up the whole device over the USB cable. The hardware is unchanged from the original project by dmcke5 — the same two PCBs and the same printed parts run this firmware without any rewiring.

What is new in v2

v1 (Arduino)v2 (Pico SDK)
Macro deliverysendKeystroke() called from both cores; reports lostone core owns USB; queued, never dropped silently
Macro delaysdelay() froze screen, LEDs and buttonsnon-blocking playback, UI keeps running
Wheel zoombroken (Ctrl written into the modifier byte as a keycode)works, and is one preset among twelve
Displaybit-banged SPI, ~30 ms of blocked CPU per framePIO + DMA, ~1 ms, CPU free
LED ringFastLED bit-bang with interrupts offPIO + DMA
Encoder2 GPIO interrupts, up to 80 k/sPIO decoder, zero interrupts
Macro steps3 per button8 per button
ConfigXML on the card, edited by handon-device menu, USB configurator, or plain-text files
Firmware updateBOOTSEL buttonmenu entry or a button in the configurator
Iconsevery .bin on the original card was 72 bytes of zerosconverter that verifies its own output

Full details in CHANGELOG.md; coming from a working v1 pad, read docs/migration-from-v1.md first.

Features

  • 6 macro keys, up to 8 steps each, with per-step delays
  • Actions: key combinations, media keys, typed text, held modifiers, mouse buttons and scrolling
  • 128×64 OLED with a 24×24 icon and a label per key
  • Haptic wheel: 6 feel modes (off free clicky ratchet damped 4points) and 12 function presets (scroll, zoom, volume, tabs, history, undo/redo, timeline…)
  • 20-LED ring: off solid rainbow breath bands halo reactive profile
  • Up to 32 profiles on the microSD card, switched from the keys or the menu
  • On-device settings menu, with a screensaver that parks the motor
  • USB serial protocol — the configurator uses it, and so can a terminal
  • Live telemetry: FOC loop rate, HID queue depth, dropped reports

Repository layout

text
firmware/      HapticPad 2.0 firmware — C/C++ on the Pico SDK
  release/     hapticpad-2.0.0.uf2, ready to flash
configurator/  desktop app: profiles, macros, icons, settings over USB
hardware/      PCBs (KiCad + gerbers), 3D printable and machinable parts, BOM
sd-card/       a starter card: config.txt, example profiles, icons
assets/        190+ PNG icons to import with the configurator
docs/          everything below

Getting started

1. Flash the firmware. Hold BOOTSEL while plugging the pad in, then drag firmware/release/hapticpad-2.0.0.uf2 onto the RPI-RP2 drive. That is the last time you need the BOOTSEL button — afterwards the pad's menu and the configurator can both reboot it into the bootloader.

2. Prepare the card. Copy the contents of sd-card/ onto a FAT32 microSD and insert it. See docs/sd-card.md.

3. Run the configurator.

bash
python3 configurator/hapticpad.py

No installation: it runs on the Python that ships with macOS and opens in your browser. See configurator/README.md.

Building the firmware yourself is in firmware/README.md.

Documentation

DocumentWhat it covers
docs/hardware.mdBOM, PCB assembly, motor stack, wiring
docs/sd-card.mdcard layout, what the firmware writes
docs/profile-format.mdprofile keys, wheel modes, action vocabulary
docs/configuration.mddevice settings, and how profiles override them
docs/serial-protocol.mdthe USB command set
docs/architecture.mdhow the two cores divide the work
docs/migration-from-v1.mdupgrading a v1 pad
docs/troubleshooting.mdwhen something does not work
firmware/README.mdbuilding, flashing, debugging
configurator/README.mdthe desktop app

Credits and licence

The hardware, the enclosure and the original v1 firmware are the work of dmcke5 — Hapticpad, project video. Version 2 is a firmware and software rewrite on top of that hardware.

Licensed under the CERN Open Hardware Licence v2 — Strongly Reciprocal, the same licence as the original project. See LICENSE.

Parts

59
QtyValueFootprintReferences
200.1uFCapacitor_SMD:C_0603_1608MetricC2, C3, C4, C5, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21 +4
20WS2812BLED_SMD:LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mmD1, D2, D3, D4, D5, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20 +4
6SW_Pushkeyswitches.pretty-master:SW_PG1350_reversibleSW1, SW2, SW3, SW4, SW5, SW6
2EVQ-Q2B03WParts:SW_EVQ-Q2B02WS1, S2
1+5VTestPoint:TestPoint_THTPad_D1.0mm_Drill0.5mmTP11
1BTN_1TestPoint:TestPoint_THTPad_D1.0mm_Drill0.5mmTP9
1BTN_2TestPoint:TestPoint_THTPad_D1.0mm_Drill0.5mmTP8
1GNDTestPoint:TestPoint_THTPad_D1.0mm_Drill0.5mmTP1
1LEDTestPoint:TestPoint_THTPad_D1.0mm_Drill0.5mmTP10
1S1TestPoint:TestPoint_THTPad_D1.0mm_Drill0.5mmTP7
1S2TestPoint:TestPoint_THTPad_D1.0mm_Drill0.5mmTP6
1S3TestPoint:TestPoint_THTPad_D1.0mm_Drill0.5mmTP5
1S4TestPoint:TestPoint_THTPad_D1.0mm_Drill0.5mmTP4
1S5TestPoint:TestPoint_THTPad_D1.0mm_Drill0.5mmTP3
1S6TestPoint:TestPoint_THTPad_D1.0mm_Drill0.5mmTP2

Questions

How big is the MacroPad PCB?

It measures 144 × 79 mm and has 2 copper layers, 1.6 mm thick.

What parts does the MacroPad use?

59 parts, built around the 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 MacroPad KiCad files?

From the loredavid/Hapticpad repository on GitHub, at the commit this page was made from: the board is hardware/pcb/MacroPad/MacroPad.kicad_pcb and its schematic hardware/pcb/MacroPad Controller Board/MacroPad Controller Board.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 publishes it under the CERN-OHL-S-2.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

More from loredavid/Hapticpad

1
  • 2 layers70 × 50.5 mmMacroPad Controller Board, the printed circuit board in 3D

    MacroPad Controller Board

    loredavid/Hapticpad

    A 6 button macropad with a display for button labels and a mouse knob with haptic feedback! — v2 redesign: new Pico SDK firmware + USB configurator.

    29 parts1CERN-OHL-S-2.0

Similar boards

  • 4 layers99 × 53.3 mmPSLab, the printed circuit board in 3D

    PSLab

    fossasia/pslab-hardware

    PSLab Hardware Design and Schematics https://pslab.io

    199 parts1.7kApache-2.0
  • 2 layers26 × 30 mmMicrocontroller, the printed circuit board in 3D

    Microcontroller

    FrameworkComputer/ExpansionCards

    Reference designs and documentation to create Expansion Cards for the Framework Laptop

    34 parts1.1kCC-BY-4.0
  • 4 layers82.6 × 82.5 mmJumperless2, the printed circuit board in 3D

    Jumperless2

    Architeuthis-Flux/Jumperless

    A jumperless breadboard

    208 parts914
  • 2 layers95.3 × 161.9 mmDfh badge, the printed circuit board in 3D

    Dfh badge

    tanaes/whopping_Voron_mods

    135 parts787GPL-3.0
  • 2 layers42.8 × 28.8 mmMM Skirt, the printed circuit board in 3D

    MM Skirt

    PrintersForAnts/Micron

    If you want to purchase full kits there are 3 available (Kits are slowly updating to R1 hardware just make sure to double check the included hardware in your kit and if you have any questions reach out in the discord)

    11 parts741GPL-3.0
  • 2 layers149.6 × 127.1 mmErgodash, the printed circuit board in 3D

    Ergodash

    omkbd/ErgoDash

    keyboard

    187 parts732MIT
  • 2 layers285.5 × 95 mmReviung46 ver1 1, the printed circuit board in 3D

    Reviung46 ver1 1

    gtips/reviung

    The REVIUNG41 is 41-key column staggered keyboard.

    119 parts517MIT
  • 2 layers177.7 × 144.5 mmCOMM PANEL, the printed circuit board in 3D

    COMM PANEL

    jrsteensen/OpenHornet

    OpenHornet 1:1 F/A-18C Simulator Repository

    275 parts431