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

I'm Building a keyboard for hackclub KEEB YSWS

Size
328.5 × 100.5 mm
Copper layers
2
Thickness
1.6 mm
Parts
134
Nets
98
Pads
552
Tracks, vias
575, 2
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
22 Jun 2026
Updated
23 Oct 2026

Overview

Keyboard is an open-source printed circuit board by ryaneditraj, from the ryaneditraj/Keeb-Keyboard repository on GitHub, published under the MIT licence. It is a 2-layer board of 328.5 × 100.5 mm with 134 parts on 98 nets, routed with 575 tracks and 2 vias.

Its parts include 64 diodes and 64 switches. It belongs with the keyboards and input boards and the RP2040 boards of this library.

README

README.md

Keeb Keyboard

A 64-key open-source mechanical keyboard: an ANSI 60% layout, a 4-key arrow cluster, a Raspberry Pi Pico, and a glue-in case. The schematic, PCB, Gerbers, and STEP file are the whole project.

License: MIT KiCad 10 64 keys Raspberry Pi Pico Hack Club KEEB

Built for Hack Club KEEB, a you-ship-we-ship mechanical keyboard project. This was Ryan Editraj's first PCB: a 60% he extended with arrow keys, routed in KiCad, with the Pico soldered on the front and the case modeled in Onshape.

Demo

This repository has no firmware and no app, so there is no device screen to capture. KiCad 10 is not installed in a stock Ubuntu image, and these pictures were plotted from the design files by scripts/render_previews.py. They are not photographs and not exports from KiCad's 3D viewer.

64-key mechanical keyboard layout plotted from the KiCad PCB, with the Raspberry Pi Pico in the top-right bay

Front and back copper of the Keeb Keyboard PCB, plotted from keyboard.kicad_pcb

Onshape keyboard case tray measured from the STEP file

In KiCad's default Y-up view the number row sits toward the bottom of the canvas. The plots above put that row at the top, which is how the board sits on a desk. USB leaves the far edge.

Features

  • 64 MX-style keys. 60 keys in an ANSI 60% unit layout, plus four 1u arrow keys stepped in on the right.
  • Cherry MX PCB-mount footprints from KiCad's keyboard library, in 1u, 1.25u, 1.5u, 1.75u, 2u, 2.25u, 2.75u, and 6.25u.
  • One diode per switch. 64 DO-35 through-hole diodes (the KEEB parts list uses 1N4148). Cathodes face the rows, which is COL2ROW.
  • Five PCB-mount stabilizers from marbastlib: 2u under the 2u, 2.25u, and 2.75u keys, and 6.25u under the spacebar.
  • Raspberry Pi Pico on the common module footprint (Pico, Pico W, or Pico 2 pinout). It sits on the front of the board, in the top-right bay, with USB-C hanging off the top edge.
  • 5 × 17 keyboard matrix (ROW0–ROW4, COL0–COL16) on GP0–GP21. 64 of the 85 positions are filled.
  • Two-layer, 1.6 mm board. 575 traces, almost all through-hole, so the design only needs two vias.
  • Fabrication outputs included. Gerbers and Excellon drills in PCB FILES/Output.zip, exported from KiCad 10.0.4.
  • Onshape case. A single open tray, about 334 × 105 × 11 mm, meant to be glued with PE foam in the bottom. No plate and no mounting holes.

Layout

Unit sizes below are read from the footprints. The schematic does not store key legends, so this README does not invent a QWERTY print. The sizes themselves match an ANSI 60%.

RowKeysWidths, left to right
01413 × 1u, 2u
1141.5u, 12 × 1u, 1.5u
2131.75u, 11 × 1u, 2.25u
3122.25u, 10 × 1u, 2.75u
471.25u × 3, 6.25u, 1.25u × 3
Arrows41u up, then 1u left / down / right, set slightly below the right side

The Pico occupies the empty bay to the right of rows 0–2, above the arrow cluster.

Tech stack

