

80--Keyboard
I made this Keyboard for myself, And to learn. This was my first time using Chip on Board tech, so it was quite a challenge for me, but it helped me learn alot.
- Size
- 353 × 135 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 203
- Nets
- 140
- Pads
- 958
- Tracks, vias
- 1,606, 202
- Routed
- Yes
- KiCad
- KiCad 9.0 (file 20241229)
- Created
- 19 Mar 2026
- Updated
- 31 Mar 2026
Overview
80--Keyboard is an open-source printed circuit board by XavierdSeth, from the XavierdSeth/80--Keyboard repository on GitHub. It is a 2-layer board of 353 × 135 mm with 203 parts on 140 nets, routed with 1,606 tracks and 202 vias.
It is built around the RP2040. Its parts include 87 diodes, 68 switches, 13 capacitors, 5 resistors and 2 ICs. It belongs with the keyboards and input boards and the RP2040 boards of this library.
Main components
1README
README.mdKeyboard
My Keyboard is a standard 80% keyboard with an added Rotary Encoder for volume control.
I made this Keyboard for myself, And to learn. This was my first time using Chip on Board tech, so it was quite a challenge for me, but it helped me learn alot.
Features:
- 80% Keyboard
- 87 Keys
- Rotary Encoder
- Arrow Keys
- F Keys
- Chip On Board
CAD Model:
I designed the Case to fit together with 3 pieces and 8 M2.5 screws. The 3 pieces are the Bottom of the case, The sides of the case (with a cutout for the USB-C) and the Top of the case, which includes the switch plate and the Top Frame. The Bottom and Sides are clearance holes and the screw threads into the top. The screw threads into 1.4mm of the top part and the screws are actually held .5mm higher than the bottom instead of flush.
<img src=assets/cad.png alt="Keyboard" width="500"/>
PCB:
I made my PCB in KiCad. This was my first time using CoB, Chip on Board, where instead of using a microcontroller, The RP2040 chip is directly on the board with all the other necessary components. I ended up reffereing to RP2040 Datasheet alot for this.
Here is the Schematic, I spend alot of time figuring out how to get the whole CoB system working, but I think I did well.
<img src=assets/schematic.png alt="Keyboard" width="500"/>
Here is the PCB, I think I was able to make it pretty Compact with the components, however I am still unsure about the USB-C port.
<img src=assets/pcb.png alt="Keyboard" width="500"/>
Firmware:
I decided on KMK firmware for this keyboard, as it is quite easy to code and implement.
BOM:
Parts
203| Qty | Value | Footprint | References |
|---|---|---|---|
| 87 | D | Diode_SMD:D_SOD-123 | D1, D2, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D102 +71 |
| 7 | 100nF | Capacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolder | C1, C2, C5, C6, C7, C8, C11 |
| 3 | 10µF | Capacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolder | C3, C4, C9 |
| 2 | 15pF | Capacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolder | C12, C13 |
| 2 | 27Ω | Resistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolder | R4, R5 |
| 2 | 5.1kΩ | Resistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolder | R1, R2 |
| 2 | LOGO | LOGO | G***, G*** |
| 1 | 0 | MX_Hotswap:MX-Hotswap-1U | SW62 |
| 1 | 1 | MX_Hotswap:MX-Hotswap-1U | SW8 |
| 1 | 10kΩ | Resistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolder | R3 |
| 1 | 1µF | Capacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolder | C10 |
| 1 | 2 | MX_Hotswap:MX-Hotswap-1U | SW14 |
| 1 | 3 | MX_Hotswap:MX-Hotswap-1U | SW20 |
| 1 | 4 | MX_Hotswap:MX-Hotswap-1U | SW26 |
| 1 | 5 | MX_Hotswap:MX-Hotswap-1U | SW32 |
| 1 | 6 | MX_Hotswap:MX-Hotswap-1U | SW38 |
| 1 | 7 | MX_Hotswap:MX-Hotswap-1U | SW44 |
| 1 | 8 | MX_Hotswap:MX-Hotswap-1U | SW50 |
| 1 | 9 | MX_Hotswap:MX-Hotswap-1U | SW56 |
| 1 | A | MX_Hotswap:MX-Hotswap-1U | SW10 |
| 1 | Alt | MX_Hotswap:MX-Hotswap-1.25U | SW18 |
| 1 | Apostrophe | MX_Hotswap:MX-Hotswap-1U | SW70 |
| 1 | B | MX_Hotswap:MX-Hotswap-1U | SW35 |
| 1 | B Slash | MX_Hotswap:MX-Hotswap-1.5U | SW81 |
| 1 | Backspace | MX_Hotswap:MX-Hotswap-2U | SW80 |
| 1 | C | MX_Hotswap:MX-Hotswap-1U | SW23 |
| 1 | CapsLock | MX_Hotswap:MX-Hotswap-1.75U | SW4 |
| 1 | Comma | MX_Hotswap:MX-Hotswap-1U | SW53 |
| 1 | Crystal | Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm_HandSoldering | Y1 |
| 1 | Ctrl | MX_Hotswap:MX-Hotswap-1.25U | SW6 |
| 1 | D | MX_Hotswap:MX-Hotswap-1U | SW22 |
| 1 | Delete | MX_Hotswap:MX-Hotswap-1U | SW87 |
| 1 | Down | MX_Hotswap:MX-Hotswap-1U | SW96 |
| 1 | E | MX_Hotswap:MX-Hotswap-1U | SW21 |
| 1 | End | MX_Hotswap:MX-Hotswap-1U | SW93 |
| 1 | Enter | MX_Hotswap:MX-Hotswap-2.25U | SW76 |
| 1 | Esc | MX_Hotswap:MX-Hotswap-1U | SW1 |
| 1 | F | MX_Hotswap:MX-Hotswap-1U | SW28 |
| 1 | F Slash | MX_Hotswap:MX-Hotswap-1U | SW65 |
| 1 | F1 | MX_Hotswap:MX-Hotswap-1U | SW7 |
| 1 | F10 | MX_Hotswap:MX-Hotswap-1U | SW61 |
| 1 | F11 | MX_Hotswap:MX-Hotswap-1U | SW67 |
| 1 | F12 | MX_Hotswap:MX-Hotswap-1U | SW73 |
| 1 | F2 | MX_Hotswap:MX-Hotswap-1U | SW13 |
| 1 | F3 | MX_Hotswap:MX-Hotswap-1U | SW19 |
| 1 | F4 | MX_Hotswap:MX-Hotswap-1U | SW25 |
| 1 | F5 | MX_Hotswap:MX-Hotswap-1U | SW31 |
| 1 | F6 | MX_Hotswap:MX-Hotswap-1U | SW37 |
| 1 | F7 | MX_Hotswap:MX-Hotswap-1U | SW43 |
| 1 | F8 | MX_Hotswap:MX-Hotswap-1U | SW49 |
| 1 | F9 | MX_Hotswap:MX-Hotswap-1U | SW55 |
| 1 | Fn | MX_Hotswap:MX-Hotswap-1.25U | SW66 |
| 1 | Full Stop | MX_Hotswap:MX-Hotswap-1U | SW59 |
| 1 | G | MX_Hotswap:MX-Hotswap-1U | SW34 |
| 1 | H | MX_Hotswap:MX-Hotswap-1U | SW40 |
| 1 | Home | MX_Hotswap:MX-Hotswap-1U | SW92 |
| 1 | I | MX_Hotswap:MX-Hotswap-1U | SW51 |
| 1 | Insert | MX_Hotswap:MX-Hotswap-1U | SW86 |
| 1 | J | MX_Hotswap:MX-Hotswap-1U | SW46 |
| 1 | K | MX_Hotswap:MX-Hotswap-1U | SW52 |
| 1 | L | MX_Hotswap:MX-Hotswap-1U | SW58 |
| 1 | Left | MX_Hotswap:MX-Hotswap-1U | SW90 |
| 1 | M | MX_Hotswap:MX-Hotswap-1U | SW47 |
| 1 | MCP1700x-330xxTT | Package_TO_SOT_SMD:SOT-23 | U3 |
| 1 | Minus - | MX_Hotswap:MX-Hotswap-1U | SW68 |
| 1 | N | MX_Hotswap:MX-Hotswap-1U | SW41 |
| 1 | O | MX_Hotswap:MX-Hotswap-1U | SW57 |
| 1 | P | MX_Hotswap:MX-Hotswap-1U | SW63 |
| 1 | Pause | MX_Hotswap:MX-Hotswap-1U | SW97 |
| 1 | PgDn | MX_Hotswap:MX-Hotswap-1U | SW99 |
| 1 | PgUp | MX_Hotswap:MX-Hotswap-1U | SW98 |
| 1 | Plus + | MX_Hotswap:MX-Hotswap-1U | SW74 |
| 1 | PrtSc | MX_Hotswap:MX-Hotswap-1U | SW85 |
| 1 | Q | MX_Hotswap:MX-Hotswap-1U | SW9 |
| 1 | R | MX_Hotswap:MX-Hotswap-1U | SW27 |
| 1 | RP2040 | Package_DFN_QFN:QFN-56-1EP_7x7mm_P0.4mm_EP3.2x3.2mm | U2 |
| 1 | R_Alt | MX_Hotswap:MX-Hotswap-1.25U | SW54 |
| 1 | R_Ctrl | MX_Hotswap:MX-Hotswap-1.25U | SW72 |
| 1 | R_Shift | MX_Hotswap:MX-Hotswap-2.75U | SW71 |
| 1 | R_Win | MX_Hotswap:MX-Hotswap-1.25U | SW60 |
The 178 most common of 203 parts.
Similar boards
- 2 layers290.1 × 130 mm

