Blueprint

xD keyboard

Low profile Hotswap nrf52 keyboard with Bluetooth and USB

Created by Shades Shades

Tier 2

11 views

0 followers

CAN CAN ⚡🚀 approved xD keyboard ago

Tier approved: 2

Grant approved: $114.80

This is one of the coolest keyboards i've seen

Shades Shades submitted xD keyboard for ship review ago

Iamalive Iamalive 🚀 requested changes for xD keyboard ago

Nice, the keyboards looks clean as heck! Just make sure to add the shipping option for the pcb. Also, which pcb are you getting? In your journals it shows that you chose the Gerbermykeyboard, but in the cart screenshots it says that you chose 2 LayerY11. Please make clearly state that!

Shades Shades submitted xD keyboard for ship review ago

zsharpminor zsharpminor requested changes for xD keyboard ago

Hi, please read https://blueprint.hackclub.com/about/submission-guidelines - your README is literally empty; we need images of your PCB, schematic, render, CAD, etc.! Also, why are you using 6 layers for a PCB?! You should be able to design a keyboard in 2 layers! Please also choose cheaper keycaps and switches if possible - keyboards should be tier 3, so you have about $45.08 left to optimize! Thanks :)

Shades Shades submitted xD keyboard for ship review ago

Shades Shades added to the journal ago

Update

I had to make a massive change in my pcb. It was because my mcu was in the bottom part. It is not like that I didn't knew it. I flipped it in the easyeda but only the parts flipped but the cutout remained. I didn't notice it until I started working on the full cad. It seemed like switch didn't fit. Then I realized the my keyboard was left handed. Then I had to re arrange the whole thing and had to rearrange the connection.

Screenshot 2026-01-25 211112

Close Shot

Screenshot 2026-01-25 211126
Screenshot 2026-01-25 211145
Screenshot 2026-01-25 211157

After all that I had to re arrange the cad. I downloaded a LP mx 3d keycap from internet and made the cad with it. I sadly didn't find any other sizes of keycap to showcase. So 5 of them are blank. don't mind it.

Screenshot 2026-01-24 230937
Screenshot 2026-01-24 230947
Screenshot 2026-01-25 151643
Screenshot 2026-01-25 151654
Screenshot 2026-01-25 151704
Screenshot 2026-01-25 151736

I also changed the pcb to 4 layer from 6 layer because in 6 layer pcb you are automatically are forced to select ENIG. So I transferred to 4 layer. Though I had 6 layer coupon, I could reduce the price as low as 25 USD. As it is a 4 layer one it still expensive then the six layer one. But it was flagged in the review so I changed it.
Screenshot 2026-01-23 001626

Update summary:
Fixed Rateline & rerouting
Easyeda project file
Gerber file
New plate file
new case file
full kb file
BOM

Shades Shades added to the journal ago

Update

I had to make a massive change in my pcb. It was because my mcu was in the bottom part. It is not like that I didn't knew it. I flipped it in the easyeda but only the parts flipped but the cutout remained. I didn't notice it until I started working on the full cad. It seemed like switch didn't fit. Then I realized the my keyboard was left handed. Then I had to re arrange the whole thing and had to rearrange the connection.

Screenshot 2026-01-25 211112

Close Shot

Screenshot 2026-01-25 211126
Screenshot 2026-01-25 211145
Screenshot 2026-01-25 211157

After all that I had to re arrange the cad. I downloaded a LP mx 3d keycap from internet and made the cad with it. I sadly didn't find any other sizes of keycap to showcase. So 5 of them are blank. don't mind it.

Screenshot 2026-01-24 230937
Screenshot 2026-01-24 230947
Screenshot 2026-01-25 151643
Screenshot 2026-01-25 151654
Screenshot 2026-01-25 151704
Screenshot 2026-01-25 151736

I also changed the pcb to 4 layer from 6 layer because in 6 layer pcb you are automatically are forced to select ENIG. So I transferred to 4 layer. Though I had 6 layer coupon, I could reduce the price as low as 25 USD. As it is a 4 layer one it still expensive then the six layer one. But it was flagged in the review so I changed it.
Screenshot 2026-01-23 001626

