import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.B9AX-CPi.js"; const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2022 August 27 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20220827.md","filePath":"ChangeLog/20220827.md"}'); const _sfc_main = { name: "ChangeLog/20220827.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

QMK Breaking Changes - 2022 August 27 Changelog

Notable Features

Add Raspberry Pi RP2040 support (#14877, #17514, #17516, #17519, #17612, #17512, #17557, #17817, #17839, #18100)

QMK finally picked up support for RP2040-based boards, such as the Raspberry Pi Pico, the Sparkfun Pro Micro RP2040, and the Adafruit KB2040. One of QMK's newest collaborators, @KarlK90, effectively did /micdrop with RP2040, with a massive set of changes to both QMK and the repository QMK uses for the base platform support, ChibiOS[-Contrib]. There has been a flurry of development this breaking changes cycle related to RP2040 from a large number of contributors -- so much so that almost all standard QMK hardware subsystems are supported.

Check the RP2040 platform development page for all supported peripherals and other hardware implementation details.

Allow qmk flash to use prebuilt firmware binaries (#16584)

A long-requested capability of the QMK CLI has been the ability to flash binaries directly, without needing to build a firmware. QMK provides prebuilt develop-based default firmwares on our CI page -- normally people would need QMK Toolbox to flash them. This new functionality written by @Erovia allows qmk flash to be provided the prebuilt file instead, simplifying the workflow for people who haven't got Toolbox available.

Changes Requiring User Action

Default layers dropped from 32 to 16 (#15286)

QMK allows for controlling the maximum number of layers it supports through LAYER_STATE_(8|16|32)BIT. Each definition allows for the same number of maximum layers -- LAYER_STATE_8BIT => 8 layers. There is also a corresponding firmware size decrease that goes along with smaller numbers -- given the vast majority of users don't use more than 16 layers the default has been swapped to 16. AVR users who were not previously specifying their max layer count may see some space freed up as a result.

RESET => QK_BOOT (#17940)

Following the last breaking changes cycle, QMK has been migrating usages of RESET to QK_BOOT due to naming collisions with our upstream board support packages. #17940 converts user keymaps across to use the new keycode name. RESET should also move to QK_BOOT.

Updated Keyboard Codebases

The following keyboards have had their source moved within QMK:

Old Keyboard NameNew Keyboard Name
gentleman65jkeys_design/gentleman65
handwired/hillside/0_1handwired/hillside/48
idobao/id80/v1/ansiidobao/id80/v2/ansi
idobao/id80/v1/isoidobao/id80/v2/iso

Data-driven USB IDs Refactoring (#18152)

QMK has decided to deprecate the specification of USB IDs inside config.h in favour of info.json, eventually leaving data-driven as the only method to specify USB information.

A significant number of keyboards have already been changed on master in a like-for-like fashion, and #18152 performs the same transformations for keyboards already on develop.

Previously in config.h:

c
#define VENDOR_ID    0x1234\n#define PRODUCT_ID   0x5678\n#define DEVICE_VER   0x0001\n#define MANUFACTURER Me\n#define PRODUCT      MyKeyboard

Replaced by info.json:

json
{\n    "keyboard_name": "MyKeyboard",\n    "manufacturer": "Me",\n    "usb": {\n        "vid": "0x1234",\n        "pid": "0x5678",\n        "device_version": "0.0.1"\n    },\n    // ... layouts, etc. ...\n}

Deprecation Schedule

Notable core changes

Board converters (#17514, #17603, #17711, #17827, #17593, #17652, #17595)

Historically QMK had a CONVERT_TO_PROTON_C directive for rules.mk to allow people to replace an AVR-based Pro Micro with a QMK Proton C. Global parts shortages have prompted people to create their own pin-compatible boards -- QMK has made this conversion generic and now allows for drop-in replacements for a lot more boards. see the Converters Feature documentation for the full list of supported replacement boards -- in this breaking changes cycle we've gone from 1 to 7.

Add cli command to import keyboard|keymap|kbfirmware (#16668)

To help with importing keyboards and keymaps from other sources, @zvecr added #16668 which adds a new set of commands to the CLI to automatically import keyboards (qmk import-keyboard -h), keymaps (qmk import-keymap -h), and kbfirmware definitions (qmk import-kbfirmware -h) into QMK.

The now-EOL kbfirmware allowed people who aren't set up with QMK the ability to create keyboard firmwares without requiring a full installation of QMK. Unfortunately, it targets a 7-year-old version of QMK -- adding frustration for users who want the newest features, as well as for QMK maintainers who have to spend time explaining why QMK can't just accept a drive-by code drop from kbfirmware. With any luck, this new command helps both camps!

Generic wear-leveling for EEPROM emulation (#16996, #17376, #18102)

QMK has had the ability to write to internal MCU flash in order to emulate EEPROM for some time now, but it was only limited to a small number of MCUs. The base HAL used by QMK for a large number of ARM devices provides a "proper" embedded MCU flash driver, so @tzarc decoupled the wear-leveling algorithm from the old flash writing code, improved it, wrote some tests, and enabled its use for a much larger number of other devices... including RP2040's XIP flash, and external SPI NOR Flash.

See the EEPROM Driver documentation for more information.

Pointing Device Improvements (#16371, #17111, #17176, #17482, #17776, #17613)

Ever since Pointing Device Driver support and Split Pointing Device support were added by @drashna and @daskygit, there has been increased interest in the development of the pointing device subsystem and its associated code.

Both the PMW33xx and the Cirque Pinnacle implementations have seen a lot of improvement to their code, as has the mouse code in general. Features like circular/edge scrolling for the Cirque, and Kinetic movement for any sensor with "lift detection" (#17482). Additionally, for those that make fast motions with their pointing devices, support for much larger mouse movement reports has been added (#16371).

Other related changes:


Full changelist

Core:

CLI:

Submodule updates:

Keyboards:

Keyboard fixes:

Others:

Bugs:

', 54); const _hoisted_55 = [ _hoisted_1 ]; function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("div", null, _hoisted_55); } const _20220827 = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]); export { __pageData, _20220827 as default };