As a long time computer user and keyboard-shortcut enthusiast, I decided to build my own mechanical keyboard.
QMK is an invaluable open source library for programming a custom keyboard firmware.
Soldering is hard, but rewarding.
I love split keyboards!
Why I love the Keyboard
To me, the keyboard has always felt like the organic input device. When working on the computer I love when I don't have to move my hands. Anything I can do to minimize or eliminate the need to reach for my mouse (or trackpad) is a win. Keyboard shortcuts are one of my obsessions. In fact I learned the most notable keyboard shortcuts even before I knew how to type well. I remember in high school getting in trouble for "cheating" in typing class. The assignment was to type a paragraph 4 time, and my teacher discovered I had copied and pasted the paragraph instead of actually typing it out all 4 times - same typo 4 times is pretty telling. In my defense I use copy/paste quite often as a professional programmer. In my teacher's defense, copy/paste probably is cheating when the objective is to get better at typing. Since then I've learned a good many operations can be performed without ever moving my hands away from the keyboard.
Mechanical Keyboards ⌨️
Continue at your own risk
Sometime in 2018 I decided I wanted to get a mechanical keyboard for my work setup. I'm not sure what sparked the interest, but it became an obsession. I joined reddit communities r/MechanicalKeyboards and r/mechmarket and started doing some research. And by comparison maybe obsession is not the correct word for my level of enthusiasm. They are great communities for keyboard enthusiasts and it can be easy to be influenced to take it a step too far. My interest was quickly drawn to split keyboards and ErgoDox seemed like the de-facto, but wow is it pricey.
Several of my personal tendencies led to my next decision. First, I humbly say that I am a very practical person financially (usually). I also really enjoy learning new things. Those factors in addition to my love for programming and the appeal of having something completely unique led me to conclude I should build a keyboard. This of course means I need to learn how to solder, which I had never done before in my life. I'll link some learning resources at the bottom of this article. Here's a quick summary of the parts I would need to build a keyboard for myself (most of these terms I had never heard prior to this).
- A PCB (Printed Circuit Board)
- Key switches
- Key caps
QMK (Quantum Mechanical Keyboard Firmware) is an amazing open source tool for programming keyboard firmware. It didn't require much research to realize that if I wanted to create a completely custom-programmable keyboard, I wanted to find a PCB that is QMK compatible. I can't say enough good things about QMK. It should be the first thing anyone considers when building a custom keyboard. Hundreds of keyboard creators have contributed a starting point for flashing firmware to they keyboard PCBs. The toolkit is fairly easy even for a hardware beginner to work with. There is an extensive amount of documentation on how to do things. And the ability to customize the keyboard firmware seems endless. This was a easily my favorite part of building my own keyboard.
Proudly presented to you by a complete hardware novice
After much research and self-teaching - and some help from a friend in electrical engineering - I selected a configuration and ordered parts. To my surprise the majority of what one orders for this kind of project is not shipped from domestic warehouses. It took a good month or two to receive everything I had ordered from Canada and China. I knew almost nothing about soldering and building micro-electronic hardware when I started this project and I'm proud to say that after some trial and error and shaky hands and lots of stray solder I am now at beginner-level. It was lots of fun, and I did ultimately end up with a keyboard I am very proud of. The split configuration I ended up with is called Gergo and is developed by a one-man-shop in Canada called gboards.ca. He provided great communication and I've been really happy with the hardware he provided. His designs are a little progressive, but I highly recommend his work. This is my completed split 50% keyboard:
And my current QMK keymap is here: https://github.com/lsparlin/qmk_firmware/blob/lsparlin-gergo/keyboards/gergo/keymaps/lsparlin/keymap.c
The following resources were extremely useful to me during this process
SparkFun - https://learn.sparkfun.com/tutorials/how-to-solder-through-hole-soldering/all
EEVBlog on YouTube - https://www.youtube.com/watch?v=fYz5nIHH0iY
An Excellent introduction to QMK features - https://blog.splitkb.com/introduction-to-qmk-features
QMK Keycodes - https://github.com/qmk/qmk_firmware/blob/master/docs/keycodes.md
KBDFans is a great place to buy keyboard parts - https://kbdfans.com