const__pageData=JSON.parse('{"title":"Supporting Your Keyboard in QMK Configurator","description":"","frontmatter":{},"headers":[],"relativePath":"reference_configurator_support.md","filePath":"reference_configurator_support.md"}');
const_hoisted_1=/* @__PURE__ */createStaticVNode('<h1id="supporting-your-keyboard-in-qmk-configurator"tabindex="-1">SupportingYourKeyboardinQMKConfigurator<aclass="header-anchor"href="#supporting-your-keyboard-in-qmk-configurator"aria-label="Permalink to "Supporting Your Keyboard in QMK Configurator""></a></h1><p>Thispagecovershowtoproperlysupportkeyboardsinthe<ahref="https://config.qmk.fm/"target="_blank"rel="noreferrer">QMKConfigurator</a>.</p><h2id="how-the-configurator-understands-keyboards"tabindex="-1">HowtheConfiguratorUnderstandsKeyboards<aclass="header-anchor"href="#how-the-configurator-understands-keyboards"aria-label="Permalinkto"HowtheConfiguratorUnderstandsKeyboards""></a></h2><p>TounderstandhowtheConfiguratorunderstandskeyboards,firstonemustunderstandlayoutmacros.Forthisexercise,we'regoingtoimaginea17-keynumpadPCB,whichwe'regoingtocall<code>numpad</code>.</p><divclass="language-vp-adaptive-theme"><buttontitle="CopyCode"class="copy"></button><spanclass="lang"></span><preclass="shikishiki-themesgithub-lightgithub-darkvp-code"><code><spanclass="line"><span>|---------------|</span></span>\n<spanclass="line"><span>|NLk|/|*|-|</span></span>\n<spanclass="line"><span>|---+---+---+---|</span></span>\n<spanclass="line"><span>|7|8|9|+|</span></span>\n<spanclass="line"><span>|---+---+---||</span></span>\n<spanclass="line"><span>|4|5|6||</span></span>\n<spanclass="line"><span>|---+---+---+---|</span></span>\n<spanclass="line"><span>|1|2|3|Ent|</span></span>\n<spanclass="line"><span>|-------+---||</span></span>\n<spanclass="line"><span>|0|.||</span></span>\n<spanclass="line"><span>|---------------|</span></span></code></pre></div><divclass="tipcustom-block"><pclass="custom-block-title">TIP</p><p>Formoreonlayoutmacros,see<ahref="./understanding_qmk#matrix-scanning">UnderstandingQMK:MatrixScanning</a>and<ahref="./understanding_qmk#matrix-to-physical-layout-map">UnderstandingQMK:MatrixtoPhysicalLayoutMap</a>.</p></div><p>TheConfigurator'sAPIreadsthekeyboard's<code>.h</code>filefrom<code>qmk_firmware/keyboards/<keyboard>/<keyboard>.h</code>.Forournumpad,thisfilewouldbe<code>qmk_firmware/keyboards/numpad/numpad.h</code>:</p><divclass="language-cvp-adaptive-theme"><buttontitle="CopyCode"class="copy"></button><spanclass="lang">c</span><preclass="shikishiki-themesgithub-lightgithub-darkvp-code"><code><spanclass="line"><spanstyle="--shiki-light:#D73A49;--shiki-dark:#F97583;">#pragma</span><spanstyle="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">once</span></span>\n<spanclass="line"></span>\n<spanclass="line"><spanstyle="--shiki-light:#D73A49;--shiki-dark:#F97583;">#define</span><spanstyle="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">LAYOUT</span><spanstyle="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><spanstyle="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\</span></span>\n<spanclass="line"><spanstyle="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">k00,k01,k02,k03,</span><spanstyle="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\</span></span>\n<spanclass="line"><spanstyle="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">k10,k11,k12,k13,</span><spanstyle="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\</span></span>\n<spanclass="line"><spanstyle="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">k20,k21,k22,</span><spanstyle="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\</span></span>\n<spanclass="line"><spanstyle="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">k30,k31,k32,k33,</span><spanstyle="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\</span></span>\n<spanclass="line"><spanstyle="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">k40,k42</span><spanstyle="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\</span></span>\n<spanclass="line"><spanstyle="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">){</span><
const_hoisted_29=/* @__PURE__ */createStaticVNode('<p>When a user selects the top-left key in the Configurator, and assigns Num Lock to it, the Configurator builds a keymap file with <code>KC_NUM</code> as the first key, and so on as the keymap is built. The <code>label</code> keys are not used; they are only for the user's reference in identifying specific keys when debugging the <code>info.json</code> file.</p><h2 id="issues-and-hazards" tabindex="-1">Issues and Hazards <a class="header-anchor" href="#issues-and-hazards" aria-label="Permalink to "Issues and Hazards""></a></h2><p>Currently, the Configurator does not support key rotation or non-rectangular key shapes like ISO Enter. Additionally, keys that are vertically-offset from their "row" — the arrow keys on 1800-layouts like the <a href="https://github.com/qmk/qmk_firmware/tree/4ac48a61a66206beaf2fdd5f2939d8bbedd0004c/keyboards/tkc1800/" target="_blank" rel="noreferrer">TKC1800</a> being a prominent example — confuse the KLE-to-JSON Converter, if not adjusted for by the contributor of the <code>info.json</code> file.</p><h3 id="workarounds" tabindex="-1">Workarounds <a class="header-anchor" href="#workarounds" aria-label="Permalink to "Workarounds""></a></h3><h4 id="non-rectangular-keys" tabindex="-1">Non-rectangular keys <a class="header-anchor" href="#non-rectangular-keys" aria-label="Permalink to "Non-rectangular keys""></a></h4><p>For ISO Enter keys, QMK custom is to display it as a rectangular key, 1.25u wide and 2u high, aligned so its right edge is aligned with the right edge of the alphanumeric key block.</p><p><img src="https://i.imgur.com/JKngtTw.png" alt=""><br><em>A 60% keyboard in standard ISO layout, as rendered by QMK Configurator.</em></p><h4 id="vertically-offset-keys" tabindex="-1">Vertically-offset keys <a class="header-anchor" href="#vertically-offset-keys" aria-label="Permalink to "Vertically-offset keys""></a></h4><p>For vertically-offset keys, place them in KLE as if they were not offset, then edit the Y-values as needed in the converted JSON file</p><p><img src="https://i.imgur.com/fmDvDzR.png" alt=""><br><em>An 1800-layout keyboard as rendered in Keyboard Layout Editor, without the vertical offset applied to the arrow keys.</em></p><p><img src="https://i.imgur.com/8beYMBR.png" alt=""><br><em>A Unix diff file, showing the changes needed to vertically-offset the arrow keys in our keyboard's JSON file.</em></p>',11);