These are mostly notes to myself. I got my first 40% keyboard I found the default keymap… lacking. It has two layers with most keys but is missing a bunch of obvious one like ~`\|/?. I also learned about Home Row Mods or ways to use the home row keys as modifiers. The idea being you don’t have to move your fingers for for common modifiers. You tap a key to get the key and hold it down for the modifier. If you want to modify your mod key you have to use the opposite hand’s mod key. I can see the benefit of it but for me it it takes too much learning and getting used to. I don’t want to learn a specific technique on one board and then have unlearn to use normy boards. I want more specific mod keys.
Enter QMK. There is an online configurator that makes it easy to design layouts and it can then even build a custom firmware. Like most online GUI type things this is great until it isn’t. When you reach the limit of what you can do with the gui then you are stuck. In my case I wanted to use key combos. Two keys at once that would generate a third. For a board that doesn’t have an ESC or TAB key this can be handy. Unfortunately the configurator doesn’t support combos and the default firmware doesn’t have them enabled. You have to build it from source yourself.
So off to Linux and umm the build system isn’t setting up properly with Ubuntu 21. Hmm there’s a docker, let’s use that. Ok that is “working” but only to Build All The Keebs! I don’t see how to make it do anything else. Or where it is keeping the files. Oh and did I mention that there are like 2000 keyboards? It’s absurd the QMK repo has them all including, almost 40,000 files. Anyway apparently most people use Windows and there is a “QMK MSYS” to build it. I think MSYS is a build container like docker but without the virtualization. The good news is it Just Worked. Super easy and quick as it only builds the keyboard you wanted.
I used VS Code to easily navigate the files and make the changes I needed. In my case, and I would think most people, I only needed to change
rules.mk to enable combos and
keymap.c to define the combos and layout.
I may talk about the layout more after I add a third layer for Function keys and specials. In the meantime these were my changes (link to git repo above). In my case there were already combos that I redefined. I also got rid of the home row mods.