Building My Own Mechanical Keyboard

(Thai version 🇹🇭 : ทำ Mechanical Keyboard ใช้เอง)

Update: Part 2 is here: My Custom Mechanical Keyboard 1.1
Update: Part 3 is also here: Tweaking My Custom Mechanical Keyboard

I have been using a mechanical keyboard for the last 4 months. It is (or was) my very first mechanical keyboard ever. I didn’t know much about this type of keyboard back then though but have heard so much about all the good things about it. I got SteelSeries Apex M500 in the end. It worked pretty well, but I still had some issues with the M500:

  • It is a full size keyboard with all function keys and numpad. I don’t use them. They just take extra space on the desk.
  • It comes with blue LEDs which is pretty cool, but I also don’t use them. So I always turn them off.
  • It comes with Cherry MX Red switches which some keyboard gurus recommend them for gaming over typing. I type a lot and don’t play games. I was curious to see if those tactile switches fits me more.
My first mechanical keyboard: SteelSeries Apex M500
Size comparison: SteelSeries M500, Apple Wireless Keyboard, and Platoo — my cat.

I started looking for another mechanical keyboard that fits me more. I googled for “mechanical keyboards for programming” specifically and found a handful of search results. WASD Keyboards V2 offers keyboards that are very customizable in sizes, switch types, and keycap colors for every single key which I really liked. The Tenkeyless version (87 keys) would be perfect for me. The build quality also looked promising.

What stopped me from getting this keyboard was the price: it would cost me more than $200 including the keyboard and shipping from the US to Thailand (importing tax is not yet included). That was too much to me for a keyboard that I have never seen and tried before.

Finding a right keyboard is not easy. What if I could build one on my own?


Building a mechanical keyboard sounds scary to me since I thought it is very complicated and beyond my ability. The last time (and probably, the only time) I worked with circuit boards and had to solder something was when I was studying Computer Engineering about 8 years ago, long enough for me to forget everything I knew about electronics.

But then I discovered this video on YouTube: Beginner’s Guide : How to Build a 60% Mechanical Keyboard by TaeKeyboards which showed me that building one is not too difficult. The fact that it is fully customizable really convinced me.

The video includes a list of everything I need in order to build a 60% mechanical keyboard. I doubt a bit though about the 60% keyboards: there are no arrow keys which I use a lot for many apps. Usually people set up custom key mappings so any key on the keyboard can be use as arrow keys so this issue can be gone, I hoped.

There are other great videos on how to build a 60% mechanical keyboards on YouTube. It’s better to learn from experiences of different people. It helps to avoid mistakes.

I calculated the cost of everything. The cost would be around $100 which is not cheap to me, but still acceptable. It would cover just enough to get my dream keyboard that is smaller, no LEDs, and with tactile switches.


Getting Parts

I ordered parts from AliExpress, which includes

  • 1 PCB: GH60 Satan
  • 1 Black plastic case
  • 1 Black aluminum plate with Costar stabilizers*
  • 65 Gateron Brown switches — They are like Cherry MX but much cheaper
  • 1 Mini USB cable

All of these cost about $90. Note that I did not buy a set of keycaps with other parts. The reason is because I already ordered keycaps from ebay earlier. I don’t recommend doing this though. You should get all the parts at once so they are delivered at the same time.

I already have soldering iron at home so I didn’t have to buy one. I only had to get a soldering wire which can find it easily at a local shop. I got 1.2mm soldering wire which is pretty thick, but I had no choice: the shop only has this size. I use what I have.

It took about 10 days for those parts from AliExpress to arrive. They arrived before the keycaps from ebay but I decided to build it anyway because I can use keycaps from another keyboard.

After watching a bunch of videos on YouTube and putting everything on the table, it is time to start building.

GH60 Satan PCB, case, plate, switches, and the cable.

Checking the board

The first thing I did was testing the board to see if all keys work. I plugged the board to my computer via USB cable and used a small piece of soldering wire to tap between the holes where the switches will be mounted (2 holes at the bottom of each key). I use the website keyboardtester.com to test all the keys.

This version of GH60 board has almost everything in place. It is slotted to put switches on. It has diodes and resisters pre-soldered on the board. The only thing I have to solder is the switches. 61 of them.


Installing Stabilizers

The next step in the video tutorial is installing stabilizers. Stabilizers help to prevent keys from knocking at the other end for longer keys. This is when I face my first problem: my stabilizers look different than what I have seen in the videos.

In most tutorial I watched/read, people use stabilizers which look like this:

image from: https://www.aliexpress.com/popular/cherry-mx-stabilizer.html

But what I bought look like this below. I see no way to assemble these small parts into the picture above. I was totally at sea.

After starring at those small parts for 5 minutes, I found a video on YouTube (again, from TaeKeyboards) explaining what are the differences between Costar style and Cherry style stabilizers.

I thought “Costar” means stabilizers so I bought them. I was totally wrong: Costar style is just one type of stabilizers. Damn. Shame on me.

