Skip to the content
PCBKitNew board
2 layers47.7 × 20.6 mmModpad, the printed circuit board in 3D

A modular macropad

Size
47.7 × 20.6 mm
Copper layers
2
Thickness
1.6 mm
Parts
5
Nets
23
Pads
36
Tracks, vias
49, 1
Pours
1
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
13 Sep 2026
Updated
21 Oct 2026

Overview

Modpad is an open-source printed circuit board by Choccy-vr, from the Choccy-vr/Modpad repository on GitHub. It is a 2-layer board of 47.7 × 20.6 mm with 5 parts on 23 nets, routed with 49 tracks and 1 via.

It is built around the RP2040-ZERO. Its parts include 2 resistors and 2 connectors. It belongs with the keyboards and input boards and the RP2040 boards of this library.

Main components

1

README

README.md

Modpad

An open-source, hot-swappable modular macro pad system with live browser-based key mapping.

Modpad combines hardware and software to create an adaptable modular macropad. Rather than locking users in a fixed, rigid layout, keyboard layout, or proprietary config software, Modpad allows users to magnetically hot-swap satellite modules into a main module and reconfigure key actions and layout all in real time.

Configurator URL: https://modpad.vercel.app/ Demo Video: https://youtu.be/VHo8qCPebk0

PXL_20261021_155902831

Features

  • Dynamic Module Discovery: Automatically identifies and polls attached satellite modules using i2c
  • Zero-Install Configurator: Uses web serial to read active layouts, update bindings, and provide real-time input status all with a website.
  • Dynamic Remapping: Keymaps are refreshed directly in the microcontroller's RAM; no need to restart every time.
  • Full HID & Consumer Control Support: Emulates standard keyboard keystrokes, modifiers, and media controls (Volume, Play/Pause, Brightness).

Modules

  • Macro: The standard-sized macro pad. 6 completely remappable buttons.
  • Knobs: 2 Rotary Encoders. Perfect for volume and brightness.
  • More in the works

Protocol

The web configurator and the main module communicate over USB serial (115200 baud) using newline-delimited JSON. Each message is a single JSON object ending in \n.

MessageDirectionDescriptionExample
get_layoutWeb -> BoardRequests the keymap of every module{"cmd":"get_layout"}
layoutBoard -> WebReturns each module's keymap as a list of actions{"status":"layout","modules":{"Macro":[{"code":4,"mod":0,"consumer":false}, ...]}}
get_modulesWeb -> BoardRequests which modules are currently connected{"cmd":"get_modules"}
modulesBoard -> WebReturns the connection state of each module{"status":"modules","modules":{"Macro":true,"Knobs":false}}
set_keyWeb -> BoardRebinds one key or knob direction in RAM{"cmd":"set_key","module":"Macro","index":2,"code":4,"modifiers":0,"consumer":false}
ok / errorBoard -> WebReply to set_key{"status":"ok"} / {"status":"error","msg":"invalid_key_or_module"}
pressBoard -> WebSent whenever a button or knob is used{"status":"press","module":{"name":"Macro","index":2,"type":"button"}}
logBoard -> WebDebug message, so the serial stream stays pure JSON{"status":"log","msg":"..."}

Fields

  • code: HID keyboard usage ID, or a consumer usage ID when consumer is true (for example 0xE9 for Volume +).
  • modifiers / mod: Modifier bitmask (0x01 LCtrl, 0x02 LShift, 0x04 LAlt, 0x08 LGui, 0x10 RCtrl, 0x20 RShift, 0x40 RAlt, 0x80 RGui).
  • index: Position in the module's keymap. It's the same index for set_key and press.


Pictures

Configurator

image

Main Module

Schematic
image
PCB
image
PCB 3D model
image image
CAD
Modpad_2026-Oct-04_01-32-06AM-000_CustomizedView5351986487

Macro Module

Schematic
image
PCB
image
PCB 3D model
image image
CAD
b51b9fef-189e-4e89-835a-75f2742f794a

Knobs Module

Schematic
image
PCB
image
PCB 3D model
image image
CAD
a1f602ed-3c62-45a9-a582-e62301d659ef

Built

PXL_20261021_155902831 PXL_20261021_155911620

Parts

5
QtyValueFootprintReferences
21.8kResistor_SMD:R_0805_2012MetricR1, R2
1Bottom modular portConnector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ2
1Display SocketKiCad-SSD1306-0.91-OLED-4pin-128x32.pretty-master:SSD1306-0.91-OLED-4pin-128x32J4
1RP2040-ZeroRP2040-Zero-Kicad-main:RP2040-ZeroRZ1

Questions

How big is the Modpad PCB?

It measures 47.7 × 20.6 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Modpad use?

5 parts, built around the RP2040-ZERO. 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 Modpad KiCad files?

From the Choccy-vr/Modpad repository on GitHub, at the commit this page was made from: the board is PCB/Main Module/modpad.kicad_pcb and its schematic PCB/Main Module/modpad.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Modpad design in my own project?

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

More from Choccy-vr/Modpad

1
  • 2 layers80 × 80 mmKnobs module[, the printed circuit board in 3D

    Knobs module[

    Choccy-vr/Modpad

    A modular macropad

    16 parts1

Similar boards

  • 2 layers132.3 × 94.9 mmCheapino, the printed circuit board in 3D

    Cheapino

    tompi/cheapino

    An affordable split 36 keys keyboard

    59 parts1.2kCC-BY-4.0
  • 2 layers321 × 92.3 mmMx40, the printed circuit board in 3D

    Mx40

    zzeneg/stront

    Split keyboards with 38 or 40 keys, LCD display and Cirque trackpad

    181 parts353MIT
  • 2 layers255.9 × 99.3 mmZerosprey42, the printed circuit board in 3D

    Zerosprey42

    beekeeb/zerosprey42

    Zerosprey42 Keyboard is a wired, beginner friendly, choc hotswap, MonoBlockSplit (Unibody), column-staggered, DIY mechanical keyboard.

    96 parts140
  • 2 layers146.3 × 69.5 mmStress, the printed circuit board in 3D

    Stress

    GroooveBob/Stress

    Pocket Arcade Fight Pad

    22 parts102MIT
  • 2 layers54 × 64 mmDonConIOmini, the printed circuit board in 3D

    DonConIOmini

    ravinrabbid/DonCon2040

    RP2040 based firmware and hardware for DIY Taiko no Tatsujin Drum Controllers

    96 parts66MIT
  • 2 layers52 × 50 mmRP2040-TestPatternGenerator VGA, the printed circuit board in 3D

    RP2040-TestPatternGenerator VGA

    nmur/RP2040-TestPatternGenerator

    A simple test pattern generator running on the RP2040 microcontroller

    12 parts64GPL-3.0
  • 2 layers120 × 40 mmBuinchiez40, the printed circuit board in 3D

    Buinchiez40

    ChrisChrisLoLo/bunchiez40

    A pocket keyboard that makes use of mouse switches to achieve a miniscule size

    90 parts56GPL-3.0
  • 2 layers305.2 × 76.2 mmSoroka, the printed circuit board in 3D

    Soroka

    kapee1/soroka

    40% DIY-keyboard with base kit support

    126 parts47Unlicense