Skip to the content
PCBKitNew board
2 layers80 × 80 mmKnobs module[, the printed circuit board in 3D

Knobs module[

Choccy-vr/Modpad1

A modular macropad

Size
80 × 80 mm
Copper layers
2
Thickness
1.6 mm
Parts
16
Nets
24
Pads
81
Tracks, vias
193, 30
Pours
1
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
13 Sep 2026
Updated
21 Oct 2026

Overview

Knobs module[ 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 80 × 80 mm with 16 parts on 24 nets, routed with 193 tracks and 30 vias.

It is built around the CH32V203F6P6. Its parts include 5 connectors, 4 capacitors, 2 ICs, 2 switches and 1 resistor. It belongs with the keyboards and input boards and the RISC-V 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

16
QtyValueFootprintReferences
34.7uFCapacitor_SMD:C_0805_2012MetricC2, C3, C4
2RotaryEncoder_Switch_MPRotary_Encoder:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mmSW1, SW2
2SolderJumper_2_OpenJumper:SolderJumper-2_P1.3mm_Open_Pad1.0x1.5mmJP1, JP2
1100nFCapacitor_SMD:C_0805_2012MetricC1
110kResistor_SMD:R_0805_2012MetricR1
1Bottom Modular PortConnector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ6
1CH32V203F6P6Package_SO:TSSOP-20_4.4x6.5mm_P0.65mmU1
1Conn_02x05_Odd_EvenConnector_PinSocket_2.54mm:PinSocket_2x05_P2.54mm_VerticalJ1
1Left Modular PortConnector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ5
1Right Modular PortConnector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ4
1Top Modular PortConnector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ3
1XC6206PxxxMRPackage_TO_SOT_SMD:SOT-23-3U2

Questions

How big is the Knobs module[ PCB?

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

What parts does the Knobs module[ use?

16 parts, built around the CH32V203F6P6. 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 Knobs module[ KiCad files?

From the Choccy-vr/Modpad repository on GitHub, at the commit this page was made from: the board is PCB/knobs_module[/knobs_module[.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 Knobs module[ 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 layers47.7 × 20.6 mmModpad, the printed circuit board in 3D

    Modpad

    Choccy-vr/Modpad

    A modular macropad

    5 parts1

Similar boards

  • 2 layers240 × 47 mmV3-for route, the printed circuit board in 3D

    V3-for route

    djmango/lightbar-dock

    power distribution board

    164 parts1MIT
  • 2 layers55 × 30 mmPUBG KEY, the printed circuit board in 3D

    PUBG KEY

    Solderingironspb/Keyboard-for-PUBG

    4 кнопочный контроллер для PUBG

    30 parts1
  • 2 layers26 × 51 mmKiCad ch32v203 F6P6, the printed circuit board in 3D

    KiCad ch32v203 F6P6

    taunoe/Taunoe_CH32V203

    This design uses components with a size 1206.

    26 parts1
  • 4 layers14.8 × 14.8 mmDcesc ga25, the printed circuit board in 3D

    Dcesc ga25

    baden/dcesc-controllers

    Experiments with DC motors

    111 parts
  • 2 layers85.5 × 54 mmRTN Badge NL-2026, the printed circuit board in 3D

    RTN Badge NL-2026

    holly-hacker/RTN-Badge-2026NL-PCB

    The open source hardware of the 2026 RTN badge (NL edition)

    90 parts
  • 2 layers140.5 × 30 mmType e, the printed circuit board in 3D

    Type e

    google/mozc-devices

    Circuit diagrams and firmware source code for Gboard DIY keyboards

    16 parts3kApache-2.0
  • 2 layers41.4 × 14.5 mmU2f zero, the printed circuit board in 3D

    U2f zero

    conorpp/u2f-zero

    U2F USB token optimized for physical security, affordability, and style

    16 parts2.4k