Skip to the content
2 layers321.8 × 129.3 mmPico keyboard v1, the printed circuit board in 3D

Pico keyboard v1

zli117/Pico-Keyboard104

Hardware design for a mechanical keyboard based on RP2040

Size
321.8 × 129.3 mm
Copper layers
2
Thickness
1.6 mm
Parts
160
Nets
106
Pads
775
Tracks, vias
559, 113
Pours
1
Routed
Yes
KiCad
KiCad 6 (file 20211014)
Created
29 May 2022
Updated
31 Oct 2022

Overview

Pico keyboard v1 is an open-source printed circuit board by zli117, from the zli117/Pico-Keyboard repository on GitHub, published under the CC-BY-SA-4.0 licence. It is a 2-layer board of 321.8 × 129.3 mm with 160 parts on 106 nets, routed with 559 tracks and 113 vias.

It is built around the RKJXV122400R. Its parts include 68 diodes, 67 switches, 5 resistors, 3 connectors and 2 capacitors. It belongs with the keyboards and input boards and the RP2040 boards of this library.

Main components

1

README

README.md

Pico-Keyboard

A hot-swappable mechanical keyboard built from scratch with Pi Pico board, and 3D printed case, with a very configurable firmware. The firmware is in a separate repo: https://github.com/zli117/PicoMK and can be reused for other RP2040 keyboards.

Pictures

Top View Side View

PCB

PCB

Case

Plate Bottom

Build Pictures

PCB Solder Bottom View

Overall Cost Breakdown

In total per keyboard material cost is roughly $129.57

  • 5 PCB from JLCPCB with shipping: $39.52. Roughly $7.9 per board.
  • 100 hot-swappable PCB socket: $14.50. Used 68, so total $9.86.
  • Pi Pico: $4.99.
  • EC11 Rotary Encoder: $1.10 each.
  • COM-09032 Joystick: $4.50 each.
  • 100 1N4148 diodes: $4.99. Used 70 so $3.50.
  • 150 WS2812B: $14.49. Used 17, so total $1.64.
  • 3D printed case. Each part weight about 50g and there are 5 (2 for plate, and 3 for bottom). Total weight 250g roughly $6.
  • SSD1306 white color: $3 each.
  • GMMK encoder knob: $10.
  • Clear joystick knob: $5.
  • Stabilizers: $16.99 per set.
  • Akko clear translucent keycap: $39.99.
  • Akko blue switch: $9.99 per 45. Used 68, so total $15.10

Build Instructions

PCB

PCB is designed with KiCAD 6, and everything is under the PCB folder. Pre-plotted files that can be uploaded to board factory are in Gerber.zip file. However, different factory may have different plotting settings, so it's recommended to replot with KiCad following factory's instruction. The provided one is for JLCPCB.

Case

Case is designed with Fusion 360. The file ends in .f3z contains the original Fusion 360 source. My build used SUNLU Clear PLA and is sliced with Cura. I put screw holes on the bottom to secure the PCB, but in practice it's not necessary to screw down the PCB once you've installed switches. So those are optional. The screws between plate and bottom are not optional however.

Firmware

Firmware is in a separate repo: PicoMK. Please see the instruction on how to configure and build the firmware there.

PCB Library Licenses

This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

CC BY-SA 4.0

Parts

