QMK Breaking Changes - 2026 Feb 22 Changelog
Deprecation Notices
Removal of deprecated GPIO defines (#26028)
QMK has long used Arduino-style GPIO naming conventions. This has been confusing for users, as over time they've had new variations added, as well as users mistakenly thinking that QMK supports the rest of the Arduino ecosystem.
The decision was made to rename the GPIO manipulation functions with ones matching QMK Firmware's code styling.
Previous backwards compatibility has now been removed. see the GPIO Control documentation for more information.
Removal of deprecated isLeftHand (25897)
Users should 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;
}The deprecated variable isLeftHand will be removed in a future breaking changes cycle.
Full changelist
Core:
- Refactor Makefile logic for locating keymaps (#25808)
- Move shutdown delay to audio feature (#25859)
- Refactor core use of deprecated
isLeftHand(#25888) - Allow custom data sync for community modules (#25955)
- Remove an unreachable break statement (#26006)
- Remove duplicate host.h (#26007)
- Remove redundant EEPROM update (#26008)
- Remove redundant unsigned comparison in apa102_set_brightness (#26010)
- Remove unused headers (#26011)
- Return INVALID_DEFERRED_TOKEN on allocation failure (#26012)
- Remove deprecated GPIO defines (#26028)
CLI:
- Enforce EOL when formatting files (#24989)
- Allow keymap.json to disable config flags (#25502)
- Remove unused
qmk.keymap.write_file/qmk.keymap.write_json(#25854) - Include userspace version (QMK_USERSPACE_VERSION) in version.h (#25882)
- Lint out-of-bounds bootmagic config (#25899)
- Report permission issues in
qmk doctor(#25931) - Minor alignment of CLI formatting commands (#25946)
- Update lint to validate keymap names (#25969)
- Add 'none of the above' to
new-keyboarddev board prompt (#25998) - Remove
config_h_featuresfrom generatedinfo.json(#26024) - Promote duplication of defaults check to error (#26025)
Keyboards:
- Add Soldered Macro Pad (#25834)
- Remove redundant URLs from
.json(#25856) - Guard encoder behaviour on
projectcain/vault*(#25864) - Refactor keyboard/keymap use of deprecated
isLeftHand(#25891) - Remove some unnecessary matrix externs (#25975)
- Migrate ROW_SHIFTER to core MATRIX_ROW_SHIFTER (#25977)
Keyboard fixes:
- Fix out-of-bounds bootmagic config (#25898)
- Fix incorrect
matrix_scan_customimplementations (#25999)
Others:
- Add missing labels to DD keycode definitions (#25503)
- Copilot instructions for pull requests (#25857)
Bugs:
- Fix flash wear leveling sector calculation (#24776)
- [Bugfix] WS2812 indexing in split boards (#25407)
- Correctly resolve keyboard alias during 'qmk new-keymap' (#25570)
- Fixes for is31fl3729 LED matrix driver off-by-one errors (#25902)
- Match Key override index type to bounds type to prevent overflow (#25939)