- 4 layers50 × 30 mm

Picodvi
Fr4nkFletcher/ESP32-Marauder-Cheap-Yellow-Display
ESP32Marauder Cheap Yellow Display
55 parts1.8kMIT - 4 layers299 × 127 mm

- 2 layers42 × 67 mm

- 2 layers181 × 97 mm

OpenDeck r3.1.2
shanteacontrols/OpenDeck
A platform for building interactive control and sensing devices using MIDI and OSC built with Zephyr RTOS.
262 parts960Apache-2.0 - 4 layers82.6 × 82.5 mm

- 4 layers102.9 × 96.7 mm

PicoGUS chipdown
polpo/picogus
Emulation of ISA sound cards and CD-ROM on Raspberry Pi Pico (GUS, SB/Adlib, MPU-401, Tandy, CMS, Panasonic CD-ROM) with USB mouse/joystick support
99 parts805 - 2 layers53.2 × 24.8 mm

Questions
How big is the 80--Keyboard PCB?
It measures 353 × 135 mm and has 2 copper layers, 1.6 mm thick.
What parts does the 80--Keyboard use?
203 parts, built around the RP2040. 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 80--Keyboard KiCad files?
From the XavierdSeth/80--Keyboard repository on GitHub, at the commit this page was made from: the board is PCB/80% Keyboard.kicad_pcb and its schematic PCB/80% Keyboard.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the 80--Keyboard design in my own project?
Its repository states no licence, so its author keeps all rights: ask XavierdSeth before reusing the design.