xD keyboard
Low profile Hotswap nrf52 keyboard with Bluetooth and USB
Created by
Shades
Tier 2
11 views
0 followers
CAN ⚡🚀
approved xD keyboard ago
Tier approved: 2
Grant approved: $114.80
This is one of the coolest keyboards i've seen
Shades
submitted xD keyboard for ship review ago
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
submitted xD keyboard for ship review ago
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
submitted xD keyboard for ship review ago
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.

Close Shot



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.






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.

Update summary:
Fixed Rateline & rerouting
Easyeda project file
Gerber file
New plate file
new case file
full kb file
BOM
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.

Close Shot



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.






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.

Update summary:
Fixed Rateline & rerouting
Easyeda project file
Gerber file
New plate file
new case file
full kb file
BOM
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
submitted xD keyboard for ship review ago
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.


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.



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.


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.


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.

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

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.


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


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.

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






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.


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.

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.

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.

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.

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

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.



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
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.


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.

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.





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


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.



The keyboard would be basic. No led lighting and standard 60% layout.
Schematics was inspired for Mikoto, a open-source nRF52 dev board.



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.


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.

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.





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


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.



The keyboard would be basic. No led lighting and standard 60% layout.
Schematics was inspired for Mikoto, a open-source nRF52 dev board.



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.


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.



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.


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.


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.

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

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.


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


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.

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






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.


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.

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.

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.

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.

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

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.



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.

Close Shot



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.






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.

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.

Close Shot



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.






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.

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