Files
qmk_firmware-mirror/ChangeLog/20220827.html
T

38 lines
152 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en-US" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>QMK Breaking Changes - 2022 August 27 Changelog | QMK Firmware</title>
<meta name="description" content="Documentation for QMK Firmware">
<meta name="generator" content="VitePress v1.6.4">
<link rel="preload stylesheet" href="/assets/style.DXtMBPge.css" as="style">
<link rel="preload stylesheet" href="/vp-icons.css" as="style">
<script type="module" src="/assets/app.DGFHjmX7.js"></script>
<link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
<link rel="modulepreload" href="/assets/chunks/theme.D8L5QszO.js">
<link rel="modulepreload" href="/assets/chunks/framework.8zKZLKO7.js">
<link rel="modulepreload" href="/assets/ChangeLog_20220827.md.Cr63IlPG.lean.js">
<script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
</head>
<body>
<div id="app"><div class="Layout" data-v-5d98c3a5><!--[--><!--]--><!--[--><span tabindex="-1" data-v-0b0ada53></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0b0ada53>Skip to content</a><!--]--><!----><header class="VPNav" data-v-5d98c3a5 data-v-ae24b3ad><div class="VPNavBar" data-v-ae24b3ad data-v-6aa21345><div class="wrapper" data-v-6aa21345><div class="container" data-v-6aa21345><div class="title" data-v-6aa21345><div class="VPNavBarTitle has-sidebar" data-v-6aa21345 data-v-1168a8e4><a class="title" href="/" data-v-1168a8e4><!--[--><!--]--><!--[--><!--[--><!--[--><img class="VPImage dark logo" src="/qmk-logo-dark.svg" alt data-v-8426fc1a><!--]--><!--[--><img class="VPImage light logo" src="/qmk-logo-light.svg" alt data-v-8426fc1a><!--]--><!--]--><!--]--><span data-v-1168a8e4>QMK Firmware</span><!--[--><!--]--></a></div></div><div class="content" data-v-6aa21345><div class="content-body" data-v-6aa21345><!--[--><!--]--><div class="VPNavBarSearch search" data-v-6aa21345><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-6aa21345 data-v-dc692963><span id="main-nav-aria-label" class="visually-hidden" data-v-dc692963> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>Home</span><!--]--></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-6aa21345 data-v-6c893767><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-6c893767 data-v-5337faa4 data-v-1d5665e3><span class="check" data-v-1d5665e3><span class="icon" data-v-1d5665e3><!--[--><span class="vpi-sun sun" data-v-5337faa4></span><span class="vpi-moon moon" data-v-5337faa4></span><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-6aa21345 data-v-0394ad82 data-v-7bc22406><!--[--><a class="VPSocialLink no-icon" href="https://reddit.com/r/olkb" aria-label target="_blank" rel="noopener" data-v-7bc22406 data-v-bd121fe5><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="50px" height="50px"><path d="M 29 3 C 28.0625 3 27.164063 3.382813 26.5 4 C 25.835938 4.617188 25.363281 5.433594 25 6.40625 C 24.355469 8.140625 24.085938 10.394531 24.03125 13.03125 C 19.234375 13.179688 14.820313 14.421875 11.28125 16.46875 C 10.214844 15.46875 8.855469 14.96875 7.5 14.96875 C 6.089844 14.96875 4.675781 15.511719 3.59375 16.59375 C 1.425781 18.761719 1.425781 22.238281 3.59375 24.40625 L 3.84375 24.65625 C 3.3125 26.035156 3 27.488281 3 29 C 3 33.527344 5.566406 37.585938 9.5625 40.4375 C 13.558594 43.289063 19.007813 45 25 45 C 30.992188 45 36.441406 43.289063 40.4375 40.4375 C 44.433594 37.585938 47 33.527344 47 29 C 47 27.488281 46.6875 26.035156 46.15625 24.65625 L 46.40625 24.40625 C 48.574219 22.238281 48.574219 18.761719 46.40625 16.59375 C 45.324219 15.511719 43.910156 14.96875 42.5 14.96875 C 41.144531 14.96875 39.785156 15.46875 38.71875 16.46875 C 35.195313 14.433594 30.800781 13.191406 26.03125 13.03125 C 26.09375 10.546875 26.363281 8.46875 26.875 7.09375 C 27.164063 6.316406 27.527344 5.757813 27.875 5.4375 C 28.222656 5.117188 28.539063 5 29 5 C 29.460938 5 29.683594 5.125 30.03125 5.40625 C 30.378906 5.6875 30.785156 6.148438 31.3125 6.6875 C 32.253906 7.652344 33.695313 8.714844 36.09375 8.9375 C 36.539063 11.238281 38.574219 13 41 13 C 43.75 13 46 10.75 46 8 C 46 5.25 43.75 3 41 3 C 38.605469 3 36.574219 4.710938 36.09375 6.96875 C 34.3125 6.796875 33.527344 6.109375 32.75 5.3125 C 32.300781 4.851563 31.886719 4.3125 31.3125 3.84375 C 30.738281 3.375 29.9375 3 29 3 Z M 41 5 C 42.667969 5 44 6.332031 44 8 C 44 9.667969 42.667969 11 41 11 C 39.332031 11 38 9.667969 38 8 C 38 6.332031 39.332031 5 41 5 Z M 25 15 C 30.609375 15 35.675781 16.613281 39.28125 19.1875 C 42.886719 21.761719 45 25.226563 45 29 C 45 32.773438 42.886719 36.238281 39.28125 38.8125 C 35.675781 41.386719 30.609375 43 25 43 C 19.390625 43 14.324219 41.386719 10.71875 38.8125 C 7.113281 36.238281 5 32.773438 5 29 C 5 25.226563 7.113281 21.761719 10.71875 19.1875 C 14.324219 16.613281 19.390625 15 25 15 Z M 7.5 16.9375 C 8.203125 16.9375 8.914063 17.148438 9.53125 17.59375 C 7.527344 19.03125 5.886719 20.769531 4.75 22.71875 C 3.582031 21.296875 3.660156 19.339844 5 18 C 5.714844 17.285156 6.609375 16.9375 7.5 16.9375 Z M 42.5 16.9375 C 43.390625 16.9375 44.285156 17.285156 45 18 C 46.339844 19.339844 46.417969 21.296875 45.25 22.71875 C 44.113281 20.769531 42.472656 19.03125 40.46875 17.59375 C 41.085938 17.148438 41.796875 16.9375 42.5 16.9375 Z M 17 22 C 14.800781 22 13 23.800781 13 26 C 13 28.199219 14.800781 30 17 30 C 19.199219 30 21 28.199219 21 26 C 21 23.800781 19.199219 22 17 22 Z M 33 22 C 30.800781 22 29 23.800781 29 26 C 29 28.199219 30.800781 30 33 30 C 35.199219 30 37 28.199219 37 26 C 37 23.800781 35.199219 22 33 22 Z M 17 24 C 18.117188 24 19 24.882813 19 26 C 19 27.117188 18.117188 28 17 28 C 15.882813 28 15 27.117188 15 26 C 15 24.882813 15.882813 24 17 24 Z M 33 24 C 34.117188 24 35 24.882813 35 26 C 35 27.117188 34.117188 28 33 28 C 31.882813 28 31 27.117188 31 26 C 31 24.882813 31.882813 24 33 24 Z M 34.15625 33.84375 C 34.101563 33.851563 34.050781 33.859375 34 33.875 C 33.683594 33.9375 33.417969 34.144531 33.28125 34.4375 C 33.28125 34.4375 32.757813 35.164063 31.4375 36 C 30.117188 36.835938 28.058594 37.6875 25 37.6875 C 21.941406 37.6875 19.882813 36.835938 18.5625 36 C 17.242188 35.164063 16.71875 34.4375 16.71875 34.4375 C 16.492188 34.082031 16.066406 33.90625 15.65625 34 C 15.332031 34.082031 15.070313 34.316406 14.957031 34.632813 C 14.84375 34.945313 14.894531 35.292969 15.09375 35.5625 C 15.09375 35.5625 15.863281 36.671875 17.46875 37.6875 C 19.074219 38.703125 21.558594 39.6875 25 39.6875 C 28.441406 39.6875 30.925781 38.703125 32.53125 37.6875 C 34.136719 36.671875 34.90625 35.5625 34.90625 35.5625 C 35.207031 35.273438 35.296875 34.824219 35.128906 34.441406 C 34.960938 34.058594 34.574219 33.820313 34.15625 33.84375 Z"/></svg></a><a class="VPSocialLink no-icon" href="https://discord.gg/qmk" aria-label="discord" target="_blank" rel="noopener" data-v-7bc22406 data-v-bd121fe5><span class="vpi-social-discord"></span></a><a class="VPSocialLink no-icon" href="https://github.com/qmk/qmk_firmware" aria-label="github" target="_blank" rel="noopener" data-v-7bc22406 data-v-bd121fe5><span class="vpi-social-github"></span></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-6aa21345 data-v-bb2aa2f0 data-v-cf11d7a2><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-cf11d7a2><span class="vpi-more-horizontal icon" data-v-cf11d7a2></span></button><div class="menu" data-v-cf11d7a2><div class="VPMenu" data-v-cf11d7a2 data-v-b98bc113><!----><!--[--><!--[--><!----><div class="group" data-v-bb2aa2f0><div class="item appearance" data-v-bb2aa2f0><p class="label" data-v-bb2aa2f0>Appearance</p><div class="appearance-action" data-v-bb2aa2f0><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-bb2aa2f0 data-v-5337faa4 data-v-1d5665e3><span class="check" data-v-1d5665e3><span class="icon" data-v-1d5665e3><!--[--><span class="vpi-sun sun" data-v-5337faa4></span><span class="vpi-moon moon" data-v-5337faa4></span><!--]--></span></span></button></div></div></div><div class="group" data-v-bb2aa2f0><div class="item social-links" data-v-bb2aa2f0><div class="VPSocialLinks social-links-list" data-v-bb2aa2f0 data-v-7bc22406><!--[--><a class="VPSocialLink no-icon" href="https://reddit.com/r/olkb" aria-label target="_blank" rel="noopener" data-v-7bc22406 data-v-bd121fe5><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="50px" height="50px"><path d="M 29 3 C 28.0625 3 27.164063 3.382813 26.5 4 C 25.835938 4.617188 25.363281 5.433594 25 6.40625 C 24.355469 8.140625 24.085938 10.394531 24.03125 13.03125 C 19.234375 13.179688 14.820313 14.421875 11.28125 16.46875 C 10.214844 15.46875 8.855469 14.96875 7.5 14.96875 C 6.089844 14.96875 4.675781 15.511719 3.59375 16.59375 C 1.425781 18.761719 1.425781 22.238281 3.59375 24.40625 L 3.84375 24.65625 C 3.3125 26.035156 3 27.488281 3 29 C 3 33.527344 5.566406 37.585938 9.5625 40.4375 C 13.558594 43.289063 19.007813 45 25 45 C 30.992188 45 36.441406 43.289063 40.4375 40.4375 C 44.433594 37.585938 47 33.527344 47 29 C 47 27.488281 46.6875 26.035156 46.15625 24.65625 L 46.40625 24.40625 C 48.574219 22.238281 48.574219 18.761719 46.40625 16.59375 C 45.324219 15.511719 43.910156 14.96875 42.5 14.96875 C 41.144531 14.96875 39.785156 15.46875 38.71875 16.46875 C 35.195313 14.433594 30.800781 13.191406 26.03125 13.03125 C 26.09375 10.546875 26.363281 8.46875 26.875 7.09375 C 27.164063 6.316406 27.527344 5.757813 27.875 5.4375 C 28.222656 5.117188 28.539063 5 29 5 C 29.460938 5 29.683594 5.125 30.03125 5.40625 C 30.378906 5.6875 30.785156 6.148438 31.3125 6.6875 C 32.253906 7.652344 33.695313 8.714844 36.09375 8.9375 C 36.539063 11.238281 38.574219 13 41 13 C 43.75 13 46 10.75 46 8 C 46 5.25 43.75 3 41 3 C 38.605469 3 36.574219 4.710938 36.09375 6.96875 C 34.3125 6.796875 33.527344 6.109375 32.75 5.3125 C 32.300781 4.851563 31.886719 4.3125 31.3125 3.84375 C 30.738281 3.375 29.9375 3 29 3 Z M 41 5 C 42.667969 5 44 6.332031 44 8 C 44 9.667969 42.667969 11 41 11 C 39.332031 11 38 9.667969 38 8 C 38 6.332031 39.332031 5 41 5 Z M 25 15 C 30.609375 15 35.675781 16.613281 39.28125 19.1875 C 42.886719 21.761719 45 25.226563 45 29 C 45 32.773438 42.886719 36.238281 39.28125 38.8125 C 35.675781 41.386719 30.609375 43 25 43 C 19.390625 43 14.324219 41.386719 10.71875 38.8125 C 7.113281 36.238281 5 32.773438 5 29 C 5 25.226563 7.113281 21.761719 10.71875 19.1875 C 14.324219 16.613281 19.390625 15 25 15 Z M 7.5 16.9375 C 8.203125 16.9375 8.914063 17.148438 9.53125 17.59375 C 7.527344 19.03125 5.886719 20.769531 4.75 22.71875 C 3.582031 21.296875 3.660156 19.339844 5 18 C 5.714844 17.285156 6.609375 16.9375 7.5 16.9375 Z M 42.5 16.9375 C 43.390625 16.9375 44.285156 17.285156 45 18 C 46.339844 19.339844 46.417969 21.296875 45.25 22.71875 C 44.113281 20.769531 42.472656 19.03125 40.46875 17.59375 C 41.085938 17.148438 41.796875 16.9375 42.5 16.9375 Z M 17 22 C 14.800781 22 13 23.800781 13 26 C 13 28.199219 14.800781 30 17 30 C 19.199219 30 21 28.199219 21 26 C 21 23.800781 19.199219 22 17 22 Z M 33 22 C 30.800781 22 29 23.800781 29 26 C 29 28.199219 30.800781 30 33 30 C 35.199219 30 37 28.199219 37 26 C 37 23.800781 35.199219 22 33 22 Z M 17 24 C 18.117188 24 19 24.882813 19 26 C 19 27.117188 18.117188 28 17 28 C 15.882813 28 15 27.117188 15 26 C 15 24.882813 15.882813 24 17 24 Z M 33 24 C 34.117188 24 35 24.882813 35 26 C 35 27.117188 34.117188 28 33 28 C 31.882813 28 31 27.117188 31 26 C 31 24.882813 31.882813 24 33 24 Z M 34.15625 33.84375 C 34.101563 33.851563 34.050781 33.859375 34 33.875 C 33.683594 33.9375 33.417969 34.144531 33.28125 34.4375 C 33.28125 34.4375 32.757813 35.164063 31.4375 36 C 30.117188 36.835938 28.058594 37.6875 25 37.6875 C 21.941406 37.6875 19.882813 36.835938 18.5625 36 C 17.242188 35.164063 16.71875 34.4375 16.71875 34.4375 C 16.492188 34.082031 16.066406 33.90625 15.65625 34 C 15.332031 34.082031 15.070313 34.316406 14.957031 34.632813 C 14.84375 34.945313 14.894531 35.292969 15.09375 35.5625 C 15.09375 35.5625 15.863281 36.671875 17.46875 37.6875 C 19.074219 38.703125 21.558594 39.6875 25 39.6875 C 28.441406 39.6875 30.925781 38.703125 32.53125 37.6875 C 34.136719 36.671875 34.90625 35.5625 34.90625 35.5625 C 35.207031 35.273438 35.296875 34.824219 35.128906 34.441406 C 34.960938 34.058594 34.574219 33.820313 34.15625 33.84375 Z"/></svg></a><a class="VPSocialLink no-icon" href="https://discord.gg/qmk" aria-label="discord" target="_blank" rel="noopener" data-v-7bc22406 data-v-bd121fe5><span class="vpi-social-discord"></span></a><a class="VPSocialLink no-icon" href="https://github.com/qmk/qmk_firmware" aria-label="github" target="_blank" rel="noopener" data-v-7bc22406 data-v-bd121fe5><span class="vpi-social-github"></span></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-6aa21345 data-v-e5dd9c1c><span class="container" data-v-e5dd9c1c><span class="top" data-v-e5dd9c1c></span><span class="middle" data-v-e5dd9c1c></span><span class="bottom" data-v-e5dd9c1c></span></span></button></div></div></div></div><div class="divider" data-v-6aa21345><div class="divider-line" data-v-6aa21345></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-5d98c3a5 data-v-a6f0e41e><div class="container" data-v-a6f0e41e><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-a6f0e41e><span class="vpi-align-left menu-icon" data-v-a6f0e41e></span><span class="menu-text" data-v-a6f0e41e>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-a6f0e41e data-v-8a42e2b4><button data-v-8a42e2b4>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-5d98c3a5 data-v-319d5ca6><div class="curtain" data-v-319d5ca6></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-319d5ca6><span class="visually-hidden" id="sidebar-aria-label" data-v-319d5ca6> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>Tutorial</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/newbs" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Introduction</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/newbs_getting_started" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Setup</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/newbs_building_firmware" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Building Your First Firmware</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/newbs_flashing" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Flashing Firmware</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/support" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Getting Help/Support</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/newbs_external_userspace" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>External Userspace</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/newbs_learn_more_resources" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Other Resources</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/syllabus" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Syllabus</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>FAQs</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/faq_general" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>General FAQ</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/faq_build" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Build/Compile QMK</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/faq_misc" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Troubleshooting QMK</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/faq_debug" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Debugging QMK</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/faq_keymap" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Keymap FAQ</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/squeezing_avr" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Squeezing Space from AVR</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/reference_glossary" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Glossary</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>Licensing</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/license_violations" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>License Violations</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/proprietary_libs" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Proprietary Libraries</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>Configurator</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/newbs_building_firmware_configurator" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/configurator_step_by_step" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Step by Step</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/configurator_troubleshooting" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Troubleshooting</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/configurator_architecture" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Architecture</p><!--]--></a><!----></div><!----></div><section class="VPSidebarItem level-1" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h3 class="text" data-v-b3fd67f8>QMK API</h3><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/api_overview" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/api_docs" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>API Documentation</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/reference_configurator_support" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Keyboard Support</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/configurator_default_keymaps" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Adding Default Keymaps</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>CLI</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/cli" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/cli_configuration" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Configuration</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/cli_commands" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Commands</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/cli_tab_complete" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Tab Completion</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>Using QMK</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><section class="VPSidebarItem level-1" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h3 class="text" data-v-b3fd67f8>Guides</h3><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/custom_quantum_functions" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Customizing Functionality</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/driver_installation_zadig" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Driver Installation with Zadig</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/community_modules" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Community Modules</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/keymap" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Keymap Overview</p><!--]--></a><!----></div><!----></div><section class="VPSidebarItem level-2" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h4 class="text" data-v-b3fd67f8>Development Environments</h4><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/getting_started_docker" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Docker Guide</p><!--]--></a><!----></div><!----></div><!--]--></div></section><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/flashing" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Flashing</p><!--]--></a><!----></div><!----></div><section class="VPSidebarItem level-2" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h4 class="text" data-v-b3fd67f8>IDEs</h4><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/other_eclipse" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Using Eclipse with QMK</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/other_vscode" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Using VSCode with QMK</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-2" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h4 class="text" data-v-b3fd67f8>Git Best Practices</h4><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/newbs_git_best_practices" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Introduction</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/newbs_git_using_your_master_branch" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Your Fork</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/newbs_git_resolving_merge_conflicts" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Merge Conflicts</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/newbs_git_resynchronize_a_branch" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Fixing Your Branch</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section><section class="VPSidebarItem level-1" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h3 class="text" data-v-b3fd67f8>Simple Keycodes</h3><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/keycodes" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Full List</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/keycodes_basic" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Basic Keycodes</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/reference_keymap_extras" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Language-Specific Keycodes</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/feature_advanced_keycodes" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Modifier Keys</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/quantum_keycodes" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Quantum Keycodes</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/keycodes_magic" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Magic Keycodes</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h3 class="text" data-v-b3fd67f8>Advanced Keycodes</h3><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/command" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Command</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/dynamic_macros" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Dynamic Macros</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/grave_esc" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Grave Escape</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/leader_key" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Leader Key</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/mod_tap" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Mod-Tap</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/feature_macros" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Macros</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/mouse_keys" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Mouse Keys</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/programmable_button" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Programmable Button</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/repeat_key" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Repeat Key</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/space_cadet" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Space Cadet Shift</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/keycodes_us_ansi_shifted" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>US ANSI Shifted Keys</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h3 class="text" data-v-b3fd67f8>Software Features</h3><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/auto_shift" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Auto Shift</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/autocorrect" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Autocorrect</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/caps_word" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Caps Word</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/combo" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Combos</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/feature_debounce_type" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Debounce API</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/digitizer" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Digitizer</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/feature_eeprom" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>EEPROM</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/key_lock" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Key Lock</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/key_overrides" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Key Overrides</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/feature_layers" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Layers</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/layer_lock" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Layer Lock</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/one_shot_keys" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>One Shot Keys</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/os_detection" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>OS Detection</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/rawhid" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Raw HID</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/secure" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Secure</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/send_string" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Send String</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/sequencer" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Sequencer</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/swap_hands" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Swap Hands</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/tap_dance" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Tap Dance</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/tap_hold" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Tap-Hold Configuration</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/tri_layer" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Tri Layer</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/unicode" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Unicode</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/feature_userspace" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Userspace</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/wpm" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>WPM Calculation</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h3 class="text" data-v-b3fd67f8>Hardware Features</h3><!----></div><div class="items" data-v-b3fd67f8><!--[--><section class="VPSidebarItem level-2" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h4 class="text" data-v-b3fd67f8>Displays</h4><!----></div><div class="items" data-v-b3fd67f8><!--[--><section class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/quantum_painter" data-v-b3fd67f8><!--[--><h5 class="text" data-v-b3fd67f8>Quantum Painter</h5><!--]--></a><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-4 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/quantum_painter_lvgl" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Quantum Painter LVGL Integration</p><!--]--></a><!----></div><!----></div><!--]--></div></section><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/hd44780" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>HD44780 LCD Driver</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/st7565" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>ST7565 LCD Driver</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/oled_driver" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>OLED Driver</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-2" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h4 class="text" data-v-b3fd67f8>Lighting</h4><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/backlight" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Backlight</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/led_matrix" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>LED Matrix</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/rgblight" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>RGB Lighting</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/rgb_matrix" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>RGB Matrix</p><!--]--></a><!----></div><!----></div><!--]--></div></section><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/audio" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Audio</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/battery" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Battery</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/bootmagic" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Bootmagic</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/feature_converters" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Converters</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/custom_matrix" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Custom Matrix</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/dip_switch" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>DIP Switch</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/encoders" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Encoders</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/haptic_feedback" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Haptic Feedback</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/joystick" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Joystick</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/led_indicators" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>LED Indicators</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/midi" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>MIDI</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/pointing_device" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Pointing Device</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/ps2_mouse" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>PS/2 Mouse</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/split_keyboard" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Split Keyboard</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/stenography" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Stenography</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/features/wireless" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Wireless</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h3 class="text" data-v-b3fd67f8>Keyboard Building</h3><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/easy_maker" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Easy Maker for One Offs</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/porting_your_keyboard_to_qmk" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Porting Keyboards</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/hand_wire" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Hand Wiring Guide</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/isp_flashing_guide" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>ISP Flashing Guide</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>Developing QMK</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/pr_checklist" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>PR Checklist</p><!--]--></a><!----></div><!----></div><section class="VPSidebarItem level-1" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h3 class="text" data-v-b3fd67f8>Breaking Changes</h3><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/breaking_changes" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/breaking_changes_instructions" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>My Pull Request Was Flagged</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/ChangeLog/20260531" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Most Recent ChangeLog</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/breaking_changes_history" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Past Breaking Changes</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/support_deprecation_policy" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Deprecation Policy</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h3 class="text" data-v-b3fd67f8>C Development</h3><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/arm_debugging" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>ARM Debugging Guide</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/coding_conventions_c" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Coding Conventions</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/compatible_microcontrollers" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Compatible Microcontrollers</p><!--]--></a><!----></div><!----></div><section class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/hardware_drivers" data-v-b3fd67f8><!--[--><h4 class="text" data-v-b3fd67f8>Drivers</h4><!--]--></a><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/drivers/adc" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>ADC Driver</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/drivers/apa102" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>APA102 Driver</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/drivers/audio" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Audio Driver</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/drivers/battery" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Battery Driver</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/drivers/eeprom" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>EEPROM Driver</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/drivers/flash" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Flash Driver</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/drivers/i2c" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>I2C Driver</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/drivers/serial" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>'serial' Driver</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/drivers/spi" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>SPI Driver</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/drivers/uart" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>UART Driver</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/drivers/ws2812" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>WS2812 Driver</p><!--]--></a><!----></div><!----></div><!--]--></div></section><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/drivers/gpio" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>GPIO Controls</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/hardware_keyboard_guidelines" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Keyboard Guidelines</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h3 class="text" data-v-b3fd67f8>Python Development</h3><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/coding_conventions_python" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Coding Conventions</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/cli_development" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>QMK CLI Development</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h3 class="text" data-v-b3fd67f8>Configurator Development</h3><!----></div><div class="items" data-v-b3fd67f8><!--[--><section class="VPSidebarItem level-2" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h4 class="text" data-v-b3fd67f8>QMK API</h4><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/api_development_environment" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Development Environment</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/api_development_overview" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Architecture Overview</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section><section class="VPSidebarItem level-1" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h3 class="text" data-v-b3fd67f8>Hardware Platform Development</h3><!----></div><div class="items" data-v-b3fd67f8><!--[--><section class="VPSidebarItem level-2" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h4 class="text" data-v-b3fd67f8>Arm/ChibiOS</h4><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/platformdev_selecting_arm_mcu" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Selecting an MCU</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/platformdev_chibios_earlyinit" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Early initialization</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/platformdev_rp2040" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Raspberry Pi RP2040</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/platformdev_proton_c" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Proton C</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/platformdev_blackpill_f4x1" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>WeAct Blackpill F4x1</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section><section class="VPSidebarItem level-1" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h3 class="text" data-v-b3fd67f8>QMK Reference</h3><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/contributing" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Contributing to QMK</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/config_options" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Config Options</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/data_driven_config" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Data Driven Configuration</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/getting_started_make_guide" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Make Documentation</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/documentation_best_practices" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Documentation Best Practices</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/documentation_templates" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Documentation Templates</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/feature_layouts" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Community Layouts</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/unit_testing" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Unit Testing</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/ref_functions" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Useful Functions</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/reference_info_json" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>info.json Format</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h3 class="text" data-v-b3fd67f8>For a Deeper Understanding</h3><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/how_keyboards_work" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>How Keyboards Work</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/how_a_matrix_works" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>How a Matrix Works</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/understanding_qmk" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Understanding QMK</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-5d98c3a5 data-v-1428d186><div class="VPDoc has-sidebar has-aside" data-v-1428d186 data-v-39a288b8><!--[--><!--]--><div class="container" data-v-39a288b8><div class="aside" data-v-39a288b8><div class="aside-curtain" data-v-39a288b8></div><div class="aside-container" data-v-39a288b8><div class="aside-content" data-v-39a288b8><div class="VPDocAside" data-v-39a288b8 data-v-3f215769><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-3f215769 data-v-a5bbad30><div class="content" data-v-a5bbad30><div class="outline-marker" data-v-a5bbad30></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-a5bbad30>On this page</div><ul class="VPDocOutlineItem root" data-v-a5bbad30 data-v-b933a997><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-3f215769></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-39a288b8><div class="content-container" data-v-39a288b8><!--[--><!--]--><main class="main" data-v-39a288b8><div style="position:relative;" class="vp-doc _ChangeLog_20220827 external-link-icon-enabled" data-v-39a288b8><div><h1 id="qmk-breaking-changes-2022-august-27-changelog" tabindex="-1">QMK Breaking Changes - 2022 August 27 Changelog <a class="header-anchor" href="#qmk-breaking-changes-2022-august-27-changelog" aria-label="Permalink to &quot;QMK Breaking Changes - 2022 August 27 Changelog&quot;"></a></h1><h2 id="notable-features" tabindex="-1">Notable Features <a class="header-anchor" href="#notable-features" aria-label="Permalink to &quot;Notable Features {#notable-features}&quot;"></a></h2><h3 id="rp2040-support" tabindex="-1">Add Raspberry Pi RP2040 support (<a href="https://github.com/qmk/qmk_firmware/pull/14877" target="_blank" rel="noreferrer">#14877</a>, <a href="https://github.com/qmk/qmk_firmware/pull/17514" target="_blank" rel="noreferrer">#17514</a>, <a href="https://github.com/qmk/qmk_firmware/pull/17516" target="_blank" rel="noreferrer">#17516</a>, <a href="https://github.com/qmk/qmk_firmware/pull/17519" target="_blank" rel="noreferrer">#17519</a>, <a href="https://github.com/qmk/qmk_firmware/pull/17612" target="_blank" rel="noreferrer">#17612</a>, <a href="https://github.com/qmk/qmk_firmware/pull/17512" target="_blank" rel="noreferrer">#17512</a>, <a href="https://github.com/qmk/qmk_firmware/pull/17557" target="_blank" rel="noreferrer">#17557</a>, <a href="https://github.com/qmk/qmk_firmware/pull/17817" target="_blank" rel="noreferrer">#17817</a>, <a href="https://github.com/qmk/qmk_firmware/pull/17839" target="_blank" rel="noreferrer">#17839</a>, <a href="https://github.com/qmk/qmk_firmware/pull/18100" target="_blank" rel="noreferrer">#18100</a>) <a class="header-anchor" href="#rp2040-support" aria-label="Permalink to &quot;Add Raspberry Pi RP2040 support ([#14877](https://github.com/qmk/qmk_firmware/pull/14877), [#17514](https://github.com/qmk/qmk_firmware/pull/17514), [#17516](https://github.com/qmk/qmk_firmware/pull/17516), [#17519](https://github.com/qmk/qmk_firmware/pull/17519), [#17612](https://github.com/qmk/qmk_firmware/pull/17612), [#17512](https://github.com/qmk/qmk_firmware/pull/17512), [#17557](https://github.com/qmk/qmk_firmware/pull/17557), [#17817](https://github.com/qmk/qmk_firmware/pull/17817), [#17839](https://github.com/qmk/qmk_firmware/pull/17839), [#18100](https://github.com/qmk/qmk_firmware/pull/18100)) {#rp2040-support}&quot;"></a></h3><p>QMK <em>finally</em> picked up support for RP2040-based boards, such as the Raspberry Pi Pico, the Sparkfun Pro Micro RP2040, and the Adafruit KB2040. One of QMK&#39;s newest collaborators, <em>@KarlK90</em>, effectively did <code>/micdrop</code> with RP2040, with a massive set of changes to both QMK and the repository QMK uses for the base platform support, ChibiOS[-Contrib]. There has been a flurry of development this breaking changes cycle related to RP2040 from a large number of contributors -- so much so that almost all standard QMK hardware subsystems are supported.</p><p>Check the <a href="./../platformdev_rp2040">RP2040 platform development page</a> for all supported peripherals and other hardware implementation details.</p><h3 id="cli-flash-binaries" tabindex="-1">Allow <code>qmk flash</code> to use prebuilt firmware binaries (<a href="https://github.com/qmk/qmk_firmware/pull/16584" target="_blank" rel="noreferrer">#16584</a>) <a class="header-anchor" href="#cli-flash-binaries" aria-label="Permalink to &quot;Allow `qmk flash` to use prebuilt firmware binaries ([#16584](https://github.com/qmk/qmk_firmware/pull/16584)) {#cli-flash-binaries}&quot;"></a></h3><p>A long-requested capability of the QMK CLI has been the ability to flash binaries directly, without needing to build a firmware. QMK provides prebuilt <code>develop</code>-based default firmwares on our <a href="https://qmk.tzarc.io/" target="_blank" rel="noreferrer">CI page</a> -- normally people would need <a href="https://github.com/qmk/qmk_toolbox/releases/latest" target="_blank" rel="noreferrer">QMK Toolbox</a> to flash them. This new functionality written by <em>@Erovia</em> allows <code>qmk flash</code> to be provided the prebuilt file instead, simplifying the workflow for people who haven&#39;t got Toolbox available.</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 &quot;Changes Requiring User Action {#changes-requiring-user-action}&quot;"></a></h2><h3 id="default-layers-dropped-from-32-to-16-15286" tabindex="-1">Default layers dropped from 32 to 16 (<a href="https://github.com/qmk/qmk_firmware/pull/15286" target="_blank" rel="noreferrer">#15286</a>) <a class="header-anchor" href="#default-layers-dropped-from-32-to-16-15286" aria-label="Permalink to &quot;Default layers dropped from 32 to 16 ([#15286](https://github.com/qmk/qmk_firmware/pull/15286))&quot;"></a></h3><p>QMK allows for controlling the maximum number of layers it supports through <code>LAYER_STATE_(8|16|32)BIT</code>. Each definition allows for the same number of maximum layers -- <code>LAYER_STATE_8BIT</code> =&gt; 8 layers. There is also a corresponding firmware size decrease that goes along with smaller numbers -- given the vast majority of users don&#39;t use more than 16 layers the default has been swapped to 16. AVR users who were not previously specifying their max layer count may see some space freed up as a result.</p><h3 id="reset-2-qk_boot" tabindex="-1"><code>RESET</code> =&gt; <code>QK_BOOT</code> (<a href="https://github.com/qmk/qmk_firmware/pull/17940" target="_blank" rel="noreferrer">#17940</a>) <a class="header-anchor" href="#reset-2-qk_boot" aria-label="Permalink to &quot;`RESET` =&gt; `QK_BOOT` ([#17940](https://github.com/qmk/qmk_firmware/pull/17940)) {#reset-2-qk_boot}&quot;"></a></h3><p>Following the last breaking changes cycle, QMK has been migrating usages of <code>RESET</code> to <code>QK_BOOT</code> due to naming collisions with our upstream board support packages. <a href="https://github.com/qmk/qmk_firmware/pull/17940" target="_blank" rel="noreferrer">#17940</a> converts user keymaps across to use the new keycode name. <code>RESET</code> should also move to <code>QK_BOOT</code>.</p><h3 id="updated-keyboard-codebases" tabindex="-1">Updated Keyboard Codebases <a class="header-anchor" href="#updated-keyboard-codebases" aria-label="Permalink to &quot;Updated Keyboard Codebases {#updated-keyboard-codebases}&quot;"></a></h3><p>The following keyboards have had their source moved within QMK:</p><table tabindex="0"><thead><tr><th>Old Keyboard Name</th><th>New Keyboard Name</th></tr></thead><tbody><tr><td>gentleman65</td><td>jkeys_design/gentleman65</td></tr><tr><td>handwired/hillside/0_1</td><td>handwired/hillside/48</td></tr><tr><td>idobao/id80/v1/ansi</td><td>idobao/id80/v2/ansi</td></tr><tr><td>idobao/id80/v1/iso</td><td>idobao/id80/v2/iso</td></tr></tbody></table><h3 id="usb-ids-Refactoring" tabindex="-1">Data-driven USB IDs Refactoring (<a href="https://github.com/qmk/qmk_firmware/pull/18152" target="_blank" rel="noreferrer">#18152</a>) <a class="header-anchor" href="#usb-ids-Refactoring" aria-label="Permalink to &quot;Data-driven USB IDs Refactoring ([#18152](https://github.com/qmk/qmk_firmware/pull/18152)) {#usb-ids-Refactoring}&quot;"></a></h3><p>QMK has decided to deprecate the specification of USB IDs inside <code>config.h</code> in favour of <code>info.json</code>, eventually leaving data-driven as the only method to specify USB information.</p><p>A significant number of keyboards have already been changed on <code>master</code> in a like-for-like fashion, and <a href="https://github.com/qmk/qmk_firmware/pull/18152" target="_blank" rel="noreferrer">#18152</a> performs the same transformations for keyboards already on <code>develop</code>.</p><p>Previously in <code>config.h</code>:</p><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;">#define</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> VENDOR_ID</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> 0x</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1234</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">#define</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> PRODUCT_ID</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> 0x</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">5678</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">#define</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> DEVICE_VER</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> 0x</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0001</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">#define</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> MANUFACTURER</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> Me</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">#define</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> PRODUCT</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> MyKeyboard</span></span></code></pre></div><p>Replaced by <code>info.json</code>:</p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;keyboard_name&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;MyKeyboard&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;manufacturer&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;Me&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;usb&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: {</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;vid&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;0x1234&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;pid&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;0x5678&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;device_version&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;0.0.1&quot;</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> // ... layouts, etc. ...</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h4 id="deprecation-schedule" tabindex="-1">Deprecation Schedule <a class="header-anchor" href="#deprecation-schedule" aria-label="Permalink to &quot;Deprecation Schedule&quot;"></a></h4><ul><li>From 2022 Aug 27, specifying USB information in <code>config.h</code> will produce warnings during build but will still function as previously.</li><li>From 2022 Nov 26, specifying USB information in <code>config.h</code> will cause compilation to fail.</li></ul><h2 id="notable-core" tabindex="-1">Notable core changes <a class="header-anchor" href="#notable-core" aria-label="Permalink to &quot;Notable core changes {#notable-core}&quot;"></a></h2><h3 id="board-converters" tabindex="-1">Board converters (<a href="https://github.com/qmk/qmk_firmware/pull/17514" target="_blank" rel="noreferrer">#17514</a>, <a href="https://github.com/qmk/qmk_firmware/pull/17603" target="_blank" rel="noreferrer">#17603</a>, <a href="https://github.com/qmk/qmk_firmware/pull/17711" target="_blank" rel="noreferrer">#17711</a>, <a href="https://github.com/qmk/qmk_firmware/pull/17827" target="_blank" rel="noreferrer">#17827</a>, <a href="https://github.com/qmk/qmk_firmware/pull/17593" target="_blank" rel="noreferrer">#17593</a>, <a href="https://github.com/qmk/qmk_firmware/pull/17652" target="_blank" rel="noreferrer">#17652</a>, <a href="https://github.com/qmk/qmk_firmware/pull/17595" target="_blank" rel="noreferrer">#17595</a>) <a class="header-anchor" href="#board-converters" aria-label="Permalink to &quot;Board converters ([#17514](https://github.com/qmk/qmk_firmware/pull/17514), [#17603](https://github.com/qmk/qmk_firmware/pull/17603), [#17711](https://github.com/qmk/qmk_firmware/pull/17711), [#17827](https://github.com/qmk/qmk_firmware/pull/17827), [#17593](https://github.com/qmk/qmk_firmware/pull/17593), [#17652](https://github.com/qmk/qmk_firmware/pull/17652), [#17595](https://github.com/qmk/qmk_firmware/pull/17595)) {#board-converters}&quot;"></a></h3><p>Historically QMK had a <code>CONVERT_TO_PROTON_C</code> directive for <code>rules.mk</code> to allow people to replace an AVR-based Pro Micro with a QMK Proton C. Global parts shortages have prompted people to create their own pin-compatible boards -- QMK has made this conversion generic and now allows for drop-in replacements for a lot more boards. see the <a href="./../feature_converters">Converters Feature</a> documentation for the full list of supported replacement boards -- in this breaking changes cycle we&#39;ve gone from 1 to 7.</p><h3 id="cli-import" tabindex="-1">Add cli command to import keyboard|keymap|kbfirmware (<a href="https://github.com/qmk/qmk_firmware/pull/16668" target="_blank" rel="noreferrer">#16668</a>) <a class="header-anchor" href="#cli-import" aria-label="Permalink to &quot;Add cli command to import keyboard|keymap|kbfirmware ([#16668](https://github.com/qmk/qmk_firmware/pull/16668)) {#cli-import}&quot;"></a></h3><p>To help with importing keyboards and keymaps from other sources, <em>@zvecr</em> added <a href="https://github.com/qmk/qmk_firmware/pull/16668" target="_blank" rel="noreferrer">#16668</a> which adds a new set of commands to the CLI to automatically import keyboards (<code>qmk import-keyboard -h</code>), keymaps (<code>qmk import-keymap -h</code>), and kbfirmware definitions (<code>qmk import-kbfirmware -h</code>) into QMK.</p><p>The now-EOL kbfirmware allowed people who aren&#39;t set up with QMK the ability to create keyboard firmwares without requiring a full installation of QMK. Unfortunately, it targets a 7-year-old version of QMK -- adding frustration for users who want the newest features, as well as for QMK maintainers who have to spend time explaining why QMK can&#39;t just accept a drive-by code drop from kbfirmware. With any luck, this new command helps both camps!</p><h3 id="wear-leveling" tabindex="-1">Generic wear-leveling for EEPROM emulation (<a href="https://github.com/qmk/qmk_firmware/pull/16996" target="_blank" rel="noreferrer">#16996</a>, <a href="https://github.com/qmk/qmk_firmware/pull/17376" target="_blank" rel="noreferrer">#17376</a>, <a href="https://github.com/qmk/qmk_firmware/pull/18102" target="_blank" rel="noreferrer">#18102</a>) <a class="header-anchor" href="#wear-leveling" aria-label="Permalink to &quot;Generic wear-leveling for EEPROM emulation ([#16996](https://github.com/qmk/qmk_firmware/pull/16996), [#17376](https://github.com/qmk/qmk_firmware/pull/17376), [#18102](https://github.com/qmk/qmk_firmware/pull/18102)) {#wear-leveling}&quot;"></a></h3><p>QMK has had the ability to write to internal MCU flash in order to emulate EEPROM for some time now, but it was only limited to a small number of MCUs. The base HAL used by QMK for a large number of ARM devices provides a &quot;proper&quot; embedded MCU flash driver, so <em>@tzarc</em> decoupled the wear-leveling algorithm from the old flash writing code, improved it, wrote some tests, and enabled its use for a much larger number of other devices... including RP2040&#39;s XIP flash, and external SPI NOR Flash.</p><p>See the <a href="./../drivers/eeprom">EEPROM Driver</a> documentation for more information.</p><h3 id="pointing-device-improvements" tabindex="-1">Pointing Device Improvements (<a href="https://github.com/qmk/qmk_firmware/pull/16371" target="_blank" rel="noreferrer">#16371</a>, <a href="https://github.com/qmk/qmk_firmware/pull/17111" target="_blank" rel="noreferrer">#17111</a>, <a href="https://github.com/qmk/qmk_firmware/pull/17176" target="_blank" rel="noreferrer">#17176</a>, <a href="https://github.com/qmk/qmk_firmware/pull/17482" target="_blank" rel="noreferrer">#17482</a>, <a href="https://github.com/qmk/qmk_firmware/pull/17776" target="_blank" rel="noreferrer">#17776</a>, <a href="https://github.com/qmk/qmk_firmware/pull/17613" target="_blank" rel="noreferrer">#17613</a>) <a class="header-anchor" href="#pointing-device-improvements" aria-label="Permalink to &quot;Pointing Device Improvements ([#16371](https://github.com/qmk/qmk_firmware/pull/16371), [#17111](https://github.com/qmk/qmk_firmware/pull/17111), [#17176](https://github.com/qmk/qmk_firmware/pull/17176), [#17482](https://github.com/qmk/qmk_firmware/pull/17482), [#17776](https://github.com/qmk/qmk_firmware/pull/17776), [#17613](https://github.com/qmk/qmk_firmware/pull/17613)) {#pointing-device-improvements}&quot;"></a></h3><p>Ever since Pointing Device Driver support and Split Pointing Device support were added by <em>@drashna</em> and <em>@daskygit</em>, there has been increased interest in the development of the pointing device subsystem and its associated code.</p><p>Both the PMW33xx and the Cirque Pinnacle implementations have seen a lot of improvement to their code, as has the mouse code in general. Features like circular/edge scrolling for the Cirque, and Kinetic movement for any sensor with &quot;lift detection&quot; (<a href="https://github.com/qmk/qmk_firmware/pull/17482" target="_blank" rel="noreferrer">#17482</a>). Additionally, for those that make fast motions with their pointing devices, support for much larger mouse movement reports has been added (<a href="https://github.com/qmk/qmk_firmware/pull/16371" target="_blank" rel="noreferrer">#16371</a>).</p><p>Other related changes:</p><ul><li>Add support for large Mouse Reports (<a href="https://github.com/qmk/qmk_firmware/pull/16371" target="_blank" rel="noreferrer">#16371</a>)</li><li>Improve PS/2 mouse performance (<a href="https://github.com/qmk/qmk_firmware/pull/17111" target="_blank" rel="noreferrer">#17111</a>)</li><li>Mouse key kinetic mode fix (<a href="https://github.com/qmk/qmk_firmware/pull/17176" target="_blank" rel="noreferrer">#17176</a>)</li><li>Circular scroll, inertial cursor (<a href="https://github.com/qmk/qmk_firmware/pull/17482" target="_blank" rel="noreferrer">#17482</a>)</li><li>Create generic Pointing Device Pin defines (<a href="https://github.com/qmk/qmk_firmware/pull/17776" target="_blank" rel="noreferrer">#17776</a>)</li><li>PMW33XX drivers overhaul (<a href="https://github.com/qmk/qmk_firmware/pull/17613" target="_blank" rel="noreferrer">#17613</a>)</li></ul><hr><h2 id="full-changelist" tabindex="-1">Full changelist <a class="header-anchor" href="#full-changelist" aria-label="Permalink to &quot;Full changelist {#full-changelist}&quot;"></a></h2><p>Core:</p><ul><li>Tentative Teensy 3.5 support (<a href="https://github.com/qmk/qmk_firmware/pull/14420" target="_blank" rel="noreferrer">#14420</a>)</li><li>Make default layer size 16-bit (<a href="https://github.com/qmk/qmk_firmware/pull/15286" target="_blank" rel="noreferrer">#15286</a>)</li><li>Process all changed keys in one scan loop, deprecate <code>QMK_KEYS_PER_SCAN</code> (<a href="https://github.com/qmk/qmk_firmware/pull/15292" target="_blank" rel="noreferrer">#15292</a>)</li><li>Do not enable PERMISSIVE_HOLD when TAPPING_TERM exceeds 500ms (<a href="https://github.com/qmk/qmk_firmware/pull/15674" target="_blank" rel="noreferrer">#15674</a>)</li><li>Allow usage of ChibiOS&#39;s SIO driver for split keyboards (<a href="https://github.com/qmk/qmk_firmware/pull/15907" target="_blank" rel="noreferrer">#15907</a>)</li><li>[Controller] Added board config for custom controller STeMCell (<a href="https://github.com/qmk/qmk_firmware/pull/16287" target="_blank" rel="noreferrer">#16287</a>)</li><li>PoC: Swap Escape and Caps (<a href="https://github.com/qmk/qmk_firmware/pull/16336" target="_blank" rel="noreferrer">#16336</a>)</li><li>Add support for large Mouse Reports (<a href="https://github.com/qmk/qmk_firmware/pull/16371" target="_blank" rel="noreferrer">#16371</a>)</li><li>tap-dance: Restructure code and document in more detail (<a href="https://github.com/qmk/qmk_firmware/pull/16394" target="_blank" rel="noreferrer">#16394</a>)</li><li>Teaching the CLI to flash binaries (<a href="https://github.com/qmk/qmk_firmware/pull/16584" target="_blank" rel="noreferrer">#16584</a>)</li><li>Split ChibiOS usart split driver in protocol and hardware driver part (<a href="https://github.com/qmk/qmk_firmware/pull/16669" target="_blank" rel="noreferrer">#16669</a>)</li><li>Added Wait time to sending each Keys for Dynamic Macros function (<a href="https://github.com/qmk/qmk_firmware/pull/16800" target="_blank" rel="noreferrer">#16800</a>)</li><li>Added Delay time to sending each Keys for VIA Macros function feature (<a href="https://github.com/qmk/qmk_firmware/pull/16810" target="_blank" rel="noreferrer">#16810</a>)</li><li>Improve avr wait_us() (<a href="https://github.com/qmk/qmk_firmware/pull/16879" target="_blank" rel="noreferrer">#16879</a>)</li><li>Improve ENCODER_DEFAULT_POS to recognize lost ticks (<a href="https://github.com/qmk/qmk_firmware/pull/16932" target="_blank" rel="noreferrer">#16932</a>)</li><li>Added emacs as an &quot;operating system&quot; for input mode. (<a href="https://github.com/qmk/qmk_firmware/pull/16949" target="_blank" rel="noreferrer">#16949</a>)</li><li>24LC32A EEPROM addition (<a href="https://github.com/qmk/qmk_firmware/pull/16990" target="_blank" rel="noreferrer">#16990</a>)</li><li>Refactor steno and add <code>STENO_PROTOCOL = [all|txbolt|geminipr]</code> (<a href="https://github.com/qmk/qmk_firmware/pull/17065" target="_blank" rel="noreferrer">#17065</a>)</li><li>improvements for Cirque Pinnacle trackpads (<a href="https://github.com/qmk/qmk_firmware/pull/17091" target="_blank" rel="noreferrer">#17091</a>)</li><li>Use TAP_HOLD_CAPS_DELAY for KC_LOCKING_CAPS_LOCK (<a href="https://github.com/qmk/qmk_firmware/pull/17099" target="_blank" rel="noreferrer">#17099</a>)</li><li>Improve PS/2 mouse performance (<a href="https://github.com/qmk/qmk_firmware/pull/17111" target="_blank" rel="noreferrer">#17111</a>)</li><li>Update C standard to GNU11, C++ to GNU++14 (<a href="https://github.com/qmk/qmk_firmware/pull/17114" target="_blank" rel="noreferrer">#17114</a>)</li><li>Added ws2812_pwm support for WB32 MCU. (<a href="https://github.com/qmk/qmk_firmware/pull/17142" target="_blank" rel="noreferrer">#17142</a>)</li><li>Added ws2812_spi support for WB32 MCU (<a href="https://github.com/qmk/qmk_firmware/pull/17143" target="_blank" rel="noreferrer">#17143</a>)</li><li>Make bootloader_jump for dualbank STM32 respect STM32_BOOTLOADER_DUAL_BANK_DELAY (<a href="https://github.com/qmk/qmk_firmware/pull/17178" target="_blank" rel="noreferrer">#17178</a>)</li><li>Expose the time of the last change to the LED state (<a href="https://github.com/qmk/qmk_firmware/pull/17222" target="_blank" rel="noreferrer">#17222</a>)</li><li>[Code] Add solid reactive gradient mode (<a href="https://github.com/qmk/qmk_firmware/pull/17228" target="_blank" rel="noreferrer">#17228</a>)</li><li>Add keymap wrappers for introspection into the keymap. (<a href="https://github.com/qmk/qmk_firmware/pull/17229" target="_blank" rel="noreferrer">#17229</a>)</li><li>Ensure eeconfig initialised before reading EEPROM handedness. (<a href="https://github.com/qmk/qmk_firmware/pull/17256" target="_blank" rel="noreferrer">#17256</a>)</li><li>Add uf2-split-* make targets. (<a href="https://github.com/qmk/qmk_firmware/pull/17257" target="_blank" rel="noreferrer">#17257</a>)</li><li>Removes terminal from QMK. (<a href="https://github.com/qmk/qmk_firmware/pull/17258" target="_blank" rel="noreferrer">#17258</a>)</li><li>Make SPI Mode configurable for AW20216 and change default mode to 3 (<a href="https://github.com/qmk/qmk_firmware/pull/17263" target="_blank" rel="noreferrer">#17263</a>)</li><li>Move SPLIT_HAND_PIN setup to split_pre_init (<a href="https://github.com/qmk/qmk_firmware/pull/17271" target="_blank" rel="noreferrer">#17271</a>)</li><li>Allow larger SPLIT_USB_TIMEOUT with default SPLIT_USB_TIMEOUT_POLL (<a href="https://github.com/qmk/qmk_firmware/pull/17272" target="_blank" rel="noreferrer">#17272</a>)</li><li>Feature-ify Send String (<a href="https://github.com/qmk/qmk_firmware/pull/17275" target="_blank" rel="noreferrer">#17275</a>)</li><li>Rework paths for eeprom locations. (<a href="https://github.com/qmk/qmk_firmware/pull/17326" target="_blank" rel="noreferrer">#17326</a>)</li><li>Pca9505/6 driver (<a href="https://github.com/qmk/qmk_firmware/pull/17333" target="_blank" rel="noreferrer">#17333</a>)</li><li>Cirque Attenuation Setting (<a href="https://github.com/qmk/qmk_firmware/pull/17342" target="_blank" rel="noreferrer">#17342</a>)</li><li>Scale brigthness for VIA (<a href="https://github.com/qmk/qmk_firmware/pull/17352" target="_blank" rel="noreferrer">#17352</a>)</li><li>Ensure that rgb+via compiles in all cases (<a href="https://github.com/qmk/qmk_firmware/pull/17355" target="_blank" rel="noreferrer">#17355</a>)</li><li>Wear-leveling EEPROM drivers: <code>embedded_flash</code>, <code>spi_flash</code>, <code>legacy</code> (<a href="https://github.com/qmk/qmk_firmware/pull/17376" target="_blank" rel="noreferrer">#17376</a>)</li><li>In honor of king terry (<a href="https://github.com/qmk/qmk_firmware/pull/17387" target="_blank" rel="noreferrer">#17387</a>)</li><li>tap-dance: Rename tests so that tap_dance is used consistently (<a href="https://github.com/qmk/qmk_firmware/pull/17396" target="_blank" rel="noreferrer">#17396</a>)</li><li>IS31FL3737 Global Current Setting (<a href="https://github.com/qmk/qmk_firmware/pull/17420" target="_blank" rel="noreferrer">#17420</a>)</li><li>[QP] Add ILI9488 support. (<a href="https://github.com/qmk/qmk_firmware/pull/17438" target="_blank" rel="noreferrer">#17438</a>)</li><li>Mark GD32VF103 as ChibiOS-Contrib (<a href="https://github.com/qmk/qmk_firmware/pull/17444" target="_blank" rel="noreferrer">#17444</a>)</li><li>ISSI Drivers Global Current Option (<a href="https://github.com/qmk/qmk_firmware/pull/17448" target="_blank" rel="noreferrer">#17448</a>)</li><li>[Split] pointing transport check (<a href="https://github.com/qmk/qmk_firmware/pull/17481" target="_blank" rel="noreferrer">#17481</a>)</li><li>Cirque trackpad features: circular scroll, inertial cursor (<a href="https://github.com/qmk/qmk_firmware/pull/17482" target="_blank" rel="noreferrer">#17482</a>)</li><li>RGB heatmap skip NO_LED (<a href="https://github.com/qmk/qmk_firmware/pull/17488" target="_blank" rel="noreferrer">#17488</a>)</li><li>Add kb2040 and sparkfun rp2040 converters (<a href="https://github.com/qmk/qmk_firmware/pull/17514" target="_blank" rel="noreferrer">#17514</a>)</li><li>[style] rp2040 stage2 formatting (<a href="https://github.com/qmk/qmk_firmware/pull/17516" target="_blank" rel="noreferrer">#17516</a>)</li><li>Also check /run/media/ for uf2 drives (<a href="https://github.com/qmk/qmk_firmware/pull/17517" target="_blank" rel="noreferrer">#17517</a>)</li><li>RP2040 emulated EEPROM. (<a href="https://github.com/qmk/qmk_firmware/pull/17519" target="_blank" rel="noreferrer">#17519</a>)</li><li>Make debounce algorithms signal matrix changes (<a href="https://github.com/qmk/qmk_firmware/pull/17554" target="_blank" rel="noreferrer">#17554</a>)</li><li>Update PM2040 I2C pins (<a href="https://github.com/qmk/qmk_firmware/pull/17578" target="_blank" rel="noreferrer">#17578</a>)</li><li>Added implementation of WB32 MCU wear_leveling_efl. (<a href="https://github.com/qmk/qmk_firmware/pull/17579" target="_blank" rel="noreferrer">#17579</a>)</li><li>Use Pro Micro SDA/SCL pinout for PM2040 (<a href="https://github.com/qmk/qmk_firmware/pull/17595" target="_blank" rel="noreferrer">#17595</a>)</li><li>Refactor Pixel Fractal effect (<a href="https://github.com/qmk/qmk_firmware/pull/17602" target="_blank" rel="noreferrer">#17602</a>)</li><li>Add Blok RP2040 converter (<a href="https://github.com/qmk/qmk_firmware/pull/17603" target="_blank" rel="noreferrer">#17603</a>)</li><li>Use polled waiting on ChibiOS platforms that support it (<a href="https://github.com/qmk/qmk_firmware/pull/17607" target="_blank" rel="noreferrer">#17607</a>)</li><li>Stabilize Half-duplex RP2040 PIO split comms (<a href="https://github.com/qmk/qmk_firmware/pull/17612" target="_blank" rel="noreferrer">#17612</a>)</li><li>PMW33XX drivers overhaul (<a href="https://github.com/qmk/qmk_firmware/pull/17613" target="_blank" rel="noreferrer">#17613</a>)</li><li>Include stdint.h in avr/i2c_master.h (<a href="https://github.com/qmk/qmk_firmware/pull/17639" target="_blank" rel="noreferrer">#17639</a>)</li><li>Add led matrix support for CKLED2001 (<a href="https://github.com/qmk/qmk_firmware/pull/17643" target="_blank" rel="noreferrer">#17643</a>)</li><li><code>STM32_USB_USE_OTG1</code> =&gt; <code>USB_ENDPOINTS_ARE_REORDERABLE</code> (<a href="https://github.com/qmk/qmk_firmware/pull/17647" target="_blank" rel="noreferrer">#17647</a>)</li><li>Allow MCU-specific overrides for SPI flags. (<a href="https://github.com/qmk/qmk_firmware/pull/17650" target="_blank" rel="noreferrer">#17650</a>)</li><li>Update LED/RGB Matrix flag function behavior (<a href="https://github.com/qmk/qmk_firmware/pull/17651" target="_blank" rel="noreferrer">#17651</a>)</li><li>Cirque circular scroll: Support POINTING_DEVICE_COMBINED (<a href="https://github.com/qmk/qmk_firmware/pull/17654" target="_blank" rel="noreferrer">#17654</a>)</li><li>Add support for PAW3204 Optical Sensor (<a href="https://github.com/qmk/qmk_firmware/pull/17669" target="_blank" rel="noreferrer">#17669</a>)</li><li>Add LED limits call (<a href="https://github.com/qmk/qmk_firmware/pull/17679" target="_blank" rel="noreferrer">#17679</a>)</li><li>Move Pointing Device code to a subdirectory (<a href="https://github.com/qmk/qmk_firmware/pull/17684" target="_blank" rel="noreferrer">#17684</a>)</li><li>Avoid OOB in dynamic_keymap_reset (<a href="https://github.com/qmk/qmk_firmware/pull/17695" target="_blank" rel="noreferrer">#17695</a>)</li><li>Allow dynamic keymap to compile without <code>via.h</code> (<a href="https://github.com/qmk/qmk_firmware/pull/17703" target="_blank" rel="noreferrer">#17703</a>)</li><li>Use correct angle tune range of +/-127 on PMW33XX (<a href="https://github.com/qmk/qmk_firmware/pull/17708" target="_blank" rel="noreferrer">#17708</a>)</li><li>Add Bonsai C4 converter (<a href="https://github.com/qmk/qmk_firmware/pull/17711" target="_blank" rel="noreferrer">#17711</a>)</li><li>VIA Encoder Map Support (<a href="https://github.com/qmk/qmk_firmware/pull/17734" target="_blank" rel="noreferrer">#17734</a>)</li><li>Move Pointing Device Initialization to after Split Post Initialization (<a href="https://github.com/qmk/qmk_firmware/pull/17740" target="_blank" rel="noreferrer">#17740</a>)</li><li>Add ability to enter bootloader mode from <code>QK_MAKE</code> (<a href="https://github.com/qmk/qmk_firmware/pull/17745" target="_blank" rel="noreferrer">#17745</a>)</li><li>Add <code>tap_code16_delay</code> (<a href="https://github.com/qmk/qmk_firmware/pull/17748" target="_blank" rel="noreferrer">#17748</a>)</li><li>Implement relative mode for Cirque trackpad (<a href="https://github.com/qmk/qmk_firmware/pull/17760" target="_blank" rel="noreferrer">#17760</a>)</li><li>Create generic Pointing Device Pin defines (<a href="https://github.com/qmk/qmk_firmware/pull/17776" target="_blank" rel="noreferrer">#17776</a>)</li><li>Constrain Cirque Pinnacle coordinates (<a href="https://github.com/qmk/qmk_firmware/pull/17803" target="_blank" rel="noreferrer">#17803</a>)</li><li>Refactor/rename postprocess_steno_user → post_process_steno_user (<a href="https://github.com/qmk/qmk_firmware/pull/17823" target="_blank" rel="noreferrer">#17823</a>)</li><li>Add Bit-C PRO converter (<a href="https://github.com/qmk/qmk_firmware/pull/17827" target="_blank" rel="noreferrer">#17827</a>)</li><li>guard RPC invocation by checking RPC info against crc checksum (<a href="https://github.com/qmk/qmk_firmware/pull/17840" target="_blank" rel="noreferrer">#17840</a>)</li><li>Add ST7735 driver to Quantum Painter (<a href="https://github.com/qmk/qmk_firmware/pull/17848" target="_blank" rel="noreferrer">#17848</a>)</li><li>Add minimal STM32F103C6 support (<a href="https://github.com/qmk/qmk_firmware/pull/17853" target="_blank" rel="noreferrer">#17853</a>)</li><li>Remove legacy AVR ssd1306 driver (<a href="https://github.com/qmk/qmk_firmware/pull/17864" target="_blank" rel="noreferrer">#17864</a>)</li><li>Remove tmk_core &#39;serial&#39; code (<a href="https://github.com/qmk/qmk_firmware/pull/17866" target="_blank" rel="noreferrer">#17866</a>)</li><li>Use LT_ZCAR in place of LT_PLUS for modded kc definitions of keymap_lithuanian_qwerty.h (<a href="https://github.com/qmk/qmk_firmware/pull/18000" target="_blank" rel="noreferrer">#18000</a>)</li><li>Remove invisible variation selector-15 from keymap_japanese.h (<a href="https://github.com/qmk/qmk_firmware/pull/18007" target="_blank" rel="noreferrer">#18007</a>)</li><li>define CZ_PERC S(CZ_PLUS) → define CZ_PERC S(CZ_EQL) (<a href="https://github.com/qmk/qmk_firmware/pull/18008" target="_blank" rel="noreferrer">#18008</a>)</li><li>KR_DQUO S(KR_COLN) → KR_DQUO S(KR_QUOT) in keymap_korean.h (<a href="https://github.com/qmk/qmk_firmware/pull/18011" target="_blank" rel="noreferrer">#18011</a>)</li><li>Replace ; by : in the shifted symbols ASCII art of keymap_norman (<a href="https://github.com/qmk/qmk_firmware/pull/18029" target="_blank" rel="noreferrer">#18029</a>)</li><li>Add eeprom defaults for tinyuf2 bootloader (<a href="https://github.com/qmk/qmk_firmware/pull/18042" target="_blank" rel="noreferrer">#18042</a>)</li><li>Remove duplicate COMBINING HORN in keymap_us_extended.h (<a href="https://github.com/qmk/qmk_firmware/pull/18045" target="_blank" rel="noreferrer">#18045</a>)</li><li>Nix shell updates for <code>develop</code> (<a href="https://github.com/qmk/qmk_firmware/pull/18131" target="_blank" rel="noreferrer">#18131</a>)</li></ul><p>CLI:</p><ul><li>Add cli command to import keyboard|keymap|kbfirmware (<a href="https://github.com/qmk/qmk_firmware/pull/16668" target="_blank" rel="noreferrer">#16668</a>)</li><li>Publish data as part of API generation (<a href="https://github.com/qmk/qmk_firmware/pull/17020" target="_blank" rel="noreferrer">#17020</a>)</li><li>Allow encoder config from info.json (<a href="https://github.com/qmk/qmk_firmware/pull/17295" target="_blank" rel="noreferrer">#17295</a>)</li><li><code>qmk doctor</code>: show arch for macOS (<a href="https://github.com/qmk/qmk_firmware/pull/17356" target="_blank" rel="noreferrer">#17356</a>)</li><li>Use --exclude-from=.gitignore in place of --exclude-standard (<a href="https://github.com/qmk/qmk_firmware/pull/17399" target="_blank" rel="noreferrer">#17399</a>)</li><li>Improve importer workflow (<a href="https://github.com/qmk/qmk_firmware/pull/17707" target="_blank" rel="noreferrer">#17707</a>)</li><li>Remove legacy bootmagic cli parsing (<a href="https://github.com/qmk/qmk_firmware/pull/18099" target="_blank" rel="noreferrer">#18099</a>)</li><li>Align CLI requirements (<a href="https://github.com/qmk/qmk_firmware/pull/18117" target="_blank" rel="noreferrer">#18117</a>)</li></ul><p>Submodule updates:</p><ul><li>Add Raspberry Pi RP2040 support (<a href="https://github.com/qmk/qmk_firmware/pull/14877" target="_blank" rel="noreferrer">#14877</a>)</li><li>Update mpaland/printf to eyalroz/printf fork (<a href="https://github.com/qmk/qmk_firmware/pull/16163" target="_blank" rel="noreferrer">#16163</a>)</li><li>Generic wear-leveling algorithm (<a href="https://github.com/qmk/qmk_firmware/pull/16996" target="_blank" rel="noreferrer">#16996</a>)</li><li>Update LUFA submodule (<a href="https://github.com/qmk/qmk_firmware/pull/17368" target="_blank" rel="noreferrer">#17368</a>)</li><li>Update V-USB submodule (<a href="https://github.com/qmk/qmk_firmware/pull/17385" target="_blank" rel="noreferrer">#17385</a>)</li><li>Update ChibiOS-Contrib (<a href="https://github.com/qmk/qmk_firmware/pull/17540" target="_blank" rel="noreferrer">#17540</a>)</li><li>Update to latest ChibiOS-Contrib. (<a href="https://github.com/qmk/qmk_firmware/pull/18016" target="_blank" rel="noreferrer">#18016</a>)</li><li>Update LUFA submodule (<a href="https://github.com/qmk/qmk_firmware/pull/18168" target="_blank" rel="noreferrer">#18168</a>)</li></ul><p>Keyboards:</p><ul><li>GMMK 2 WBG7 MCU compatibility (<a href="https://github.com/qmk/qmk_firmware/pull/16436" target="_blank" rel="noreferrer">#16436</a>)</li><li>bastardkb: restructure folder hierarchy (<a href="https://github.com/qmk/qmk_firmware/pull/16778" target="_blank" rel="noreferrer">#16778</a>)</li><li>Add Gentleman 65 SE Solderd PCB support (<a href="https://github.com/qmk/qmk_firmware/pull/16992" target="_blank" rel="noreferrer">#16992</a>)</li><li>Move/Rename to Hillside48, simplify default keymap (<a href="https://github.com/qmk/qmk_firmware/pull/17210" target="_blank" rel="noreferrer">#17210</a>)</li><li>IDOBAO ID67 code touch-ups and include factory keymap (<a href="https://github.com/qmk/qmk_firmware/pull/17231" target="_blank" rel="noreferrer">#17231</a>)</li><li>IDOBAO ID87v2 code rewrite and include factory keymap (<a href="https://github.com/qmk/qmk_firmware/pull/17232" target="_blank" rel="noreferrer">#17232</a>)</li><li>IDOBAO ID80v3 code rewrite and include factory keymap (<a href="https://github.com/qmk/qmk_firmware/pull/17234" target="_blank" rel="noreferrer">#17234</a>)</li><li>IDOBAO ID80v1 folder rename (<a href="https://github.com/qmk/qmk_firmware/pull/17265" target="_blank" rel="noreferrer">#17265</a>)</li><li>Fine!40 PCB Support (<a href="https://github.com/qmk/qmk_firmware/pull/17426" target="_blank" rel="noreferrer">#17426</a>)</li><li>Update Charybdis code for Extended Mouse reports (<a href="https://github.com/qmk/qmk_firmware/pull/17435" target="_blank" rel="noreferrer">#17435</a>)</li><li>(develop)AP2: Enable support for WL EEPROM Driver (<a href="https://github.com/qmk/qmk_firmware/pull/17506" target="_blank" rel="noreferrer">#17506</a>)</li><li>(develop)Keychron Q2: Enable support for WL EEPROM Driver (<a href="https://github.com/qmk/qmk_firmware/pull/17507" target="_blank" rel="noreferrer">#17507</a>)</li><li>Add Adafruit Macropad RP2040 (<a href="https://github.com/qmk/qmk_firmware/pull/17512" target="_blank" rel="noreferrer">#17512</a>)</li><li>Add RP2040 config defaults (<a href="https://github.com/qmk/qmk_firmware/pull/17557" target="_blank" rel="noreferrer">#17557</a>)</li><li>Add support keyboard Feker IK75 (<a href="https://github.com/qmk/qmk_firmware/pull/17611" target="_blank" rel="noreferrer">#17611</a>)</li><li>boardsource/holiday/spooky data driven (<a href="https://github.com/qmk/qmk_firmware/pull/17632" target="_blank" rel="noreferrer">#17632</a>)</li><li>boardsource/lulu data driven (<a href="https://github.com/qmk/qmk_firmware/pull/17638" target="_blank" rel="noreferrer">#17638</a>)</li><li>Added support for gmmk pro rev2 keyboard. (<a href="https://github.com/qmk/qmk_firmware/pull/17655" target="_blank" rel="noreferrer">#17655</a>)</li><li>boardsource/microdox data driven (<a href="https://github.com/qmk/qmk_firmware/pull/17675" target="_blank" rel="noreferrer">#17675</a>)</li><li>Remove full bootmagic config from user files (<a href="https://github.com/qmk/qmk_firmware/pull/17702" target="_blank" rel="noreferrer">#17702</a>)</li><li>(develop) Update bootmagic for Adafruit Macropad (<a href="https://github.com/qmk/qmk_firmware/pull/17755" target="_blank" rel="noreferrer">#17755</a>)</li><li>Add a kb2040 version of the onkey keyboard that works with the oled keymap (<a href="https://github.com/qmk/qmk_firmware/pull/17786" target="_blank" rel="noreferrer">#17786</a>)</li><li>Enable mousekeys by default for RGBKB Sol3 (<a href="https://github.com/qmk/qmk_firmware/pull/17842" target="_blank" rel="noreferrer">#17842</a>)</li><li>More glyph transformations for spidey3 userspace (<a href="https://github.com/qmk/qmk_firmware/pull/17854" target="_blank" rel="noreferrer">#17854</a>)</li><li>Default rgblight (<a href="https://github.com/qmk/qmk_firmware/pull/17855" target="_blank" rel="noreferrer">#17855</a>)</li><li>Refactor satt/comet46 to use core OLED driver (<a href="https://github.com/qmk/qmk_firmware/pull/17856" target="_blank" rel="noreferrer">#17856</a>)</li><li>Convert yosino58 to use split common (<a href="https://github.com/qmk/qmk_firmware/pull/17861" target="_blank" rel="noreferrer">#17861</a>)</li><li>Migrate crkbd keymaps to oled driver (<a href="https://github.com/qmk/qmk_firmware/pull/17863" target="_blank" rel="noreferrer">#17863</a>)</li><li>Overhaul uzu42 (<a href="https://github.com/qmk/qmk_firmware/pull/17868" target="_blank" rel="noreferrer">#17868</a>)</li><li>Update ginkgo65hot to allow use of community layouts (<a href="https://github.com/qmk/qmk_firmware/pull/17911" target="_blank" rel="noreferrer">#17911</a>)</li><li>Remove <code>UNUSED_PINS</code> (<a href="https://github.com/qmk/qmk_firmware/pull/17931" target="_blank" rel="noreferrer">#17931</a>)</li><li>RESET -&gt; QK_BOOT user keymaps (<a href="https://github.com/qmk/qmk_firmware/pull/17940" target="_blank" rel="noreferrer">#17940</a>)</li><li>Add cursor layer to DMQ Spin (<a href="https://github.com/qmk/qmk_firmware/pull/17996" target="_blank" rel="noreferrer">#17996</a>)</li><li>add new keyboard &#39;soda/cherish&#39; (<a href="https://github.com/qmk/qmk_firmware/pull/18057" target="_blank" rel="noreferrer">#18057</a>)</li><li>Move keyboard USB IDs and strings to data driven: develop (<a href="https://github.com/qmk/qmk_firmware/pull/18152" target="_blank" rel="noreferrer">#18152</a>)</li></ul><p>Keyboard fixes:</p><ul><li>Fixup SPI mode 3 =&gt; 0 on tzarc/djinn, <code>develop</code>. (<a href="https://github.com/qmk/qmk_firmware/pull/17440" target="_blank" rel="noreferrer">#17440</a>)</li><li>Fixup doio/kb16 (<a href="https://github.com/qmk/qmk_firmware/pull/17545" target="_blank" rel="noreferrer">#17545</a>)</li><li>Adafruit Macropad: Add VIA keymap, fix default km (<a href="https://github.com/qmk/qmk_firmware/pull/17735" target="_blank" rel="noreferrer">#17735</a>)</li><li>Fix compilation issues for Charybdis/Dilemma (<a href="https://github.com/qmk/qmk_firmware/pull/17791" target="_blank" rel="noreferrer">#17791</a>)</li><li>bastardkb: fix info.json changes that got reverted during the last merge from <code>master</code> to <code>develop</code> (<a href="https://github.com/qmk/qmk_firmware/pull/17800" target="_blank" rel="noreferrer">#17800</a>)</li><li>Fixup uzu42 (<a href="https://github.com/qmk/qmk_firmware/pull/17867" target="_blank" rel="noreferrer">#17867</a>)</li><li>use correct function in Dilemma splinky (<a href="https://github.com/qmk/qmk_firmware/pull/17923" target="_blank" rel="noreferrer">#17923</a>)</li><li>Fix compilation issues for Boardsource Microdox (<a href="https://github.com/qmk/qmk_firmware/pull/18037" target="_blank" rel="noreferrer">#18037</a>)</li><li>Fixup gmmk/pro/rev2 USB Data (<a href="https://github.com/qmk/qmk_firmware/pull/18056" target="_blank" rel="noreferrer">#18056</a>)</li></ul><p>Others:</p><ul><li>backlight|led &#39;on state&#39; for DD configuration (<a href="https://github.com/qmk/qmk_firmware/pull/17383" target="_blank" rel="noreferrer">#17383</a>)</li><li>Dump out the largest symbols in flash and in RAM. (<a href="https://github.com/qmk/qmk_firmware/pull/17397" target="_blank" rel="noreferrer">#17397</a>)</li><li>Re-order user space rules inclusion (<a href="https://github.com/qmk/qmk_firmware/pull/17459" target="_blank" rel="noreferrer">#17459</a>)</li><li>Update feature_split_keyboard.md to add extra detail about left and right matrices. (<a href="https://github.com/qmk/qmk_firmware/pull/17492" target="_blank" rel="noreferrer">#17492</a>)</li><li>Swap F4x1 default board files away from blackpill (<a href="https://github.com/qmk/qmk_firmware/pull/17522" target="_blank" rel="noreferrer">#17522</a>)</li><li>Add converter docs (<a href="https://github.com/qmk/qmk_firmware/pull/17593" target="_blank" rel="noreferrer">#17593</a>)</li><li>Updates to Pointing Device Docs (<a href="https://github.com/qmk/qmk_firmware/pull/17777" target="_blank" rel="noreferrer">#17777</a>)</li><li>Add deprecated check for RGBLIGHT_ANIMATIONS (<a href="https://github.com/qmk/qmk_firmware/pull/17832" target="_blank" rel="noreferrer">#17832</a>)</li><li>Remove OLED driver Split Common warning (<a href="https://github.com/qmk/qmk_firmware/pull/17862" target="_blank" rel="noreferrer">#17862</a>)</li><li>Revert &quot; Re-order user space rules inclusion (#17459)&quot; (<a href="https://github.com/qmk/qmk_firmware/pull/18032" target="_blank" rel="noreferrer">#18032</a>)</li></ul><p>Bugs:</p><ul><li>Minor schema fixes (<a href="https://github.com/qmk/qmk_firmware/pull/14200" target="_blank" rel="noreferrer">#14200</a>)</li><li>Fix buffer size for WS2812 PWM driver (<a href="https://github.com/qmk/qmk_firmware/pull/17046" target="_blank" rel="noreferrer">#17046</a>)</li><li>Fix AVR I2C master 1ms timeout (<a href="https://github.com/qmk/qmk_firmware/pull/17174" target="_blank" rel="noreferrer">#17174</a>)</li><li>Mouse key kinetic mode fix (<a href="https://github.com/qmk/qmk_firmware/pull/17176" target="_blank" rel="noreferrer">#17176</a>)</li><li>Fix RGB heatmap to use XY positions and use correct led limits. (<a href="https://github.com/qmk/qmk_firmware/pull/17184" target="_blank" rel="noreferrer">#17184</a>)</li><li>Fix keys being discarded after using the leader key (<a href="https://github.com/qmk/qmk_firmware/pull/17287" target="_blank" rel="noreferrer">#17287</a>)</li><li>Fixup pimoroni trackball (<a href="https://github.com/qmk/qmk_firmware/pull/17335" target="_blank" rel="noreferrer">#17335</a>)</li><li>Fix via builds broken by brightness scaling (<a href="https://github.com/qmk/qmk_firmware/pull/17354" target="_blank" rel="noreferrer">#17354</a>)</li><li>SPI Bugfix for ChibiOS <code>21.11.1</code> =&gt; <code>21.11.2</code> (<a href="https://github.com/qmk/qmk_firmware/pull/17371" target="_blank" rel="noreferrer">#17371</a>)</li><li>Additional schema fixes (<a href="https://github.com/qmk/qmk_firmware/pull/17414" target="_blank" rel="noreferrer">#17414</a>)</li><li>Fix deadlocks on disconnected secondary half (<a href="https://github.com/qmk/qmk_firmware/pull/17423" target="_blank" rel="noreferrer">#17423</a>)</li><li>[Fix] Fix compilation warning for non-split keebs after #17423 (<a href="https://github.com/qmk/qmk_firmware/pull/17439" target="_blank" rel="noreferrer">#17439</a>)</li><li>Fix Caps Word to treat mod-taps more consistently. (<a href="https://github.com/qmk/qmk_firmware/pull/17463" target="_blank" rel="noreferrer">#17463</a>)</li><li>Fix docs regarding <code>USB_SUSPEND_WAKEUP_DELAY</code> (<a href="https://github.com/qmk/qmk_firmware/pull/17501" target="_blank" rel="noreferrer">#17501</a>)</li><li>Fixup SSD1351 build after #17438 (<a href="https://github.com/qmk/qmk_firmware/pull/17533" target="_blank" rel="noreferrer">#17533</a>)</li><li>Fixup SPI init procedure, SPI EEPROM sequencing (<a href="https://github.com/qmk/qmk_firmware/pull/17534" target="_blank" rel="noreferrer">#17534</a>)</li><li>Fix Caps Word capitalization when used with Combos + Auto Shift. (<a href="https://github.com/qmk/qmk_firmware/pull/17549" target="_blank" rel="noreferrer">#17549</a>)</li><li>Allow for <code>keymaps</code> array to be implemented in a file other than <code>$(KEYMAP_C)</code> (<a href="https://github.com/qmk/qmk_firmware/pull/17559" target="_blank" rel="noreferrer">#17559</a>)</li><li>[Fix] printf update aftermath (<a href="https://github.com/qmk/qmk_firmware/pull/17584" target="_blank" rel="noreferrer">#17584</a>)</li><li>Fix rgbkb/sol/rev2 build issues (<a href="https://github.com/qmk/qmk_firmware/pull/17601" target="_blank" rel="noreferrer">#17601</a>)</li><li>More DD encoder fixes (<a href="https://github.com/qmk/qmk_firmware/pull/17615" target="_blank" rel="noreferrer">#17615</a>)</li><li>[Fix] Make ChibiOS <code>_wait.h</code> independent of <code>quantum.h</code> (<a href="https://github.com/qmk/qmk_firmware/pull/17645" target="_blank" rel="noreferrer">#17645</a>)</li><li>Grammar fixes for docs/feature_converters.md (<a href="https://github.com/qmk/qmk_firmware/pull/17652" target="_blank" rel="noreferrer">#17652</a>)</li><li>Fix compilation issue with Cirque Guestures file (<a href="https://github.com/qmk/qmk_firmware/pull/17656" target="_blank" rel="noreferrer">#17656</a>)</li><li>Fix compile issue with LED Matrix (<a href="https://github.com/qmk/qmk_firmware/pull/17658" target="_blank" rel="noreferrer">#17658</a>)</li><li>Post-bootloader EFL/SPI fixes. (<a href="https://github.com/qmk/qmk_firmware/pull/17661" target="_blank" rel="noreferrer">#17661</a>)</li><li>Fix LED limit loop (<a href="https://github.com/qmk/qmk_firmware/pull/17678" target="_blank" rel="noreferrer">#17678</a>)</li><li>[Fix] Use correct angle tune range of +/-30 on PMW33XX (<a href="https://github.com/qmk/qmk_firmware/pull/17693" target="_blank" rel="noreferrer">#17693</a>)</li><li>Fix AVR compilation of FNV by using standard integer typenames. (<a href="https://github.com/qmk/qmk_firmware/pull/17716" target="_blank" rel="noreferrer">#17716</a>)</li><li>fix syntax error in header file (<a href="https://github.com/qmk/qmk_firmware/pull/17732" target="_blank" rel="noreferrer">#17732</a>)</li><li>Fix custom debug function and sample output (<a href="https://github.com/qmk/qmk_firmware/pull/17790" target="_blank" rel="noreferrer">#17790</a>)</li><li>Fix QK_MAKE&#39;s reboot check (<a href="https://github.com/qmk/qmk_firmware/pull/17795" target="_blank" rel="noreferrer">#17795</a>)</li><li>Chibios: Stop I2C peripheral on transaction error (<a href="https://github.com/qmk/qmk_firmware/pull/17798" target="_blank" rel="noreferrer">#17798</a>)</li><li>Fix ChibiOS <code>i2c_master</code> error codes (<a href="https://github.com/qmk/qmk_firmware/pull/17808" target="_blank" rel="noreferrer">#17808</a>)</li><li>Update ChibiOS Contrib for RP2040 fixes (<a href="https://github.com/qmk/qmk_firmware/pull/17817" target="_blank" rel="noreferrer">#17817</a>)</li><li>RP2040 disable PIO IRQs on serial timeout (<a href="https://github.com/qmk/qmk_firmware/pull/17839" target="_blank" rel="noreferrer">#17839</a>)</li><li>Fix POINTING_DEVICE_GESTURES_SCROLL_ENABLE typo (<a href="https://github.com/qmk/qmk_firmware/pull/17850" target="_blank" rel="noreferrer">#17850</a>)</li><li>Fixup compilation of printf-like functions with uint32_t args. (<a href="https://github.com/qmk/qmk_firmware/pull/17904" target="_blank" rel="noreferrer">#17904</a>)</li><li>Fix issue with #17904. (<a href="https://github.com/qmk/qmk_firmware/pull/17905" target="_blank" rel="noreferrer">#17905</a>)</li><li>Always run pointing device init (<a href="https://github.com/qmk/qmk_firmware/pull/17936" target="_blank" rel="noreferrer">#17936</a>)</li><li>Align TO() max layers with other keycodes (<a href="https://github.com/qmk/qmk_firmware/pull/17989" target="_blank" rel="noreferrer">#17989</a>)</li><li>Fix Bépo&#39;s BP_NNBS (narrow non-breaking space) (<a href="https://github.com/qmk/qmk_firmware/pull/17999" target="_blank" rel="noreferrer">#17999</a>)</li><li>Move Encoder+Encoder Map from generic features (<a href="https://github.com/qmk/qmk_firmware/pull/18018" target="_blank" rel="noreferrer">#18018</a>)</li><li>Fix wrong varaible in encoder block (<a href="https://github.com/qmk/qmk_firmware/pull/18020" target="_blank" rel="noreferrer">#18020</a>)</li><li>Fix LV_CCAR and LV_NCED in keymap_latvian.h (<a href="https://github.com/qmk/qmk_firmware/pull/18025" target="_blank" rel="noreferrer">#18025</a>)</li><li>Use ANSI ASCII art and fix comments for LT_COLN and LT_UNDS in keymap_lithuanian_qwerty.h (<a href="https://github.com/qmk/qmk_firmware/pull/18028" target="_blank" rel="noreferrer">#18028</a>)</li><li>Partially revert some WB32 specific changes (<a href="https://github.com/qmk/qmk_firmware/pull/18038" target="_blank" rel="noreferrer">#18038</a>)</li><li>Fix Emulated EEPROM issue with F466 (<a href="https://github.com/qmk/qmk_firmware/pull/18039" target="_blank" rel="noreferrer">#18039</a>)</li><li>Fix DV_SCLN and DV_COLN in keymap_spanish_dvorak.h (<a href="https://github.com/qmk/qmk_firmware/pull/18043" target="_blank" rel="noreferrer">#18043</a>)</li><li>Fix missing development_board schema entry (<a href="https://github.com/qmk/qmk_firmware/pull/18050" target="_blank" rel="noreferrer">#18050</a>)</li><li>Add key event check to <code>is_tap_record</code> and remove <code>is_tap_key</code> (<a href="https://github.com/qmk/qmk_firmware/pull/18063" target="_blank" rel="noreferrer">#18063</a>)</li><li>Fix GD32VF103 WS2812 PWM driver (<a href="https://github.com/qmk/qmk_firmware/pull/18067" target="_blank" rel="noreferrer">#18067</a>)</li><li>Fix new-keyboard default for RP2040 bootloader (<a href="https://github.com/qmk/qmk_firmware/pull/18100" target="_blank" rel="noreferrer">#18100</a>)</li><li>Fixup F4xx wear-leveling bootloader check (<a href="https://github.com/qmk/qmk_firmware/pull/18102" target="_blank" rel="noreferrer">#18102</a>)</li><li>Fix PID value for the Keyboardio Atreus 2 bootloader (<a href="https://github.com/qmk/qmk_firmware/pull/18116" target="_blank" rel="noreferrer">#18116</a>)</li><li>Add missing SS_LOPT and SS_ROPT defines (<a href="https://github.com/qmk/qmk_firmware/pull/18175" target="_blank" rel="noreferrer">#18175</a>)</li></ul></div></div></main><footer class="VPDocFooter" data-v-39a288b8 data-v-e257564d><!--[--><!--]--><div class="edit-info" data-v-e257564d><div class="edit-link" data-v-e257564d><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://github.com/qmk/qmk_firmware/edit/master/docs/ChangeLog/20220827.md" target="_blank" rel="noreferrer" data-v-e257564d><!--[--><span class="vpi-square-pen edit-link-icon" data-v-e257564d></span> Edit this page<!--]--></a></div><!----></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-e257564d><span class="visually-hidden" id="doc-footer-aria-label" data-v-e257564d>Pager</span><div class="pager" data-v-e257564d><!----></div><div class="pager" data-v-e257564d><a class="VPLink link pager-link next" href="/newbs" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>Next page</span><span class="title" data-v-e257564d>Introduction</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
<script>window.__VP_HASH_MAP__=JSON.parse("{\"api_development_environment.md\":\"wNYXToe7\",\"api_development_overview.md\":\"CzbJJDNw\",\"api_docs.md\":\"C2yn8IjW\",\"api_overview.md\":\"DkBx64VD\",\"arm_debugging.md\":\"BVKHYCY3\",\"breaking_changes.md\":\"BJZxbNQ8\",\"breaking_changes_history.md\":\"CE5EMOAr\",\"breaking_changes_instructions.md\":\"YfjQwyDT\",\"capabilities.md\":\"B8T3JCyt\",\"capabilities_inc.md\":\"Sa8st2B_\",\"changelog_20190830.md\":\"CBfckQOX\",\"changelog_20200229.md\":\"DiinV84l\",\"changelog_20200530.md\":\"BH8FWHkm\",\"changelog_20200829.md\":\"DznAG4nm\",\"changelog_20201128.md\":\"-2Dfbq7k\",\"changelog_20210227.md\":\"vgsezX7T\",\"changelog_20210529.md\":\"CWpDbllD\",\"changelog_20210828.md\":\"X4_BluTJ\",\"changelog_20211127.md\":\"B9B6h84a\",\"changelog_20220226.md\":\"DIw57r5h\",\"changelog_20220528.md\":\"Aq5MEXya\",\"changelog_20220827.md\":\"Cr63IlPG\",\"changelog_20221126.md\":\"C2ha4Hg9\",\"changelog_20230226.md\":\"De4T2dUZ\",\"changelog_20230528.md\":\"BacADocV\",\"changelog_20230827.md\":\"Ccy4AdJq\",\"changelog_20231126.md\":\"Q4Va56-o\",\"changelog_20240225.md\":\"DSuQVEc0\",\"changelog_20240526.md\":\"ElUUrYcx\",\"changelog_20240825.md\":\"N1RvMy9r\",\"changelog_20241124.md\":\"Dy8bwJzG\",\"changelog_20250223.md\":\"B72dUS3J\",\"changelog_20250525.md\":\"a1xu4dA3\",\"changelog_20250831.md\":\"BO33XxfI\",\"changelog_20251130.md\":\"DtPMFMHL\",\"changelog_20260222.md\":\"CATMKVaN\",\"changelog_20260531.md\":\"DHtZDh3f\",\"chibios_upgrade_instructions.md\":\"CtaRRXpJ\",\"cli.md\":\"BSe0mfRY\",\"cli_commands.md\":\"CgJfYMV3\",\"cli_configuration.md\":\"BKXYakFu\",\"cli_development.md\":\"BBW4icmD\",\"cli_tab_complete.md\":\"CnVMEiZf\",\"coding_conventions_c.md\":\"CLEvGoZQ\",\"coding_conventions_python.md\":\"C39VQP0z\",\"compatible_microcontrollers.md\":\"Bf-rLjWh\",\"config_options.md\":\"BvppuDuW\",\"configurator_architecture.md\":\"oiNBnJec\",\"configurator_default_keymaps.md\":\"DnKCtKHc\",\"configurator_step_by_step.md\":\"DDwpDY58\",\"configurator_troubleshooting.md\":\"C2ghw8vC\",\"contributing.md\":\"dJQPrZXD\",\"custom_matrix.md\":\"BpQrge8p\",\"custom_quantum_functions.md\":\"DlfwiyHe\",\"data_driven_config.md\":\"CnG_3O32\",\"documentation_best_practices.md\":\"CywuRS8R\",\"documentation_templates.md\":\"8Tmv7rFN\",\"driver_installation_zadig.md\":\"Dopii2Qg\",\"drivers_adc.md\":\"4lcxwuNF\",\"drivers_apa102.md\":\"BoVkQMrw\",\"drivers_audio.md\":\"DFUXqjwH\",\"drivers_aw20216s.md\":\"DmQVa7iu\",\"drivers_battery.md\":\"4AI78ASf\",\"drivers_eeprom.md\":\"BlurGiKn\",\"drivers_flash.md\":\"DaShF64Z\",\"drivers_gpio.md\":\"frhwWZT1\",\"drivers_i2c.md\":\"CzO-jzlA\",\"drivers_is31fl3218.md\":\"Boj71vTc\",\"drivers_is31fl3236.md\":\"CItbpifZ\",\"drivers_is31fl3729.md\":\"mDVSZ3C7\",\"drivers_is31fl3731.md\":\"CxEgviPy\",\"drivers_is31fl3733.md\":\"B-6AcIwY\",\"drivers_is31fl3736.md\":\"GDTnntSt\",\"drivers_is31fl3737.md\":\"D-aRCkbW\",\"drivers_is31fl3741.md\":\"Dlb-h25I\",\"drivers_is31fl3742a.md\":\"Cj8IJj4G\",\"drivers_is31fl3743a.md\":\"BiLEsQ8L\",\"drivers_is31fl3745.md\":\"Bs5pX8zD\",\"drivers_is31fl3746a.md\":\"r4Yz0yI2\",\"drivers_serial.md\":\"BaT67xXa\",\"drivers_snled27351.md\":\"BZ-74IBQ\",\"drivers_spi.md\":\"D4Me9hD5\",\"drivers_uart.md\":\"BzqycL-H\",\"drivers_ws2812.md\":\"BaongaWM\",\"easy_maker.md\":\"6n7dVTYS\",\"faq_build.md\":\"DZNHN8-D\",\"faq_debug.md\":\"vx_0_u9_\",\"faq_general.md\":\"D0EG2y83\",\"faq_keymap.md\":\"HQK7yaN_\",\"faq_misc.md\":\"CILFeSvN\",\"feature_advanced_keycodes.md\":\"BFCS9PZn\",\"feature_converters.md\":\"D6KzN6T3\",\"feature_debounce_type.md\":\"B4btv3zl\",\"feature_eeprom.md\":\"D_bqLEFa\",\"feature_layers.md\":\"Bqm53P73\",\"feature_layouts.md\":\"BogzTuHR\",\"feature_macros.md\":\"BlMWaiqJ\",\"feature_userspace.md\":\"Bf5gmiAY\",\"features_audio.md\":\"B0WDeKTO\",\"features_auto_shift.md\":\"DLSDpq9k\",\"features_autocorrect.md\":\"Y0LgzJas\",\"features_backlight.md\":\"BpMPbAI2\",\"features_battery.md\":\"B6Ab94Jc\",\"features_bootmagic.md\":\"C_5K311x\",\"features_caps_word.md\":\"CIDaBP-l\",\"features_combo.md\":\"Dax9EotR\",\"features_command.md\":\"DWbb2ZHf\",\"features_community_modules.md\":\"BKB3EQD6\",\"features_digitizer.md\":\"BM6Nxg-j\",\"features_dip_switch.md\":\"BkvqWk2A\",\"features_dynamic_macros.md\":\"DaLBt-80\",\"features_encoders.md\":\"BkuwcHCp\",\"features_grave_esc.md\":\"CHuvHpZ3\",\"features_haptic_feedback.md\":\"B-ioEYF3\",\"features_hd44780.md\":\"DpvS25NL\",\"features_joystick.md\":\"B4D1xgy3\",\"features_key_lock.md\":\"Cu61mSCj\",\"features_key_overrides.md\":\"V4FVUQJE\",\"features_layer_lock.md\":\"Z90Yt_DL\",\"features_leader_key.md\":\"B47rYW2D\",\"features_led_indicators.md\":\"B-a_9KJt\",\"features_led_matrix.md\":\"CAcICmoN\",\"features_midi.md\":\"DBHZcct-\",\"features_mouse_keys.md\":\"9KGsb6t8\",\"features_oled_driver.md\":\"DYIJCwT3\",\"features_os_detection.md\":\"DaeYZhGC\",\"features_pointing_device.md\":\"Bs_a83Jz\",\"features_programmable_button.md\":\"B4W0QrV3\",\"features_ps2_mouse.md\":\"DkKbg0HB\",\"features_rawhid.md\":\"agsoL5dY\",\"features_repeat_key.md\":\"DQiZBEg0\",\"features_rgb_matrix.md\":\"rWDHSc7o\",\"features_rgblight.md\":\"BEL-EV8Z\",\"features_secure.md\":\"DWJXxMMA\",\"features_send_string.md\":\"DxT8iR_p\",\"features_sequencer.md\":\"DFoKQ0TL\",\"features_space_cadet.md\":\"DB0y0-h8\",\"features_split_keyboard.md\":\"CdeMXa87\",\"features_st7565.md\":\"xq_DcRr1\",\"features_stenography.md\":\"C9XRyFjT\",\"features_swap_hands.md\":\"De2lhBOi\",\"features_tap_dance.md\":\"C__8yEyM\",\"features_tri_layer.md\":\"C_6wFQ5v\",\"features_unicode.md\":\"BOggbpE5\",\"features_wireless.md\":\"B3qwab2e\",\"features_wpm.md\":\"BpdrOIEu\",\"flashing.md\":\"C_N9qmvk\",\"getting_started_docker.md\":\"DU9mSHtV\",\"getting_started_github.md\":\"BFmZeNj_\",\"getting_started_introduction.md\":\"1_zQTAKR\",\"getting_started_make_guide.md\":\"B89Bjq5W\",\"hand_wire.md\":\"C4wUtrFL\",\"hardware_drivers.md\":\"C6vlSLCV\",\"hardware_keyboard_guidelines.md\":\"Iwx9-_MM\",\"how_a_matrix_works.md\":\"DuLy3fYm\",\"how_keyboards_work.md\":\"Kqz2eMw-\",\"index.md\":\"su9L9OiU\",\"isp_flashing_guide.md\":\"KLb4YKDZ\",\"keycodes.md\":\"C3FCIw8j\",\"keycodes_basic.md\":\"CU34_bpC\",\"keycodes_magic.md\":\"BMOu_KA0\",\"keycodes_us_ansi_shifted.md\":\"BuLWPsJ7\",\"keymap.md\":\"mONRk0bh\",\"license_violations.md\":\"BDYMotOh\",\"mod_tap.md\":\"DyIZlvOO\",\"newbs.md\":\"DK0F0hz3\",\"newbs_building_firmware.md\":\"BacztC1l\",\"newbs_building_firmware_configurator.md\":\"CcGaQsSJ\",\"newbs_building_firmware_workflow.md\":\"DJFZn_sg\",\"newbs_external_userspace.md\":\"p0BK6C70\",\"newbs_flashing.md\":\"BAqEj3y-\",\"newbs_getting_started.md\":\"Cm1TQTfg\",\"newbs_git_best_practices.md\":\"CWQUgz_s\",\"newbs_git_resolving_merge_conflicts.md\":\"CY7BwXek\",\"newbs_git_resynchronize_a_branch.md\":\"BrxafOHM\",\"newbs_git_using_your_master_branch.md\":\"Bf4LKnsw\",\"newbs_learn_more_resources.md\":\"DTxLu81-\",\"newbs_testing_debugging.md\":\"D941n7-l\",\"one_shot_keys.md\":\"Dno09Hp_\",\"other_eclipse.md\":\"BEiZBPaS\",\"other_vscode.md\":\"Ddu5wbwi\",\"platformdev_blackpill_f4x1.md\":\"srCds2d5\",\"platformdev_chibios_earlyinit.md\":\"DeU_QvW8\",\"platformdev_proton_c.md\":\"CpRo5RCH\",\"platformdev_rp2040.md\":\"DFezYYEC\",\"platformdev_selecting_arm_mcu.md\":\"CJom15Xw\",\"porting_your_keyboard_to_qmk.md\":\"Diniu5iP\",\"pr_checklist.md\":\"Dngwy_uC\",\"proprietary_libs.md\":\"D4Bh0qxV\",\"quantum_keycodes.md\":\"DAEibZwV\",\"quantum_painter.md\":\"C4xi4nLC\",\"quantum_painter_lvgl.md\":\"-hrqCJME\",\"quantum_painter_qff.md\":\"KXPWPCR-\",\"quantum_painter_qgf.md\":\"4jcFdZf1\",\"quantum_painter_rle.md\":\"CP6A5xOl\",\"ref_functions.md\":\"n3k29tKJ\",\"reference_configurator_support.md\":\"7XJjzI54\",\"reference_glossary.md\":\"CIwm4raE\",\"reference_info_json.md\":\"BIc7hvpx\",\"reference_keymap_extras.md\":\"F0wC7lQo\",\"squeezing_avr.md\":\"BmvINcV0\",\"support.md\":\"zKsJE92C\",\"support_deprecation_policy.md\":\"CZ4IhETi\",\"syllabus.md\":\"QTALDIRy\",\"tap_hold.md\":\"CFcRBW4O\",\"understanding_qmk.md\":\"BGTp2EVQ\",\"unit_testing.md\":\"D0ysJBhz\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"QMK Firmware\",\"description\":\"Documentation for QMK Firmware\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"logo\":{\"light\":\"/qmk-logo-light.svg\",\"dark\":\"/qmk-logo-dark.svg\"},\"title\":\"QMK Firmware\",\"nav\":[{\"text\":\"Home\",\"link\":\"/\"}],\"search\":{\"provider\":\"local\"},\"editLink\":{\"pattern\":\"https://github.com/qmk/qmk_firmware/edit/master/docs/:path\"},\"lastUpdated\":true,\"sidebar\":[{\"text\":\"Tutorial\",\"items\":[{\"text\":\"Introduction\",\"link\":\"/newbs\"},{\"text\":\"Setup\",\"link\":\"/newbs_getting_started\"},{\"text\":\"Building Your First Firmware\",\"link\":\"/newbs_building_firmware\"},{\"text\":\"Flashing Firmware\",\"link\":\"/newbs_flashing\"},{\"text\":\"Getting Help/Support\",\"link\":\"/support\"},{\"text\":\"External Userspace\",\"link\":\"/newbs_external_userspace\"},{\"text\":\"Other Resources\",\"link\":\"/newbs_learn_more_resources\"},{\"text\":\"Syllabus\",\"link\":\"/syllabus\"}]},{\"text\":\"FAQs\",\"items\":[{\"text\":\"General FAQ\",\"link\":\"/faq_general\"},{\"text\":\"Build/Compile QMK\",\"link\":\"/faq_build\"},{\"text\":\"Troubleshooting QMK\",\"link\":\"/faq_misc\"},{\"text\":\"Debugging QMK\",\"link\":\"/faq_debug\"},{\"text\":\"Keymap FAQ\",\"link\":\"/faq_keymap\"},{\"text\":\"Squeezing Space from AVR\",\"link\":\"/squeezing_avr\"},{\"text\":\"Glossary\",\"link\":\"/reference_glossary\"}]},{\"text\":\"Licensing\",\"items\":[{\"text\":\"License Violations\",\"link\":\"/license_violations\"},{\"text\":\"Proprietary Libraries\",\"link\":\"/proprietary_libs\"}]},{\"text\":\"Configurator\",\"items\":[{\"text\":\"Overview\",\"link\":\"/newbs_building_firmware_configurator\"},{\"text\":\"Step by Step\",\"link\":\"/configurator_step_by_step\"},{\"text\":\"Troubleshooting\",\"link\":\"/configurator_troubleshooting\"},{\"text\":\"Architecture\",\"link\":\"/configurator_architecture\"},{\"text\":\"QMK API\",\"items\":[{\"text\":\"Overview\",\"link\":\"/api_overview\"},{\"text\":\"API Documentation\",\"link\":\"/api_docs\"},{\"text\":\"Keyboard Support\",\"link\":\"/reference_configurator_support\"},{\"text\":\"Adding Default Keymaps\",\"link\":\"/configurator_default_keymaps\"}]}]},{\"text\":\"CLI\",\"items\":[{\"text\":\"Overview\",\"link\":\"/cli\"},{\"text\":\"Configuration\",\"link\":\"/cli_configuration\"},{\"text\":\"Commands\",\"link\":\"/cli_commands\"},{\"text\":\"Tab Completion\",\"link\":\"/cli_tab_complete\"}]},{\"text\":\"Using QMK\",\"items\":[{\"text\":\"Guides\",\"items\":[{\"text\":\"Customizing Functionality\",\"link\":\"/custom_quantum_functions\"},{\"text\":\"Driver Installation with Zadig\",\"link\":\"/driver_installation_zadig\"},{\"text\":\"Community Modules\",\"link\":\"/features/community_modules\"},{\"text\":\"Keymap Overview\",\"link\":\"/keymap\"},{\"text\":\"Development Environments\",\"items\":[{\"text\":\"Docker Guide\",\"link\":\"/getting_started_docker\"}]},{\"text\":\"Flashing\",\"link\":\"/flashing\"},{\"text\":\"IDEs\",\"items\":[{\"text\":\"Using Eclipse with QMK\",\"link\":\"/other_eclipse\"},{\"text\":\"Using VSCode with QMK\",\"link\":\"/other_vscode\"}]},{\"text\":\"Git Best Practices\",\"items\":[{\"text\":\"Introduction\",\"link\":\"/newbs_git_best_practices\"},{\"text\":\"Your Fork\",\"link\":\"/newbs_git_using_your_master_branch\"},{\"text\":\"Merge Conflicts\",\"link\":\"/newbs_git_resolving_merge_conflicts\"},{\"text\":\"Fixing Your Branch\",\"link\":\"/newbs_git_resynchronize_a_branch\"}]}]},{\"text\":\"Simple Keycodes\",\"items\":[{\"text\":\"Full List\",\"link\":\"/keycodes\"},{\"text\":\"Basic Keycodes\",\"link\":\"/keycodes_basic\"},{\"text\":\"Language-Specific Keycodes\",\"link\":\"/reference_keymap_extras\"},{\"text\":\"Modifier Keys\",\"link\":\"/feature_advanced_keycodes\"},{\"text\":\"Quantum Keycodes\",\"link\":\"/quantum_keycodes\"},{\"text\":\"Magic Keycodes\",\"link\":\"/keycodes_magic\"}]},{\"text\":\"Advanced Keycodes\",\"items\":[{\"text\":\"Command\",\"link\":\"/features/command\"},{\"text\":\"Dynamic Macros\",\"link\":\"/features/dynamic_macros\"},{\"text\":\"Grave Escape\",\"link\":\"/features/grave_esc\"},{\"text\":\"Leader Key\",\"link\":\"/features/leader_key\"},{\"text\":\"Mod-Tap\",\"link\":\"/mod_tap\"},{\"text\":\"Macros\",\"link\":\"/feature_macros\"},{\"text\":\"Mouse Keys\",\"link\":\"/features/mouse_keys\"},{\"text\":\"Programmable Button\",\"link\":\"/features/programmable_button\"},{\"text\":\"Repeat Key\",\"link\":\"/features/repeat_key\"},{\"text\":\"Space Cadet Shift\",\"link\":\"/features/space_cadet\"},{\"text\":\"US ANSI Shifted Keys\",\"link\":\"/keycodes_us_ansi_shifted\"}]},{\"text\":\"Software Features\",\"items\":[{\"text\":\"Auto Shift\",\"link\":\"/features/auto_shift\"},{\"text\":\"Autocorrect\",\"link\":\"/features/autocorrect\"},{\"text\":\"Caps Word\",\"link\":\"/features/caps_word\"},{\"text\":\"Combos\",\"link\":\"/features/combo\"},{\"text\":\"Debounce API\",\"link\":\"/feature_debounce_type\"},{\"text\":\"Digitizer\",\"link\":\"/features/digitizer\"},{\"text\":\"EEPROM\",\"link\":\"/feature_eeprom\"},{\"text\":\"Key Lock\",\"link\":\"/features/key_lock\"},{\"text\":\"Key Overrides\",\"link\":\"/features/key_overrides\"},{\"text\":\"Layers\",\"link\":\"/feature_layers\"},{\"text\":\"Layer Lock\",\"link\":\"/features/layer_lock\"},{\"text\":\"One Shot Keys\",\"link\":\"/one_shot_keys\"},{\"text\":\"OS Detection\",\"link\":\"/features/os_detection\"},{\"text\":\"Raw HID\",\"link\":\"/features/rawhid\"},{\"text\":\"Secure\",\"link\":\"/features/secure\"},{\"text\":\"Send String\",\"link\":\"/features/send_string\"},{\"text\":\"Sequencer\",\"link\":\"/features/sequencer\"},{\"text\":\"Swap Hands\",\"link\":\"/features/swap_hands\"},{\"text\":\"Tap Dance\",\"link\":\"/features/tap_dance\"},{\"text\":\"Tap-Hold Configuration\",\"link\":\"/tap_hold\"},{\"text\":\"Tri Layer\",\"link\":\"/features/tri_layer\"},{\"text\":\"Unicode\",\"link\":\"/features/unicode\"},{\"text\":\"Userspace\",\"link\":\"/feature_userspace\"},{\"text\":\"WPM Calculation\",\"link\":\"/features/wpm\"}]},{\"text\":\"Hardware Features\",\"items\":[{\"text\":\"Displays\",\"items\":[{\"text\":\"Quantum Painter\",\"link\":\"quantum_painter\",\"items\":[{\"text\":\"Quantum Painter LVGL Integration\",\"link\":\"/quantum_painter_lvgl\"}]},{\"text\":\"HD44780 LCD Driver\",\"link\":\"/features/hd44780\"},{\"text\":\"ST7565 LCD Driver\",\"link\":\"/features/st7565\"},{\"text\":\"OLED Driver\",\"link\":\"/features/oled_driver\"}]},{\"text\":\"Lighting\",\"items\":[{\"text\":\"Backlight\",\"link\":\"/features/backlight\"},{\"text\":\"LED Matrix\",\"link\":\"/features/led_matrix\"},{\"text\":\"RGB Lighting\",\"link\":\"/features/rgblight\"},{\"text\":\"RGB Matrix\",\"link\":\"/features/rgb_matrix\"}]},{\"text\":\"Audio\",\"link\":\"/features/audio\"},{\"text\":\"Battery\",\"link\":\"/features/battery\"},{\"text\":\"Bootmagic\",\"link\":\"/features/bootmagic\"},{\"text\":\"Converters\",\"link\":\"/feature_converters\"},{\"text\":\"Custom Matrix\",\"link\":\"/custom_matrix\"},{\"text\":\"DIP Switch\",\"link\":\"/features/dip_switch\"},{\"text\":\"Encoders\",\"link\":\"/features/encoders\"},{\"text\":\"Haptic Feedback\",\"link\":\"/features/haptic_feedback\"},{\"text\":\"Joystick\",\"link\":\"/features/joystick\"},{\"text\":\"LED Indicators\",\"link\":\"/features/led_indicators\"},{\"text\":\"MIDI\",\"link\":\"/features/midi\"},{\"text\":\"Pointing Device\",\"link\":\"/features/pointing_device\"},{\"text\":\"PS/2 Mouse\",\"link\":\"/features/ps2_mouse\"},{\"text\":\"Split Keyboard\",\"link\":\"/features/split_keyboard\"},{\"text\":\"Stenography\",\"link\":\"/features/stenography\"},{\"text\":\"Wireless\",\"link\":\"/features/wireless\"}]},{\"text\":\"Keyboard Building\",\"items\":[{\"text\":\"Easy Maker for One Offs\",\"link\":\"/easy_maker\"},{\"text\":\"Porting Keyboards\",\"link\":\"/porting_your_keyboard_to_qmk\"},{\"text\":\"Hand Wiring Guide\",\"link\":\"/hand_wire\"},{\"text\":\"ISP Flashing Guide\",\"link\":\"/isp_flashing_guide\"}]}]},{\"text\":\"Developing QMK\",\"items\":[{\"text\":\"PR Checklist\",\"link\":\"/pr_checklist\"},{\"text\":\"Breaking Changes\",\"items\":[{\"text\":\"Overview\",\"link\":\"/breaking_changes\"},{\"text\":\"My Pull Request Was Flagged\",\"link\":\"/breaking_changes_instructions\"},{\"text\":\"Most Recent ChangeLog\",\"link\":\"/ChangeLog/20260531\"},{\"text\":\"Past Breaking Changes\",\"link\":\"/breaking_changes_history\"},{\"text\":\"Deprecation Policy\",\"link\":\"/support_deprecation_policy\"}]},{\"text\":\"C Development\",\"items\":[{\"text\":\"ARM Debugging Guide\",\"link\":\"/arm_debugging\"},{\"text\":\"Coding Conventions\",\"link\":\"/coding_conventions_c\"},{\"text\":\"Compatible Microcontrollers\",\"link\":\"/compatible_microcontrollers\"},{\"text\":\"Drivers\",\"link\":\"hardware_drivers\",\"items\":[{\"text\":\"ADC Driver\",\"link\":\"/drivers/adc\"},{\"text\":\"APA102 Driver\",\"link\":\"/drivers/apa102\"},{\"text\":\"Audio Driver\",\"link\":\"/drivers/audio\"},{\"text\":\"Battery Driver\",\"link\":\"/drivers/battery\"},{\"text\":\"EEPROM Driver\",\"link\":\"/drivers/eeprom\"},{\"text\":\"Flash Driver\",\"link\":\"/drivers/flash\"},{\"text\":\"I2C Driver\",\"link\":\"/drivers/i2c\"},{\"text\":\"'serial' Driver\",\"link\":\"/drivers/serial\"},{\"text\":\"SPI Driver\",\"link\":\"/drivers/spi\"},{\"text\":\"UART Driver\",\"link\":\"/drivers/uart\"},{\"text\":\"WS2812 Driver\",\"link\":\"/drivers/ws2812\"}]},{\"text\":\"GPIO Controls\",\"link\":\"/drivers/gpio\"},{\"text\":\"Keyboard Guidelines\",\"link\":\"/hardware_keyboard_guidelines\"}]},{\"text\":\"Python Development\",\"items\":[{\"text\":\"Coding Conventions\",\"link\":\"/coding_conventions_python\"},{\"text\":\"QMK CLI Development\",\"link\":\"/cli_development\"}]},{\"text\":\"Configurator Development\",\"items\":[{\"text\":\"QMK API\",\"items\":[{\"text\":\"Development Environment\",\"link\":\"/api_development_environment\"},{\"text\":\"Architecture Overview\",\"link\":\"/api_development_overview\"}]}]},{\"text\":\"Hardware Platform Development\",\"items\":[{\"text\":\"Arm/ChibiOS\",\"items\":[{\"text\":\"Selecting an MCU\",\"link\":\"/platformdev_selecting_arm_mcu\"},{\"text\":\"Early initialization\",\"link\":\"/platformdev_chibios_earlyinit\"},{\"text\":\"Raspberry Pi RP2040\",\"link\":\"/platformdev_rp2040\"},{\"text\":\"Proton C\",\"link\":\"/platformdev_proton_c\"},{\"text\":\"WeAct Blackpill F4x1\",\"link\":\"/platformdev_blackpill_f4x1\"}]}]},{\"text\":\"QMK Reference\",\"items\":[{\"text\":\"Contributing to QMK\",\"link\":\"/contributing\"},{\"text\":\"Config Options\",\"link\":\"/config_options\"},{\"text\":\"Data Driven Configuration\",\"link\":\"/data_driven_config\"},{\"text\":\"Make Documentation\",\"link\":\"/getting_started_make_guide\"},{\"text\":\"Documentation Best Practices\",\"link\":\"/documentation_best_practices\"},{\"text\":\"Documentation Templates\",\"link\":\"/documentation_templates\"},{\"text\":\"Community Layouts\",\"link\":\"/feature_layouts\"},{\"text\":\"Unit Testing\",\"link\":\"/unit_testing\"},{\"text\":\"Useful Functions\",\"link\":\"/ref_functions\"},{\"text\":\"info.json Format\",\"link\":\"/reference_info_json\"}]},{\"text\":\"For a Deeper Understanding\",\"items\":[{\"text\":\"How Keyboards Work\",\"link\":\"/how_keyboards_work\"},{\"text\":\"How a Matrix Works\",\"link\":\"/how_a_matrix_works\"},{\"text\":\"Understanding QMK\",\"link\":\"/understanding_qmk\"}]}]}],\"externalLinkIcon\":true,\"socialLinks\":[{\"icon\":{\"svg\":\"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 50 50\\\" width=\\\"50px\\\" height=\\\"50px\\\"><path d=\\\"M 29 3 C 28.0625 3 27.164063 3.382813 26.5 4 C 25.835938 4.617188 25.363281 5.433594 25 6.40625 C 24.355469 8.140625 24.085938 10.394531 24.03125 13.03125 C 19.234375 13.179688 14.820313 14.421875 11.28125 16.46875 C 10.214844 15.46875 8.855469 14.96875 7.5 14.96875 C 6.089844 14.96875 4.675781 15.511719 3.59375 16.59375 C 1.425781 18.761719 1.425781 22.238281 3.59375 24.40625 L 3.84375 24.65625 C 3.3125 26.035156 3 27.488281 3 29 C 3 33.527344 5.566406 37.585938 9.5625 40.4375 C 13.558594 43.289063 19.007813 45 25 45 C 30.992188 45 36.441406 43.289063 40.4375 40.4375 C 44.433594 37.585938 47 33.527344 47 29 C 47 27.488281 46.6875 26.035156 46.15625 24.65625 L 46.40625 24.40625 C 48.574219 22.238281 48.574219 18.761719 46.40625 16.59375 C 45.324219 15.511719 43.910156 14.96875 42.5 14.96875 C 41.144531 14.96875 39.785156 15.46875 38.71875 16.46875 C 35.195313 14.433594 30.800781 13.191406 26.03125 13.03125 C 26.09375 10.546875 26.363281 8.46875 26.875 7.09375 C 27.164063 6.316406 27.527344 5.757813 27.875 5.4375 C 28.222656 5.117188 28.539063 5 29 5 C 29.460938 5 29.683594 5.125 30.03125 5.40625 C 30.378906 5.6875 30.785156 6.148438 31.3125 6.6875 C 32.253906 7.652344 33.695313 8.714844 36.09375 8.9375 C 36.539063 11.238281 38.574219 13 41 13 C 43.75 13 46 10.75 46 8 C 46 5.25 43.75 3 41 3 C 38.605469 3 36.574219 4.710938 36.09375 6.96875 C 34.3125 6.796875 33.527344 6.109375 32.75 5.3125 C 32.300781 4.851563 31.886719 4.3125 31.3125 3.84375 C 30.738281 3.375 29.9375 3 29 3 Z M 41 5 C 42.667969 5 44 6.332031 44 8 C 44 9.667969 42.667969 11 41 11 C 39.332031 11 38 9.667969 38 8 C 38 6.332031 39.332031 5 41 5 Z M 25 15 C 30.609375 15 35.675781 16.613281 39.28125 19.1875 C 42.886719 21.761719 45 25.226563 45 29 C 45 32.773438 42.886719 36.238281 39.28125 38.8125 C 35.675781 41.386719 30.609375 43 25 43 C 19.390625 43 14.324219 41.386719 10.71875 38.8125 C 7.113281 36.238281 5 32.773438 5 29 C 5 25.226563 7.113281 21.761719 10.71875 19.1875 C 14.324219 16.613281 19.390625 15 25 15 Z M 7.5 16.9375 C 8.203125 16.9375 8.914063 17.148438 9.53125 17.59375 C 7.527344 19.03125 5.886719 20.769531 4.75 22.71875 C 3.582031 21.296875 3.660156 19.339844 5 18 C 5.714844 17.285156 6.609375 16.9375 7.5 16.9375 Z M 42.5 16.9375 C 43.390625 16.9375 44.285156 17.285156 45 18 C 46.339844 19.339844 46.417969 21.296875 45.25 22.71875 C 44.113281 20.769531 42.472656 19.03125 40.46875 17.59375 C 41.085938 17.148438 41.796875 16.9375 42.5 16.9375 Z M 17 22 C 14.800781 22 13 23.800781 13 26 C 13 28.199219 14.800781 30 17 30 C 19.199219 30 21 28.199219 21 26 C 21 23.800781 19.199219 22 17 22 Z M 33 22 C 30.800781 22 29 23.800781 29 26 C 29 28.199219 30.800781 30 33 30 C 35.199219 30 37 28.199219 37 26 C 37 23.800781 35.199219 22 33 22 Z M 17 24 C 18.117188 24 19 24.882813 19 26 C 19 27.117188 18.117188 28 17 28 C 15.882813 28 15 27.117188 15 26 C 15 24.882813 15.882813 24 17 24 Z M 33 24 C 34.117188 24 35 24.882813 35 26 C 35 27.117188 34.117188 28 33 28 C 31.882813 28 31 27.117188 31 26 C 31 24.882813 31.882813 24 33 24 Z M 34.15625 33.84375 C 34.101563 33.851563 34.050781 33.859375 34 33.875 C 33.683594 33.9375 33.417969 34.144531 33.28125 34.4375 C 33.28125 34.4375 32.757813 35.164063 31.4375 36 C 30.117188 36.835938 28.058594 37.6875 25 37.6875 C 21.941406 37.6875 19.882813 36.835938 18.5625 36 C 17.242188 35.164063 16.71875 34.4375 16.71875 34.4375 C 16.492188 34.082031 16.066406 33.90625 15.65625 34 C 15.332031 34.082031 15.070313 34.316406 14.957031 34.632813 C 14.84375 34.945313 14.894531 35.292969 15.09375 35.5625 C 15.09375 35.5625 15.863281 36.671875 17.46875 37.6875 C 19.074219 38.703125 21.558594 39.6875 25 39.6875 C 28.441406 39.6875 30.925781 38.703125 32.53125 37.6875 C 34.136719 36.671875 34.90625 35.5625 34.90625 35.5625 C 35.207031 35.273438 35.296875 34.824219 35.128906 34.441406 C 34.960938 34.058594 34.574219 33.820313 34.15625 33.84375 Z\\\"/></svg>\"},\"link\":\"https://reddit.com/r/olkb\"},{\"icon\":\"discord\",\"link\":\"https://discord.gg/qmk\"},{\"icon\":\"github\",\"link\":\"https://github.com/qmk/qmk_firmware\"}]},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":true}");</script>
</body>
</html>