PieceChoice
Schematic and PCBKiCad 10.0.4
Switch footprintsSwitch_Keyboard_Cherry_MX:SW_Cherry_MX_PCB_*
Stabilizersmarbastlib STAB_MX_2u and STAB_MX_6.25u
DiodesDevice:D_Small on Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal
MicrocontrollerRaspberry Pi Pico, Module:RaspberryPi_Pico_Common_Unspecified
CaseOnshape, exported as STEP AP242
FirmwareNot in this repo yet. KEEB's firmware guide points at RMK. Any scanner that can drive a COL2ROW matrix can use the pinout below.
CIGitHub Actions runs scripts/check_design.py (Python stdlib only)

Quick start

  1. Install KiCad 10 or newer. Older KiCad releases will not open the files.
  2. Install marbastlib. In KiCad's Plugin and Content Manager, add https://raw.githubusercontent.com/ebastler/ebastler-KiCad-repository/main/repository.json, then install marbastlib. The KEEB doc Designing the PCB has the click path.
  3. Open the two design files directly. There is no .kicad_pro in the repo.
text
PCB FILES/keyboard.kicad_sch
PCB FILES/keyboard.kicad_pcb
  1. Check that the files still match the reviewed design:
bash
python3 scripts/check_design.py
  1. To redraw the pictures in docs/images/:
bash
pip install pillow
python3 scripts/render_previews.py

No environment variables are required. See .env.example.

Usage

Read the board

Switches are SW1–SW64, diodes D1–D64, stabilizers ST14, ST41, ST42, ST53, and ST58, and the Pico is A1. Rows and columns are global labels (ROW0–ROW4, COL0–COL16).

Order the PCB

PCB FILES/Output.zip is a KiCad 10.0.4 fabrication set:

FileLayer
keyboard-F_Cu.gbr / keyboard-B_Cu.gbrFront and back copper
keyboard-F_Mask.gbr / keyboard-B_Mask.gbrSolder mask
keyboard-F_Silkscreen.gbr / keyboard-B_Silkscreen.gbrSilkscreen
keyboard-F_Paste.gbr / keyboard-B_Paste.gbrPaste (empty of parts; this is a through-hole board)
keyboard-Edge_Cuts.gbrBoard outline, 328.5 × 100.5 mm
keyboard-PTH.drl / keyboard-NPTH.drlPlated and non-plated drills

Ask the fab for a 2-layer, 1.6 mm board. Traces are 0.2 mm and the two vias are a 0.3 mm drill in a 0.6 mm pad, so check the fab's minimums before you order. Details are in SECURITY.md.

Bill of materials

QtyRefsPartFootprint
64SW1–SW64MX-compatible PCB-mount switchCherry MX PCB, see the layout table for sizes
64D1–D64Small-signal diode, DO-35 (KEEB uses 1N4148)Horizontal, 7.62 mm pitch
4ST14, ST41, ST42, ST53PCB-mount MX stabilizer, 2umarbastlib STAB_MX_2u
1ST58PCB-mount MX stabilizer, 6.25umarbastlib STAB_MX_6.25u
1A1Raspberry Pi Pico (Pico W and Pico 2 fit the same footprint)Common Pico module
1—Keycaps to match the unit sizes—
1—Case tray, or print/cut your own from the STEPOnshape part

The schematic symbol for the diode is D_Small, not a locked manufacturer part number. Match the DO-35 footprint.

Matrix pinout

Diode footprint pin 1 is the cathode and lands on the row. The switch connects the column to the diode anode. Drive columns, read rows (COL2ROW).

GPIO names are the official Raspberry Pi Pico pinout for these pad numbers. The unused pads in the KiCad footprint use that same numbering (GPIO22-Pad29, GPIO26_ADC0-Pad31, and so on).

NetPico pinGPIO
ROW01GP0
ROW12GP1
ROW24GP2
ROW35GP3
ROW46GP4
COL07GP5
COL19GP6
COL210GP7
COL311GP8
COL412GP9
COL514GP10
COL615GP11
COL716GP12
COL817GP13
COL919GP14
COL1020GP15
COL1121GP16
COL1222GP17
COL1324GP18
COL1425GP19
COL1526GP20
COL1627GP21

Pico pins 3, 8, 13, 18, 23, 28, and 38 are ground and are tied together on the module footprint. GP22, the ADC pins, RUN, 3V3, and VBUS stay on the module. That is what you want when the Pico's own regulator and USB connector do the power.

