QMK/VIA - The Soul of Mechanical Keyboards
Mechanical keyboards are loved for their tactile feedback, satisfying “tok” sound, and endless customization options. However, for me, the true magic lies not just in the hardware but in the software, particularly when it comes to smaller keyboards.
Why Opt for a Small Keyboard?
At first glance, compact keyboards like 60% or 65% layouts may seem restrictive. You might ask yourself:
- Where are the function keys?
- Where is the Escape key?
- What about Page Up, Page Down, or the arrow keys?
These are valid concerns, but the answer lies in the power of QMK and VIA. These tools revolutionize keyboard functionality by introducing layers, custom keymaps, and even dual-function keys.
In the following, I’ll walk you through how I customize my keyboard using QMK/VIA.
How Do I Customize My Keyboard with QMK/VIA?
Over the years, I’ve used various keyboards, and I’ve finally settled on the Keychron Q8 Max (Alice Layout) QMK/VIA Wireless Custom Mechanical Keyboard.
This keyboard supports QMK/VIA right out of the box. You can assign any keystroke to any physical key on the keyboard. To assign keys, you can use https://usevia.app/. For more advanced key functions, you can create keymaps using the open-source qmk_firmware repository on GitHub.
Here’s the first layer of my keymaps:
Caps Lock
is assigned toMT(MOD_LGUI,KC_ESC)
, meaning it acts as the Escape key when tapped, and asCommand
(akaGUI
) when held. This allows one physical key to serve two functions.- The
Enter
key is assigned toMT(MOD_LGUI | MOD_RGUI,KC_ENT)
, so holding it triggersCommand
, while tapping it inputsEnter
. - The
fn2
key is assigned to a custom key, Super Cmd↯TAB, programmed using QMK firmware. The source code can be found here. This key simplifies app switching—tapping it once activates app switch mode, and tapping it again behaves like theTab
key. It’s become an essential key for me. - I assigned
Mission Control
to theCommand
key on the left of the right space bar. - Both space bars are assigned to
LT(2,KC_SPC)
, meaning a tap inputsspace
, and a hold switches to Layer 2. - The
Esc
key is programmed toC(S(G(KC_4)))
, which is a shortcut for capturing a portion of the screen in macOS (Control + Shift + Cmd + 4). - The four arrow keys are mapped to
LCA(KC_ENT)
(Ctrl
+Option
+Enter
),LCA(KC_LEFT)
,LCAG(KC_LEFT)
, andLCA(KC_RGHT)
, which are shortcuts for Rectangle software. - The key under the
Esc
key is a transparent keycap with blue light. I use this key to toggle to Layer 4. It’s transparent because I program it to change colors across layers, so I always know which layer I’m on. - The
v
key is assigned toMT(MOD_LCTL,KC_V)
and then
key toMT(MOD_LCTL,KC_N)
, allowing me to use them asControl
when held, andv
orn
when tapped. This saves me two dedicatedControl
keys in a more comfortable position.
Here’s the keymap for the third layout:
As a VIM
user, I prefer using h
, j
, k
, l
as arrow keys. To use them, I simply hold the space
key, which allows me to navigate as if I were using VIM across all applications. I also assign Page Down
, Page Up
, Home
, End
, Backspace
, and Del
keys on this layer, making them easily accessible near the space bar
—this saves me a lot of finger movement.
Additionally, VIA supports macros. I created a macro that performs Command
+ A
+ Command
+ Backspace
to clear a text box. I’ve assigned this macro to the y
key on this layer.
What I am showing is just a tip of the power of QMK/VIA; the possibilities are limitless for you.