Skip to the content
PCBKitNew board
2 layers330 × 100.8 mmKeyboard 60, the printed circuit board in 3D

This is a custom mechanical keyboard designed around a Raspberry Pi Pico 2, a custom PCB, and an 8x8 switch matrix.

Size
330 × 100.8 mm
Copper layers
2
Thickness
1.6 mm
Parts
129
Nets
119
Pads
558
Tracks, vias
749, 98
Pours
2
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
12 Oct 2026
Updated
28 Oct 2026

Overview

Keyboard 60 is an open-source printed circuit board by eastmohan, from the eastmohan/keyboard repository on GitHub. It is a 2-layer board of 330 × 100.8 mm with 129 parts on 119 nets, routed with 749 tracks and 98 vias.

It belongs with the keyboards and input boards and the RP2040 boards of this library.

README

README.md

keyboard

This is a custom mechanical keyboard designed around a Raspberry Pi Pico 2, a custom PCB, and an 8x8 switch matrix. image

What is this?

This is a custom-designed 64-key mechanical keyboard that I designed to expand my PCB design skills and build on the https://github.com/eastmohan/macropad I designed several months ago. It has a compact layout slightly wider than a typical 60% keyboard, with three additional keys (to fill the 8x8 matrix) currently set to media controls in the firmware.

The keyboard uses a Raspberry Pi Pico 2 to read key presses and send them to a computer over USB. Instead of connecting every switch to a separate microcontroller pin, the design organizes the switches into an 8-row by 8-column matrix.

I wanted to build a keyboard that I could design and understand at the hardware level, from the PCB and switch layout to the firmware that interprets key presses.

Design

PCB

The PCB connects the switches, diodes, and microcontroller into one keyboard assembly. image image I designed it specifically for this custom 64-key layout: image The PCB design files are available in the https://github.com/eastmohan/keyboard/tree/main/PCB directory. The https://github.com/eastmohan/keyboard/tree/main/CAD directory has the project's 3D models. It includes a .STEP file of an assembly with all of the components, as well as .STL files of the enclosure I designed for this keyboard.

Key Matrix

The keyboard uses an 8x8 matrix, with each switch corresponding to a row-column intersection. The firmware scans the matrix to find which keys are pressed. Each switch has an associated diode, which helps prevent ghosting, where certain combinations of simultaneous key presses could otherwise be detected wrong. Using a matrix reduces the number of microcontroller GPIO pins needed to support all 64 keys. image

Hardware

ComponentPurpose
Raspberry Pi Pico 2Microcontroller and USB keyboard interface
Custom PCBConnects the switches, diodes, and microcontroller
64 mechanical switchesKeyboard input
Switch diodesMatrix isolation
Pin headersConnect the Pico 2 to the PCB
KeycapsProvide the physical typing interface
StabilizersMake the keycaps stable on bigger keys like the spacebar
The full component list with prices and links is in https://github.com/eastmohan/keyboard/blob/main/BOM.csv

Firmware

The firmware is written in CircuitPython and stored in https://github.com/eastmohan/keyboard/blob/main/code.py. It runs on the Raspberry Pi Pico 2 and handles keyboard input. The firmware reads the switch matrix and translates detected key presses into keyboard events sent to the connected computer. The three additional keys are set as media controls, though the key mapping can be changed by modifying assignments in code.py.

Assembly

PCB Assembly

  1. Install diodes - place each diode into the PCB in the correct orientation, following the PCB markings. Solder each end and clip extra metal.
  2. Install switches - snap the mechanical switches into the PCB and solder the two pins.
  3. Install the microcontroller headers - solder pin headers to the Raspberry Pi Pico 2 and solder the headers into the PCB.
  4. Install the stabilizers - attach the keycaps to their corresponding switches.
  5. Flash the firmware - set up CircuitPython on the Pico 2 and copy code.py onto the device.
  6. Test the keyboard - connect it to a computer and test each key to make sure it works as intended.

