Blueprint

Mechanical Keyboard

Making a mechanical keyboard with leds

Created by Lingfeng Wang Lingfeng Wang

Tier 3

33 views

0 followers

1Mon 1Mon approved Mechanical Keyboard ago

Tickets awarded: 209 tickets

Tier: 3

really impressive work getting the messed up pcb to work!!

Lingfeng Wang Lingfeng Wang submitted Mechanical Keyboard for review ago

Lingfeng Wang Lingfeng Wang added to the journal ago

bad case :(

I decided to assemble the case. unluckily, the cad was dimensioned wrong, so it did not fully fit. I ended up with gluing some paper over the seams so it looks alright, as I wait for the new case to print. The keyboard is fully functional, and it sounds quite nice too.IMG_1126

Lingfeng Wang Lingfeng Wang added to the journal ago

Perma ESC Function

When playing games, I noticed that I needed the esc key a lot. So I made it that if you double press fn, it will lock the tilda key to escape, so you don't need to press the keybind every time.
image

Lingfeng Wang Lingfeng Wang added to the journal ago

Function keys

Since my keyboard doesn’t have the 6th row for function keys, I had to make use of the fn key. When pressed, it would make the top row into the f1,2,3 keys. And to tell me it was activated, the top row would turn white. Similarly for caps lock, the led underneath that key would change to white whenever it was on. Since my keyboard LEDs still flicker too much and I honestly don’t care enough to fix it for the 15th time, I decided to remove the wave pattern and just have it a solid color. It still looks nice, and it isn’t like I am looking at my keyboard when I type anyways.
IMG_1124

Lingfeng Wang Lingfeng Wang added to the journal ago

Keyboard works now

I spent a long time mapping individual keys to their function, and the LEDs to each key. This was done mostly trial and error, since the LEDs were not really placed in order.(oops!) after it was done, I wrote a simple script to make the LEDs light up in a wave after a key was pressed. However, due to my pcb issues, the LEDs would flicker a lot. I tried adding caps between 5v and gnd on a couple LEDs and an electrolytic cap on the rp2040, but it didn’t really help.
IMG_1123

After adding a bit of foam underneath, the keyboard sounds quite nice, and I am quite proud of it.

Lingfeng Wang Lingfeng Wang added to the journal ago

Fixed pcb!!!

I finally finished soldering the pcb. I added a layer of electrical tape to keep everything together, then added some masking tape over to make it sound better. I got a basic program to run, making all the LEDs the same color but the keyboard doesn’t keyboard yet.IMG_1119

Lingfeng Wang Lingfeng Wang added to the journal ago

Fixed? pro micro

I reflowed the pro micro and it magically fixed itself.
I almost broke it, by having shaky hands that knocked off a couple components. Luckily, I was able to push them back into place, albeit a bit out of place.

Well the pro micro works fine, and still turns on the neopixels!

I got flux on my hot plate, but at least the pro micro works...

image

Lingfeng Wang Lingfeng Wang added to the journal ago

This project is ragebait

I was able to connect all the traces (not really but I will explain later)
image
Should've just bought a new board, this was NOT worth the time.
I also thought I broke my pro micro, so I had to desolder it. I was able to test my leds with an arduino mega, which looked fine.

image

However, inspection showed that two of my neopixels were soldered completely wrong, so I had to remove them and redo it.

image
The input is tied to the input of the previous led instead of the output.

But this broke the rest of the leds, so I'm gonna take a break from this godforsaken project

Lingfeng Wang Lingfeng Wang added to the journal ago

Soldered LEDS, diodes, switches

I was able to mount all the components.
image
However, since the pcb was cut, I need to add wires on top to make extra traces...
Mounting the components wasn't that hard, and I have quite a lot of experience from the hackpad.

Lingfeng Wang Lingfeng Wang added to the journal ago

Wrong pcb layout

Turns out I sent jlcpcb the wrong pcb layout. Two top keys were misaligned, and I was missing a key on the bottom row. So I had to cut out the pcb and sand and dremel and drill and a bunch of whatnot to fix this.

image

Terrible experience, 0/10, probably got cancer, do not suggest you try this. Just buy a new pcb it is NOT WORTH IT.

image
I used superglue to keep the "pcb" in place

Iamalive Iamalive 🚀 approved Mechanical Keyboard ago

Tier approved: 3

Grant approved: $93.00

Awesome project! Thanks for listening :)

