Building the S.Torm46 aka Steel Tormentor
Here is what we are gonna make: (This is from 2019. More up-to-date pics at the end of the blog entry.)
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.
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:
- vertically staggered (according to one's unique finger lengths),
- equipped with a thumb cluster, and
- featuring a unique logical layout, tailored to ones personal typing habits.
(There are other criteria - like 3D plate, maybe with wireless separated halves - but this was my first design and I was not ready for advanced stuff yet.)
Starting in 2018 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).
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.
The final plate has an angle of 28 degrees between the halves - everything tested on printed layouts and cardboard mockups. DOWNLOAD
BOM / Buying stuff
Your location pretty much defines 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.
Here is the list of parts and materials used for this build. (Reading this in 2020, the weak dollar make some of these prices look a bargain.)
|3 mm acrylic plate+bottom||16$||Wasted. (I may build another one with this later.)|
|1.5 mm steel plate||9$||cut locally|
|46 Gateron Black switches||12$||18$/70 from Banggood. It has turned out I need some tactile feedback and I changed to Kailh Box Whites later.|
|hot-swap sockets||0.1*46||+6.8$ shipping!!!|
|1N4148 diodes||0.25$||1$/200 from ali|
|Pro Micro||2.6$||from ali|
|Blank DSA keycaps||7$||9$/60 (the custom layout leaves no chance for a sculpted keyset)|
|M2 plastic stand-offs and screws||1.3$||6.4$/250. (D package when ordering.)|
|encoder caps||3.8$||2 pcs|
|rubber feets||0.24$||6$/100 - Wasted. I don't use these.|
|black wire 28 AWG||0.4$||3$/10m - from ali - enought for plenty of boards|
|red wire 28 AWG||0.5$||3$/10m - from ali - ditto|
|solder wire 0.8 mm noname||?||6$/100g - from a local store - enough for years for me|
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 I/O pins on your microcontroller.
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 would have 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.)
PlateFinding 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.
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.)
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.)
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.
Diodes & rows
I ordered the standard 1N4148 trough hole diodes used by most people. You get 200 of these for 1$ from Aliexpress which is enough to build four boards like this.
I started with bending the diodes to make life easier during soldering. You can do this simply on your desk...
...but there was a woodworking square in the heap of junk, which has proved to be the perfect tool for this job.
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.)
I went with column to row direction. (The black ring should point always downwards in this case.) It works the other way too if you are consistent with the direction. (You have to change the direction in QMK’s config.h file.)
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.
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.
Starting with online services: Lasergist is out. Their max cutting width (at that time) was 300 mm, I needed 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).
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.)
This is the part where the hot-swap sockets came in handy. I was able to peal off the entire circuitry in one piece and put it back on the steel plate.
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.)
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.
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.
During this step I had to look up my notes from nine months earlier. 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.
The keymap is a lifelong journey, I guess. There's a lot of potential in the logical layout, but if you are interested in the actual setup, check it here: keymap of S.Torm46.
The Steel Tormentor
Layout: The layout is quite good for my typing habits. 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 are rarely used.
Thanks for your time. I hope this build log will help you to start your project. You better start it right now because building your own keyboard is very rewarding.