Update summary:
Fixed Rateline & rerouting
Easyeda project file
Gerber file
New plate file
new case file
full kb file
BOM

Kai the Jolly Guy Kai the Jolly Guy 🚀 requested changes for xD keyboard ago

Nice keyboard, but it has a couple minor issues ;) The first is that you have ratlines on your PCB that should be connected. Run DRC and just make sure there's no errors whatsoever. The second is that your PCB shouldn't quite be that expensive, deselect options like ENIG because you don't need it to cheapen the price! And I'd like you to create a proper assembly of your final project that has all the keys so your design has some polish! Feel free to look at some examples of what some finished README's should look like: https://github.com/kaipereira/pr1sm https://github.com/SharKingStudios/Riptide

Shades Shades submitted xD keyboard for ship review ago

Shades Shades added to the journal ago

Settlement

Day08-20

So I failed for ULP. No problem. I was looking at other low profile key switches like Kalih Choc V2 & Gateron KS-33. But Kalih's problem was it does not have a proper stabilizer to work on. I could make a dummy key to replace the stabs but I don't want to waste time like ULP. I settled on Gateron. Gateron has a very good support. It has Specification, 3D model & Footprint.

image

image

Then the process was same follow the KLEPCBGEN instruction & generate a kicad project.

Drag & Drop the MCU schematic into the new project. Assign the footprints and Update the PCB.

KLEPCBGEN BUG

KLEPCBGEN IS VERY useful but it has a bug where if you even try, you cannot make boardoutline or edgecut. Maybe it is a problem from my side or windows problem or importing problem. So I did most of the routing in Kicad.

image

image

image

So the edges were itching me. That's why I exported to easyeda pro. But the differential pair wasn't thought yet. Because I really wanted to end the routing. Because the spacing was so tight. Finally I completed the routing finally.

image

Screenshot 2026-01-09 163805

But yet I didn't finalized the board outline. SO good idea is to start with the keyboard layout. There is a portion in my keyboard where the MCU is and the Antenna located. I couldn't route well when the MCU is under a key so I have to go through several routing attempt. So I made my Keyboard layout with the extra portion which is about .98U. Then made the layout with it.

I used Keebio Plate because it has support for gateron low profile stabilizer cutout.

imageimage

Now the problem is it only generates the switch cutout but it didn't have a outline. So I used another plate generator, swillkb, to get a outline with 2mm holes. It comes with dummy cutout but it really have no use I cut it later.

SO in fusion 360, you upload the two dxf file together and replaced the cutout and measured it. The idea really worked out. Then I exported the new dxf file into easyeda pro. Then adjusted the pcb.

image

Made some edgecut to reduce price and fit the the stabs.

** Important Stuff **

I wanted to make BOM at the same time . So I wanted to see how much the PCB cost. I uploaded the PCB in the JLCPCB and it costs my kidney. To be clear, options that I selected are needed. ENIG is for nRF52 BGA module other wise you cannot get a good BGA soldering. And allegedly there is a tented VIA inside the bga which is also can be bumped. If it is bumped, I am cooked. So epoxy fill is needed. So the cost comes around 95$.

HIGH RISK QOUTES

Screenshot 2025-12-24 170217

But even without epoxy via the cost is high with high amount of risk that is why I switched to 6 layer. Cost will be significantly cheaper. And epoxy fill is free with conductive plate.

For that power routing worked out so well. I could get rid of thick power track and get some free space to remove conjuction. I will also use a battery that I have in my inventory. So it will be true wireless.

IMG_20260109_195742_671

image

By Using the JLCPCB impedence calculator, I got the width & spacing for differential layer. ANd preffered Board stackup.

image

image

After that I changed my PCB and Updated it.

  • Top plate & Back case *

From the plate DXF file I generated the top plate which has 1.2 mm of thickness. and has countersink hole with 0.7 mm down cut.

image

Also made the keyboard case which is essentially is backplate with 2 mm extrude to fit all over.

