Skip to the content
PCBKitNew board
2 layers93.7 × 61.5 mmKeyboard, the printed circuit board in 3D

A green hackpad with 4 keys, microcontroller, switches, a rotary encoder and an OLED display

Size
93.7 × 61.5 mm
Copper layers
2
Thickness
1.6 mm
Parts
7
Nets
15
Pads
45
Tracks, vias
78, 0
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
10 Sep 2026
Updated
7 Oct 2026

Overview

Keyboard is an open-source printed circuit board by avemro, from the avemro/PrasinoPad repository on GitHub. It is a 2-layer board of 93.7 × 61.5 mm with 7 parts on 15 nets, routed with 78 tracks and 0 vias.

Its parts include 5 switches, 1 IC and 1 connector. It belongs with the keyboards and input and lEDs and displays boards of this library.

README

README.md

PrasinoPad

$${\color{gray}\text{Prasino: Prasinos = Green (from greek language)}}$$

Customizable 4-key macropad with the Seeed Studio XIAO RP2040 microcontroller along with Cherry MX switches, an EC11 rotary encoder, and a 0.91" I2C OLED display, which is controlled by QMK firmware.

Depending on whether one needs a media controller, scrubbing for video editing, or simply some hotkeys for application control, PrasinoPad provides the possibility to have everything at hands without unnecessary desk cluttering.


Features

  • Direct-Pin Switching: As there are only 4 keys, each switch is connected directly to the GPIO pin of the MCU pulled to the ground, eliminating the need for any diode matrix.
  • Rotation Knob: Alps/EC11 rotary encoder for controlling volume, scrolling, or scrubbing along the timeline, featuring a built-in tactile switch.
  • Status Indicators: 0.91" 128x32 OLED display over I2C to display active layers, volume level, or status icons.
  • Sleek Microcontroller: Equipped with the Seeed Studio XIAO RP2040, mounted directly on the underside of the board to keep the desk footprint small.
  • Personalized Shell: 3D-printed body with special slots for the switch plate, knob, and OLED display.

Hardware Gallery

Assembled Render

Hackpad Render

3D Printed Enclosure

Case Assembly

KiCad Schematic

KiCad Schematic

PCB Layout

KiCad PCB


Pinout & Wiring

The XIAO RP2040 is soldered to the bottom layer (B.Cu) with direct access to all the board components:

ComponentFunctionXIAO Pin (KiCad Net)RP2040 GPIODescription
SW1Key 1D0 (PA02_A0_D0)GP26Pulled low to GND on press
SW2Key 2D1 (PA4_A1_D1)GP27Pulled low to GND on press
SW3Key 3D2 (PA10_A2_D2)GP28Pulled low to GND on press
SW4Key 4D3 (PA11_A3_D3)GP29Pulled low to GND on press
SW5 (Enc)Channel AD8 (PA7_A8_D8_SCK)GP4Encoder quadrature signal A
SW5 (Enc)Channel BD9 (PA5_A9_D9_MISO)GP3Encoder quadrature signal B
SW5 (Switch)Encoder PushD7 (PB09_A7_D7_RX)GP1Pulled low to GND on click
OLED (J1 Pin 4)I2C SDAD4 (PA8_A4_D4_SDA)GP6Serial Data line
OLED (J1 Pin 3)I2C SCLD5 (PA9_A5_D5_SCL)GP7Serial Clock line
OLED (J1 Pin 2)Power3V33.3V RailLogic power
OLED (J1 Pin 1)GroundGNDGroundCommon system ground

Bill of Materials (BOM)

ItemQtyDetailsFootprint / Notes
Seeed Studio XIAO RP20401RP2040 microcontroller development boardHybrid SMD / THT footprint on PCB rear
Cherry MX Switches4Standard mechanical keyswitches1.00u PCB mount footprint
1U Keycaps4Standard profile keycaps (OEM / Cherry / XDA)Fits standard MX stem
EC11 Rotary Encoder1Incremental encoder with tactile push switchAlps EC12E vertical footprint
0.91" OLED Display1128x32 monochrome I2C display4-pin interface
Female Pin Header11x4 2.54mm pitch female headerSocket for the OLED screen
3D Printed Case & Plate1Printed housing (PLA or PETG)Case STL files
Hardware4M2 or M3 screwsSecures the plate to the case

