Skip to the content
PCBKitNew board
2 layers80 × 70 mmRp commander, the printed circuit board in 3D

Rp commander

fpt/rp-commander

USB HID shortcut-key device based on the Waveshare RP2040-Zero.

Size
80 × 70 mm
Copper layers
2
Thickness
1.6 mm
Parts
32
Nets
30
Pads
115
Tracks, vias
192, 23
Pours
1
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
25 May 2026
Updated
28 May 2026

Overview

Rp commander is an open-source printed circuit board by fpt, from the fpt/rp-commander repository on GitHub. It is a 2-layer board of 80 × 70 mm with 32 parts on 30 nets, routed with 192 tracks and 23 vias.

It is built around the RP2040-ZERO. Its parts include 8 capacitors, 6 resistors, 2 connectors, 1 IC and 1 diode. It belongs with the RP2040 boards of this library.

Main components

1

README

README.md

rp-commander

USB HID shortcut-key device based on the Waveshare RP2040-Zero.

Two rotary encoders and six buttons send keyboard/mouse shortcuts to a host Mac (or PC). An ST7789 240×240 LCD shows the active app, current profile, and all button assignments. ENC1 cycles through profiles; ENC2 and the six buttons send per-profile shortcuts.

Profiles are configurable at runtime via a USB CDC serial port — no reflashing required.

Hardware

PartRole
Waveshare RP2040-ZeroMCU, native USB (HID + CDC)
ST7789 240×240 LCDStatus display (SPI0)
ENC1 (GP14/15)Profile navigation
ENC2 (GP28/29)Per-profile HID encoder
BTN A–D (GP8–11)Per-profile shortcuts
BTN X (GP12)Per-profile shortcut, left side
BTN Y (GP13)Per-profile shortcut, right side

See docs/WIRING.md for the full pin/wiring table.

Apps and profiles

AppProfiles
ChromeBrowsing
ClaudeChat
Fusion 360Sketch, Modeling
KiCadSchematics, PCB
KritaPainting

ENC1 cycles through all profiles in order. The top LCD row highlights the active app icon. Profiles saved to flash persist across power cycles.

Build

Requires Docker and ../pico-sdk (or set PICO_SDK_PATH).

bash
make docker-build   # one-time Docker image setup
make quick          # build + flash (hold BOOTSEL on RP2040 before connecting)
make monitor        # UART console via USB-serial adapter on GP0 (TX) / GP1 (RX)

A GitHub Actions workflow builds the UF2 on every push to main and uploads it as an artifact.

Configuring profiles

The device exposes a USB CDC serial port ("Commander CDC") alongside the HID interface. Profiles can be read and written at runtime using either the web configurator or the CLI tool.

Web configurator (Chrome / Edge only)

Open https://fpt.github.io/rp-commander/, click Connect, and select the "Commander CDC" port.

Python CLI

bash
pip install pyserial

python3 tools/commander.py ports              # list candidate ports
python3 tools/commander.py dump profiles.json # read profiles from device
python3 tools/commander.py load profiles.json # write + save to flash

Auto-detects the CDC port. Use --port /dev/tty.usbmodemXXX if detection fails.

Manually editing profiles

Edit src/profiles.c. Each profile defines ENC2 CW/CCW, X, Y, A, B, C, D actions using the KEY(modifier, keycode, label) or SCR(delta, label) macros. Shortcuts default to macOS (Cmd = _G). Change _G → _C for Windows.

Icon resources

Source icon images are in resources/. To replace the geometric placeholder icons with real brand icons, convert them with the bundled script:

bash
pip install Pillow cairosvg
make icons   # generates src/icons_data.h, auto-included by src/icons.c

See CLAUDE.md for the full architecture reference.

Parts

32
QtyValueFootprintReferences
40.01uCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mmC5, C6, C7, C8
4MountingHoleMountingHole:MountingHole_2.7mmH_LL1, H_LR1, H_UL1, H_UR1
4SW_PushButton_Switch_THT:SW_PUSH-12mmSW_A1, SW_B1, SW_C1, SW_D1
20.1uCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mmC2, C3
210uCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mmC4, C9
21kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR3, R4
227Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR1, R2
24.7kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR5, R6
2RotaryEncoderRotary_Encoder:RotaryEncoder_Alps_EC12E_Vertical_H20mmSW_ROT1, SW_ROT2
2SW_PushButton_Switch_THT:SW_PUSH_6mmSW_X1, SW_Y1
11N5822Diode_THT:D_DO-201_P15.24mm_HorizontalD1
1Conn_01x04MyLibrary:USB_A_BreakoutJ1
1Grove I2CMyLibrary:Grove I2CJ2
1LCD_240x240_IPSMyLibrary:GENERIC_LCD_154_240x240U1
1RP2040-ZeroMyLibrary:RP2040-ZeroRZ1
1SW_DIP_x02Button_Switch_THT:SW_DIP_SPSTx02_Slide_9.78x7.26mm_W7.62mm_P2.54mmSW_PULLUP1

Questions

How big is the Rp commander PCB?

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

What parts does the Rp commander use?

32 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 Rp commander KiCad files?

From the fpt/rp-commander repository on GitHub, at the commit this page was made from: the board is KiCad/rp-commander/rp-commander.kicad_pcb and its schematic KiCad/rp-commander/rp-commander.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Rp commander design in my own project?

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

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