Screenshot 2026-01-09 155828

Screenshot 2026-01-09 155906

Screenshot 2026-01-09 155922

Screenshot 2026-01-09 155841

Screenshot 2026-01-09 155942

Screenshot 2026-01-09 155928

Then I started to work on component sourcing and BOM making. PCB components are all good to found from LCSC. But I was a little confused at first about the keycaps and switches. Looks like Kechron Low profile switch, Numphy low profile switch and Gateron KS-33 are all the same. But little modified. You can buy these switched from anyone.

Also KS-33 is a low profile MX style switch so any low profile MX keycaps will work with the KS-33 switches. Even though it does not mention KS-33. But things to notice that. KS-33 switches and stabilzer is in a line. So the keycaps bottom should be looked after.

Really good alternative for gateron low profile stabilizer is YMDK low profiles stabilizer which also works with gateron KS-33. ANd YMDK also produces low profile hot swap which can be used to KS-33 too.

After Completing the BOM and redesigning the plates a bit, Finally the project was over.

Last piece of puzzle was the plates and case. Which must be 3D printed cause I ain't getting no grant for that. So I loaded up the BAMBO Studio. And Cut the 3d file 90 degree into two beds and export the two separate 3d file for plates and case.

image

Screenshot 2026-01-09 180128

Firmware

Now the hardware stuff was over. It was to focus on firmware. First I started for nRF52 firmware. I forked the Adafruit nRF52 bootloader and added it to local files through GIT CMD. If you don't have git CMD, download from the website and download python as well.

After that you have to install couple of tools that is mentioned in Adafruit's Guide.

Arm GNU Embedded Toolchain
Intel HEX

Also if you are in Windows. I recommend you to Download MSYS2 MINGW64.

image

It will make you work much easier. If you need any help in command you can take help from chatgpt. After setting up all the things. You have to add your board first to the Repository with necessary files.

image

This how I add mine. You can add yours too. Get some idea about you pins configuration led. Naming your board and correctly adding the sub module directory.

After that go back to the read me file and copy & paste the following command. This is recommended. If you try any other ways you will get error and it is really frustating.

Screenshot 2026-01-09 182827

After that make a build directory and run

make BOARD=(YourBoardName)

then you will get the necessary firmware files to flash the nRF52. You have to flash it through UART pins. That's why I have some SWD,SWO,SWC pins for that in my keyboard. Down below is the recommended firmware for the keyboard.

image

But you cannot directly flash the firmware from your computer. You need a debugger device. Cheapest solution is Raspberry pi Pico or XIAO rp2040 (which I have from my hackpad). This is a good guide on the project. How to flash the nRF52 BLE.

After that I worked with ZMK firmware.

ZMK firmware was pretty straight forward. If you follow their guide online. You will be able to make your own firmware pretty easily.

For my end, I had to add my own board to arm folder

image

After that from the terminal select your own board and edit the keymap file and push it to github.

Git action would generate the firmware for you.

image

image

image

U can flash the firmware through USB via uf2 file. and then you will have a fully functional keyboard.

Thanks for reading all that.

Shades Shades added to the journal ago

Trial & Error

Day-01-07
Started with a bigger dream. But that story later. I was working with cherry ultra low profile switches. PCB cutout was done with the help of klepcbgen. I am a very easyeda environmental guy. But I used kicad for the fast time. All you needed to do was update the footprint and in pcb everything will be in its place. You don't need to align anything. Funfact you don't have to assign rows and column. But you do need to change some assignment because sometimes it becomes very hard to route.

Screenshot 2025-12-15 111848

Screenshot 2025-12-20 100333

Anyways that plan didn't worked out. There was no aftermarket keycaps for ULP switches. Though there is a Reddit Post, but it is only 1U. That is not suitable for my keyboard. If anyone is interested in making a ergo keyboard, you probably should look into this.

image

Though I tried to make my own keycap. Which visually pleasing but has some clearance issue that I think would be straight declined as a project. Still you can look at it.

Screenshot 2025-12-23 102920

Screenshot 2025-12-23 104056

