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.
This project is maintained by QMK collaborators and contributors like you!
Hosted on GitHub Pages — Theme by orderedlist
Language:RGB Matrix Animations: Three/six new reactive effects (wide, cross, nexus)
Adds three new animation modes to the RGB Matrix feature.
This commit adds defines that you can use to quickly set RGB or HSV values.
This adds a new OLED driver to QMK Firmware.
Change split_common to use RGBLIGHT_SPLIT
This adds supports the RGB_SPLIT
feature for RGB Light.
Add function to support split-keyboard in rgblight.[ch].
This commit adds the ability to sync the RGB light settings between halves of Split Keyboards.
This allows you to use WS2812 strips for the RGB Matrix feature.
Fix ATSAM’s USB HID descriptor to support higher heycodes
This allows EXTRAKEYS (media keys and OS Keys) to work on ATSAM keyboards (Massdrop CTRL and ALT keyboards).
Add AltGr/RALT support to Send String
Adds support for AltGR, allowing for non-US keycodes in SEND_STRING
.
Port DIRECT_PINS from split_common/matrix.c to matrix.c
Adds support for Direct Pin connection keyboards (e.g. no matrix, no diodes, just connected to the controller).
Switch process_combo to using global register and timer
This commit fixes various issues and optimizes the Combo feature.
Adds the Planck EZ, 3737 RGB, fixes out-of-tune notes
We’ve added support for the Planck EZ keyboard!
Update ps2avrgb template to use standard matrix/i2c code
Update ps2avrgb template to use standard matrix/i2c code.
This adds the ability to specify a custom Tapping Term for dual action keys (such as Mod-Tap and Layer-Tap keys).
RGB Matrix support for Massdrop CTRL/ALT
Converts the Massdrop CTRL and ALT keyboards to use the QMK Firmware’s core RGB Matrix feature!
Added encoder support to split common code
This adds support for using Encoders on both sides of Split Keyboards!
This is a massive overhaul to the RGB Matrix code.
We’ve added support for the RAMA WORKS KOYU Keyboard!
Add 3 speed mousekey movement option
This commit adds an optional Constant speed movement option for Mousekeys.
Add support for RGB LEDs wired directly to each half’s controller
This adds support for controller the RGB Light stripes wired to the different controllers on Split Keyboards.
This commit adds the ability to remap where the LEDs are located, so that animations and other functions are more intuitive.
We’ve added support for the gboards.ca’s Georgi keyboard!
We’ve added support for the Lazy Designer’s THE60 keyboard!
Next set of split_common changes
This updates a number of parts for the Split Keyboard code, to get it more ready for ARM Support (no, not here yet).
[Keyboard] Add HotDox keyboard
We’ve added support for the HotDox keyboard from Alpaca Keyboards!
[Keyboard] Add Boardwalk Keyboard
We’ve added support for the Boardwalk keyboard from PANC Interactive!
Fix Tx Bolt ghosting second character on key press
Fixes an issue with the TX Bolt method for Steno that was causing ghosting issues.
Velocikey: Match RGB animation speed to typing speed
Velocikey feature for RGB Light has been added!
[Keyboard] Alf X1.1 QMK Support
We’ve added support for the Alf X1.1 Keyboard!
[Keyboard] Winkeyless Directory
We’ve added a folder for Winkeyless keyboards! Now, they can be grouped in the QMK Configurator.
We’ve added support for APA102 RGB LED’s!
Fix ARM Audio issues and its EEPROM persistence
Added EEPROM support for Audio on ARM!
We’ve refactored the Debounce code that allows for different debouncing methods.
Add kb and user level keyboard initialization functions
We’ve added new hooks for keyboard initialization!
[Keyboard] New Keyboard: Doro67 Regular PCB
We’ve added support for the Doro67 Keyboard!
Add Satisfaction75 to QMK, Enable EEPROM on stm32f072
We’ve added EEPROM support for the STM32F072 MCU!
Add Satisfaction75 to QMK, Enable EEPROM on stm32f072
We’ve added support for the Satisfaction75 keyboard!
[Keyboard] Move Keebio boards to own folder
We’ve added a folder for Keebio keyboards! Now, they can be grouped in the QMK Configurator.
[Keyboard] Added aeboards/aegis
We’ve added support for the aeboards AEGIS keyboard!
Added WT75-A, refactor wilba.tech PCBs
We’ve added support for the WT75-A keyboard from [Wilba.tech](https://wilba.tech/!
We’ve added support for LED Matrices. These are non-RGB (single color), per key addressable backlighting.
Keyboard Initial Support For Tkc M0lly
layout: qmk-title title: “[Keyboard] Initial support for TKC M0LLY” date: 2019-02-10 00:00:00 -0500 category: keyboards commit: 6ba3968 pr: 5087
Regroup all Exclusive keyboard in one directory
We’ve added a folder for Exclusive keyboards! Now, they can be grouped in the QMK Configurator.
[Keyboard] Initial commit of Laptreus Keyboard
We’ve added support for the Laptreus Keyboard!
[Keyboard] Add support for jj4x4 numpad/macropad by Kprepublic
We’ve added support for KPRepublic’s JJ4x4 macropad!
Add Scarlet Bandana Version IV mark.2
Add support for the Scarlet Bandana from WoodKeys.click!
Add support for hooks for the One Shot Key feature!
We’ve added the distclean
command, so you can clear the build folder and compiled firmware! Just run make distclean
to do so.
[Keyboard] New Macropad: 1upkeyboards super16
We’ve added support for the 1UP Keyboards Super 16 Macropad!
[Keyboard] Create KBDFans directory
We’ve added a folder for KBDFans keyboards! Now, they can be grouped in the QMK Configurator.
New Keyboard: Sentraq Number Pad RGB DIY Kit
We’ve added support for the Sentraq Nunber Pad RGB Kit!
[Keyboard] Add 1upkeyboards 1up80hte (Tsangan style PCB)
We’ve added support for the 1UP Keyboards’s 1up80hte keyboard!
[Keyboard] Gray Studio Space 65 Support
We’ve added support for the Gray Studio’s Space 65 keyboard!
[Keyboard] UniGo66 keyboard added
We’ve added support for the UniGo66 keyboard!
[Keyboard] Add Southpole keyboard
We’ve added support for the Southpole Keyboard!
We’ve added support for the Lunar keyboard from Switchplate Peripherals!
Fix Command feature: use get_mods() instead of keyboard_report->mods
This replaces keyboard_report->mods
with get_mods()
instead, for the IS_COMMAND
call, since it was broken due to issues with the Endpoint Consolidation commit.
Update Preonic’s MCU configuration to use the built-ins
This updates the Preonic keyboard configuration to use the built ARM MCU code.
Adds a default value for IS_COMMAND for COMMAND feature
This adds a default value for IS_COMMAND to the core code. This is so that each keyboard doesn’t have to define it locally. It only has to define it, if it is not the default.
[Keyboard] Add bthlabs/geekpad
We’ve added support for the BTHLabs GeekPad macropad!
[Keyboard] Add support for THE50
We’ve added support for the THE50 keyboard!
[Keyboard] Adding support for Gergo
We’ve added support for the Gergo keyboard from g Heavy Industries!
This fixxes the RGBLIGHT_SLEEP
option, so that the lights properly maintain the previous setting in all cases.
This fixes an issue with One Shot Mods not properly respecting the Magic ALT-GUI Swap setting.
Add MOD_MASK_* macros to core code
This adds the Mod MASK ans pre-existing defines in the core code, so you can easily reference them without having to manually define them.
[Keyboard] Add KBD67 Hotswap Support
We’ve added support for the
We’ve added support for the Keebio BDN9 macropad!
[Keyboard] Added TGR Alice keyboard support
We’ve added support for the TGR Alice keyboard!
[Keyboard] Tmo50 initial commit
We’ve added support for the TMO50 keyboad!
[Keyboard] Initial support for TKC Candybar
We’ve added support for the TKC Candybar keyboard!
Simplify split_common significantly
Split_common no longer has a separate main loop for the slave, it reuses the keyboard_task main loop like ergodox infinity. This eliminates a lot of the code and makes it a bit easier to reason about. It also means that the slave will behave slightly differently depending on what flags are enabled - many of the options lie outside the is_keyboard_master gate in keyboard_task, and I expect that will have to change as they’re tested.
Fix Caps Lock LEDs once and for all
The status LEDs don’t light up/light up incorrectly on Linux in certain circumstances. This is because, if NKRO is enabled it will send two LED states, one for the 6KRO interface, and one for the NKRO interface. QMK interprets the NKRO report ID as the LED state and turn on the num lock and scroll lock LEDs.
If a board currently supported in QMK uses a Pro Micro (or compatible board) and you want to use the Proton C, you can generate the firmware by appending CONVERT_TO_PROTON_C=yes
(or CTPC=yes
) to your make argument, like this:
Update to arm_atsam wait and timer routines
This update is to get the arm_atsam branch timer and wait functions aligned with common QMK functions. It also includes a much simpler, rewritten method to microsecond delays to tighten timings. This update affects Massdrop’s CTRL and ALT keyboards, and they have both been thoroughly tested.
Improve consistency in UNICODEMAP code and docs, update docs/understanding_qmk
Rename some constants and functions pertaining to UNICODEMAP so they’re consistent with the rest of the system. Also update the documentation accordingly. See below for details.
Remove redundant, language-specific aliases for KC_ALGR
Removes redundant, language-specific aliases for KC_ALGR, since that keycode is standard now.
Convert split_common to use generic GPIO api
This is a small but important step to converting the Split Keyboard code to be ARM compatible, by using hardware agnostic functions (instead of the AVR specific addresses).
Change rgblight_get_mode & rgb_matrix_get_mode’s return type to uint8_t
rgblight_get_mode()
’s return type right now is uint32_t
, but upon inspection of its implementation, it’s actually returning rgblight_config_t.mode
, which is an uint8_t
. The return type should match rgblight_config_t.mode
’s.
Keep pressed keys on layer state change
This allows pressed keys to stay pressed when a layer change occurs.
Replace serial.c of quantum/split_common/
This PR marks the finishing of updating of the Split Keyboard (aka “Split Common”) serial code, to bring it in line with all of the awesome improvements that mtei has made for the Helix split keyboard.
Overhaul Unicode Common functionality
This is a significant overhaul to the core (“common”) Unicode code.
This adds a “per key” timing option to the Leader Key function.
Refactor quantum/split_common/i2c.c, quantum/split_common/serial.c
This PR allows for both i2c and serial support for Split Keyboards (aka Split Common code) to be enabled at the same time, without causing any overlap/issues.
Make quantum/split_common/serial.[ch] configurable
This changees the Split Keyboard (aka Split Common) code to allow a configurable pin for Serial communication, that can be defined per board.
Add support for PR and Issue templates to QMK_firmware GitHub
We’ve added templates for both PRs and Issues for the QMK Firmware repo, to help streamline things.
Keyboard: Palm serial keyboard USB converter
We’ve added support for the Palm serial keyboard converter!
We’ve added support for the 40percent.club’s i75 keyboard!
Only try to read the report ID from SetReport when the keyboard is part of the shared EP
If the keyboard has media keys or NKRO on, SHARED_EP_ENABLE is automatically enabled to merge them into a single endpoint (see #3951). The different interfaces are then identified by a unique report ID. However, the keyboard interface is by default not part of that shared endpoint unless KEYBOARD_SHARED_EP = yes in your rules.mk, and so it does not need a report ID.
We’ve added support for 40percentclub’s Nori keyboard!
Keyboard: Add new keyboard Sol from RGBKB
We’ve added support for the Sol keyboard from RGBKB!
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.
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.
We’ve added support for the S7 Elephant keyboard!
We’ve added support for the Cyclops keyboard, a 66% Alps keyboard!
We’ve added support for the NEWGAME40 keyboard!
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).
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.
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.
We’ve added support for 40percent.club’s 25 keyboard!
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).
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!
Adds a lightweight implementation of Bootmagic that only resets the keyboard, so that users are not prone to accidentally activating unwanted features.
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.
Make PREVENT_STUCK_MODIFIERS
the default
This changes the default behavior of QMK to use the PREVENT_STUCK_MODIFIERS
behavior by default. This way, modifiers are remembered correctly.
Keyboard: add Keyboardio Model 01
We’ve added support for the Keyboardio Model01 keyboard!
We’ve added support for STM32 EEPROM Emulation! Mostly supports STM32F3xx MCUs. More support can be added later.
We’ve added support for Massdrop’s CTRL and ALT keyboards. Additionally support for ATSAM ARM has been added, as well.
Adds the ISSI31FL3733 comtoller support for RGB Matrix. Only supports 1 driver, at this time.
We’ve added ARM support for the RGB Matrix.
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.
Updates ChibiOS to 17.6.3
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.
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.
We’ve added support for the Iris from Keebio!
Make arguments redo, subprojects eliminated
We’ve added support for the Viterbi!
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!
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: