docs/ChangeLog/20230827.md
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.
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.
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.
| 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 |
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.
The Unicodemap keycodes have been renamed:
| Old | New |
|---|---|
X(i) | UM(i) |
XP(i,j) | UP(i,j) |
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.
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 |
Core:
apply_autocorrect (#21056)matrix_need_update properly in eager debouncing algorithms (#21154)USB_LED_KANA and USB_LED_COMPOSE (#21366)USB_LED_SCROLL_LOCK (#21405)USB_LED_NUM_LOCK (#21424)USB_LED_CAPS_LOCK (#21436)quantum.h includes (#21465)quantum.h includes (#21473)quantum.h includes (#21480)quantum.h includes (#21485)quantum.h includes (#21486)quantum.h includes (#21507)TMK_COMMON_* in makefiles (#21517)CLI:
Submodule updates:
Keyboards:
dactyl_manuform readme.md (#20395)handwired/dactyl_cc keyboard (#20517)dactyl_manuform variant 3x5_3 (#21015)k34 layout to split_3x5_2 (#21046)RGBLIGHT_SLEEP to data driven (#21072)dactyl_manuform/4x5_5 (#21094)RGBLIGHT_LED_MAP to data driven (#21095)RGBLED_SPLIT to data driven (#21113)dactyl_promicro readme (#21144)dactyl_manuform/6x7 variant (#21176)RGBLIGHT_SPLIT to data driven (#21190)bcat userspace to prevent build failure (#21205)dactyl_manuform/6x7 correction (#21240)ryanbaekr boards by pin definitions (#21248)RGBLED_NUM to data driven (#21278)TAPPING_TERM from keyboard config.h (#21284)RGBLIGHT_HUE/SAT/VAL_STEP to data driven (#21292)TAPPING_TERM to data driven (#21296)dactyl_manuform variant 5x6_68 (#21299)dactyl_manuform/6x6_kinesis (#21302)RGB_MATRIX_HUE/SAT/VAL/SPD_STEP to data driven (#21354)TAPPING_TOGGLE to data driven (#21360)TAP_CODE_DELAY to data driven (#21363)LAYOUT_stack (#21384)keebio/bamfk1:via firmware size (#21432)capsunlocked/cu80/v2 (#21454)DEBOUNCE_TYPE to data driven (#21489)dactyl_lightcycle and dactyl_maximus layouts (#21519)dactyl_cc (#21523)usb.* for dactyl_cc (#21612)Keyboard fixes:
scheikled keymap for dactyl_manuform/4x6 (#21206)dekunukem/duckypad (#21298)nightly_boards/n40_o (#21307)rate/pistachio_pro:via (#21339)Others:
Bugs:
NULL pointers on QP (#20481)KEYBOARD_OUTPUT+KEYMAP_OUTPUT=>INTERMEDIATE_OUTPUT (#21272)led_matrix.hue_steps and led_matrix.sat_steps from schema (#21827)