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.

Imgur

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: Imgur

  • Caps Lock is assigned to MT(MOD_LGUI,KC_ESC), meaning it acts as the Escape key when tapped, and as Command (aka GUI) when held. This allows one physical key to serve two functions.
  • The Enter key is assigned to MT(MOD_LGUI | MOD_RGUI,KC_ENT), so holding it triggers Command, while tapping it inputs Enter.
  • 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 the Tab key. It’s become an essential key for me.
  • I assigned Mission Control to the Command key on the left of the right space bar.
  • Both space bars are assigned to LT(2,KC_SPC), meaning a tap inputs space, and a hold switches to Layer 2.
  • The Esc key is programmed to C(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), and LCA(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 to MT(MOD_LCTL,KC_V) and the n key to MT(MOD_LCTL,KC_N), allowing me to use them as Control when held, and v or n when tapped. This saves me two dedicated Control keys in a more comfortable position.

Here’s the keymap for the third layout:

Imgur

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.