Screenshot 2025-12-23 102901

Screenshot 2025-12-23 102911

Screenshot 2025-12-24 135100

The corner issue that I couldn't replicate (sad emoji)(frustated emoji)

Screenshot 2025-12-19 114642

Screenshot 2025-12-19 114623

After all I did some progress on choosing MCU. nRF52840 (a bga blutooth chip). Reason for choosing this one because this has a ZMK onboard cheap support, USB HID (Basically means you can use that wirelessly whenever it is connected to USB, it is a usb keyboard. No need to switch). For this I can use amazing zmk features like ultra low power blutooth. Also Adafruit has a repository support for its firmware flasing. So it makes the Job much easier.

image

image

image

The keyboard would be basic. No led lighting and standard 60% layout.

Schematics was inspired for Mikoto, a open-source nRF52 dev board.

Screenshot 2026-01-08 231454

Screenshot 2026-01-08 231322

Screenshot 2026-01-08 231603

Shades Shades started xD keyboard ago

1/8/2026 - Trial & Error

Day-01-07
Started with a bigger dream. But that story later. I was working with cherry ultra low profile switches. PCB cutout was done with the help of klepcbgen. I am a very easyeda environmental guy. But I used kicad for the fast time. All you needed to do was update the footprint and in pcb everything will be in its place. You don't need to align anything. Funfact you don't have to assign rows and column. But you do need to change some assignment because sometimes it becomes very hard to route.

Screenshot 2025-12-15 111848

Screenshot 2025-12-20 100333

Anyways that plan didn't worked out. There was no aftermarket keycaps for ULP switches. Though there is a Reddit Post, but it is only 1U. That is not suitable for my keyboard. If anyone is interested in making a ergo keyboard, you probably should look into this.

image

Though I tried to make my own keycap. Which visually pleasing but has some clearance issue that I think would be straight declined as a project. Still you can look at it.

Screenshot 2025-12-23 102920

Screenshot 2025-12-23 104056

Screenshot 2025-12-23 102901

Screenshot 2025-12-23 102911

Screenshot 2025-12-24 135100

The corner issue that I couldn't replicate (sad emoji)(frustated emoji)

Screenshot 2025-12-19 114642

Screenshot 2025-12-19 114623

After all I did some progress on choosing MCU. nRF52840 (a bga blutooth chip). Reason for choosing this one because this has a ZMK onboard cheap support, USB HID (Basically means you can use that wirelessly whenever it is connected to USB, it is a usb keyboard. No need to switch). For this I can use amazing zmk features like ultra low power blutooth. Also Adafruit has a repository support for its firmware flasing. So it makes the Job much easier.

image

image

image

The keyboard would be basic. No led lighting and standard 60% layout.

Schematics was inspired for Mikoto, a open-source nRF52 dev board.

Screenshot 2026-01-08 231454

Screenshot 2026-01-08 231322

Screenshot 2026-01-08 231603

1/9/2026 - Settlement

Day08-20

So I failed for ULP. No problem. I was looking at other low profile key switches like Kalih Choc V2 & Gateron KS-33. But Kalih's problem was it does not have a proper stabilizer to work on. I could make a dummy key to replace the stabs but I don't want to waste time like ULP. I settled on Gateron. Gateron has a very good support. It has Specification, 3D model & Footprint.

image

image

Then the process was same follow the KLEPCBGEN instruction & generate a kicad project.

Drag & Drop the MCU schematic into the new project. Assign the footprints and Update the PCB.

KLEPCBGEN BUG

KLEPCBGEN IS VERY useful but it has a bug where if you even try, you cannot make boardoutline or edgecut. Maybe it is a problem from my side or windows problem or importing problem. So I did most of the routing in Kicad.

image

image

image

So the edges were itching me. That's why I exported to easyeda pro. But the differential pair wasn't thought yet. Because I really wanted to end the routing. Because the spacing was so tight. Finally I completed the routing finally.

image

Screenshot 2026-01-09 163805

