QMK Breaking Changes - 2026 May 31 Changelog
Notable Changes
Deprecation Notices
In line with the notice period, deprecation notices for larger items are listed here.
Removal of deprecated isLeftHand (25897)
Users must migrate to is_keyboard_left() found in split_util.h instead. For example:
diff
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
- return isLeftHand ? OLED_ROTATION_180 : OLED_ROTATION_0;
+ return is_keyboard_left() ? OLED_ROTATION_180 : OLED_ROTATION_0;
}Removal of usb.force_nkro/FORCE_NKRO (#25262)
Unpicking the assumption that only USB can do NKRO, forcing of NKRO on every boot has been deprecated. As this setting persists, it produces unnecessary user confusion when the various NKRO keycodes (for example NK_TOGG) do not behave as expected.
The new defaults can be configured in the following ways:
json
{
"host": {
"default": {
"nkro": true
}
}
}Full changelist
Core:
- Remove deprecated
isLeftHand(#25897) - Either output Unicode or insert in Leader sequence (#25940)
- Add resolution information to digitizer (#25958)
- Always generate .map files. (#25961)
- Add an
mcu_resetimpl for the kiibohd bootloader. (#25963) - VIA v13 (#26001)
- Added PixArt PMW-3325 mouse sensor driver (#26065)
- Update WL backing store from 16 to 32-bit for AT32 (#26066)
- Refactor Pixel Fractal effect (#26071)
- Minor combo code optimisation (#26073)
- Options to constrain Speculative Hold:
SPECULATIVE_HOLD_ONE_KEYandSPECULATIVE_HOLD_FLOW_TERM. (#26099) - Add includes for std::setw (#26153)
- Bind gtest colour to QMKs 'COLOR' variable (#26159)
- Print correct test names (#26160)
- Ignore Uninteresting test warnings during test teardown (#26161)
- Remove FORCE_NKRO (#26206)
CLI:
- Update lint to check all keymaps within the repo (#25970)
- Fail when a duplicate module name is detected (#26238)
Submodule updates:
- Update ChibiOS, ChibiOS-Contrib. (#25730)
- Revert "Update ChibiOS, ChibiOS-Contrib." (#26074)
- ChibiOS, ChibiOS-Contrib updates (redux) (#26079)
- Bump googletest to v1.16.0 (#26154)
Keyboards:
- Require "url" field to not be empty (#25152)
- Add nomis/rpi_pico_25x1 macropad (#25346)
- Remove override of QK_{LED,RGB}_MATRIX_TOGGLE keycode (#25672)
- Add reverse layout to SouthPad v2 (#25707)
- Adding Handwired Bouvet Macropad (#26040)
- Remove blockader user keymap (#26075)
- Remove deprecated audio pin defines (#26111)
- Remove
OLED_DISPLAY_128X32config (#26190) - Migrate SPLIT_OLED_ENABLE (#26194)
- Add API version assertion for split_data_sync module (#26237)
Others:
Bugs:
- Fix
USER_PRINTstripping outuprintf(#25919) - Fix possible repeat key infinite recursion (#25926)
- Fix
cc-optionon arm-none-eabi-gcc (#26114) - Fix color diagnostics for arm-none-eabi-gcc (#26115)
- Mask out active mods when unregistering after retro tapping (#26127)
- fix
make test:allfailures seen on macOS Tahoe (#26136) - Add workaround for undefined reference to weak function under mingw (#26167)
- fix(ws2812-pwm): allow WS2812_PWM_TICK_FREQUENCY override (#26186)
- Clip mouse report values to the logical range from the USB descriptor. (#26195)
- Align Mouse USB descriptor (#26230)