This content originally appeared on Level Up Coding - Medium and was authored by Thomaz Moura
Or how the QMK open-source firmware unleashed even more power to my daily driver
A year ago, I wrote an article about how much Anne Pro 2 (AP2 from now on) has improved my workflow by allowing me to completely customize all the keys so that even hard to reach keys become easy to access without having to remove my hands from the home row thanks to its ObinsKit firmware. This time I’ll show how QMK brought all this to a whole new level.

Disclaimer: AP2 doesn’t officially support QMK, but some amazing people over https://openannepro.github.io/ managed to unofficially port it. In my experience, it’s working amazingly well but keep in my mind this is an open-source project in its early stages, managed by volunteers and not supported by Obins (AP 2 maker) or any other company. There are some rough edges and progress may be limited to the spare time availability of the contributors — but you can always help the project yourself if you have the needed skills.
But some of you might be wondering: What is this QMK thing anyway? And mostly, why should I even care?
Meet QMK! The Holy Grail of keyboard customization!

OK, that might sound like an overstatement (and probably is) but the point is: QMK is one of the best mechanical keyboard firmware out there and the best I know. Now, if you’re wondering what a keyboard firmware is, think of it as the software running inside your keyboard, instead of running on the device your keyboard is plugged into (such as your PC).
That might sound weird to anyone outside the mechanical keyboard hobby since most pre-built keyboard models (including some mainstream mechanical ones) only allow you to download software to manage the keyboard and not directly updating the firmware. But it’s pretty common for custom mechanical keyboards and many pre-built ones (such as AP2 itself) to allow you to update the firmware (often using some software as GUI).
One of the advantages of updating the firmware instead of only dealing with software is that the changes you make will be effective anywhere you plug or pair your keyboard. This means that if you set your CAPS LOCK key to act as a CTRL key on the firmware, it will act so wherever you use it without the need for any special software on the device.
There are many custom firmware for mechanical keyboards out there including some that are vendor or model-specific (such as Obinskit which is the AP2 official firmware) and some that are open-source such as the QMK firmware that I’ll be focusing on here. QMK stands for Quantum Mechanical Keyboard and is an open-source project originally forked from TMK (another open-source keyboard firmware project) and heavily modified from there. The project includes different products such as the QMK Firmware, QMK Configurator, and QMK Toolbox. Currently (as of April 2021), only the QMK Firmware is ported to AP2. The changes also have not been merged back to the official QMK repo yet, so they are being made on the https://github.com/OpenAnnePro/qmk_firmware repo for the time being.

QMK brings a level of customization that is not usually achievable on most keyboard firmware. You can remap every single key to whatever other key you would like and use different layers to map different functions as well. You can also map the same key on any layer to have different actions whether you just tap it or hold it. Also, you can control the LEDs from QMK as well (when used together with Shine).

Well, the official firmware has these features… kind of. I mean, Obinskit already has programmable keys, multiple layers, and the tap function, but not the way QMK does it. AP2 natively even has 2 extra layers which are more than most pre-built 60% keyboards have, but QMK’s limit is 32 layers (though I’ll admit I haven’t tested more than 6) and the tap function on QMK is on another level. One example to prove my point is that on QMK if you tap then hold a tap button it will send the tap action constantly like you were holding it instead of activating the hold action — that way you can hold the up arrow key by tap and holding the right shift key.
And then some things simply aren’t currently doable on AP2’s stock firmware. To activate a layer on AP2 you have to hold the layer key while you want that layer to be active. On QMK you can map the layer key the same way, but you can also map a key to toggle that layer on and off so you don’t have to keep holding the key and you can even map the layer key to be temporary on hold and toggled on tap (if you hold it will be active only until you release and if you tap it will be active until you tap it again).
And if you are willing to try the more advanced features you can have a Tap Dance (basically have different actions on the same key whether you tap it, hold it, tap and then hold it, tap it twice, tap it twice and hold it and so on) and even set up your keyboard to control the mouse cursor just because you can. But more on all the pros and cons of each in the section below.
QMK vs Obinskit — Or why you should care if you have an Anne Pro 2

Well now that you know what QMK is and had a taste of how much it’s awesome, let’s compare it with AP2’s stock firmware.
Pros
Improved layer system. With QMK you can have up to 32 layers each with its own keys layout. Also, you can toggle layers as well as activating them temporarily.
More advanced programmability. On Obin’s firmware, you can map any action to any key and set up some macros, but on QMK you can program any key to do whatever you want, including interacting with the LEDs. That’s how I got mine to show a solid color whenever a layer is active (one color per layer) so I can have quick feedback on which layer I’ve just activated on tap dance.
Open-Source. For someone new to open-source, this might not be seen as something important but there were features I wanted on the keyboard that currently aren’t supported by Obin’s firmware. By being open-source QMK gives you the possibility of doing it yourself — I’ve coded the LED color based on the current layer feature myself that way. And now that the code has been merged to the repo other people can use it as well and have improved it further.
More advanced tap feature. Even though Obin’s firmware has tap support it’s nowhere as good as QMK’s implementation. And the Tap Dance feature is on a whole new level. Just to give an idea of how flexible it is that’s how my CAPS LOCK is currently mapped to:
- Single Tap: Acts as ESC key;
- Press and Hold: Activates my arrow layers (HJKL become keys just like on VIM) until released;
- Double Tap: If there is any toggled layer, disable it. If there is none, acts as ESC key twice;
- Double Press and Hold: Activates my Numpad layer (which is now located where my right hand rests).
- Triple Tap: Toggles the mouse layer on and off (because I can).
- Triple Tap and Hold: Activates the mouse layer until released.
- Quad Tap: Toggles the Numpad on and off (pretty useful when I’m working with sheets — I’ve even mapped the arrow keys to ESDF so I can do most of my sheets tasks with only this layer active).
I also use the simpler LT function on the space bar that activates a layer when held and sends a normal space on tap. That way if I press it normally it acts as a space bar, but if I hold it acts my navigation keys (Home, End, Page Up, and Page Down) also on the HJKL. That way I can use my left hand to either hold the CAPS LOCK key, double-tap it and hold or hold the space bar and then access the arrows, the Numpad or the Home, End, Page up, and Page down keys with my right hand without needing to move any of them away from the home row.
This looks a lot like the setup I used with ObinsKit, but now I have a Numpad on the right hand (which makes my muscle memory happy) and by using the space bar I can have the windows left key back.

