Skip to content

Changelog

Drashna Jaelre edited this page Jul 9, 2024 · 73 revisions

Firmware 24

This version is a massive change from previous versions, as this doesn't build upon them but is a hard reset from upstream.

Important Changes

Previous version matched 0.22.0, whereas this updates to 0.25.10.

Major notable changes

  • External Userspace support
  • Improved shutdown callbacks
  • RGB/LED driver cleanup (30 PRs)
  • Peripheral subsystem enabling (#22253, #22448, #22106) Rather than adding to SRC, I2C_DRIVER_REQUIRED = yes would be used. This includes some additional handling for the hardware config.
  • Renaming Arduino-style GPIO pin functions (#23085, #23093)
  • I2C driver API Changes (#22905)
  • DIP Switch Mapping (#22543)
  • Insert delay between shifted chars in send_string_with_delay (#19280)
  • Remove deprecated quantum keycodes (#23407)
  • Introduction of keyboard.json (22891)
  • Refactor ChibiOS USB endpoints to be fully async (#21656)

Special Notes

Refactor ChibiOS USB endpoints to be fully async (#21656)

For most users, this change will mean suspend and resume on ARM-based boards works correctly. Others will notice that their keyboard now works correctly in BIOS/UEFI.

Essentially, changes were made in the internals of how QMK interacts with USB for ARM-based devices. Before this change, whenever a packet was attempted to be sent from the keyboard to the host machine, QMK would wait for the transmission to complete. After this change, those packets are queued and sent when opportune; this results in much better "correctness" as far as the USB protocol is concerned, and means far less likelihood of failure scenarios such as "stuck keys" or "random lockups" and the like.

Compliance checks were run against QMK firmwares for the most popular ARM microcontrollers, as well as suspend/resume tests. As far as we can tell, a whole host of hard-to-reproduce issues are mitigated by this change.

ZSA Specific Changes

  • send_report in LUFA/AVR changed to a boolean function type to match ChibiOS/ARM
  • Oryx code consolidated to keyboards/zsa/common. This should allow the code to be more easily maintained and updated.
  • Layer Lock support (#23430)
  • Achordion Support

Firmware 23

Important changes

  • Mouse keycode block moved to lower values (#16076)
    • This fixes issues with mousekeys not working with LT/Layer Tap due to internal code handling
  • Prevent tap dance from wiping dynamic macros (#17880)
  • Simplify extrakeys sending at the host driver level (#18230)
  • Change DRIVER_LED_COUNT to {LED,RGB}_MATRIX_LED_COUNT (#18399)
  • Change {LED,RGB}_DISABLE_TIMEOUT to {LED,RGB}_MATRIX_TIMEOUT (#18415)
  • remove busy waiting from rgblight functions (#18418)
  • Don't clear keys on layer change unless STRICT_LAYER_RELEASE is enabled (#18577)
  • Refactor send_extra (#18615)
  • LUFA: Consolidate report sending code (#18629)
  • Widen the ARM Cortex-M family support. Allow USB peripheral change. (#18767)
  • Change RGB_MATRIX_STARTUP_* defines to RGB_MATRIX_DEFAULT_* (#19079)
  • Change LED_MATRIX_STARTUP_* defines to LED_MATRIX_DEFAULT_* (#19080)
  • Make IGNORE_MOD_TAP_INTERRUPT the default behaviour for mod-taps (#20211)
  • Remove IGNORE_MOD_TAP_INTERRUPT_PER_KEY in favour of HOLD_ON_OTHER_KEY_PRESS_PER_KEY (#15741)
  • Add combo hook to allow per layer combo reference layers. (#16699)
  • Replace Tapping Force Hold feature with Quick Tap Term (#17007)
  • Detect host OS based on USB fingerprint (#18463)
  • Remove RGBLIGHT_ANIMATIONS from core (+cleanup) (#19216)
  • Refactor rain pixel function (#19606)
  • On-each-release tap dance function (#20255)
  • RGB Matrix limit basic indicators to the last render (#21169)
  • Fix layer switching from tap dances by redoing the keymap lookup (#17935)
  • Fix mouse report comparison failing on shared EP (fixes KB preventing sleep) (#18060)
  • Make Magic handling more consistent in Action Keycode handling (#9126)
  • Fix functions when NO_ACTION_TAPPING is defined (#11528)
  • UCIS: remove qk_ prefix (#19302)
  • Leader: remove qk_ prefix (#19304)
  • Tap Dance: remove qk_ prefix (#19313)
  • Fix OSMs getting stuck (#20034)
  • Keycodes have been overhauled and made more consistent
    • Most internal keycodes have been changed/updated in some way
    • Remove deprecated RESET keycode alias (#18271)
    • Better handle EEPROM reset keycode (#18244)
    • Deprecate KC_LEAD for QK_LEAD (#18792)
    • Deprecate KC_LOCK for QK_LOCK (#18796)
    • Deprecate VLK_TOG for VK_TOGG (#18807)
    • Deprecate CAPS_WORD/CAPSWRD for CW_TOGG (#18834)
    • Deprecate KEY_OVERRIDE_* keycodes for KO_* (#18843)
    • Deprecate ONESHOT_* keycodes for QK_ONE_SHOT_* (#18844)
    • Deprecate SECURE_* keycodes for QK_SECURE_* (#18847)
    • Remove KC_DELT (#18882)
    • Normalise Auto Shift keycodes (#18892)
    • Normalise Autocorrect keycodes (#18893)
    • Normalise Unicode keycodes (#18898)
    • Normalise Dynamic Macro keycodes (#18939)
    • Normalise MIDI keycodes (#18972)
    • Align audio keycode names (#18962)
    • Align dynamic tapping term keycode names (#18963)
    • Align haptic feedback keycode names (#18964)
    • Normalise Swap Hands keycodes (#19720)
    • Align sequencer keycodes (#19875)
    • Align magic keycodes (#19877)
    • Tri Layer Keys (#19795)

ZSA Specific Changes

  • Basic support for GD32F303
  • Print stack (memory) size for AVR boards

QMK Firmware 0.22.0

Core

  • quantum: led: split out led_update_ports() for customization of led behaviour (#14452)
  • Add getreuer's Autocorrect feature to core (#15699)
  • Move mousekey keycodes into newly freed up keycode block (#16076)
  • Introduce pointing device specific debug messages (#17663)
  • PWM Backlight for RP2040 (#17706)
  • Adjust PWM hardware audio driver for RP2040 (#17723)
  • Prevent tap dance from wiping dynamic macros (#17880)
  • Feature: pointing device automatic mouse layer (#17962)
  • Allow custom timings for WS2812 PIO driver (#18006)
  • Use TAP_CODE_DELAY for encoder mapping by default. Add docs. (#18098)
  • Move Oneshot mod callbacks to after mods are set (#18101)
  • mcp23018: add return status to init (#18178)
  • Switch over MANUFACTURER and PRODUCT to string literals (#18183)
  • Remove deprecated USBasp and bootloadHID bootloader types (#18195)
  • Chromeos keycodes (#18212)
  • VIA V3 - The Custom UI Update (#18222)
  • Move bootloader.mk to platforms (#18228)
  • Simplify extrakeys sending at the host driver level (#18230)
  • Add unicode mode change callbacks (#18235)
  • Add Elite-Pi converter (#18236)
  • Better handle EEPROM reset keycode (#18244)
  • Work around WinCompose issue for U+Axxx or U+Exxx (#18260)
  • Remove deprecated RESET keycode alias (#18271)
  • Move Bluetooth-related function calls up to host/keyboard level (#18274)
  • Added analog support for WB32 MCU. (#18289)
  • Remove UNICODE_KEY_OSX and UC_OSX (#18290)
  • Add Elite-C to converters (#18309)
  • RN42 driver: small cleanups (#18310)
  • Reboot wb32 devices after flashing (#18323)
  • Refactor Unicode feature (#18333)
  • Move fake EE_HANDS from EEPROM init. (#18352)
  • Enabling Pointing Device support in register code functions (#18363)
  • Start Bluetooth API (#18366)
  • Add UART support for Kinetis boards (#18370)
  • [QP] Add RGB565 surface. Docs clarification, cleanup, tabsification, and reordering. (#18396)
  • Change DRIVER_LED_COUNT to {LED,RGB}_MATRIX_LED_COUNT (#18399)
  • Invert pointing device motion pin for cirque touchpads (#18404)
  • Change {LED,RGB}_DISABLE_TIMEOUT to {LED,RGB}_MATRIX_TIMEOUT (#18415)
  • rewrite locking in split transaction handlers (#18417)
  • remove busy waiting from rgblight functions (#18418)
  • Serial-protocol: always clear receive queue on main half of split keyboard (#18419)
  • Stabilize RP2040 Half-duplex PIO split comms take 2 (#18421)
  • Copy RP2040 vector table to RAM on startup (#18424)
  • Further refactoring of joystick feature (#18437)
  • Start moving towards introspection-based data retrieval (#18441)
  • RP2040: use built-in integer hardware divider and optimized i64 multiplication (#18464)
  • Only trigger encoder callbacks on primary side (#18467)
  • Handle mouse keys more consistently (#18513)
  • Gentoo install script — build newlib with nano USE flag (#18527)
  • Small un/register_code() cleanups (#18544)
  • Refactor more host code (programmable button & digitizer) (#18565)
  • Don't clear keys on layer change unless STRICT_LAYER_RELEASE is enabled (#18577)
  • Remove legacy international keycodes (#18588)
  • onekey: Enable ADC for STM32F072 Discovery (#18592)
  • Implement split comms watchdog (#18599)
  • Remove legacy locking caps/num/scroll keycodes (#18601)
  • Use get_u16_str instead of snprintf in autoshift_timer_report (#18606)
  • Refactor send_extra (#18615)
  • LUFA: Consolidate report sending code (#18629)
  • Relocate US ANSI shifted keycode aliases (#18634)
  • Allow QK_MAKE to work with converters (#18637)
  • Programmable Button API refactor and improve docs (#18641)
  • Initial DD keycode migration (#18643)
  • Remove legacy keycodes, part 2 (#18660)
  • Remove legacy keycodes, part 3 (#18669)
  • Remove legacy keycodes, part 4 (#18683)
  • Revert "mcp23018: add return status to init" (#18709)
  • Remove legacy keycodes, part 5 (#18710)
  • Make QP driver init functions weak. (#18717)
  • Add unit tests for HOLD_ON_OTHER_KEY_PRESS (#18721)
  • Remove legacy keycodes, part 6 (#18740)
  • Remove legacy sendstring keycodes (#18749)
  • 4 Driver support for IS31FL3737 (#18750)
  • Remove quantum/audio from global VPATH (#18753)
  • Widen the ARM Cortex-M family support. Allow USB peripheral change. (#18767)
  • Remove legacy Debug keycode (#18769)
  • add "inertia" mode for mouse keys (#18774)
  • Remove legacy EEPROM clear keycodes (#18782)
  • Remove legacy Grave Escape keycodes (#18787)
  • Deprecate KC_LEAD for QK_LEAD (#18792)
  • Deprecate KC_LOCK for QK_LOCK (#18796)
  • Remove legacy fauxclicky and unicode keycodes (#18800)
  • Generalise CTPC logic from common_features (#18803)
  • Deprecate VLK_TOG for VK_TOGG (#18807)
  • ChibiOS USB: Add a dummy IN callback to work around LLD bugs (#18811)
  • Normalise Joystick and Programmable Button keycodes (#18832)
  • Deprecate CAPS_WORD/CAPSWRD for CW_TOGG (#18834)
  • added BS_TOGG so BS_SWAP and BS_NORM can be on a single key (#18837)
  • Remove some assumptions on sequential keycode ranges (#18838)
  • Deprecate KEY_OVERRIDE_* keycodes for KO_* (#18843)
  • Deprecate ONESHOT_* keycodes for QK_ONE_SHOT_* (#18844)
  • Deprecate SECURE_* keycodes for QK_SECURE_* (#18847)
  • Normalise Space Cadet keycodes (#18864)
  • Allow overriding of dynamic keymap start address. (#18867)
  • Formalise keyboard- and user-specific EEPROM blocks (#18874)
  • Normalise Combo keycodes (#18877)
  • Remove rgblight_list.h (#18878)
  • Remove KC_DELT (#18882)
  • Simplify Keymap Config EEPROM (#18886)
  • Normalise Auto Shift keycodes (#18892)
  • Normalise Autocorrect keycodes (#18893)
  • Normalise Unicode keycodes (#18898)
  • Add Bonsai C4 as a platform board file (#18901)
  • Normalise Dynamic Macro keycodes (#18939)
  • Reduce includes for sequencer header (#18946)
  • Reduce includes for crc header (#18947)
  • Reduce includes for caps_word header (#18948)
  • Reduce includes for wpm header (#18949)
  • Reduce includes for dip_switch header (#18951)
  • Reduce includes for send_string header (#18952)
  • Macro keycode name refactoring (#18958)
  • Remove thermal printer. (#18959)
  • Reworked backlight keycodes. (#18961)
  • Align audio keycode names (#18962)
  • Align dynamic tapping term keycode names (#18963)
  • Align haptic feedback keycode names (#18964)
  • NVRAM refactor, phase 1. (#18969)
  • Normalise MIDI keycodes (#18972)
  • Normalise output selection (Bluetooth) keycodes (#19004)
  • Move EFL wear-leveling driver to be default for F1, F3, F4, L4, G4, WB32, GD32V. (#19020)
  • Digitizer feature improvements (#19034)
  • Joystick feature improvements (#19052)
  • Add default limit to OLED dirty processing (#19068)
  • Change RGB_MATRIX_STARTUP_* defines to RGB_MATRIX_DEFAULT_* (#19079)
  • Change LED_MATRIX_STARTUP_* defines to LED_MATRIX_DEFAULT_* (#19080)
  • Extend eeconfig kb/user datablock API (#19094)
  • Remove .noci functionality (#19122)
  • Remove IGNORE_MOD_TAP_INTERRUPT_PER_KEY in favour of HOLD_ON_OTHER_KEY_PRESS_PER_KEY (#15741)
  • Add combo hook to allow per layer combo reference layers. (#16699)
  • Replace Tapping Force Hold feature with Quick Tap Term (#17007)
  • [Test] Reset timer for every unit test and provide timestamps for log messages (#17028)
  • Bug17281 - Retain momentary layers until the end of tapping (#17282)
  • Detect host OS based on USB fingerprint (#18463)
  • allow locking the matrix state (#18852)
  • Initial DD keymap_extras migration (#19031)
  • Support inverted scan logic for optical switches (#19053)
  • Corrections to uart driver for Chibios platform (#19075)
  • Remaining DD keymap_extras migration (#19110)
  • Add udev rule for the WB32 DFU bootloader (#19135)
  • Add Michi MCU Converter support (#19163)
  • Add Split support for Haptic feedback (#19203)
  • Allow mod-tap hold action on one shot layer (#19214)
  • Remove RGBLIGHT_ANIMATIONS from core (+cleanup) (#19216)
  • Revert WB32 ISO workaround (#19224)
  • Prevent dynamic keymaps from processing layers that don't exist (#19225)
  • Add *_RIGHT configuration for PMW33XX driver (#19243)
  • Remove deprecated led_set_kb (#19273)
  • Tests that caps word stays active after use of OSL (#19303)
  • Allow overriding of keymap/encodermap layer count. (#19325)
  • guard action related debug messages (#19348)
  • use IS_EVENT macro instead of !IS_NOEVENT (#19366)
  • [Test] Introduce VERIFY_AND_CLEAR shorthand (#19370)
  • Add RGB565 and RGB888 color support to Quantum Painter (#19382)
  • Initial DD keycode regen workflow (#19400)
  • Update RGB matrix reactive gradient timer scale (#19415)
  • De-obfuscate random8 functions (#19416)
  • Use random8 for jellybean effect (#19418)
  • Align definition of unicode_map (#19452)
  • Add analog support for RP2040 (#19453)
  • [CI] Regenerate Files (#19463)
  • Build warning when not valid work-tree (#19475)
  • Migrate 'make git-submodule' to CLI command (#19479)
  • Remove cmp checks from Makefile (#19480)
  • Replace list_keyboards.sh with CLI calls (#19485)
  • Remove unused Makefile paths (#19487)
  • Migrate submodule dirty check to CLI (#19488)
  • Remove make all-<platform> build targets (#19496)
  • Relax converter validation within keymap schema (#19544)
  • De-duplicate platform detection (#19545)
  • Add alias support for converters (#19563)
  • Revert "De-duplicate platform detection" (#19564)
  • Add mmoskal/uf2-stm32f103 bootloader support (#19594)
  • usb_main.c: remove CH_KERNEL_MAJOR check (#19597)
  • Use the correct keycode when updating WPM (#19599)
  • De-duplicate platform detection (#19603)
  • Refactor rain pixel function (#19606)
  • ChibiOS: Consolidate report sending code (#19607)
  • Add f303 to tinyuf2 bootloader support (#19620)
  • Refactor Leader key feature (#19632)
  • Split out mcu_selection to platform (#19701)
  • Move MIDI code out of tmk_core (#19704)
  • Remove deprecated Quantum keycodes (#19712)
  • QP: Correct rotation and offset when using LVGL (#19713)
  • Remove usages of config_common.h from config.h files. (#19714)
  • Relocate diode direction definitions (#19715)
  • Normalise Swap Hands keycodes (#19720)
  • Strip out more of config_common (#19722)
  • Remove IS_HOST_LED_ON and migrate usages (#19753)
  • Move more unicode ranges to DD (#19755)
  • Tidy up use of keycode range helpers (#19756)
  • Tri Layer Keys (#19795)
  • Remove matrix_init_quantum/matrix_scan_quantum (#19806)
  • Tidy up use of keycode range helpers (#19813)
  • Remove config.h include from quantum files (#19817)
  • Add rp2040_ce and add elite-pi and helios as alias (#19830)
  • Add swap hands status function (#19831)
  • Align sequencer keycodes (#19875)
  • Align magic keycodes (#19877)
  • Move KC_MISSION_CONTROL/KC_LAUNCHPAD keycodes to core (#19884)
  • Reallocate user/kb keycode ranges (#19907)
  • Reallocate SAFE_RANGE (#19909)
  • Hide hex output when building uf2 (#19940)
  • Refactor keyevent_t for 1ms timing resolution (#15847)
  • PS/2 PIO Driver for RP2040 (#17893)
  • Relocate various modifier defines (#18638)
  • Added PMW3320 driver (#19543)
  • Keymap introspection for combos. (#19670)
  • Add direction to dynamic_macro_record_start_user (#19689)
  • Add Repeat Key ("repeat last key") as a core feature. (#19700)
  • [Cleanup] Quantum Painter (#19825)
  • Improve robustness of AW20216 driver (#19849)
  • Make "detected_host_os()" available on the SLAVE side of the split keyboard (#19854)
  • Add RP2040 Community Edition alias for splitkb.com's Liatris controller (#19966)
  • Remove some use of keymap.h (#19980)
  • Merge upstream changes to uf2conv (#19993)
  • Remove keymap.h (#20004)
  • Remove some use of keymap.h (#20006)
  • Quantum Painter QoL enhancements -- auto-poweroff, auto-flush, buffer sizing (#20013)
  • Make Pointing Device Auto Layer more configurable (#20061)
  • Add last activity functions for pointing device (#20079)
  • Caps Word "Invert on shift" option: pressing Shift inverts the shift state. (#20092)
  • Remove bootloader logic from mcu_selection.mk (#20150)
  • Update qmk_cli container references (#20154)
  • Clean up APA102 config and add DD mapping (#20159)
  • Sync activity timestamps between sides. (#20192)
  • Update Doxygen comments for some headers (#20194)
  • Make IGNORE_MOD_TAP_INTERRUPT the default behaviour for mod-taps (#20211)
  • Add some helpers to tidy up XAP (#20235)
  • Tidy up duplication of MIN/MAX fallback implementations (#20236)
  • Optionally keep intermediate file listings in order to do comparisons between builds. (#20237)
  • Add basic profiler. (#20238)
  • WS2812 driver improvements (#20262)
  • typing_heatmap: Add macro to configure increase steps (#20300)
  • Migrate rgblight.pin and RGB_DI_PIN to ws2812.pin (#20303)
  • Delete config_common.h (#20312)
  • Allow EEPROM_DRIVER from info.json (#20313)
  • rp2040: *_PAL_MODE overridable for this platform too (#20314)
  • Add core/fallback encoder behaviour (#20320)
  • OLED Driver improvements (#20331)
  • [Chore] Remove stray mod tap interrupt defines and per key functions (#20347)
  • Add swap hands toggle functions (#20381)
  • Prevent Tri-Layer keys from stopping caps word (#20398)
  • quantum/action_util.c: Use uint8_t for oneshot_layer_data (#20423)
  • Encoder map direction define. (#20454)
  • Realign and size check EECONFIG structures (#20541)
  • Clean up ISSI drivers, Add IS31FL3736 support (#20572)
  • Add a user callback for pre process record (#20584)
  • Disable debug on QP's internal task (#20623)
  • Add required string header file (#20638)
  • Add Develop is31fl3736 multi drivers (#20642)
  • Support PS/2 mouse 9-bit output with MOUSE_EXTENDED_REPORT (#20734)
  • BIOI G60/Morgan65: use custom Bluetooth driver (#20897)
  • Move pre_process_record_kb() before process_combo() (#20969)
  • Implement UF2 device type id extension tag (#21029)
  • On-each-release tap dance function (#20255)
  • Send a dummy keycode to neutralize flashing modifiers in retro tap and key overrides (#20992)
  • Adds a way to separate tab from AUTO_SHIFT_SPECIAL. (#20996)
  • [Enhancement] More info on apply_autocorrect (#21056)
  • Remove quantum/keymap.h (#21086)
  • Unicodemap keycodes rename (#21092)
  • Merge upstream uf2conv.py changes (#21107)
  • Add a dynamic_macro_stop_recording(void) function. (#21108)
  • platforms: chibios: wait: only define the frequency (#21115)
  • [Enhancement] Decouple autocorrect logic (#21116)
  • Optimisation - Add RGB LED colour set check in drivers (#21134)
  • RGB matrix ws2812 update (#21135)
  • Pixel rain: Refactor the rain light decision operator (#21139)
  • Use unsigned integer for kinetic speed (#21151)
  • Reset matrix_need_update properly in eager debouncing algorithms (#21154)
  • Refactor kinetic mouse key feature (#21164)
  • RGB Matrix limit basic indicators to the last render (#21169)
  • dynamic keymap: Rely on introspection to handle OOB access. (#21247)
  • add VIA support for LED Matrix (#21281)
  • Refactor times inverse of sqrt 2 calculation (#21293)
  • Move protocol makefiles into their respective folders (#21332)
  • Remove use of __flash within LED drivers (#21343)
  • STM32H723 support (#21352)
  • Remove CORTEX_ENABLE_WFI_IDLE from keyboards. (#21353)
  • Get rid of USB_LED_KANA and USB_LED_COMPOSE (#21366)
  • Minor board clean-up after #19780 (#21391)
  • Get rid of USB_LED_SCROLL_LOCK (#21405)
  • Get rid of USB_LED_NUM_LOCK (#21424)
  • Simplify audio_duration_to_ms() and audio_ms_to_duration(), reduce firmware size by a few bytes. (#21427)
  • Allow key override to respect weak mods caused by caps word (#21434)
  • Get rid of USB_LED_CAPS_LOCK (#21436)
  • tmk_core: remove direct quantum.h includes (#21465)
  • bootmagic mods covering the case when swapped mods are pressed at the same time (#21320) (#21472)
  • drivers: remove direct quantum.h includes (#21473)
  • debounce: remove direct quantum.h includes (#21480)
  • keymap_extras: remove direct quantum.h includes (#21485)
  • process_keycode: remove direct quantum.h includes (#21486)
  • Add MOUSEKEY_WHEEL_DELTA documentation (#21493)
  • Reduce needless precision in audio note frequency calculation (#21496)
  • Remove needless precision in additive DAC sample generation (#21498)
  • quantum: remove direct quantum.h includes (#21507)
  • process_combo: restore wait.h header (#21514)
  • Eliminate TMK_COMMON_* in makefiles (#21517)
  • backlight: split AVR PWM and timer drivers (#21540)
  • haptic: naming cleanups (#21551)
  • rgblight: driver selection cleanups (#21558)
  • LED Matrix: driver naming cleanups (#21580)
  • Unify MIDI note calculation with the audio feature (from #21496) (#21588)
  • Allow the user to select a single tone for the additive DAC (#21591)
  • RGB Matrix: driver naming cleanups (#21594)
  • Raw HID: documentation improvements (#21596)
  • Unicode: move keycode aliases to a separate header (#21613)
  • Bluetooth: driver naming cleanups (#21624)
  • Remove old OLED API code (#21651)
  • haptic: further naming cleanups (#21682)
  • Simplfy RGB/LED matrix effect logic (#21703)
  • OLED: driver naming cleanups (#21710)

CLI

  • Reject json with duplicate keys (#18108)
  • Add pointing device support to data driven config (#18215)
  • Disconnect usb.device_ver (#18259)
  • Normalise info_config.h define generation (#18439)
  • Generate DD RGBLight/LED/RGB Matrix animation defines (#18459)
  • Add converter support to keymap.json (#18776)
  • Ensure consistent clean behaviour (#18781)
  • Format DD mappings and schemas (#18924)
  • Publish hjson files as json (#18996)
  • Add raw output option for QGF/QFF files. (#18998)
  • Improve LED config parsing error messages (#19007)
  • Revert "Add pointing device support to data driven config (#18215)" (#19063)
  • Additional DD backlight config (#19124)
  • Publish constants metadata to API (#19143)
  • Automate "Data Driven" migrations? (#17820)
  • Generate encodermap output from keymap.json. (#18915)
  • Publish keymap.json to API (#19167)
  • Apply suggested workaround for #18371 (#19226)
  • Align new-keymap with new-keyboard (#19229)
  • Validate keyboard name before accepting further input (#19394)
  • Implement XAP style merge semantics for DD keycodes (#19397)
  • Allow CLI to flash .uf2 files (#19462)
  • Report submodule status when not valid work-tree (#19474)
  • qmk compile/qmk flash - Validate keymap argument (#19530)
  • Add commit info to version.h (#19542)
  • Remove CLI commands: multibuild, cformat, fileformat, pyformat. (#19629)
  • Print distro in doctor output (#19633)
  • Reduce false positives in layout name validation (#19646)
  • Add mass-compile ability to filter by key existence. (#19885)
  • Add force support to 'qmk git-submodule' (#19705)
  • JSON encoder: improve sorting of layout dict keys (#19974)
  • Increase verbosity of make command (#20172)
  • Append user variables to the end of make command (#20177)
  • Strip API specific output from qmk info (#20234)
  • qmk find: usability improvements (#20440)
  • qmk format-json: Expose full key path and respect sort_keys (#20836)
  • Update json2c to use dump_lines (#21013)
  • Add *_MATRIX_LED_COUNT generation/validation (#19515)
  • Revert "Add *_MATRIX_LED_COUNT generation/validation" (#21109)
  • Add *_MATRIX_LED_COUNT generation (#21110)
  • feat, docs: WB32 flashing (#21217)
  • Improve error messages when layout key matrix row/col is OOB (#21640)

Submodule updates

  • Use a macro to compute the size of arrays at compile time (#18044)
  • Update pico-sdk to version 1.4.0 (#18423)
  • Update ChibiOS[-Contrib], SIO driver, configs (#17915)
  • Quantum Painter - LVGL Integration (#18499)
  • [RP2040] update i2c drivers to reflect peripheral number (#19277)
  • Update pico-sdk to 1.5.0 (#19829)
  • Update ChibiOS to latest stable 21.11.x (#20470)
  • Update ChibiOS-Contrib (#21553)

Others

  • Add DD mapping for LED/RGB Matrix max brightness (#18403)
  • Add DD mapping for LED/RGB Matrix split count (#18408)
  • Add DD mapping for LED/RGB Matrix HSVS steps (#18414)
  • Remove RGBLIGHT_ANIMTION and clean up effect defines for 0-F (#18725)
  • Merge API update workflow (#19121)
  • KC_GESC -> QK_GESC for cn and ja Docs (#19024)
  • Update files changed action (#19172)
  • DD bootmagic config (#19201)
  • Rework input_pressed_state docs (#19267)
  • Change log for Quick Tap Term (#19341)
  • Promote CTPC warning to error (#19565)
  • Run format-text on keyboard PRs (#19656)
  • Change defines by enums (#19793)
  • [Doc]Remove depracted extension links in vscode guide (#19842)
  • Add layer-cycle example (#19069)
  • Remove remnants of Vagrant. (#20000)
  • Develop cleanup IS31FL3736 docs (#20633)
  • Organise config/rules <-> info mappings (#20723)
  • Add a change log for PR20584 (#20998)
  • Rework info.json reference (#21324)
  • Enable auto-merge of develop to riot (#21389)

Bugs

  • Fix layer switching from tap dances by redoing the keymap lookup (#17935)
  • ws2812: replace RGBLED_NUM with driver-owned constant to decouple driver from RGBLEDs/RGBMATRIX defines (#18036)
  • Prevent USB peripheral fault when restarting USB on WB32 MCUs (#18058)
  • Fix mouse report comparison failing on shared EP (fixes KB preventing sleep) (#18060)
  • Fix incorrect bluetooth.driver rules.mk mapping (#18205)
  • Adjust EXTRAKEY_ENABLE ifdefs for send_extra() (#18249)
  • Fix docs regarding cirque pinnacle attenuation (#18279)
  • Avoid repeated calls to rgblight_set() in tight succession when setting lighting layers (#18338)
  • Fix cirque tap from secondary side of split keyboard (#18351)
  • Fix EECONFIG_KEYMAP_UPPER_BYTE init (#18394)
  • Fix retain brightness when val is changed while a layer is active (#18426)
  • Update Chibios to latest 21.11.2 changes for RP2040 XIP deadlock mitigation (#18428)
  • Fix incorrect g_led_config generation (#18431)
  • Fix Per Key LED Indicator Callbacks (#18450)
  • Update chibios-contrib for RP2040 i2c fixes take 2 (#18455)
  • Fix comment of CM_QUES (Colemak question mark) (#18557)
  • ChibiOS: Fix USB bus disconnect handling (#18566)
  • Update ChibiOS-Contrib for USB IRQ and bus handling fixes (#18574)
  • RP2040: only clear RX FIFO for serial pio driver clear (#18581)
  • Fix ST7565 handler deadlock (#18609)
  • Fix/Update ChibiOS hardware ID (#18613)
  • Fix some rp2040 hardware ID errors (#18617)
  • Fix joystick functionality for ChibiOS and OTG (Blackpill) (#18631)
  • fix typo in solenoid.h (#18635)
  • Fix boundary in RGB_MATRIX_INDICATOR_SET_COLOR (#18650)
  • Fix MIDI output endpoint to use the out direction (#18654)
  • Fix mouse use within send_string (#18659)
  • Correctly build keymap.json containing additional config (#18766)
  • Correctly build out of tree keymap.json containing additional config (#18775)
  • Fix garbled test output (#18822)
  • Fix rgb_matrix_set_flags_noeeprom declaration (#18860)
  • Add missing Space Cadet alias (#18876)
  • Fix oled_render to render all dirty blocks. (#18887)
  • compiler.txt: ensure file exists before comparison (#18921)
  • Fix compilation issue with WPM (#18965)
  • Fix keycode parameter extraction to match the new DD keycodes (#18977)
  • Fix jump in mouse_report value when scale changes during cirque get report (#18992)
  • Fixup WS2812 vendor driver (#19028)
  • Add missing prototype for get_hold_on_other_key_press to resolve #18855 (#19056)
  • Fix duplicate key in keyboard.jsonschema (#19058)
  • Fixup keyboard.jsonschema. (#19059)
  • fixed MOUSEKEY_INERTIA on AVR (#19096)
  • Fix encoder_init call order in keyboard_init (#19140)
  • Fixup installation procedure for different Fedora versions. (#19159)
  • Make Magic handling more consistent in Action Keycode handling (#9126)
  • Fix functions when NO_ACTION_TAPPING is defined (#11528)
  • Return USB HID GET_REPORT requests (#14814)
  • Fixed NKRO issue caused by HID_SET_PROTOCOL on Chibios platform (#17588)
  • kint36: do not restart USB stack after wakeup (#19077)
  • Fixes to source generation [mostly typographic] (#19160)
  • Teensy 3.5: do not restart USB stack after wakeup (#19269)
  • Fixing PMW3389.c so it can compile (#19301)
  • UCIS: remove qk_ prefix (#19302)
  • Leader: remove qk_ prefix (#19304)
  • Tap Dance: remove qk_ prefix (#19313)
  • Revert changes to keymap_steno.h (#19412)
  • Use unique name for regen PR branches (#19464)
  • Restore packing of midi note keycodes (#19468)
  • Fix 'Need at least one layout defined in info.json' check (#19537)
  • qmk doctor - Handle permission issues while checking udev (#19548)
  • qmk doctor - Handle timeouts while checking binaries (#19549)
  • Fix CLI community detection (#19562)
  • Fix joystick build for ChibiOS (#19602)
  • Fix converter alias after 19603 (#19644)
  • Fix functions with empty params (#19647)
  • rp2040: fix timer wrap deadlock in ws2812 vendor driver (#19652)
  • analog.c: Fix pinToMux() for STM32F0xx (#19658)
  • Fix quantum ring_buffer for ChibiOS (#19683)
  • Regen keycode_table for unit tests (#19721)
  • Fix midi after recent refactoring (#19723)
  • Fix build failures with OPT = 0 due to inline functions (#19767)
  • Fix tri layer compiler issue if NO_ACTION_LAYER is defined (#19821)
  • Fixup develop compiles. (#19828)
  • Fix Layer Mod mishandling of right-handed mods, a mixup of 5-bit vs. 8-bit mods representation. (#19845)
  • Fix compilation issue for Key Overrides (#19856)
  • Fix regen script for macOS (#19857)
  • Fix compilation error when defining QUICK_TAP_TERM_PER_KEY (#19893)
  • VIA Protocol 12 + fixes (#19916)
  • Strip whitespace from CONVERT_TO variables (#19948)
  • Check all rows have the correct number of columns when parsing g_led_config (#19954)
  • Fix OSMs getting stuck (#20034)
  • Fix rgblight layers when animations aren't enabled (#20097)
  • Fixed split keyboard issue where custom LED indicators could activate incorrect LEDs (#20203) (#20204)
  • Reduce _validate complexity (#20274)
  • qmk info: account for ISO enter when calculating layout X offset (#20325)
  • Disable specific warnings to mitigate compilation problems with KEEP_INTERMEDIATES=yes. (#20339)
  • Fix compilation issue with Swap Hands and Encoder Map (#20348)
  • Fix preprocessor condition for SPLIT_HAPTIC_ENABLE (#20411)
  • Fix compilation issues with PS/2 driver on F4x1 controllers (#20433)
  • Fix capital letters not getting sent with sendstring_swiss_fr.h (#20515)
  • Duplicate board files for blok converter (#20629)
  • Fix Mod-Tap combo regression (#20669)
  • Revert use of legacy wear leveling driver now ChibiOS is fixed (#20806)
  • Fix compilation error introduced by #20669 (#20849)
  • Fix English word list retrieval in qmk generate-autocorrect-data (#20915)
  • Improve keymap folder resolution (#20981)
  • Fix issue with Repeat Key-Combo test (#21005)
  • qmk info - Remove printing of "Keyboard Folder" (#21033)
  • Fix non-functional S3 wakeup / resume from suspense (#19780)
  • [Bugfix] Check NULL pointers on QP (#20481)
  • Fix PS2_MOUSE_INVERT_BUTTONS (#20646)
  • Fix backlight sync on suspend_power_down for split keyboards (#21079)
  • Consolidate KEYBOARD_OUTPUT+KEYMAP_OUTPUT=>INTERMEDIATE_OUTPUT (#21272)
  • Chibios USB: Take into account if host wants remote wakeup or not (#21287)
  • Fix anchor IDs for some API references (#21345)
  • Pixel fractal: Set minimum middle column value (#21365)
  • Fix ili9xxx inversion opcode entry (#21422)
  • Relocate backlight drivers (#21444)
  • Fixup STM32-DFU (#21447)
  • keycode aliases: work around ChibiOS ch.h include guard (#21497)
  • Fix compilation error when Split Watchdog enabled (#21543)
  • Revert " Fix compilation error when Split Watchdog enabled" (#21572)
  • quantum.h: clean up process_keycode includes (#21579)
  • Fix stuck note with square wave in additive DAC (#21589)
  • [Fix] USB HID tests compliance (#21626)
  • Fix Dynamic Macro Compilation for avr-gcc 5.4.0 + Linux (#21653)
  • Unicode, Unicodemap and UCIS refactor (#21659)
  • Audio: Don't play the first note of zero-note melodies (#21661)
  • Fix mouse-key spamming empty reports (#21663)
  • Restore usb suspend wakeup delay (#21676)
  • Fix compilation error for APA on ChibiOS (#21773)
  • fix: restore rgb matrix indicators to jellybean_raindrops animation (#21792)
  • Remove led_matrix.hue_steps and led_matrix.sat_steps from schema (#21827)
  • Revert changes to ChibiOS Suspend Code (#21830)
  • Add "apm32-dfu" in keyboard.jsonschema (#21842)

Firmware 22

Important Changes

ZSA Specific Changes

Core

  • Tentative Teensy 3.5 support (#14420)
  • Make default layer size 16-bit (#15286)
  • Process all changed keys in one scan loop, deprecate QMK_KEYS_PER_SCAN (#15292)
  • Do not enable PERMISSIVE_HOLD when TAPPING_TERM exceeds 500ms (#15674)
  • Allow usage of ChibiOS’s SIO driver for split keyboards (#15907)
  • [Controller] Added board config for custom controller STeMCell (#16287)
  • PoC: Swap Escape and Caps (#16336)
  • Add support for large Mouse Reports (#16371)
  • tap-dance: Restructure code and document in more detail (#16394)
  • Teaching the CLI to flash binaries (#16584)
  • Split ChibiOS usart split driver in protocol and hardware driver part (#16669)
  • Added Wait time to sending each Keys for Dynamic Macros function (#16800)
  • Added Delay time to sending each Keys for VIA Macros function feature (#16810)
  • Improve avr wait_us() (#16879)
  • Improve ENCODER_DEFAULT_POS to recognize lost ticks (#16932)
  • Added emacs as an “operating system” for input mode. (#16949)
  • 24LC32A EEPROM addition (#16990)
  • Refactor steno and add STENO_PROTOCOL = [all|txbolt|geminipr] (#17065)
  • improvements for Cirque Pinnacle trackpads (#17091)
  • Use TAP_HOLD_CAPS_DELAY for KC_LOCKING_CAPS_LOCK (#17099)
  • Improve PS/2 mouse performance (#17111)
  • Update C standard to GNU11, C++ to GNU++14 (#17114)
  • Added ws2812_pwm support for WB32 MCU. (#17142)
  • Added ws2812_spi support for WB32 MCU (#17143)
  • Make bootloader_jump for dualbank STM32 respect STM32_BOOTLOADER_DUAL_BANK_DELAY (#17178)
  • Expose the time of the last change to the LED state (#17222)
  • [Code] Add solid reactive gradient mode (#17228)
  • Add keymap wrappers for introspection into the keymap. (#17229)
  • Ensure eeconfig initialised before reading EEPROM handedness. (#17256)
  • Add uf2-split-* make targets. (#17257)
  • Removes terminal from QMK. (#17258)
  • Make SPI Mode configurable for AW20216 and change default mode to 3 (#17263)
  • Move SPLIT_HAND_PIN setup to split_pre_init (#17271)
  • Allow larger SPLIT_USB_TIMEOUT with default SPLIT_USB_TIMEOUT_POLL (#17272)
  • Feature-ify Send String (#17275)
  • Rework paths for eeprom locations. (#17326)
  • Pca9505/6 driver (#17333)
  • Cirque Attenuation Setting (#17342)
  • Scale brigthness for VIA (#17352)
  • Ensure that rgb+via compiles in all cases (#17355)
  • Wear-leveling EEPROM drivers: embedded_flash, spi_flash, legacy (#17376)
  • In honor of king terry (#17387)
  • tap-dance: Rename tests so that tap_dance is used consistently (#17396)
  • IS31FL3737 Global Current Setting (#17420)
  • [QP] Add ILI9488 support. (#17438)
  • Mark GD32VF103 as ChibiOS-Contrib (#17444)
  • ISSI Drivers Global Current Option (#17448)
  • [Split] pointing transport check (#17481)
  • Cirque trackpad features: circular scroll, inertial cursor (#17482)
  • RGB heatmap skip NO_LED (#17488)
  • Add kb2040 and sparkfun rp2040 converters (#17514)
  • [style] rp2040 stage2 formatting (#17516)
  • Also check /run/media/ for uf2 drives (#17517)
  • RP2040 emulated EEPROM. (#17519)
  • Make debounce algorithms signal matrix changes (#17554)
  • Update PM2040 I2C pins (#17578)
  • Added implementation of WB32 MCU wear_leveling_efl. (#17579)
  • Use Pro Micro SDA/SCL pinout for PM2040 (#17595)
  • Refactor Pixel Fractal effect (#17602)
  • Add Blok RP2040 converter (#17603)
  • Use polled waiting on ChibiOS platforms that support it (#17607)
  • Stabilize Half-duplex RP2040 PIO split comms (#17612)
  • PMW33XX drivers overhaul (#17613)
  • Include stdint.h in avr/i2c_master.h (#17639)
  • Add led matrix support for CKLED2001 (#17643)
  • STM32_USB_USE_OTG1 => USB_ENDPOINTS_ARE_REORDERABLE (#17647)
  • Allow MCU-specific overrides for SPI flags. (#17650)
  • Update LED/RGB Matrix flag function behavior (#17651)
  • Cirque circular scroll: Support POINTING_DEVICE_COMBINED (#17654)
  • Add support for PAW3204 Optical Sensor (#17669)
  • Add LED limits call (#17679)
  • Move Pointing Device code to a subdirectory (#17684)
  • Avoid OOB in dynamic_keymap_reset (#17695)
  • Allow dynamic keymap to compile without via.h (#17703)
  • Use correct angle tune range of +/-127 on PMW33XX (#17708)
  • Add Bonsai C4 converter (#17711)
  • VIA Encoder Map Support (#17734)
  • Move Pointing Device Initialization to after Split Post Initialization (#17740)
  • Add ability to enter bootloader mode from QK_MAKE (#17745)
  • Add tap_code16_delay (#17748)
  • Implement relative mode for Cirque trackpad (#17760)
  • Create generic Pointing Device Pin defines (#17776)
  • Constrain Cirque Pinnacle coordinates (#17803)
  • Refactor/rename postprocess_steno_user → post_process_steno_user (#17823)
  • Add Bit-C PRO converter (#17827)
  • guard RPC invocation by checking RPC info against crc checksum (#17840)
  • Add ST7735 driver to Quantum Painter (#17848)
  • Add minimal STM32F103C6 support (#17853)
  • Remove legacy AVR ssd1306 driver (#17864)
  • Remove tmk_core ‘serial’ code (#17866)
  • Use LT_ZCAR in place of LT_PLUS for modded kc definitions of keymap_lithuanian_qwerty.h (#18000)
  • Remove invisible variation selector-15 from keymap_japanese.h (#18007)
  • define CZ_PERC S(CZ_PLUS) → define CZ_PERC S(CZ_EQL) (#18008)
  • KR_DQUO S(KR_COLN) → KR_DQUO S(KR_QUOT) in keymap_korean.h (#18011)
  • Replace ; by : in the shifted symbols ASCII art of keymap_norman (#18029)
  • Add eeprom defaults for tinyuf2 bootloader (#18042)
  • Remove duplicate COMBINING HORN in keymap_us_extended.h (#18045)
  • Nix shell updates for develop (#18131)

CLI

  • Add cli command to import keyboard|keymap|kbfirmware (#16668)
  • Publish data as part of API generation (#17020)
  • Allow encoder config from info.json (#17295)
  • qmk doctor: show arch for macOS (#17356)
  • Use –exclude-from=.gitignore in place of –exclude-standard (#17399)
  • Improve importer workflow (#17707)
  • Remove legacy bootmagic cli parsing (#18099)
  • Align CLI requirements (#18117)

Submodule updates

  • Add Raspberry Pi RP2040 support (#14877)
  • Update mpaland/printf to eyalroz/printf fork (#16163)
  • Generic wear-leveling algorithm (#16996)
  • Update LUFA submodule (#17368)
  • Update V-USB submodule (#17385)
  • Update ChibiOS-Contrib (#17540)
  • Update to latest ChibiOS-Contrib. (#18016)
  • Update LUFA submodule (#18168)

Others

  • backlight|led ‘on state’ for DD configuration (#17383)
  • Dump out the largest symbols in flash and in RAM. (#17397)
  • Re-order user space rules inclusion (#17459)
  • Update feature_split_keyboard.md to add extra detail about left and right matrices. (#17492)
  • Swap F4x1 default board files away from blackpill (#17522)
  • Add converter docs (#17593)
  • Updates to Pointing Device Docs (#17777)
  • Add deprecated check for RGBLIGHT_ANIMATIONS (#17832)
  • Remove OLED driver Split Common warning (#17862)
  • Revert “ Re-order user space rules inclusion (#17459)” (#18032)

Bugs

  • Minor schema fixes (#14200)
  • Fix buffer size for WS2812 PWM driver (#17046)
  • Fix AVR I2C master 1ms timeout (#17174)
  • Mouse key kinetic mode fix (#17176)
  • Fix RGB heatmap to use XY positions and use correct led limits. (#17184)
  • Fix keys being discarded after using the leader key (#17287)
  • Fixup pimoroni trackball (#17335)
  • Fix via builds broken by brightness scaling (#17354)
  • SPI Bugfix for ChibiOS 21.11.1 => 21.11.2 (#17371)
  • Additional schema fixes (#17414)
  • Fix deadlocks on disconnected secondary half (#17423)
  • [Fix] Fix compilation warning for non-split keebs after #17423 (#17439)
  • Fix Caps Word to treat mod-taps more consistently. (#17463)
  • Fix docs regarding USB_SUSPEND_WAKEUP_DELAY (#17501)
  • Fixup SSD1351 build after #17438 (#17533)
  • Fixup SPI init procedure, SPI EEPROM sequencing (#17534)
  • Fix Caps Word capitalization when used with Combos + Auto Shift. (#17549)
  • Allow for keymaps array to be implemented in a file other than $(KEYMAP_C) (#17559)
  • [Fix] printf update aftermath (#17584)
  • Fix rgbkb/sol/rev2 build issues (#17601)
  • More DD encoder fixes (#17615)
  • [Fix] Make ChibiOS _wait.h independent of quantum.h (#17645)
  • Grammar fixes for docs/feature_converters.md (#17652)
  • Fix compilation issue with Cirque Guestures file (#17656)
  • Fix compile issue with LED Matrix (#17658)
  • Post-bootloader EFL/SPI fixes. (#17661)
  • Fix LED limit loop (#17678)
  • [Fix] Use correct angle tune range of +/-30 on PMW33XX (#17693)
  • Fix AVR compilation of FNV by using standard integer typenames. (#17716)
  • fix syntax error in header file (#17732)
  • Fix custom debug function and sample output (#17790)
  • Fix QK_MAKE’s reboot check (#17795)
  • Chibios: Stop I2C peripheral on transaction error (#17798)
  • Fix ChibiOS i2c_master error codes (#17808)
  • Update ChibiOS Contrib for RP2040 fixes (#17817)
  • RP2040 disable PIO IRQs on serial timeout (#17839)
  • Fix POINTING_DEVICE_GESTURES_SCROLL_ENABLE typo (#17850)
  • Fixup compilation of printf-like functions with uint32_t args. (#17904)
  • Fix issue with #17904. (#17905)
  • Always run pointing device init (#17936)
  • Align TO() max layers with other keycodes (#17989)
  • Fix Bépo’s BP_NNBS (narrow non-breaking space) (#17999)
  • Move Encoder+Encoder Map from generic features (#18018)
  • Fix wrong varaible in encoder block (#18020)
  • Fix LV_CCAR and LV_NCED in keymap_latvian.h (#18025)
  • Use ANSI ASCII art and fix comments for LT_COLN and LT_UNDS in keymap_lithuanian_qwerty.h (#18028)
  • Partially revert some WB32 specific changes (#18038)
  • Fix Emulated EEPROM issue with F466 (#18039)
  • Fix DV_SCLN and DV_COLN in keymap_spanish_dvorak.h (#18043)
  • Fix missing development_board schema entry (#18050)
  • Add key event check to is_tap_record and remove is_tap_key (#18063)
  • Fix GD32VF103 WS2812 PWM driver (#18067)
  • Fix new-keyboard default for RP2040 bootloader (#18100)
  • Fixup F4xx wear-leveling bootloader check (#18102)
  • Fix PID value for the Keyboardio Atreus 2 bootloader (#18116)
  • Add missing SS_LOPT and SS_ROPT defines (#18175)

Firmware 21

Important Changes

  • Convert Planck EZ and Moonlander to dac additive driver
  • New feature: DYNAMIC_TAPPING_TERM_ENABLE (qmk#11036) …
  • Add Retro Shift (Auto Shift for Tap Hold via Retro Tapping) and Custom
  • CI: Create GitHub Actions unit test workflow (qmk#15223) …
  • Add support for deferred executors. (qmk#14859) …
  • Rework and expand Pointing Device support (qmk#14343) …
  • Fix issues with Oneshot disabling (qmk#14934)
  • Fix type of Tap Dance max index variable (qmk#14887)
  • Purge uGFX. (qmk#14720) …
  • [Keyboard] Move Moonlander off 'Proton C' board (qmk#14478)
  • [Keyboard] Move Planck EZ off 'Proton C' board (qmk#14479)
  • Add Support for USB programmable buttons (qmk#12950)
  • eeprom_stm32: implement high density wear leveling (qmk#12567) …
  • Fix Mouse Shared EP functionality (qmk#14136) …
  • Support using a timer for wait_us() on ChibiOS-based boards (qmk#12211) …
  • [Bug] Fix RGB/LED Matrix Suspend code (qmk#14084)
  • Rgb matrix/enable modes explicitly (qmk#13758) …
  • Add HOLD_ON_OTHER_KEY_PRESS option for dual-role keys (qmk#9404) …
  • Trigger a wakeup after USB Reset on ChibiOS. (qmk#12831) …
  • Update LUFA Submodule (2021-07-30) (qmk#13819)
  • [Feature] Key Overrides (qmk#11422)
  • Use single memcmp to determine if matrix changed. (qmk#13064) …
  • Avoid 8-bit timer overflows in debounce algorithms (qmk#12240) …
  • Make Swap Hands use PROGMEM (qmk#12284) …
  • Fix how USB queue overflow is handled in chibios. (qmk#12576) …
  • eeprom_stm32: implement high density wear leveling (qmk#12567) …
  • Audio system overhaul (qmk#11820)
  • Massive folder re-organization of core files
  • qmk console support
  • Bootmagic deprecation
  • Compilation database for VS Code (qmk generate-compilation-database)
  • USB Polling rate is 1kHz by default now
  • Legacy Macros and Action Function system removed
  • Core mcp23018 support (not implemented for Ergodox or Moonlander currently)
  • Combo system overhaul
  • Caps Words
  • Quantum Painter - robust display support
  • Encoder Mapping - keymap like support for encoders
  • Send String overhaul
  • Reboot keycode (soft reset)
  • Oneshot Mod fixes
  • Mousekey fixes

QMK Firmware 0.12.0

Changes Requiring User Action

  • Refactor Jacky's boards (Bear65 and S7 Elephant) (#10528, #11981)
  • Remove handwired/bluepill (#11415)
  • Aplyard Aplx6 Added rev2 & move rev1+rev2 to parent folder (#10973)
  • added unix60, moved together with southpaw75 into fr4 folder (#11195)

Fixes

  • GCC 10 can now compile Drop Alt firmware (#9485)
  • Fix compiling on develop branch (#11409)
  • Fix broken keyboards and keymaps (#11412, #11427, #11448, #11447, #11473, #11584, #11600)
  • Fixed up build dependencies so that generated files are made available before compiling any object files (#11435)
  • Formatting fixes (378edd9, #11594, 27749e1)
  • Include stdbool.h in uart.h to fix compiler errors (#11728)
  • Decouple USB events from the USB interrupt handler in ChibiOS (#10437)
    • Fixes an issue while using Backlight and External EEPROM at the same time that would cause the MCU to lock up.
  • Address wake from sleep instability (#11450)
  • Fix pressing media key on a momentarily activated layer may lead to missing key up events (#11162)
  • Fix an RGB initialisation bug on Massdrop keyboards (#12022)
  • Fix file encoding errors on Windows, and layouts not correctly merging into info.json (#12039)

Additions and Enhancements

  • Allow configuration of serial USART timeout (#11057)
  • Added Sync Timer feature for Split Common keyboards (#10997)
  • Add modifier state to the Split Common transport (#10400)
  • Add Pix keyboard by sendz (sendyyeah/pix) (#11154)
  • Implement option for kinetic mouse movement algorithm for mouse keys (#6739)
  • Improved Language Specific Keycodes for US International and Extended Layouts (#11307)
  • Modified QWIIC_ENABLE in rules.mk to be yes/no choice, adding QWIIC_DRIVERS to allow for inclusion of specific drivers (#11426)
  • Allow AVR-based keyboards to override the bootloader_jump function (#11418)
  • Refine RGBLight Twinkle effect to be smoother (use breathing curve) (#11350)
  • Keep track of last matrix activity (#10730, ab375d3, #11552)
  • fix matrix_io_delay() timing in quantum/matrix.c (#9603)
  • Keep track of encoder activity (#11595)
  • Backport ChibiOS Audio changes from ZSA (#11687)
  • Add support for 8 buttons to mouse report (#10807)
  • Allow post_config.h to be implemented in userspace (#11519)
  • Adds AT90USB162 support (#11570)
  • Stop sounds when suspended (#11553)
  • Revamp spidey3 userspace and keymaps (#11768)
  • Add support for analog USBPD on STM32G4xx (#11824)
  • Master matrix can now be transported to the slave side in Split Common keyboards (#11046)
  • RGBLight: Allow configurable default settings (#11912)
  • Add tap_code_delay(code, delay) (#11913, #11938)

Clean-ups and Optimizations

  • Fix duplicate I2C_KEYMAP_START define (#11237)
  • Rewrite APA102 support for RGBLight (#10894)
  • Update ADB Protocol implementation in TMK Core (#11168)
  • Remove unused action_get_macro() usages in user files (#11165)
  • Remove QMK_KEYBOARD_CONFIG_H (#11576)
  • Remove duplicated housekeeping in arm_atsam (#11672)
  • UART driver refactor (#11637)
  • Move transport.c to QUANTUM_LIB_SRC (#11751)
  • Remove MIDI_ENABLE_STRICT from user keymaps (#11750)
  • Remove legacy print backward compatiblitly (#11805)
  • Migrate mousekey to quantum (#11804)
  • remove deprecated qmk json-keymap (#11823)
  • Remove FAUXCLICKY feature (deprecated) (#11829)
  • Refactor platform logic within print.h (#11863)
  • Audio system overhaul (#11820)
  • Output selection: Remove "USB and BT" option for Bluetooth (#11940)
  • tmk_core/common/action.c: refactor for code size; merge multiple cases into one (#11943)
  • Remove rules and settings from user keymaps that are already defined at keyboard level (#11966)

QMK Infrastructure and Internals

  • bump to python 3.7 (#11408)
  • develop branch is now formatted as part of CI tasks (#11893, #11905, #11907, #11928, #11936)
  • Configure keyboard matrix from info.json (#10817)
  • Validate our JSON data using json_schema (#11101)
  • Use the schema to eliminate custom code (#11108)
  • Add support for specifying BOARD in info.json (#11492)
  • Document how to add data driven configurations (#11502)
  • Process info.json rules ahead of userspace rules (#11542)
  • Remove duplicate manufacturer definitions (#11544)
  • Update list of MCUs in keyboard.jsonschema to mirror qmk.constants.py (#11688)
  • Create a system to map between info.json and config.h/rules.mk (#11548)
  • Make LAYOUT parsing more robust (#12000)

ChibiOS Update and Config Migration

QMK Firmware 0.13.0

Fixes

  • Fix connection issue in split keyboards when slave and OLED display are connected via I2C (fixes #9335) (#11487)
  • Terrazzo: Fix wrong LED Matrix function names (#12561)
  • Apply the "NO_LIMITED_CONTROLLER_CONNECT" fix to atmega16u2 (#12482)
  • Fix comment parsing (#12750)
  • Turn OLED off on suspend in soundmonster Corne keymap (#10419)
  • Fixup build errors on develop branch. (#12723)
  • Fix syntax error when compiling for ARM (#12866)
  • Add missing LED Matrix suspend code to suspend.c (#12878)
  • Fix spelling mistake regarding LED Matrix in split_common. (#12888)
  • [Keymap] Fix QWERTY/DVORAK status output for kzar keymap (#12895)
  • Fixup housekeeping from being invoked twice per loop. (#12933)
  • wait for matrix row signal to go HIGH for every row (#12945)
  • ensure we do not conflict with existing keymap aliases (#12976)
  • [Keyboard] Fix Terrazzo build failure (#12977)
  • Do not hard set config in CPTC files (#11864)

Additions and Enhancements :id=core-additions

  • ARM - Refactor SLEEP_LED to support more platforms (#8403)
  • Add ability to toggle One Shot functionality (#4198)
  • Add RGB Matrix support to Split Common (#11055)
  • Add support for complementary outputs to the ChibiOS WS2812 PWM driver (#11988)
  • Enable RGB Matrix for Corne (#12091)
  • Set default OLED Update Interval for Split Keyboards to improve matrix scan performance (#12107)
  • Add support for MK66F18 (Teensy 3.6) micro controller (#12258)
  • Split RGB Matrix support for RGBKB Zygomorph (#11083)
  • Add baudrate and circular buffer to ARM WS2812 SPI config (#12216)
  • Add keyboard level weak function for slave matrix scan (#12317)
  • Add link to schematic on EasyEDA for XD60 (#12018)
  • Add Config functions for LED Matrix (#12361)
  • Add pin definitions for MK66F18 (#12419)
  • add kinesis/kint36 keyboard (#10171)
  • Add support for producing UF2-format binaries. (#12435)
  • Implement CIE1931 curve for LED Matrix (#12417)
  • Change BOOTMAGIC_ENABLE=yes to use Bootmagic Lite (#12172)
  • Add kzar keymap for Kinesis Advantage (#12444)
  • LED Matrix: suspend code (#12509)
  • LED Matrix: Task system (#12580)
  • Add missing RGB_MODE_TWINKLE / RGB_M_TW keycodes (#11935)
  • Enhancement of WPM feature (#11727)
  • Add Per Key functionality for AutoShift (#11536)
  • LED Matrix: Reactive effect buffers & advanced indicators (#12588)
  • LED Matrix: support for Split keyboards (#12633)
  • add setting to enable infinite timeout for leader key (#6580, #12721)
  • Update ADC driver for STM32F1xx, STM32F3xx, STM32F4xx (#12403)
  • Add initial support for tinyuf2 bootloader (when hosted on F411 blackpill) (#12600)
  • Add support for STM32F446 MCU (#12619)
  • Add STM32L433 and L443 support (#12063)
  • Added OLED fade out support (#12086)
  • New command: qmk console (#12828)
  • LED Matrix: Effects! (#12651)
  • Add setup, clone, and env to the list of commands we allow even with broken modules (#12868)
  • LED Matrix: Documentation (#12685)
  • Add function to allow repeated blinking of one layer (#12237)
  • Add support for up to 4 IS31FL3733 drivers (#12342)
  • Convert Encoder callbacks to be boolean functions (#12805, #12985)
  • [Keymap] Update to Drashna keymap and user code (based on develop) (#12936)
  • Add Full-duplex serial driver for ARM boards (#9842)
  • Document LED_MATRIX_FRAMEBUFFER_EFFECTS (#12987)
  • Backlight: add defines for default level and breathing state (#12560, #13024)
  • Add dire message about LUFA mass storage bootloader (#13014)

Clean-ups and Optimizations

  • Overhaul bootmagic logic to have single entrypoint (#8532)
  • Refactor of USB code within split_common (#11890)
  • Begin the process of deprecating bin/qmk in favor of the global CLI (#12109)
  • LED Matrix: decouple from Backlight (#12054)
  • Remove FUNC() (#12161)
  • Move gpio wait logic to wait.h (#12067)
  • LED Matrix: Clean up includes (#12197)
  • Consistently use bin/qmk when that script is called (#12286)
  • LED Matrix: Additional common_features.mk tweaks (#12187)
  • LED Matrix: Fix up eeconfig code (#12327)
  • Big quantum_keycodes cleanup (#12249)
  • Fix up builds that are now too big for develop branch. (#12495)
  • [Keyboard] kint36: switch to sym_eager_pk debouncing (#12626)
  • [Keyboard] kint2pp: reduce input latency by ≈10ms (#12625)
  • eeprom driver: Refactor where eeprom driver initialisation (and EEPROM emulation initialisation) occurs to make it non-target-specific. (#12671)
  • Change RGB/LED Matrix to use a simple define for USB suspend (#12697, #12770)
  • Remove pointless SERIAL_LINK_ENABLE rules (#12846)
  • Make Swap Hands use PROGMEM (#12284)
  • Remove KEYMAP and LAYOUT_kc (#12160)
  • Rename point_t -> led_point_t (#12864)
  • Deprecate send_unicode_hex_string() (#12602)
  • [Keyboard] Remove redundant legacy and common headers for crkbd (#13023)

QMK Infrastructure and Internals

  • trivial change to trigger api update (b15288fb87)
  • fix some references to bin/qmk that slipped in (#12832)
  • Resolve a number of warnings in qmk generate-api (#12833)
  • Fix another bin/qmk reference (#12856)
  • Use milc.subcommand.config instead of qmk.cli.config (#12915)

QMK Firmware 0.14.0

Core:

  • Arm ps2 mouse interrupt (#6490)
  • Process combos earlier & overlapping combos (#8591)
  • Swap buttons on PS2 Mouse/Trackball (#9205)
  • Add HOLD_ON_OTHER_KEY_PRESS option for dual-role keys (#9404)
  • add yaml_build_options target (#10533)
  • Warn when building a board that uses arm_atsam (#10904)
  • Key Overrides (#11422)
  • Refactor quantum/command.{c,h} for code size & {read,maintain}ability (#11842)
  • Extensible split data sync (#11930)
  • Move print/debug files to quantum (#12069)
  • Unconditionally call led_init_ports (#12116)
  • Support using a timer for wait_us() on ChibiOS-based boards (#12211)
  • Add support for NO_PIN to all matrix types (#12238)
  • Avoid 8-bit timer overflows in debounce algorithms (#12240)
  • Add Per Key exclusions for Haptic Feedback (#12386)
  • Steno combinedkeys (#12538)
  • eeprom_stm32: implement high density wear leveling (#12567)
  • eeprom_i2c driver: added EXTERNAL_EEPROM_WP_PIN configuration option. (#12617)
  • Add CRC8 calculation subsystem to quantum (#12641)
  • Limit saturation for RGB_MATRIX_JELLYBEAN_RAINDROPS (#12669)
  • Add asym_eager_defer_pk debounce type (#12689)
  • Include lib8tion.c into RGB/LED matrix build list (#12699)
  • Add readPort() and some API to 'tmk_core/common/*/gpio.h' (#12754)
  • add wait_cpuclock() macro for AVR and CPU_CLOCK macro (#12755)
  • Trigger a wakeup after USB Reset on ChibiOS. (#12831)
  • Add sync_timer support over serial_link (i.e. Ergodox Infinity) (#12845)
  • Digitizer HID interface : absolute coordinates for mouse cursor (#12851)
  • Add config.h and rules.mk support for data driven keymaps (#12859)
  • Add alternate ldscript for STM32duino (F103xB) (#12914)
  • keymap_extras: Remove deprecated defines (#12949)
  • Retain brightness with lighting layers (#13025)
  • Move optical sensor code to drivers folder (#13044)
  • Change the prototype of matrix_output_unselect_delay() (#13045)
  • Add weak refs on reading rows/cols. (#13062)
  • Use single memcmp to determine if matrix changed. (#13064)
  • Improve layer mask handling (#13065)
  • mousekey: expose current report to users (#13069)
  • ChibiOS SVN mirror script. (#13070)
  • Added right vs left specific pin assignments for dip switch (#13074)
  • make RESET key work with Teensy 4.x (#13076)
  • wire up flash make target for Teensy 4.x (#13077)
  • bump USB spec version in device descriptor to 2.0 (#13078)
  • Unite half-duplex and full-duplex serial drivers (#13081)
  • Add ST7565 LCD driver (#13089)
  • spi_master Kinetis support (#13098)
  • GMMK Pro RGB Support (#13147)
  • Remove dfu-util arguments from mcu_selection (#13150)
  • Add subcommand to generate version.h (#13151)
  • Add oled_invert (#13172)
  • ST7565 invert (#13237)
  • RGB Matrix eeprom write limiting (#13238)
  • Temporary disable of CRC (#13252)
  • Move LED/RGB Matrix code into their own directories (#13257)
  • Skip EEPROM writes once done. (#13293)
  • Remove rgblight stubs (#13302)
  • Allow settable SPI divisor for AW20216 driver, set default to 4 (#13309)
  • Move RGBLight code into its own folder (#13312)
  • Unify matrix for split common and regular matrix (#13330)
  • Relocate RGB/HSV color defs to a more fitting place (#13377)
  • Adds support for STM32L412xB, STM32L422xB. (#13383)
  • Convert Dip Switch callbacks to boolean functions (#13399)
  • Use string literals for SERIAL_NUMBER (#13403)
  • Switch split_common to CRC subsystem (#13418)
  • Improve 'show_build_options' target (#13425)
  • AW20216 use register increment for framebuffer flushes (#13430)
  • Allow invert of SPLIT_HAND_PIN logic (#13433)
  • chibios: bootloader: use integer pointers as volatile (#13450)
  • Refactor OLED to allow easy addition of other types (#13454)
  • Dual RGB Matrix IS31FL3737 driver support to address #13442 (#13457)
  • Enable g_is31_leds PROGMEM for RGB Matrix IS31FL3737 driver (#13480)
  • Switch Ergodox Infinity over to split_common (#13481)
  • Make solo half of split keyboards (more) usable. (#13523)
  • Enable sync of OLED/ST7565 display on/off state on Splits (#13542)
  • Revert "Add rgblight to RGB Matrix VPATH" (#13559)
  • Move SENDSTRING_BELL code to send_string.h (#13566)
  • Migrate platform independent code from tmk_core -> quantum (#13673)
  • Avoid LTO conficts on arm_atsam (#13676)
  • Allow for removal of hysteresis on 4x encoders (#13698)
  • Port new_keyboard.sh to CLI (#13706)
  • Align AW20216 driver (#13712)
  • Haptic: driver-> feature (#13713)
  • Add support for STM32F407x MCUs. (#13718)
  • Remove legacy BACKLIGHT_CUSTOM_DRIVER option (#13731)
  • Minor tidy up of key overrides (#13747)
  • matrix_scan_x -> x_task (#13748)
  • Move some led drivers to common folder (#13749)
  • Allow for higher USB Polling rate on ATSAM boards (#13755)
  • Rgb matrix/enable modes explicitly (#13758)
  • Move chibios board files to allow tmk_core platform migration (#13777)
  • __flash? (#13799)
  • --parallel improvements (#13800)
  • Speed up pimoroni trackball driver (#13823)
  • Add a toggle key for GUI On/Off in Magic feature (#13830)
  • Begin to carve out platform/protocol API - Single main loop (#13843)
  • Remove Full Bootmagic (#13846)
  • Remove backwards compatibility of debounce names (#13877)
  • Relocate platform specific drivers (#13894)
  • Remove ONEHAND_ENABLE (#13920)
  • Move all the flash logic from tmk_core (#13927)
  • adding uf2 flash support for blackpill 401 (#13968)
  • Unify behaviour of wait on AVR (#14025)
  • Add qmk-hid bootloader detection support to qmk console (#14038)
  • Align DIP_SWITCH_PINS_RIGHT implementation with encoders (#14079)
  • Tidy up quantum.c now some of tmk_core has been merged (#14083)
  • Improve pmw3360 sensor and make it more hardware agnostic (#14097)
  • Move nix folder alongside vagrant (#14132)
  • Align some quantum sub-directories (#14134)
  • Revert 14083 && 14144 (#14150)

CLI

  • allow LINE_PINxx for Teensy 4.x pins (#13247)
  • Remove the redundant pin name validation (#13251)
  • Move all our CLI file formatters to the format dir (#13296)
  • Refactor doctor.py into a directory (#13298)
  • Add git and venv info to doctor's output (#13405)
  • Matrix consistency check (#13470)
  • Remove references to info.json width and height in CLI (#13728)
  • Make qmk doctor more lenient about system config (#13804)
  • Defer the expensive search for layout macros until info.json has been processed (#14007)

Submodule updates

  • Update ChibiOS, ChibiOS-Contrib. (#13056)
  • Update LUFA (18-07-2021) and add QMK-HID Bootloader support (#13588)
  • Update LUFA Submodule (2021-07-30) (#13819)
  • Bump gtest (#13885)
  • Update ChibiOS-Contrib, mirroring script. (#13896)
  • Move USB Host Shield and Arduino core to lib/ (#13973)

Others

  • Add examples to RGB Matrix Indicators docs (#12797)

Bugs

  • Fix Indicator LED issues (#12097)
  • Fixing incorrect keymap build when switching between multiple keymap.jsons (#12632)
  • Fix LED Hit Counter for LED/RGB Matrix (#12674)
  • ChibiOS fix O3 and LTO breakage of extra keys and joystick (#12819)
  • Remove the #10088 hotfix for Teensy 3.1-like Input:Club keyboards (#12870)
  • Fix firmware size check with avr-libc 1:2.0.0+Atmel3.6.2-1.1 (Debian bullseye) (#12951)
  • Fix RGB/LED Suspend defines (#13146)
  • Fix overrun in st7565_write_raw when not at (0, 0) (#13209)
  • Upgrades Vagrant box to Debian 10 to fix Docker build error on Debian 9. (#13236)
  • Fix issues with VIA EEPROM init and bring in line with eeconfig functionality (#13243)
  • Fix CRC for AVR and enable again. (#13253)
  • Fix linker error when rgblight and RGB Matrix are both enabled (#13304)
  • Fix building layouts from JSON (#13310)
  • Add rgblight to RGB Matrix VPATH (#13371)
  • Fix two out of bounds accesses from #13330. (#13525)
  • Fixes for clang not being able to run unit tests (#13546)
  • Fixup Audio startup and add to documents (#13606)
  • CLI/Docs: Fix the format commands' name (#13668)
  • Disables rgblight twinkle by default. (#13677)
  • Fix typo in dip switch example (#13688)
  • docs/cli_commands: fix typo (#13697)
  • Include gpio.h in solenoid driver for GPIO Control functions (#13716)
  • Fix pimoroni trackball read address (#13810)
  • Fix Key Override includes (#13831)
  • Fix alignment of USB out report buffer 2 -> 4 (#13838)
  • Fix compilation issue. (#13926)
  • Fix combo_disable (#13988)
  • Fix pmw3360 code to only output debug info if mouse debugging is enabled (#13993)
  • Fix ifdefs for OLED split sync code (#14017)
  • Various fixes from reorg of files (#14051)
  • Fixup atsam builds. (#14052)
  • Fix RGB/LED Matrix Suspend code (#14084)
  • Fix issues with recent keymap.json changes (#14089)
  • Fix LED Matrix suspend code (#14090)
  • Fix up compilation issues. (#14095)
  • Fix copypasta issue with pmw3360 sensor config (#14106)
  • Fix typo (#14118)
  • Fix bootloadHID comments breaking :flash (#14133)
  • Fix Mouse Shared EP functionality (#14136)
  • Short term bodge for firmware size bloat (#14144)
  • Move to correct location (#14171)

QMK Firmware 0.15.0

Core

  • massdrop alt/ctrl: support saving into nvm (#6068)
  • Made AVR backlight pwm resolution configurable (#7521)
  • add 'include keyboard_features.mk' into build_keyboard.mk (#8422)
  • New feature: DYNAMIC_TAPPING_TERM_ENABLE (#11036)
  • Add Retro Shift (Auto Shift for Tap Hold via Retro Tapping) and Custom Auto Shifts (#11059)
  • Add support for RISC-V builds and GD32VF103 MCU (#12508)
  • Add Fractal RGB matrix effects (#12670)
  • Added power tracking api (#12691)
  • haptic: Feature to disable it when usb port is not configured or suspended. (#12692)
  • make the full 4096 bytes of EEPROM work on Teensy 3.6 (#12947)
  • Add Support for USB programmable buttons (#12950)
  • [Tests] Increase QMK test coverage (#13789)
  • Add support for ISSI drivers on both sides of a split keyboard (#13842)
  • Infer more when building features (#13890)
  • Reimplements WPM feature to be smaller & precise (#13902)
  • Move tmk_core/common/<plat> (#13918)
  • Improvements to handling of disconnected split keyboards. (#14033)
  • Add Pixel Rain RGB Matrix effect (#14155)
  • Remove QWIIC_DRIVERS (#14174)
  • Add LM() keys to the list of keys disabled by NO_HAPTIC_MOD (#14181)
  • Implement F4 eeprom (#14195)
  • define to AUTO_SHIFT_DISABLED_AT_STARTUP (#14201)
  • Move feature suspend logic out of platform specific code (#14210)
  • Remove bin/qmk (#14231)
  • Change keyboard level include guards to pragma once (#14248)
  • i2c_master: Add support for reading/writing to 16-bit registers (#14289)
  • Move Audio drivers from quantum to platform drivers folder (#14308)
  • Add RGBW support to PWM and SPI drivers for ChibiOS (#14327)
  • Rework and expand Pointing Device support (#14343)
  • Remove Arduino-style analogRead() (#14348)
  • Macros in JSON keymaps (#14374)
  • Remove unreferenced IBM4704, Sony NEWS, NeXT keyboard code. (#14380)
  • Add HT32 support to core (#14388)
  • Align ChibiOS I2C defs with other drivers (#14399)
  • Move Bluetooth config to common_features.mk (#14404)
  • Westberrytech pr (#14422)
  • Refactor use of STM32_SYSCLK (#14430)
  • Migrate STM32_EEPROM_ENABLE to use EEPROM_DRIVER (#14433)
  • Refactor use of STM32 defines (#14439)
  • Add i2c defaults for Convert to Proton C (#14470)
  • Use opendrain pin with external pullup again (#14474)
  • Add ability to use numpad digits for unicode mode UC_WIN (#14496)
  • Enable de-ghosting for RGB/LED matrix on all ISSI LED drivers (#14508)
  • Relocate Adafruit BLE code (#14530)
  • Initial pass of F405 support (#14584)
  • Further tidy up of STM32 eeprom emulation (#14591)
  • Remove GCC version check from song list inclusion (#14600)
  • Change MK66F18 -> MK66FX1M0 (#14659)
  • Add ifndef to WS2812 timing constraints (#14678)
  • Reuse of EEPROM debounce logic (#14699)
  • Remove sysex API (#14723)
  • Basic keycode overhaul (#14726)
  • Remove SERIAL_LINK feature (#14727)
  • Enable CLI flashing via mdloader (#14729)
  • Correct the Turkish F '?' keycode (TR_QUES) (#14740)
  • Move converter specific tmk_core protocols (#14743)
  • Align PS/2 GPIO defines (#14745)
  • Improve Adafruit BLE configuration defines (#14749)
  • Enable eeprom with F401xE ld (#14752)
  • Clean up LED/RGB Matrix driver config (#14760)
  • Initial USB2422 driver (#14835)
  • Update UART driver API (#14839)
  • Split out arm_atsam shift register logic (#14848)
  • Split out HAPTIC_ENABLE to have separate DRIVER option (#14854)
  • Tidy up LCD_ENABLE/visualizer references (#14855)
  • Remove legacy Makefile functionality (#14858)
  • Add support for deferred executors. (#14859)
  • Change OLED task function to be boolean (#14864)
  • Add a new led driver for Keychron's keyboards. (#14872)
  • Begin to carve out platform/protocol API - Migrate keyboard_* calls (#14888)
  • Rename platform SRC variable (#14894)
  • Relocate PS2 code (#14895)
  • Move USE_CCACHE logic to common location (#14899)
  • Migrate makefile utilities to sub-directory (#14917)
  • Remove legacy handling for ErgoDox Infinity handedness (#14919)
  • Align usbasp flashing behaviour (#14928)
  • Optimize matrix scanning by removing variable shifts (#14947)
  • Stop-gap forward-port Drop LED features for CTRL and ALT (#14967)
  • Remove SERIAL_MOUSE (#14969)
  • Relocate protocol files within tmk_core/common/ (#14972)
  • Move LTO logic from common.mk (#14973)
  • More platform/protocol alignment (#14976)
  • Add support to persist MD LED framework settings (#14980)
  • Enable configuration of PWM frequency for IS31FL3733B (#14983)
  • Remove BOOTMAGIC_ENABLE = lite option (#15002)
  • Manually format develop (#15003)
  • Require explicit enabling of RGB Matrix modes (#15018)
  • Remove deprecated KEYMAP alias (#15037)
  • Fix uart function prototypes (#15162)
  • Rename RGB fractal (#15174)
  • Format code according to conventions (#15195)
  • Format code according to conventions (#15196)
  • Add uint to char functions (#15244)
  • [Tests] Increase QMK test coverage take 2 (#15269)
  • Tidy up adjustable ws2812 timing (#15299)
  • Add script for performing compilation size regression investigations. (#15303)
  • WB32F3G71 config migration with removal of unnecessary items. (#15309)
  • Re-add encoder tests (#15312)

CLI

  • Add check for non-assignment code in rules.mk (#12108)
  • Export list of develop PRs to be merged into master (#13944)
  • remove qmk console, which is now part of the global cli (#14206)
  • New CLI subcommand to create clang-compatible compilation database (compile_commands.json) (#14370)
  • compiledb: query include paths from gcc directly. (#14462)

Submodule updates

  • Update to ChibiOS 20.3.4, support builds against trunk (#14208)
  • Update ChibiOS-Contrib (#14408)
  • Update ChibiOS-Contrib (#14419)
  • Purge uGFX. (#14720)

Others

  • Clean up some code block languages (#14434)
  • Clarify "nested" and "rolling" key sequences (#14655)
  • CI: Create GitHub Actions unit test workflow (#15223)
  • Squeezing space out of AVR (#15243)

Bugs

  • Fix parallel builds w/ LTO on systems where make is not GNU make. (#13955)
  • fix automatic directory for qmk lint (#14215)
  • RN42 Bluetooth typo fix (#14421)
  • fix typo in backlight code from #14439 (#14442)
  • fix compilation issues with USB programmable buttons (#14454)
  • Fix descriptor for USB Programmable Buttons (#14455)
  • Make ChibiOS PAL interactions less STM32 specific - Round 2 (#14456)
  • fix logical minimum in Programmable Button rdesc (#14464)
  • Fix i2c_readReg16 (#14730)
  • Put back eeconfig_update_ functions (#14751)
  • Fix misplaced endif in led_matrix_drivers.c (#14785)
  • Fix builds for ChibiOS + Cortex-M0[+] (#14879)
  • Fix ccache default (#14906)
  • Fix issues with Oneshot disabling (#14934)
  • Fix develop after recent changes (#14975)
  • Fix up issues shown by clang-format of vusb (#15004)
  • Fix unterminated ifdef in ISSI 3733 driver (#15014)
  • Fix build failures caused by #12947. (#15019)
  • Fixup LED matrix. (#15020)
  • Revert to old init order for host driver (#15029)
  • Fixup #15029 (#15031)
  • RISC-V toolchain and picolibc fixes (#15109)
  • gcc10 LTO - Only specify adhlns assembler options at link time (#15115)
  • Add needed include to pointing_device.c (#15167)
  • Fix missing variable for Backlight Breathing (#15199)
  • Revert backlight pins on function call (#15205)
  • Fix timer include in override_wiring.c (#15221)
  • fix broken macro in transport.h (#15239)
  • Short term bodge for PRODUCT warning (#15240)
  • Remove use of __flash due to LTO issues (#15268)
  • Documentation typo fix (#15298)
  • [Core] Hotfix for HOLD_ON_OTHER_KEY_PRESS after #11059 (#15307)
  • Fix call to pointing_device_handle_buttons (#15313)
  • [Develop] Fix ploopy readme typos (#15316)

QMK Firmware 0.16.0

Core

  • Initial pass at data driven new-keyboard subcommand (#12795)
  • Don't send keyboard reports that propagate no changes to the host (#14065)
  • Custom matrix lite support for split keyboards (#14674)
  • Add sym_defer_pr debouncer type (#14948)
  • Add RGB matrix & LED Matrix support for IS31FL3742A, IS31FL3743A, IS31FL3745, IS31FL3746A (#14989)
  • New combo configuration options (#15083)
  • IS31FL3733 driver for LED Matrix (#15088)
  • Add open-drain GPIO support. (#15282)
  • Make (un)register code functions weak (#15285)
  • Split support for pointing devices. (#15304)
  • Added cancel_key_lock function (#15321)
  • Remove matrix_is_modified() and debounce_is_active() (#15349)
  • Change default USB Polling rate to 1kHz (#15352)
  • Implement MAGIC_TOGGLE_CONTROL_CAPSLOCK (#15368)
  • Tidy up existing i2c_master implementations (#15376)
  • Generalize Unicode defines (#15409)
  • Added external spi flash driver. (#15419)
  • Remove Deprecated USB Polling comment from vusb.c (#15420)
  • Expand rotational range for PMW3360 Optical Sensor (#15431)
  • ChibiOS SVN mirror script update (#15435)
  • Refactor bootloader_jump() implementations (#15450)
  • added missing audio_off_user() callback (#15457)
  • Migrate serial_uart usages to UART driver (#15479)
  • Migrate RN42 to UART driver and refactor (#15492)
  • pwm3360 driver cleanup and diff reduction to adns9800 (#15559)
  • Advanced deferred_exec for core-side code. (#15579)
  • Adjust tap_code16 to account for TAP_HOLD_CAPS_DELAY (#15635)
  • Slight tidy up of keyboard task loop (#15725)
  • Unify the key up/down behaviour of RGB keycodes (#15730)
  • Add PMW3389 optical sensor Support (Updated) (#15740)
  • ChibiOS: add support for HID Programmable Buttons (#15787)
  • ChibiOS: shorten USB disconnect state on boot to 50ms (#15805)
  • Add init function to clear previous matrix effect (#15815)
  • Optimize initialization of PMW3360 Sensor (#15821)
  • Add Pixel Flow RGB matrix effect (#15829)
  • PMW3389 Revert Firmware load during Initilization (#15859)
  • Combo TAP_CODE_DELAY and clear_weak_mods (#15866)
  • Relocate matrix_scan_quantum tasks (#15882)
  • Adjust mouse key defaults (#15883)
  • RGB Matrix: Reload from EEPROM (#15923)
  • Enable a default task throttle for split pointing. (#15925)
  • Move mcp23018 driver to core (#15944)
  • Relocate matrix_init_quantum content (#15953)
  • Align location of some host led logic (#15954)
  • Rename some Quantum keycodes (#15968)
  • Migrate more makefile utilities to builddefs sub-directory (#16002)
  • Various Makefile optimisations (#16015)
  • Add support for STM32L432, STM32L442. (#16016)
  • EEPROM refactor: remove eeprom_teensy.c by default, use transient instead (#16020)
  • Deprecate Split Transaction status field (#16023)
  • Rip out old macro and action_function system (#16025)
  • Add a script that simplifies running commands under docker. (#16028)
  • Add support for Q-series on the ckled2001 LED driver (#16051)
  • Remove unused suspend_idle (#16063)
  • Initial migration of suspend callbacks (#16067)
  • Add layout change callbacks to VIA (#16087)
  • Rename AdafruitBLE to BluefruitLE (#16127)
  • Update outputselect to use platform connected state API (#16185)
  • Remove default pointing device driver. (#16190)
  • Add SN74x138 demultiplexer driver (#16217)
  • Standardise error output. (#16220)
  • Followup to #16220, more test error output. (#16221)
  • Misc size regression script improvements. (#16268)
  • Align existing pca9555 driver to better match mcp23018 API (#16277)
  • Size checks print out target firmware file instead (#16290)

CLI

  • develop changelog generator: use the PR title instead (#15537)
  • develop changelog generator: skip code formatting in listing (#16215)

Others

  • Add a clarification to an error message (#15207)
  • Clang-format tweaks (#15906)
  • Add example implementations for compatible MCUs list (#15935)
  • Add version.h to gitignore (#16222)
  • Update keyboard mapping for all moved boards this cycle (#16312)
  • Align docs to new-keyboard behaviour (#16357)
  • Align new-keyboard with recent schema updates (#16378)

Bugs

  • Fixes potential wpm sampling overflow, along with code comment fixes (#15277)
  • Add missing define for unicode common (#15416)
  • Fix for SPI write timing in PMW3360 driver (#15519)
  • Documentation Typo fix (#15538)
  • fix a typo (#15557)
  • Fix avr serial compile (#15589)
  • More AVR GPIO compilation fixes. (#15592)
  • Fix bug and code regression for Split Common (#15603)
  • Include missing string.h include in split (#15606)
  • Fixes for bootloader refactor build failures (#15638)
  • Update pmw3360 driver after reading the datasheet top to bottom. Fix some outdated refs. (#15682)
  • Fix split pointing for analog joystick (#15691)
  • Fix broken bootloader builds in develop. (#15880)
  • Fix optical sensor firmware upload (#15919)
  • Pass in the keyrecord_t of the dual-role/tapping key when calling per-key tap hold functions (#15938)
  • fixed typo in orange HSV colors decalartion (#15976)
  • Fix hack for chibiOS reset name (#15984)
  • Fix right side ws2812 leds having two indices (#15985)
  • Workaround in Makefile for recursive rule matching (#15988)
  • Fix BACKLIGHT_CAPS_LOCK warning (#15999)
  • Fix compilation issues for led indicators (#16001)
  • ChibiOS timer fixes (#16017)
  • Fix bootloader_jump for certain CTRL boards (#16026)
  • Fix up issue with PROGMEM and hand_swap_config (#16027)
  • Don't make EEPROM size assumptions with dynamic keymaps. (#16054)
  • fix missed .noci in reviung move (#16107)
  • Fix issues with Python Tests (#16162)
  • Fixup multibuild filegen (#16166)
  • Remove old .gitignore entry. Add more macOS junk exclusions. (#16167)
  • Fixup builds so that teensy EEPROM knows which MCU it's targeting. (#16168)
  • Create a build error if no bootloader is specified. (#16181)
  • Ensure version.h is recreated each build. (#16188)
  • Add custom to list of valid bootloader types in info.json (#16228)
  • Fix layer_state restoration at end of dynamic macro feature #16208 (#16230)
  • Minor additions #12795 (#16276)
  • Various fixes for matrix _RIGHT handling (#16292)
  • Fix slashes in build_full_test.mk (#16300)
  • ps2/avr: use the correct file name (#16316)
  • Fix compilation of ChibiOS UART driver (#16348)
  • Various fixes for new-keyboard (#16358)
  • Allow NO_PIN within data driven configuration (#16359)

QMK Firmware 0.17.0

Core

  • Quantum Painter (#10174)
  • Add support for encoder mapping. (#13286)
  • Add support for multiple switchs/solenoids to Haptic Feedback engine (#15657)
  • Add compile/make macro to core (#15959)
  • Add Reboot keycode to core (#15990)
  • Add support for multiple sensors to pmw3360 (#15996)
  • Asymmetric encoders, encoder tests. (#16068)
  • Add hacky via support for RGB Matrix (#16086)
  • Allow usage of AVRs minimal printf library (#16266)
  • Squeeze AVR some more with -mrelax and -mcall-prologues (#16269)
  • Heatmap incorrect matrix effect workaround (#16315)
  • Add SN74x154 driver and convert AL1 custom matrix (#16331)
  • Add customizable snake and knight animation increments (#16337)
  • Chibios USB protocol: allow overriding RAW Capacity (#16339)
  • HD44780 driver rework (#16370)
  • Update wb32-dfu (#16438)
  • Remove send_unicode_hex_string() (#16518)
  • Add :flash target for UF2 bootloaders (#16525)
  • Move has_mouse_report_changed function to report.c (#16543)
  • Move Doxygen docs to subdirectory (#16561)
  • Add Caps Word feature to core (#16588)
  • Add non blackpill F4x1 config files (#16600)
  • Force platform pin defs to be included (#16611)
  • Refactor CTPC logic to allow future converters (#16621)
  • Use a mutex guard for split shared memory (#16647)
  • Rename TICK to TICK_EVENT (#16649)
  • Add GET_TAPPING_TERM macro to reduce duplicate code (#16681)
  • add the ability to change the pwm frequency for the IS31FL3737B (#16718)
  • Joystick feature updates (#16732)
  • Add emulated eeprom support for STM32F303xE (#16737)
  • Refactor writePin to work with statements (#16738)
  • Add mechanism to limit available converters (#16783)
  • Implement XAP 'secure' core requirements (#16843)
  • rgblight: Add functions to stop blinking one or all but one layer (#16859)
  • Expose API for hardware unique ID (#16869)
  • Added support for Wb32fq95 (#16871)
  • Provide better config defaults for bluepill boards (#16909)
  • Joystick: Simplify report descriptor and clean up error messages (#16926)
  • Rename keymap_extras headers for consistency (#16939)
  • Sendstring keycode overhaul (#16941)
  • Move disable_jtag to platforms (#16960)
  • Remove ARM pgm_read_word workaround in rgblight (#16961)
  • Warn about LTO with arm_atsam, not ChibiOS. (#17106)

CLI

  • Rework generate-api CLI command to use .build directory (#16441)
  • Change data driven "str" type to represent a quoted string literal (#16516)
  • Bump the 'jsonschema' version (#16635)
  • Add frameworking for development board presets (#16637)
  • Extend 'qmk info' to handle keymap level overrides (#16702)
  • Data driven g_led_config (#16728)
  • Allow new-keyboard to use development_board presets (#16785)
  • Also format *.hpp files. (#16997)

Submodule Updates

  • ChibiOS 21.11.1 update. (#16251)
  • Update ChibiOS-Contrib (#16915)

Others

  • Add warning for CTPC/CONVERT_TO_PROTON_C. (#16782)
  • Add bluepill/blackpill development board presets (#16806)
  • Recommend pillow as part of manual MSYS install (#17133)

Bugs

  • Fix one-shot locked modifiers (#16114)
  • Fix missing definition for non-encoder case. (#16593)
  • Fixup builds. (#16596)
  • Missed some erroneous prints. (#16597)
  • Workaround for pin_def errors on KINETIS based builds (#16614)
  • Fix flipped logic bug with One Shot OS_ON / OS_OFF keys (#16617)
  • Redo workaround for pin_def errors on KINETIS (#16620)
  • Fix oneshot toggle logic (#16630)
  • Mousekeys fix (#16640)
  • Ignore transport defaults if SPLIT_KEYBOARD is unset (#16706)
  • Fixes #16705 : digital rain follows val (#16716)
  • Fix AVR backlight breathing: low brightness limit & exceeding breathing table max index (#16770)
  • Fixed usb read loops not reading until timeout (#16827)
  • [QP] Check BPP capabilities before loading the palette (#16863)
  • Fix #16859. (#16865)
  • Preinstall python dependencies before executing qmk. (#16874)
  • Fixup AVR builds. (#16875)
  • Fix kinetic mouse mode (#16951)
  • Enhancement and fixes of "Secure" feature (#16958)
  • Check for ongoing transfers on the OUT endpoint (#16974)
  • MSYS2 install: add some Python dependencies through Pacman (#17025)
  • Revert "Fix kinetic mouse mode (#16951)" (#17095)
  • Workaround for recent -Werror=array-bounds AVR issues (#17136)
  • Bug fix: Continue Caps Word when AltGr (right Alt) is held. (#17156)

Firmware 20

Important changes

  • 2020 November 28 Breaking Changes Update (#11053)
    • Reconnect the USB if users wake up a computer from the keyboard to restore the USB state (#10088)
    • Initialise EEPROM drivers at startup, instead of upon first execution (#10438)
    • Split RGB_MATRIX_ENABLE into _ENABLE and _DRIVER (#10231)
  • Various Improvements to QMK CLI utility
  • [Core] IS31FL3731/36/37 bug fix (#10612)
  • Add support for 4 IS31FL3731 devices (#10860)
  • hotfix: fix double mouse report sending on shared EP #325
  • Fix int wrapping for timer_expired macros and use MAX defines for consistency and clarity (#10996)
  • add definition WS2812_BYTE_ORDER to fix RGB LED issues (#10184)
  • Fix Issue #9533 - Delayed shift state handling (#11220)
  • [Bug] Fix RGB Matrix Indicators (#11308)
  • Fix Tap-Hold Configs (#11127)
  • [Keyboard] Fix printf calls in Moonlander matrix (#11511)
  • Stop sounds when suspended (#11553)
  • Address wake from sleep instability (#11450)

2020-11-23

  • Add STM32F401/F411 to mcu_selection.mk (#10278)
  • Add STM32F401/F411 to ARM_PROCESSORS (#10362)
  • Add OLED driver function to determine if the screen is currently on (#10382)
  • Allow the use of a single IS31FL3731 LED driver
  • Fix issues with unused variables and functions preventing a clean com
  • Fix Belgian sendstring file (#10443)
  • Fix Belgian sendstring properly (#10444)
  • setrgb(): Use arrow operator (#10451)
  • MSYS2: Switch to arm-none-eabi-gcc package (#10421)
  • Fix SPLIT_KEYBOARD compilation for ATMega*U2, which doesn't have VBUS/OTG control (#10460)
  • IS31FL3741 driver fixup (#10519)
  • OLED driver fixes (#10377)
  • Fix for MIDI sustain effect issue (#10361)
  • Improve LAYOUT macro searching (#9530)
  • CLI: update subcommands to use return instead of exit() (#10323)
  • [CLI] Add c2json (#8817)
  • CLI: Fix MCU lists for qmk info (#10574)
  • CLI: Fix stripping of ANY from Configurator exports (#10585)
  • Fix STM32duino bootloader (#10648)
  • [CLI] Remove check for Input Club boards (#10636)
  • MSYS and WSL installation improvements (#10593)
  • 50-qmk.rules: Move udev rules from documentation into a file (#10664)
  • Fix CLI warning for Massdrop udev rule (#10691)
  • Added EEPROM emulation for STM32F042x6 series processors (#10685)
  • c2json: Fix TypeError on MSYS2 (#10709)
  • Fix RGB matrix for ATmegaxxU2 (#10723)
  • Update shell.nix (#10712)
  • [Core] IS31FL3731/36/37 bug fix (#10612)
  • Allow modified keycodes in Unicode input (#10658)
  • Fix KEYBOARD_SHARED_EP incompatibility with VIA (#9930)
  • Add brightness level API to OLED driver (#10772)
  • qmk info: Add --ascii` flag (#10793)
  • CLI: Add qmk clean (#10785)
  • Add support for 4 IS31FL3731 devices (#10860)
  • New command: qmk lint (#10761)
  • Indicator LEDs as config (#10816)
  • CLI: Udev related fixes and improvements (#10736)
  • Fix typo causing redefined error in keymap_french_osx (#10962)
  • hotfix: fix double mouse report sending on shared EP #325
  • Added mac variant of portuguese keymap (#326)

2021-01-12

  • Recommend use of LED Indicator config (#10895)
  • Add references for is_keyboard_left() (#10850)
  • Remove references to ch-bootloader-jump.patch (#10998)
  • ST7565 tidyup (#10907)
  • Refactor qmk_install.sh (#10681)
  • 2020 November 28 Breaking Changes Update (#11053)
  • Fix int wrapping for timer_expired macros and use MAX defines for consistency and clarity (#10996)
  • nix-shell: add milc dependency (#11086)
  • Add default early-init bootloader to F042/F072. (#11120)
  • Fix missing define to map rgb_matrix function set to rgblight. (#11084)
  • Omit serial number if not defined (#11104)
  • Fix error handling in SPI master. (#11122)
  • Added OLED Initialized checks (#11129)
  • Add definitions for RGB off/black. (#11132)
  • add definition WS2812_BYTE_ORDER to fix RGB LED issues (#10184)
  • Update is31fl3731-simple (#7610)
  • Add missing hardware availability for Plank EZ (#11069)
  • Fixup config template to match <> instead of "" for includes. (#11166)
  • Fix warning logic when running 'qmk format -a' (#11177)
  • Normalise include statements in core code (#11153)
  • Fixed french quotes on canadian multilingual (#11183)
  • Fix incorrect search order for rgblight_breathe_table.h that rgblight.c includes. (#11192)
  • Add i2c 24LC64 eeprom (#11200)
  • CLI-ify rgblight_breathing_table_calc.c (#11174)
  • Normalise include statements in keyboard code (#11185)
  • Run cformat and dos2unix manually (#11235)
  • Various compilation fixes for avr-gcc 10 (#9269)
  • Add the ability to exclude keyboards from travis builds (#11178)
  • simplify qmk doctor to make room for #11208 (#11242)
  • Change keyboard json format to bring it inline with the current api
  • Follow symlinks when listing keyboards. (#11250)
  • Doctor: add check for .git folder (#11208)
  • Fix small typo in V-USB configuration descriptor (#11253)
  • Split of the doctor codebase (#11255)
  • Fix Issue #9533 - Delayed shift state handling (#11220)
  • Partial fix for Issue #9405 - Caps Lock not working with Unicode Map's XP on Linux
  • V-USB: Fix initial dropped keypress (#11263)
  • chibios: honor PLATFORMASM in chibios build (#11219)
  • qmk fileformat`: only print complaints, and fix some of them (#11278)
  • Change include guards in quantum/ to pragma once (#11239)
  • Change include guards in tmk_core/ and drivers/ to pragma once (#11240)
  • Ensure single newline at EOF for core files (#11310)
  • remove some old and unused code from Makefile (#11336)
  • Remove MATRIX_IS_ON macro (#11330)
  • [Bug] Fix RGB Matrix Indicators (#11308)
  • Add missing Debian/Ubuntu dependency to the install script (#11348)
  • Add libusb-devel dependency for fedora (#11287)
  • Remove useless wait in AVR suspend code (#11352)
  • Missed a couple more #pragma onces (#11351)
  • Add target 'check-md5' to build_keyboard.mk (#11338)
  • speed up list_keyboards.sh
  • Return the make exit code for qmk compile and flash (#11402)
  • Fix broken Lighting Layers when RGBLIGHT_MAX_LAYERS > 16 (#11406)
  • Align ChibiOS spi_master behaviour with AVR (#11404)
  • arm_atsam: Use PROGRAM_CMD for :flash target if set (#11424)
  • Homebrew install: ignore pinned formulae in brew upgrade (#11423)
  • Fix Tap-Hold Configs (#11127)
  • Add build debug option to tmk_core/rules.mk (#11324)
  • Fix macOS build
  • [Keyboard] Fix printf calls in Moonlander matrix (#11511)

2021-02-01

  • Stop sounds when suspended (#11553)
  • Address wake from sleep instability (#11450)
  • keymap_fr_ch: undef CH_H (#11537)
  • Lighting Layers should be disabled when suspended (#11442)
  • Add support for shared EP on V-USB boards (#11103)
  • arm_atsam: temporarily lower raw HID endpoint/report size (#11554)
  • Adafruit BLE cleanups (#11556)
  • allow customizing decrease delay of rgb heatmap (#11322)
  • Add BGR byte order for WS2812 drivers (#11562)
  • Improve the compile and flash subcommands (#11334)
  • Generate version.h when compiling json files (#11581)
  • Add syscall fallbacks to ChibiOS builds (#11573)
  • Fixup declaration for _kill, add other missing syscalls, populate errno. (#11608)
  • Fix wrong key when "Music Map" is used with MAJOR_MODE. (#11234)
  • Add stm32-dfu and apm32-dfu to bootloader.mk (#11019)
  • Fix QMK_BUILDDATE (#11641)
  • add get_matrix_scan_rate() to tmk_core/common/keyboard.c (#11489)
  • Add rgblight_reload_from_eeprom() (#11411)
  • quantum.c send char cleanups (#11743)
  • CLI: Fix json flashing (#11765)

Firmware 19

2020-10-28

  • Ad Estonian Keymap (qmk#8527)

2020-09-30

  • Add Kiibohd bootloader type to bootloader.mk (#9908)
  • MSYS2: install packages for dfu-programmer, dfu-util, teensy-loader-cli (#10007)
  • Issue 9942: Add LSA, RSA, RCS, LSA_T, RSA_T, and RCS_T (#9943)
  • MSYS2: install packages for AVR toolchain (#10078)
  • Compiler warning when using WS2812 (#9955)
  • Add noeeprom speed function for RGBLIGHT (#9706)
  • Fix ChibiOS backlight not turning off on suspend (#10114)
  • Remove iWRAP protocol (#9284)
  • Initial work for consolidation of ChibiOS platform files (#8327)
  • Various tidyups for USB descriptor code (#9005)
  • Convert CONSUMER2BLUEFRUIT() and CONSUMER2RN42() macros to static inline functions (#9055)
  • Additional cleanups for V-USB code (#9310)
  • Remove inclusion of adafruit_ble.h from ssd1306.c (#9355)
  • Don't compile outputselect.c if Bluetooth is disabled (#9356)
  • Change analogRead calls to analogReadPin (#9023)
  • Add support for DMAMUX-capable MCU configuration with WS2812 PWM driver. (#9471)
  • F303/Proton-C migration. (#9315)
  • Fix the mousekey scrolling (#9174)
  • Add dual-bank STM32 bootloader support, given GPIO toggle on BOOT0 to charge RC circuit. (#8778)
  • Bigger combo index (#9318)
  • Re-fix the STM32 dual-bank bootloader stuff. (#9738)
  • Disable NKRO on V-USB controllers (#9054)
  • Update features to use Custom Tapping Term when appropriate (#6259)
  • Hid joystick interface (#4226)
  • Tweak the Christmas animation effect to be less harsh on the eyes (#7648)
  • Initialize Layer State on startup (#8318)
  • Add support for hsv->rgb conversion without using CIE curve. (#9856)
  • Noeeprom functions for rgb_matrix (#9487)
  • Fix joystick compile issues (#9949)
  • Fix Czech keycodes (#9987)
  • Add st-flash flash target (#9964)
  • Add ability to dump all makefile variables for the specified target. (#8256)
  • #define AUTO_SHIFT_SETUP (#8441)
  • ARM backlight - timer implementation (#8291)
  • Remove f072 backlight warning (#10040)
  • Remove unused CORTEX_VTOR_INIT (#10053)
  • Update vusb to match 3rd endpoint. (#9020)
  • More Bluetooth refactoring (#9905)
  • Better handle LTO_ENABLE (#9832)
  • Add a method to read the OLED display buffer from user space (#8777)
  • Kiibohd bootloader, take 2 (#10129)
  • Define STM32_DMA_REQUIRED when using DMA-based WS2812 driver on STM32. (#10127)
  • Fix DMA stream ID calculation in ws2812_pwm (#10008)
  • Remove support for Adafruit EZ-Key (#10103)
  • K-Type refactor (#9864)
  • Allow joysticks to be used without analog pins (#10169)
  • format code according to conventions [skip ci]
  • Fixed Spanish keymap extra ES_DIAE symbol (#10211)
  • Update ISSI3741 (#9912)
  • quantum/debounce: rename debouncing algorithms (#9564)
  • Use the force when flashing with dfu-programmer (#10070)
  • [fix] dfu-programmer <0.7 doesn't support --force flag (#10292)
  • [Core] DYNAMIC_KEYMAP_EEPROM_MAX_ADDR check (#10315)
  • Output an error message if LINK_TIME_OPTIMIZATION_ENABLE is set but LTO_ENABLE is not (#10217)
  • Convert ErgoDox EZ to Matrix Lite (qmk#10189)
  • [Keyboard] Update to ZSA Boards (qmk#10119)

2020-10-13

  • Fix issues with suspend code for ZSA split boards (qmk#10640)
    • aka fix issues with keyboard sleep (#316)

Hotfixes

  • Added mac variant of portuguese keymap (#326)
  • feat: adds portuguese OSX contributions
  • feat: adds NO_AUTO_SHIFT_TAB define (#327)
  • [Keyboard] Disable Console on Planck EZ and Moonlander

Firmware 18

02-14-2020

  • Run clang-format manually to fix recently changed files (#7934)
  • Add VIA support for QMK backlight, QMK RGBLight #7911
  • Align VUSB HID descriptors with LUFA/ChibiOS (#7675)
  • Align ATSAM HID descriptors with LUFA/ChibiOS (#7651)
  • Remove entries for Minidox eep files from gitignore (#8077)
  • CLI: add support for list_keymaps (#6978)
  • Convert f072 backlight build error to message (#8177)
  • Fix os detection in OSX python 3.8 (#8187)
  • Use pathlib everywhere we can (#7872)
  • dynamic keymap sanity check (#8181)
  • Made windows driver installation accept y as All to allow CI (#8189)
  • Allow 30us matrix delay to be keyboard/user overridable (#8216)
  • Add Arm Teensys to mcu_selection.mk (#8026)
  • uart.c fix from TMK (#7628)
  • Fix QWIIC OLED for AVR (#7769)
  • Update main.c (#8198)
  • New functionality for cformat (qmk#7893)
  • Improvements to extrakey HID descriptors (qmk#8156)
  • Split - Avoid race condition during matrix_init_quantum (qmk#8235)
  • New feature: PERMISSIVE_HOLD_PER_KEY (qmk#7994)
  • Unconditionally enable ChibiOS syscalls (qmk#8268)
  • Feb 2020 Breaking Changes (qmk#8064)

05-22-2020

  • Use nano specs (#8270)
  • Allow for ChibiOS 20.x (master), as well as enabling ChibiOS-Contrib HAL (qmk#8272)
  • Track master branches for lib/chibios, lib/chibios-contrib, lib/ugfx. (qmk#8273)
  • PWM DMA based RGB Underglow for STM32 (#7928)
  • Clean up includes for glcdfont headers (#7745)
  • Remove duplicate BRTG case (#8277)
  • Fix recent clang-format breaking quantum.c (#8282)
  • Short term fix for conflicting types for 'tfp_printf' (#8157)
  • Prune out pure software pwm && custom driver && remove wrapping BACKLIGHT_PIN (#8041)
  • Add f401 and f411 blackpill examples (#7930)
  • Refactor more backlight to a common location (#8292)
  • Fix typo in uart.c backport and add 32A "support" (#8219)
  • Fix up Arm builds with nix-shell. (#8312)
  • Buffer based OLED panning, write byte to buffer at arbitrary index (#8055)
  • Remove unused LED_BREATHING_TABLE (#8332)
  • Backlight - Carve out a better location for private driver functionality (#8329)
  • Add gcc version detection to qmk doctor (#8338)
  • Refactor rgblight_reconfig.h (#7773)
  • Fix layer debug calls (#8370)
  • Feature: RGBLight layers (#7768)
  • Rename qmk json-keymap to qmk json2c (#8372)
  • Add ADC support for STM32F3 and STM32F0 devices (#7681)
  • Add support for STM32L0/L1 onboard EEPROM. (#8002)
  • use qmk.path.normpath to locate the output file. (#8401)
  • Decouple mouse cursor and mouse wheel in accelerated mode (#6685)
  • Fix pressing two keys with the same keycode but different modifiers (#2710)
  • Add decorators for determining keyboard and keymap based on current directory (#8191)
  • Remove pro_micro.h (#8374)
  • Adding OLED scroll setup functions (#8386)
  • msys2_install.sh: wrap requirements.txt in quotes (#8424)
  • Remove unnecessary import of rgblight.h in tmk_core/protocol//.c (#8432)
  • ARM - ADC cleanup (#8385)
  • Remove qmk archive generation (#8462)
  • CLI: Hide json-keymap subcommand, as it's been deprecated.
  • Remove ACT_COMMAND (#8487)
  • Tidy up report.h (#8486)
  • Fix formatting for report.h (#8512)
  • Add support for Bootmagic lite when using SPLIT_HAND_PIN (#8347)
  • Remove BOOTLOADER_SIZE stuff from template (#8516)
  • Align some ChibiOS build logic (#8461)
  • Add Word Per Minute calculation feature (#8054)
  • Variable combo (#8120)
  • Add Post Processing to process_record (#4892)
  • Add RawHID support to ATSAM (Massdrop boards) (#8530)
  • V-USB: Use manufacturer and product strings from config.h (#7797)
  • Enable SLEEP_LED on ATmega32A (#8531)
  • V-USB: Use structs for USB descriptors (#8572)
  • fixed problem with implicit declaration in quantum/rgblight.c (#8406)
  • CLI: More MSYS2 fixes (#8577)
  • add hid_raw feature to VUSB (#8380)
  • Added USSR anthem. (#8588)
  • Rename UC_OSX (and related constants) to UC_MAC (#8589)
  • Migrate :program logic to :flash (#8631)
  • Miscellaneous cleanups (#8639)
  • Updated V-USB template to allow usbFunctionWriteOut (#8634)
  • Strip out features to allow minimum firmware sizes (#8645)
  • Fix pgm_read_ptr() define for ARM (#8658)
  • Fix AVR ws2812 when ADDRESS_BASE is non zero (#8646)
  • Initial support for ATtiny85 (#8632)
  • Fixes #8541 by getting version from -dumpversion then --version as fallback
  • Use version_arg in ESSENTIAL_BINARIES dict
  • Fix saving output from avrdude and dfu-programmer
  • minor tweaks
  • V-USB remote wakeup (#7627)
  • Doctor: Add avrdude/dfu-util/dfu-programmer version printing (#8678)
  • V-USB: Remove some stuff from usbconfig.h that should not be configur…
  • Correctly handle json keymaps with ANY()
  • spi_master for AVR (#8299)
  • Use milc for config check, requirements fixes
  • Fix compile issues related to NO_ACTION_MACRO/FUNCTION and LTO_ENABLE (#8663)
  • Add PS2_MOUSE_ROTATE to compensate for device orientation (#8650)
  • Various fixes to how timer differences are calculated (#8585)
  • quantum/debounce: Added sym_pk debounce algorithm (#8587)
  • Upgrade gcc version/tweak package installs in Gentoo installation (#8757)
  • Fix bug with layer caching in get_event_keycode (#8693)
  • Add *OPT aliases for *ALT keycodes and macros (#8714)
  • Bugfix for quantum/dip_switch.c (#8731)
  • Add support for hardware and board initialisation overrides. (#8330)
  • Fix AVR SPI parameter configuration, remove timeouts due to sync protocol. (#8775)
  • CLI: Invoke gmake on FreeBSD when using qmk compile.
  • CLI: Use shutil.which to detect gmake, instead of OS check.
  • Miscellaneous stuff: remove clang-complete and autocomplete.sh, fix some rules.mk comments (#8784)
  • MILC: Fix setting config values for store_true and store_false (#8813)
  • Remove old setup scripts (#8811)
  • Remove Atmel FLIP from install scripts and documentation (#8822)
  • Load keymap-level rules.mk when compiling keymap.json (#8841)
  • Move everything to Python 3.6 (#8835)
  • kle2json: fix invocation error
  • kle2info: trim down x and y output
  • Allow some usbconfig.h overrides at the keyboard level (#8647)
  • Add SPI master for ChibiOS/ARM. (#8779)
  • Convert clipping variables in rgblight.c to a structure (#7720)
  • add 'togglePin' convenience function (#8734)
  • QMK-ify some GPIO macros (#8315)
  • Provide a mechanism for split keyboards to process key press on both halves (#9001)
  • Add some usages needed for ChromeOS hosts (#8996)
  • Initial vusb console support (#8559)
  • Remove Bluefruit protocol (#9008)
  • Fix bug in UC_RMOD, add shift and audio support for UC_MOD/UC_RMOD(#8674
  • Add ability to blink lighting layer for a specified duration (#8760)
  • New RGB Lighting effect: Twinkle (#8887)
  • Improve security of avrdude by eliminating the use of well-known names
  • Fix off by one error with oled_write_raw_P (#9045)
  • Optimization for scanning less layers. (#8311)
  • Allow expanding from 8 to 32 RGB Lighting Layers (#8941)
  • One shot support for swap hands (#8590)
  • V-USB Interface reorder (#9090)
  • avoid 'Entering|Leaving directory' messages (#9061)
  • CLI: Tune doctor's udev rule checking to match #8750
  • Adding unit tests for list-keymaps command (#7711)
  • Add query functions for RGB Light and RGB Matrix (#8960)
  • Add SPI 25xx EEPROM support. (#8780)
  • Reorder logic within common_features.mk (#8517)
  • Streamline the macos install process
  • Disable Mousekey Command interface when Constant speed is enabled (#7017)
  • MSYS2 install: bodge out avrdude package installation for USBaspLoader
  • CLI: Improve experience when running qmk setup on FreeBSD. (#8798)
  • Fix ChibiOS FPU build logic (#9132)
  • Fix submodule check (#9155)
  • Allow for overriding RAW endpoint usage page and ID. (#8834)
  • Use LUFA funcs for split_util (#8594)
  • Slight speed increases for matrix scanning (#9150)
  • ARM split - Add uart half duplex transport support (#7987)
  • Initial arm serial partially based on old lets split code (#7072)
  • Remove broken example from Makefile (#9159)
  • CLI: Rework submodule checking (#9162)
  • Fix build. (#9163)

08-08-2020

  • Fix capitalisation of "GitHub" (#9184)
  • CLI: fix json2c subcommand and add/fix tests (#9206)
  • [CLI] Add a subcommand for getting information about a keyboard (#8666)
  • Fix compiling json files (#9210)
  • Fix the path for generated keymaps (#9213)
  • ISSI driver compile error fix (#9169)
  • Fix running qmk info without any arguments (#9218)
  • 2020 May 30 Breaking Changes Update (#9215)
  • Fix build when using IGNORE_MOD_TAP_INTERRUPT_PER_KEY. (#9258)
  • Option to allow lighting layers when RGB Lighting is off (#9051)
  • Fix layer mask size for RGBLIGHT_LAYER_BLINK (#9260)
  • Void Linux: Switch to cross-arm-none-eabi toolchain (#9228)
  • Move dip switch init to back of the init process (#9233)
  • Move encoder_read to common location (#9003)
  • BE_J should map to KC_J (#9243)
  • adds support for the atmega328 (#9043)
  • Fix one shot swaphands compiler error when NO_ACTION_ONESHOT is defined (#9296)
  • CLI: Add ATmega328 and ATtiny85 to supported CPUs (#9371)
  • Standardize how unicode is processed (fixes #8768) (#8770)
  • Fix for One Shot Layer not being cleaned up after some actions (#8832)
  • Parse version better in qmk doctor GCC version checks (#9324)
  • STM32 WS2812 Open Drain Configuration (#9414)
  • Fix incorrect delay when setting WS2812 (and similar) leds (#9302)
  • Support IS31FL3741 and IS31FL3741A. (#9201)
  • update shell.nix (#8910)
  • Change led variable in rgb_matrix_drivers to avoid conflicts (#9412)
  • qmk cformat` (#9500)
  • Fixing MIDI for ARM without NKRO enabled (#9466)
  • Improve keycode handling for RGB (#7677)
  • Send_String: Add Hebrew keymap aliases (#9383)
  • Send_String: feat: add dvorak-fr as extra keymap (#9512)
  • Fix sharing of mouse button state from mousekeys to ps2_mouse (#9124)
  • Make sendstring respect TAP_CODE_DELAY (#9623)
  • Add movement hook to ps2_mouse (#8805)
  • Add missing dependency for Void Linux to util/linux-install.sh (#9637)
  • add SPLIT_HAND_MATRIX_GRID support (#8685)
  • add DIP_SWITCH_MATRIX_GRID support (#8772)
  • Fix typo in freebsd_install.sh (#9655)
  • [Driver] bugfix reset the scaling register flag to FALSE (#9507)
  • Allow for building layouts from keymap.json files.
  • Add TAP_CODE_DELAY to Mod-Tap (#9422)
  • Allowing Pressing the Start Buttons Again to Stop Dynamic Macro Recording (#9446)
  • shell.nix improvements, and fix problems on Darwin (#9551)
  • Refactor ARM backlight (#7959)
  • Fix RGB Matrix using RGBW WS2812 LEDs (#9705)
  • Update new keyboard templates (#9636)
  • OLED driver function to set pixels (#9713)
  • Fixed CA_DOTA key code (#9722)
  • Allow for user song list (#9281)
  • Redefine IS_LAYER_ON/OFF() as aliases for existing layer functions (#6352)
  • MSYS2: Switch to bootloadHID package and bring back avrdude package (#9736)
  • Enable OLED support for Teensy 3.2/LC (#7591)
  • Fix RGB_DISABLE_TIMEOUT overflow warning (#9866) (#9874)
  • Add Indicator flag for RGB Matrix (#9933)
  • [Bug] Fix Swap Hands bug introduced by OSH (#9968)

08-12-2020

  • Set defaults for Mousekey Wheel movement (#303)

Send String

  • Send String Improvements
    • Add Turkish keymap aliases and sendstring LUT (qmk#7676)
    • Add Danish keymap and sendstring LUT (qmk#8218)
    • Add mouse support to SEND_STRING (qmk#8223)
    • A proper send_string() for the Unicode feature (qmk#8155)
    • send_unicode_string(): Add support for code points > 0xFFFF (qmk#8236)
    • Add support for delays in send_string. (qmk#8244)
    • Reduce PROGMEM usage for sendstring LUT (qmk#8109)
    • Update Hungarian keymap and add sendstring LUT (qmk#8220)
    • Update Norwegian keymap and add sendstring LUT (qmk#8300)
    • Update Dvorak, Colemak and Workman keycode aliases (qmk#8217)
    • Update Spanish keymap and sendstring LUT (qmk#8364)
    • Update Swedish keymap and add sendstring LUT (qmk#8365)
    • Add Portuguese keymap and sendstring lookup tables (qmk#8390)
    • Update Plover keymap (qmk#8405)
    • Update Norman keymap and sendstring LUT (qmk#8404)
    • Update Slovenian keymap and add sendstring LUT (qmk#8350)
    • Update Belgian keymap and sendstring LUT (qmk#8349)
    • Update Brazilian keymap and add sendstring LUT (qmk#8435)
    • Update French keymap and sendstring LUT (qmk#8436)
    • Update German keymap and sendstring LUT (qmk#8437)
    • Update Italian keymap and add sendstring LUT (qmk#8438)
    • Update UK keymap and sendstring LUT (qmk#8458)
    • Update Programmer Dvorak keymap and add sendstring LUT (qmk#8456)
    • Fix missing deprecated keycodes for keymap_swedish (qmk#848)
    • Update JIS keymap and sendstring LUT (#8457)
    • Add Finnish keymap and sendstring LUT (qmk#8495)
    • Add Icelandic keymap and sendstring LUT (qmk#8494)
    • Add US International keymap (qmk#8493)
    • Add Czech keymap (qmk#8526)
    • Add Irish keymap (qmk#8528)
    • Add Croatian keymap (#8525)
    • Add Estonian keymap (#8527)
    • Fix IT_APOS backward compatibility define in keymap_italian.h (#8565)
    • Add Latvian keymap and sendstring LUT (#8563) Add Lithuanian keymap and sendstring LUT (#8562) Add Serbian keymaps and sendstring LUT (#8560) Add Slovak keymap and sendstring LUT (#8561) Add Russian keymap Add Korean keymap (#8635) Add Polish keymap (#8637) Add Greek keymap (#8636) Update Italian macOS keymaps and add sendstring LUTs Small corrections to Belgian, Serbian and Slovenian keymaps Update BÉPO keymap and sendstring LUT Added Workman ZXCVM variation (#8686) Update Swiss French/German keymaps and add sendstring LUTs (#8689) Update French and German macOS keymaps and add sendstring LUTs (#8700) Add dvorak's spanish variant to quantum/keymap_extras (#8732) Add Romanian keymap and sendstring LUT (#8852)

Firmware 17

02-04-2020

  • Matrix Lite
    • Move some common matrix code to a common location (#7699)
    • Migrate more custom matrix 'lite' code to core (#7863)
    • Fix CUSTOM_MATRIX lite matrix_scan return code (#7908)

02-11-2020

  • RGB matrix effect - left-right gradient (#7742)
  • Per Key Implementation
    • Add per-key IGNORE_MOD_TAP_INTERRUPT feature (#7838)
    • Cleanup check for PERMISSIVE_HOLD (qmk#7861)
    • Implement and document TAPPING_FORCE_HOLD_PER_KEY (qmk#7859)
  • CLI Improvements
    • CLI: Rework ModemManager check and add udev check
    • MILC: Fix/complete attribute heritance
    • Fix commandline arg merging, small improvements
    • Fix attribute heritance for long commands.
    • Align cformat rules with current CI implementation (#7936)
    • Beef up how qmk doctor works. (#7375)
    • Qmk doctor os check to support newer msys2/w10 installations (#8031)
    • Improve the functionality of qmk.questions (#8020)
    • Add QMK Compile Context Sensitivity (#6884)
    • CI: Add workflow for CLI testing (#7357)
    • Update the flash cli command to use the user config (#8125)
    • use replace() over rename() to have cross-platform overwriting (#8148)
  • Fixes to ChibiOS endpoint code
    • Fix KEYBOARD_SHARED_EP on ChibiOS (#7860)
    • Fix lock LEDs for ChibiOS when using shared endpoints (#7877)
    • Fix printf buffer overflow when cols>16 (#7998)
    • Fix unaligned access with LTO (#7801)
    • format code according to conventions [skip ci]
  • Relocate common backlight functionally (#7273)
  • chibios/usb_main: re-check USB status in send_keyboard after sleeping the thread (#7784)
  • Add ws2812 driver type define (#7888)
  • Remove KEYMAP_SECTION_ENABLE (#7882)
  • Configuration values for starting HSV and speed (#7740)
  • Move rgblight and backlight task to common location (#7733)
  • Enforce definition of DIODE_DIRECTION for non-custom matrix boards (#7915)
  • Un-clang-format usb_descriptor.h (#7216)
  • Add central location for ChibiOS defines (#7542)
  • Remove tmk_core gitignore and gitmodules (#7939)
  • VIA Configurator Refactor (#7268)
  • Fix edge case with Steno and Virtual Serial (#7921)
  • Add additional fixes to EEPROM driver selection (#7274)
  • Ensure setPinInput actually sets input high-Z (#6237)
  • Fix boards which were overriding backlight without setting custom (#7970)
  • Create central board for bluepill
  • Split Code Changes
    • Update split serial code to use driver pattern (qmk#7990)
    • Remove compilation of i2c for arm split
  • Ensure setPinInput actually sets input high-Z (#6237)
  • Update linux installation script (#7897)
  • Improve VIRTSER performance (#7528)
  • Fix misunderstanding of CPPFLAGS and CXXFLAGS
  • Add thread safety around i2c_master for ChibiOS/ARM
  • Fix timer_elapsed() overflow issue ChibiOS boards (#7595)
  • Update dirty submodule make message (#8065)
  • Dedupe extrakey report struct and send functions in V-USB & LUFA (#7993)
  • Relocate grave keycode processing (#8082)
  • Reduce SPLIT_USB_TIMEOUT by 500ms (#7637)
  • Use function for KEYCODE2xxx routines instead of macro (#8101)
  • Remove PJRC USB stack
  • Compile error if ONESHOT_TIMEOUT defined but oneshot disabled (#8100)

Firmware 16

11-04-2019

  • Preliminary Split ARM Stuff (qmk 6543, 6545, 6424, 7053)
    • Disable usb on slave half to resolve random 'lockup' (#7649)
  • ARM - Initial backlight support (qmk#6487)
  • rgblight_task logic fixes (qmk#7214)
  • Correct ARM STM32 I2C frequency. (qmk#7080)
  • Template Updates (qmk#7221)
  • Adds raw write function to the OLED driver (qmk#7237)
    • Add backwards compatibility for oled_write_raw_P on ARM

11-17-2019

  • [Core] Add short form LTO_ENABLE (qmk#7259)
  • Fixes #7256: USB descriptor to identify correctly as MIDI device. (qmk#7258)
  • [Core] Convert Dynamic Macro to a Core Feature (qmk#5948)
  • Set git submodule update depth to 50 (qmk#7269)
  • New and improved lock LED callbacks (qmk#7215)
  • ARM RGB
    • ARM - ws2812 bitbang (qmk#7173)
    • Support RGBLIGHT_SLEEP when ChibiOS boards suspend (qmk#7280)
    • Remove force of debug on within rgblight - causes lockups waiting for hid_listen (qmk#7330)
    • Unify RGB and RGBW commands (qmk#7297)
    • Move Ergodox EZ RGB Light code to custom driver (qmk#7309)
    • SPI DMA based RGB Underglow for STM32 (#7674)
  • Fix LAYER_STATE_8BIT compile issues (qmk#7304)
  • Fix chibios when mouse and nkro disabled (qmk#7312)
  • Add support for newer versions of clang-format, if installed (qmk#7346)
  • QMK CLI Improvements
    • When checking program returncodes treat both 0 and 1 as installed
    • Add cli convert subcommand, from raw KLE to JSON (qmk#6898)
    • Improve a number of things about how MILC operates (#7344)
    • Add flake8 to our test suite and fix all errors (#7379)
    • MILC: Add support for hidden subcommands (#7034)
    • Add pep8-naming to our python linting (#7459)
  • Update Installation Scripts
    • Update ARM GCC on macOS to 8.3 (qmk#7318)
    • Improve and streamline MSYS2 installation (#7232)
    • Install bootloadHid as part of qmk_install (qmk#7463)
    • Fix install for Linux Ubuntu (#7520)
  • Fix shell.nix by pinning nixpkgs (qmk#6213)
  • VUSB Fixes
    • Add support for configurable polling interval and power usage o… (qmk#7336)
    • Set device version from config.h for V-USB boards (#7316)
  • [Core] Cleanup rules.mk for F303 keyboards (qmk#7306)
  • Fix the RGB_MATRIX_RAINBOW_PINWHEELS animation (qmk#7365)
  • Improvements to Solenoid feature (#7369)

12-09-2019

  • SEND_STRING Improvements
    • Add 4-character aliases for sendstring keycodes (#7409)
    • Send string keycode tweaks (#7471)
  • Remove CR when computing BOOTLOADER_SIZE. (#7453)
  • IS31FL3733 Dirty page fix (#7079)
  • Keycode Cleanup
    • clean up quantum.c (#7485)
    • Compile out some keycode processing when features are disabled (#7506)
    • Add shift-to-invert to remaining directional RGB_* keycode pairs (#7484)
    • Relocate magic keycode processing (qmk#7512)
    • Fix breathing toggle when rgb is disabled (#7550)
    • Add short aliases for Magic keycodes (#7541)
    • Fix FORCE_NKRO handling (#7601)

01/02/2020

  • Use clock_prescale_set() from avr-libc (#7540)
  • Remove mbed files (#7605)
  • fixed I2C driver support for stm32f4 (#7526)
  • core: Fix build config in protocol.mk (#7620)
  • Fix ChibiOS USB config for chips which support OTGv1 (#7564)
  • remove SERIAL_SOFT_DEBUG macro (#7625)
  • core: Fix variable init and header include (#7626)
  • [Core] Optimize matrix processing (#7621)
  • Add rules.mk defaults for f103,f072,f042 (#7704)

Firmware v15

12-06-2019

  • WebUSB support (zsa#222)

11-04-2019

  • Refactor ps2avrgb i2c ws2812 to core (qmk#7183)
  • Reduce duplication for ARM/AVR ws2812 RGB Matrix Driver (qmk#7180)
  • Fix held key getting stuck when NKRO is toggled (qmk#6750)
  • Add python-pip as package dependency for archlinux (qmk#7041)
  • Move tmk_core/common/backlight to quantum/backlight (qmk#6710)
  • Fix bug in do_code16() (qmk#6935)
  • Fix small hiccup in snake animation (qmk#6858)

11-03-2019

  • Added uart config for using rn42 with at90usb1286 (qmk#6582)
  • Add binary support to tinyprintf (qmk#7024)
  • Port DEBUG_MATRIX_SCAN_RATE to core (qmk#7029)
  • fix CONVERT_TO_PROTON_C_RXLED pins (qmk#7007)
  • Reorder Raw HID interface to match what the USB spec expects (qmk#6801)
  • Warp util.h functions in extern "C" (qmk#6762)
  • Fix quantum keymapsextra italian (qmk#6779)
  • Port drivers.txt changes from the Toolbox (qmk#6786)
  • add python3 to shell.nix (qmk#6774)
  • Correct casing for DS_Store in .gitignore (qmk#6787)
  • Add support for Void Linux systems to the qmk_install.sh script (qmk#5526)
  • Add support for 328P hardware backlight on B1/B2 (qmk#6776)
  • MILC: Use dashes instead of underscores for subcommands
  • Fix detection of ModemManager (qmk#7076)
  • [CLI] Add qmk list_keyboards (qmk#6927)
  • Use keymap instead of username variable for qmk new_keymap (qmk#6885)
  • Fix qmk doctor bytes-like object is required on linux
  • Configuration system for CLI (qmk#6708)
  • Generalize Tap Dance Layer functions (qmk#6629)
  • Fixing wrapping math logic for timer_expired functions (qmk#6746)
  • Add list-keymaps make target (qmk#5563)
  • DRV2605L Continuous Haptic Feedback Support (qmk#6461)
  • Updated split encoders so indexes are based on left hand encoders first (qmk#6382)
  • Smoother Linear Light Table (qmk#6764)

Released

09-30-2019

  • Increase Ergodox EZ Debounce to 30
  • Update Bootloader.mk (qmk#6698)
  • Created new_keymap.py, python version of new_keymap.sh (qmk#6066)
  • Actually use correct bootloader not found message (qmk#6695)
  • Move Bootloader not found message to global variable (qmk#6688)
  • Add 328P to mcu_selection.mk (qmk#6682)
  • Adafruit BLE: set SPI2X bit only when F_CTU is 8MHz (qmk#6671)
  • Banish some more magic number (qmk#6662)
  • Update docker_build.sh: indentation fix, error echo function (qmk#6659)
  • Make USB polling rate configurable with a define (qmk#6668)
  • Add 16U2, 16U2, and USB646 to mcu_selection.mk (qmk#6566)
  • Fix battery level code in adafruit_ble.cpp (qmk#6648)
  • Add Dip Switch as a core feature (qmk#6140)
  • Add dfu-grogrammer to pacman -S (qmk#6619)
  • Fix msys2 not installing any packages because it can't find clang (qmk#6655)
  • readability enhancements
  • Add support for passing files at the command line
  • CLI command to format C code
  • Remove prescaler define from avr i2c as it was impossible to use (qmk#6617)
  • Fix Redefinition of OLED_TIMEOUT (qmk#6628)
  • Update submodule check to include LUFA (qmk#6661)
  • Fix the LUFA lib to use a submodule instead of just files (qmk#6245)
  • Enforce clang-format (qmk#6292)
  • LUFA USB Descriptor Cleanup (qmk#4871)

08-26-2019

  • Add an alternative method for keyboard discovery to speed up build (qmk#6073)
  • Add support for different encoder pinout for right half of split keyboard (qmk#6521)
  • Remove backslashes from template keymap (qmk#6548)
  • Add ATmega32U2 to mcu_selection.mk (qmk#6561)
  • Add a universal flash command for cli (qmk#6224)
  • Added keycodes for swapping and unswapping the Control and OS keys (qmk#6110)
  • Fixup Bootmagic code (qmk#6386)
  • AVR GPIO macro defines more readable (qmk#5937)
  • Relocate pca9555 driver to core (qmk#6563)
  • Align flashing behaviour of dfu-util (qmk#6578)
  • Add 'bootloadHID' flash target (qmk#5587)
  • Refactor qmk compile-json to qmk compile (qmk#6592)
  • Added OLED Display autoscroll during periods of OLED data inactivity (qmk#6546)
  • Fix Typo in :flash target for missing bootloader (qmk#6615)

08-14-2019

  • Force EEPROM reset on flash (of new versions of firmwarm) (#147)
  • Fix EEConfig init timing issue on Planck EZ (#147)
  • Fix: Shutdown all LEDs before suspend (#148)
  • Set RGB Suspend to default (#149)
  • Fix Layer-Tap on some ARM boards (qmk#6143)

08-08-2019

  • Fix RGB Matrix Cycle Left-Right Animation (qmk#6421)
  • Fix MATRIX_X_PINS_RIGHT ARM compilation (qmk#6395)
  • Add support for TAP_CODE_DELAY to Hold-Tap keys (#5400)
  • Small fix to allow board to override split keyboard master check
  • Change xprintf() calls in rgblight.c to dprintf() (#6363)
  • (OLED) Added support for CR (qmk#6399)
  • Removed print call to resolve #6364 (qmk#6413)
  • [Split] Add config option for DIRECT_PINS_RIGHT (qmk#6479)
  • Fix qmk_install.sh on Windows dropping to command prompt (qmk#6488)
  • MIDI: Fix basic noteon: send correct velocity (qmk#6476)
  • Use the older universal_newlines name instead of text (qmk#6506)
  • Improve backlight PWM pin support (qmk#6202)
  • Use the older name instead of (qmk#6506)
  • Rename QK_TMK(_MAX) to QK_BASIC (qmk#6509)
  • Extend allowed range of tappable keycodes to include modifiers (qmk#5809)
  • Add some defaults for ATmega32A to mcu_selection.mk (qmk#6253)
  • Mask off TD() parameter properly (#6143)

07-21-2019

  • Fix: align planck ez default tapping toggle with ergodox

07-18-2019

  • Update Docker Util Script and Travis to use new base container
  • QMK CLI and JSON Keymap support (qmk#6176)
  • Fix compiling json files (qmk#6340)
  • USBaspLoader bootloader option addition (qmk#6304)
  • add objs-size target to tmk_core/avr.mk (qmk#5490)
  • Add user-overridable callback for cancelling UCIS input (qmk#5564)
  • Remove Lock LED Example from quantum.c (qmk#5636)
  • Sendstring LUT improvements (qmk#5727)
  • Skip unsupported firmware check message in silent mode (qmk#5765)
  • Add sendstring LUTs for French keymaps (qmk#5830)
  • Add out of bound check for Leader Key Sequence array (qmk#5840)
  • shell.nex: downgrade gcc-arm-embedded (qmk#5913)
  • Adding rgb matrix speed into eeprom storage (qmk#5965)
  • Storing Backlight breathing state in EEPROM (qmk#6105)
  • Configure Vagrant to use qmk_base_container (qmk#6194)
  • Make Caps Lock delay more reasonable (qmk#6199)
  • Expand bootloader target to support most AVR boards (qmk#6255)
  • Add ARM I2Cv1 support to i2c_master (qmk#6262)
  • Align ARM i2c_readReg with AVR (qmk#6314)
  • Allow Combo feature to be enabled/disabled live (qmk#6318)
  • Remove the need to specify NUM_OF_ENCODERS for the encoder feature (qmk#6328)

07-16-2019

  • Chore: align mod-tap and mouse keys times with the ergodox ez

07-15-2019

  • Display Firmware size percentage (qmk#6307)
  • Fixing effects to respect user SAT and VAL levels (qmk#6275)
  • Switching rgb_config_t to use HSV struct (qmk#5033)

07-14-2019

  • Add GPLv3 Headers to AVR I2C files

07-09-2019

  • Removed doubled lines in eager_pk.c
  • Use QUANTUM_LIB_SRC for i2c_master.c inclusion (qmk#5617)
  • Fix parentheses in macros, and in general clean up quantum.h (qmk#5021)
  • Remove additional copyrighted songs
  • Fix unselect_rows() in quantum/matrix.c
  • Fix linux_install.sh script for OpenSuse v 15.1 (qmk#6251)
  • Add makefile rules to .editorconfig
  • Fix chibios so the dfu-suffix is only applied once. (qmk#6270)
  • Add copyright year placeholders to new keyboard script (qmk#6280)

06-26-2019

  • Fix br abnt2 keymap compilation error

06-23-2019

  • Properly enable RGB Matrix Sleep functionality
  • Planck EZ layout macro Refactor
  • Add fix for compilation error when I2C and encoder were both enabled for Split Keyboards

06-21-2019

  • Fix swedish $ sign definition

06-14-2019

  • Fixing OLED Driver for 128x64 displays (qmk#6085)
  • Add SH1106 OLED screen support (qmk#5787)
  • Copy AVR Teensy Loader flashing logic to ARM (qmk#6016)
  • Change avr-gcc@7 for MacOS installation script to v8

06-05-2019

  • Fix Eager Per Key and Eager Per Row debouncing stuck keys
  • Add additional pins for Teensy 3.x and LC
  • Parameterize STM32 I2C pin modes and timing parameters. (qmk#5671)
  • Fix compiler error for ATSAM based keyboards
  • Move RGB typedef's into a unified location
  • upgrade gcc-arm-none-eabi from the default 5.4.1 to 6.3.1 due to ARM runtine issues

06-03-2019

  • Overhaul of AutoShift feature (qmk#6067)

05-29-2019

  • Fix TO() and DF() calling layer_state_set_[kb,user] twice (qmk#6003)
  • Fixing matrix_scan so it properly returns changed status
  • Add belgian layour for sendstring (qmk#6008)

05-26-2019

  • Update templates to use proper debounce define
  • Add Solus support for Linux install script

05-16-2019

  • Add RGB Light Effect Range functionality

05-06-2019

  • More readable fix of Mousekeys issue
  • Changes to Split Common and OLED code

05-10-2019

  • Split Common i2c Backlight fix

05-17-2019

  • Add configurable delay to Audio Clicky feature
  • Make delay for Capslock in Hold-Tap functions configurable

05-05-2019

  • New keycode macro (XP) for shifted character pairs using UNICODEMAP, and bugfixes/improvements
  • Add LINK_TIME_OPTIMIZATION_ENABLE to enable LTO and disable problematic features that cause LTO to fail
  • Fix issue with Space Cadet

04-24-2019

  • fix LIB_SRC and QUANTUM_LIB_SRC for ARM
  • Add RGB Split fixes and RGB Names

04-22-2019

  • Init RGB Matrix EEPROM when EEPROM range is defined
  • Make sure NOBITS is set on reset_key
  • Improve Mousekey constant speed mode
  • Add new reactive modes (wide, cross, nexus) for RGB Matrix
  • OLED Driver Features
  • Add Split RGB support

04-18-2019

  • Fix Eager Per Row Debouncing bug

04-16-2019

  • Fix logic for Combo feature (qmk#5610)
  • Fix info.json for Ergodox EZ
  • Add support for WS2812 based RGB Matrix

04-12-2019

  • Add AltGr/RALT support to Send String (qmk#4046)
  • Port DIRECT_PINS from split_common/matrix.c to matrix.c (qmk#5091)
  • Enhancement for Eager debouncing (and Ergodox EZ host sleep fix) (qmk#5621)
Clone this wiki locally