GOLEM keyboard project

Build log

Building the S.Torm46 aka Steel Tormentor

After eviscerating the inglorious Cardboard Tormentor, I’m glad to introduce its new incarnation: the Steel Tormentor. Let's see how to build a handwired keyboard from scratch.

Here is what we are gonna make: Pic: Layout of the S.Torm46

This layout was designed for my workplace/hands/fingers aaand for Hungarian (+9 vowels). It probably won’t fit your needs, but the concepts and workflow might help with your own project.

First step is to start the S.Torm46 theme song.

Design

During the last year, 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. (There are other criteria - like 3D plate, maybe with wireless separated halfs - but this was my first design and I was not ready for advanced stuff yet.)

Starting a year ago with modifying the Corne plate, I produced a bunch of layouts in KLE and plate builder. Because these tools are not optimal for designing split layouts, once I was confortable with some basic measures (19.05 mm grid, 14x14 mm cutout) I moved to Inkscape (where you can easily mirror anything).

I have simply printed experimental layouts in 1:1 on a sheet of paper to quickly "test" if the staggering may work and get the feel of them. Pic: Layout printed for testing

Cardboard prototyping turned out quite useful too. 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 DOWNLOAD

BOM / Buying stuff

Your location pretty much limits your sources for buying parts because of shipping costs. Living in Eastern Europe, I’ve ordered almost everything from Aliexpress (KBDfans, KPrepublic, IDOBAO) and Banggood. For lasercutting I looked for local manufacturers.

The list of parts and materials used for this build:

3 mm acrylic plate+bottom16$Wasted. (I may build another one with this later.)
1.5 mm steel plate9$cut locally
46 Gateron Black switches12$18$/70 from Banggood. It has turned out I need some tactile feedback and I changed these to Kailh Box Whites later.
hot-swap sockets0.1*46+6.8$ shipping!!!
1N4148 diodes0.25$1$/200 from ali
Pro Micro2.6$from ali
Blank DSA keycaps7$9$/60 (the custom layout leaves no chance for a sculpted keyset)
M2 plastic stand-offs and screws1.3$6.4$/250. (D package when ordering.)
rotary encoder0.7$1.7$/5
encoder caps3.8$2 pcs
rubber feets0.24$6$/100 - Wasted. I don't use these.
black wire 28 AWG0.4$3$/10m - from ali - enought for plenty of boards
red wire 28 AWG0.5$3$/10m - from ali - ditto
solder wire 0.8 mm noname?6$/100g - from a local store - enough for years for me

Matrix

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. Pic: Storm keyboard matrix

To spare on pins, I had to be creative with the columns. Eventually, I came up with two matrix designs. A somewhat easier and more straightforward version and a second, more difficult one to save on additional pins. I decided to go the easy way. Halfway through wiring the cardboard prototype I realized I’m doing the difficult one...

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

Tools

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

Plate

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 building the _STEEL_ Tormentor?" "Hold on a minute." Pic: Acrylic plate

Wiring

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 I like them, especially the screwheads.)

Pic: Sockets and stand-offs put on

Soldering

Some details for beginners: 26-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. (And forget about experimenting with cheap solder wire from China, I've gone through this, 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, 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's 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 looked much nicer than I've anticipated. The bottom is quite ugly, but there's only one small scratch on the top side exposed.

(I forgot to take a shot from the plate before assembling - this one was made much later after I've changed to Kailh Box Whites.)

Changing plates

This is the part where the hot-swap sockets came handy. I was able to peal off the entire circuitry in one piece and put it 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).

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 needed a piece of cardboard and had the remains of my first macropad prototype 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, desoldering a handwired Pro Micro is easy. (Desoldering one with a pin row is another case.)

Pic: Soldering to Pro Micro

Encoders

I still think encoders are unnecessary on a good keyboard (similar to LEDs), but I wanted to try some ideas on the practical use of rotary encoders which I collected recently.

This was my first time using these components, and I had high hopes, but it freaked me out at the same time. I was running out of the 18 easily available pins of the Pro Micro, and it seemed I have to solder stuff to the onboard LEDs to utilize two more pins. (A Teensy was on the way, but I didn't want to wait.) I went with one encoder first. For this one there were enough pins on the Pro Micro. Wiring and programming went like a breeze.

Wiring the other one required some research on how to utilize two additional pins of the Pro Micro normally used by the onboard LEDs indicating the RX/TX communication. (I incorporated the click function of both encoders in the matrix, but I still needed one additional pin.) Removing the smd resistor and soldering a thin wire to the pad went surprisingly easily.

And there's one more pin left (the other LED) if I want backlighting later.

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.

Programming

During this step 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 msys/QMK and uploaded it with avrdudess. Much to my surprise, everything worked fine on the first try. No errors or a single warning either.

I’ve written a separate entry about flashing the Pro Micro, head over to that guide if you need more details.

Keymap

The keymap is a lifelong journey, I guess. 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.

The Steel Tormentor

The end product in all its glory. For this shot I had to desacrate an electric guitar. Pic: The Steel Tormentor in all its glory

Conclusions

Layout: The layout is quite good for my typing habit. There are some buttons which I would get rid of if I typed in English exclusively.

Switches: I need some tactile feedback when typing. With linears a natural reaction from me was bottoming out to get this feedback, but sometimes I was still insecure about keypresses registering. After a few weeks I replaced the Gateron blacks with Kailh Box whites.

Encoders: Afer using the encoders for some time now I'm not sure they have any benefit on an ergonomic board. This process was fun, but if I'll ever do it again, I'll place them nearer, below my palm. Right now they work fine and look cool, but I have to raise my hand and move my wrist to reach them, and that pretty much kills all potential benefit of an encoder on an ergonomic board built for minimal finger and wrist movement. Scrolling is much better with a mouse where your hand rests on the mouse/desk. While scrolling with the encoder I have to hover my hand over the board. The other functions I use quite rarely.

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.