QMK Logo QMK Firmware

The goal of the QMK software project is to develop a completely customizable, powerful, and enjoyable firmware experience for any project - keyboard or otherwise - and to provide helpful, encouraging, and kind support and feedback for people with any software development experience.

View on GitHub

Download Zip Download Tar

Current Version Build Status Discord Docs Status GitHub contributors GitHub forks


This project is maintained by QMK collaborators and contributors like you!

Hosted on GitHub Pages — Theme by orderedlist

All recent changes in QMK

adding Hadron v3 keyboard, QWIIC devices support, haptic feedback support

This commit adds support for DDRV2605L haptic motor, support for the QWIIC powered “Joystiic” and Micro OLED, as well as support for the Hadron revision 2, that uses all of these features.

Increasing square wave buffer to max volume

This changes the ARM Audio code so that the volume is much louder (more closely matching the AVR Audio).

Make ARM Audio max volume configurable

This allows you to set the max volume used by the ARM Audio feature. This is useful if you (shock!) find the audio to be way too loud.

Fix up RGB Matrix code

This commit fixes up some of the code, and expands the functionality of the RGB Matrix code. Including adding support for running RGB Light and RGB Matrix at the same time.

Add support for S7 Elephant

We’ve added support for the S7 Elephant keyboard!

New Keyboard: Cyclops

We’ve added support for the Cyclops keyboard, a 66% Alps keyboard!

Keyboard: add newgame40

We’ve added support for the NEWGAME40 keyboard!

Added Rick Roll to song lists

We’ve added the Rich Ashley Never Gonna Give You Up song to our song list!

Update MSYS’ AVR-GCC to use the 5.4.0 toolchain

We’ve updated the MSYS install script to grab the newer toolchain version AVR-GCC for Windows (version 5.4.0).

Puck Macropad

We’ve added support for OkKeebs.com’s Puck Macropad!

fixed misplaced paranthesis in arm usb mouse send function

This fixes the send mouse function in ChibiOS and should no longer drop mouse events.

Fix diffutils Arch Linux package name

Uses the correct name for diffutils for Archlinux. Now everything should install and compile properly.

Fix UCIS code

Reverts move declaration of “i” variable in the proces_ucis function that was moved previously.

Use a single endpoint for HID reports

Unify multiple HID interfaces into a single Endpoint.

Keyboard: Initial 25 port

We’ve added support for 40percent.club’s 25 keyboard!

KBDFans KBD67 Support

We’ve added support for KBDFans’ KBD67 keyboard!

IDOBO Keyboard Support (75Keys Aluminum Keyboard)

We’ve added support for Massdrop’s 75Key Keyboard keyboard!

Add EEPROM_RESET keycode to core code

Adds a keycode to reset the EEPROM on the keyboard (to reset persistant settings back to their default settings).

Keyboard: adding Espectro

We’ve added support for MECHKEYS’s Espectro keyboard!

Keyboard: add ep40 qmk support

We’ve added support for the ep40 keyboard!

Keyboard: add support for kbd19x

We’ve added support for KBDFans’ KBD19x keyboard!

Add Bootmagic Lite to QMK

Adds a lightweight implementation of Bootmagic that only resets the keyboard, so that users are not prone to accidentally activating unwanted features.

Keyboard: Add HS60 V2

We’ve added support for the HS60 v2 keyboard, using the STM32F303CC ARM controller!

Add Function level EECONFIG code for EEPROM

This adds support for keyboard and keymaps to be able to use EEPROM, as well as resetting those settings.

RGB Matrix refactoring to open up for new drivers

Refactors the RGB matrix code to generalize it more, to make it easier to add new drivers.


This changes the default behavior of QMK to use the PREVENT_STUCK_MODIFIERS behavior by default. This way, modifiers are remembered correctly.

STM32 EEPROM Emulation

We’ve added support for STM32 EEPROM Emulation! Mostly supports STM32F3xx MCUs. More support can be added later.

ISSI31FL3733 driver

We’ve added support for Massdrop’s CTRL and ALT keyboards. Additionally support for ATSAM ARM has been added, as well.

ISSI31FL3733 driver

Adds the ISSI31FL3733 comtoller support for RGB Matrix. Only supports 1 driver, at this time.

Rgb matrix arm

We’ve added ARM support for the RGB Matrix.

Split Common

This adds the split keyboard code to the core code, and adds it as a feature. This way, all of the code can be maintained in one place, rather than individually, per board.

Add and fix _noeeprom functions to many of the RGB Underglow functions

And and fix _noeeprom functions to many of the RGB Underglow functions

Adds IS31FL3731 RGB Matrix Implementation

Adds initial support for per key RGB lighting (RGB Matrix) powered by the IS31FL3731 controller. See the RGB Matrix Feature Page for details about this feature.

Add Faux Clicking as subset of Audio feature

Add Faux Clicky to the Audio feature

Remap msys2 usb, fix USB port detection

Adds better support for Pro Micro (Caterina Bootloader) flashing.

added ep/96 as a supported keyboard

We’ve added support for EP 96 keyboard!

Keyboard: 5291 firmware to replace the existing soarers controller firmware

We’ve added support for the IBM 5291 (aka “Bigfoot”) converter!

add support for encoders to core

Adds support for rotary encoders to core code.

Fix EE HANDS on splits losing handedness if RGB is enabled

Fixes EE HANDS on splits losing handedness if RGB is enabled

Add the ability to disable Music Mode completely

We’ve added the option to disable Music Mode when Audio is enabled. This saves a great deal of space for the firmware.

Update ChibiOS to 17.6.3

Updates ChibiOS to 17.6.3

Fix up the ARM audio support

Updates bootloader settings, adds file size check

We’ve improved the Bootloader handling. Not only does it handling jumping to bootloader better, but makes configuration of the settings handled by the compiler, rather than having to set everything.

Allow multiple process_record() calls per scan

This is particularly relevant for, e.g., the ergodox EZ and other keyboards with slow scan rates. Without changing the API or behavior of individual process_record() calls, we allow a configuration flag to make multiple calls in a single scan.

QMK DFU bootloader generation

THe QMK DFU bootloader is a fork of the LUFA DFU bootloader that allows for some additional functionality, such as LED and Audio indication.


Holding and releasing a dual function key without pressing another key will result in nothing happening. With retro tapping enabled, releasing the key without pressing another will send the original keycode even if it is outside the tapping term.

Creates a userspace for keymaps

Added Userspace so you can share common code between different keyboards.

Add Iris Keyboard

We’ve added support for the Iris from Keebio!

Make arguments redo, subprojects eliminated

Make arguments

Support for Viterbi added

We’ve added support for the Viterbi!

Support for DZ60 added

With the merging of #1734, we’ve added support for the DZ60 PCB! This is used in a couple different keyboards - if you know of one that isn’t in the readme, please consider adding it!

Support for Levinson added

With #1723 merged, support for Levinson has been added - a split ortho board similar to the Let’s Split.

Making from root and no more Makefiles

After merging in the implementation of #1659, the only way to compile QMK is in the root directory, with the full command:

Layouts: Sharing keymaps between keyboards

With the merging of #1609, we’ve added the layouts/ folder - it contains collections of keymaps sorted by physical key layouts that different keyboards can use, and is organised like this: