mirror of
https://github.com/qmk/qmk_firmware.git
synced 2026-09-29 21:38:47 +02:00
14 lines
30 KiB
JavaScript
14 lines
30 KiB
JavaScript
import { _ as _export_sfc, o as openBlock, c as createElementBlock, al as createStaticVNode } from "./chunks/framework.8zKZLKO7.js";
|
||
const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2025 Nov 30 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20251130.md","filePath":"ChangeLog/20251130.md","lastUpdated":null}');
|
||
const _sfc_main = { name: "ChangeLog/20251130.md" };
|
||
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
||
return openBlock(), createElementBlock("div", null, [..._cache[0] || (_cache[0] = [
|
||
createStaticVNode('<h1 id="qmk-breaking-changes-2025-nov-30-changelog" tabindex="-1">QMK Breaking Changes - 2025 Nov 30 Changelog <a class="header-anchor" href="#qmk-breaking-changes-2025-nov-30-changelog" aria-label="Permalink to "QMK Breaking Changes - 2025 Nov 30 Changelog""></a></h1><h2 id="notable-features" tabindex="-1">Notable Features <a class="header-anchor" href="#notable-features" aria-label="Permalink to "Notable Features {#notable-features}""></a></h2><h3 id="speculative-hold-option-for-mod-taps-hold-mods-instantly-while-unsettled-25572" tabindex="-1">Speculative Hold option for mod-taps: hold mods instantly while unsettled <a href="https://github.com/qmk/qmk_firmware/pull/25572" target="_blank" rel="noreferrer">#25572</a> <a class="header-anchor" href="#speculative-hold-option-for-mod-taps-hold-mods-instantly-while-unsettled-25572" aria-label="Permalink to "Speculative Hold option for mod-taps: hold mods instantly while unsettled [#25572](https://github.com/qmk/qmk_firmware/pull/25572)""></a></h3><p>Speculative Hold makes mod-tap keys more responsive by applying the modifier instantly on keydown, before the tap-hold decision is made. This is especially useful for actions like Shift+click and Ctrl+scroll wheel with an external mouse, which can feel laggy with standard mod-taps.</p><p>The firmware holds the modifier speculatively. Once the key's behavior is settled:</p><ul><li>If held, the modifier remains active as expected until the key is released.</li><li>If tapped, the speculative modifier is canceled just before the tapping keycode is sent.</li></ul><p>Speculative Hold applies the modifier early but does not change the underlying tap-hold decision logic. Speculative Hold is compatible to use in combination with any other tap-hold options.</p><p>see the <a href="./../tap_hold#speculative-hold">Speculative Hold</a> documentation for more information.</p><h2 id="changes-requiring-user-action" tabindex="-1">Changes Requiring User Action <a class="header-anchor" href="#changes-requiring-user-action" aria-label="Permalink to "Changes Requiring User Action""></a></h2><h3 id="updated-keyboard-codebases" tabindex="-1">Updated Keyboard Codebases <a class="header-anchor" href="#updated-keyboard-codebases" aria-label="Permalink to "Updated Keyboard Codebases""></a></h3><table tabindex="0"><thead><tr><th>Old Keyboard Name</th><th>New Keyboard Name</th></tr></thead><tbody><tr><td>0xcb/splaytoraid/32u4</td><td>0xcb/splaytoraid</td></tr><tr><td>0xcb/splaytoraid/rp2040_ce</td><td>0xcb/splaytoraid</td></tr><tr><td>1upkeyboards/sweet16v2/kb2040</td><td>1upkeyboards/sweet16v2</td></tr><tr><td>1upkeyboards/sweet16v2/pro_micro</td><td>1upkeyboards/sweet16v2</td></tr><tr><td>40percentclub/gherkin/kb2040</td><td>40percentclub/gherkin</td></tr><tr><td>40percentclub/gherkin/pro_micro</td><td>40percentclub/gherkin</td></tr><tr><td>durgod/dgk6x/venus</td><td>durgod/dgk6x/venus_ansi</td></tr></tbody></table><h3 id="reduce-tap-dance-memory-usage-move-state-out-of-data-25415" tabindex="-1">Reduce tap dance memory usage, move state out of data <a href="https://github.com/qmk/qmk_firmware/pull/25415" target="_blank" rel="noreferrer">#25415</a> <a class="header-anchor" href="#reduce-tap-dance-memory-usage-move-state-out-of-data-25415" aria-label="Permalink to "Reduce tap dance memory usage, move state out of data [#25415](https://github.com/qmk/qmk_firmware/pull/25415)""></a></h3><p>The tap dance state has been separated from the action structure. Custom tap dance functions now receive the state as a separate parameter instead of accessing it through <code>action->state</code>.</p><p>If your keymap uses custom tap dance functions that access the tap dance state, you need to update your code.</p><ul><li>You can't use <code>action->state</code>. Instead you need to call <code>tap_dance_state_t *tap_dance_get_state(uint8_t tap_dance_idx)</code> to get the state.</li><li>You now get a pointer to the state, so use <code>-></code> notation rather than <code>.</code> notation to get fields from it.</li></ul><h3 id="before" tabindex="-1">Before: <a class="header-anchor" href="#before" aria-label="Permalink to "Before:""></a></h3><div class="language-c vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">c</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">bool</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> process_record_user</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">uint16_t</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> keycode</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">keyrecord_t</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> *</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">record</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) {</span></span>\n<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> tap_dance_action_t</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> *</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">action;</span></span>\n<span class="line"></span>\n<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> switch</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (keycode) {</span></span>\n<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> case</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> TD</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(CT_CLN):</span></span>\n<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> action </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> tap_dance_get</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">QK_TAP_DANCE_GET_INDEX</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(keycode));</span></span>\n<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">!</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">record</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">event.pressed </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&&</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> action</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">state.count </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&&</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> !</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">action</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">state.finished) {</span></span>\n<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> tap_dance_tap_hold_t</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> *</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">tap_hold </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">tap_dance_tap_hold_t</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> *</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)action->user_data;</span></span>\n<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> tap_code16</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(tap_hold->tap);</span></span>\n<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>\n<span class="line"></span>\n<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>\n<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>\n<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h3 id="after" tabindex="-1">After: <a class="header-anchor" href="#after" aria-label="Permalink to "After:""></a></h3><div class="language-c vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">c</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">bool</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> process_record_user</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">uint16_t</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> keycode</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">keyrecord_t</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> *</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">record</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) {</span></span>\n<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> tap_dance_action_t</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> *</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">action;</span></span>\n<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> tap_dance_state_t</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">*</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> state;</span></span>\n<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> switch</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (keycode) {</span></span>\n<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> case</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> TD</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(CT_CLN):</span></span>\n<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> action </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> tap_dance_get</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">QK_TAP_DANCE_GET_INDEX</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(keycode));</span></span>\n<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> state </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> tap_dance_get_state</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">QK_TAP_DANCE_GET_INDEX</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(keycode));</span></span>\n<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">!</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">record</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">event.pressed </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&&</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> state </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">!=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> NULL</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> &&</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> state</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">count </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&&</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> !</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">state</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">finished) {</span></span>\n<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> tap_dance_tap_hold_t</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> *</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">tap_hold </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">tap_dance_tap_hold_t</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> *</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)action->user_data;</span></span>\n<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> tap_code16</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(tap_hold->tap);</span></span>\n<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>\n<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>\n<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">;</span></span>\n<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h2 id="deprecation-notices" tabindex="-1">Deprecation Notices <a class="header-anchor" href="#deprecation-notices" aria-label="Permalink to "Deprecation Notices""></a></h2><p>In line with the <a href="./../support_deprecation_policy#how-much-advance-notice-will-be-given">notice period</a>, deprecation notices for larger items are listed here.</p><h3 id="remove-override-of-qk-led-rgb-matrix-toggle-keycode-25672" tabindex="-1">Remove override of QK_{LED,RGB}_MATRIX_TOGGLE keycode <a href="https://github.com/qmk/qmk_firmware/pull/25672" target="_blank" rel="noreferrer">#25672</a> <a class="header-anchor" href="#remove-override-of-qk-led-rgb-matrix-toggle-keycode-25672" aria-label="Permalink to "Remove override of QK_{LED,RGB}_MATRIX_TOGGLE keycode [#25672](https://github.com/qmk/qmk_firmware/pull/25672)""></a></h3><p><a href="https://github.com/qmk/qmk_firmware/pull/24649" target="_blank" rel="noreferrer">#24649</a> implemented genetic behavior, including keycodes, to cycle flags.</p><p>Any overriding of existing keycodes that duplicate this behavior will be removed to ensure consistency with core functionality.</p><h2 id="full-changelist" tabindex="-1">Full changelist <a class="header-anchor" href="#full-changelist" aria-label="Permalink to "Full changelist""></a></h2><p>Core:</p><ul><li>suspend: suppress wake up keypress (<a href="https://github.com/qmk/qmk_firmware/pull/23389" target="_blank" rel="noreferrer">#23389</a>)</li><li>[Feature Improvement]add option to keep layer state when recording dynamic macros (<a href="https://github.com/qmk/qmk_firmware/pull/24418" target="_blank" rel="noreferrer">#24418</a>)</li><li>Add generic handling to cycle LED/RGB Matrix flags (<a href="https://github.com/qmk/qmk_firmware/pull/24649" target="_blank" rel="noreferrer">#24649</a>)</li><li>Implement <code>mod_t</code> packed struct (<a href="https://github.com/qmk/qmk_firmware/pull/25168" target="_blank" rel="noreferrer">#25168</a>)</li><li>Implement minimal connection update logic (<a href="https://github.com/qmk/qmk_firmware/pull/25334" target="_blank" rel="noreferrer">#25334</a>)</li><li>Reduce tap dance memory usage, move state out of data (<a href="https://github.com/qmk/qmk_firmware/pull/25415" target="_blank" rel="noreferrer">#25415</a>)</li><li>Refactor debounce algorithm with static allocation (<a href="https://github.com/qmk/qmk_firmware/pull/25515" target="_blank" rel="noreferrer">#25515</a>)</li><li>Restructure Pixel Rain interval code (<a href="https://github.com/qmk/qmk_firmware/pull/25516" target="_blank" rel="noreferrer">#25516</a>)</li><li>Guard remapping logic with MAGIC_ENABLE (<a href="https://github.com/qmk/qmk_firmware/pull/25537" target="_blank" rel="noreferrer">#25537</a>)</li><li>Update default OLED font (<a href="https://github.com/qmk/qmk_firmware/pull/25565" target="_blank" rel="noreferrer">#25565</a>)</li><li>Speculative Hold option for mod-taps: hold mods instantly while unsettled. (<a href="https://github.com/qmk/qmk_firmware/pull/25572" target="_blank" rel="noreferrer">#25572</a>)</li><li>Simplify hue calculation in raindrops animation (<a href="https://github.com/qmk/qmk_firmware/pull/25587" target="_blank" rel="noreferrer">#25587</a>)</li><li>Simplify tap_code16_delay (<a href="https://github.com/qmk/qmk_firmware/pull/25595" target="_blank" rel="noreferrer">#25595</a>)</li><li>Debounce: Deprecate num_rows parameter (<a href="https://github.com/qmk/qmk_firmware/pull/25632" target="_blank" rel="noreferrer">#25632</a>)</li><li>Add I2C Transmit and Receive function (<a href="https://github.com/qmk/qmk_firmware/pull/25637" target="_blank" rel="noreferrer">#25637</a>)</li><li>[QP] Minor cleanup and support for RGB888 surface (<a href="https://github.com/qmk/qmk_firmware/pull/25706" target="_blank" rel="noreferrer">#25706</a>)</li><li>Restrict mouse timer activation to movement keycodes (<a href="https://github.com/qmk/qmk_firmware/pull/25716" target="_blank" rel="noreferrer">#25716</a>)</li><li>Update STM32F446 default HSE to 8MHz (<a href="https://github.com/qmk/qmk_firmware/pull/25717" target="_blank" rel="noreferrer">#25717</a>)</li><li>making flowtap timer public so it can be used easily with combos (<a href="https://github.com/qmk/qmk_firmware/pull/25731" target="_blank" rel="noreferrer">#25731</a>)</li><li>Add PixArt PAW-3222 mouse sensor driver (<a href="https://github.com/qmk/qmk_firmware/pull/25763" target="_blank" rel="noreferrer">#25763</a>)</li><li>Merge upstream uf2conv changes (<a href="https://github.com/qmk/qmk_firmware/pull/25786" target="_blank" rel="noreferrer">#25786</a>)</li><li>Partially skip generating community modules when none enabled (<a href="https://github.com/qmk/qmk_firmware/pull/25819" target="_blank" rel="noreferrer">#25819</a>)</li></ul><p>CLI:</p><ul><li>Generate default encoder resolution for sparse config (<a href="https://github.com/qmk/qmk_firmware/pull/25247" target="_blank" rel="noreferrer">#25247</a>)</li><li>Add DIP Switch map support to keymap.json (<a href="https://github.com/qmk/qmk_firmware/pull/25431" target="_blank" rel="noreferrer">#25431</a>)</li><li>Add return code to <code>qmk userspace-doctor</code> (<a href="https://github.com/qmk/qmk_firmware/pull/25775" target="_blank" rel="noreferrer">#25775</a>)</li><li>Better defaulting of <code>{RGB,LED}_MATRIX_DEFAULT_FLAGS</code> (<a href="https://github.com/qmk/qmk_firmware/pull/25785" target="_blank" rel="noreferrer">#25785</a>)</li><li>add BCD versions of QMK Version (<a href="https://github.com/qmk/qmk_firmware/pull/25804" target="_blank" rel="noreferrer">#25804</a>)</li><li>Lint error on missing keyboard readme (<a href="https://github.com/qmk/qmk_firmware/pull/25814" target="_blank" rel="noreferrer">#25814</a>)</li></ul><p>Submodule updates:</p><ul><li>Update ChibiOS-Contrib. (<a href="https://github.com/qmk/qmk_firmware/pull/25751" target="_blank" rel="noreferrer">#25751</a>)</li></ul><p>Keyboards:</p><ul><li><code>atreus</code>: restore intended matrix implementations (<a href="https://github.com/qmk/qmk_firmware/pull/24082" target="_blank" rel="noreferrer">#24082</a>)</li><li>add SteelSeries prime, a stripped down prime+ (<a href="https://github.com/qmk/qmk_firmware/pull/24719" target="_blank" rel="noreferrer">#24719</a>)</li><li>Add new macropad Sharkropad (<a href="https://github.com/qmk/qmk_firmware/pull/24961" target="_blank" rel="noreferrer">#24961</a>)</li><li>Addition of the D60B tsangan pcb (<a href="https://github.com/qmk/qmk_firmware/pull/25245" target="_blank" rel="noreferrer">#25245</a>)</li><li>Migrate <code>eeconfig_init_kb</code> implementations to config (<a href="https://github.com/qmk/qmk_firmware/pull/25422" target="_blank" rel="noreferrer">#25422</a>)</li><li>Generate <code>CUSTOM_MATRIX = lite</code> without <code>matrix_pins.custom</code> (<a href="https://github.com/qmk/qmk_firmware/pull/25453" target="_blank" rel="noreferrer">#25453</a>)</li><li>Add classic48 keyboard (<a href="https://github.com/qmk/qmk_firmware/pull/25492" target="_blank" rel="noreferrer">#25492</a>)</li><li>add durgod venus iso support (<a href="https://github.com/qmk/qmk_firmware/pull/25526" target="_blank" rel="noreferrer">#25526</a>)</li><li>Migrate <code>g_led_config</code> to DD (0-9, A) (<a href="https://github.com/qmk/qmk_firmware/pull/25558" target="_blank" rel="noreferrer">#25558</a>)</li><li>Migrate <code>g_led_config</code> to DD (B, C) (<a href="https://github.com/qmk/qmk_firmware/pull/25559" target="_blank" rel="noreferrer">#25559</a>)</li><li>Migrate <code>g_led_config</code> to DD (D) (<a href="https://github.com/qmk/qmk_firmware/pull/25560" target="_blank" rel="noreferrer">#25560</a>)</li><li>Migrate <code>g_led_config</code> to DD (E, F) (<a href="https://github.com/qmk/qmk_firmware/pull/25561" target="_blank" rel="noreferrer">#25561</a>)</li><li>Remove duplication of RP2040 config defaults (<a href="https://github.com/qmk/qmk_firmware/pull/25563" target="_blank" rel="noreferrer">#25563</a>)</li><li>Refactor 40percentclub/ut47 (<a href="https://github.com/qmk/qmk_firmware/pull/25571" target="_blank" rel="noreferrer">#25571</a>)</li><li>E7-V2 Implementation (<a href="https://github.com/qmk/qmk_firmware/pull/25594" target="_blank" rel="noreferrer">#25594</a>)</li><li>Migrate <code>g_led_config</code> to DD (G) (<a href="https://github.com/qmk/qmk_firmware/pull/25598" target="_blank" rel="noreferrer">#25598</a>)</li><li>Migrate <code>g_led_config</code> to DD (H) (<a href="https://github.com/qmk/qmk_firmware/pull/25599" target="_blank" rel="noreferrer">#25599</a>)</li><li>Migrate <code>g_led_config</code> to DD (I) (<a href="https://github.com/qmk/qmk_firmware/pull/25600" target="_blank" rel="noreferrer">#25600</a>)</li><li>Migrate <code>g_led_config</code> to DD (JK1) (<a href="https://github.com/qmk/qmk_firmware/pull/25601" target="_blank" rel="noreferrer">#25601</a>)</li><li>Migrate <code>g_led_config</code> to DD (K2) (<a href="https://github.com/qmk/qmk_firmware/pull/25602" target="_blank" rel="noreferrer">#25602</a>)</li><li>Migrate <code>g_led_config</code> to DD (K3) (<a href="https://github.com/qmk/qmk_firmware/pull/25603" target="_blank" rel="noreferrer">#25603</a>)</li><li>Migrate <code>g_led_config</code> to DD (K4) (<a href="https://github.com/qmk/qmk_firmware/pull/25605" target="_blank" rel="noreferrer">#25605</a>)</li><li>Migrate <code>g_led_config</code> to DD (K5) (<a href="https://github.com/qmk/qmk_firmware/pull/25606" target="_blank" rel="noreferrer">#25606</a>)</li><li>Migrate <code>g_led_config</code> to DD (K6) (<a href="https://github.com/qmk/qmk_firmware/pull/25607" target="_blank" rel="noreferrer">#25607</a>)</li><li>Refactor <code>40percentclub/gherkin</code> (<a href="https://github.com/qmk/qmk_firmware/pull/25608" target="_blank" rel="noreferrer">#25608</a>)</li><li>Refactor <code>0xcb/splaytoraid</code> (<a href="https://github.com/qmk/qmk_firmware/pull/25609" target="_blank" rel="noreferrer">#25609</a>)</li><li>Refactor <code>1upkeyboards/sweet16v2</code> (<a href="https://github.com/qmk/qmk_firmware/pull/25610" target="_blank" rel="noreferrer">#25610</a>)</li><li>Migrate <code>g_led_config</code> to DD (K7) (<a href="https://github.com/qmk/qmk_firmware/pull/25616" target="_blank" rel="noreferrer">#25616</a>)</li><li>Migrate <code>g_led_config</code> to DD (L) (<a href="https://github.com/qmk/qmk_firmware/pull/25617" target="_blank" rel="noreferrer">#25617</a>)</li><li>Migrate <code>g_led_config</code> to DD (M1) (<a href="https://github.com/qmk/qmk_firmware/pull/25618" target="_blank" rel="noreferrer">#25618</a>)</li><li>Migrate <code>g_led_config</code> to DD (M2) (<a href="https://github.com/qmk/qmk_firmware/pull/25619" target="_blank" rel="noreferrer">#25619</a>)</li><li>Migrate <code>g_led_config</code> to DD (M3) (<a href="https://github.com/qmk/qmk_firmware/pull/25620" target="_blank" rel="noreferrer">#25620</a>)</li><li>Migrate <code>g_led_config</code> to DD (NO) (<a href="https://github.com/qmk/qmk_firmware/pull/25621" target="_blank" rel="noreferrer">#25621</a>)</li><li>Migrate <code>g_led_config</code> to DD (P) (<a href="https://github.com/qmk/qmk_firmware/pull/25622" target="_blank" rel="noreferrer">#25622</a>)</li><li>Migrate <code>g_led_config</code> to DD (QR) (<a href="https://github.com/qmk/qmk_firmware/pull/25623" target="_blank" rel="noreferrer">#25623</a>)</li><li>Migrate <code>g_led_config</code> to DD (S) (<a href="https://github.com/qmk/qmk_firmware/pull/25624" target="_blank" rel="noreferrer">#25624</a>)</li><li>Migrate <code>g_led_config</code> to DD (TUW) (<a href="https://github.com/qmk/qmk_firmware/pull/25625" target="_blank" rel="noreferrer">#25625</a>)</li><li>Remove idobao *_DISABLE_UNDERGLOW behaviour (<a href="https://github.com/qmk/qmk_firmware/pull/25638" target="_blank" rel="noreferrer">#25638</a>)</li><li>Migrate <code>g_led_config</code> to DD (YZ) (<a href="https://github.com/qmk/qmk_firmware/pull/25650" target="_blank" rel="noreferrer">#25650</a>)</li><li>Tidy Keebio keyboards (<a href="https://github.com/qmk/qmk_firmware/pull/25653" target="_blank" rel="noreferrer">#25653</a>)</li><li>Remove encoder resolution where duplicating defaults (<a href="https://github.com/qmk/qmk_firmware/pull/25654" target="_blank" rel="noreferrer">#25654</a>)</li><li>Custom oled fonts cleanup (<a href="https://github.com/qmk/qmk_firmware/pull/25665" target="_blank" rel="noreferrer">#25665</a>)</li><li>Binepad KnobX1 - refactor <code>x1_layer_led</code> function as weak (<a href="https://github.com/qmk/qmk_firmware/pull/25668" target="_blank" rel="noreferrer">#25668</a>)</li><li>Add DD {LED,RGB}_MATRIX_DEFAULT_FLAGS support (<a href="https://github.com/qmk/qmk_firmware/pull/25671" target="_blank" rel="noreferrer">#25671</a>)</li><li>keyboards: Add Royal Kludge RK61 (<a href="https://github.com/qmk/qmk_firmware/pull/25694" target="_blank" rel="noreferrer">#25694</a>)</li><li>Add TRKeyboard TRK2 keyboard (<a href="https://github.com/qmk/qmk_firmware/pull/25754" target="_blank" rel="noreferrer">#25754</a>)</li></ul><p>Keyboard fixes:</p><ul><li>Fixup <code>kprepublic/bm60hsrgb/rev2</code> (<a href="https://github.com/qmk/qmk_firmware/pull/25644" target="_blank" rel="noreferrer">#25644</a>)</li><li>Fixup <code>kprepublic/bm60hsrgb_iso/rev2</code> (<a href="https://github.com/qmk/qmk_firmware/pull/25648" target="_blank" rel="noreferrer">#25648</a>)</li><li>Fixup <code>kprepublic/bm60hsrgb_poker/rev2</code> (<a href="https://github.com/qmk/qmk_firmware/pull/25649" target="_blank" rel="noreferrer">#25649</a>)</li><li>Fixup <code>rgbkb/pan</code> (<a href="https://github.com/qmk/qmk_firmware/pull/25678" target="_blank" rel="noreferrer">#25678</a>)</li><li>Align use of keymap level <code>_kb</code> callbacks (<a href="https://github.com/qmk/qmk_firmware/pull/25774" target="_blank" rel="noreferrer">#25774</a>)</li></ul><p>Others:</p><ul><li>Rework converter docs (<a href="https://github.com/qmk/qmk_firmware/pull/18314" target="_blank" rel="noreferrer">#18314</a>)</li><li>Update USBaspLoader ISP instructions (<a href="https://github.com/qmk/qmk_firmware/pull/25590" target="_blank" rel="noreferrer">#25590</a>)</li><li>Add LED/RGB Matrix flags API docs (<a href="https://github.com/qmk/qmk_firmware/pull/25673" target="_blank" rel="noreferrer">#25673</a>)</li></ul><p>Bugs:</p><ul><li>Fix single key combos activating only once (<a href="https://github.com/qmk/qmk_firmware/pull/25198" target="_blank" rel="noreferrer">#25198</a>)</li><li>Fix RGB matrix not syncing and turning off properly on timeout (<a href="https://github.com/qmk/qmk_firmware/pull/25467" target="_blank" rel="noreferrer">#25467</a>)</li><li>Fix drv haptics docs by using the correct function name (<a href="https://github.com/qmk/qmk_firmware/pull/25733" target="_blank" rel="noreferrer">#25733</a>)</li><li>Fix Magic GUI masking logic (<a href="https://github.com/qmk/qmk_firmware/pull/25780" target="_blank" rel="noreferrer">#25780</a>)</li><li>Fix Speculative Hold to enable also right-handed RSFT, RCTL by default. (<a href="https://github.com/qmk/qmk_firmware/pull/25797" target="_blank" rel="noreferrer">#25797</a>)</li><li>Fix community layout keymap discovery (<a href="https://github.com/qmk/qmk_firmware/pull/25802" target="_blank" rel="noreferrer">#25802</a>)</li><li>Fix preference of output file for 'qmk generate-autocorrect-data' (<a href="https://github.com/qmk/qmk_firmware/pull/25818" target="_blank" rel="noreferrer">#25818</a>)</li></ul>', 39)
|
||
])]);
|
||
}
|
||
const _20251130 = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
|
||
export {
|
||
__pageData,
|
||
_20251130 as default
|
||
};
|