But yet I didn't finalized the board outline. SO good idea is to start with the keyboard layout. There is a portion in my keyboard where the MCU is and the Antenna located. I couldn't route well when the MCU is under a key so I have to go through several routing attempt. So I made my Keyboard layout with the extra portion which is about .98U. Then made the layout with it.

I used Keebio Plate because it has support for gateron low profile stabilizer cutout.

imageimage

Now the problem is it only generates the switch cutout but it didn't have a outline. So I used another plate generator, swillkb, to get a outline with 2mm holes. It comes with dummy cutout but it really have no use I cut it later.

SO in fusion 360, you upload the two dxf file together and replaced the cutout and measured it. The idea really worked out. Then I exported the new dxf file into easyeda pro. Then adjusted the pcb.

image

Made some edgecut to reduce price and fit the the stabs.

** Important Stuff **

I wanted to make BOM at the same time . So I wanted to see how much the PCB cost. I uploaded the PCB in the JLCPCB and it costs my kidney. To be clear, options that I selected are needed. ENIG is for nRF52 BGA module other wise you cannot get a good BGA soldering. And allegedly there is a tented VIA inside the bga which is also can be bumped. If it is bumped, I am cooked. So epoxy fill is needed. So the cost comes around 95$.

HIGH RISK QOUTES

Screenshot 2025-12-24 170217

But even without epoxy via the cost is high with high amount of risk that is why I switched to 6 layer. Cost will be significantly cheaper. And epoxy fill is free with conductive plate.

For that power routing worked out so well. I could get rid of thick power track and get some free space to remove conjuction. I will also use a battery that I have in my inventory. So it will be true wireless.

IMG_20260109_195742_671

image

By Using the JLCPCB impedence calculator, I got the width & spacing for differential layer. ANd preffered Board stackup.

image

image

After that I changed my PCB and Updated it.

  • Top plate & Back case *

From the plate DXF file I generated the top plate which has 1.2 mm of thickness. and has countersink hole with 0.7 mm down cut.

image

Also made the keyboard case which is essentially is backplate with 2 mm extrude to fit all over.

Screenshot 2026-01-09 155828

Screenshot 2026-01-09 155906

Screenshot 2026-01-09 155922

Screenshot 2026-01-09 155841

Screenshot 2026-01-09 155942

Screenshot 2026-01-09 155928

Then I started to work on component sourcing and BOM making. PCB components are all good to found from LCSC. But I was a little confused at first about the keycaps and switches. Looks like Kechron Low profile switch, Numphy low profile switch and Gateron KS-33 are all the same. But little modified. You can buy these switched from anyone.

Also KS-33 is a low profile MX style switch so any low profile MX keycaps will work with the KS-33 switches. Even though it does not mention KS-33. But things to notice that. KS-33 switches and stabilzer is in a line. So the keycaps bottom should be looked after.

Really good alternative for gateron low profile stabilizer is YMDK low profiles stabilizer which also works with gateron KS-33. ANd YMDK also produces low profile hot swap which can be used to KS-33 too.

After Completing the BOM and redesigning the plates a bit, Finally the project was over.

Last piece of puzzle was the plates and case. Which must be 3D printed cause I ain't getting no grant for that. So I loaded up the BAMBO Studio. And Cut the 3d file 90 degree into two beds and export the two separate 3d file for plates and case.

image

Screenshot 2026-01-09 180128

Firmware

Now the hardware stuff was over. It was to focus on firmware. First I started for nRF52 firmware. I forked the Adafruit nRF52 bootloader and added it to local files through GIT CMD. If you don't have git CMD, download from the website and download python as well.

After that you have to install couple of tools that is mentioned in Adafruit's Guide.

Arm GNU Embedded Toolchain
Intel HEX

Also if you are in Windows. I recommend you to Download MSYS2 MINGW64.

image

It will make you work much easier. If you need any help in command you can take help from chatgpt. After setting up all the things. You have to add your board first to the Repository with necessary files.

image

This how I add mine. You can add yours too. Get some idea about you pins configuration led. Naming your board and correctly adding the sub module directory.