Firmware Setup

  1. Download the appropriate CircuitPython UF2 firmware for the Pico 2 from the official CircuitPython downloads page.
  2. Put the Pico 2 into ints bootloader mode and install the UF2 file per CircuitPython instructions.
  3. Connect the board to your computer and confirm the CircuitPython drive shows up.
  4. Copy code.py to the drive.
  5. Connect the assembled keyboard and test the key inputs.

Parts

129
QtyValueFootprintReferences
64DDiode_THT:D_DO-35_SOD27_P7.62mm_HorizontalD-_1, D:_1, D"_1, D+_1, D<_1, D>_1, D0_1, D1_1, D2_1, D3_1, D4_1, D5_1, D6_1, D7_1, D8_1, D9_1 +48
49SW_PushButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW-_1, SW;_1, SW"_1, SW+_1, SW<_1, SW>_1, SW0_1, SW1_1, SW2_1, SW3_1, SW4_1, SW5_1, SW6_1, SW7_1, SW8_1, SW9_1 +33
7SW_PushButton_Switch_Keyboard:SW_Cherry_MX_1.25u_PCBSWLalt_1, SWLctrl_1, SWLmenu_1, SWLwin_1, SWRalt_1, SWRctrl_1, SWRwin_1
2SW_PushButton_Switch_Keyboard:SW_Cherry_MX_1.50u_PCBSW\_1, SWtab_1
2SW_PushButton_Switch_Keyboard:SW_Cherry_MX_2.25u_PCBSWenter_1, SWRshift_1
1Picokeyboard_60:RPi_Pico_SMD_THU1
1SW_PushButton_Switch_Keyboard:SW_Cherry_MX_1.75u_PCBSWcaps_1
1SW_PushButton_Switch_Keyboard:SW_Cherry_MX_6.25u_PCBSWspace_1
1SW_PushButton_Switch_Keyboard:SW_Cherry_MX_2.00u_PCBSWbackspace_1
1SW_PushButton_Switch_Keyboard:SW_Cherry_MX_2.75u_PCBSWLshift_1

Questions

How big is the Keyboard 60 PCB?

It measures 330 × 100.8 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Keyboard 60 use?

129 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 60 KiCad files?

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

Can I use the Keyboard 60 design in my own project?

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

Similar boards

  • 2 layers100 × 100 mmDb25 bob v2, the printed circuit board in 3D

    Db25 bob v2

    rene-dev/stmbl

    AC Servo Driver for STM32F4

    129 parts990GPL-3.0
  • 2 layers101.3 × 128.5 mm3-phase lfo, the printed circuit board in 3D

    3-phase lfo

    tpcarlson/synth-diy

    Mostly Eurorack projects

    129 parts107
  • 2 layers124.4 × 80.4 mmFourier left, the printed circuit board in 3D

    Fourier left

    keebio/fourier

    PCB files for Fourier Keyboard, a 40% split keyboard

    129 parts96MIT
  • 2 layers243 × 72.7 mmTG4x, the printed circuit board in 3D

    TG4x

    MythosMann/tg4x

    A cheap, open source 45% keyboard

    129 parts81GPL-3.0
  • 2 layers89 × 55.5 mmMintypcb, the printed circuit board in 3D

    Mintypcb

    jackw01/pi-tin

    Open source raspberry pi handheld retro gaming console

    129 parts75CERN-OHL-W-2.0
  • 2 layers284.5 × 94 mmTutorial, the printed circuit board in 3D

    Tutorial

    BathroomEpiphanies/KiCAD-Keyboard-Tutorial

    Tutorial on making keyboard PCB layouts in KiCAD

    129 parts74MIT
  • 2 layers99.5 × 90.5 mmMRR ESPA, the printed circuit board in 3D

    MRR ESPA

    maplerainresearch/MRR_ESPA

    A basic 3D printer control board based on ESP32

    129 parts59
  • 2 layers100 × 116 mmQPCR main, the printed circuit board in 3D

    QPCR main

    hisashin/qNinja

    Open source Real-Time Quantitative PCR Implementation

    129 parts48GPL-3.0