Lingfeng Wang Lingfeng Wang added to the journal ago

Wrote KMK Code

I was able to put my keyboard layout into the KMK code.

image

The LED currently is a very simple controller that just sets it all of them to a light cyan. This will be expanded on once tested.

Lingfeng Wang Lingfeng Wang submitted Mechanical Keyboard for review ago

Iamalive Iamalive 🚀 requested changes for Mechanical Keyboard ago

Please include a screenshot of the shipping option you choose for your pcb. Additionally, please choose a cheaper option/color for your keyboard switches.

Lingfeng Wang Lingfeng Wang submitted Mechanical Keyboard for review ago

technical_. technical_. requested changes for Mechanical Keyboard ago

Please specify the amounts of components you need in your BOM. The word diodes is very ambiguous for the amount of diodes you want to order.

Lingfeng Wang Lingfeng Wang submitted Mechanical Keyboard for review ago

Tanuki Tanuki ⚡🚀 requested changes for Mechanical Keyboard ago

Hello! Please include the BOM in the readme, as well as the schematic. u also get 45 pieces, but the keeb is 67 pieces. Other than that, looking good!

Lingfeng Wang Lingfeng Wang submitted Mechanical Keyboard for review ago

Lingfeng Wang Lingfeng Wang added to the journal ago

Finished V2 of the CAD

I was able to finish the new cad, with the new pcb, stabilizers, and a new pcb mounting method.

image

image

Previously, I had the pcb bolted into the case, but now I just have it slide in, and the top and bottom go together to clamp on it.

I'm still not sure how to clamp the two sides together, but that can come later after I have finished making sure everything works IRL.

image

nimit nimit 🚀 requested changes for Mechanical Keyboard ago

You do not have a PCB screenshot in the repo! Also, your microcontroller sits on the opposite side of your switch. When the mcu is soldered, you will not be able to solder the switch or vice versa! Please move your MCU and check the 3D viewer in kicad to see these issues

Lingfeng Wang Lingfeng Wang added to the journal ago

Added Extra Key

Looking at some 60% keyboards, I realised that I needed an extra key in order to make it fit with my keycap set.

image

I added the key, and did some rerouting.

image

Lingfeng Wang Lingfeng Wang submitted Mechanical Keyboard for review ago

Lingfeng Wang Lingfeng Wang added to the journal ago

Finished PCB V2

I finished the new PCB, with a pro micro rather than an elite-pi.

image

I wanted to use an elite-pi rp2040 as the controller, but I could not find any online without expensive shipping, so I had to switch to the rp2040 pro micro, because it also has enough pins.

image
image

The pro micro will actually be underneath the pcb, but with the same orientation.

Lingfeng Wang Lingfeng Wang added to the journal ago

Finished PCB

I was finally able to finish the PCB today!

image

I also fixed the LEDs, so they go where they should be now.

image

Next, I need to fix the cad for my new pcb, and I should be good to go. I also updated my BOM.

Lingfeng Wang Lingfeng Wang added to the journal ago

Rework Part 1

I started redoing the pcb, with a different matrix and different chip.

image

I chose to replace this with an elitepi, because it has usb-C, 25 GPIO pins, and has a small form factor that fits on my board.
I also moved it to the back so I can plug directly into the board instead of having an extension cable.

image

The CAD has leds in the wrong spot other than the green one, because I made a couple edits to the footprint.

image

Lingfeng Wang Lingfeng Wang added to the journal ago

LED rework

To try to put everything on one pcb, I decided to mount the leds upside down, like this
image

I had to make a custom footprint, because kicad did not have one previously.

image
image

Next, I need to redo the matrix to make wiring simpler, switch to a rp2040.

koeg koeg 🚀 requested changes for Mechanical Keyboard ago

Hi! Are you getting the cheapest shipping on JLC? Try using global direct shipping. Also, do you have a specific reason for making a separate PCB for the LEDs, instead of just placing them on the main PCB with the switches and the rp2040? I have sent you a DM regarding this. Besides this, everything looks good!

Lingfeng Wang Lingfeng Wang submitted Mechanical Keyboard for review ago

Lingfeng Wang Lingfeng Wang added to the journal ago

Rendered CAD

I rendered the CAD (to make the banner look pretty)
Nothing else was changed, which is why this took 0.1 hours. As for the keyboard, it is still being worked on.
image