Open the case

Import Case Files/keeb - Part 579.step into Onshape, Fusion 360, or FreeCAD. The solid is one open tray: 334.4 × 104.9 × 11.0 mm outside, with a cavity 331.4 × 102.5 mm, a 4 mm floor, and walls that rise 7 mm. Wall thickness is uneven, about 1.3–1.7 mm along the length and 1.1–1.3 mm along the depth. The PCB (328.5 × 100.5 mm) drops into that cavity. The original plan is glue plus PE foam, which matches a board with no mounting holes.

Project structure

text
.
├── PCB FILES/
│   ├── keyboard.kicad_sch    # schematic, KiCad 10
│   ├── keyboard.kicad_pcb     # 2-layer board
│   └── Output.zip             # Gerbers and drills
├── Case Files/
│   └── keeb - Part 579.step   # Onshape tray
├── docs/images/               # plots generated from those files
├── scripts/
│   ├── check_design.py        # CI check, stdlib only
│   └── render_previews.py     # rebuild the plots (needs Pillow)
├── .github/                   # CI, issue forms, pull request template
├── LICENSE                    # MIT
├── CONTRIBUTING.md
├── CODE_OF_CONDUCT.md
├── SECURITY.md
└── .env.example               # no secrets; nothing reads this

Folder names keep the spaces they were published with.

Roadmap

  • Firmware and a keymap (RMK, KMK, or QMK) that uses the pinout above.
  • A photo of the soldered board, once it exists. The plots in this README are not a stand-in for that.
  • Mounting holes, if the case moves off glue and foam.
  • A plate, if the tray gets a top half.
  • A design-rule pass before the next fab order: 0.2 mm traces, 0.3 / 0.6 mm vias, and the tight outline.
  • Hotswap sockets. The footprints today are soldered PCB-mount MX.

FAQ

What is Keeb Keyboard?

Keeb Keyboard is an open-source 64-key mechanical keyboard design by Ryan Editraj. It is a KiCad PCB for a Raspberry Pi Pico, plus an Onshape case, published for Hack Club KEEB.

Is this a 60% keyboard?

The alpha block is a 60-key ANSI 60% (right shift is 2.75u, so there is no extra 1u key beside it). Four arrow keys bring the switch count to 64. It is not a 65% or a 75%.

Which microcontroller does it use?

A Raspberry Pi Pico, soldered on the front of the board in the top-right bay. The footprint also fits a Pico W or a Pico 2. The matrix uses GP0 through GP21. Wireless pins are unused.

What switches and diodes does the PCB use?

MX-compatible PCB-mount switches in Cherry MX footprints, one DO-35 small-signal diode per switch, and PCB-mount MX stabilizers on the wide keys. The KEEB build guide uses 1N4148 diodes for this footprint.

How do I open the design files?

Install KiCad 10 or newer and marbastlib, then open PCB FILES/keyboard.kicad_sch and PCB FILES/keyboard.kicad_pcb. There is no KiCad project file to double-click.

How do I flash the firmware?

You can't yet. Firmware is not in the repository. The matrix pinout is the map a firmware needs. Hack Club's guide recommends RMK.

Can I manufacture this board?

Yes. The Gerbers and drills are in PCB FILES/Output.zip. It is a 2-layer, 1.6 mm, through-hole keyboard PCB, 328.5 × 100.5 mm. Read the fabrication notes before ordering: thin traces, small vias, no mounting holes.

What is the case file?

Case Files/keeb - Part 579.step is a single Onshape tray, roughly 334 × 105 × 11 mm, sized to hold the PCB with glue and PE foam. It is not a full sandwich case and it has no switch plate.

Are there API keys or secrets in the repository?

No. The design files, Gerbers, STEP file, and git history were scanned. Nothing needs to be rotated. Manufacturing files are public on purpose.

Who is allowed to build or modify this?

Anyone. The design is MIT licensed. Keep the copyright notice if you redistribute it.

Who made this?

Ryan Editraj, while learning schematic capture, PCB layout, and CAD for Hack Club KEEB. The Pico is on the front of the board because mounting it on the back was not obvious yet, and the journaling habit started late in the build.