Firmware Configuration

PrasinoPad employs Direct-pin mapping in QMK:

  1. Matrix Mapping: In your keyboard configuration file, add DIRECT_PINS pin mappings for switches with GP26, GP27, GP28, and GP29.
  2. Encoders Configuration: Add ENCODERS_PAD_A { GP4 } and ENCODERS_PAD_B { GP3 }. The encoder switch will be mapped as a regular key in the direct matrix (GP1).
  3. OLED Display: Add OLED_ENABLE = yes and OLED_DRIVER = SSD1306 in rules.mk and configure I2C pins to GP7 (SCL), GP6 (SDA).
  4. Programming:
    • Press the BOOT button on the XIAO RP2040 while connecting the USB-C connector.
    • Mount the board as a mass storage device (RPI-RP2) and copy your compiled .uf2 file into that drive.

Assembly Hints

  • Order of Soldering: First solder the XIAO RP2040 board to the back of the PCB, then the 4-pin OLED header socket, Cherry MX switches and rotary encoder.
  • OLED Positioning: With a pin header socket used instead of direct soldering of the display you will be able to adjust its position and make sure that it is level with the window of the case.
  • Printing Parameters: 0.2mm layer thickness, 3-4 perimeters and 20% fill should give enough stiffness for the switch holes and screw holes.

Parts

7
QtyValueFootprintReferences
4SW_PushButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW1, SW2, SW3, SW4
1Conn_01x04_PinConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ1
1MOUDLE-SEEEDUINO-XIAOfootprints:XIAO-Generic-Hybrid-14P-2.54-21X17.8MMU1
1RotaryEncoder_SwitchRotary_Encoder:RotaryEncoder_Alps_EC12E-Switch_Vertical_H20mmSW5

Questions

How big is the Keyboard PCB?

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

What parts does the Keyboard use?

7 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 Keyboard KiCad files?

From the avemro/PrasinoPad repository on GitHub, at the commit this page was made from: the board is PCB/keyboard.kicad_pcb and its schematic PCB/keyboard.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Keyboard design in my own project?

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

Similar boards

  • 2 layersEncoder, the printed circuit board in 3D

    Encoder

    byrantech/laptop

    anyon_e, a highly integrated, high end, open source laptop. Attempt the impossible.

    7 parts4.3kMIT
  • 2 layers40 × 20 mmSensor smd, the printed circuit board in 3D

    Sensor smd

    scottbez1/splitflap

    DIY split-flap display

    7 parts4.2k
  • 2 layers19.8 × 30 mmZ limit, the printed circuit board in 3D

    Z limit

    opulo-inc/lumenpnp

    The LumenPnP is an open source pick and place machine.

    7 parts3.7k
  • 2 layers35.6 × 58.2 mmDisplay Carrier, the printed circuit board in 3D

    Display Carrier

    AxxAxx/AxxSolder

    STM32 Based soldering station for JBC cartridges, 9-24 VDC and USB-PD power

    7 parts1.7kGPL-3.0
  • 2 layers20.3 × 16.3 mmMap MPX, the printed circuit board in 3D

    Map MPX

    rusefi/rusefi

    rusefi - GPL internal combustion engine control unit

    7 parts1.2k
  • 2 layers26 × 44 mmCompact carrier board, the printed circuit board in 3D

    Compact carrier board

    jamro/tiny-engineer

    A small desktop robot that brings an AI coding assistant to life, physically acting out when it reads files, thinks, writes code, and finishes work.

    7 parts1.1k
  • 2 layers26.4 × 53.8 mmAtari pickup, the printed circuit board in 3D

    Atari pickup

    hoglet67/RGBtoHDMI

    Bare-metal Raspberry Pi project that provides pixel-perfect sampling of Retro Computer RGB/YUV video and conversion to HDMI

    7 parts1kGPL-3.0
  • 2 layersRj45 breakout, the printed circuit board in 3D

    Rj45 breakout

    rene-dev/stmbl

    AC Servo Driver for STM32F4

    7 parts990GPL-3.0