160
QtyValueFootprintReferences
68DDiode_THT:D_DO-35_SOD27_P7.62mm_HorizontalD1, D2, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23 +52
410kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR2, R3, R4, R5
20.01 μFCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC1, C2
2Conn_01x03_FemaleConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ2, J3
1330Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR1
1Conn_01x04_12864JMD0.96C:JMD0.96CJ1
1PicoMCU_RaspberryPi_and_Boards:RPi_Pico_SMD_THU2
1RKJXV1224RKJXV1224:RKJXV122400R_COM09032U1
1RotaryEncoder_SwitchRotaryEncoder:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHolesSW1
1SW_'Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW62
1SW_+Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW65
1SW_,Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW48
1SW_-Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW60
1SW_.Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW53
1SW_/Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW58
1SW_0Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW55
1SW_1Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW11
1SW_2Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW16
1SW_3Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW21
1SW_4Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW26
1SW_5Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW30
1SW_6Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW35
1SW_7Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW40
1SW_8Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW45
1SW_9Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW50
1SW_;Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW57
1SW_[Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW61
1SW_\Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.50uSW68
1SW_]Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW67
1SW_`Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW6
1SW_aSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW13
1SW_altSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.25uSW20
1SW_bSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW33
1SW_backSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_2.00uSW66
1SW_cSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW24
1SW_capsSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.75uSW8
1SW_ctrlSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.25uSW10
1SW_dSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW23
1SW_delSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW3
1SW_downSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW54
1SW_eSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW22
1SW_enterSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_2.25uSW69
1SW_escSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW2
1SW_fSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW28
1SW_fn1Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW5
1SW_fn2Switch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW44
1SW_gSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW32
1SW_hSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW37
1SW_iSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW46
1SW_insSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW4
1SW_jSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW42
1SW_kSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW47
1SW_lSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW52
1SW_leftSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW49
1SW_mSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW43
1SW_nSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW38
1SW_oSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW51
1SW_pSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW56
1SW_qSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW12
1SW_rSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW27
1SW_r_shiftSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_2.75uSW63
1SW_rightSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW64
1SW_sSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW18
1SW_shiftSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_2.25uSW9
1SW_spaceSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_6.25uSW34
1SW_superSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.25uSW15
1SW_tSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW31
1SW_tabSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.50uSW7
1SW_uSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW41
1SW_upSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW59
1SW_vSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW29
1SW_wSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW17
1SW_xSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW19
1SW_ySwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW36
1SW_zSwitch_Keyboard_Hotswap_Kailh:SW_Hotswap_Kailh_MX_1.00uSW14

The 147 most common of 160 parts.

Similar boards

  • 2 layers316 × 119 mmTeensy Grovebox, the printed circuit board in 3D

    Teensy Grovebox

    jerry20091103/Teensy_Grovebox

    A portable synth and music multi-tool made with Teensy 4.1

    142 parts150MIT
  • 2 layers245.3 × 78.6 mmSg48key2, the printed circuit board in 3D

    Sg48key2

    sago35/keyboards

    This repository was created to manage the circuitry and firmware for the keyboards I designed. The firmware is created using sago35/tinygo-keyboard.

    158 parts22MIT
  • 2 layers25.8 × 20 mmTM Warthog Open Analog Slew, the printed circuit board in 3D

    TM Warthog Open Analog Slew

    ServError/Thrustmaster_Warthog_Throttle_Alps_Slew_Mod

    An open source replacement for the terrible TM Warthog Throttle slew stick

    10 parts12
  • 2 layers70 × 128.5 mmJoystick v3.0, the printed circuit board in 3D

    Joystick v3.0

    StudioKAT/Joystick

    この作品は Creative Commons 表示 - 継承 4.0 国際 (CC BY-SA 4.0) の下でライセンスされています。 This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License.

    110 parts9
  • 2 layers98 × 98 mmTinygo conf-2026, the printed circuit board in 3D

    Tinygo conf-2026

    tinygo-keeb/tinygo-conf-2026-badge

    TinyGo Conference 2026 向け開発ボード (devkit) の KiCad プロジェクトです。 ESP32-S3-DevKit を中心に、ディスプレイ・オーディオ・入力デバイスなどを 1 枚の基板にまとめています。

    26 parts2
  • 2 layers141 × 68.5 mmZRaiderViper, the printed circuit board in 3D

    ZRaiderViper

    radioation/ZRaiderStick

    Z Raider - Analog Joystick for Atari 800/XL/XE Computers

    37 parts1GPL-3.0
  • 2 layers108.5 × 61 mmVGAutumn, the printed circuit board in 3D

    VGAutumn

    Alan-GIRAUDON/VGAutumn

    VGAutumn is a RP2040 VGA joystick PCB. This board allows to play different game using its VGA output and its inputs (joystick, buttons).

    72 partsMIT
  • 2 layers32 × 25.5 mmJoystick, the printed circuit board in 3D

    Joystick

    arghya-v/hackxpansion-joystick

    The joystick module for hackxpansion! The module uses a two-axis potentiometer joystick to provide X and Y analog readings, allowing projects to interpret directional movement and user input.

    8 parts

Questions

How big is the Pico keyboard v1 PCB?

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

What parts does the Pico keyboard v1 use?

160 parts, built around the RKJXV122400R. 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 Pico keyboard v1 KiCad files?

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

Can I use the Pico keyboard v1 design in my own project?

Its repository publishes it under the CC-BY-SA-4.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).