Contributing

See CONTRIBUTING.md. Small, specific pull requests are the useful ones: a footprint fix, a regenerated Gerber zip, firmware that matches this matrix, or a clearer note. Please follow the Code of Conduct.

License

MIT © 2026 Ryan Editraj.

Author

Ryan Editraj — AI builder and tech creator.

Parts

134
QtyValueFootprintReferences
64DDiode_THT:D_DO-35_SOD27_P7.62mm_HorizontalD1, D2, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23 +48
50SW_PushSwitch_Keyboard_Cherry_MX:SW_Cherry_MX_PCB_1.00uSW1, SW2, SW10, SW11, SW12, SW13, SW16, SW17, SW18, SW19, SW20, SW21, SW22, SW23, SW24, SW25 +34
6SW_PushSwitch_Keyboard_Cherry_MX:SW_Cherry_MX_PCB_1.25uSW55, SW56, SW57, SW59, SW60, SW61
4SW_stabPCM_marbastlib-mx:STAB_MX_2uST14, ST41, ST42, ST53
2SW_PushSwitch_Keyboard_Cherry_MX:SW_Cherry_MX_PCB_1.50uSW15, SW28
2SW_PushSwitch_Keyboard_Cherry_MX:SW_Cherry_MX_PCB_2.25uSW41, SW42
1RaspberryPi_PicoModule:RaspberryPi_Pico_Common_UnspecifiedA1
1SW_PushSwitch_Keyboard_Cherry_MX:SW_Cherry_MX_PCB_2.75uSW53
1SW_PushSwitch_Keyboard_Cherry_MX:SW_Cherry_MX_PCB_2.00uSW14
1SW_PushSwitch_Keyboard_Cherry_MX:SW_Cherry_MX_PCB_6.25uSW58
1SW_PushSwitch_Keyboard_Cherry_MX:SW_Cherry_MX_PCB_1.75uSW29
1SW_stabPCM_marbastlib-mx:STAB_MX_6.25uST58

Questions

How big is the Keyboard PCB?

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

What parts does the Keyboard use?

134 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 ryaneditraj/Keeb-Keyboard repository on GitHub, at the commit this page was made from: the board is PCB FILES/keyboard.kicad_pcb and its schematic PCB FILES/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 publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers82 × 54.5 mmDIMMCartridgeV4, the printed circuit board in 3D

    DIMMCartridgeV4

    GaudiLabs/OpenDrop

    Open Source Digital Microfluidics Bio Lab

    134 parts492GPL-3.0
  • 2 layers100 × 100 mmV0.4.3d, the printed circuit board in 3D

    V0.4.3d

    speeduino/Hardware

    Official Speeduino hardware designs

    134 parts283
  • 2 layers228 × 114 mmPlanck thk, the printed circuit board in 3D

    Planck thk

    olkb/planck_thk

    Planck Through Hole Kit

    134 parts169GPL-3.0
  • 2 layers169.3 × 128 mmPSU PCB, the printed circuit board in 3D

    PSU PCB

    ThomasVDD/SmartSupply

    SmartSupply is a digital battery powered lab powersupply. It is Arduino compatible and can be controlled via PC over USB.

    134 parts96
  • 2 layers304 × 133.5 mmChocofly fz, the printed circuit board in 3D

    Chocofly fz

    vlkv/chocofly

    Ergonomic monosplit keyboard on kailh choc switches

    134 parts75MIT
  • 2 layers238.6 × 95.3 mm41 1350 pcb, the printed circuit board in 3D

    41 1350 pcb

    cyril279/keyboards

    134 parts74MIT
  • 2 layers80.6 × 146.7 mmDecentNumPad, the printed circuit board in 3D

    DecentNumPad

    bleroy/3d-junkyard

    Random 3D models

    134 parts69
  • 2 layers100 × 80 mmPanel, the printed circuit board in 3D

    Panel

    richardeoin/ax

    This repository contains hardware and software for the AX5043 and AX5243 radios from AxSemi (now ON Semiconductor). They are probably the same die, but the AX5243 has fewer pins.

    134 parts48