After that go back to the read me file and copy & paste the following command. This is recommended. If you try any other ways you will get error and it is really frustating.

Screenshot 2026-01-09 182827

After that make a build directory and run

make BOARD=(YourBoardName)

then you will get the necessary firmware files to flash the nRF52. You have to flash it through UART pins. That's why I have some SWD,SWO,SWC pins for that in my keyboard. Down below is the recommended firmware for the keyboard.

image

But you cannot directly flash the firmware from your computer. You need a debugger device. Cheapest solution is Raspberry pi Pico or XIAO rp2040 (which I have from my hackpad). This is a good guide on the project. How to flash the nRF52 BLE.

After that I worked with ZMK firmware.

ZMK firmware was pretty straight forward. If you follow their guide online. You will be able to make your own firmware pretty easily.

For my end, I had to add my own board to arm folder

image

After that from the terminal select your own board and edit the keymap file and push it to github.

Git action would generate the firmware for you.

image

image

image

U can flash the firmware through USB via uf2 file. and then you will have a fully functional keyboard.

Thanks for reading all that.

1/25/2026 9:14 PM - Update

I had to make a massive change in my pcb. It was because my mcu was in the bottom part. It is not like that I didn't knew it. I flipped it in the easyeda but only the parts flipped but the cutout remained. I didn't notice it until I started working on the full cad. It seemed like switch didn't fit. Then I realized the my keyboard was left handed. Then I had to re arrange the whole thing and had to rearrange the connection.

Screenshot 2026-01-25 211112

Close Shot

Screenshot 2026-01-25 211126
Screenshot 2026-01-25 211145
Screenshot 2026-01-25 211157

After all that I had to re arrange the cad. I downloaded a LP mx 3d keycap from internet and made the cad with it. I sadly didn't find any other sizes of keycap to showcase. So 5 of them are blank. don't mind it.

Screenshot 2026-01-24 230937
Screenshot 2026-01-24 230947
Screenshot 2026-01-25 151643
Screenshot 2026-01-25 151654
Screenshot 2026-01-25 151704
Screenshot 2026-01-25 151736

I also changed the pcb to 4 layer from 6 layer because in 6 layer pcb you are automatically are forced to select ENIG. So I transferred to 4 layer. Though I had 6 layer coupon, I could reduce the price as low as 25 USD. As it is a 4 layer one it still expensive then the six layer one. But it was flagged in the review so I changed it.
Screenshot 2026-01-23 001626

Update summary:
Fixed Rateline & rerouting
Easyeda project file
Gerber file
New plate file
new case file
full kb file
BOM

1/25/2026 9:14 PM - Update

I had to make a massive change in my pcb. It was because my mcu was in the bottom part. It is not like that I didn't knew it. I flipped it in the easyeda but only the parts flipped but the cutout remained. I didn't notice it until I started working on the full cad. It seemed like switch didn't fit. Then I realized the my keyboard was left handed. Then I had to re arrange the whole thing and had to rearrange the connection.

Screenshot 2026-01-25 211112

Close Shot

Screenshot 2026-01-25 211126
Screenshot 2026-01-25 211145
Screenshot 2026-01-25 211157

After all that I had to re arrange the cad. I downloaded a LP mx 3d keycap from internet and made the cad with it. I sadly didn't find any other sizes of keycap to showcase. So 5 of them are blank. don't mind it.

Screenshot 2026-01-24 230937
Screenshot 2026-01-24 230947
Screenshot 2026-01-25 151643
Screenshot 2026-01-25 151654
Screenshot 2026-01-25 151704
Screenshot 2026-01-25 151736

I also changed the pcb to 4 layer from 6 layer because in 6 layer pcb you are automatically are forced to select ENIG. So I transferred to 4 layer. Though I had 6 layer coupon, I could reduce the price as low as 25 USD. As it is a 4 layer one it still expensive then the six layer one. But it was flagged in the review so I changed it.
Screenshot 2026-01-23 001626

Update summary:
Fixed Rateline & rerouting
Easyeda project file
Gerber file
New plate file
new case file
full kb file
BOM