What Can You Customize With QMK Firmware?
Updated
QMK Firmware is open-source keyboard firmware for Atmel AVR and Arm USB families, and its core promise is that you can "make it yours with a completely customizable, powerful, and enjoyable firmware experience." In practice, that means you can change what every key does, how layers behave, what macros fire, and how peripherals like lighting and encoders respond — as long as your keyboard's hardware and firmware configuration support it. The customization ceiling is set by your board, not by QMK's feature list.
Key Mapping and Layouts
The most fundamental thing you can customize is the keymap itself. Instead of accepting the layout printed on your keycaps, you assign a keycode to each physical position.
- Remap any key to any keycode, including modifiers, media keys, and special QMK keycodes.
- Build multiple layers — for example, a base layer, a symbols layer, and a navigation layer — and switch between them with layer keys, momentary holds, or toggles.
- Define combos, where pressing several keys together produces a different output than pressing them individually.
- Set up mod-tap and layer-tap behavior, so one key acts as a modifier or layer shift when held and a normal key when tapped.
This is where most people start, because it solves problems a stock keyboard can't: moving keys your hands dislike, adding a numpad to a small board, or putting arrow keys under a layer.
Macros and Custom Behaviors
Beyond static remapping, QMK lets you attach sequences and conditional logic to keys.
- Macros send a predefined string of keystrokes from a single press — useful for repeated text, shortcuts, or multi-step commands.
- Custom keycodes let you write your own behavior in firmware, so a key can do something no built-in keycode covers.
- Tap dance assigns different actions to the same key depending on how many times you tap it.
- Leader keys trigger an action after a short sequence of other keypresses, similar to a Vim-style leader.
The practical limit here is your own configuration effort: each behavior has to be defined in your keymap and compiled into the firmware.
Lighting, Encoders, and Other Peripherals
QMK also reaches into the hardware features a board exposes, not just the keys.
- RGB lighting can be controlled per-key or as a whole, including effects and brightness behavior.
- Rotary encoders can be mapped to volume, scrolling, zoom, or custom actions, often with different behavior per layer.
- OLED or LCD displays on supported boards can show layer state, key logs, or custom text.
- Pointing devices and other add-ons are supported where the hardware and firmware configuration allow.
Because these depend on what your specific board includes, the same QMK version may expose lighting controls on one keyboard and nothing on another.
What Limits Your Customization
Customization is bounded by two things: the hardware your keyboard has, and the firmware configuration you build for it. A board without an encoder can't gain one through QMK, and a microcontroller with limited memory constrains how many features and layers you can compile in at once. QMK's own framing — "extensive compatibility" across AVR and Arm USB families — describes the range of supported chips, not a guarantee that every feature works on every board.
If you want to know whether a specific keyboard or microcontroller is supported, check QMK's compatibility information for that board before planning a keymap around features it may not have.