Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com> Co-authored-by: Ryan <fauxpark@gmail.com> Co-authored-by: honorless <86894501+lesshonor@users.noreply.github.com>
24 KiB
QMK Breaking Changes - 2023 Aug 27 Changelog
Notable Changes :id=notable-changes
As per last few breaking changes cycles, there have been a
lot of 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.
One thing to note for this release – qmk/qmk_firmware is
no longer accepting PRs for keymaps other than for
manufacturer-supported keymaps. User keymap workflow has been documented
here for several years. This
change is to progressively reduce the maintenance burden on the project,
and to allow us to focus on the core features of QMK.
Existing user keymaps and userspace areas will likely be relocated/removed in the future – non-building keymaps and userspace will be first targets, likely during the new breaking changes cycle. We will provide more information on Discord regarding this initiative as it becomes available.
RGB Matrix optimizations (#21134, #21135) :id=rgb-matrix-optimizations
Most RGB Matrix implementations now check whether or not RGB LED data has changed and skip transmission if it hasn’t. This was measured to improve scan frequency in cases of static or infrequently-changing colors.
Audio optimizations (#21496, #21498)
Some audio code relating to “notes” used double
datatypes, which are implemented in software floating-point for most ARM
microcontrollers. This has been changed to use float
datatypes instead, which are implemented in hardware floating-point on
most ARM microcontrollers. This change increases performance as well as
reduces the firmware size by significant number of bytes.
AVR sees minimal (if any) benefit – double was
interpreted as float on AVR anyway.
Changes Requiring User Action :id=changes-requiring-user-action
Updated Keyboard Codebases :id=updated-keyboard-codebases
| Old Keyboard Name | New Keyboard Name |
|---|---|
| capsunlocked/cu80/v2_ansi/base | capsunlocked/cu80/v2/ansi |
| capsunlocked/cu80/v2_iso/base | capsunlocked/cu80/v2/iso |
| handwired/dactyl_manuform/3x5_3 | handwired/dactyl_minidox |
| handwired/dactyl_manuform/6x6_kinesis | handwired/dactyl_kinesis |
| handwired/jscotto/scotto36 | handwired/scottokeebs/scotto36 |
| handwired/jscotto/scotto40 | handwired/scottokeebs/scotto40 |
| handwired/jscotto/scotto9 | handwired/scottokeebs/scotto9 |
| handwired/jscotto/scottocmd | handwired/scottokeebs/scottocmd |
| handwired/jscotto/scottostarter | handwired/scottokeebs/scottostarter |
| hfdkb/keyboard_sw/k83 | inland/kb83 |
| idb_60 | idb/idb_60 |
| kamigakushi | jaykeeb/kamigakushi |
| kbdfans/kbd67mkiirgb | kbdfans/kbd67/mkiirgb |
| modelh | ibm/model_m/modelh |
| vinta | coarse/vinta |
Remove encoder in-matrix workaround code (#20389) :id=remove-encoder-in-matrix-workaround-code
Some keyboards “hacked” encoder support into spare slots in the key matrix in order to interoperate with VIA. This workaround is no longer necessary, and the code has been removed. If you have a keyboard that uses this workaround, you will need to update your keymap to use the new Encoder Map API instead.
Unicodemap keycodes rename (#21092) :id=unicodemap-keycodes-rename
The Unicodemap keycodes have been renamed:
| Old | New |
|---|---|
X(i) |
UM(i) |
XP(i,j) |
UP(i,j) |
Remove old OLED API code (#21651) :id=remove-old-oled-api-code
Old OLED code using ssd1306.c ssd1306.h,
and SSD1306OLED and other similar files have been
consolidated to use the standard OLED driver. External user keymaps will
need to be updated to use the standard OLED driver accordingly.
Driver naming consolidation (#21551, #21558, #21580, #21594, #21624, #21710) :id=driver-naming-consolidation
In most circumstances this won’t affect users – only keyboard designers with currently-unmerged boards. The only users affected are people who have modified existing keyboards in order to add/modify haptics, lighting, or bluetooth – and only if the base keyboard did not configure them already. Driver naming has been modified to be lowercase.
RGBLight (RGBLIGHT_DRIVER /
rgblight.driver):
| Old | New |
|---|---|
WS2812 |
ws2812 |
APA102 |
apa102 |
LED Matrix (LED_MATRIX_DRIVER /
led_matrix.driver):
| Old | New |
|---|---|
IS31FL3731 |
is31fl3731 |
IS31FL3742A |
is31fl3742a |
IS31FL3743A |
is31fl3743a |
IS31FL3745 |
is31fl3745 |
IS31FL3746A |
is31fl3746a |
CKLED2001 |
ckled2001 |
RGB Matrix (RGB_MATRIX_DRIVER /
rgb_matrix.driver):
| Old | New |
|---|---|
AW20216 |
aw20216 |
IS31FL3731 |
is31fl3731 |
IS31FL3733 |
is31fl3733 |
IS31FL3736 |
is31fl3736 |
IS31FL3737 |
is31fl3737 |
IS31FL3741 |
is31fl3741 |
IS31FL3742A |
is31fl3742a |
IS31FL3743A |
is31fl3743a |
IS31FL3745 |
is31fl3745 |
IS31FL3746A |
is31fl3746a |
CKLED2001 |
ckled2001 |
WS2812 |
ws2812 |
OLED (OLED_DRIVER):
| Old | New |
|---|---|
SSD1306 |
ssd1306 |
Haptic (HAPTIC_DRIVER):
| Old | New |
|---|---|
DRV2605L |
drv2605l |
SOLENOID |
solenoid |
Bluetooth (BLUETOOTH_DRIVER /
bluetooth.driver):
| Old | New |
|---|---|
BluefruitLE |
bluefruit_le |
RN42 |
rn42 |
Full changelist :id=full-changelist
Core: * On-each-release tap dance function (#20255) * Send
a dummy keycode to neutralize flashing modifiers in retro tap and key
overrides (#20992) * Adds
a way to separate tab from AUTO_SHIFT_SPECIAL. (#20996) *
[Enhancement] More info on apply_autocorrect (#21056) *
Remove quantum/keymap.h (#21086) *
Unicodemap keycodes rename (#21092) *
Merge upstream uf2conv.py changes (#21107) * Add
a dynamic_macro_stop_recording(void) function. (#21108) *
platforms: chibios: wait: only define the frequency (#21115) *
[Enhancement] Decouple autocorrect logic (#21116) *
Optimisation - Add RGB LED colour set check in drivers (#21134) * RGB
matrix ws2812 update (#21135) *
Pixel rain: Refactor the rain light decision operator (#21139) * Use
unsigned integer for kinetic speed (#21151) *
Reset matrix_need_update properly in eager debouncing
algorithms (#21154) *
Refactor kinetic mouse key feature (#21164) * RGB
Matrix limit basic indicators to the last render (#21169) *
dynamic keymap: Rely on introspection to handle OOB access. (#21247) * add
VIA support for LED Matrix (#21281) *
Refactor times inverse of sqrt 2 calculation (#21293) * Move
protocol makefiles into their respective folders (#21332) *
Remove use of __flash within LED drivers (#21343) *
STM32H723 support (#21352) *
Remove CORTEX_ENABLE_WFI_IDLE from keyboards. (#21353) * Get
rid of USB_LED_KANA and USB_LED_COMPOSE (#21366) *
Minor board clean-up after #19780 (#21391) * Get
rid of USB_LED_SCROLL_LOCK (#21405) * Get
rid of USB_LED_NUM_LOCK (#21424) *
Simplify audio_duration_to_ms() and audio_ms_to_duration(), reduce
firmware size by a few bytes. (#21427) *
Allow key override to respect weak mods caused by caps word (#21434) * Get
rid of USB_LED_CAPS_LOCK (#21436) *
tmk_core: remove direct quantum.h includes (#21465) *
bootmagic mods covering the case when swapped mods are pressed at the
same time (#21320) (#21472) *
drivers: remove direct quantum.h includes (#21473) *
debounce: remove direct quantum.h includes (#21480) *
keymap_extras: remove direct quantum.h includes (#21485) *
process_keycode: remove direct quantum.h includes (#21486) * Add
MOUSEKEY_WHEEL_DELTA documentation (#21493) *
Reduce needless precision in audio note frequency calculation (#21496) *
Remove needless precision in additive DAC sample generation (#21498) *
quantum: remove direct quantum.h includes (#21507) *
process_combo: restore wait.h header (#21514) *
Eliminate TMK_COMMON_* in makefiles (#21517) *
backlight: split AVR PWM and timer drivers (#21540) *
haptic: naming cleanups (#21551) *
rgblight: driver selection cleanups (#21558) * LED
Matrix: driver naming cleanups (#21580) *
Unify MIDI note calculation with the audio feature (from #21496) (#21588) *
Allow the user to select a single tone for the additive DAC (#21591) * RGB
Matrix: driver naming cleanups (#21594) * Raw
HID: documentation improvements (#21596) *
Unicode: move keycode aliases to a separate header (#21613) *
Bluetooth: driver naming cleanups (#21624) *
Remove old OLED API code (#21651) *
haptic: further naming cleanups (#21682) *
Simplfy RGB/LED matrix effect logic (#21703) *
OLED: driver naming cleanups (#21710)
CLI: * Add *_MATRIX_LED_COUNT generation/validation (#19515) * Revert “Add *_MATRIX_LED_COUNT generation/validation” (#21109) * Add *_MATRIX_LED_COUNT generation (#21110) * feat, docs: WB32 flashing (#21217) * Improve error messages when layout key matrix row/col is OOB (#21640)
Submodule updates: * Update ChibiOS-Contrib (#21553)
Keyboards: * Add support for Rastersoft MiniTKL (#20230) *
Remove encoder in-matrix workaround code (#20389) *
Revamp dactyl_manuform readme.md (#20395) *
added hackpad keyboard (#20402) * Add
handwired/dactyl_cc keyboard (#20517) * Add
Mino Plus Hotswap (#20534) * Move
kb83 keyboard. (#20761) *
Rename dactyl_manuform variant 3x5_3 (#21015) *
Update k34 layout to split_3x5_2 (#21046) *
giabalanai keymaps: transpose added (#21054) * Move
RGBLIGHT_SLEEP to data driven (#21072) *
update layouts of dactyl_manuform/4x5_5 (#21094) * Move
RGBLIGHT_LED_MAP to data driven (#21095) * Move
RGBLED_SPLIT to data driven (#21113) *
Update dactyl_promicro readme (#21144) *
Delete jscotto directory (#21157) *
correct and modernise dactyl_manuform/6x7 variant (#21176) * Move
RGBLIGHT_SPLIT to data driven (#21190) *
Minor amendment to bcat userspace to prevent build failure
(#21205) *
FJLabs Swordfish Layout Macro Refactor (#21234) * Add
skyloong/Dt40 keyboard (#21237) *
dactyl_manuform/6x7 correction (#21240) *
Amend ryanbaekr boards by pin definitions (#21248) * EC
Pro X JIS Layout Touch-Up (#21260) *
Eason Aeroboard Refactor (#21271) * Move
RGBLED_NUM to data driven (#21278) *
Remove default TAPPING_TERM from keyboard config.h (#21284) * Move
RGBLIGHT_HUE/SAT/VAL_STEP to data driven (#21292) * Move
TAPPING_TERM to data driven (#21296) *
Modernize, correct, and uniform dactyl_manuform variant
5x6_68 (#21299) *
rename and modernise dactyl_manuform/6x6_kinesis (#21302) *
ProtoTypist PT-60 Refactor (#21322) *
ProtoTypist PT-80 Refactor (#21325) * add
jels60v2 support (#21337) * Move
RGB_MATRIX_HUE/SAT/VAL/SPD_STEP to data driven (#21354) * Move
TAPPING_TOGGLE to data driven (#21360) * Move
TAP_CODE_DELAY to data driven (#21363) *
gmmk/pro: Turn off RGB when suspended (#21370) * Move
miscellaneous defines to data driven (#21382) *
kyria: remove LAYOUT_stack (#21384) *
Reduce keebio/bamfk1:via firmware size (#21432) *
Refactor capsunlocked/cu80/v2 (#21454) *
Mechlovin Zed65 rev1 Develop Touch-Up (#21476) * Add
PW88 keyboard (#21482) *
Prepare ymdk/ymd75 for rev4 (#21484) * Move
DEBOUNCE_TYPE to data driven (#21489) *
aleblazer/zodiark:via: Disable two RGB effects (#21495) *
Spruce up dactyl_lightcycle and dactyl_maximus
layouts (#21519) *
Amend layout and matrix positions for dactyl_cc (#21523) *
moved model h controller under ibm/model_m (#21526) *
tominabox1/le_chiffre refactor pt 1 (#21567) *
Update ERA65 PCB (#21592) *
Update usb.* for dactyl_cc (#21612) *
Kintwin controller for kinesis keyboard, split layout (#21614) * Add
STM32f3 Discovery onekey (#21625) *
Automata02 Alisaie Develop Touch-Up (#21630) * Move
RGBLight animations to data driven (#21635) *
Refactoring entirely Caticorn PCB (#21644) *
AMJKeyboard AMJ84 Develop Touch-Up (#21645) *
Remove layout aliases from keyboard_aliases.hjson (#21658) *
kikoslab/kl90: Remove invalid config option (#21708) *
Remove more legacy config.h options (#21709) * add
willoucom/keypad (#21714) * Tidy
up encoder in matrix references (#21718) * Add
city42 (#21727) *
feat: add squigglybob splitkb kyria rev2 keymap (#21751) *
Align SENSE75 with recent Drop additions (#21757)
Keyboard fixes: * fix scheikled keymap for
dactyl_manuform/4x6 (#21206) *
Fixup dekunukem/duckypad (#21298) *
Fixup nightly_boards/n40_o (#21307) * Fix
rate/pistachio_pro:via (#21339) * Fix
encoder map declarations (#21435) *
jones/v1: fix layout offset and disable audio on via keymap (#21468) * Fix
backlight support for some boards (#21554) *
kinesis: remove stacked split layouts (#21569) * Fix
layout offsets for a handful of boards (#21636) *
doio/kb38: fix layout (#21704) * Fix
drop/shift/v2 compilation (#21800) * Fix
keyboards with old RGB driver names (#21815) * Fix
keyboards with old RGB driver names (#21817)
Others: * Rework info.json reference (#21324) * Enable auto-merge of develop to riot (#21389)
Bugs: * Fix non-functional S3 wakeup / resume from suspense (#19780) *
[Bugfix] Check NULL pointers on QP (#20481) * Fix
PS2_MOUSE_INVERT_BUTTONS (#20646) * Fix
backlight sync on suspend_power_down for split keyboards (#21079) *
Consolidate
KEYBOARD_OUTPUT+KEYMAP_OUTPUT=>INTERMEDIATE_OUTPUT
(#21272) *
Chibios USB: Take into account if host wants remote wakeup or not (#21287) * Fix
anchor IDs for some API references (#21345) *
Pixel fractal: Set minimum middle column value (#21365) * Fix
ili9xxx inversion opcode entry (#21422) *
Relocate backlight drivers (#21444) *
Fixup STM32-DFU (#21447) *
keycode aliases: work around ChibiOS ch.h include guard (#21497) * Fix
compilation error when Split Watchdog enabled (#21543) *
Revert ” Fix compilation error when Split Watchdog enabled” (#21572) *
quantum.h: clean up process_keycode includes (#21579) * Fix
stuck note with square wave in additive DAC (#21589) *
[Fix] USB HID tests compliance (#21626) * Fix
Dynamic Macro Compilation for avr-gcc 5.4.0 + Linux (#21653) *
Unicode, Unicodemap and UCIS refactor (#21659) *
Audio: Don’t play the first note of zero-note melodies (#21661) * Fix
mouse-key spamming empty reports (#21663) *
Restore usb suspend wakeup delay (#21676) * Fix
compilation error for APA on ChibiOS (#21773) * fix:
restore rgb matrix indicators to jellybean_raindrops animation (#21792) *
Remove led_matrix.hue_steps and
led_matrix.sat_steps from schema (#21827) *
Revert changes to ChibiOS Suspend Code (#21830) * Add
“apm32-dfu” in keyboard.jsonschema (#21842)