Skip to content

QMK Breaking Changes - 2021 February 27 Changelog

Changes Requiring User Action

The following keyboards have had their source moved within QMK:

Old Keyboard NameNew Keyboard Name
bear_65jacky_studio/bear_65
s7_elephant/rev1jacky_studio/s7_elephant/rev1
s7_elephant/rev2jacky_studio/s7_elephant/rev2
aplx6aplyard/aplx6/rev1
southpaw75fr4/southpaw75

The Aplyard Aplx6 rev2 and the FR4Boards Unix60 have also been added as part of these changes.

Additionally, the handwired/bluepill/bluepill70 keyboard has been removed.

Core Changes

ChibiOS Update and Config Migration

QMK's ChibiOS and ChibiOS-Contrib submodules have been updated to version 20.3.2.

Along with this, QMK now provides default configuration files for all commonly-supported ARM microcontrollers running on ChibiOS. As such, keyboards are now only required to define settings which differ from the defaults, thereby reducing the size of pull requests for keyboards running atop ChibiOS.

QMK Infrastructure and Internals

Python is now required to build QMK. The minimum Python version has been increased to 3.7.

The power of info.json has been massively expanded. Most keyboard parameters can now be expressed in info.json instead of config.h/rules.mk. This should make maintaining keyboards easier, and will enable tooling that can allow non-technical users to add and maintain QMK keyboards without writing any code.

To ease migration a new command has been provided, qmk generate-info-json -kb <keyboard>. You can use this command to generate a complete info.json file for a keyboard and then remove the duplicate information from config.h and rules.mk.

Detailed example showing how to generate a new info.json and identify duplicate keys:

user@hostname:~/qmk_firmware/keyboards/lets_split:0$ qmk generate-info-json > new-info.json
user@hostname:~/qmk_firmware/keyboards/lets_split:0$ mv new-info.json info.json
user@hostname:~/qmk_firmware/keyboards/lets_split:0$ qmk info
⚠ lets_split/rev2: DEBOUNCE in config.h is overwriting debounce in info.json
⚠ lets_split/rev2: DEVICE_VER in config.h is overwriting usb.device_ver in info.json
⚠ lets_split/rev2: DIODE_DIRECTION in config.h is overwriting diode_direction in info.json
⚠ lets_split/rev2: MANUFACTURER in config.h is overwriting manufacturer in info.json
⚠ lets_split/rev2: RGB_DI_PIN in config.h is overwriting rgblight.pin in info.json
⚠ lets_split/rev2: RGBLED_NUM in config.h is overwriting rgblight.led_count in info.json
⚠ lets_split/rev2: PRODUCT_ID in config.h is overwriting usb.pid in info.json
⚠ lets_split/rev2: VENDOR_ID in config.h is overwriting usb.vid in info.json
⚠ lets_split/rev2: Matrix pins are specified in both info.json and config.h, the config.h values win.
⚠ lets_split/rev2: LAYOUTS in rules.mk is overwriting community_layouts in info.json
⚠ lets_split/rev2: Feature bootmagic is specified in both info.json and rules.mk, the rules.mk value wins.
⚠ lets_split/rev2: Feature mousekey is specified in both info.json and rules.mk, the rules.mk value wins.
⚠ lets_split/rev2: Feature extrakey is specified in both info.json and rules.mk, the rules.mk value wins.
⚠ lets_split/rev2: Feature console is specified in both info.json and rules.mk, the rules.mk value wins.
⚠ lets_split/rev2: Feature command is specified in both info.json and rules.mk, the rules.mk value wins.
⚠ lets_split/rev2: Feature nkro is specified in both info.json and rules.mk, the rules.mk value wins.
⚠ lets_split/rev2: Feature backlight is specified in both info.json and rules.mk, the rules.mk value wins.
⚠ lets_split/rev2: Feature midi is specified in both info.json and rules.mk, the rules.mk value wins.
⚠ lets_split/rev2: Feature audio is specified in both info.json and rules.mk, the rules.mk value wins.
⚠ lets_split/rev2: Feature unicode is specified in both info.json and rules.mk, the rules.mk value wins.
⚠ lets_split/rev2: Feature bluetooth is specified in both info.json and rules.mk, the rules.mk value wins.
⚠ lets_split/rev2: Feature rgblight is specified in both info.json and rules.mk, the rules.mk value wins.
⚠ lets_split/rev2: Feature sleep_led is specified in both info.json and rules.mk, the rules.mk value wins.
Keyboard Name: Let's Split
Manufacturer: Wootpatoot
Website:
Maintainer: QMK Community
Keyboard Folder: lets_split/rev2
Layouts: LAYOUT, LAYOUT_ortho_4x12
Size: 13 x 4
Processor: atmega32u4
Bootloader: caterina

Detailed Change List

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