How I Switched to a Mechanical Keyboard

For the past 10+ years I’ve been using MacBooks. When connected to an external display, I would use an external Magic Keyboard from Apple. I never really had any issues with the mac keyboards until I bought a MacBook with a butterfly keyboard in 2019. The keyboard on that MacBook is just terrible. Luckily I mostly use it with an external keyboard.

A couple of months ago some of my work colleagues were talking about mechanical keyboards and I kept thinking about it until I decided that maybe I should get one myself.

There are lots of different keyboards layouts available and it seemed to me that most popular mechanical keyboards are rather small, i.e. no numpad, no function keys, no arrow keys, and sometimes even no numbers row. Since I was used to the MacBook keyboard layout, I wanted something similar and quickly settled on the TKL (ten-key-less) layout. That is a standard layout, but without the numpad.

I also discovered, that there are lots of different types of key switches, one can choose for a keyboard. It was also clear to me, that I wouldn’t be able to find perfect key switches at the very beginning, therefore ideally I should be able to easily swap switches. Luckily there are hotswappable keyboards, which allow to replace switches without any soldering.

So I started looking for a hotswappable TKL keyboard. The first keyboard that I could find was the Keychron K8. It has the right layout, the right switches, supports bluetooth connectivity, works with a Mac, and even has nice fancy RGB LEDs. But I kept looking…

Some other keyboards that I found had have were mentioning QMK support as a feature. It turns out, that you can customize the behavior of the keyboard by modifying its firmware. From then on I knew that whatever keyboard I choose, it has to be programmable.

So, how do I find a hotswap TKL keyboard with QMK support? QMK has a configurator website, where you can select any supported keyboard and see its layout. Clicking throught the seemingly endless list of keyboards was very boring, so I wrote some code:

for FILE in ./public/keymaps/**/*.json; do
	LEN=$(cat $FILE | jq '.layers[0] | length')
	if [[ $LEN == 87 ]]; then
		KEYBOARD=$(cat $FILE | jq -r .keyboard)
		LAYOUT=$(cat $FILE | jq -r .layout)

I ran this script inside the QMK configurator codebase and the result was just ca. 20 links to specific keyboards that have 87 keys (very likely a TKL layout). That looked much more manageable. Each configuration page contains information about the given keyboard, including who maintains it, what hardware it supports, and where to get it. Some of the keyboards where part of previous Group Buys, so not really useful if I wanted to buy a keyboard now. Some others only had links to Github, which is great, but I also didn’t want to build my own keyboard (yet). And then I found the massdrop/ctrl keyboard, which had a link to a shop. Bingo! I ordered it together with Gateron Brown switches and the standard keycap set, so that I can start typing with it straight away.

It has been now a week, since I received the keyboard and I’m very happy. I started learning all the features QMK has to offer and will be slowly adapting my keymap. And I will also probably try building my own keyboard (or rather a macro pad) just to explore all the possibilities of QMK.