summaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/ChangeLog/20211127.md10
-rw-r--r--docs/ChangeLog/20221126.md510
-rw-r--r--docs/_summary.md4
-rw-r--r--docs/api_docs.md42
-rw-r--r--docs/audio_driver.md10
-rw-r--r--docs/breaking_changes.md19
-rw-r--r--docs/breaking_changes_history.md1
-rw-r--r--docs/config_options.md13
-rw-r--r--docs/configurator_default_keymaps.md36
-rw-r--r--docs/data_driven_config.md2
-rw-r--r--docs/faq_debug.md2
-rw-r--r--docs/feature_audio.md71
-rw-r--r--docs/feature_auto_shift.md30
-rw-r--r--docs/feature_autocorrect.md295
-rw-r--r--docs/feature_backlight.md18
-rw-r--r--docs/feature_bluetooth.md10
-rw-r--r--docs/feature_caps_word.md4
-rw-r--r--docs/feature_combo.md12
-rw-r--r--docs/feature_converters.md50
-rw-r--r--docs/feature_digitizer.md118
-rw-r--r--docs/feature_dynamic_macros.md24
-rw-r--r--docs/feature_eeprom.md16
-rw-r--r--docs/feature_encoders.md14
-rw-r--r--docs/feature_haptic_feedback.md36
-rw-r--r--docs/feature_joystick.md288
-rw-r--r--docs/feature_key_lock.md6
-rw-r--r--docs/feature_key_overrides.md14
-rw-r--r--docs/feature_leader_key.md12
-rw-r--r--docs/feature_led_indicators.md7
-rw-r--r--docs/feature_led_matrix.md56
-rw-r--r--docs/feature_macros.md6
-rw-r--r--docs/feature_midi.md306
-rw-r--r--docs/feature_mouse_keys.md34
-rw-r--r--docs/feature_pointing_device.md273
-rw-r--r--docs/feature_programmable_button.md200
-rw-r--r--docs/feature_ps2_mouse.md18
-rw-r--r--docs/feature_rgb_matrix.md99
-rw-r--r--docs/feature_rgblight.md6
-rw-r--r--docs/feature_secure.md12
-rw-r--r--docs/feature_space_cadet.md30
-rw-r--r--docs/feature_split_keyboard.md15
-rw-r--r--docs/feature_thermal_printer.md10
-rw-r--r--docs/feature_unicode.md55
-rw-r--r--docs/feature_velocikey.md2
-rw-r--r--docs/ja/feature_ps2_mouse.md16
-rw-r--r--docs/keycodes.md584
-rw-r--r--docs/keycodes_basic.md2
-rw-r--r--docs/keymap.md4
-rw-r--r--docs/platformdev_rp2040.md5
-rw-r--r--docs/pr_checklist.md3
-rw-r--r--docs/quantum_painter.md576
-rw-r--r--docs/ref_functions.md2
-rw-r--r--docs/reference_info_json.md7
-rw-r--r--docs/squeezing_avr.md1
-rw-r--r--docs/tap_hold.md10
-rw-r--r--docs/understanding_qmk.md1
-rw-r--r--docs/ws2812_driver.md2
-rw-r--r--docs/zh-cn/configurator_default_keymaps.md36
58 files changed, 2844 insertions, 1201 deletions
diff --git a/docs/ChangeLog/20211127.md b/docs/ChangeLog/20211127.md
index d954bb9f61..0780ab6a44 100644
--- a/docs/ChangeLog/20211127.md
+++ b/docs/ChangeLog/20211127.md
@@ -56,19 +56,19 @@ You can now define up to 32 macros in your `keymap.json` file, as used by [QMK C
"keyboard": "handwired/my_macropad",
"keymap": "my_keymap",
"macros": [
- [ // first listed is MACRO_0...
+ [ // first listed is QK_MACRO_0...
{"action":"down", "keycodes": ["LSFT"]},
"hello world1",
{"action": "up","keycodes": ["LSFT"]}
],
- [ // ...then MACRO_1...
+ [ // ...then QK_MACRO_1...
{"action":"tap", "keycodes": ["LCTL", "LALT", "DEL"]}
],
- [ // ...then MACRO_2...
+ [ // ...then QK_MACRO_2...
"ding!",
{"action":"beep"}
],
- [ // ...and MACRO_3.
+ [ // ...and QK_MACRO_3.
{"action":"tap", "keycodes": ["F1"]},
{"action":"delay", "duration": "1000"},
{"action":"tap", "keycodes": ["PGDN"]}
@@ -76,7 +76,7 @@ You can now define up to 32 macros in your `keymap.json` file, as used by [QMK C
],
"layout": "LAYOUT_all",
"layers": [
- ["MACRO_0", "MACRO_1", "MACRO_2", "MACRO_3"]
+ ["QK_MACRO_0", "QK_MACRO_1", "QK_MACRO_2", "QK_MACRO_3"]
]
}
```
diff --git a/docs/ChangeLog/20221126.md b/docs/ChangeLog/20221126.md
new file mode 100644
index 0000000000..82aa4a499e
--- /dev/null
+++ b/docs/ChangeLog/20221126.md
@@ -0,0 +1,510 @@
+# QMK Breaking Changes - 2022 November 26 Changelog
+
+## Notable Features :id=notable-features
+
+### Autocorrect ([#15699](https://github.com/qmk/qmk_firmware/pull/15699)) :id=autocorrect
+
+_@getreuer_ in their infinite wisdom decided that autocorrect was a feature needed by QMK. As is customary, _@drashna_ adapted it to core and got it into a state that everyone else can use it. See [Feature: Autocorrect](feature_autocorrect.md) for more ifnormation (grin).
+
+## Changes Requiring User Action :id=changes-requiring-user-action
+
+### Updated Keyboard Codebases :id=updated-keyboard-codebases
+
+The following keyboards have had their source moved within QMK:
+
+| Old Keyboard Name | New Keyboard Name |
+|--------------------------------------|--------------------------------------|
+| converter/numeric_keypad_IIe | converter/numeric_keypad_iie |
+| durgod/k3x0/k310 | durgod/k310 |
+| durgod/k3x0/k320 | durgod/k320 |
+| emptystring/NQG | emptystring/nqg |
+| handwired/hillside/46 | hillside/46 |
+| handwired/hillside/48 | hillside/48 |
+| handwired/hillside/52 | hillside/52 |
+| maple_computing/christmas_tree/V2017 | maple_computing/christmas_tree/v2017 |
+
+### Keycodes refactoring :id=keycodes-overhaul-user-action
+
+QMK's keycodes got a very significant overhaul this breaking changes cycle, with the bulk of the work done by _@zvecr_ and _@fauxpark_ -- renaming, reordering, removing has been their focus in this area. In an attempt to standardise interoperation with host applications, keycode values now have strong versioning so that any connected application has confidence that the keys it thinks exist on the board actually match up with what's compiled in. These strongly-versioned keycode definitions are now published online and will not change, so tools that remap keycodes have a reference to work with. In future versions of QMK, any new or changed keycodes will result in a new version specification. See [API docs](api_docs.md#qmk-constants) for more information on the published versions if you're writing a tool to manage keycodes.
+
+In most cases user keymaps in the repository have already been updated to reflect the new naming scheme. In some cases user keymaps outside the repository may strike a missing keycode with the old name -- it's highly likely that the name had already been deprecated for some time, and should have been updated previously.
+
+See below for the full list of changesets.
+
+!> Keycode aliases have been put in place in most cases to cater for "old names" being mapped to "new names" -- the documentation already reflects all the new naming of keys.
+
+### Configuration Item Refactoring :id=config-refactoring
+
+A number of configuration items have been renamed for consistency.
+
+RGB Matrix configuration:
+
+| Old Config | New Config |
+|-------------------------|-------------------------|
+| DRIVER_LED_COUNT | RGB_MATRIX_LED_COUNT |
+| RGB_DISABLE_TIMEOUT | RGB_MATRIX_TIMEOUT |
+| RGB_MATRIX_STARTUP_HUE | RGB_MATRIX_DEFAULT_HUE |
+| RGB_MATRIX_STARTUP_MODE | RGB_MATRIX_DEFAULT_MODE |
+| RGB_MATRIX_STARTUP_SAT | RGB_MATRIX_DEFAULT_SAT |
+| RGB_MATRIX_STARTUP_SPD | RGB_MATRIX_DEFAULT_SPD |
+| RGB_MATRIX_STARTUP_VAL | RGB_MATRIX_DEFAULT_VAL |
+
+LED Matrix configuration:
+
+| Old Config | New Config |
+|-------------------------|-------------------------|
+| DRIVER_LED_COUNT | LED_MATRIX_LED_COUNT |
+| LED_DISABLE_TIMEOUT | LED_MATRIX_TIMEOUT |
+| LED_MATRIX_STARTUP_MODE | LED_MATRIX_DEFAULT_MODE |
+| LED_MATRIX_STARTUP_SPD | LED_MATRIX_DEFAULT_SPD |
+| LED_MATRIX_STARTUP_VAL | LED_MATRIX_DEFAULT_VAL |
+
+Joystick configuration:
+
+| Old Config | New Config |
+|--------------------------|--------------------------|
+| JOYSTICK_AXES_COUNT | JOYSTICK_AXIS_COUNT |
+| JOYSTICK_AXES_RESOLUTION | JOYSTICK_AXIS_RESOLUTION |
+
+### Data-driven USB IDs Refactoring ([#18152](https://github.com/qmk/qmk_firmware/pull/18152)) :id=usb-ids-Refactoring
+
+QMK has decided to deprecate the specification of USB IDs inside `config.h` in favour of `info.json`, leaving data-driven as the only method to specify USB information. As per the deprecation schedule put forward last breaking changes cycle, USB information must be specified in `info.json` instead.
+
+Previously in `config.h`:
+```c
+#define VENDOR_ID 0x1234
+#define PRODUCT_ID 0x5678
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Me
+#define PRODUCT MyKeyboard
+```
+
+Replaced by `info.json`:
+```json
+{
+ "keyboard_name": "MyKeyboard",
+ "manufacturer": "Me",
+ "usb": {
+ "vid": "0x1234",
+ "pid": "0x5678",
+ "device_version": "0.0.1"
+ }
+}
+```
+
+### LED Indicator callback refactoring ([#14864](https://github.com/qmk/qmk_firmware/pull/18450)) :id=led-callback-refactor
+
+_RGB Matrix_ and _LED Matrix_ Indicator display code was traditionally difficult to override in keymaps as they did not follow the standard pattern of `bool *_kb()` deferring to `bool *_user()` functions, allowing signalling to the higher level that processing had already been done.
+
+This changes the standard callback model to allow for a base implementation to be provided by a keyboard, but also still allow for keymap-level overrides without needing to modify the keyboard's code.
+
+The old RGB Matrix keymap code went something like this:
+
+```c
+void rgb_matrix_indicators_user(void) {
+ // keymap LED code
+}
+```
+
+...but the new RGB Matrix keymap code looks like this:
+```c
+bool rgb_matrix_indicators_user(void) {
+ // keymap LED code
+ return false;
+}
+```
+
+Keyboard designers should now structure their keyboard-level routines like the following, in order to allow for keymap overrides:
+
+```c
+bool rgb_matrix_indicators_kb(void) {
+ // Defer to the keymap if they want to override
+ if (!rgb_matrix_indicators_user()) { return false; }
+
+ // keyboard LED code
+ return true;
+}
+```
+
+The equivalent transformations should be done for LED Matrix boards.
+
+### Unicode mode refactoring :id=unicode-mode-renaming
+
+Unicode modes were renamed in order to prevent collision with equivalent keycodes. The available values for `UNICODE_SELECTED_MODES` changed -- see [Feature: Unicode](feature_unicode.md#setting-the-input-mode) for the new list of values and how to configure them.
+
+## Notable core changes :id=notable-core
+
+This breaking changes cycle, a lot of the core changes are related to cleanup and refactoring -- commonly called "tech debt".
+
+### Keycodes refactoring :id=keycodes-overhaul-core-changes
+
+We aren't going to list each and every change -- they're far too numerous -- instead, we'll just list the related PRs in order to convey just how wide-reaching these changes were:
+
+* Align audio keycode names ([#18962](https://github.com/qmk/qmk_firmware/pull/18962))
+* Align dynamic tapping term keycode names ([#18963](https://github.com/qmk/qmk_firmware/pull/18963))
+* Align haptic feedback keycode names ([#18964](https://github.com/qmk/qmk_firmware/pull/18964))
+* Deprecate `CAPS_WORD`/`CAPSWRD` for `CW_TOGG` ([#18834](https://github.com/qmk/qmk_firmware/pull/18834))
+* Deprecate `KC_LEAD` for `QK_LEAD` ([#18792](https://github.com/qmk/qmk_firmware/pull/18792))
+* Deprecate `KC_LOCK` for `QK_LOCK` ([#18796](https://github.com/qmk/qmk_firmware/pull/18796))
+* Deprecate `KEY_OVERRIDE_*` keycodes for `KO_*` ([#18843](https://github.com/qmk/qmk_firmware/pull/18843))
+* Deprecate `ONESHOT_*` keycodes for `QK_ONE_SHOT_*` ([#18844](https://github.com/qmk/qmk_firmware/pull/18844))
+* Deprecate `SECURE_*` keycodes for `QK_SECURE_*` ([#18847](https://github.com/qmk/qmk_firmware/pull/18847))
+* Deprecate `VLK_TOG` for `VK_TOGG` ([#18807](https://github.com/qmk/qmk_firmware/pull/18807))
+* Initial DD keycode migration ([#18643](https://github.com/qmk/qmk_firmware/pull/18643))
+* Macro keycode name refactoring ([#18958](https://github.com/qmk/qmk_firmware/pull/18958))
+* Move mousekey keycodes into newly freed up keycode block ([#16076](https://github.com/qmk/qmk_firmware/pull/16076))
+* Normalise Auto Shift keycodes ([#18892](https://github.com/qmk/qmk_firmware/pull/18892))
+* Normalise Autocorrect keycodes ([#18893](https://github.com/qmk/qmk_firmware/pull/18893))
+* Normalise Combo keycodes ([#18877](https://github.com/qmk/qmk_firmware/pull/18877))
+* Normalise Dynamic Macro keycodes ([#18939](https://github.com/qmk/qmk_firmware/pull/18939))
+* Normalise Joystick and Programmable Button keycodes ([#18832](https://github.com/qmk/qmk_firmware/pull/18832))
+* Normalise MIDI keycodes ([#18972](https://github.com/qmk/qmk_firmware/pull/18972))
+* Normalise output selection (Bluetooth) keycodes ([#19004](https://github.com/qmk/qmk_firmware/pull/19004))
+* Normalise Space Cadet keycodes ([#18864](https://github.com/qmk/qmk_firmware/pull/18864))
+* Normalise Unicode keycodes ([#18898](https://github.com/qmk/qmk_firmware/pull/18898))
+* Publish constants metadata to API ([#19143](https://github.com/qmk/qmk_firmware/pull/19143))
+* Relocate US ANSI shifted keycode aliases ([#18634](https://github.com/qmk/qmk_firmware/pull/18634))
+* Remove `KC_DELT` ([#18882](https://github.com/qmk/qmk_firmware/pull/18882))
+* Remove `UNICODE_KEY_OSX` and `UC_OSX` ([#18290](https://github.com/qmk/qmk_firmware/pull/18290))
+* Remove deprecated RESET keycode alias ([#18271](https://github.com/qmk/qmk_firmware/pull/18271))
+* Remove legacy Debug keycode ([#18769](https://github.com/qmk/qmk_firmware/pull/18769))
+* Remove legacy EEPROM clear keycodes ([#18782](https://github.com/qmk/qmk_firmware/pull/18782))
+* Remove legacy fauxclicky and unicode keycodes ([#18800](https://github.com/qmk/qmk_firmware/pull/18800))
+* Remove legacy Grave Escape keycodes ([#18787](https://github.com/qmk/qmk_firmware/pull/18787))
+* Remove legacy international keycodes ([#18588](https://github.com/qmk/qmk_firmware/pull/18588))
+* Remove legacy keycodes, part 2 ([#18660](https://github.com/qmk/qmk_firmware/pull/18660))
+* Remove legacy keycodes, part 3 ([#18669](https://github.com/qmk/qmk_firmware/pull/18669))
+* Remove legacy keycodes, part 4 ([#18683](https://github.com/qmk/qmk_firmware/pull/18683))
+* Remove legacy keycodes, part 5 ([#18710](https://github.com/qmk/qmk_firmware/pull/18710))
+* Remove legacy keycodes, part 6 ([#18740](https://github.com/qmk/qmk_firmware/pull/18740))
+* Remove legacy locking caps/num/scroll keycodes ([#18601](https://github.com/qmk/qmk_firmware/pull/18601))
+* Remove legacy sendstring keycodes ([#18749](https://github.com/qmk/qmk_firmware/pull/18749))
+* Reworked backlight keycodes. ([#18961](https://github.com/qmk/qmk_firmware/pull/18961))
+
+### Board Converters :id=board-converters
+
+There was additional work in the space of board converters -- historically QMK allowed for "converting" a Pro Micro build to a QMK Proton-C build. The last few versions of QMK have added support for replacement boards much like the Proton-C, and this quarter was no exception:
+
+* Add Bonsai C4 as a platform board file ([#18901](https://github.com/qmk/qmk_firmware/pull/18901))
+* Add converter support to keymap.json ([#18776](https://github.com/qmk/qmk_firmware/pull/18776))
+* Add Elite-C to converters ([#18309](https://github.com/qmk/qmk_firmware/pull/18309))
+* Add Elite-Pi converter ([#18236](https://github.com/qmk/qmk_firmware/pull/18236))
+* Allow QK_MAKE to work with converters ([#18637](https://github.com/qmk/qmk_firmware/pull/18637))
+
+See [Feature: Converters](feature_converters.md) for the full list of board conversions available.
+
+### Pointing and Digitizer device updates :id=pointing-and-digitizer
+
+Both pointing devices and digitizer got a host of updates this cycle. Inertia, automatic mouse layers, fixes for preventing sleep... you even get more buttons with digitizers!
+
+* add "inertia" mode for mouse keys ([#18774](https://github.com/qmk/qmk_firmware/pull/18774))
+* Digitizer feature improvements ([#19034](https://github.com/qmk/qmk_firmware/pull/19034))
+* Enabling Pointing Device support in register code functions ([#18363](https://github.com/qmk/qmk_firmware/pull/18363))
+* Feature: pointing device automatic mouse layer ([#17962](https://github.com/qmk/qmk_firmware/pull/17962))
+* Fix mouse report comparison failing on shared EP (fixes KB preventing sleep) ([#18060](https://github.com/qmk/qmk_firmware/pull/18060))
+* Fix mouse use within send_string ([#18659](https://github.com/qmk/qmk_firmware/pull/18659))
+* Handle mouse keys more consistently ([#18513](https://github.com/qmk/qmk_firmware/pull/18513))
+* Invert pointing device motion pin for cirque touchpads ([#18404](https://github.com/qmk/qmk_firmware/pull/18404))
+* Refactor more host code (programmable button & digitizer) ([#18565](https://github.com/qmk/qmk_firmware/pull/18565))
+
+## Full changelist :id=full-changelist
+
+Core:
+* quantum: led: split out led_update_ports() for customization of led behaviour ([#14452](https://github.com/qmk/qmk_firmware/pull/14452))
+* Add getreuer's Autocorrect feature to core ([#15699](https://github.com/qmk/qmk_firmware/pull/15699))
+* Move mousekey keycodes into newly freed up keycode block ([#16076](https://github.com/qmk/qmk_firmware/pull/16076))
+* Introduce pointing device specific debug messages ([#17663](https://github.com/qmk/qmk_firmware/pull/17663))
+* PWM Backlight for RP2040 ([#17706](https://github.com/qmk/qmk_firmware/pull/17706))
+* Adjust PWM hardware audio driver for RP2040 ([#17723](https://github.com/qmk/qmk_firmware/pull/17723))
+* Prevent tap dance from wiping dynamic macros ([#17880](https://github.com/qmk/qmk_firmware/pull/17880))
+* Feature: pointing device automatic mouse layer ([#17962](https://github.com/qmk/qmk_firmware/pull/17962))
+* Allow custom timings for WS2812 PIO driver ([#18006](https://github.com/qmk/qmk_firmware/pull/18006))
+* Use `TAP_CODE_DELAY` for encoder mapping by default. Add docs. ([#18098](https://github.com/qmk/qmk_firmware/pull/18098))
+* Move Oneshot mod callbacks to after mods are set ([#18101](https://github.com/qmk/qmk_firmware/pull/18101))
+* mcp23018: add return status to init ([#18178](https://github.com/qmk/qmk_firmware/pull/18178))
+* Switch over MANUFACTURER and PRODUCT to string literals ([#18183](https://github.com/qmk/qmk_firmware/pull/18183))
+* Remove deprecated USBasp and bootloadHID bootloader types ([#18195](https://github.com/qmk/qmk_firmware/pull/18195))
+* Chromeos keycodes ([#18212](https://github.com/qmk/qmk_firmware/pull/18212))
+* VIA V3 - The Custom UI Update ([#18222](https://github.com/qmk/qmk_firmware/pull/18222))
+* Move bootloader.mk to platforms ([#18228](https://github.com/qmk/qmk_firmware/pull/18228))
+* Simplify extrakeys sending at the host driver level ([#18230](https://github.com/qmk/qmk_firmware/pull/18230))
+* Add unicode mode change callbacks ([#18235](https://github.com/qmk/qmk_firmware/pull/18235))
+* Add Elite-Pi converter ([#18236](https://github.com/qmk/qmk_firmware/pull/18236))
+* Better handle EEPROM reset keycode ([#18244](https://github.com/qmk/qmk_firmware/pull/18244))
+* Work around WinCompose issue for U+Axxx or U+Exxx ([#18260](https://github.com/qmk/qmk_firmware/pull/18260))
+* Remove deprecated RESET keycode alias ([#18271](https://github.com/qmk/qmk_firmware/pull/18271))
+* Move Bluetooth-related function calls up to host/keyboard level ([#18274](https://github.com/qmk/qmk_firmware/pull/18274))
+* Added analog support for WB32 MCU. ([#18289](https://github.com/qmk/qmk_firmware/pull/18289))
+* Remove `UNICODE_KEY_OSX` and `UC_OSX` ([#18290](https://github.com/qmk/qmk_firmware/pull/18290))
+* Add Elite-C to converters ([#18309](https://github.com/qmk/qmk_firmware/pull/18309))
+* RN42 driver: small cleanups ([#18310](https://github.com/qmk/qmk_firmware/pull/18310))
+* Reboot wb32 devices after flashing ([#18323](https://github.com/qmk/qmk_firmware/pull/18323))
+* Refactor Unicode feature ([#18333](https://github.com/qmk/qmk_firmware/pull/18333))
+* Move fake EE_HANDS from EEPROM init. ([#18352](https://github.com/qmk/qmk_firmware/pull/18352))
+* Enabling Pointing Device support in register code functions ([#18363](https://github.com/qmk/qmk_firmware/pull/18363))
+* Start Bluetooth API ([#18366](https://github.com/qmk/qmk_firmware/pull/18366))
+* Add UART support for Kinetis boards ([#18370](https://github.com/qmk/qmk_firmware/pull/18370))
+* [QP] Add RGB565 surface. Docs clarification, cleanup, tabsification, and reordering. ([#18396](https://github.com/qmk/qmk_firmware/pull/18396))
+* Change `DRIVER_LED_COUNT` to `{LED,RGB}_MATRIX_LED_COUNT` ([#18399](https://github.com/qmk/qmk_firmware/pull/18399))
+* Invert pointing device motion pin for cirque touchpads ([#18404](https://github.com/qmk/qmk_firmware/pull/18404))
+* Change `{LED,RGB}_DISABLE_TIMEOUT` to `{LED,RGB}_MATRIX_TIMEOUT` ([#18415](https://github.com/qmk/qmk_firmware/pull/18415))
+* rewrite locking in split transaction handlers ([#18417](https://github.com/qmk/qmk_firmware/pull/18417))
+* remove busy waiting from rgblight functions ([#18418](https://github.com/qmk/qmk_firmware/pull/18418))
+* Serial-protocol: always clear receive queue on main half of split keyboard ([#18419](https://github.com/qmk/qmk_firmware/pull/18419))
+* Stabilize RP2040 Half-duplex PIO split comms take 2 ([#18421](https://github.com/qmk/qmk_firmware/pull/18421))
+* Copy RP2040 vector table to RAM on startup ([#18424](https://github.com/qmk/qmk_firmware/pull/18424))
+* Further refactoring of joystick feature ([#18437](https://github.com/qmk/qmk_firmware/pull/18437))
+* Start moving towards introspection-based data retrieval ([#18441](https://github.com/qmk/qmk_firmware/pull/18441))
+* RP2040: use built-in integer hardware divider and optimized i64 multiplication ([#18464](https://github.com/qmk/qmk_firmware/pull/18464))
+* Only trigger encoder callbacks on primary side ([#18467](https://github.com/qmk/qmk_firmware/pull/18467))
+* Handle mouse keys more consistently ([#18513](https://github.com/qmk/qmk_firmware/pull/18513))
+* Gentoo install script — build newlib with `nano` USE flag ([#18527](https://github.com/qmk/qmk_firmware/pull/18527))
+* Small un/register_code() cleanups ([#18544](https://github.com/qmk/qmk_firmware/pull/18544))
+* Refactor more host code (programmable button & digitizer) ([#18565](https://github.com/qmk/qmk_firmware/pull/18565))
+* Don't clear keys on layer change unless STRICT_LAYER_RELEASE is enabled ([#18577](https://github.com/qmk/qmk_firmware/pull/18577))
+* Remove legacy international keycodes ([#18588](https://github.com/qmk/qmk_firmware/pull/18588))
+* onekey: Enable ADC for STM32F072 Discovery ([#18592](https://github.com/qmk/qmk_firmware/pull/18592))
+* Implement split comms watchdog ([#18599](https://github.com/qmk/qmk_firmware/pull/18599))
+* Remove legacy locking caps/num/scroll keycodes ([#18601](https://github.com/qmk/qmk_firmware/pull/18601))
+* Use `get_u16_str` instead of `snprintf` in `autoshift_timer_report` ([#18606](https://github.com/qmk/qmk_firmware/pull/18606))
+* Refactor `send_extra` ([#18615](https://github.com/qmk/qmk_firmware/pull/18615))
+* LUFA: Consolidate report sending code ([#18629](https://github.com/qmk/qmk_firmware/pull/18629))
+* Relocate US ANSI shifted keycode aliases ([#18634](https://github.com/qmk/qmk_firmware/pull/18634))
+* Allow QK_MAKE to work with converters ([#18637](https://github.com/qmk/qmk_firmware/pull/18637))
+* Programmable Button API refactor and improve docs ([#18641](https://github.com/qmk/qmk_firmware/pull/18641))
+* Initial DD keycode migration ([#18643](https://github.com/qmk/qmk_firmware/pull/18643))
+* Remove legacy keycodes, part 2 ([#18660](https://github.com/qmk/qmk_firmware/pull/18660))
+* Remove legacy keycodes, part 3 ([#18669](https://github.com/qmk/qmk_firmware/pull/18669))
+* Remove legacy keycodes, part 4 ([#18683](https://github.com/qmk/qmk_firmware/pull/18683))
+* Revert "mcp23018: add return status to init" ([#18709](https://github.com/qmk/qmk_firmware/pull/18709))
+* Remove legacy keycodes, part 5 ([#18710](https://github.com/qmk/qmk_firmware/pull/18710))
+* Make QP driver init functions weak. ([#18717](https://github.com/qmk/qmk_firmware/pull/18717))
+* Add unit tests for HOLD_ON_OTHER_KEY_PRESS ([#18721](https://github.com/qmk/qmk_firmware/pull/18721))
+* Remove legacy keycodes, part 6 ([#18740](https://github.com/qmk/qmk_firmware/pull/18740))
+* Remove legacy sendstring keycodes ([#18749](https://github.com/qmk/qmk_firmware/pull/18749))
+* 4 Driver support for IS31FL3737 ([#18750](https://github.com/qmk/qmk_firmware/pull/18750))
+* Remove quantum/audio from global VPATH ([#18753](https://github.com/qmk/qmk_firmware/pull/18753))
+* Widen the ARM Cortex-M family support. Allow USB peripheral change. ([#18767](https://github.com/qmk/qmk_firmware/pull/18767))
+* Remove legacy Debug keycode ([#18769](https://github.com/qmk/qmk_firmware/pull/18769))
+* add "inertia" mode for mouse keys ([#18774](https://github.com/qmk/qmk_firmware/pull/18774))
+* Remove legacy EEPROM clear keycodes ([#18782](https://github.com/qmk/qmk_firmware/pull/18782))
+* Remove legacy Grave Escape keycodes ([#18787](https://github.com/qmk/qmk_firmware/pull/18787))
+* Deprecate `KC_LEAD` for `QK_LEAD` ([#18792](https://github.com/qmk/qmk_firmware/pull/18792))
+* Deprecate `KC_LOCK` for `QK_LOCK` ([#18796](https://github.com/qmk/qmk_firmware/pull/18796))
+* Remove legacy fauxclicky and unicode keycodes ([#18800](https://github.com/qmk/qmk_firmware/pull/18800))
+* Generalise CTPC logic from common_features ([#18803](https://github.com/qmk/qmk_firmware/pull/18803))
+* Deprecate `VLK_TOG` for `VK_TOGG` ([#18807](https://github.com/qmk/qmk_firmware/pull/18807))
+* ChibiOS USB: Add a dummy IN callback to work around LLD bugs ([#18811](https://github.com/qmk/qmk_firmware/pull/18811))
+* Normalise Joystick and Programmable Button keycodes ([#18832](https://github.com/qmk/qmk_firmware/pull/18832))
+* Deprecate `CAPS_WORD`/`CAPSWRD` for `CW_TOGG` ([#18834](https://github.com/qmk/qmk_firmware/pull/18834))
+* added BS_TOGG so BS_SWAP and BS_NORM can be on a single key ([#18837](https://github.com/qmk/qmk_firmware/pull/18837))
+* Remove some assumptions on sequential keycode ranges ([#18838](https://github.com/qmk/qmk_firmware/pull/18838))
+* Deprecate `KEY_OVERRIDE_*` keycodes for `KO_*` ([#18843](https://github.com/qmk/qmk_firmware/pull/18843))
+* Deprecate `ONESHOT_*` keycodes for `QK_ONE_SHOT_*` ([#18844](https://github.com/qmk/qmk_firmware/pull/18844))
+* Deprecate `SECURE_*` keycodes for `QK_SECURE_*` ([#18847](https://github.com/qmk/qmk_firmware/pull/18847))
+* Normalise Space Cadet keycodes ([#18864](https://github.com/qmk/qmk_firmware/pull/18864))
+* Allow overriding of dynamic keymap start address. ([#18867](https://github.com/qmk/qmk_firmware/pull/18867))
+* Formalise keyboard- and user-specific EEPROM blocks ([#18874](https://github.com/qmk/qmk_firmware/pull/18874))
+* Normalise Combo keycodes ([#18877](https://github.com/qmk/qmk_firmware/pull/18877))
+* Remove rgblight_list.h ([#18878](https://github.com/qmk/qmk_firmware/pull/18878))
+* Remove `KC_DELT` ([#18882](https://github.com/qmk/qmk_firmware/pull/18882))
+* Simplify Keymap Config EEPROM ([#18886](https://github.com/qmk/qmk_firmware/pull/18886))
+* Normalise Auto Shift keycodes ([#18892](https://github.com/qmk/qmk_firmware/pull/18892))
+* Normalise Autocorrect keycodes ([#18893](https://github.com/qmk/qmk_firmware/pull/18893))
+* Normalise Unicode keycodes ([#18898](https://github.com/qmk/qmk_firmware/pull/18898))
+* Add Bonsai C4 as a platform board file ([#18901](https://github.com/qmk/qmk_firmware/pull/18901))
+* Normalise Dynamic Macro keycodes ([#18939](https://github.com/qmk/qmk_firmware/pull/18939))
+* Reduce includes for sequencer header ([#18946](https://github.com/qmk/qmk_firmware/pull/18946))
+* Reduce includes for crc header ([#18947](https://github.com/qmk/qmk_firmware/pull/18947))
+* Reduce includes for caps_word header ([#18948](https://github.com/qmk/qmk_firmware/pull/18948))
+* Reduce includes for wpm header ([#18949](https://github.com/qmk/qmk_firmware/pull/18949))
+* Reduce includes for dip_switch header ([#18951](https://github.com/qmk/qmk_firmware/pull/18951))
+* Reduce includes for send_string header ([#18952](https://github.com/qmk/qmk_firmware/pull/18952))
+* Macro keycode name refactoring ([#18958](https://github.com/qmk/qmk_firmware/pull/18958))
+* Remove thermal printer. ([#18959](https://github.com/qmk/qmk_firmware/pull/18959))
+* Reworked backlight keycodes. ([#18961](https://github.com/qmk/qmk_firmware/pull/18961))
+* Align audio keycode names ([#18962](https://github.com/qmk/qmk_firmware/pull/18962))
+* Align dynamic tapping term keycode names ([#18963](https://github.com/qmk/qmk_firmware/pull/18963))
+* Align haptic feedback keycode names ([#18964](https://github.com/qmk/qmk_firmware/pull/18964))
+* NVRAM refactor, phase 1. ([#18969](https://github.com/qmk/qmk_firmware/pull/18969))
+* Normalise MIDI keycodes ([#18972](https://github.com/qmk/qmk_firmware/pull/18972))
+* Normalise output selection (Bluetooth) keycodes ([#19004](https://github.com/qmk/qmk_firmware/pull/19004))
+* Move EFL wear-leveling driver to be default for F1, F3, F4, L4, G4, WB32, GD32V. ([#19020](https://github.com/qmk/qmk_firmware/pull/19020))
+* Digitizer feature improvements ([#19034](https://github.com/qmk/qmk_firmware/pull/19034))
+* Joystick feature improvements ([#19052](https://github.com/qmk/qmk_firmware/pull/19052))
+* Add default limit to OLED dirty processing ([#19068](https://github.com/qmk/qmk_firmware/pull/19068))
+* Change `RGB_MATRIX_STARTUP_*` defines to `RGB_MATRIX_DEFAULT_*` ([#19079](https://github.com/qmk/qmk_firmware/pull/19079))
+* Change `LED_MATRIX_STARTUP_*` defines to `LED_MATRIX_DEFAULT_*` ([#19080](https://github.com/qmk/qmk_firmware/pull/19080))
+* Extend eeconfig kb/user datablock API ([#19094](https://github.com/qmk/qmk_firmware/pull/19094))
+* Remove .noci functionality ([#19122](https://github.com/qmk/qmk_firmware/pull/19122))
+
+CLI:
+* Reject json with duplicate keys ([#18108](https://github.com/qmk/qmk_firmware/pull/18108))
+* Add pointing device support to data driven config ([#18215](https://github.com/qmk/qmk_firmware/pull/18215))
+* Disconnect `usb.device_ver` ([#18259](https://github.com/qmk/qmk_firmware/pull/18259))
+* Normalise info_config.h define generation ([#18439](https://github.com/qmk/qmk_firmware/pull/18439))
+* Generate DD RGBLight/LED/RGB Matrix animation defines ([#18459](https://github.com/