

Keyboard 60
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.mdkeyboard
This is a custom mechanical keyboard designed around a Raspberry Pi Pico 2, a custom PCB, and an 8x8 switch matrix.
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.
I designed it specifically for this custom 64-key layout:
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.
Hardware
| Component | Purpose |
|---|---|
| Raspberry Pi Pico 2 | Microcontroller and USB keyboard interface |
| Custom PCB | Connects the switches, diodes, and microcontroller |
| 64 mechanical switches | Keyboard input |
| Switch diodes | Matrix isolation |
| Pin headers | Connect the Pico 2 to the PCB |
| Keycaps | Provide the physical typing interface |
| Stabilizers | Make 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
- Install diodes - place each diode into the PCB in the correct orientation, following the PCB markings. Solder each end and clip extra metal.
- Install switches - snap the mechanical switches into the PCB and solder the two pins.
- Install the microcontroller headers - solder pin headers to the Raspberry Pi Pico 2 and solder the headers into the PCB.
- Install the stabilizers - attach the keycaps to their corresponding switches.
- Flash the firmware - set up CircuitPython on the Pico 2 and copy code.py onto the device.
- Test the keyboard - connect it to a computer and test each key to make sure it works as intended.
Firmware Setup
- Download the appropriate CircuitPython UF2 firmware for the Pico 2 from the official CircuitPython downloads page.
- Put the Pico 2 into ints bootloader mode and install the UF2 file per CircuitPython instructions.
- Connect the board to your computer and confirm the CircuitPython drive shows up.
- Copy code.py to the drive.
- Connect the assembled keyboard and test the key inputs.
Parts
129| Qty | Value | Footprint | References |
|---|---|---|---|
| 64 | D | Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal | D-_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 |
| 49 | SW_Push | Button_Switch_Keyboard:SW_Cherry_MX_1.00u_PCB | SW-_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 |
| 7 | SW_Push | Button_Switch_Keyboard:SW_Cherry_MX_1.25u_PCB | SWLalt_1, SWLctrl_1, SWLmenu_1, SWLwin_1, SWRalt_1, SWRctrl_1, SWRwin_1 |
| 2 | SW_Push | Button_Switch_Keyboard:SW_Cherry_MX_1.50u_PCB | SW\_1, SWtab_1 |
| 2 | SW_Push | Button_Switch_Keyboard:SW_Cherry_MX_2.25u_PCB | SWenter_1, SWRshift_1 |
| 1 | Pico | keyboard_60:RPi_Pico_SMD_TH | U1 |
| 1 | SW_Push | Button_Switch_Keyboard:SW_Cherry_MX_1.75u_PCB | SWcaps_1 |
| 1 | SW_Push | Button_Switch_Keyboard:SW_Cherry_MX_6.25u_PCB | SWspace_1 |
| 1 | SW_Push | Button_Switch_Keyboard:SW_Cherry_MX_2.00u_PCB | SWbackspace_1 |
| 1 | SW_Push | Button_Switch_Keyboard:SW_Cherry_MX_2.75u_PCB | SWLshift_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 mm

- 2 layers101.3 × 128.5 mm

- 2 layers124.4 × 80.4 mm

- 2 layers243 × 72.7 mm

- 2 layers89 × 55.5 mm

Mintypcb
jackw01/pi-tin
Open source raspberry pi handheld retro gaming console
129 parts75CERN-OHL-W-2.0 - 2 layers284.5 × 94 mm

Tutorial
BathroomEpiphanies/KiCAD-Keyboard-Tutorial
Tutorial on making keyboard PCB layouts in KiCAD
129 parts74MIT - 2 layers99.5 × 90.5 mm

- 2 layers100 × 116 mm
