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

QMK Breaking Changes - 2024 May 26 Changelog

Notable Features

May 2024 brings about another heavy maintenance release of QMK. Of the 209 PRs created this breaking changes cycle against the develop branch, 174 behind-the-scenes PRs (83%!) were aimed at converting, consolidating, and cleaning up keyboards and their configuration data. Not the most glamorous work, but it means QMK is in a much more manageable spot than what it was 3 months prior. The work steadily continues!

Changes Requiring User Action

Updated Keyboard Codebases

One note with updated keyboard names -- historical keyboard names are still considered valid when using External Userspace for builds. If you're already using External Userspace, you do not need to move your keymap inside your repository.

Old Keyboard NameNew Keyboard Name
adkb96adkb96/rev1
canary/canary60rgbcanary/canary60rgb/v1
handwired/meck_tklhandwired/meck_tkl/blackpill_f401
handwired/qc60handwired/qc60/proto
handwired/stef9998/split_5x7handwired/stef9998/split_5x7/rev1
juncojunco/rev1
keaboardkeaboard/rev1
kprepublic/jj40kprepublic/jj40/rev1
kprepublic/jj50kprepublic/jj50/rev1
melgeek/mj65melgeek/mj65/rev3
melgeek/mojo68melgeek/mojo68/rev1
melgeek/mojo75melgeek/mojo75/rev1
melgeek/tegicmelgeek/tegic/rev1
melgeek/z70ultramelgeek/z70ultra/rev1
miiiw/blackio83miiiw/blackio83/rev_0100
murcielagomurcielago/rev1
polillapolilla/rev1
qwertyydoxqwertyydox/rev1
spaceholdings/nebula68bspaceholdings/nebula68b/solder
splittysplitty/rev1
xiudi/xd004xiudi/xd004/v1

Remove deprecated quantum keycodes (#23407)

A bunch of legacy keycodes have been removed -- check the affected keycodes if you run into compilation problems, as it'll show you what the problematic keycodes should be replaced with.

The latest of these were officially deprecated within QMK in the August 2023 breaking changes -- the new keycodes are the way forward.

P3D Spacey Layout Updates (#23329)

This PR removed the LAYOUT macro that was configured for the Spacey. If you have a keymap for this keyboard, you will need to update your keymap using the following steps:

  1. Change your layout macro to LAYOUT_all.
  2. Remove the two KC_NO keycodes following the Space and Delete keys on the bottom row.
  3. Move the keycode for the encoder pushbutton (customarily Mute) to the end of the top row, after the customary Backspace key.
  4. Move the keycode for the Right Arrow to the end of the Shift row, after the Down Arrow key.

MechKeys ACR60 Layout Updates (#23309)

This PR removed and changed some of the layouts that were configured for the ACR60. If you use one of the following layouts, you will need to update your keymap:

LAYOUT_hhkb

  1. Change your layout macro to LAYOUT_60_hhkb.
  2. Remove any keycodes for the key between Left Shift and QWERTY Z.

LAYOUT_true_hhkb

  1. Change your layout macro to LAYOUT_60_true_hhkb.
  2. Remove any keycodes for the key between Left Shift and QWERTY Z.

LAYOUT_directional

  1. Change your layout macro to LAYOUT_60_ansi_arrow_split_bs.
  2. Remove any keycodes for the key between Left Shift and QWERTY Z.
  3. Remove any keycodes for the keys immediately before and after the 1.25u key of Split Spacebar.

If you need split spacebars, you may implement LAYOUT_60_ansi_arrow_split_space_split_bs and change your layout to it, removing the keycode between Left Shift and QWERTY Z.

LAYOUT_mitchsplit

  1. Use LAYOUT_60_ansi_split_space_split_rshift.

Notable core changes

Introduction of keyboard.json (22891)

One longer term goal of QMK is increased maintainability. As part of the continued push towards Data Driven Configuration, the build system has been updated to simplify the existing codebase, and power future workflows.

The keyboard.json configuration file allows the support of a single data file for keyboard level config.

Additionally,

Backwards compatibility of the old system has been maintained, but will be removed in a future breaking changes cycle.

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.

Full changelist

Core:

CLI:

Submodule updates:

Keyboards:

Keyboard fixes:

Bugs:

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