Published September 2020
When you're working in IT the keyboard is the thing you spend most of your time with. Having one of your very own, that you build and customized for your personal needs, feels natural. Additionally it's a cool project involving electronics, programming and CAD design and makes for a great occupation during Covid times (which, to be brutally honest, was the main motivation).
Who knows how many keyboards are out there?! A BIG number... So which type do you want to go for? A coworker raised the question on our random Slack channel and mentioned a couple of ergonomic keyboards, amongst them there was the Dactyl-Manuform. It's an open-source project of an ergonomic split keyboard. I liked the design and the open source approach and read good things about it. So I decided to go for that. In retrospect that decision was taken a bit over eagerly, I should have tested it out further before settling on one, because let me assure you that ergonomic split keyboards are a BIG change compared to what you're used to.
But let's have a look at how it's built and then look at the conclusion and lessons learned at the end.
Do your research. Make sure you know what type of keyboard you feel comfortable with and what is important to you.
The next thing you need to find out is what types of keys (switches) you want to use. There are a couple of brands and all have different types of keys, some harder, some softer to the touch, some with mechanical feedback, some without, some "clicky" (noisy), some not... You won't know what feels good until you tried. I bought a key tester and an additional set of trial keys to test them. Not an easy task, I changed my mind a couple of times over in the process and had other people try it all out. In the end I chose the Kailh Purple Switches. When in doubt I could also recommend the Cherry MX Red, which are always a safe choice (but also way too mainstream ;).
The Dactyl-Manuform has open source OpenSCAD files that allow you to adapt the keyboard to your liking. It makes it easy for you to change the ergonomic parameters, such as curvature and height, but also allows you to customize your build to your liking. Me I knew I wanted to add multimedia control keys, a volume knob and a scroll knob. I had to read a bit about Clojure, but the learning is pretty straight forward and you can basically get the job done by looking at the existing code and copy-pasting plus adapting some parts. Additionally I change the screw inserts and the connectors. Typical 3M screw inserts are pretty hard to find so I changed the insert holes to hexagonal holes which hold M3 nuts. They need to be glued rather than just fitted but I have tons of them and they are more convenient in my opinion. Also RJ9 cables and female plugs are hard to find so I changed those to use TRS mini-jack connectors.
Once you are happy with your CAD files go ahead and print the base of your keyboard. This takes a while, they're relatively big parts for printers to handle. Since they are hollow inside I printed with support, which takes a little extra time as well. For a nicer finish, after printing you can sand down your parts and then paint them. I didn't because I printed multimedia logos on my case and didn't want those to get sanded away.
Clearly the most tricky part of it all (but that might just be me, my soldering skills are mediocre). Basically a keyboard can be considered as a matrix of rows and columns, the switches are the elements in the matrix. Let's say switch "1" is on row 1, column 1, "w" is on row 2, column 2, etc. Pressing a switch will connect a row and column and that's how the microcontroller will know what key was pressed. Additionally diodes are added to every switch so that you can press 2 keys at the same time and it remains a unique detectable combination. All keys need 2 connections, diodes and microcontroller connections, for 64 keys you solder 216 connections, not counting the multimedia and mini-jack connectors. I used strips of copper tape to connect the columns (less soldering) and prototyping board to help connecting the rows. This setup worked well and I ended up with stable connections. Just make sure to isolate the rows from the columns in order not to have ghost typing.
When selecting a microcontroller (in a split keyboard it's easiest to work with 2) make sure you select one on which the Arduino keyboard library can run (32u4 or SAMD micro based boards), I used Sparkun Pro Micros. For the actual programming a lot of the work is already done for you in the great QMK project. The Dactyl-Manuform is already in the library and basically all that remains to do is to program a key matrix that fits your desired layout. Just for fun you cxn trick your brxin xnd progrxm the "x" key on the "a" switch xnd then your teats look like this. Basically you have complete freedom of how your layout will look like, you'll just have to retrain your fingers to be as quick on the new layout as you were on a traditional QWERTY or QWERTZ in my case.