GOLEM keyboard project

Build log

Building the S.Torm46 aka Steel Tormentor

How to build a handwired keyboard from scratch

After eviscerating the inglorious Cardboard Tormentor, I’m glad to introduce its new incarnation: the Steel Tormentor. Start the theme song of this project and lets see how the S.Torm46 was done.

Here is what we are gonna make: my handwired split (but not separate) keyboard. Something like the Atreus, Signum or NEC M-type.

Pic: Layout of the S.Torm46

First step is starting the S.Torm46 theme song:https://www.youtube.com/watch?v=1Rce-Y6LKVo&list=RD1Rce-Y6LKVo&index=1

This keyboard layout was designed around my workplace/stool/hands/fingers aaand for Hungarian (+8 vowels). It probably won’t fit your needs, but the concepts, workflow and the mistakes I've done might help with your own project.


A lot of time and effort was taken to design this layout in its current form. After some thinkering and being exposed to r/mk for a while, it was clear that a good keyboard has to be symmetric, split, angled, vertically staggered (according to one's unique finger lengths) and equipped with a thumb cluster.

(And there are some other criterias - like 3D plate, maybe separated halfs - for what I'm not prepared yet.)

Starting a year ago with modifying the Corne plate, I produced a bunch of layouts in KLE and plate builder. Because designing split layouts is not the strenght of these tools, once I was confortable with some basic distances (19.05 mm grid, 14x14 mm cutout) I moved to Inkscape.

I have printed experimental layouts in 1:1 to test if the staggering may work and get the feel of them.

Pic: Layout printed for testing

Cardboard prototyping turned out quite useful. I used the Cardboard Tormentor for months before deciding on an even more aggressive pinky cluster and angle.

Pic: Cardboard prototypes

The final plate has an angle of 28 degrees between the halfs - everything tested on printed layouts and cardboard mockups.

Pic: Layout of the S.Torm46


BOM / Buying stuff

Located in Europe, I’ve pretty much ordered everything from aliexpress, Bangood, KBDfans. For lasercutting I looked for local manufacturers. The list of parts and materials used for this build:

3 mm acrylic plate+bottom 16$ - wasted. (I may build another one with this later.)

1.5 mm steel plate 9$ cut locally

switches 46 Gateron Blacks from Banggood 70/18$ (this was a bad choice, it turned out tactile feedback really helps me while typing)

hot-swap sockets

diodes 0.25$ 1$/200 from ali

Pro Micro 2.8$ from ali

Blank DSA keycaps 60/9$ (the custom layout leaves no chance for a sculpted keyset)

wire 28 AWG 10m - from ali - enought for plenty of boards

solder wire 0.6 mm noname 6$/100g - from a local store - enough for years for me


Finding local manufacturers (3D printing, acrylic laser cutting, steel laser cutting, sandblasting, painting etc.) can be tedious in a small town or rural areas, but you can get the same cut or service for a fraction of money compared to Ponoko or Lasergist/boost.

Acrylic plate. "Wait. What?! Aren't we builting the STEEL Tormentor?" "Hold on a minute."

Pic: Acrylic plate


If you don’t know what's this part about, read the keyboard matrix guide for details. In brief, it’s a trick to handle more switches than the number of pins on your microcontroller. To help visualizing the matrix, I used kbfirmware.com while building the cardboard prototype. I’ve made two matrix designs. An easy and straightforward version and a second, more difficult one to save on pins. I decided to go the easy way. Halfway through wiring I realized I’m doing the difficult one...

Pic: Storm keyboard matrix

This time I simply turned the cardboard prototype on its back and copied the wiring. (Because of the hot-swap sockets I could have reused the complete wiring, but had to desolder on a lot of places because of the increased angle and staggering. It was an ugly soldering job anyway. Instead I decided to make a new and cleaner wiring.)


This is a shot with all the tools I used during this build.

Pic: Tools used

However, you should manage to do everything with a soldering iron, wire cutter, tweezer, exacto knife and a screwdriver only.

Pic: Tools to use


You can check with a multimeter if the switches work before installing them. I've done this even though I'll be able to swap them easily thanks to the hot-swap sockets.

I’ve put in the switches which fitted quite loosely. I’ve put the hot-swap sockets on the contacts and screwed in the stand-offs. These simple plastic stand-offs are cheap but look cool IMO:

Pic: Sockets and stand-offs put on

Soldering. For beginners: 28 AWG single core wire from aliexpress; the only (noname) solder wire the hypermarket I usually go to sells; soldering iron used at 330-350 C. (Don't experiment with cheap solder wire from China, they are a disaster.)

Columns. I, for some reason, started with the columns. Note to myself: don't do this next time, start with the diodes and rows, especially if you use hot-swap sockets.

Anyway, this part sucks. Preparing the wires is tedious if you don’t want to burn the insulation with the soldering iron. I've cut the 28 AWG red wire to size with a wire cutter (1.7$ ali), then used a wire stripper (11$ ali) and exacto knife (1$ ali) to make the gaps in the insulation.

Pic: Soldering the columns

Diodes & rows

I ordered the standard 1N4148 trough hole diodes used by most people. You get 200 of these for 1$ from ali which is enough to build four boards like this.

Pic: 1N4148 diodes

I started with bending the diodes to make life easier during soldering. You can do this simply on your desk.

Pic: Bending the diodes

But there was a woodworking square in the heap of junk on my desk, which has proved to be the perfect tool for this job.

Pic: Bending the diodes 2

I've cut the legs to size and arranged them nicely. Picking them up with a tweezer is quick and easy this way. Soldering the diodes went very fast with this preparation. (You can save the legs for later use if you want to socket the controller.)

Pic: Diode legs cut to size

Diode direction. I went with column to row direction. (The black ring should point always downwards in this case.) It works the other way too until you are consistent with the direction. (You have to change the direction in QMK’s config.h file.)

Pic: Diode direction

Soldering the rows

Generally, you can solder the diode legs together to form the rows - no need for wires. With my aggressive staggering however, I had to bridge the gaps in some places and between the two halves.

Pic: Soldering the rows

Plate change

The acrylic plate looked cool and I was happy with it until I started wiring. Kailh Box Jades just fell out dispite the cutouts were slightly smaller than 14 mm: there was no room for the switches to grab into with the 3 mm thick acrylic. Gateron Blacks fitted better, but the tension of wiring kept pushing them out. Pressing one switch popped out a neighbouring one. It turned out an acrylic plate is not for me if I want to keep the board hot-swappable. The switches fall out without glueing them in. I decided to look for a steel plate.

Steel plate

Starting with online services: Lasergist is out. Their max cutting width is 300 mm, I need 312 mm. Laserboost' calculator gave me an offer of 37$(+8$ shipping) for the unfinished stainless steel version. I was ready to pay, but decided to google “steel laser cutting” in my hometown first. I called the first company and they were kind enough to cut the plate for 9$ only (same dxf, same material).

Pic: Steel plate

The plate looks much nicer than I've anticipated. The bottom is quite ugly, but there's only one small scratch on the top side exposed.

Changing plates

This is the part where the hot-swap sockets came handy. I was able to peal off the whole circuitry in one piece and put back on the steel plate.

Pic: Peel away circuitry

Testing the controller

I use a cheap Pro Micro from aliexpress for less than 3$. You should test the controller before soldering it. Try a simple blink sketch or upload your final firmware and trigger keypresses with shorting two pins (a row and a column pin).

Pic: Testing the Pro Micro

Soldering the controller

Soldering the rows and columns to the controller isn’t my favorite part. In this phase things get quite crowded. Too much wires are in the way, but hey, the finish line is near.

Since the steel plate is conductive, I had to put something between the controller and the plate. I had a piece of cardboard at hand…

I didn’t bother with socketing the Pro Micro. The last nine months spent with the cardboard prototype suggest it’s unnecessary if you don’t abuse your keyboard too much. Honestly, I had to resolder some joints of the matrix after a few months, but there was no problem anywhere near the controller. BTW, in case you need it, desolderint the Pro Micro is easy.

Pic: Soldering to Pro Micro


Encoders and caps still on the way from China, I'll update this part later.

I used to think they are unnecessary on a keyboard (just like LEDs), but recently I collected some ideas on practical use of rotary encoders on a keyboard. This is my first time using these components, and I have high hopes, but it freaks me out at the same time. I’m running out of the 18 easily available pins of the Pro Micro, and will have to solder stuff to the onboard LEDs to utilize two more pins. (A Teensy is on the way if I fuck up the board.) I guess I go with one encoder for now and try wiring the other only after some further research and practice. The second encoder will have only the click function until then. (I incorporate the click functions of both encoders in the matrix - no need for additional pins.)

Pic: Soldering the encoders

Checking for shorts

Before plugging in the Pro Micro, I checked for shorts. The naked wires of the rows (diode legs) and the steel plate made me cautious, but everything seemed to be fine.


I’ve written a separate entry about programming a keyboard, head over to that guide if you are interested. I had to look up my notes from nine months ago. It took some time to get familiar with the process again, but once I knew what to do, it went pretty easily. To sum up: I’ve updated the ports in the config.h, compiled the .hex with the QMK and uploaded it with avrdudess. Much to my surprise, everything worked fine on first try. No errors or warnings.

The Steel Tormentor

The end product in all its glory - without encoders yet.

Pic: The Steel Tormentor in all its glory

The work on the keymap is in progress, I guess it's a lifelong journey. There's a lot of potential in the logical layout yet, but if you are interested in the actual setup, check it here: keymap of S.Torm46.

Thanks for your time. I hope this build log will help you to start your project. Start it now, because building your own keyboard is very rewarding.