

I built a 65% layout keyboard based on Seed Studio Xiao nrf52840 also It will have a 3.7v battery and an 0.91 inch OLED Screen. Switches will be HotSwapable.
- Size
- 342.9 × 95.2 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 149
- Nets
- 129
- Pads
- 857
- Tracks, vias
- 1,653, 95
- Pours
- 1
- Routed
- Yes
- KiCad
- KiCad 9.0 (file 20241229)
- Created
- 10 Jul 2026
- Updated
- 10 Jul 2026
Overview
Key65 is an open-source printed circuit board by sauravraj67, from the sauravraj67/Keyboard-Pro repository on GitHub. It is a 2-layer board of 342.9 × 95.2 mm with 149 parts on 129 nets, routed with 1,653 tracks and 95 vias.
It is built around the PCA9555D. Its parts include 74 switches, 68 diodes, 3 ICs, 2 resistors and 2 connectors. It belongs with the nRF52 and nRF5x boards of this library.
Main components
1README
README.mdKeyboard Pro
I built a 65% layout keyboard based on Seed Studio Xiao nrf52840 also It will have a 3.7v battery and an 0.91 inch OLED Screen. Switches will be HotSwapable. I used expander to connect the rows and coluns because there weren't enough pins available. It is Bluetooth enabled
Features
- nrf52840 Rp2040
- uses 65% Keyboard Layout
- Uses Keyboard Matrix
- Had a rotor encoder and an 0.91 inch oled screen
Schematic
Made the Key-Matrix
Hours- 5.5 hr
So I opened the schematics and added a key switch and a diode. Then I had my way toward how many switches would be there per row . The number of keys per row wasn't constant So I made a rough sketch about how would I assign the columns and rows to each Key switch. after that as I would be using keyboard matrix ,so I needed to add a diode to each key switch to prevent ghosting. Then I started making the switch layout . I also kept in mind that each switches aren't of same length so I had to use specific footprints for each switches specifically as per the 65 % standard layout. The Switches will be hot-swapable as well. While making the switch matrix it was a bit time consuming as I tried to organized the switches as well as per there layout ,so that it will be easy for me to connect the wires.While reviewing I found a few placement and footprint mistakes so I solved them then I moved toward making the rows and columns connection and adding the labels to them So this is how it looks.
Adding other components
Hours :- 2.5 hr
So there is no footprint and symbol for the Xioa nRF52840 , So I downloaded them and added it to kicad also I knew that there weren't enough numbers of gpio pins on the Xiao nRF52840 so handle all the 15 columns and 5 rows So I needed to use an expander , So for that I used PCA9555D and read it's data sheet a bit , It will communicate to the MCU via I2C protocol , So I started adding the rows and columns label to it but even one expander wasn't enough So I had to add a second one to add the connections of all rows and columns then I did all the other connection on the expander.after that I added pins for Battery connection. the battery that we would be using will be of 3.7v lithium ion battery. and made a battery sense circuit. the nRF52840 has inbuild battery charging IC and it can control the charring part so I don't to add anything more after that I added a 4 pins for 0.91 inch oled display and added labels to it.after that I connected every label to the Xiao nRF52840. So this is how the final schematics look
PCB Design
Started with PCB ( Component placement)
Hours :- 4.75 hours
SO I started with the hard part. Arranging the switches . I used a Grid of 19.05U so that the switches snap easily but that wasn't the case . I tried to snap them with each other via using different grid sizes and moving them then they use to snap properly. It look me a long time snapping the switches and overt to that placing switches at the right Place because each rows doesn't have same number of rows I had to align the first switch to the right place , also I added Stabilizers for any switch whose footprint was over 2.25U. The main thing was choosing the right Switch while placing and the most hectic thing was that switches don't use to snap directly . I have to move it around using different grid sizes to achieve the goal . Then I added the Xiao nRF52840 to the right top side a bit away from the corner then added the switches after that placed the Oled screen in the free space and added the expanders in places where there was free space I made few alteration of the keyboard but finally ended up with this after that I placed the diodes near to each respective switch to which it was attached onto the bottom layer of the PCB then I added the boundaries and this is how PCB layout looks now.
Routed the PCB
Hours :- 6.5
So I stated with routing the PCB I initially routed the diodes to the switches then I moved and started making rows and columns . I tried to make as clean routs as possible then I started routing the rows and columns to the expander . I used vias where there weren't space to rout . I had to make few alteration while routing so that my routs looks clean and workable . Many a times there weren't a way to rout . So I had to re-rout few traces but I was able to rout it to the two expanders. Then I stared connecting the SDA/SCL lines to the MCU from the expander and the OLED screen after that I made connection for the battery pins and battery connected circuit. So after all the rout the PCB looks like this with all the clean straight routs .
Made and Polished the Case
Hours :- 5.75 hours
So I took the measurements of the keyboard then made a sketch of same size.after that I added 1 mm releat from each side and added a boundary sketch and curved it edges.after that I need to add sketches for holding the plates . So I added it's boundary and started making symmetric Rectangles and circles for holding the Plate boundary , I repeted it for the tob and bottom
then to the sides
after that I made a simple base then extruded it as per the needs to make the base Case basic design all the meserments were pre calculated.
after that I added PCB aligned it perfectly with the sketch then moved it to a calculated height ( this time the calculations things were right).then I added the 3D model of the MCU and started making holes on the Case for the USB-C for that I used a simple sketch and extruded to to make a cut
then made the middle and the top layer
And polished the case and these are the final result
Parts
149| Qty | Value | Footprint | References |
|---|---|---|---|
| 68 | D | Diode_SMD:D_SOD-123 | D1, D2, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23 +52 |
| 68 | SW_Push | PCM_marbastlib-mx:SW_MX_HS_CPG151101S11_1u | SW1, SW2, SW10, SW11, SW12, SW13, SW14, SW15, SW16, SW17, SW18, SW19, SW20, SW21, SW22, SW23 +52 |
| 2 | PCA9555D | Package_SO:SOIC-24W_7.5x15.4mm_P1.27mm | U2, U3 |
| 2 | STAB_MX_2.25u | PCM_marbastlib-mx:STAB_MX_2.25u | S2, S3 |
| 1 | 2M | Resistor_SMD:R_0805_2012Metric | R2 |
| 1 | 806k | Resistor_SMD:R_0805_2012Metric | R1 |
| 1 | Conn_01x02_Pin | Connector_JST:JST_JWPF_B02B-JWPF-SK-R_1x02_P2.00mm_Vertical | J2 |
| 1 | Conn_01x04_Socket | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J1 |
| 1 | RotaryEncoder_Switch_MP | Rotary_Encoder:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm | SW69 |
| 1 | STAB_MX_2u | PCM_marbastlib-mx:STAB_MX_2u | S1 |
| 1 | STAB_MX_6.25u | PCM_marbastlib-mx:STAB_MX_6.25u | S4 |
| 1 | SW_Wuerth_450301014042 | Button_Switch_THT:SW_Slide_SPDT_Straight_CK_OS102011MS2Q | SW70 |
| 1 | XIAO-nRF52840-SMD | Modified XIAO:modified-XIAO-nRF52840-SMD | U4 |
Similar boards
- 4 layers80 × 80 mm

