mirror of
https://github.com/qmk/qmk_firmware.git
synced 2024-12-01 15:35:52 +00:00
24 lines
143 KiB
HTML
24 lines
143 KiB
HTML
<!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 February 26 Changelog | QMK Firmware</title>
|
||
<meta name="description" content="Documentation for QMK Firmware">
|
||
<meta name="generator" content="VitePress v1.1.3">
|
||
<link rel="preload stylesheet" href="/assets/style.No8zk9aC.css" as="style">
|
||
|
||
<script type="module" src="/assets/app.D2yWvPhv.js"></script>
|
||
<link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
|
||
<link rel="modulepreload" href="/assets/chunks/framework.DyMmIvSC.js">
|
||
<link rel="modulepreload" href="/assets/chunks/theme.CXwPehsq.js">
|
||
<link rel="modulepreload" href="/assets/ChangeLog_20220226.md.BWO5r_ec.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-0f60ec36></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0f60ec36> Skip to content </a><!--]--><!----><header class="VPNav" data-v-5d98c3a5 data-v-ae24b3ad><div class="VPNavBar has-sidebar top" data-v-ae24b3ad data-v-ccf7ddec><div class="wrapper" data-v-ccf7ddec><div class="container" data-v-ccf7ddec><div class="title" data-v-ccf7ddec><div class="VPNavBarTitle has-sidebar" data-v-ccf7ddec data-v-ab179fa1><a class="title" href="/" data-v-ab179fa1><!--[--><!--]--><!--[--><!--[--><!--[--><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-ab179fa1>QMK Firmware</span><!--[--><!--]--></a></div></div><div class="content" data-v-ccf7ddec><div class="content-body" data-v-ccf7ddec><!--[--><!--]--><div class="VPNavBarSearch search" data-v-ccf7ddec><!--[--><!----><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-ccf7ddec data-v-7f418b0f><span id="main-nav-aria-label" class="visually-hidden" data-v-7f418b0f>Main Navigation</span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="./" tabindex="0" data-v-7f418b0f data-v-9c663999><!--[--><span data-v-9c663999>Home</span><!--]--></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-ccf7ddec data-v-e6aabb21><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="Switch to dark theme" aria-checked="false" data-v-e6aabb21 data-v-d1f28634 data-v-1d5665e3><span class="check" data-v-1d5665e3><span class="icon" data-v-1d5665e3><!--[--><span class="vpi-sun sun" data-v-d1f28634></span><span class="vpi-moon moon" data-v-d1f28634></span><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-ccf7ddec 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-eee4e7cb><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-eee4e7cb><span class="vpi-social-discord" /></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-eee4e7cb><span class="vpi-social-github" /></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-ccf7ddec data-v-d0bd9dde data-v-b6c34ac9><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-b6c34ac9><span class="vpi-more-horizontal icon" data-v-b6c34ac9></span></button><div class="menu" data-v-b6c34ac9><div class="VPMenu" data-v-b6c34ac9 data-v-e7ea1737><!----><!--[--><!--[--><!----><div class="group" data-v-d0bd9dde><div class="item appearance" data-v-d0bd9dde><p class="label" data-v-d0bd9dde>Appearance</p><div class="appearance-action" data-v-d0bd9dde><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="Switch to dark theme" aria-checked="false" data-v-d0bd9dde data-v-d1f28634 data-v-1d5665e3><span class="check" data-v-1d5665e3><span class="icon" data-v-1d5665e3><!--[--><span class="vpi-sun sun" data-v-d1f28634></span><span class="vpi-moon moon" data-v-d1f28634></span><!--]--></span></span></button></div></div></div><div class="group" data-v-d0bd9dde><div class="item social-links" data-v-d0bd9dde><div class="VPSocialLinks social-links-list" data-v-d0bd9dde 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-eee4e7cb><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-eee4e7cb><span class="vpi-social-discord" /></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-eee4e7cb><span class="vpi-social-github" /></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-ccf7ddec 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-ccf7ddec><div class="divider-line" data-v-ccf7ddec></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-267dd0ed><button data-v-267dd0ed>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-5d98c3a5 data-v-575e6a36><div class="curtain" data-v-575e6a36></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-575e6a36><span class="visually-hidden" id="sidebar-aria-label" data-v-575e6a36> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="group" data-v-575e6a36><section class="VPSidebarItem level-0" data-v-575e6a36 data-v-b8d55f3b><div class="item" role="button" tabindex="0" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><h2 class="text" data-v-b8d55f3b>Tutorial</h2><!----></div><div class="items" data-v-b8d55f3b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/newbs" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Introduction</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/newbs_getting_started" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Setup</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/newbs_building_firmware" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Building Your First Firmware</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/newbs_flashing" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Flashing Firmware</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/support" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Getting Help/Support</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/newbs_external_userspace" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>External Userspace</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/newbs_learn_more_resources" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Other Resources</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/syllabus" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Syllabus</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-575e6a36><section class="VPSidebarItem level-0" data-v-575e6a36 data-v-b8d55f3b><div class="item" role="button" tabindex="0" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><h2 class="text" data-v-b8d55f3b>FAQs</h2><!----></div><div class="items" data-v-b8d55f3b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/faq_general" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>General FAQ</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/faq_build" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Build/Compile QMK</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/faq_misc" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Troubleshooting QMK</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/faq_debug" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Debugging QMK</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/faq_keymap" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Keymap FAQ</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/squeezing_avr" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Squeezing Space from AVR</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/reference_glossary" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Glossary</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-575e6a36><section class="VPSidebarItem level-0" data-v-575e6a36 data-v-b8d55f3b><div class="item" role="button" tabindex="0" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><h2 class="text" data-v-b8d55f3b>Configurator</h2><!----></div><div class="items" data-v-b8d55f3b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/newbs_building_firmware_configurator" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/configurator_step_by_step" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Step by Step</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/configurator_troubleshooting" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Troubleshooting</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/configurator_architecture" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Architecture</p><!--]--></a><!----></div><!----></div><section class="VPSidebarItem level-1" data-v-b8d55f3b data-v-b8d55f3b><div class="item" role="button" tabindex="0" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><h3 class="text" data-v-b8d55f3b>QMK API</h3><!----></div><div class="items" data-v-b8d55f3b><!--[--><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/api_overview" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/api_docs" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>API Documentation</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/reference_configurator_support" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Keyboard Support</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/configurator_default_keymaps" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Adding Default Keymaps</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section></div><div class="group" data-v-575e6a36><section class="VPSidebarItem level-0" data-v-575e6a36 data-v-b8d55f3b><div class="item" role="button" tabindex="0" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><h2 class="text" data-v-b8d55f3b>CLI</h2><!----></div><div class="items" data-v-b8d55f3b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/cli" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/cli_configuration" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Configuration</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/cli_commands" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Commands</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/cli_tab_complete" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Tab Completion</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-575e6a36><section class="VPSidebarItem level-0" data-v-575e6a36 data-v-b8d55f3b><div class="item" role="button" tabindex="0" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><h2 class="text" data-v-b8d55f3b>Using QMK</h2><!----></div><div class="items" data-v-b8d55f3b><!--[--><section class="VPSidebarItem level-1" data-v-b8d55f3b data-v-b8d55f3b><div class="item" role="button" tabindex="0" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><h3 class="text" data-v-b8d55f3b>Guides</h3><!----></div><div class="items" data-v-b8d55f3b><!--[--><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/custom_quantum_functions" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Customizing Functionality</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/driver_installation_zadig" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Driver Installation with Zadig</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/keymap" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Keymap Overview</p><!--]--></a><!----></div><!----></div><section class="VPSidebarItem level-2" data-v-b8d55f3b data-v-b8d55f3b><div class="item" role="button" tabindex="0" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><h4 class="text" data-v-b8d55f3b>Development Environments</h4><!----></div><div class="items" data-v-b8d55f3b><!--[--><div class="VPSidebarItem level-3 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/getting_started_docker" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Docker Guide</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-2" data-v-b8d55f3b data-v-b8d55f3b><div class="item" role="button" tabindex="0" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><h4 class="text" data-v-b8d55f3b>Flashing</h4><!----></div><div class="items" data-v-b8d55f3b><!--[--><div class="VPSidebarItem level-3 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/flashing" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Flashing</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/flashing_bootloadhid" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Flashing ATmega32A (ps2avrgb)</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-2" data-v-b8d55f3b data-v-b8d55f3b><div class="item" role="button" tabindex="0" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><h4 class="text" data-v-b8d55f3b>IDEs</h4><!----></div><div class="items" data-v-b8d55f3b><!--[--><div class="VPSidebarItem level-3 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/other_eclipse" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Using Eclipse with QMK</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/other_vscode" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Using VSCode with QMK</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-2" data-v-b8d55f3b data-v-b8d55f3b><div class="item" role="button" tabindex="0" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><h4 class="text" data-v-b8d55f3b>Git Best Practices</h4><!----></div><div class="items" data-v-b8d55f3b><!--[--><div class="VPSidebarItem level-3 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/newbs_git_best_practices" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Introduction</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/newbs_git_using_your_master_branch" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Your Fork</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/newbs_git_resolving_merge_conflicts" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Merge Conflicts</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/newbs_git_resynchronize_a_branch" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Fixing Your Branch</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section><section class="VPSidebarItem level-1" data-v-b8d55f3b data-v-b8d55f3b><div class="item" role="button" tabindex="0" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><h3 class="text" data-v-b8d55f3b>Simple Keycodes</h3><!----></div><div class="items" data-v-b8d55f3b><!--[--><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/keycodes" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Full List</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/keycodes_basic" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Basic Keycodes</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/reference_keymap_extras" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Language-Specific Keycodes</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/feature_advanced_keycodes" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Modifier Keys</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/quantum_keycodes" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Quantum Keycodes</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/keycodes_magic" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Magic Keycodes</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1" data-v-b8d55f3b data-v-b8d55f3b><div class="item" role="button" tabindex="0" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><h3 class="text" data-v-b8d55f3b>Advanced Keycodes</h3><!----></div><div class="items" data-v-b8d55f3b><!--[--><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/command" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Command</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/dynamic_macros" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Dynamic Macros</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/grave_esc" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Grave Escape</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/leader_key" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Leader Key</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/mod_tap" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Mod-Tap</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/feature_macros" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Macros</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/mouse_keys" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Mouse Keys</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/programmable_button" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Programmable Button</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/repeat_key" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Repeat Key</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/space_cadet" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Space Cadet Shift</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/keycodes_us_ansi_shifted" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>US ANSI Shifted Keys</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1" data-v-b8d55f3b data-v-b8d55f3b><div class="item" role="button" tabindex="0" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><h3 class="text" data-v-b8d55f3b>Software Features</h3><!----></div><div class="items" data-v-b8d55f3b><!--[--><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/auto_shift" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Auto Shift</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/autocorrect" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Autocorrect</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/caps_word" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Caps Word</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/combo" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Combos</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/feature_debounce_type" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Debounce API</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/digitizer" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Digitizer</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/feature_eeprom" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>EEPROM</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/key_lock" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Key Lock</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/key_overrides" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Key Overrides</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/feature_layers" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Layers</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/one_shot_keys" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>One Shot Keys</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/os_detection" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>OS Detection</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/rawhid" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Raw HID</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/secure" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Secure</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/send_string" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Send String</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/sequencer" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Sequencer</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/swap_hands" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Swap Hands</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/tap_dance" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Tap Dance</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/tap_hold" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Tap-Hold Configuration</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/tri_layer" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Tri Layer</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/unicode" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Unicode</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/feature_userspace" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Userspace</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/wpm" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>WPM Calculation</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1" data-v-b8d55f3b data-v-b8d55f3b><div class="item" role="button" tabindex="0" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><h3 class="text" data-v-b8d55f3b>Hardware Features</h3><!----></div><div class="items" data-v-b8d55f3b><!--[--><section class="VPSidebarItem level-2" data-v-b8d55f3b data-v-b8d55f3b><div class="item" role="button" tabindex="0" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><h4 class="text" data-v-b8d55f3b>Displays</h4><!----></div><div class="items" data-v-b8d55f3b><!--[--><section class="VPSidebarItem level-3 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" tabindex="0" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/quantum_painter" data-v-b8d55f3b><!--[--><h5 class="text" data-v-b8d55f3b>Quantum Painter</h5><!--]--></a><!----></div><div class="items" data-v-b8d55f3b><!--[--><div class="VPSidebarItem level-4 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/quantum_painter_lvgl" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Quantum Painter LVGL Integration</p><!--]--></a><!----></div><!----></div><!--]--></div></section><div class="VPSidebarItem level-3 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/hd44780" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>HD44780 LCD Driver</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/st7565" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>ST7565 LCD Driver</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/oled_driver" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>OLED Driver</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-2" data-v-b8d55f3b data-v-b8d55f3b><div class="item" role="button" tabindex="0" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><h4 class="text" data-v-b8d55f3b>Lighting</h4><!----></div><div class="items" data-v-b8d55f3b><!--[--><div class="VPSidebarItem level-3 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/backlight" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Backlight</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/led_matrix" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>LED Matrix</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/rgblight" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>RGB Lighting</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/rgb_matrix" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>RGB Matrix</p><!--]--></a><!----></div><!----></div><!--]--></div></section><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/audio" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Audio</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/bluetooth" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Bluetooth</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/bootmagic" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Bootmagic Lite</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/feature_converters" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Converters</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/custom_matrix" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Custom Matrix</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/dip_switch" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>DIP Switch</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/encoders" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Encoders</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/haptic_feedback" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Haptic Feedback</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/joystick" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Joystick</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/led_indicators" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>LED Indicators</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/midi" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>MIDI</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/pointing_device" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Pointing Device</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/ps2_mouse" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>PS/2 Mouse</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/split_keyboard" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Split Keyboard</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/features/stenography" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Stenography</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1" data-v-b8d55f3b data-v-b8d55f3b><div class="item" role="button" tabindex="0" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><h3 class="text" data-v-b8d55f3b>Keyboard Building</h3><!----></div><div class="items" data-v-b8d55f3b><!--[--><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/easy_maker" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Easy Maker for One Offs</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/porting_your_keyboard_to_qmk" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Porting Keyboards</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/hand_wire" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Hand Wiring Guide</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/isp_flashing_guide" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>ISP Flashing Guide</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section></div><div class="group" data-v-575e6a36><section class="VPSidebarItem level-0" data-v-575e6a36 data-v-b8d55f3b><div class="item" role="button" tabindex="0" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><h2 class="text" data-v-b8d55f3b>Developing QMK</h2><!----></div><div class="items" data-v-b8d55f3b><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/pr_checklist" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>PR Checklist</p><!--]--></a><!----></div><!----></div><section class="VPSidebarItem level-1" data-v-b8d55f3b data-v-b8d55f3b><div class="item" role="button" tabindex="0" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><h3 class="text" data-v-b8d55f3b>Breaking Changes</h3><!----></div><div class="items" data-v-b8d55f3b><!--[--><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/breaking_changes" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/breaking_changes_instructions" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>My Pull Request Was Flagged</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/ChangeLog/20240526" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Most Recent ChangeLog</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/breaking_changes_history" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Past Breaking Changes</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/support_deprecation_policy" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Deprecation Policy</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1" data-v-b8d55f3b data-v-b8d55f3b><div class="item" role="button" tabindex="0" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><h3 class="text" data-v-b8d55f3b>C Development</h3><!----></div><div class="items" data-v-b8d55f3b><!--[--><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/arm_debugging" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>ARM Debugging Guide</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/coding_conventions_c" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Coding Conventions</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/compatible_microcontrollers" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Compatible Microcontrollers</p><!--]--></a><!----></div><!----></div><section class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" tabindex="0" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/hardware_drivers" data-v-b8d55f3b><!--[--><h4 class="text" data-v-b8d55f3b>Drivers</h4><!--]--></a><!----></div><div class="items" data-v-b8d55f3b><!--[--><div class="VPSidebarItem level-3 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/drivers/adc" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>ADC Driver</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/drivers/apa102" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>APA102 Driver</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/drivers/audio" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Audio Driver</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/drivers/eeprom" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>EEPROM Driver</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/drivers/flash" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Flash Driver</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/drivers/i2c" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>I2C Driver</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/drivers/serial" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>'serial' Driver</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/drivers/spi" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>SPI Driver</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/drivers/uart" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>UART Driver</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/drivers/ws2812" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>WS2812 Driver</p><!--]--></a><!----></div><!----></div><!--]--></div></section><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/drivers/gpio" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>GPIO Controls</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/hardware_keyboard_guidelines" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Keyboard Guidelines</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1" data-v-b8d55f3b data-v-b8d55f3b><div class="item" role="button" tabindex="0" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><h3 class="text" data-v-b8d55f3b>Python Development</h3><!----></div><div class="items" data-v-b8d55f3b><!--[--><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/coding_conventions_python" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Coding Conventions</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/cli_development" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>QMK CLI Development</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1" data-v-b8d55f3b data-v-b8d55f3b><div class="item" role="button" tabindex="0" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><h3 class="text" data-v-b8d55f3b>Configurator Development</h3><!----></div><div class="items" data-v-b8d55f3b><!--[--><section class="VPSidebarItem level-2" data-v-b8d55f3b data-v-b8d55f3b><div class="item" role="button" tabindex="0" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><h4 class="text" data-v-b8d55f3b>QMK API</h4><!----></div><div class="items" data-v-b8d55f3b><!--[--><div class="VPSidebarItem level-3 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/api_development_environment" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Development Environment</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/api_development_overview" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Architecture Overview</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section><section class="VPSidebarItem level-1" data-v-b8d55f3b data-v-b8d55f3b><div class="item" role="button" tabindex="0" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><h3 class="text" data-v-b8d55f3b>Hardware Platform Development</h3><!----></div><div class="items" data-v-b8d55f3b><!--[--><section class="VPSidebarItem level-2" data-v-b8d55f3b data-v-b8d55f3b><div class="item" role="button" tabindex="0" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><h4 class="text" data-v-b8d55f3b>Arm/ChibiOS</h4><!----></div><div class="items" data-v-b8d55f3b><!--[--><div class="VPSidebarItem level-3 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/platformdev_selecting_arm_mcu" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Selecting an MCU</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/platformdev_chibios_earlyinit" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Early initialization</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/platformdev_rp2040" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Raspberry Pi RP2040</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/platformdev_proton_c" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Proton C</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/platformdev_blackpill_f4x1" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>WeAct Blackpill F4x1</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section><section class="VPSidebarItem level-1" data-v-b8d55f3b data-v-b8d55f3b><div class="item" role="button" tabindex="0" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><h3 class="text" data-v-b8d55f3b>QMK Reference</h3><!----></div><div class="items" data-v-b8d55f3b><!--[--><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/contributing" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Contributing to QMK</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/config_options" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Config Options</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/data_driven_config" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Data Driven Configuration</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/getting_started_make_guide" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Make Documentation</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/documentation_best_practices" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Documentation Best Practices</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/documentation_templates" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Documentation Templates</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/feature_layouts" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Community Layouts</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/unit_testing" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Unit Testing</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/ref_functions" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>Useful Functions</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/reference_info_json" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>info.json Format</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1" data-v-b8d55f3b data-v-b8d55f3b><div class="item" role="button" tabindex="0" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><h3 class="text" data-v-b8d55f3b>For a Deeper Understanding</h3><!----></div><div class="items" data-v-b8d55f3b><!--[--><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/how_keyboards_work" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>How Keyboards Work</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/how_a_matrix_works" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>How a Matrix Works</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b8d55f3b data-v-b8d55f3b><div class="item" data-v-b8d55f3b><div class="indicator" data-v-b8d55f3b></div><a class="VPLink link link" href="/understanding_qmk" data-v-b8d55f3b><!--[--><p class="text" data-v-b8d55f3b>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><!--[--><!--]--><!--[--><!--]--><div class="VPDocAsideOutline" role="navigation" data-v-3f215769 data-v-935f8a84><div class="content" data-v-935f8a84><div class="outline-marker" data-v-935f8a84></div><div class="outline-title" role="heading" aria-level="2" data-v-935f8a84>On this page</div><nav aria-labelledby="doc-outline-aria-label" data-v-935f8a84><span class="visually-hidden" id="doc-outline-aria-label" data-v-935f8a84> Table of Contents for current page </span><ul class="VPDocOutlineItem root" data-v-935f8a84 data-v-b933a997><!--[--><!--]--></ul></nav></div></div><!--[--><!--]--><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_20220226" data-v-39a288b8><div><h1 id="qmk-breaking-changes-2022-february-26-changelog" tabindex="-1">QMK Breaking Changes - 2022 February 26 Changelog <a class="header-anchor" href="#qmk-breaking-changes-2022-february-26-changelog" aria-label="Permalink to "QMK Breaking Changes - 2022 February 26 Changelog""></a></h1><h2 id="notable-features" tabindex="-1">Notable Features <a class="header-anchor" href="#notable-features" aria-label="Permalink to "Notable Features {#notable-features}""></a></h2><h3 id="default-usb-polling-rate-now-1khz-15352" tabindex="-1">Default USB Polling rate now 1kHz (<a href="https://github.com/qmk/qmk_firmware/pull/15352" target="_blank" rel="noreferrer">#15352</a>) <a class="header-anchor" href="#default-usb-polling-rate-now-1khz-15352" aria-label="Permalink to "Default USB Polling rate now 1kHz ([#15352](https://github.com/qmk/qmk_firmware/pull/15352))""></a></h3><p>The default USB Polling rate has been aligned across supported platforms to now be 1ms/1kHz.</p><p>Something something <em>Lets go gamers!</em></p><h3 id="split-support-for-pointing-devices-15304" tabindex="-1">Split support for pointing devices (<a href="https://github.com/qmk/qmk_firmware/pull/15304" target="_blank" rel="noreferrer">#15304</a>) <a class="header-anchor" href="#split-support-for-pointing-devices-15304" aria-label="Permalink to "Split support for pointing devices ([#15304](https://github.com/qmk/qmk_firmware/pull/15304))""></a></h3><p>Pointing devices can now be shared across a split keyboard with support for a single pointing device or a pointing device on each side.</p><p>See the <a href="./../features/pointing_device">Pointing Device</a> documentation for further configuration options.</p><h2 id="changes-requiring-user-action" tabindex="-1">Changes Requiring User Action <a class="header-anchor" href="#changes-requiring-user-action" aria-label="Permalink to "Changes Requiring User Action {#changes-requiring-user-action}""></a></h2><h3 id="legacy-macro-and-action-function-system-removed-16025" tabindex="-1">Legacy macro and action_function system removed (<a href="https://github.com/qmk/qmk_firmware/pull/16025" target="_blank" rel="noreferrer">#16025</a>) <a class="header-anchor" href="#legacy-macro-and-action-function-system-removed-16025" aria-label="Permalink to "Legacy macro and action_function system removed ([#16025](https://github.com/qmk/qmk_firmware/pull/16025))""></a></h3><p>The long time deprecated <code>MACRO()</code> and <code>action_get_macro</code> methods have been removed. Where possible, existing usages have been migrated over to core <a href="./../feature_macros">Macros</a>.</p><h3 id="create-a-build-error-if-no-bootloader-is-specified-16181" tabindex="-1">Create a build error if no bootloader is specified (<a href="https://github.com/qmk/qmk_firmware/pull/16181" target="_blank" rel="noreferrer">#16181</a>) <a class="header-anchor" href="#create-a-build-error-if-no-bootloader-is-specified-16181" aria-label="Permalink to "Create a build error if no bootloader is specified ([#16181](https://github.com/qmk/qmk_firmware/pull/16181))""></a></h3><p>Bootloader configuration is no longer assumed. Keyboards must now set either:</p><ul><li><code>BOOTLOADER</code> within <code>rules.mk</code></li><li><code>bootloader</code> within <code>info.json</code></li></ul><h3 id="rename-adafruitble-to-bluefruitle-16127" tabindex="-1">Rename <code>AdafruitBLE</code> to <code>BluefruitLE</code> (<a href="https://github.com/qmk/qmk_firmware/pull/16127" target="_blank" rel="noreferrer">#16127</a>) <a class="header-anchor" href="#rename-adafruitble-to-bluefruitle-16127" aria-label="Permalink to "Rename `AdafruitBLE` to `BluefruitLE` ([#16127](https://github.com/qmk/qmk_firmware/pull/16127))""></a></h3><p>In preparation of future bluetooth work, the <code>AdafruitBLE</code> integration has been renamed to allow potential for any other Adafruit BLE products.</p><h3 id="updated-keyboard-codebases" tabindex="-1">Updated Keyboard Codebases <a class="header-anchor" href="#updated-keyboard-codebases" aria-label="Permalink to "Updated Keyboard Codebases {#updated-keyboard-codebases}""></a></h3><p>The following keyboards have had their source moved within QMK:</p><table><thead><tr><th>Old Keyboard Name</th><th>New Keyboard Name</th></tr></thead><tbody><tr><td>6ball</td><td>maple_computing/6ball</td></tr><tr><td>7skb</td><td>salicylic_acid3/7skb</td></tr><tr><td>7splus</td><td>salicylic_acid3/7splus</td></tr><tr><td>acr60</td><td>mechkeys/acr60</td></tr><tr><td>adalyn</td><td>tominabox1/adalyn</td></tr><tr><td>ajisai74</td><td>salicylic_acid3/ajisai74</td></tr><tr><td>aleth42</td><td>25keys/aleth42</td></tr><tr><td>alicia_cook</td><td>ibnuda/alicia_cook</td></tr><tr><td>allison_numpad</td><td>prototypist/allison_numpad</td></tr><tr><td>allison</td><td>prototypist/allison</td></tr><tr><td>alu84</td><td>mechkeys/alu84</td></tr><tr><td>angel17</td><td>kakunpc/angel17</td></tr><tr><td>angel64/alpha</td><td>kakunpc/angel64/alpha</td></tr><tr><td>angel64/rev1</td><td>kakunpc/angel64/rev1</td></tr><tr><td>arch_36</td><td>obosob/arch_36</td></tr><tr><td>bakeneko60</td><td>kkatano/bakeneko60</td></tr><tr><td>bakeneko65/rev2</td><td>kkatano/bakeneko65/rev2</td></tr><tr><td>bakeneko65/rev3</td><td>kkatano/bakeneko65/rev3</td></tr><tr><td>bakeneko80</td><td>kkatano/bakeneko80</td></tr><tr><td>barleycorn</td><td>yiancardesigns/barleycorn</td></tr><tr><td>bat43/rev1</td><td>dailycraft/bat43/rev1</td></tr><tr><td>bat43/rev2</td><td>dailycraft/bat43/rev2</td></tr><tr><td>bigseries/1key</td><td>woodkeys/bigseries/1key</td></tr><tr><td>bigseries/2key</td><td>woodkeys/bigseries/2key</td></tr><tr><td>bigseries/3key</td><td>woodkeys/bigseries/3key</td></tr><tr><td>bigseries/4key</td><td>woodkeys/bigseries/4key</td></tr><tr><td>bkf</td><td>drhigsby/bkf</td></tr><tr><td>business_card/alpha</td><td>kakunpc/business_card/alpha</td></tr><tr><td>business_card/beta</td><td>kakunpc/business_card/beta</td></tr><tr><td>butterstick</td><td>gboards/butterstick</td></tr><tr><td>c39</td><td>maple_computing/c39</td></tr><tr><td>cassette42</td><td>25keys/cassette42</td></tr><tr><td>chidori</td><td>kagizaraya/chidori</td></tr><tr><td>chili</td><td>ydkb/chili</td></tr><tr><td>chimera_ergo</td><td>glenpickle/chimera_ergo</td></tr><tr><td>chimera_ls</td><td>glenpickle/chimera_ls</td></tr><tr><td>chimera_ortho</td><td>glenpickle/chimera_ortho</td></tr><tr><td>chimera_ortho_plus</td><td>glenpickle/chimera_ortho_plus</td></tr><tr><td>choco60</td><td>recompile_keys/choco60</td></tr><tr><td>choc_taro</td><td>kakunpc/choc_taro</td></tr><tr><td>christmas_tree</td><td>maple_computing/christmas_tree</td></tr><tr><td>claw44/rev1</td><td>dailycraft/claw44/rev1</td></tr><tr><td>cocoa40</td><td>recompile_keys/cocoa40</td></tr><tr><td>comet46</td><td>satt/comet46</td></tr><tr><td>cu24</td><td>capsunlocked/cu24</td></tr><tr><td>cu75</td><td>capsunlocked/cu75</td></tr><tr><td>cu80</td><td>capsunlocked/cu80/v1</td></tr><tr><td>delilah</td><td>rainkeebs/delilah</td></tr><tr><td>diverge3</td><td>unikeyboard/diverge3</td></tr><tr><td>divergetm2</td><td>unikeyboard/divergetm2</td></tr><tr><td>dozen0</td><td>yynmt/dozen0</td></tr><tr><td>dubba175</td><td>drhigsby/dubba175</td></tr><tr><td>eggman</td><td>qpockets/eggman</td></tr><tr><td>ergo42</td><td>biacco42/ergo42</td></tr><tr><td>ergoarrows</td><td>salicylic_acid3/ergoarrows</td></tr><tr><td>ergodash/mini</td><td>omkbd/ergodash/mini</td></tr><tr><td>ergodash/rev1</td><td>omkbd/ergodash/rev1</td></tr><tr><td>ergodox_infinity</td><td>input_club/ergodox_infinity</td></tr><tr><td>ergotaco</td><td>gboards/ergotaco</td></tr><tr><td>espectro</td><td>mechkeys/espectro</td></tr><tr><td>felix</td><td>unikeyboard/felix</td></tr><tr><td>four_banger</td><td>bpiphany/four_banger</td></tr><tr><td>freyr</td><td>hnahkb/freyr</td></tr><tr><td>geminate60</td><td>weirdo/geminate60</td></tr><tr><td>georgi</td><td>gboards/georgi</td></tr><tr><td>gergo</td><td>gboards/gergo</td></tr><tr><td>getta25</td><td>salicylic_acid3/getta25</td></tr><tr><td>gingham</td><td>yiancardesigns/gingham</td></tr><tr><td>gurindam</td><td>ibnuda/gurindam</td></tr><tr><td>halberd</td><td>kagizaraya/halberd</td></tr><tr><td>hecomi/alpha</td><td>takashiski/hecomi/alpha</td></tr><tr><td>hid_liber</td><td>bpiphany/hid_liber</td></tr><tr><td>id67/default_rgb</td><td>idobao/id67/default_rgb</td></tr><tr><td>id67/rgb</td><td>idobao/id67/rgb</td></tr><tr><td>id80</td><td>idobao/id80/v1</td></tr><tr><td>id87</td><td>idobao/id87/v1</td></tr><tr><td>idobo</td><td>idobao/id75/v1</td></tr><tr><td>infinity60</td><td>input_club/infinity60</td></tr><tr><td>ivy/rev1</td><td>maple_computing/ivy/rev1</td></tr><tr><td>jisplit89</td><td>salicylic_acid3/jisplit89</td></tr><tr><td>jnao</td><td>maple_computing/jnao</td></tr><tr><td>just60</td><td>ydkb/just60</td></tr><tr><td>kagamidget</td><td>yynmt/kagamidget</td></tr><tr><td>kelowna/rgb64</td><td>weirdo/kelowna/rgb64</td></tr><tr><td>kprepublic/bm65hsrgb_iso</td><td>kprepublic/bm65hsrgb_iso/rev1</td></tr><tr><td>kprepublic/bm68hsrgb</td><td>kprepublic/bm68hsrgb/rev1</td></tr><tr><td>k_type</td><td>input_club/k_type</td></tr><tr><td>latin17rgb</td><td>latincompass/latin17rgb</td></tr><tr><td>latin47ble</td><td>latincompass/latin47ble</td></tr><tr><td>latin60rgb</td><td>latincompass/latin60rgb</td></tr><tr><td>latin64ble</td><td>latincompass/latin64ble</td></tr><tr><td>latin6rgb</td><td>latincompass/latin6rgb</td></tr><tr><td>latinpadble</td><td>latincompass/latinpadble</td></tr><tr><td>latinpad</td><td>latincompass/latinpad</td></tr><tr><td>launchpad/rev1</td><td>maple_computing/launchpad/rev1</td></tr><tr><td>lck75</td><td>lyso1/lck75</td></tr><tr><td>le_chiffre</td><td>tominabox1/le_chiffre</td></tr><tr><td>lefishe</td><td>lyso1/lefishe</td></tr><tr><td>lets_split_eh/eh</td><td>maple_computing/lets_split_eh/eh</td></tr><tr><td>ls_60</td><td>weirdo/ls_60</td></tr><tr><td>m3n3van</td><td>matthewdias/m3n3van</td></tr><tr><td>mechmini/v1</td><td>mechkeys/mechmini/v1</td></tr><tr><td>mechmini/v2</td><td>mechkeys/mechmini/v2</td></tr><tr><td>meira</td><td>woodkeys/meira</td></tr><tr><td>meishi2</td><td>biacco42/meishi2</td></tr><tr><td>meishi</td><td>biacco42/meishi</td></tr><tr><td>minidox/rev1</td><td>maple_computing/minidox/rev1</td></tr><tr><td>minim</td><td>matthewdias/minim</td></tr><tr><td>mio</td><td>recompile_keys/mio</td></tr><tr><td>model_v</td><td>matthewdias/model_v</td></tr><tr><td>montex</td><td>idobao/montex/v1</td></tr><tr><td>nafuda</td><td>salicylic_acid3/nafuda</td></tr><tr><td>naiping/np64</td><td>weirdo/naiping/np64</td></tr><tr><td>naiping/nphhkb</td><td>weirdo/naiping/nphhkb</td></tr><tr><td>naiping/npminila</td><td>weirdo/naiping/npminila</td></tr><tr><td>naked48</td><td>salicylic_acid3/naked48</td></tr><tr><td>naked60</td><td>salicylic_acid3/naked60</td></tr><tr><td>naked64</td><td>salicylic_acid3/naked64</td></tr><tr><td>namecard2x4</td><td>takashiski/namecard2x4</td></tr><tr><td>nebula12</td><td>spaceholdings/nebula12</td></tr><tr><td>nebula68b</td><td>spaceholdings/nebula68b</td></tr><tr><td>nebula68</td><td>spaceholdings/nebula68</td></tr><tr><td>niu_mini</td><td>kbdfans/niu_mini</td></tr><tr><td>nk1</td><td>novelkeys/nk1</td></tr><tr><td>nk65</td><td>novelkeys/nk65</td></tr><tr><td>nk87</td><td>novelkeys/nk87</td></tr><tr><td>nknl7en</td><td>salicylic_acid3/nknl7en</td></tr><tr><td>nknl7jp</td><td>salicylic_acid3/nknl7jp</td></tr><tr><td>nomu30</td><td>recompile_keys/nomu30</td></tr><tr><td>novelpad</td><td>novelkeys/novelpad</td></tr><tr><td>ogurec</td><td>drhigsby/ogurec</td></tr><tr><td>otaku_split/rev0</td><td>takashiski/otaku_split/rev0</td></tr><tr><td>otaku_split/rev1</td><td>takashiski/otaku_split/rev1</td></tr><tr><td>owl8</td><td>dailycraft/owl8</td></tr><tr><td>packrat</td><td>drhigsby/packrat</td></tr><tr><td>pistachio_mp</td><td>rate/pistachio_mp</td></tr><tr><td>pistachio_pro</td><td>rate/pistachio_pro</td></tr><tr><td>pistachio</td><td>rate/pistachio</td></tr><tr><td>plexus75</td><td>checkerboards/plexus75</td></tr><tr><td>pursuit40</td><td>checkerboards/pursuit40</td></tr><tr><td>qaz</td><td>tominabox1/qaz</td></tr><tr><td>quark</td><td>checkerboards/quark</td></tr><tr><td>rabbit_capture_plan</td><td>kakunpc/rabbit_capture_plan</td></tr><tr><td>rainkeeb</td><td>rainkeebs/rainkeeb</td></tr><tr><td>reviung33</td><td>reviung/reviung33</td></tr><tr><td>reviung34</td><td>reviung/reviung34</td></tr><tr><td>reviung39</td><td>reviung/reviung39</td></tr><tr><td>reviung41</td><td>reviung/reviung41</td></tr><tr><td>reviung53</td><td>reviung/reviung53</td></tr><tr><td>reviung5</td><td>reviung/reviung5</td></tr><tr><td>reviung61</td><td>reviung/reviung61</td></tr><tr><td>runner3680/3x6</td><td>omkbd/runner3680/3x6</td></tr><tr><td>runner3680/3x7</td><td>omkbd/runner3680/3x7</td></tr><tr><td>runner3680/3x8</td><td>omkbd/runner3680/3x8</td></tr><tr><td>runner3680/4x6</td><td>omkbd/runner3680/4x6</td></tr><tr><td>runner3680/4x7</td><td>omkbd/runner3680/4x7</td></tr><tr><td>runner3680/4x8</td><td>omkbd/runner3680/4x8</td></tr><tr><td>runner3680/5x6_5x8</td><td>omkbd/runner3680/5x6_5x8</td></tr><tr><td>runner3680/5x6</td><td>omkbd/runner3680/5x6</td></tr><tr><td>runner3680/5x7</td><td>omkbd/runner3680/5x7</td></tr><tr><td>runner3680/5x8</td><td>omkbd/runner3680/5x8</td></tr><tr><td>scarletbandana</td><td>woodkeys/scarletbandana</td></tr><tr><td>scythe</td><td>kagizaraya/scythe</td></tr><tr><td>seigaiha</td><td>yiancardesigns/seigaiha</td></tr><tr><td>setta21</td><td>salicylic_acid3/setta21</td></tr><tr><td>space_space/rev1</td><td>qpockets/space_space/rev1</td></tr><tr><td>space_space/rev2</td><td>qpockets/space_space/rev2</td></tr><tr><td>spiderisland/winry25tc</td><td>winry/winry25tc</td></tr><tr><td>splitreus62</td><td>nacly/splitreus62</td></tr><tr><td>squiggle/rev1</td><td>ibnuda/squiggle/rev1</td></tr><tr><td>standaside</td><td>edi/standaside</td></tr><tr><td>steal_this_keyboard</td><td>obosob/steal_this_keyboard</td></tr><tr><td>stella</td><td>hnahkb/stella</td></tr><tr><td>suihankey/alpha</td><td>kakunpc/suihankey/alpha</td></tr><tr><td>suihankey/rev1</td><td>kakunpc/suihankey/rev1</td></tr><tr><td>suihankey/split</td><td>kakunpc/suihankey/split</td></tr><tr><td>thedogkeyboard</td><td>kakunpc/thedogkeyboard</td></tr><tr><td>the_ruler</td><td>maple_computing/the_ruler</td></tr><tr><td>tiger910</td><td>weirdo/tiger910</td></tr><tr><td>treadstone32</td><td>marksard/treadstone32</td></tr><tr><td>treadstone48/rev1</td><td>marksard/treadstone48/rev1</td></tr><tr><td>treadstone48/rev2</td><td>marksard/treadstone48/rev2</td></tr><tr><td>txuu</td><td>matthewdias/txuu</td></tr><tr><td>ua62</td><td>nacly/ua62</td></tr><tr><td>underscore33/rev1</td><td>tominabox1/underscore33/rev1</td></tr><tr><td>underscore33/rev2</td><td>tominabox1/underscore33/rev2</td></tr><tr><td>vn66</td><td>hnahkb/vn66</td></tr><tr><td>wallaby</td><td>kkatano/wallaby</td></tr><tr><td>wanten</td><td>qpockets/wanten</td></tr><tr><td>whitefox</td><td>input_club/whitefox</td></tr><tr><td>wings42/rev1</td><td>dailycraft/wings42/rev1</td></tr><tr><td>wings42/rev1_extkeys</td><td>dailycraft/wings42/rev1_extkeys</td></tr><tr><td>wings42/rev2</td><td>dailycraft/wings42/rev2</td></tr><tr><td>yasui</td><td>rainkeebs/yasui</td></tr><tr><td>yd60mq</td><td>ymdk/yd60mq</td></tr><tr><td>yd68</td><td>ydkb/yd68</td></tr><tr><td>ymd75</td><td>ymdk/ymd75</td></tr><tr><td>ymd96</td><td>ymdk/ymd96</td></tr><tr><td>ymdk_np21</td><td>ymdk/np21</td></tr><tr><td>yurei</td><td>kkatano/yurei</td></tr><tr><td>zinc</td><td>25keys/zinc</td></tr><tr><td>zinc/rev1</td><td>25keys/zinc/rev1</td></tr><tr><td>zinc/reva</td><td>25keys/zinc/reva</td></tr></tbody></table><h2 id="notable-core" tabindex="-1">Notable core changes <a class="header-anchor" href="#notable-core" aria-label="Permalink to "Notable core changes {#notable-core}""></a></h2><h3 id="new-mcu-support" tabindex="-1">New MCU Support <a class="header-anchor" href="#new-mcu-support" aria-label="Permalink to "New MCU Support {#new-mcu-support}""></a></h3><p>Building on previous cycles, QMK firmware picked up support for a couple extra MCU variants:</p><ul><li>STM32L432</li><li>STM32L442</li></ul><h3 id="new-drivers" tabindex="-1">New Drivers <a class="header-anchor" href="#new-drivers" aria-label="Permalink to "New Drivers""></a></h3><p>QMK now has core-supplied support for the following device peripherals:</p><h4 id="led" tabindex="-1">LED <a class="header-anchor" href="#led" aria-label="Permalink to "LED""></a></h4><ul><li>IS31FL3742A</li><li>IS31FL3743A</li><li>IS31FL3745</li><li>IS31FL3746A</li></ul><h4 id="gpio" tabindex="-1">GPIO <a class="header-anchor" href="#gpio" aria-label="Permalink to "GPIO""></a></h4><ul><li>SN74x138</li><li>mcp23018</li></ul><hr><h2 id="full-changelist" tabindex="-1">Full changelist <a class="header-anchor" href="#full-changelist" aria-label="Permalink to "Full changelist""></a></h2><p>Core:</p><ul><li>Initial pass at data driven new-keyboard subcommand (<a href="https://github.com/qmk/qmk_firmware/pull/12795" target="_blank" rel="noreferrer">#12795</a>)</li><li>Don't send keyboard reports that propagate no changes to the host (<a href="https://github.com/qmk/qmk_firmware/pull/14065" target="_blank" rel="noreferrer">#14065</a>)</li><li>Custom matrix lite support for split keyboards (<a href="https://github.com/qmk/qmk_firmware/pull/14674" target="_blank" rel="noreferrer">#14674</a>)</li><li>Add sym_defer_pr debouncer type (<a href="https://github.com/qmk/qmk_firmware/pull/14948" target="_blank" rel="noreferrer">#14948</a>)</li><li>Add RGB matrix & LED Matrix support for IS31FL3742A, IS31FL3743A, IS31FL3745, IS31FL3746A (<a href="https://github.com/qmk/qmk_firmware/pull/14989" target="_blank" rel="noreferrer">#14989</a>)</li><li>New combo configuration options (<a href="https://github.com/qmk/qmk_firmware/pull/15083" target="_blank" rel="noreferrer">#15083</a>)</li><li>IS31FL3733 driver for LED Matrix (<a href="https://github.com/qmk/qmk_firmware/pull/15088" target="_blank" rel="noreferrer">#15088</a>)</li><li>Add open-drain GPIO support. (<a href="https://github.com/qmk/qmk_firmware/pull/15282" target="_blank" rel="noreferrer">#15282</a>)</li><li>Make (un)register code functions weak (<a href="https://github.com/qmk/qmk_firmware/pull/15285" target="_blank" rel="noreferrer">#15285</a>)</li><li>Split support for pointing devices. (<a href="https://github.com/qmk/qmk_firmware/pull/15304" target="_blank" rel="noreferrer">#15304</a>)</li><li>Added cancel_key_lock function (<a href="https://github.com/qmk/qmk_firmware/pull/15321" target="_blank" rel="noreferrer">#15321</a>)</li><li>Remove matrix_is_modified() and debounce_is_active() (<a href="https://github.com/qmk/qmk_firmware/pull/15349" target="_blank" rel="noreferrer">#15349</a>)</li><li>Change default USB Polling rate to 1kHz (<a href="https://github.com/qmk/qmk_firmware/pull/15352" target="_blank" rel="noreferrer">#15352</a>)</li><li>Implement MAGIC_TOGGLE_CONTROL_CAPSLOCK (<a href="https://github.com/qmk/qmk_firmware/pull/15368" target="_blank" rel="noreferrer">#15368</a>)</li><li>Tidy up existing i2c_master implementations (<a href="https://github.com/qmk/qmk_firmware/pull/15376" target="_blank" rel="noreferrer">#15376</a>)</li><li>Generalize Unicode defines (<a href="https://github.com/qmk/qmk_firmware/pull/15409" target="_blank" rel="noreferrer">#15409</a>)</li><li>Added external spi flash driver. (<a href="https://github.com/qmk/qmk_firmware/pull/15419" target="_blank" rel="noreferrer">#15419</a>)</li><li>Remove Deprecated USB Polling comment from vusb.c (<a href="https://github.com/qmk/qmk_firmware/pull/15420" target="_blank" rel="noreferrer">#15420</a>)</li><li>Expand rotational range for PMW3360 Optical Sensor (<a href="https://github.com/qmk/qmk_firmware/pull/15431" target="_blank" rel="noreferrer">#15431</a>)</li><li>ChibiOS SVN mirror script update (<a href="https://github.com/qmk/qmk_firmware/pull/15435" target="_blank" rel="noreferrer">#15435</a>)</li><li>Refactor <code>bootloader_jump()</code> implementations (<a href="https://github.com/qmk/qmk_firmware/pull/15450" target="_blank" rel="noreferrer">#15450</a>)</li><li>added missing audio_off_user() callback (<a href="https://github.com/qmk/qmk_firmware/pull/15457" target="_blank" rel="noreferrer">#15457</a>)</li><li>Migrate serial_uart usages to UART driver (<a href="https://github.com/qmk/qmk_firmware/pull/15479" target="_blank" rel="noreferrer">#15479</a>)</li><li>Migrate RN42 to UART driver and refactor (<a href="https://github.com/qmk/qmk_firmware/pull/15492" target="_blank" rel="noreferrer">#15492</a>)</li><li>pwm3360 driver cleanup and diff reduction to adns9800 (<a href="https://github.com/qmk/qmk_firmware/pull/15559" target="_blank" rel="noreferrer">#15559</a>)</li><li>Advanced deferred_exec for core-side code. (<a href="https://github.com/qmk/qmk_firmware/pull/15579" target="_blank" rel="noreferrer">#15579</a>)</li><li>Adjust tap_code16 to account for TAP_HOLD_CAPS_DELAY (<a href="https://github.com/qmk/qmk_firmware/pull/15635" target="_blank" rel="noreferrer">#15635</a>)</li><li>Slight tidy up of keyboard task loop (<a href="https://github.com/qmk/qmk_firmware/pull/15725" target="_blank" rel="noreferrer">#15725</a>)</li><li>Unify the key up/down behaviour of RGB keycodes (<a href="https://github.com/qmk/qmk_firmware/pull/15730" target="_blank" rel="noreferrer">#15730</a>)</li><li>Add PMW3389 optical sensor Support (Updated) (<a href="https://github.com/qmk/qmk_firmware/pull/15740" target="_blank" rel="noreferrer">#15740</a>)</li><li>ChibiOS: add support for HID Programmable Buttons (<a href="https://github.com/qmk/qmk_firmware/pull/15787" target="_blank" rel="noreferrer">#15787</a>)</li><li>ChibiOS: shorten USB disconnect state on boot to 50ms (<a href="https://github.com/qmk/qmk_firmware/pull/15805" target="_blank" rel="noreferrer">#15805</a>)</li><li>Add init function to clear previous matrix effect (<a href="https://github.com/qmk/qmk_firmware/pull/15815" target="_blank" rel="noreferrer">#15815</a>)</li><li>Optimize initialization of PMW3360 Sensor (<a href="https://github.com/qmk/qmk_firmware/pull/15821" target="_blank" rel="noreferrer">#15821</a>)</li><li>Add Pixel Flow RGB matrix effect (<a href="https://github.com/qmk/qmk_firmware/pull/15829" target="_blank" rel="noreferrer">#15829</a>)</li><li>PMW3389 Revert Firmware load during Initilization (<a href="https://github.com/qmk/qmk_firmware/pull/15859" target="_blank" rel="noreferrer">#15859</a>)</li><li>Combo <code>TAP_CODE_DELAY</code> and <code>clear_weak_mods</code> (<a href="https://github.com/qmk/qmk_firmware/pull/15866" target="_blank" rel="noreferrer">#15866</a>)</li><li>Relocate matrix_scan_quantum tasks (<a href="https://github.com/qmk/qmk_firmware/pull/15882" target="_blank" rel="noreferrer">#15882</a>)</li><li>Adjust mouse key defaults (<a href="https://github.com/qmk/qmk_firmware/pull/15883" target="_blank" rel="noreferrer">#15883</a>)</li><li>RGB Matrix: Reload from EEPROM (<a href="https://github.com/qmk/qmk_firmware/pull/15923" target="_blank" rel="noreferrer">#15923</a>)</li><li>Enable a default task throttle for split pointing. (<a href="https://github.com/qmk/qmk_firmware/pull/15925" target="_blank" rel="noreferrer">#15925</a>)</li><li>Move mcp23018 driver to core (<a href="https://github.com/qmk/qmk_firmware/pull/15944" target="_blank" rel="noreferrer">#15944</a>)</li><li>Relocate matrix_init_quantum content (<a href="https://github.com/qmk/qmk_firmware/pull/15953" target="_blank" rel="noreferrer">#15953</a>)</li><li>Align location of some host led logic (<a href="https://github.com/qmk/qmk_firmware/pull/15954" target="_blank" rel="noreferrer">#15954</a>)</li><li>Rename some Quantum keycodes (<a href="https://github.com/qmk/qmk_firmware/pull/15968" target="_blank" rel="noreferrer">#15968</a>)</li><li>Migrate more makefile utilities to builddefs sub-directory (<a href="https://github.com/qmk/qmk_firmware/pull/16002" target="_blank" rel="noreferrer">#16002</a>)</li><li>Various Makefile optimisations (<a href="https://github.com/qmk/qmk_firmware/pull/16015" target="_blank" rel="noreferrer">#16015</a>)</li><li>Add support for STM32L432, STM32L442. (<a href="https://github.com/qmk/qmk_firmware/pull/16016" target="_blank" rel="noreferrer">#16016</a>)</li><li>EEPROM refactor: remove <code>eeprom_teensy.c</code> by default, use transient instead (<a href="https://github.com/qmk/qmk_firmware/pull/16020" target="_blank" rel="noreferrer">#16020</a>)</li><li>Deprecate Split Transaction status field (<a href="https://github.com/qmk/qmk_firmware/pull/16023" target="_blank" rel="noreferrer">#16023</a>)</li><li>Rip out old macro and action_function system (<a href="https://github.com/qmk/qmk_firmware/pull/16025" target="_blank" rel="noreferrer">#16025</a>)</li><li>Add a script that simplifies running commands under docker. (<a href="https://github.com/qmk/qmk_firmware/pull/16028" target="_blank" rel="noreferrer">#16028</a>)</li><li>Add support for Q-series on the ckled2001 LED driver (<a href="https://github.com/qmk/qmk_firmware/pull/16051" target="_blank" rel="noreferrer">#16051</a>)</li><li>Remove unused suspend_idle (<a href="https://github.com/qmk/qmk_firmware/pull/16063" target="_blank" rel="noreferrer">#16063</a>)</li><li>Initial migration of suspend callbacks (<a href="https://github.com/qmk/qmk_firmware/pull/16067" target="_blank" rel="noreferrer">#16067</a>)</li><li>Add layout change callbacks to VIA (<a href="https://github.com/qmk/qmk_firmware/pull/16087" target="_blank" rel="noreferrer">#16087</a>)</li><li>Rename <code>AdafruitBLE</code> to <code>BluefruitLE</code> (<a href="https://github.com/qmk/qmk_firmware/pull/16127" target="_blank" rel="noreferrer">#16127</a>)</li><li>Update outputselect to use platform connected state API (<a href="https://github.com/qmk/qmk_firmware/pull/16185" target="_blank" rel="noreferrer">#16185</a>)</li><li>Remove default pointing device driver. (<a href="https://github.com/qmk/qmk_firmware/pull/16190" target="_blank" rel="noreferrer">#16190</a>)</li><li>Add SN74x138 demultiplexer driver (<a href="https://github.com/qmk/qmk_firmware/pull/16217" target="_blank" rel="noreferrer">#16217</a>)</li><li>Standardise error output. (<a href="https://github.com/qmk/qmk_firmware/pull/16220" target="_blank" rel="noreferrer">#16220</a>)</li><li>Followup to #16220, more test error output. (<a href="https://github.com/qmk/qmk_firmware/pull/16221" target="_blank" rel="noreferrer">#16221</a>)</li><li>Misc size regression script improvements. (<a href="https://github.com/qmk/qmk_firmware/pull/16268" target="_blank" rel="noreferrer">#16268</a>)</li><li>Align existing pca9555 driver to better match mcp23018 API (<a href="https://github.com/qmk/qmk_firmware/pull/16277" target="_blank" rel="noreferrer">#16277</a>)</li><li>Size checks print out target firmware file instead (<a href="https://github.com/qmk/qmk_firmware/pull/16290" target="_blank" rel="noreferrer">#16290</a>)</li></ul><p>CLI:</p><ul><li><code>develop</code> changelog generator: use the PR title instead (<a href="https://github.com/qmk/qmk_firmware/pull/15537" target="_blank" rel="noreferrer">#15537</a>)</li><li><code>develop</code> changelog generator: skip code formatting in listing (<a href="https://github.com/qmk/qmk_firmware/pull/16215" target="_blank" rel="noreferrer">#16215</a>)</li></ul><p>Keyboards:</p><ul><li>Durgod: Increase scan rate by using wait_us timer (<a href="https://github.com/qmk/qmk_firmware/pull/14091" target="_blank" rel="noreferrer">#14091</a>)</li><li>Add another GMMK Pro ANSI Keymap with custom RGB. (<a href="https://github.com/qmk/qmk_firmware/pull/14243" target="_blank" rel="noreferrer">#14243</a>)</li><li>Parse USB device version BCD (<a href="https://github.com/qmk/qmk_firmware/pull/14580" target="_blank" rel="noreferrer">#14580</a>)</li><li>Add vitoni keymap for GMMK Pro (ISO) (<a href="https://github.com/qmk/qmk_firmware/pull/15006" target="_blank" rel="noreferrer">#15006</a>)</li><li>Move bm65hsrgb_iso and bm68hsrgb to rev1/ to prepare for updates to the boards (<a href="https://github.com/qmk/qmk_firmware/pull/15132" target="_blank" rel="noreferrer">#15132</a>)</li><li>Convert ergoinu to SPLIT_KEYBOARD (<a href="https://github.com/qmk/qmk_firmware/pull/15305" target="_blank" rel="noreferrer">#15305</a>)</li><li>Convert not_so_minidox to SPLIT_KEYBOARD (<a href="https://github.com/qmk/qmk_firmware/pull/15306" target="_blank" rel="noreferrer">#15306</a>)</li><li>Added new handwired keyboard Wakizashi 40 (<a href="https://github.com/qmk/qmk_firmware/pull/15336" target="_blank" rel="noreferrer">#15336</a>)</li><li>Convert ai03/orbit to SPLIT_KEYBOARD (<a href="https://github.com/qmk/qmk_firmware/pull/15340" target="_blank" rel="noreferrer">#15340</a>)</li><li>Remove manual enable of LTO within user keymaps (<a href="https://github.com/qmk/qmk_firmware/pull/15378" target="_blank" rel="noreferrer">#15378</a>)</li><li>Move to organization folder (<a href="https://github.com/qmk/qmk_firmware/pull/15481" target="_blank" rel="noreferrer">#15481</a>)</li><li>Convert some more boards to Matrix Lite (<a href="https://github.com/qmk/qmk_firmware/pull/15489" target="_blank" rel="noreferrer">#15489</a>)</li><li>Organize Reviung boards into a directory (<a href="https://github.com/qmk/qmk_firmware/pull/15636" target="_blank" rel="noreferrer">#15636</a>)</li><li>move winry25tc to winry/ (<a href="https://github.com/qmk/qmk_firmware/pull/15637" target="_blank" rel="noreferrer">#15637</a>)</li><li>Rename ymdk_np21 to np21 + move to ymdk vendor folder (<a href="https://github.com/qmk/qmk_firmware/pull/15641" target="_blank" rel="noreferrer">#15641</a>)</li><li>move ymd96 to ymdk vendor folder (<a href="https://github.com/qmk/qmk_firmware/pull/15643" target="_blank" rel="noreferrer">#15643</a>)</li><li>move ymd75 to ymdk vendor folder (<a href="https://github.com/qmk/qmk_firmware/pull/15645" target="_blank" rel="noreferrer">#15645</a>)</li><li>move yd60mq to ymdk vendor folder (<a href="https://github.com/qmk/qmk_firmware/pull/15647" target="_blank" rel="noreferrer">#15647</a>)</li><li>rename idobo to idobao/id75, move to vendor folder (<a href="https://github.com/qmk/qmk_firmware/pull/15661" target="_blank" rel="noreferrer">#15661</a>)</li><li>move ID67 to IDOBAO vendor folder (<a href="https://github.com/qmk/qmk_firmware/pull/15662" target="_blank" rel="noreferrer">#15662</a>)</li><li>move ID80 to IDOBAO vendor folder (<a href="https://github.com/qmk/qmk_firmware/pull/15665" target="_blank" rel="noreferrer">#15665</a>)</li><li>move ID87 to IDOBAO vendor folder (<a href="https://github.com/qmk/qmk_firmware/pull/15667" target="_blank" rel="noreferrer">#15667</a>)</li><li>move montex to IDOBAO vendor folder (<a href="https://github.com/qmk/qmk_firmware/pull/15668" target="_blank" rel="noreferrer">#15668</a>)</li><li>move @yangdigi 's keyboards to a YDKB folder (<a href="https://github.com/qmk/qmk_firmware/pull/15681" target="_blank" rel="noreferrer">#15681</a>)</li><li>move @kkatano 's keyboards to kkatano user folder (<a href="https://github.com/qmk/qmk_firmware/pull/15684" target="_blank" rel="noreferrer">#15684</a>)</li><li>Sol 3 Keyboard from RGBKB (<a href="https://github.com/qmk/qmk_firmware/pull/15687" target="_blank" rel="noreferrer">#15687</a>)</li><li>move cu24, cu75, cu80/v1 into capsunlocked folder (<a href="https://github.com/qmk/qmk_firmware/pull/15758" target="_blank" rel="noreferrer">#15758</a>)</li><li>move mechkeys keyboards into the mechkeys/ vendor folder (<a href="https://github.com/qmk/qmk_firmware/pull/15760" target="_blank" rel="noreferrer">#15760</a>)</li><li>move @lyso1 's boards into lyso1/ (<a href="https://github.com/qmk/qmk_firmware/pull/15767" target="_blank" rel="noreferrer">#15767</a>)</li><li>move prototypist boards into vendor folder (<a href="https://github.com/qmk/qmk_firmware/pull/15780" target="_blank" rel="noreferrer">#15780</a>)</li><li>move @yiancar 's boards into yiancardesigns/ (<a href="https://github.com/qmk/qmk_firmware/pull/15781" target="_blank" rel="noreferrer">#15781</a>)</li><li>move novelkeys keyboards to vendor folder (<a href="https://github.com/qmk/qmk_firmware/pull/15783" target="_blank" rel="noreferrer">#15783</a>)</li><li>move @weirdo-f 's keyboards into weirdo/ (<a href="https://github.com/qmk/qmk_firmware/pull/15785" target="_blank" rel="noreferrer">#15785</a>)</li><li>move @marksard 's boards to marksard/ (<a href="https://github.com/qmk/qmk_firmware/pull/15786" target="_blank" rel="noreferrer">#15786</a>)</li><li>move input club keyboards into vendor folder (<a href="https://github.com/qmk/qmk_firmware/pull/15788" target="_blank" rel="noreferrer">#15788</a>)</li><li>move @monksoffunk 's boards into 25keys/ (<a href="https://github.com/qmk/qmk_firmware/pull/15789" target="_blank" rel="noreferrer">#15789</a>)</li><li>move @Salicylic-acid3 's keyboards to salicylic-acid3/ (<a href="https://github.com/qmk/qmk_firmware/pull/15791" target="_blank" rel="noreferrer">#15791</a>)</li><li>move @rainkeebs 's keyboards to rainkeebs/ (<a href="https://github.com/qmk/qmk_firmware/pull/15797" target="_blank" rel="noreferrer">#15797</a>)</li><li>move standaside into edi/ (<a href="https://github.com/qmk/qmk_firmware/pull/15798" target="_blank" rel="noreferrer">#15798</a>)</li><li>move @obosob 's boards into obosob/ (<a href="https://github.com/qmk/qmk_firmware/pull/15799" target="_blank" rel="noreferrer">#15799</a>)</li><li>move @nacly 's boards to nacly/ (<a href="https://github.com/qmk/qmk_firmware/pull/15801" target="_blank" rel="noreferrer">#15801</a>)</li><li>move @kakunpc 's keebs into kakunpc/ (<a href="https://github.com/qmk/qmk_firmware/pull/15814" target="_blank" rel="noreferrer">#15814</a>)</li><li>move @qpocket 's keyboards to qpocket/ (<a href="https://github.com/qmk/qmk_firmware/pull/15827" target="_blank" rel="noreferrer">#15827</a>)</li><li>BDN9 keymap (<a href="https://github.com/qmk/qmk_firmware/pull/15924" target="_blank" rel="noreferrer">#15924</a>)</li><li>move @matthewdias 's keebs into matthewdias/ (<a href="https://github.com/qmk/qmk_firmware/pull/15991" target="_blank" rel="noreferrer">#15991</a>)</li><li>move id80 and id75 to v1 to accommodate for id75 v2 and id80 v3 (<a href="https://github.com/qmk/qmk_firmware/pull/15992" target="_blank" rel="noreferrer">#15992</a>)</li><li>Remove <code>action_function()</code> from LFKeyboards boards (<a href="https://github.com/qmk/qmk_firmware/pull/15993" target="_blank" rel="noreferrer">#15993</a>)</li><li>move @latincompass (aka @18438880 , @haierwangwei2005)'s boards to /latincompass (<a href="https://github.com/qmk/qmk_firmware/pull/16039" target="_blank" rel="noreferrer">#16039</a>)</li><li>move g heavy industry boards into /gboards (<a href="https://github.com/qmk/qmk_firmware/pull/16040" target="_blank" rel="noreferrer">#16040</a>)</li><li>move @drhigsby 's boards into /drhigsby (<a href="https://github.com/qmk/qmk_firmware/pull/16041" target="_blank" rel="noreferrer">#16041</a>)</li><li>More keyboard rules.mk cleanups (<a href="https://github.com/qmk/qmk_firmware/pull/16044" target="_blank" rel="noreferrer">#16044</a>)</li><li>move @That-Canadian 's boards into /maple_computing (<a href="https://github.com/qmk/qmk_firmware/pull/16050" target="_blank" rel="noreferrer">#16050</a>)</li><li>move @takai 's keyboards into /recompile_keys (<a href="https://github.com/qmk/qmk_firmware/pull/16053" target="_blank" rel="noreferrer">#16053</a>)</li><li>move @satt99 's comet46 to satt/ (<a href="https://github.com/qmk/qmk_firmware/pull/16059" target="_blank" rel="noreferrer">#16059</a>)</li><li>move @ka2hiro 's boards into /kagizaraya (<a href="https://github.com/qmk/qmk_firmware/pull/16070" target="_blank" rel="noreferrer">#16070</a>)</li><li>move @GlenPickle 's chimera* boards into a folder (<a href="https://github.com/qmk/qmk_firmware/pull/16072" target="_blank" rel="noreferrer">#16072</a>)</li><li>move @yynmt 's boards into /yynmt (<a href="https://github.com/qmk/qmk_firmware/pull/16075" target="_blank" rel="noreferrer">#16075</a>)</li><li>move @Biacco42 's keebs into /biacco42 (<a href="https://github.com/qmk/qmk_firmware/pull/16080" target="_blank" rel="noreferrer">#16080</a>)</li><li>move unikeyboard boards to /unikeyboard (<a href="https://github.com/qmk/qmk_firmware/pull/16081" target="_blank" rel="noreferrer">#16081</a>)</li><li>move four_banger to bpiphany (<a href="https://github.com/qmk/qmk_firmware/pull/16082" target="_blank" rel="noreferrer">#16082</a>)</li><li>move @takashiski 's keebs into /takashiski (<a href="https://github.com/qmk/qmk_firmware/pull/16089" target="_blank" rel="noreferrer">#16089</a>)</li><li>move hid_liber to /bpiphany (<a href="https://github.com/qmk/qmk_firmware/pull/16091" target="_blank" rel="noreferrer">#16091</a>)</li><li>move spaceholdings boards into /spaceholdings (<a href="https://github.com/qmk/qmk_firmware/pull/16096" target="_blank" rel="noreferrer">#16096</a>)</li><li>move @7-rate 's keebs to /rate (<a href="https://github.com/qmk/qmk_firmware/pull/16099" target="_blank" rel="noreferrer">#16099</a>)</li><li>move @npspears 's boards into /checkerboards (<a href="https://github.com/qmk/qmk_firmware/pull/16100" target="_blank" rel="noreferrer">#16100</a>)</li><li>move @vuhopkep 's keebs into /hnahkb (<a href="https://github.com/qmk/qmk_firmware/pull/16102" target="_blank" rel="noreferrer">#16102</a>)</li><li>move @ibnuda 's keebs into /ibnuda (<a href="https://github.com/qmk/qmk_firmware/pull/16108" target="_blank" rel="noreferrer">#16108</a>)</li><li>move @tominabox1 's keebs into /tominabox1 (<a href="https://github.com/qmk/qmk_firmware/pull/16109" target="_blank" rel="noreferrer">#16109</a>)</li><li>move niu_mini to /kbdfans (<a href="https://github.com/qmk/qmk_firmware/pull/16112" target="_blank" rel="noreferrer">#16112</a>)</li><li>move woodkeys.click keyboards to /woodkeys (<a href="https://github.com/qmk/qmk_firmware/pull/16113" target="_blank" rel="noreferrer">#16113</a>)</li><li>move @omkbd 's boards to /omkbd (<a href="https://github.com/qmk/qmk_firmware/pull/16116" target="_blank" rel="noreferrer">#16116</a>)</li><li>Overhaul Tractyl Manuform (<a href="https://github.com/qmk/qmk_firmware/pull/16134" target="_blank" rel="noreferrer">#16134</a>)</li><li>Reduce firmware size for dztech/dz60rgb_wkl/v2_1:via (<a href="https://github.com/qmk/qmk_firmware/pull/16254" target="_blank" rel="noreferrer">#16254</a>)</li></ul><p>Keyboard fixes:</p><ul><li>Fix build failure for UT47 (<a href="https://github.com/qmk/qmk_firmware/pull/15483" target="_blank" rel="noreferrer">#15483</a>)</li><li>Update grs_70ec to use newer custom matrix (<a href="https://github.com/qmk/qmk_firmware/pull/15609" target="_blank" rel="noreferrer">#15609</a>)</li><li>fix compiler issue with Tractyl Manuform 4x6 (<a href="https://github.com/qmk/qmk_firmware/pull/15646" target="_blank" rel="noreferrer">#15646</a>)</li><li>Fix CI. (<a href="https://github.com/qmk/qmk_firmware/pull/15828" target="_blank" rel="noreferrer">#15828</a>)</li><li>Yet another bad <code>DEFAULT_FOLDER</code> fix. (<a href="https://github.com/qmk/qmk_firmware/pull/15904" target="_blank" rel="noreferrer">#15904</a>)</li><li>Fix build failures for <code>mschwingen/modelm</code> (<a href="https://github.com/qmk/qmk_firmware/pull/15987" target="_blank" rel="noreferrer">#15987</a>)</li><li><code>rocketboard_16</code>: Fix mismatched LUT sizes (<a href="https://github.com/qmk/qmk_firmware/pull/15997" target="_blank" rel="noreferrer">#15997</a>)</li><li>Fix erroneous SRC for Clueboard 66 hotswap (<a href="https://github.com/qmk/qmk_firmware/pull/16007" target="_blank" rel="noreferrer">#16007</a>)</li><li>Fix handwired/ms_sculpt_mobile default keymap (<a href="https://github.com/qmk/qmk_firmware/pull/16032" target="_blank" rel="noreferrer">#16032</a>)</li><li>Re-org Hillside folders as new model prep. Fix default keymap. (<a href="https://github.com/qmk/qmk_firmware/pull/16128" target="_blank" rel="noreferrer">#16128</a>)</li><li>Fix up default folder locations. Again. (<a href="https://github.com/qmk/qmk_firmware/pull/16135" target="_blank" rel="noreferrer">#16135</a>)</li><li>Sol3 rgb fix (<a href="https://github.com/qmk/qmk_firmware/pull/16157" target="_blank" rel="noreferrer">#16157</a>)</li><li>Add missing <code>BOOTLOADER</code> for a handful of boards (<a href="https://github.com/qmk/qmk_firmware/pull/16225" target="_blank" rel="noreferrer">#16225</a>)</li><li>Remove half implemented micronucleus bootloader support (<a href="https://github.com/qmk/qmk_firmware/pull/16252" target="_blank" rel="noreferrer">#16252</a>)</li><li>Fixup bootloaders. (<a href="https://github.com/qmk/qmk_firmware/pull/16256" target="_blank" rel="noreferrer">#16256</a>)</li><li>Fix idobao/id80/v3 compilation errors (<a href="https://github.com/qmk/qmk_firmware/pull/16280" target="_blank" rel="noreferrer">#16280</a>)</li><li>Remove parent-relative paths from keyboards. (<a href="https://github.com/qmk/qmk_firmware/pull/16282" target="_blank" rel="noreferrer">#16282</a>)</li><li>Bodge for helix build failures (<a href="https://github.com/qmk/qmk_firmware/pull/16376" target="_blank" rel="noreferrer">#16376</a>)</li></ul><p>Others:</p><ul><li>Add a clarification to an error message (<a href="https://github.com/qmk/qmk_firmware/pull/15207" target="_blank" rel="noreferrer">#15207</a>)</li><li>Clang-format tweaks (<a href="https://github.com/qmk/qmk_firmware/pull/15906" target="_blank" rel="noreferrer">#15906</a>)</li><li>Add example implementations for compatible MCUs list (<a href="https://github.com/qmk/qmk_firmware/pull/15935" target="_blank" rel="noreferrer">#15935</a>)</li><li>Add version.h to gitignore (<a href="https://github.com/qmk/qmk_firmware/pull/16222" target="_blank" rel="noreferrer">#16222</a>)</li><li>Update keyboard mapping for all moved boards this cycle (<a href="https://github.com/qmk/qmk_firmware/pull/16312" target="_blank" rel="noreferrer">#16312</a>)</li><li>Align docs to new-keyboard behaviour (<a href="https://github.com/qmk/qmk_firmware/pull/16357" target="_blank" rel="noreferrer">#16357</a>)</li><li>Align new-keyboard with recent schema updates (<a href="https://github.com/qmk/qmk_firmware/pull/16378" target="_blank" rel="noreferrer">#16378</a>)</li></ul><p>Bugs:</p><ul><li>Fixes potential wpm sampling overflow, along with code comment fixes (<a href="https://github.com/qmk/qmk_firmware/pull/15277" target="_blank" rel="noreferrer">#15277</a>)</li><li>Add missing define for unicode common (<a href="https://github.com/qmk/qmk_firmware/pull/15416" target="_blank" rel="noreferrer">#15416</a>)</li><li>Fix for SPI write timing in PMW3360 driver (<a href="https://github.com/qmk/qmk_firmware/pull/15519" target="_blank" rel="noreferrer">#15519</a>)</li><li>Documentation Typo fix (<a href="https://github.com/qmk/qmk_firmware/pull/15538" target="_blank" rel="noreferrer">#15538</a>)</li><li>fix a typo (<a href="https://github.com/qmk/qmk_firmware/pull/15557" target="_blank" rel="noreferrer">#15557</a>)</li><li>Fix avr serial compile (<a href="https://github.com/qmk/qmk_firmware/pull/15589" target="_blank" rel="noreferrer">#15589</a>)</li><li>More AVR GPIO compilation fixes. (<a href="https://github.com/qmk/qmk_firmware/pull/15592" target="_blank" rel="noreferrer">#15592</a>)</li><li>Fix bug and code regression for Split Common (<a href="https://github.com/qmk/qmk_firmware/pull/15603" target="_blank" rel="noreferrer">#15603</a>)</li><li>Include missing string.h include in split (<a href="https://github.com/qmk/qmk_firmware/pull/15606" target="_blank" rel="noreferrer">#15606</a>)</li><li>Fixes for bootloader refactor build failures (<a href="https://github.com/qmk/qmk_firmware/pull/15638" target="_blank" rel="noreferrer">#15638</a>)</li><li>Update pmw3360 driver after reading the datasheet top to bottom. Fix some outdated refs. (<a href="https://github.com/qmk/qmk_firmware/pull/15682" target="_blank" rel="noreferrer">#15682</a>)</li><li>Fix split pointing for analog joystick (<a href="https://github.com/qmk/qmk_firmware/pull/15691" target="_blank" rel="noreferrer">#15691</a>)</li><li>Fix broken bootloader builds in develop. (<a href="https://github.com/qmk/qmk_firmware/pull/15880" target="_blank" rel="noreferrer">#15880</a>)</li><li>Fix optical sensor firmware upload (<a href="https://github.com/qmk/qmk_firmware/pull/15919" target="_blank" rel="noreferrer">#15919</a>)</li><li>Pass in the keyrecord_t of the dual-role/tapping key when calling per-key tap hold functions (<a href="https://github.com/qmk/qmk_firmware/pull/15938" target="_blank" rel="noreferrer">#15938</a>)</li><li>fixed typo in orange HSV colors decalartion (<a href="https://github.com/qmk/qmk_firmware/pull/15976" target="_blank" rel="noreferrer">#15976</a>)</li><li>Fix hack for chibiOS reset name (<a href="https://github.com/qmk/qmk_firmware/pull/15984" target="_blank" rel="noreferrer">#15984</a>)</li><li>Fix right side ws2812 leds having two indices (<a href="https://github.com/qmk/qmk_firmware/pull/15985" target="_blank" rel="noreferrer">#15985</a>)</li><li>Workaround in Makefile for recursive rule matching (<a href="https://github.com/qmk/qmk_firmware/pull/15988" target="_blank" rel="noreferrer">#15988</a>)</li><li>Fix BACKLIGHT_CAPS_LOCK warning (<a href="https://github.com/qmk/qmk_firmware/pull/15999" target="_blank" rel="noreferrer">#15999</a>)</li><li>Fix compilation issues for led indicators (<a href="https://github.com/qmk/qmk_firmware/pull/16001" target="_blank" rel="noreferrer">#16001</a>)</li><li>ChibiOS timer fixes (<a href="https://github.com/qmk/qmk_firmware/pull/16017" target="_blank" rel="noreferrer">#16017</a>)</li><li>Fix bootloader_jump for certain CTRL boards (<a href="https://github.com/qmk/qmk_firmware/pull/16026" target="_blank" rel="noreferrer">#16026</a>)</li><li>Fix up issue with PROGMEM and hand_swap_config (<a href="https://github.com/qmk/qmk_firmware/pull/16027" target="_blank" rel="noreferrer">#16027</a>)</li><li>Don't make EEPROM size assumptions with dynamic keymaps. (<a href="https://github.com/qmk/qmk_firmware/pull/16054" target="_blank" rel="noreferrer">#16054</a>)</li><li>fix missed .noci in reviung move (<a href="https://github.com/qmk/qmk_firmware/pull/16107" target="_blank" rel="noreferrer">#16107</a>)</li><li>Fix issues with Python Tests (<a href="https://github.com/qmk/qmk_firmware/pull/16162" target="_blank" rel="noreferrer">#16162</a>)</li><li>Fixup multibuild filegen (<a href="https://github.com/qmk/qmk_firmware/pull/16166" target="_blank" rel="noreferrer">#16166</a>)</li><li>Remove old .gitignore entry. Add more macOS junk exclusions. (<a href="https://github.com/qmk/qmk_firmware/pull/16167" target="_blank" rel="noreferrer">#16167</a>)</li><li>Fixup builds so that teensy EEPROM knows which MCU it's targeting. (<a href="https://github.com/qmk/qmk_firmware/pull/16168" target="_blank" rel="noreferrer">#16168</a>)</li><li>Create a build error if no bootloader is specified. (<a href="https://github.com/qmk/qmk_firmware/pull/16181" target="_blank" rel="noreferrer">#16181</a>)</li><li>Ensure <code>version.h</code> is recreated each build. (<a href="https://github.com/qmk/qmk_firmware/pull/16188" target="_blank" rel="noreferrer">#16188</a>)</li><li>Add <code>custom</code> to list of valid bootloader types in info.json (<a href="https://github.com/qmk/qmk_firmware/pull/16228" target="_blank" rel="noreferrer">#16228</a>)</li><li>Fix <code>layer_state</code> restoration at end of dynamic macro feature #16208 (<a href="https://github.com/qmk/qmk_firmware/pull/16230" target="_blank" rel="noreferrer">#16230</a>)</li><li>Minor additions #12795 (<a href="https://github.com/qmk/qmk_firmware/pull/16276" target="_blank" rel="noreferrer">#16276</a>)</li><li>Various fixes for matrix _RIGHT handling (<a href="https://github.com/qmk/qmk_firmware/pull/16292" target="_blank" rel="noreferrer">#16292</a>)</li><li>Fix slashes in build_full_test.mk (<a href="https://github.com/qmk/qmk_firmware/pull/16300" target="_blank" rel="noreferrer">#16300</a>)</li><li>ps2/avr: use the correct file name (<a href="https://github.com/qmk/qmk_firmware/pull/16316" target="_blank" rel="noreferrer">#16316</a>)</li><li>Fix compilation of ChibiOS UART driver (<a href="https://github.com/qmk/qmk_firmware/pull/16348" target="_blank" rel="noreferrer">#16348</a>)</li><li>Various fixes for new-keyboard (<a href="https://github.com/qmk/qmk_firmware/pull/16358" target="_blank" rel="noreferrer">#16358</a>)</li><li>Allow NO_PIN within data driven configuration (<a href="https://github.com/qmk/qmk_firmware/pull/16359" target="_blank" rel="noreferrer">#16359</a>)</li></ul></div></div></main><footer class="VPDocFooter" data-v-39a288b8 data-v-09de1c0f><!--[--><!--]--><!----><nav class="prev-next" data-v-09de1c0f><div class="pager" data-v-09de1c0f><!----></div><div class="pager" data-v-09de1c0f><a class="VPLink link pager-link next" href="/newbs" data-v-09de1c0f><!--[--><span class="desc" data-v-09de1c0f>Next page</span><span class="title" data-v-09de1c0f>Introduction</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
|
||
<script>window.__VP_HASH_MAP__=JSON.parse("{\"coding_conventions_c.md\":\"DdrpXBEh\",\"coding_conventions_python.md\":\"BV-OK1s5\",\"changelog_20201128.md\":\"7XXL02Bn\",\"changelog_20200229.md\":\"DNsowwM1\",\"changelog_20200829.md\":\"CoqrOffn\",\"compatible_microcontrollers.md\":\"6HA6FJZJ\",\"changelog_20211127.md\":\"ClUawWkq\",\"changelog_20210227.md\":\"BWOtCaeS\",\"chibios_upgrade_instructions.md\":\"B5dMtL5R\",\"changelog_20220827.md\":\"DjPthqDk\",\"changelog_20190830.md\":\"Drtq3lMy\",\"changelog_20200530.md\":\"Dk-vRpTQ\",\"cli.md\":\"BLzAdA6l\",\"capabilities_inc.md\":\"Ca9zpMce\",\"faq_build.md\":\"DL_WezA1\",\"api_docs.md\":\"CRoD6CbL\",\"drivers_ws2812.md\":\"D9E3Wb-Y\",\"easy_maker.md\":\"DAfbIK4w\",\"drivers_uart.md\":\"BNBs-m3h\",\"faq_general.md\":\"BC3pFw4U\",\"capabilities.md\":\"DgKwcj5n\",\"drivers_eeprom.md\":\"B_6soqar\",\"drivers_flash.md\":\"DhWcHp8S\",\"drivers_gpio.md\":\"C5PvyJVh\",\"changelog_20240526.md\":\"DAmAEDG5\",\"faq_keymap.md\":\"BsEmEZTo\",\"faq_debug.md\":\"DuThValw\",\"api_overview.md\":\"0FPaUsMb\",\"changelog_20240225.md\":\"B4-WrXj6\",\"breaking_changes_instructions.md\":\"BAjIGeJb\",\"api_development_environment.md\":\"EhJClb9f\",\"changelog_20220528.md\":\"BX3CCY1Z\",\"cli_configuration.md\":\"CGSB128P\",\"changelog_20221126.md\":\"DpbrnXeC\",\"arm_debugging.md\":\"BH-H2Ukz\",\"changelog_20220226.md\":\"BWO5r_ec\",\"changelog_20230528.md\":\"nX9R48zP\",\"features_dip_switch.md\":\"DtBOdc98\",\"config_options.md\":\"DvMeqlpB\",\"features_caps_word.md\":\"BDQGM0-x\",\"features_combo.md\":\"C-GfDyXJ\",\"custom_matrix.md\":\"DMnRw_5l\",\"custom_quantum_functions.md\":\"DrUNiV1i\",\"data_driven_config.md\":\"BvLQ7P20\",\"features_command.md\":\"Byl9YoT7\",\"features_digitizer.md\":\"DGIGZFVx\",\"changelog_20231126.md\":\"D2Ok5QAf\",\"platformdev_rp2040.md\":\"CYKYMDfc\",\"features_haptic_feedback.md\":\"DS8CmC7e\",\"quantum_painter_qff.md\":\"kLNwshez\",\"syllabus.md\":\"B_ARGkLg\",\"quantum_painter_lvgl.md\":\"DobNbSgA\",\"newbs_git_resolving_merge_conflicts.md\":\"72w3BRmm\",\"newbs_git_resynchronize_a_branch.md\":\"YGDefQFx\",\"changelog_20230226.md\":\"Cg0AYxIn\",\"newbs_git_best_practices.md\":\"BI2-EVI5\",\"hardware_keyboard_guidelines.md\":\"CJevsanE\",\"features_unicode.md\":\"CsON-fJH\",\"cli_commands.md\":\"DGx-qNiE\",\"cli_development.md\":\"3xFA2OvS\",\"breaking_changes.md\":\"BtdqWQlY\",\"configurator_step_by_step.md\":\"GvmPtScT\",\"configurator_default_keymaps.md\":\"B3v8dlHd\",\"configurator_troubleshooting.md\":\"BxGLPT8G\",\"contributing.md\":\"DLsp4vSA\",\"changelog_20230827.md\":\"NSPhmB6l\",\"changelog_20210529.md\":\"CR1YNfZX\",\"configurator_architecture.md\":\"DEFTvTlS\",\"changelog_20210828.md\":\"DNbHIuuM\",\"breaking_changes_history.md\":\"CkzdD6x8\",\"faq_misc.md\":\"qGrhOTu4\",\"api_development_overview.md\":\"Dcey4ntL\",\"features_audio.md\":\"DWNYte3W\",\"features_auto_shift.md\":\"B9HLt3QM\",\"features_bluetooth.md\":\"CiAjl875\",\"features_autocorrect.md\":\"DHRDcuho\",\"features_backlight.md\":\"D7R4FkYo\",\"feature_userspace.md\":\"BsmY9yWw\",\"feature_layouts.md\":\"qcy8hNMO\",\"feature_macros.md\":\"By1M5R8G\",\"feature_layers.md\":\"8GwBUTZN\",\"feature_converters.md\":\"DFKin1io\",\"drivers_spi.md\":\"tJVeIT7e\",\"feature_eeprom.md\":\"a0eoTZm7\",\"features_bootmagic.md\":\"CeNSUsBQ\",\"feature_debounce_type.md\":\"CUrSp0Iy\",\"drivers_i2c.md\":\"Cuj87reB\",\"drivers_serial.md\":\"qxjytVdM\",\"feature_advanced_keycodes.md\":\"CX8dJkY-\",\"drivers_audio.md\":\"mqaz6p5N\",\"reference_configurator_support.md\":\"FaBQzIj6\",\"reference_keymap_extras.md\":\"-n_bLm78\",\"squeezing_avr.md\":\"BmcLYKOr\",\"porting_your_keyboard_to_qmk.md\":\"CGlGdFj4\",\"support_deprecation_policy.md\":\"CCo4ljiw\",\"pr_checklist.md\":\"BnrDXG2G\",\"quantum_keycodes.md\":\"DM5WeUFF\",\"unit_testing.md\":\"u3fgbGUj\",\"features_dynamic_macros.md\":\"CrJ1vhBA\",\"tap_hold.md\":\"DD8WTSla\",\"understanding_qmk.md\":\"f-Bc_eHQ\",\"features_encoders.md\":\"B2SX3hG2\",\"features_hd44780.md\":\"15K40o_e\",\"features_joystick.md\":\"CW0gZHec\",\"features_key_lock.md\":\"IjFq9dYs\",\"drivers_adc.md\":\"DzU8txf8\",\"other_eclipse.md\":\"C-zqyJO9\",\"quantum_painter_rle.md\":\"B07V3m-n\",\"documentation_templates.md\":\"Bhkum0wD\",\"quantum_painter_qgf.md\":\"BJNSu2s0\",\"platformdev_blackpill_f4x1.md\":\"DvObLRuk\",\"platformdev_chibios_earlyinit.md\":\"BQJSTP3y\",\"platformdev_proton_c.md\":\"CDRuJBvD\",\"flashing.md\":\"BSZF2RCy\",\"features_sequencer.md\":\"DkgqNCsQ\",\"features_space_cadet.md\":\"DmNfYRVJ\",\"quantum_painter.md\":\"BK_I9g4h\",\"features_tri_layer.md\":\"DdnBVinw\",\"features_send_string.md\":\"vM68un4v\",\"features_secure.md\":\"BX7jFvW5\",\"features_wpm.md\":\"BYf-Xc1H\",\"how_keyboards_work.md\":\"CB7z8ocb\",\"getting_started_make_guide.md\":\"BjUuEnSh\",\"features_rgblight.md\":\"DehQikiL\",\"features_programmable_button.md\":\"D332w_PT\",\"flashing_bootloadhid.md\":\"aXGP0bN5\",\"hardware_drivers.md\":\"BUnx48D9\",\"hand_wire.md\":\"CcI1spCv\",\"getting_started_docker.md\":\"mz6HE4Bl\",\"getting_started_github.md\":\"OYq7IT7B\",\"getting_started_introduction.md\":\"BOJreqSs\",\"how_a_matrix_works.md\":\"JINKbCuX\",\"features_led_indicators.md\":\"CCZhjHe9\",\"isp_flashing_guide.md\":\"BiuBpOKX\",\"keycodes_basic.md\":\"CHIeCvwn\",\"features_os_detection.md\":\"DZKTWvSd\",\"index.md\":\"B4QYzvHE\",\"features_mouse_keys.md\":\"C3P3pYuE\",\"support.md\":\"CwJ_H6Qx\",\"reference_glossary.md\":\"CXMuxToT\",\"features_oled_driver.md\":\"D9wJVdL1\",\"drivers_apa102.md\":\"Qb-KXRpF\",\"newbs_git_using_your_master_branch.md\":\"B9DxZCl8\",\"reference_info_json.md\":\"CEbbd-o6\",\"platformdev_selecting_arm_mcu.md\":\"aF4DUsvb\",\"documentation_best_practices.md\":\"BtEjePaZ\",\"other_vscode.md\":\"Di3vOySR\",\"newbs.md\":\"-YYNd3dT\",\"features_key_overrides.md\":\"rVTP6kn9\",\"features_grave_esc.md\":\"mUNEjUYS\",\"keymap.md\":\"Y4Fei1Ty\",\"keycodes_magic.md\":\"CGO3hgMm\",\"keycodes_us_ansi_shifted.md\":\"Cs78SDfM\",\"mod_tap.md\":\"C7wRKLcf\",\"newbs_building_firmware_configurator.md\":\"yyo-1QDE\",\"newbs_flashing.md\":\"B42m5Wln\",\"newbs_building_firmware_workflow.md\":\"DpLVwA7x\",\"newbs_external_userspace.md\":\"pD9Lc-a5\",\"newbs_building_firmware.md\":\"DnVUK9it\",\"features_leader_key.md\":\"DBQTnBRh\",\"newbs_learn_more_resources.md\":\"Dj1s2BDG\",\"driver_installation_zadig.md\":\"CX9-BACt\",\"one_shot_keys.md\":\"QR09rSb-\",\"newbs_testing_debugging.md\":\"D-c7Gle_\",\"features_pointing_device.md\":\"DP6-XwL6\",\"features_st7565.md\":\"MoajNurJ\",\"features_rgb_matrix.md\":\"-rlWq-Xq\",\"features_ps2_mouse.md\":\"CL_pA9sk\",\"features_swap_hands.md\":\"DOhgGQf9\",\"features_split_keyboard.md\":\"mMTUzI5n\",\"features_stenography.md\":\"Bb_IhUGl\",\"features_midi.md\":\"u3tHPteB\",\"features_led_matrix.md\":\"D444t5Um\",\"cli_tab_complete.md\":\"ChaxfzYo\",\"newbs_getting_started.md\":\"DD4a5qPC\",\"features_tap_dance.md\":\"CKLVpnIn\",\"keycodes.md\":\"hkOkKJPh\",\"ref_functions.md\":\"BVI2uXSN\",\"features_repeat_key.md\":\"C3eWDUWn\",\"features_rawhid.md\":\"bKKG3KCa\"}");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\"},\"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\":\"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\":\"Keymap Overview\",\"link\":\"/keymap\"},{\"text\":\"Development Environments\",\"items\":[{\"text\":\"Docker Guide\",\"link\":\"/getting_started_docker\"}]},{\"text\":\"Flashing\",\"items\":[{\"text\":\"Flashing\",\"link\":\"/flashing\"},{\"text\":\"Flashing ATmega32A (ps2avrgb)\",\"link\":\"/flashing_bootloadhid\"}]},{\"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\":\"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\":\"Bluetooth\",\"link\":\"/features/bluetooth\"},{\"text\":\"Bootmagic Lite\",\"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\":\"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/20240526\"},{\"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\":\"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\"}]}]}],\"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> |