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 - 2023 May 28 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20230528.md","filePath":"ChangeLog/20230528.md"}'); const _sfc_main = { name: "ChangeLog/20230528.md" }; const _hoisted_1 = /* @__PURE__ */ createStaticVNode('

QMK Breaking Changes - 2023 May 28 Changelog

Notable Changes

As per last breaking changes cycle, there has been a lot of emphasis on behind-the-scenes changes, mainly around migration of configurables into info.json files, cleanup of info.json files, additional layout definitions for keyboards, adding support for general community layouts to keyboards, as well as addressing technical debt.

Of note for keyboard designers:

Repeat last key (#19700)

A new pair of keys has been added to QMK -- namely QK_REPEAT_KEY and QK_ALT_REPEAT_KEY (shortened: QK_REP/QK_AREP). These allow you to repeat the last key pressed, or in the case of the alternate key, press the "opposite" of the last key. For example, if you press KC_LEFT, pressing QK_REPEAT_KEY afterwards repeats KC_LEFT, but pressing QK_ALT_REPEAT_KEY instead sends KC_RIGHT.

The full list of default alternate keys is available on the Repeat Key documentation.

To enable these keys, in your keymap's rules.mk, add:

make
REPEAT_KEY_ENABLE = yes

...and add them to your keymap.

User callback for pre process record (#20584)

Two new boolean callback functions, pre_process_record_kb and pre_process_record_user, have been added. They are called at the beginning of process_record, right before process_combo.

Similar to existing *_kb and *_user callback functions, returning false will halt further processing of key events. The pre_process_record_user function will allow user space opportunity to handle or capture an input before it undergoes quantum processing. For example, while action tapping is still resolving the tap or hold output of a mod-tap key, pre_process_record_user can capture the next key record of an input event that follows. That key record can be used to influence the decision of the mod-tap key that is currently undergoing quantum processing.

Consolidate modelm (#14996

Several build targets for the IBM Model M were cluttered in different folders. The maintainers of several Model M replacement controller projects agreed to consolidate them under one common folder.

The list of all moved keyboard locations is listed below.

Changes Requiring User Action

IGNORE_MOD_TAP_INTERRUPT behaviour changes (#20211)

Following up from the last breaking changes cycle, IGNORE_MOD_TAP_INTERRUPT has been removed and if present in keymap code, will now fail to build. The previous functionality for IGNORE_MOD_TAP_INTERRUPT is now default, and should you wish to revert to the old behaviour, you can use HOLD_ON_OTHER_KEY_PRESS instead.

For more information, you are invited to read the section on HOLD_ON_OTHER_KEY_PRESS in the page on Tap-Hold configuration options.

Updated Keyboard Codebases

Old Keyboard NameNew Keyboard Name
ashpil/modelm_usbcibm/model_m/ashpil_usbc
binepad/bn009r2binepad/bn009/r2
converter/modelm101ibm/model_m/teensypp
converter/modelm101_teensy2ibm/model_m/teensy2
converter/modelm_sskibm/model_m_ssk/teensypp_ssk
durgod/dgk6x/hadesdurgod/dgk6x/hades_ansi
handwired/ibm122mibm/model_m_122/ibm122m
jacky_studio/piggy60/hotswapjacky_studio/piggy60/rev1/hotswap
jacky_studio/piggy60/solderjacky_studio/piggy60/rev1/solder
kamigakushijaykeeb/kamigakushi
massdrop/thekeydrop/thekey/v1
massdrop/thekey_v2drop/thekey/v2
mschwingen/modelmibm/model_m/mschwingen
tronguylabs/m122_3270ibm/model_m_122/m122_3270
tronguylabs/m122_3270/blackpillibm/model_m_122/m122_3270/blackpill
tronguylabs/m122_3270/bluepillibm/model_m_122/m122_3270/bluepill
tronguylabs/m122_3270/teensyibm/model_m_122/m122_3270/teensy
yugo_m/model_m_101ibm/model_m/yugo_m

Notable core changes

Encoder functionality fallback (#20320)

For keyboards who have not yet been migrated to encoder map, a default set of encoder functionality is now enabled, gracefully degrading functionality depending on which flags are enabled by the keyboard:

Additionally, this ensures that builds on QMK Configurator produce some sort of usable encoder mapping.

OLED Driver Improvements (#20331)

The "classic" OLED driver picked up support for additional sizes of OLED displays, support for the SH1107 controller, and SPI-based OLED support.

Other configurable items are available and can be found on the OLED Driver page.

Full changelist

Core:

CLI:

Submodule updates:

Keyboards:

Keyboard fixes:

Others:

Bugs:

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