- 2 layers155.9 × 91.9 mm

- 2 layers330 × 123 mm

Riptide
SharKingStudios/Riptide
An Infinitely Expandable Keyboard built during Hackclub Highway!
270 parts18MIT - 2 layers100 × 86.5 mm

SensactHs
klaus-liebler/sensact
Es gibt vier Namespaces für Nachrichten "REQUEST" und "RESPONSE", "EVENT" und "ACKNOWLEDGE". Dies wird mit den beiden LSB des Versions-Namespace-Bytes erklärt (Somit bleiben 64 Versionierungsmöglichkeiten) Alle vier…
319 parts4Apache-2.0 - 2 layers203 × 88 mm

RICM pico
elatorre20/RICM_pico
The software for a raspberry PIco-based kit board for a tic-tac-toe game. The board is mostly based on I2C devices, and will be simple to assemble so that we can use it in children's workshops.
68 parts2GPL-3.0 - 2 layers428.6 × 161.9 mm

Keyboard mk1
bobby1321/Colossus-Of-Codes
Custom keyboard layout, called the Colossus of Codes (like Rhodes)
280 parts1MIT - 2 layers342.9 × 95.2 mm

Naicha68
laojoh/naicha68
A keyboard dreamt up and put into solid design by @deltea and @laojoh.
147 parts1MIT - 4 layers135 × 73.6 mm

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