Skip to the content
PCBKitNew board
2 layers331.5 × 122.2 mmKeyboard, the printed circuit board in 3D

Custom 75% Mechanical Keyboard from Scratch: Custom PCB, 3D Printed Case, Custom Firmware

Size
331.5 × 122.2 mm
Copper layers
2
Thickness
1.6 mm
Parts
212
Nets
145
Pads
1,137
Tracks, vias
1,075, 111
Pours
1
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
18 Jul 2026
Updated
25 Aug 2026

Overview

Keyboard is an open-source printed circuit board by duorahrah, from the duorahrah/Keyboard repository on GitHub. It is a 2-layer board of 331.5 × 122.2 mm with 212 parts on 145 nets, routed with 1,075 tracks and 111 vias.

It is built around the RP2040, W25Q128JVSIQ and SRV05-4. Its parts include 86 diodes, 16 capacitors, 9 resistors, 4 ICs and 4 switches. It belongs with the keyboards and input boards and the RP2040 boards of this library.

Main components

3

README

README.md

Custom 75% Mechanical Keyboard

Designed and built fully custom mechanical keyboard end-to-end, PCB design (KiCad), case design (Onshape) and 3D printing, and firmware (QMK on RP2040).
image

PCB Design

image image image image
- Designed a RP2040-based custom mechanical keyboard PCB in KiCad with full keyboard matrix and USB-C connectivity - Includes full RP2040 support circuitry (crystal, QSPI flash, decoupling, reset and BOOTSEL) - Routed and manufactured the PCB

Case Design

image image
- Modeled custom case in Onshape, accounting for PCB mounting points, USB-C cutout, and switch plate clearance

Firmware

  • Developed custom QMK firmware for the keyboard, including multi-layer keymap and matrix/layout configuration to match the custom PCB design

Challenges

  • USB and RP2040 debugging – I encountered an issue where the keyboard could not be detected by my computer while trying to flash the firmware. I was able to identify the issue as a short between the D+/D- connections through systematic multimeter-based debugging and fix it.
  • 3D printer calibration - Case was printed using secondhand ELEGOO Neptune 4 Max, a printer which is known to be finnicky. I did research and looked at experiences from others who had the same printer to learn how to properly calibrate the printer, including replacing the bed springs with silicon spacers, and altering the printer’s configuration file to automatically level the bed and generate a printing mesh.
  • Obtaining tools and materials – I was unable to gain access to public/free 3D printers over the summer, so I purchased a secondhand printer off Facebook Marketplace. The PCB and parts were ordered from JLCPCB and DigiKey (including $40 for international shipping D:).

Results

  • Successfully designed, manufactured, and assembled a working mechanical keyboard for daily use
  • Gained experience across PCB design, mechanical design, manufacturing, firmware development, and hardware debugging

Parts

212
QtyValueFootprintReferences
86D_SmallDiode_SMD:D_SOD-123D1, D2, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23 +70
79MX_SW_HSPCM_marbastlib-mx:SW_MX_HS_CPG151101S11_1uMX1, MX2, MX10, MX11, MX12, MX13, MX14, MX15, MX16, MX17, MX18, MX19, MX20, MX21, MX22, MX23 +63
8100nCapacitor_SMD:C_0402_1005MetricC4, C7, C8, C9, C13, C14, C15, C16
51uCapacitor_SMD:C_0402_1005MetricC1, C2, C3, C6, C10
35k1Resistor_SMD:R_0402_1005MetricR3, R4, R5
3MX_SW_HSPCM_marbastlib-mx:SW_MX_HS_KS-2P02B01-01_1.25uMX77, MX78, MX79
21kResistor_SMD:R_0402_1005MetricR6, R9
222pCapacitor_SMD:C_0402_1005MetricC11, C12
227Resistor_SMD:R_0402_1005MetricR7, R8
25.1kResistor_SMD:R_0402_1005MetricR1, R2
2MX_SW_HSPCM_marbastlib-mx:SW_MX_HS_CPG151101S11_1.5uMX32, MX45
2MX_SW_HSPCM_marbastlib-mx:SW_MX_HS_CPG151101S11_1.75uMX48, MX74
2MX_stabPCM_marbastlib-mx:STAB_MX_P_2.25uS2, S3
2SW_PushButton_Switch_SMD:SW_SPST_TL3342BOOT1, RST1
110uCapacitor_SMD:C_0603_1608MetricC5
1Conn_01x04Connector_JST:JST_SH_SM04B-SRSS-TB_1x04-1MP_P1.00mm_HorizontalJ1
1Conn_01x05Connector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ3
1Crystal_GND24Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mmY1
1Fuse_SmallFuse:Fuse_1206_3216MetricF1
1MX_stabPCM_marbastlib-mx:STAB_MX_P_6.25uS4
1MX_stabPCM_marbastlib-mx:STAB_MX_P_2uS1
1RP2040Package_DFN_QFN:QFN-56-1EP_7x7mm_P0.4mm_EP3.2x3.2mmU3
1SRV05-4Package_TO_SOT_SMD:SOT-23-6U2
1USB_C_Receptacle_USB2.0_16PConnector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12J2
1W25Q128JVSPackage_SO:SOIC-8_5.3x5.3mm_P1.27mmU4
1XC6206PxxxMRPackage_TO_SOT_SMD:SOT-23-3U1

Questions

How big is the Keyboard PCB?

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

What parts does the Keyboard use?

212 parts, built around the RP2040, W25Q128JVSIQ and SRV05-4. 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 duorahrah/Keyboard repository on GitHub, at the commit this page was made from: the board is PCB/PCB.kicad_pcb and its schematic PCB/PCB.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 duorahrah before reusing the design.

Similar boards

  • 2 layers63.5 × 58 mmLatest, the printed circuit board in 3D

    Latest

    minipadKB/minipad

    The PCB and case files for the minipad, an RP2040-based 2-3-key keypad for the rhythm game osu!.

    39 parts52GPL-3.0
  • 2 layers224.4 × 97.8 mmKnobdeavour, the printed circuit board in 3D

    Knobdeavour

    ScatteredDrifter/Buran-Ortho

    A 39-key orthogonal keyboard with support for two knobs, based on a rp2040

    105 parts46
  • 2 layers253.3 × 113.3 mmCut slope, the printed circuit board in 3D

    Cut slope

    hazels-garage/cut-slope

    119 parts29
  • 2 layers344.7 × 123.6 mmSlime88, the printed circuit board in 3D

    Slime88

    zykrah/slime88

    A F13 TKL Multi-Layout Hotswap H88-Compat Type-C PCB

    243 parts29
  • 2 layers346.1 × 118.3 mmTKL VIDEO, the printed circuit board in 3D

    TKL VIDEO

    NCKiser/TKL_VIDEO

    233 parts17
  • 2 layers236.9 × 86.8 mmRaii020, the printed circuit board in 3D

    Raii020

    unspecworks/raii

    splay sweep with ferris

    233 parts17
  • 2 layers346.1 × 93.7 mmSifrl main pcb, the printed circuit board in 3D

    Sifrl main pcb

    ramonimbao/SpaceInvadersFRL

    An F-rowless TKL keyboard case, plate, and PCB that uses the HiTek Series 725 switches.

    177 parts15
  • 2 layers309.6 × 76.2 mmQ9-Chimera, the printed circuit board in 3D

    Q9-Chimera

    xommmmmmmm/QueueNineChimera

    A drop-in, multi-layout (ortho/row/alpha stagger) PCB with numpad for Keychron Q9

    201 parts15