As a software engineer, I spend a rather large amount of time coding or at least thinking about code at work. So much in fact, that I'm having some difficulty focusing on personal coding projects in my spare time.
For that reason, I started to realize that doing nothing but software projects might not be a terribly good idea. At best, I would probably get tired of all the software I would have to manage nad at worst I would likely burn myself out. To that end, I decided it was about time to do a real hardware project instead and finally get at least moderately proficient with a soldering iron.
But what kind of project should I do then?
Personally, I've been rather fond of custom mechanical keyboards and with recent microprocessor kits such as the Teensy, building my own keyboard from a kit seemed like a good starting point. Even before this, I had already browsed the Massdrop keyboard section for quite a while, hovering with my cursor over the buy button for a number of products but never actually buying anything. That changed with the Ergodox Infinity Keyboard Kit, however.
This keyboard felt rather unique and the fact that I could customize it rather heavily truly appealed to me. Thus, I decided this was an excellent hardware project to begin with.
Although, even after ordering it, it took around 3 months before the kit arrived. But what can I say? All good things come to he who waits after wall. As for building it, it wasn't particularly difficult. In fact, the instructions were quite easy to follow, although they were a bit outdated for this revision of the kit. All-in-all, it took me around two evenings to put it all together.
That said, I did have some minor issues with the soldering during my build. Curiously enough though, I ran out of solder the first evening so I bought some more at local hardware store for the second session and the fresh solder was much easier to use than the old one, making the final stretch of soldering a breeze! I guess when it all comes around, old solder really shouldn't be used without additional flux.
These were only difficulties that I encountered. I still think that anyone with a minimal amount of technical proficiency would be able to finish building this kit without any major concerns.
The overall quality of the keyboard is good and I'm quite satisfied with it but there are a few negative points that I should note.
The quality of the main Ergodox PCB and acrylic enclosures are great. It is however noticable that the relatively new full-hand add-on hasn't received the same amount of attention. For starters, looking at the reference images for the kit, it seems that each hand is missing two holes for screws that should hold the various bottom plates together. Personally, I think that this was an intentional omission since those screws would likely itch against your palms but it is obviously a minor surprise nonetheless.
A bit more concerning is that the thickness of the add-on-pieces are inconsistent, leaving a noticable gap between the main unit and the add-on. For the left hand, this is not really noticable but for the right one the gap is big enough to prevent the screws from holding the top-most piece down, making it jiggle back and forth as I move my hand. It is possible to clamp it down properly by filing down one of the spacers a few millimeters but the height-gap to the main unit is a bit harder to fix.
Don't get me wrong, these issues are relatively minor and not something to throw a fit over but that doesn't mean they should be omitted either. In the end, I believe I will eventually make a separate (and more personal) hardwood enclosure for the board and completely replace the acrylic enclosures, thus side-stepping these issues entirely. That is however a completely different project for a different time.
After playing with the keyboard for a while, I came to the realization that it will take me a significant amount of time to adjust to this new keyboard. But, in the end I think it will be worth it. I've been using a keyboard so long without actually learning to touch type properly that it's getting a little silly but after using this keyboard for just a while, I noticed I couldn't cheat in quite the same way that I had on a regular keyboard. So while I will probably lose quite some efficiency in the short term, I think that this will eventually re-train my muscle-memory in such a way that I should be able to type even better on any keyboard.
Looking at the keyboard from the software perspective however, there seems to be a quite a bit of work left. The main tool used to program the keyboard is the so called Configurator. While this works nicely for many use cases, it is a bit limited for a keyboard such as this and personally, I'm not very fond of this kind of web-based tools. Also, it is worth pointing out that the configurator only really work with the US keyboard layout currently.
Right now, the most flexible solution for configuring the keyboard is to use the Keyboard Layout Language (KLL) that the developers of this kit created. With this, it's possible change a much larger set of features, such as changing the logo-displays on the various layers or adding mouse-controls to the keys.
As an example, below is an excerpt from one of the kll files that configures the number keys to behave as function keys:
Name = Xaldew Function Keys; Version = 0.1; Author = "Xaldew (Gustaf Waldemarson) 2016"; KLL = 0.3c; Date = 2016-11-11; # Top Row - Left U"1" : U"F1"; U"2" : U"F2"; U"3" : U"F3"; U"4" : U"F4"; U"5" : U"F5"; U"Esc" : U"F11"; # Top Row - Right U"Function6" : U"F12"; U"6" : U"F6"; U"7" : U"F7"; U"8" : U"F8"; U"9" : U"F9"; U"0" : U"F10";
The whole kll build process is a bit complicated however. My recommendation would be to head over to the kiibohd Controller project and read up on the various READMEs and wiki-pages. As a quick-start, the ergodox.bash script will automatically build the default firmware from a set of KLL files and is an excellent starting point for further customization.
Throughout my testing, I've also noticed some minor problems that seems to be software bugs:
Every time I boot my desktop, the keyboard will work but the modifier keys, i.e., ctrl, shift etc, on the off-hand (i.e., the daisy-chained) keyboard will be unresponsive. Curiously though, by using ~xev~ I can see that the modifier-key is actually sent from the keyboard as expected but any other key that is pressed remain un-modified.
I also have a similar issue with the mouse-event keys; when the bound to keys on the daisy-chained keyboard, these keys will send a single mouse event without repetition, despite being pressed down. In contrast, the non-daisy-chained keyboard will properly repeat the mouse events when the keys are held down.
I'll spend some time looking into these things. There seems to be a few threads on the Input.club forum regarding these issues but there doesn't seem to be any resolution for the time being. My recommendation would be to keep an eye on the bug-tracker on Github rather than on the forums, since the developers seem to be more active there.