Cons
Still in its early stages… Kind of. In a lot of areas, the community support is pretty mature already and it’s currently pretty stable. But there are still some areas such as Bluetooth that are still in need of improvements (and help is welcome, by the way).
Bluetooth is still not fully integrated. Most of the keyboard already works quite well with QMK on Bluetooth. But there are some things such as media keys that, even though they work fine on the native firmware, haven’t been fully ported yet to QMK, at least at the time of writing this article. Some features such as controlling the mouse with the keyboard over Bluetooth are currently unachievable on Bluetooth (currently the QMK port does not override the Bluetooth firmware, so by default, it will use the last version of the Bluetooth Processor flashed on it).
Split application and LED logic. The QMK port for AP2 has different firmware for application (keymaps and such are controlled by QMK) and LED (LEDs are controlled by the Shine firmware). This makes some features such as having dynamic effects more complex since you have to serialize the messages between both firmware.
No GUI-based configuration for the time being. QMK has some GUIs to enable the configuration of the keyboard without coding directly. But these GUIs are not currently supported on the AP2 port of QMK, so you’ll have to write code to be able to customize the keyboard to fit your needs.
Overall experience is not as “newbie-friendly” as ObinsKit. Truth be told, I think ObinsKit is a pretty awesome firmware and a good part of it is because it’s so simple for a newcomer to configure it however wanted. QMK on the other side needs some basic programming skills and some basic familiarity with the command line as well.
Considerations
QMK is a pretty awesome project, and to have a functional version of it running on AP2 surely opens a lot of doors. But keep in mind that at the current state the project is not so newbie-friendly. Obinskit on the other is much more user-friendly and is pretty powerful itself.
I usually recommend that anyone new to mechanical keyboards who gets an AP2 keyboard try Obinskit first as an easier and friendlier way to get used to the idea of customizing your keyboard. After you have a clear idea of how you want your keyboard to behave it might be worth a try to check out QMK and see if it suits you even better.
That said, I can’t see myself going back to Obinskit anymore. I love its GUI and how simple it is to make changes but the Tap Dance feature and the number of layers that QMK allows is currently a required feature for me — I can’t see myself using a keyboard that doesn’t allow me to access both navigation keys and Numpad on my right hand as my daily driver anymore.
To summarize it:
If you have any coding experience and would like to unlock the full power a 60% keyboard can have, QMK is surely worth a try. On the other side, if all you’re looking for is a nice keyboard that is easy to use and configure, Obinskit might be a better option.
References
My previous article on AP2 (before QMK)
How the Anne Pro 2 Mechanical Keyboard Completely Changed My Workflow | by Thomaz Moura | Medium
Open Anne Pro page (QMK’s port for AP2, page):
Home — Open Anne Pro
Installation tutorial:
How to Install — Open Anne Pro
Github page for the QMK Port itself:
GitHub — OpenAnnePro/qmk_firmware: Port of QMK for the Anne Pro 2
Github page for Shine (firmware for controlling the LEDs with QMK)
GitHub — OpenAnnePro/AnnePro2-Shine: Custom LED Matrix Firmware for Open Anne Pro 2 QMK Port
QMK reference (useful for making your keymap):
Building Your First Firmware (qmk.fm)
My keymap for QMK (you can use it as a sample to get ideas for your keymap):
qmk_firmware/keymap.c at keyboard-annepro2 · OpenAnnePro/qmk_firmware · GitHub
ObinsKit (AP2’s official firmware) download (English version):
ANNE Pro | Bluttooth Mechanical Keyboard_Annepro2_Obins Official Website
Anne Pro Dev Discord channel (Community for QMK on AP2 and other Anne Pro related things — please keep in mind this is not an official Obins channel nor the place for technical assistance)
https://discord.gg/W97Q8xzms2
How Anne Pro 2 (powered by QMK) Changed My Workflow Even Further was originally published in Level Up Coding on Medium, where people are continuing the conversation by highlighting and responding to this story.
This content originally appeared on Level Up Coding - Medium and was authored by Thomaz Moura

Thomaz Moura | Sciencx (2021-04-13T13:21:01+00:00) How Anne Pro 2 (powered by QMK) Changed My Workflow Even Further. Retrieved from https://www.scien.cx/2021/04/13/how-anne-pro-2-powered-by-qmk-changed-my-workflow-even-further/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.