Open-source keyboard firmware for Atmel AVR and Arm USB families
O

Open-source keyboard firmware for Atmel AVR and Arm USB families

Open-source keyboard firmware for Atmel AVR and Arm USB families

20,500 stars
N/A forks
N/A contributors

README

Project documentation from GitHub

QMK: The Open-Source Firmware That Puts Your Keyboard on Steroids

Ever looked at your keyboard and thought, "I wish this key did something else"? Or maybe you've dreamed of building a completely custom layout from scratch? For most of us, the firmware on our keyboards—the low-level software that tells it how to behave—is a locked black box. QMK changes all that.

It’s an open-source keyboard firmware that hands you the keys to the kingdom, literally. Whether you're tweaking a pre-built board or designing a hand-wired masterpiece, QMK gives you the power to program every single keypress, layer, and LED blink exactly how you want.

What It Does

In simple terms, QMK is a replacement operating system for your keyboard. It supports a massive range of microcontrollers, primarily from the Atmel AVR (like the Arduino-compatible ATmega32U4) and Arm USB families (like the STM32). You write and compile your custom keymap and features in C, flash it to your keyboard's chip, and suddenly your hardware is running on your rules.

Why It's Cool

The magic of QMK isn't just that it's open-source; it's in the depth of customization it enables. This goes far beyond simple rebinding.

  • Layers: This is the killer feature. Think of it like a "Fn" key on steroids. You can create multiple, fully customizable layers for different purposes—one for gaming, one for coding, a numpad layer, or a dedicated layer for controlling media and RGB lighting. Tap a layer key, and your entire keyboard transforms.
  • Advanced Keycodes: Actions aren't limited to a single keypress. You can set up tap-dance (a key that does one thing when tapped, another when held), combos (trigger an action by pressing two or more keys simultaneously), and leader keys (tap a sequence of keys to execute a command).
  • Macros: Record or write complex sequences of keystrokes, mouse events, and delays, and bind them to a single key. Perfect for code snippets, common commands, or even chat phrases.
  • Huge Hardware Support: The community has contributed support for hundreds of pre-existing keyboards. Chances are, if it's a popular DIY kit or enthusiast board, there's already a QMK configuration for it. You can also start from scratch with a supported microcontroller.
  • It's Just C: The firmware is written in C, and your keymaps are too. This means the entire codebase is accessible and hackable for developers. You can dig in, understand how it works, and even contribute back.

How to Try It

The easiest way to start is with a keyboard that already supports QMK. Popular options include boards from Drop (like the Planck or Preonic), Keebio, and many others listed in the

Did you like this issue?

Join our weekly newsletter

Love discovering amazing projects?

Help us continue bringing you the best open-source discoveries every week.

Back to Projects
Last updated: Jan 7, 2026