alexren alexren ⚡🚀 requested changes for Mechanical Keyboard ago

Hey! I'm returning this as you're missing a LOT of things! you're missing a proper README, PCB files, etc. I would go over the blueprint requirements again and also ask in #blueprint for help!

Lingfeng Wang Lingfeng Wang submitted Mechanical Keyboard for review ago

Lingfeng Wang Lingfeng Wang added to the journal ago

Updated PCB

I had to move all the holes on the pcb to the bottom.
image
This took a lot less time than I expected, and this was actually pretty easy. After some CAD imports, I was done.

Lingfeng Wang Lingfeng Wang added to the journal ago

CAD Case

While doing the CAD, I realised that a lot of the mounting holes were actually misplaced.
image
So, I had to go back to kicad and fix those.

Once those were fixed, I made the case of the keyboard.
image
It took quite a while to get all the parts together, and I had to try a couple different sizes.

So after looking at some keyboards online, I noticed that they had the leds under the keycap.
image

Looking at most keycaps, such as the one in the CAD, they do have a clear part there. That made me realise I needed to redo the PCB to move all the leds to the bottom, because they used to be on the top... (My switches are actually upside down)
image
image
(the white circle is the led hole)

Well I know what I'll be doing for the next couple hours...

image

Lingfeng Wang Lingfeng Wang added to the journal ago

Starting CAD

To start, I made/found/imported all the CAD I would need.

I imported the pcbs from kicad, and split them up into two files
image
image

I also did a quick CAD of the rp2040 pcb.
image

I also imported a switch CAD, from this link: https://grabcad.com/library/kailh-polia-switch-cherry-mx-compatible-1
image

Lastly, I cadded the USB port of the rp2040.
image

Lingfeng Wang Lingfeng Wang added to the journal ago

PCB Design

To start off, I put all the keys in their positions.
image
Then, I made a drawing of all the LEDS I wanted, and started placing them
image
Getting in the leds was quite a squeeze, and I had to move around a lot of the diodes.
image

Only after hours, did I finish wiring the keys
image
It partly took this long because I was lazy and didn't put the keys in a good position, so I had to basically restart and redo all of the layout again.

When I started doing LEDs, I realised there was genuinely no space. So, I decided the best way to go would be to cut out holes in this pcb, and to stack two on top of each other for LEDS. This should also be pretty easy, so I got ahead to doing that.

image
It may not look pretty, but it does work! (or at least it should...)

The two pcbs are connected with a 3pin header, and I'm just going to hope that everything goes right.

Lingfeng Wang Lingfeng Wang added to the journal ago

PCB Schematic