I did not want to wait another week to get Cherry style stabilizers so I decided to move on with these Costar style. A video by Matt3o: How to mount Costar Stabilizers showed me exactly how to do it. Stabilizers will be mounted on the plate so I can do this later.


Installing Switches

I put on only some switches at the corners of the plate, then attached them to the PCB. I used PCB-mounted switches so switches have to be all the way in through the plate to the PCB which already has slots for them.

Now it comes to the exciting moment: soldering.

As I mentioned earlier, working with electronics is not my thing. Fortunately I have some leftover parts of circuit boards, diodes, LED lights at home (along with soldering iron). I took some of them and practice soldering before I start with the real board because damaging the board can be expensive.

This practice really helped, at least to gain my confident.

The very first switch I soldered onto the board looked not too bad. But I could not be sure enough so I plugged the cable in and test right away using keyboardtester.com again. It worked! 🌟 🎉

My first soldering in 8 years!
Sorry but Test-Driven-Development doesn’t work here. I test later. 😅

After the first few switches, I got in “the zone” and it was faster to do for each switch. Of course they are not all perfectly soldered, but good enough not to break things and to keep all switches in place.

The switch for space key is upside down because the board was slotted that way. I don’t know why.

Installing Stabilizers (again)

After soldered all switches onto the plate and PCB, the next step is installing Costar stabilizers. It is recommended to lube them so I did that.

Installing Costar stabilizers is not so easy as the parts are pretty small. This is probably why people don’t use them that much compared to the Cherry style. There are 5 keys that need to have stabilizers. I was so thankful that I didn’t have to do this process for every single key.

Putting Keycaps On

The last step is to put keycaps on. I took all keycaps from the M500. Every key fits nicely. I plugged the cable in and test all the keys again. Everything works fine.

This is my first custom mechanical keyboard. 🎉 👯 😇 ⌨

Update: the keycaps from ebay has arrived. Here is how the keyboard looks.

My first custom built keyboard cannot be perfect. One issue I found <del>is with the Costar stabilizers for space key</del>. Update: this seems to be the issue with the space keycap (from the M500), not because of the stabilizers. Sometimes when I press really hard at one side of the space key, the other end is lifted up so I have to push it down. This happens only on purpose though so it’s OK for me. With my normal typing weight, the key doesn’t come off.

I can’t really compare it with my previous keyboard yet since I’ve been using the new one for only a few days. I do notice the differences between Cherry MX red and Gateron Brown switches though. Both are great in my opinion.

My desk at work: custom keyboard, custom headphones stand, and not-so-custom laptop stand.
From the top: not so huge, bulky keyboard anymore
Finally I got the keycaps from Ebay: Black blank PBT keycaps

To finish it off, I customized the keyboard’s firmware to suit me. Flashing the keyboard’s firmware includes setting custom keys bindings was completely confusing to me at first. Dion Munk’s post on his blog explain the process pretty well. I’m using keyboard-layout-editor.com and also TMK Keymap generator to customize the keyboard’s layouts.

GH60 Satan supports up to 8 layers of keyboards. I currently have only 3 layers, containing only keys I use.

Base layout is similar to typical Mac keyboards, except the Caps lock is used as a primary function key. option and command keys on the right are also reserved for function keys.

When I press FN1 and hold, h, j, k l turn to left, down, up, right respectively just like in Vim. I also put in the back tick ` key at where ESC key is on base layer for coding and writing markdown. FN4 works the same way with FN1 except I don’t have to hold the FN key. It toggles between layers.

Press and hold FN2 and I have access to volume control buttons.

FN3 does not have any functionality yet.

That’s pretty much all customizations I have now.

The great thing about this board is that I can re-flash the firmware and keymaps over and over again. I can add more custom functionalities later if I need to.

Another great thing is that the firmware stays at hardware level, meaning I have the exact same settings on every Mac I use with this keyboard without having to reprogram it, or download settings stored in the cloud. This is very convenient.


The whole building process took me 3–4 hours of a Thursday night (excluding customizing the keymaps). Totally worth it! I feel really great to build this keyboard on my own. I have also learned a lot during the way. I’m very happy with the outcome.

The best feeling is, once again I beat my doubts and questions in my mind by just doing it. It’s not perfect, not even close, but at least I did it by myself.

Happy building and happy coding! 🤓


Update: I eventually replaced Costar stabilizers with Cherry style stabilizers.

I bought a set of plate mounted Cherry stabilizers from Aliexpress. The full set costs about $7.5.

First I removed current Costar stabilizers from the plate. Cherry style stabilizers have to go underneath the plate, so I had to de-solder the switches to remove them from the PCB. This step was quite tricky for me and took longer than I expected. I almost broke 1 switch.

After switches were removed, I lubed the new stabilizers and put them onto the plate. They didn’t lock tightly on the plate but enough to not come off when I remove the switch.

My keyboard with new set of stabilizers installed.

The new stabilizers hold keycaps well and it is easier to put in and remove keycaps. For sound-wise, I think they are not much different.