I finished the schematic for the pcb, but not the actual pcb itself.
image
When doing it, I realised that the rp2040 does not have enough GPIO pins for 67 keys, so I opted to use a waveshare rp2040-tiny, which has 20 GPIO pins.
I currently use 19 :(

Now, I am moving onwards to the pcb design.

Lingfeng Wang Lingfeng Wang added to the journal ago

Design Ideas

Before I started the actual design, I wanted to write out my goals for this project:

I knew that a keyboard requires a case, a pcb, switches, keys, but not much more.
Having found no guidance online, I decided to plan this out step by step.

image

To start, I looked at how keyboards worked. I decided on a 60% keyboard, because it would be the easiest to make.

I wanted my keyboard to be light purple, so I choose switches and keycaps for this.

For the switches, I honestly picked random switches and hopefully they sound good :P
image

And for keycaps, I chose a random purple set.
image

I also wanted to have RGB lights, so I will probably be using SK6812mini (online said it works)
image

It seems that a seeed xiao rp2040 is the most popular choice, so I will be using those too.
image

Having planned out all the parts, it was finally time to plan out the build.

This will be the layout, with 67 keys. hehe.

image

  1. I will follow the HackPad tutorial for the pcb
  2. I will figure out how to CAD the case on my own...

Lingfeng Wang Lingfeng Wang started Mechanical Keyboard ago

11/29/2025 7 PM - Design Ideas

Before I started the actual design, I wanted to write out my goals for this project:

I knew that a keyboard requires a case, a pcb, switches, keys, but not much more.
Having found no guidance online, I decided to plan this out step by step.

image

To start, I looked at how keyboards worked. I decided on a 60% keyboard, because it would be the easiest to make.

I wanted my keyboard to be light purple, so I choose switches and keycaps for this.

For the switches, I honestly picked random switches and hopefully they sound good :P
image

And for keycaps, I chose a random purple set.
image

I also wanted to have RGB lights, so I will probably be using SK6812mini (online said it works)
image

It seems that a seeed xiao rp2040 is the most popular choice, so I will be using those too.
image

Having planned out all the parts, it was finally time to plan out the build.

This will be the layout, with 67 keys. hehe.

image

  1. I will follow the HackPad tutorial for the pcb
  2. I will figure out how to CAD the case on my own...

11/29/2025 10 PM - PCB Schematic

I finished the schematic for the pcb, but not the actual pcb itself.
image
When doing it, I realised that the rp2040 does not have enough GPIO pins for 67 keys, so I opted to use a waveshare rp2040-tiny, which has 20 GPIO pins.
I currently use 19 :(

Now, I am moving onwards to the pcb design.

11/30/2025 8:21 PM - PCB Design

To start off, I put all the keys in their positions.
image
Then, I made a drawing of all the LEDS I wanted, and started placing them
image
Getting in the leds was quite a squeeze, and I had to move around a lot of the diodes.
image

Only after hours, did I finish wiring the keys
image
It partly took this long because I was lazy and didn't put the keys in a good position, so I had to basically restart and redo all of the layout again.

When I started doing LEDs, I realised there was genuinely no space. So, I decided the best way to go would be to cut out holes in this pcb, and to stack two on top of each other for LEDS. This should also be pretty easy, so I got ahead to doing that.

image
It may not look pretty, but it does work! (or at least it should...)

The two pcbs are connected with a 3pin header, and I'm just going to hope that everything goes right.

11/30/2025 8:30 PM - Starting CAD

To start, I made/found/imported all the CAD I would need.

I imported the pcbs from kicad, and split them up into two files
image
image

I also did a quick CAD of the rp2040 pcb.
image

I also imported a switch CAD, from this link: https://grabcad.com/library/kailh-polia-switch-cherry-mx-compatible-1
image

Lastly, I cadded the USB port of the rp2040.
image

12/1/2025 7 AM - CAD Case

While doing the CAD, I realised that a lot of the mounting holes were actually misplaced.
image
So, I had to go back to kicad and fix those.

Once those were fixed, I made the case of the keyboard.
image
It took quite a while to get all the parts together, and I had to try a couple different sizes.

So after looking at some keyboards online, I noticed that they had the leds under the keycap.
image

Looking at most keycaps, such as the one in the CAD, they do have a clear part there. That made me realise I needed to redo the PCB to move all the leds to the bottom, because they used to be on the top... (My switches are actually upside down)
image
image
(the white circle is the led hole)

Well I know what I'll be doing for the next couple hours...

image

12/1/2025 9 AM - Updated PCB

I had to move all the holes on the pcb to the bottom.
image
This took a lot less time than I expected, and this was actually pretty easy. After some CAD imports, I was done.

12/1/2025 7 PM - Rendered CAD

I rendered the CAD (to make the banner look pretty)
Nothing else was changed, which is why this took 0.1 hours. As for the keyboard, it is still being worked on.
image

12/4/2025 2 PM - LED rework

To try to put everything on one pcb, I decided to mount the leds upside down, like this
image

I had to make a custom footprint, because kicad did not have one previously.

image
image

Next, I need to redo the matrix to make wiring simpler, switch to a rp2040.

12/4/2025 9 PM - Rework Part 1

I started redoing the pcb, with a different matrix and different chip.

image

I chose to replace this with an elitepi, because it has usb-C, 25 GPIO pins, and has a small form factor that fits on my board.
I also moved it to the back so I can plug directly into the board instead of having an extension cable.

image

The CAD has leds in the wrong spot other than the green one, because I made a couple edits to the footprint.

image

12/5/2025 - Finished PCB

I was finally able to finish the PCB today!

image

I also fixed the LEDs, so they go where they should be now.

image

Next, I need to fix the cad for my new pcb, and I should be good to go. I also updated my BOM.

12/6/2025 5 PM - Finished PCB V2

I finished the new PCB, with a pro micro rather than an elite-pi.

image

I wanted to use an elite-pi rp2040 as the controller, but I could not find any online without expensive shipping, so I had to switch to the rp2040 pro micro, because it also has enough pins.

image
image

The pro micro will actually be underneath the pcb, but with the same orientation.

12/6/2025 10 PM - Added Extra Key

Looking at some 60% keyboards, I realised that I needed an extra key in order to make it fit with my keycap set.

image

I added the key, and did some rerouting.

image

12/7/2025 - Finished V2 of the CAD

I was able to finish the new cad, with the new pcb, stabilizers, and a new pcb mounting method.

image

image

Previously, I had the pcb bolted into the case, but now I just have it slide in, and the top and bottom go together to clamp on it.

I'm still not sure how to clamp the two sides together, but that can come later after I have finished making sure everything works IRL.

image

12/26/2025 - Wrote KMK Code

I was able to put my keyboard layout into the KMK code.

image

The LED currently is a very simple controller that just sets it all of them to a light cyan. This will be expanded on once tested.

1/23/2026 9:15 PM - Wrong pcb layout

Turns out I sent jlcpcb the wrong pcb layout. Two top keys were misaligned, and I was missing a key on the bottom row. So I had to cut out the pcb and sand and dremel and drill and a bunch of whatnot to fix this.

image

Terrible experience, 0/10, probably got cancer, do not suggest you try this. Just buy a new pcb it is NOT WORTH IT.

image
I used superglue to keep the "pcb" in place

1/23/2026 9:17 PM - Soldered LEDS, diodes, switches

I was able to mount all the components.
image
However, since the pcb was cut, I need to add wires on top to make extra traces...
Mounting the components wasn't that hard, and I have quite a lot of experience from the hackpad.

1/23/2026 9:21 PM - This project is ragebait

I was able to connect all the traces (not really but I will explain later)
image
Should've just bought a new board, this was NOT worth the time.
I also thought I broke my pro micro, so I had to desolder it. I was able to test my leds with an arduino mega, which looked fine.

image

However, inspection showed that two of my neopixels were soldered completely wrong, so I had to remove them and redo it.

image
The input is tied to the input of the previous led instead of the output.

But this broke the rest of the leds, so I'm gonna take a break from this godforsaken project

1/23/2026 9:23 PM - Fixed? pro micro

I reflowed the pro micro and it magically fixed itself.
I almost broke it, by having shaky hands that knocked off a couple components. Luckily, I was able to push them back into place, albeit a bit out of place.

Well the pro micro works fine, and still turns on the neopixels!

I got flux on my hot plate, but at least the pro micro works...

image

1/26/2026 1:08 AM - Fixed pcb!!!

I finally finished soldering the pcb. I added a layer of electrical tape to keep everything together, then added some masking tape over to make it sound better. I got a basic program to run, making all the LEDs the same color but the keyboard doesn’t keyboard yet.IMG_1119

1/26/2026 1:13 AM - Keyboard works now

I spent a long time mapping individual keys to their function, and the LEDs to each key. This was done mostly trial and error, since the LEDs were not really placed in order.(oops!) after it was done, I wrote a simple script to make the LEDs light up in a wave after a key was pressed. However, due to my pcb issues, the LEDs would flicker a lot. I tried adding caps between 5v and gnd on a couple LEDs and an electrolytic cap on the rp2040, but it didn’t really help.
IMG_1123

After adding a bit of foam underneath, the keyboard sounds quite nice, and I am quite proud of it.

1/26/2026 11 AM - Function keys

Since my keyboard doesn’t have the 6th row for function keys, I had to make use of the fn key. When pressed, it would make the top row into the f1,2,3 keys. And to tell me it was activated, the top row would turn white. Similarly for caps lock, the led underneath that key would change to white whenever it was on. Since my keyboard LEDs still flicker too much and I honestly don’t care enough to fix it for the 15th time, I decided to remove the wave pattern and just have it a solid color. It still looks nice, and it isn’t like I am looking at my keyboard when I type anyways.
IMG_1124

1/26/2026 12:15 PM - Perma ESC Function

When playing games, I noticed that I needed the esc key a lot. So I made it that if you double press fn, it will lock the tilda key to escape, so you don't need to press the keybind every time.
image

1/26/2026 12:25 PM - bad case :(

I decided to assemble the case. unluckily, the cad was dimensioned wrong, so it did not fully fit. I ended up with gluing some paper over the seams so it looks alright, as I wait for the new case to print. The keyboard is fully functional, and it sounds quite nice too.IMG_1126