Deploying to gh-pages from @ qmk/qmk_firmware@6ef9717288 🚀

This commit is contained in:
QMK Bot
2024-05-30 02:02:10 +00:00
parent 5d3690d39e
commit fd39eedae8
945 changed files with 50715 additions and 59745 deletions
File diff suppressed because one or more lines are too long
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Change - 2019 Aug 30","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20190830.md","filePath":"ChangeLog/20190830.md"}');
const _sfc_main = { name: "ChangeLog/20190830.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 19);
const _hoisted_20 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_20);
}
const _20190830 = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
_20190830 as default
};
File diff suppressed because one or more lines are too long
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Change - 2020 Feb 29 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20200229.md","filePath":"ChangeLog/20200229.md"}');
const _sfc_main = { name: "ChangeLog/20200229.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 20);
const _hoisted_21 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_21);
}
const _20200229 = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
_20200229 as default
};
File diff suppressed because one or more lines are too long
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Change - 2020 May 30 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20200530.md","filePath":"ChangeLog/20200530.md"}');
const _sfc_main = { name: "ChangeLog/20200530.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 84);
const _hoisted_85 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_85);
}
const _20200530 = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
_20200530 as default
};
File diff suppressed because one or more lines are too long
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Change - 2020 Aug 29 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20200829.md","filePath":"ChangeLog/20200829.md"}');
const _sfc_main = { name: "ChangeLog/20200829.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 29);
const _hoisted_30 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_30);
}
const _20200829 = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
_20200829 as default
};
File diff suppressed because one or more lines are too long
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Change - 2020 Nov 28 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20201128.md","filePath":"ChangeLog/20201128.md"}');
const _sfc_main = { name: "ChangeLog/20201128.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 30);
const _hoisted_31 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_31);
}
const _20201128 = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
_20201128 as default
};
File diff suppressed because one or more lines are too long
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2021 February 27 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20210227.md","filePath":"ChangeLog/20210227.md"}');
const _sfc_main = { name: "ChangeLog/20210227.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 29);
const _hoisted_30 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_30);
}
const _20210227 = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
_20210227 as default
};
File diff suppressed because one or more lines are too long
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2021 May 29 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20210529.md","filePath":"ChangeLog/20210529.md"}');
const _sfc_main = { name: "ChangeLog/20210529.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 44);
const _hoisted_45 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_45);
}
const _20210529 = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
_20210529 as default
};
File diff suppressed because one or more lines are too long
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2021 August 28 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20210828.md","filePath":"ChangeLog/20210828.md"}');
const _sfc_main = { name: "ChangeLog/20210828.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 65);
const _hoisted_66 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_66);
}
const _20210828 = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
_20210828 as default
};
File diff suppressed because one or more lines are too long
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2021 November 27 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20211127.md","filePath":"ChangeLog/20211127.md"}');
const _sfc_main = { name: "ChangeLog/20211127.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 83);
const _hoisted_84 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_84);
}
const _20211127 = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
_20211127 as default
};
File diff suppressed because one or more lines are too long
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2022 February 26 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20220226.md","filePath":"ChangeLog/20220226.md"}');
const _sfc_main = { name: "ChangeLog/20220226.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 43);
const _hoisted_44 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_44);
}
const _20220226 = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
_20220226 as default
};
File diff suppressed because one or more lines are too long
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2022 May 28 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20220528.md","filePath":"ChangeLog/20220528.md"}');
const _sfc_main = { name: "ChangeLog/20220528.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 47);
const _hoisted_48 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_48);
}
const _20220528 = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
_20220528 as default
};
File diff suppressed because one or more lines are too long
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2022 August 27 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20220827.md","filePath":"ChangeLog/20220827.md"}');
const _sfc_main = { name: "ChangeLog/20220827.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 54);
const _hoisted_55 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_55);
}
const _20220827 = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
_20220827 as default
};
File diff suppressed because one or more lines are too long
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2022 November 26 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20221126.md","filePath":"ChangeLog/20221126.md"}');
const _sfc_main = { name: "ChangeLog/20221126.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 66);
const _hoisted_67 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_67);
}
const _20221126 = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
_20221126 as default
};
File diff suppressed because one or more lines are too long
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2023 February 26 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20230226.md","filePath":"ChangeLog/20230226.md"}');
const _sfc_main = { name: "ChangeLog/20230226.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 47);
const _hoisted_48 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_48);
}
const _20230226 = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
_20230226 as default
};
File diff suppressed because one or more lines are too long
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2023 May 28 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20230528.md","filePath":"ChangeLog/20230528.md"}');
const _sfc_main = { name: "ChangeLog/20230528.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 46);
const _hoisted_47 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_47);
}
const _20230528 = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
_20230528 as default
};
File diff suppressed because one or more lines are too long
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2023 Aug 27 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20230827.md","filePath":"ChangeLog/20230827.md"}');
const _sfc_main = { name: "ChangeLog/20230827.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 49);
const _hoisted_50 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_50);
}
const _20230827 = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
_20230827 as default
};
File diff suppressed because one or more lines are too long
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2023 November 26 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20231126.md","filePath":"ChangeLog/20231126.md"}');
const _sfc_main = { name: "ChangeLog/20231126.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 51);
const _hoisted_52 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_52);
}
const _20231126 = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
_20231126 as default
};
File diff suppressed because one or more lines are too long
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2024 February 25 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20240225.md","filePath":"ChangeLog/20240225.md"}');
const _sfc_main = { name: "ChangeLog/20240225.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 43);
const _hoisted_44 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_44);
}
const _20240225 = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
_20240225 as default
};
File diff suppressed because one or more lines are too long
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2024 May 26 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20240526.md","filePath":"ChangeLog/20240526.md"}');
const _sfc_main = { name: "ChangeLog/20240526.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 49);
const _hoisted_50 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_50);
}
const _20240526 = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
_20240526 as default
};
File diff suppressed because one or more lines are too long
+15
View File
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"ADC Driver","description":"","frontmatter":{},"headers":[],"relativePath":"adc_driver.md","filePath":"adc_driver.md"}');
const _sfc_main = { name: "adc_driver.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 32);
const _hoisted_33 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_33);
}
const adc_driver = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
adc_driver as default
};
+15
View File
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"APA102 Driver","description":"","frontmatter":{},"headers":[],"relativePath":"apa102_driver.md","filePath":"apa102_driver.md"}');
const _sfc_main = { name: "apa102_driver.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode('<h1 id="apa102-driver" tabindex="-1">APA102 Driver <a class="header-anchor" href="#apa102-driver" aria-label="Permalink to &quot;APA102 Driver {#apa102-driver}&quot;">​</a></h1><p>This driver provides support for APA102 addressable RGB LEDs. They are similar to the <a href="./ws2812_driver">WS2812</a> LEDs, but have increased data and refresh rates.</p><h2 id="usage" tabindex="-1">Usage <a class="header-anchor" href="#usage" aria-label="Permalink to &quot;Usage {#usage}&quot;">​</a></h2><p>In most cases, the APA102 driver code is automatically included if you are using either the <a href="./feature_rgblight">RGBLight</a> or <a href="./feature_rgb_matrix">RGB Matrix</a> feature with the <code>apa102</code> driver set, and you would use those APIs instead.</p><p>However, if you need to use the driver standalone, add the following to your <code>rules.mk</code>:</p><div class="language-make vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">make</span><pre class="shiki shiki-themes github-light github-dark vp-code"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">APA102_DRIVER_REQUIRED = yes</span></span></code></pre></div><p>You can then call the APA102 API by including <code>apa102.h</code> in your code.</p><h2 id="basic-configuration" tabindex="-1">Basic Configuration <a class="header-anchor" href="#basic-configuration" aria-label="Permalink to &quot;Basic Configuration {#basic-configuration}&quot;">​</a></h2><p>Add the following to your <code>config.h</code>:</p><table><thead><tr><th>Define</th><th>Default</th><th>Description</th></tr></thead><tbody><tr><td><code>APA102_DI_PIN</code></td><td><em>Not defined</em></td><td>The GPIO pin connected to the DI pin of the first LED in the chain</td></tr><tr><td><code>APA102_CI_PIN</code></td><td><em>Not defined</em></td><td>The GPIO pin connected to the CI pin of the first LED in the chain</td></tr><tr><td><code>APA102_DEFAULT_BRIGHTNESS</code></td><td><code>31</code></td><td>The default global brightness level of the LEDs, from 0 to 31</td></tr></tbody></table><h2 id="api" tabindex="-1">API <a class="header-anchor" href="#api" aria-label="Permalink to &quot;API {#api}&quot;">​</a></h2><h3 id="void-apa102-setleds-rgb-led-t-start-led-uint16-t-num-leds" tabindex="-1"><code>void apa102_setleds(rgb_led_t *start_led, uint16_t num_leds)</code> <a class="header-anchor" href="#void-apa102-setleds-rgb-led-t-start-led-uint16-t-num-leds" aria-label="Permalink to &quot;`void apa102_setleds(rgb_led_t *start_led, uint16_t num_leds)`&quot;">​</a></h3><p>Send RGB data to the APA102 LED chain.</p><h4 id="api-apa102-setleds-arguments" tabindex="-1">Arguments <a class="header-anchor" href="#api-apa102-setleds-arguments" aria-label="Permalink to &quot;Arguments {#api-apa102-setleds-arguments}&quot;">​</a></h4><ul><li><code>rgb_led_t *start_led</code><br> A pointer to the LED array.</li><li><code>uint16_t num_leds</code><br> The length of the LED array.</li></ul><hr><h3 id="void-apa102-set-brightness-uint8-t-brightness" tabindex="-1"><code>void apa102_set_brightness(uint8_t brightness)</code> <a class="header-anchor" href="#void-apa102-set-brightness-uint8-t-brightness" aria-label="Permalink to &quot;`void apa102_set_brightness(uint8_t brightness)`&quot;">​</a></h3><p>Set the global brightness.</p><h4 id="api-apa102-set-brightness-arguments" tabindex="-1">Arguments <a class="header-anchor" href="#api-apa102-set-brightness-arguments" aria-label="Permalink to &quot;Arguments {#api-apa102-set-brightness-arguments}&quot;">​</a></h4><ul><li><code>uint8_t brightness</code><br> The brightness level to set, from 0 to 31.</li></ul>', 20);
const _hoisted_21 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_21);
}
const apa102_driver = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
apa102_driver as default
};
+15
View File
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"APA102 Driver","description":"","frontmatter":{},"headers":[],"relativePath":"apa102_driver.md","filePath":"apa102_driver.md"}');
const _sfc_main = { name: "apa102_driver.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 20);
const _hoisted_21 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_21);
}
const apa102_driver = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
apa102_driver as default
};
@@ -0,0 +1,35 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, l as createBaseVNode, a as createTextVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"Development Environment Setup","description":"","frontmatter":{},"headers":[],"relativePath":"api_development_environment.md","filePath":"api_development_environment.md"}');
const _sfc_main = { name: "api_development_environment.md" };
const _hoisted_1 = /* @__PURE__ */ createBaseVNode("h1", {
id: "development-environment-setup",
tabindex: "-1"
}, [
/* @__PURE__ */ createTextVNode("Development Environment Setup "),
/* @__PURE__ */ createBaseVNode("a", {
class: "header-anchor",
href: "#development-environment-setup",
"aria-label": 'Permalink to "Development Environment Setup"'
}, "​")
], -1);
const _hoisted_2 = /* @__PURE__ */ createBaseVNode("p", null, [
/* @__PURE__ */ createTextVNode("To setup a development stack head over to the "),
/* @__PURE__ */ createBaseVNode("a", {
href: "https://github.com/qmk/qmk_web_stack",
target: "_blank",
rel: "noreferrer"
}, "qmk_web_stack"),
/* @__PURE__ */ createTextVNode(".")
], -1);
const _hoisted_3 = [
_hoisted_1,
_hoisted_2
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_3);
}
const api_development_environment = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
api_development_environment as default
};
@@ -0,0 +1,35 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, l as createBaseVNode, a as createTextVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"Development Environment Setup","description":"","frontmatter":{},"headers":[],"relativePath":"api_development_environment.md","filePath":"api_development_environment.md"}');
const _sfc_main = { name: "api_development_environment.md" };
const _hoisted_1 = /* @__PURE__ */ createBaseVNode("h1", {
id: "development-environment-setup",
tabindex: "-1"
}, [
/* @__PURE__ */ createTextVNode("Development Environment Setup "),
/* @__PURE__ */ createBaseVNode("a", {
class: "header-anchor",
href: "#development-environment-setup",
"aria-label": 'Permalink to "Development Environment Setup"'
}, "​")
], -1);
const _hoisted_2 = /* @__PURE__ */ createBaseVNode("p", null, [
/* @__PURE__ */ createTextVNode("To setup a development stack head over to the "),
/* @__PURE__ */ createBaseVNode("a", {
href: "https://github.com/qmk/qmk_web_stack",
target: "_blank",
rel: "noreferrer"
}, "qmk_web_stack"),
/* @__PURE__ */ createTextVNode(".")
], -1);
const _hoisted_3 = [
_hoisted_1,
_hoisted_2
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_3);
}
const api_development_environment = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
api_development_environment as default
};
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"QMK Compiler Development Guide","description":"","frontmatter":{},"headers":[],"relativePath":"api_development_overview.md","filePath":"api_development_overview.md"}');
const _sfc_main = { name: "api_development_overview.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode('<h1 id="qmk-compiler-development-guide" tabindex="-1">QMK Compiler Development Guide <a class="header-anchor" href="#qmk-compiler-development-guide" aria-label="Permalink to &quot;QMK Compiler Development Guide&quot;">​</a></h1><p>This page attempts to introduce developers to the QMK Compiler. It does not go into nitty gritty details- for that you should read code. What this will give you is a framework to hang your understanding on as you read the code.</p><h1 id="overview" tabindex="-1">Overview <a class="header-anchor" href="#overview" aria-label="Permalink to &quot;Overview&quot;">​</a></h1><p>The QMK Compile API consists of a few movings parts:</p><p><img src="https://raw.githubusercontent.com/qmk/qmk_api/master/docs/architecture.svg" alt="Architecture Diagram"></p><p>API Clients interact exclusively with the API service. This is where they submit jobs, check status, and download results. The API service inserts compile jobs into <a href="https://python-rq.org" target="_blank" rel="noreferrer">Redis Queue</a> and checks both RQ and S3 for the results of those jobs.</p><p>Workers fetch new compile jobs from RQ, compile them, and then upload the source and the binary to an S3 compatible storage engine.</p><h1 id="workers" tabindex="-1">Workers <a class="header-anchor" href="#workers" aria-label="Permalink to &quot;Workers&quot;">​</a></h1><p>QMK Compiler Workers are responsible for doing the actual building. When a worker pulls a job from RQ it does several things to complete that job:</p><ul><li>Make a fresh qmk_firmware checkout</li><li>Use the supplied layers and keyboard metadata to build a <code>keymap.c</code></li><li>Build the firmware</li><li>Zip a copy of the source</li><li>Upload the firmware, source zip, and a metadata file to S3.</li><li>Report the status of the job to RQ</li></ul><h1 id="api-service" tabindex="-1">API Service <a class="header-anchor" href="#api-service" aria-label="Permalink to &quot;API Service&quot;">​</a></h1><p>The API service is a relatively simple Flask application. There are a few main views you should understand.</p><h2 id="app-route-v1-compile-methods-post" tabindex="-1">@app.route(&#39;/v1/compile&#39;, methods=[&#39;POST&#39;]) <a class="header-anchor" href="#app-route-v1-compile-methods-post" aria-label="Permalink to &quot;@app.route(&#39;/v1/compile&#39;, methods=[&#39;POST&#39;])&quot;">​</a></h2><p>This is the main entrypoint for the API. A client&#39;s interaction starts here. The client POST&#39;s a JSON document describing their keyboard, and the API does some (very) basic validation of that JSON before submitting the compile job.</p><h2 id="app-route-v1-compile-string-job-id-methods-get" tabindex="-1">@app.route(&#39;/v1/compile/&lt;string:job_id&gt;&#39;, methods=[&#39;GET&#39;]) <a class="header-anchor" href="#app-route-v1-compile-string-job-id-methods-get" aria-label="Permalink to &quot;@app.route(&#39;/v1/compile/&amp;lt;string:job_id&amp;gt;&#39;, methods=[&#39;GET&#39;])&quot;">​</a></h2><p>This is the most frequently called endpoint. It pulls the job details from redis, if they&#39;re still available, or the cached job details on S3 if they&#39;re not.</p><h2 id="app-route-v1-compile-string-job-id-download-methods-get" tabindex="-1">@app.route(&#39;/v1/compile/&lt;string:job_id&gt;/download&#39;, methods=[&#39;GET&#39;]) <a class="header-anchor" href="#app-route-v1-compile-string-job-id-download-methods-get" aria-label="Permalink to &quot;@app.route(&#39;/v1/compile/&amp;lt;string:job_id&amp;gt;/download&#39;, methods=[&#39;GET&#39;])&quot;">​</a></h2><p>This method allows users to download the compiled firmware file.</p><h2 id="app-route-v1-compile-string-job-id-source-methods-get" tabindex="-1">@app.route(&#39;/v1/compile/&lt;string:job_id&gt;/source&#39;, methods=[&#39;GET&#39;]) <a class="header-anchor" href="#app-route-v1-compile-string-job-id-source-methods-get" aria-label="Permalink to &quot;@app.route(&#39;/v1/compile/&amp;lt;string:job_id&amp;gt;/source&#39;, methods=[&#39;GET&#39;])&quot;">​</a></h2><p>This method allows users to download the source for their firmware.</p>', 20);
const _hoisted_21 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_21);
}
const api_development_overview = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
api_development_overview as default
};
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"QMK Compiler Development Guide","description":"","frontmatter":{},"headers":[],"relativePath":"api_development_overview.md","filePath":"api_development_overview.md"}');
const _sfc_main = { name: "api_development_overview.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 20);
const _hoisted_21 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_21);
}
const api_development_overview = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
api_development_overview as default
};
File diff suppressed because one or more lines are too long
+15
View File
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"QMK API","description":"","frontmatter":{},"headers":[],"relativePath":"api_docs.md","filePath":"api_docs.md"}');
const _sfc_main = { name: "api_docs.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 28);
const _hoisted_29 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_29);
}
const api_docs = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
api_docs as default
};
+15
View File
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"QMK API","description":"","frontmatter":{},"headers":[],"relativePath":"api_overview.md","filePath":"api_overview.md"}');
const _sfc_main = { name: "api_overview.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode('<h1 id="qmk-api" tabindex="-1">QMK API <a class="header-anchor" href="#qmk-api" aria-label="Permalink to &quot;QMK API&quot;">​</a></h1><p>The QMK API provides an asynchronous API that Web and GUI tools can use to compile arbitrary keymaps for any keyboard supported by <a href="https://qmk.fm/" target="_blank" rel="noreferrer">QMK</a>. The stock keymap template supports all QMK keycodes that do not require supporting C code. Keyboard maintainers can supply their own custom templates to enable more functionality.</p><h2 id="app-developers" tabindex="-1">App Developers <a class="header-anchor" href="#app-developers" aria-label="Permalink to &quot;App Developers&quot;">​</a></h2><p>If you are an app developer interested in using this API in your application you should head over to <a href="./api_docs">Using The API</a>.</p><h2 id="keyboard-maintainers" tabindex="-1">Keyboard Maintainers <a class="header-anchor" href="#keyboard-maintainers" aria-label="Permalink to &quot;Keyboard Maintainers&quot;">​</a></h2><p>If you would like to enhance your keyboard&#39;s support in the QMK Compiler API head over to the <a href="./reference_configurator_support">Keyboard Support</a> section.</p><h2 id="backend-developers" tabindex="-1">Backend Developers <a class="header-anchor" href="#backend-developers" aria-label="Permalink to &quot;Backend Developers&quot;">​</a></h2><p>If you are interested in working on the API itself you should start by setting up a <a href="./api_development_environment">Development Environment</a>, then check out <a href="./api_development_overview">Hacking On The API</a>.</p>', 8);
const _hoisted_9 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_9);
}
const api_overview = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
api_overview as default
};
+15
View File
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"QMK API","description":"","frontmatter":{},"headers":[],"relativePath":"api_overview.md","filePath":"api_overview.md"}');
const _sfc_main = { name: "api_overview.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 8);
const _hoisted_9 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_9);
}
const api_overview = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
api_overview as default
};
+111
View File
@@ -0,0 +1,111 @@
import { V as inBrowser, a9 as useUpdateHead, aa as RouterSymbol, ab as initData, ac as dataSymbol, ad as Content, ae as ClientOnly, af as siteDataRef, ag as createSSRApp, ah as createRouter, ai as pathToFile, Y as __vitePreload, d as defineComponent, u as useData, k as onMounted, y as watchEffect, aj as usePrefetch, ak as useCopyCode, al as useCodeGroups, am as h } from "./chunks/framework.DyMmIvSC.js";
import { R as RawTheme } from "./chunks/theme.vwpNwX24.js";
function resolveThemeExtends(theme) {
if (theme.extends) {
const base = resolveThemeExtends(theme.extends);
return {
...base,
...theme,
async enhanceApp(ctx) {
if (base.enhanceApp)
await base.enhanceApp(ctx);
if (theme.enhanceApp)
await theme.enhanceApp(ctx);
}
};
}
return theme;
}
const Theme = resolveThemeExtends(RawTheme);
const VitePressApp = defineComponent({
name: "VitePressApp",
setup() {
const { site, lang, dir } = useData();
onMounted(() => {
watchEffect(() => {
document.documentElement.lang = lang.value;
document.documentElement.dir = dir.value;
});
});
if (site.value.router.prefetchLinks) {
usePrefetch();
}
useCopyCode();
useCodeGroups();
if (Theme.setup)
Theme.setup();
return () => h(Theme.Layout);
}
});
async function createApp() {
globalThis.__VITEPRESS__ = true;
const router = newRouter();
const app = newApp();
app.provide(RouterSymbol, router);
const data = initData(router.route);
app.provide(dataSymbol, data);
app.component("Content", Content);
app.component("ClientOnly", ClientOnly);
Object.defineProperties(app.config.globalProperties, {
$frontmatter: {
get() {
return data.frontmatter.value;
}
},
$params: {
get() {
return data.page.value.params;
}
}
});
if (Theme.enhanceApp) {
await Theme.enhanceApp({
app,
router,
siteData: siteDataRef
});
}
return { app, router, data };
}
function newApp() {
return createSSRApp(VitePressApp);
}
function newRouter() {
let isInitialPageLoad = inBrowser;
let initialPath;
return createRouter((path) => {
let pageFilePath = pathToFile(path);
let pageModule = null;
if (pageFilePath) {
if (isInitialPageLoad) {
initialPath = pageFilePath;
}
if (isInitialPageLoad || initialPath === pageFilePath) {
pageFilePath = pageFilePath.replace(/\.js$/, ".lean.js");
}
if (false)
;
else {
pageModule = __vitePreload(() => import(
/*@vite-ignore*/
pageFilePath
), true ? [] : void 0);
}
}
if (inBrowser) {
isInitialPageLoad = false;
}
return pageModule;
}, Theme.NotFound);
}
if (inBrowser) {
createApp().then(({ app, router, data }) => {
router.go().then(() => {
useUpdateHead(router.route, data.site);
app.mount("#app");
});
});
}
export {
createApp
};
File diff suppressed because one or more lines are too long
+15
View File
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"ARM Debugging using Eclipse","description":"","frontmatter":{},"headers":[],"relativePath":"arm_debugging.md","filePath":"arm_debugging.md"}');
const _sfc_main = { name: "arm_debugging.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 43);
const _hoisted_44 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_44);
}
const arm_debugging = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
arm_debugging as default
};
File diff suppressed because one or more lines are too long
+15
View File
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"Audio Driver","description":"","frontmatter":{},"headers":[],"relativePath":"audio_driver.md","filePath":"audio_driver.md"}');
const _sfc_main = { name: "audio_driver.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 56);
const _hoisted_57 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_57);
}
const audio_driver = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
audio_driver as default
};
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 51 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 53 KiB

File diff suppressed because one or more lines are too long
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"Breaking Changes","description":"","frontmatter":{},"headers":[],"relativePath":"breaking_changes.md","filePath":"breaking_changes.md"}');
const _sfc_main = { name: "breaking_changes.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 37);
const _hoisted_38 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_38);
}
const breaking_changes = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
breaking_changes as default
};
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"Past Breaking Changes","description":"","frontmatter":{},"headers":[],"relativePath":"breaking_changes_history.md","filePath":"breaking_changes_history.md"}');
const _sfc_main = { name: "breaking_changes_history.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode('<h1 id="past-breaking-changes" tabindex="-1">Past Breaking Changes <a class="header-anchor" href="#past-breaking-changes" aria-label="Permalink to &quot;Past Breaking Changes&quot;">​</a></h1><p>This page links to all previous changelogs from the QMK Breaking Changes process.</p><ul><li><a href="./ChangeLog/20240526">2024 May 26</a> - version 0.25.0</li><li><a href="./ChangeLog/20240225">2024 Feb 25</a> - version 0.24.0</li><li><a href="./ChangeLog/20231126">2023 Nov 26</a> - version 0.23.0</li><li><a href="./ChangeLog/20230827">2023 Aug 27</a> - version 0.22.0</li><li><a href="./ChangeLog/20230528">2023 May 28</a> - version 0.21.0</li><li><a href="./ChangeLog/20230226">2023 Feb 26</a> - version 0.20.0</li><li><a href="./ChangeLog/20221126">2022 Nov 26</a> - version 0.19.0</li><li><a href="./ChangeLog/20220827">2022 Aug 27</a> - version 0.18.0</li><li><a href="./ChangeLog/20220528">2022 May 28</a> - version 0.17.0</li><li><a href="./ChangeLog/20220226">2022 Feb 26</a> - version 0.16.0</li><li><a href="./ChangeLog/20211127">2021 Nov 27</a> - version 0.15.0</li><li><a href="./ChangeLog/20210828">2021 Aug 28</a> - version 0.14.0</li><li><a href="./ChangeLog/20210529">2021 May 29</a> - version 0.13.0</li><li><a href="./ChangeLog/20210227">2021 Feb 27</a> - version 0.12.0</li><li><a href="./ChangeLog/20201128">2020 Nov 28</a> - version 0.11.0</li><li><a href="./ChangeLog/20200829">2020 Aug 29</a> - version 0.10.0</li><li><a href="./ChangeLog/20200530">2020 May 30</a> - version 0.9.0</li><li><a href="./ChangeLog/20200229">2020 Feb 29</a> - version 0.8.0</li><li><a href="./ChangeLog/20190830">2019 Aug 30</a> - version 0.7.0</li></ul>', 3);
const _hoisted_4 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_4);
}
const breaking_changes_history = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
breaking_changes_history as default
};
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"Past Breaking Changes","description":"","frontmatter":{},"headers":[],"relativePath":"breaking_changes_history.md","filePath":"breaking_changes_history.md"}');
const _sfc_main = { name: "breaking_changes_history.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 3);
const _hoisted_4 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_4);
}
const breaking_changes_history = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
breaking_changes_history as default
};
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"Breaking Changes: My Pull Request Was Flagged","description":"","frontmatter":{},"headers":[],"relativePath":"breaking_changes_instructions.md","filePath":"breaking_changes_instructions.md"}');
const _sfc_main = { name: "breaking_changes_instructions.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode('<h1 id="breaking-changes-my-pull-request-was-flagged" tabindex="-1">Breaking Changes: My Pull Request Was Flagged <a class="header-anchor" href="#breaking-changes-my-pull-request-was-flagged" aria-label="Permalink to &quot;Breaking Changes: My Pull Request Was Flagged&quot;">​</a></h1><p>A QMK member may have replied to your pull request stating that your submission is a breaking change. In their judgment, the changes you have proposed have greater implications for either QMK, or its users.</p><p>Some things that may cause a pull request to be flagged are:</p><ul><li><strong>Edits to User Keymaps</strong> A user may submit their keymap to QMK, then some time later open a pull request with further updates, only to find it can&#39;t be merged because it was edited in the <code>qmk/qmk_firmware</code> repository. As not all users are proficient at using Git or GitHub, the user may find themself unable to fix the issue on their own.</li><li><strong>Changes to Expected Behavior</strong> Changes to QMK behavior may cause users to believe their hardware or QMK is broken if they flash new firmware that incorporates changes to existing QMK features, and find themselves without a means to restore the desired behavior.</li><li><strong>Changes Requiring User Action</strong> Changes may also require action to be taken by users, such as updating a toolchain or taking some action in Git.</li><li><strong>Changes Necessitating Increased Scrutiny</strong> On occasion, a submission may have implications for QMK as a project. This could be copyright/licensing issues, coding conventions, large feature overhauls, &quot;high-risk&quot; changes that need wider testing by our community, or something else entirely.</li><li><strong>Changes Requiring Communication to End Users</strong> This includes warnings about future deprecations, outdated practices, and anything else that needs to be communicated but doesn&#39;t fit into one of the above categories.</li></ul><h2 id="what-do-i-do" tabindex="-1">What Do I Do? <a class="header-anchor" href="#what-do-i-do" aria-label="Permalink to &quot;What Do I Do?&quot;">​</a></h2><p>If it is determined that your submission is a breaking change, there are a few things you can do to smooth the process:</p><h3 id="consider-splitting-up-your-pr" tabindex="-1">Consider Splitting Up Your PR <a class="header-anchor" href="#consider-splitting-up-your-pr" aria-label="Permalink to &quot;Consider Splitting Up Your PR&quot;">​</a></h3><p>If you are contributing core code, and the only reason it needs to go through breaking changes is that you are updating keymaps to match your change, consider whether you can submit your feature in a way that the old keymaps continue to work. Then submit a separate PR that goes through the breaking changes process to remove the old code.</p><h3 id="document-your-changes" tabindex="-1">Document Your Changes <a class="header-anchor" href="#document-your-changes" aria-label="Permalink to &quot;Document Your Changes&quot;">​</a></h3><p>Understanding the purpose for your submission, and possible implications or actions it will require can make the review process more straightforward. A changelog may suffice for this purpose, but more extensive changes may require a level of detail that is ill-suited for a changelog.</p><p>Commenting on your pull request and being responsive to questions, comments, and change requests is much appreciated.</p><h3 id="ask-for-help" tabindex="-1">Ask for Help <a class="header-anchor" href="#ask-for-help" aria-label="Permalink to &quot;Ask for Help&quot;">​</a></h3><p>Having your submission flagged may have caught you off guard. If you find yourself intimidated or overwhelmed, let us know. Comment on your pull request, or <a href="https://discord.gg/Uq7gcHh" target="_blank" rel="noreferrer">reach out to the QMK team on Discord</a>.</p>', 13);
const _hoisted_14 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_14);
}
const breaking_changes_instructions = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
breaking_changes_instructions as default
};
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"Breaking Changes: My Pull Request Was Flagged","description":"","frontmatter":{},"headers":[],"relativePath":"breaking_changes_instructions.md","filePath":"breaking_changes_instructions.md"}');
const _sfc_main = { name: "breaking_changes_instructions.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 13);
const _hoisted_14 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_14);
}
const breaking_changes_instructions = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
breaking_changes_instructions as default
};
File diff suppressed because one or more lines are too long
+64
View File
@@ -0,0 +1,64 @@
import { _ as _imports_0$1 } from "./chunks/color-wheel.DIUCmfNZ.js";
import { _ as _export_sfc, D as resolveComponent, c as createElementBlock, I as createVNode, w as withCtx, a8 as createStaticVNode, o as openBlock, l as createBaseVNode } from "./chunks/framework.DyMmIvSC.js";
const _imports_0 = "/assets/badge-community-light.DoYC_YjC.svg";
const _imports_1 = "/assets/badge-community-dark.PWO_temo.svg";
const __pageData = JSON.parse('{"title":"Documentation Capabilities","description":"","frontmatter":{},"headers":[],"relativePath":"__capabilities.md","filePath":"__capabilities.md"}');
const _sfc_main = { name: "__capabilities.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 82);
const _hoisted_83 = /* @__PURE__ */ createBaseVNode("p", null, "a content 2", -1);
const _hoisted_84 = /* @__PURE__ */ createBaseVNode("p", null, "b content 2", -1);
const _hoisted_85 = /* @__PURE__ */ createBaseVNode("p", null, "nested a content 2", -1);
const _hoisted_86 = /* @__PURE__ */ createBaseVNode("p", null, "nested b content 2", -1);
const _hoisted_87 = /* @__PURE__ */ createStaticVNode("", 6);
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
const _component_PluginTabsTab = resolveComponent("PluginTabsTab");
const _component_PluginTabs = resolveComponent("PluginTabs");
return openBlock(), createElementBlock("div", null, [
_hoisted_1,
createVNode(_component_PluginTabs, null, {
default: withCtx(() => [
createVNode(_component_PluginTabsTab, { label: "tab a" }, {
default: withCtx(() => [
_hoisted_83
]),
_: 1
}),
createVNode(_component_PluginTabsTab, { label: "tab b" }, {
default: withCtx(() => [
_hoisted_84
]),
_: 1
}),
createVNode(_component_PluginTabsTab, { label: "tab c" }, {
default: withCtx(() => [
createVNode(_component_PluginTabs, null, {
default: withCtx(() => [
createVNode(_component_PluginTabsTab, { label: "nested tab a" }, {
default: withCtx(() => [
_hoisted_85
]),
_: 1
}),
createVNode(_component_PluginTabsTab, { label: "nested tab b" }, {
default: withCtx(() => [
_hoisted_86
]),
_: 1
})
]),
_: 1
})
]),
_: 1
})
]),
_: 1
}),
_hoisted_87
]);
}
const __capabilities = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
__capabilities as default
};
+15
View File
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, l as createBaseVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"__capabilities_inc.md","filePath":"__capabilities_inc.md"}');
const _sfc_main = { name: "__capabilities_inc.md" };
const _hoisted_1 = /* @__PURE__ */ createBaseVNode("p", null, "Lorem ipsum dolor sit amet.", -1);
const _hoisted_2 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_2);
}
const __capabilities_inc = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
__capabilities_inc as default
};
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, l as createBaseVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"__capabilities_inc.md","filePath":"__capabilities_inc.md"}');
const _sfc_main = { name: "__capabilities_inc.md" };
const _hoisted_1 = /* @__PURE__ */ createBaseVNode("p", null, "Lorem ipsum dolor sit amet.", -1);
const _hoisted_2 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_2);
}
const __capabilities_inc = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
__capabilities_inc as default
};
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"ChibiOS Upgrade Procedure","description":"","frontmatter":{},"headers":[],"relativePath":"chibios_upgrade_instructions.md","filePath":"chibios_upgrade_instructions.md"}');
const _sfc_main = { name: "chibios_upgrade_instructions.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode('<h1 id="chibios-upgrade-procedure" tabindex="-1">ChibiOS Upgrade Procedure <a class="header-anchor" href="#chibios-upgrade-procedure" aria-label="Permalink to &quot;ChibiOS Upgrade Procedure&quot;">​</a></h1><p>ChibiOS and ChibiOS-Contrib need to be updated in tandem -- the latter has a branch tied to the ChibiOS version in use and should not be mixed with different versions.</p><h2 id="getting-chibios" tabindex="-1">Getting ChibiOS <a class="header-anchor" href="#getting-chibios" aria-label="Permalink to &quot;Getting ChibiOS&quot;">​</a></h2><ul><li><code>svn</code> Initialization: <ul><li>Only needed to be done once</li><li>You might need to separately install <code>git-svn</code> package in your OS&#39;s package manager</li><li><code>git svn init --stdlayout --prefix=&#39;svn/&#39; http://svn.osdn.net/svnroot/chibios/</code></li><li><code>git remote add qmk git@github.com:qmk/ChibiOS.git</code></li></ul></li><li>Updating: <ul><li><code>git svn fetch</code></li><li>First time around this will take several hours</li><li>Subsequent updates will be incremental only</li></ul></li><li>Tagging example (work out which version first!): <ul><li><code>git tag -a ver20.3.4 -m ver20.3.4 svn/tags/ver20.3.4</code></li><li><code>git push qmk ver20.3.4</code></li><li><code>git tag -a develop_YYYY_qN -m develop_YYYY_qN svn/tags/ver20.3.4</code></li><li><code>git push qmk develop_YYYY_qN</code></li></ul></li></ul><h2 id="getting-chibios-contrib" tabindex="-1">Getting ChibiOS-Contrib <a class="header-anchor" href="#getting-chibios-contrib" aria-label="Permalink to &quot;Getting ChibiOS-Contrib&quot;">​</a></h2><ul><li><code>git</code> Initialization: <ul><li><code>git clone git@github.com:qmk/ChibiOS-Contrib</code></li><li><code>git remote add upstream https://github.com/ChibiOS/ChibiOS-Contrib</code></li><li><code>git checkout -b chibios-20.3.x upstream/chibios-20.3.x</code></li></ul></li><li>Updating: <ul><li><code>git fetch --all --tags --prune</code></li><li><code>git checkout chibios-20.3.x</code></li><li><code>git pull --ff-only</code></li><li><code>git push origin chibios-20.3.x</code></li><li><code>git tag -a develop_YYYY_qN -m develop_YYYY_qN chibios-20.3.x</code></li><li><code>git push origin develop_YYYY_qN</code></li></ul></li></ul><h2 id="updating-submodules" tabindex="-1">Updating submodules <a class="header-anchor" href="#updating-submodules" aria-label="Permalink to &quot;Updating submodules&quot;">​</a></h2><ul><li>Update the submodules <ul><li><code>cd $QMK_FIRMWARE</code></li><li><code>git checkout develop</code></li><li><code>git pull --ff-only</code></li><li><code>git checkout -b chibios-version-bump</code></li><li><code>cd lib/chibios</code></li><li><code>git fetch --all --tags --prune</code></li><li><code>git checkout develop_YYYY_qN</code></li><li><code>cd ../chibios-contrib</code></li><li><code>git fetch --all --tags --prune</code></li><li><code>git checkout develop_YYYY_qN</code></li></ul></li><li>Update ChibiOS configs within QMK <ul><li><code>cd $QMK_FIRMWARE</code></li><li><code>./util/chibios_conf_updater.sh</code></li></ul></li><li>Build everything <ul><li><code>cd $QMK_FIRMWARE</code></li><li><code>qmk mass-compile -j 4</code></li><li>Make sure there are no errors</li></ul></li><li>Push to the repo <ul><li><code>git commit -am &#39;Update ChibiOS to 99.9.9&#39;</code></li><li><code>git push --set-upstream origin chibios-version-bump</code></li></ul></li><li>Make a PR to qmk_firmware with the new branch</li></ul><h2 id="when-merging-a-pr-containing-an-upgrade-of-chibios-chibios-contrib" tabindex="-1">When merging a PR containing an upgrade of ChibiOS/ChibiOS-Contrib: <a class="header-anchor" href="#when-merging-a-pr-containing-an-upgrade-of-chibios-chibios-contrib" aria-label="Permalink to &quot;When merging a PR containing an upgrade of ChibiOS/ChibiOS-Contrib:&quot;">​</a></h2><ul><li>Update the target branch if the merge target was <code>master</code>: <ul><li><code>git checkout qmk-master</code></li><li><code>git reset --hard develop_YYYY_qN</code></li><li><code>git push origin qmk-master --force-with-lease</code></li></ul></li><li>Update the target branch if the merge target was <code>develop</code>: <ul><li><code>git checkout qmk-develop</code></li><li><code>git reset --hard develop_YYYY_qN</code></li><li><code>git push origin qmk-develop --force-with-lease</code></li></ul></li></ul><p>Note that when merging <code>develop</code> to <code>master</code>, the first workflow should still be followed.</p>', 11);
const _hoisted_12 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_12);
}
const chibios_upgrade_instructions = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
chibios_upgrade_instructions as default
};
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"ChibiOS Upgrade Procedure","description":"","frontmatter":{},"headers":[],"relativePath":"chibios_upgrade_instructions.md","filePath":"chibios_upgrade_instructions.md"}');
const _sfc_main = { name: "chibios_upgrade_instructions.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 11);
const _hoisted_12 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_12);
}
const chibios_upgrade_instructions = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
chibios_upgrade_instructions as default
};
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
+4
View File
@@ -0,0 +1,4 @@
const _imports_0 = "/assets/color-wheel.DWgAL3vL.svg";
export {
_imports_0 as _
};
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+15
View File
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"QMK CLI","description":"","frontmatter":{},"headers":[],"relativePath":"cli.md","filePath":"cli.md"}');
const _sfc_main = { name: "cli.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode('<h1 id="qmk-cli" tabindex="-1">QMK CLI <a class="header-anchor" href="#qmk-cli" aria-label="Permalink to &quot;QMK CLI {#qmk-cli}&quot;">​</a></h1><h2 id="overview" tabindex="-1">Overview <a class="header-anchor" href="#overview" aria-label="Permalink to &quot;Overview {#overview}&quot;">​</a></h2><p>The QMK CLI (command line interface) makes building and working with QMK keyboards easier. We have provided a number of commands to simplify and streamline tasks such as obtaining and compiling the QMK firmware, creating keymaps, and more.</p><h3 id="requirements" tabindex="-1">Requirements <a class="header-anchor" href="#requirements" aria-label="Permalink to &quot;Requirements {#requirements}&quot;">​</a></h3><p>QMK requires Python 3.7 or greater. We try to keep the number of requirements small but you will also need to install the packages listed in <a href="https://github.com/qmk/qmk_firmware/blob/master/requirements.txt" target="_blank" rel="noreferrer"><code>requirements.txt</code></a>. These are installed automatically when you install the QMK CLI.</p><h3 id="install-using-homebrew" tabindex="-1">Install Using Homebrew (macOS, some Linux) <a class="header-anchor" href="#install-using-homebrew" aria-label="Permalink to &quot;Install Using Homebrew (macOS, some Linux) {#install-using-homebrew}&quot;">​</a></h3><p>If you have installed <a href="https://brew.sh" target="_blank" rel="noreferrer">Homebrew</a> you can tap and install QMK:</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code"><code><span class="line"><span>brew install qmk/qmk/qmk</span></span>\n<span class="line"><span>export QMK_HOME=&#39;~/qmk_firmware&#39; # Optional, set the location for `qmk_firmware`</span></span>\n<span class="line"><span>qmk setup # This will clone `qmk/qmk_firmware` and optionally set up your build environment</span></span></code></pre></div><h3 id="install-using-easy_install-or-pip" tabindex="-1">Install Using pip <a class="header-anchor" href="#install-using-easy_install-or-pip" aria-label="Permalink to &quot;Install Using pip {#install-using-easy_install-or-pip}&quot;">​</a></h3><p>If your system is not listed above you can install QMK manually. First ensure that you have Python 3.7 (or later) installed and have installed pip. Then install QMK with this command:</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code"><code><span class="line"><span>python3 -m pip install qmk</span></span>\n<span class="line"><span>export QMK_HOME=&#39;~/qmk_firmware&#39; # Optional, set the location for `qmk_firmware`</span></span>\n<span class="line"><span>qmk setup # This will clone `qmk/qmk_firmware` and optionally set up your build environment</span></span></code></pre></div><h3 id="packaging-for-other-operating-systems" tabindex="-1">Packaging For Other Operating Systems <a class="header-anchor" href="#packaging-for-other-operating-systems" aria-label="Permalink to &quot;Packaging For Other Operating Systems {#packaging-for-other-operating-systems}&quot;">​</a></h3><p>We are looking for people to create and maintain a <code>qmk</code> package for more operating systems. If you would like to create a package for your OS please follow these guidelines:</p><ul><li>Follow best practices for your OS when they conflict with these guidelines <ul><li>Document why in a comment when you do deviate</li></ul></li><li>Install using a virtualenv</li><li>Instruct the user to set the environment variable <code>QMK_HOME</code> to have the firmware source checked out somewhere other than <code>~/qmk_firmware</code>.</li></ul>', 14);
const _hoisted_15 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_15);
}
const cli = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
cli as default
};
+15
View File
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"QMK CLI","description":"","frontmatter":{},"headers":[],"relativePath":"cli.md","filePath":"cli.md"}');
const _sfc_main = { name: "cli.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 14);
const _hoisted_15 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_15);
}
const cli = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
cli as default
};
File diff suppressed because one or more lines are too long
+15
View File
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"QMK CLI Commands","description":"","frontmatter":{},"headers":[],"relativePath":"cli_commands.md","filePath":"cli_commands.md"}');
const _sfc_main = { name: "cli_commands.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 296);
const _hoisted_297 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_297);
}
const cli_commands = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
cli_commands as default
};
File diff suppressed because one or more lines are too long
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"QMK CLI Configuration","description":"","frontmatter":{},"headers":[],"relativePath":"cli_configuration.md","filePath":"cli_configuration.md"}');
const _sfc_main = { name: "cli_configuration.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 43);
const _hoisted_44 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_44);
}
const cli_configuration = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
cli_configuration as default
};
File diff suppressed because one or more lines are too long
+130
View File
@@ -0,0 +1,130 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode, l as createBaseVNode, a as createTextVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"QMK CLI Development","description":"","frontmatter":{},"headers":[],"relativePath":"cli_development.md","filePath":"cli_development.md"}');
const _sfc_main = { name: "cli_development.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 33);
const _hoisted_34 = /* @__PURE__ */ createBaseVNode("table", { fg_lightyellow_ex: "" }, [
/* @__PURE__ */ createBaseVNode("thead", null, [
/* @__PURE__ */ createBaseVNode("tr", null, [
/* @__PURE__ */ createBaseVNode("th", null, "Color"),
/* @__PURE__ */ createBaseVNode("th", null, "Background"),
/* @__PURE__ */ createBaseVNode("th", null, "Extended Background"),
/* @__PURE__ */ createBaseVNode("th", null, "Foreground"),
/* @__PURE__ */ createBaseVNode("th", null, "Extended Foreground")
])
]),
/* @__PURE__ */ createBaseVNode("tbody", null, [
/* @__PURE__ */ createBaseVNode("tr", { fg_lightblack_ex: "" }, [
/* @__PURE__ */ createBaseVNode("td", null, "Black"),
/* @__PURE__ */ createBaseVNode("td", { bg_black: "" }),
/* @__PURE__ */ createBaseVNode("td", { bg_lightblack_ex: "" }),
/* @__PURE__ */ createBaseVNode("td", { fg_black: "" }),
/* @__PURE__ */ createBaseVNode("td")
]),
/* @__PURE__ */ createBaseVNode("tr", { fg_lightblue_ex: "" }, [
/* @__PURE__ */ createBaseVNode("td", null, "Blue"),
/* @__PURE__ */ createBaseVNode("td", { bg_blue: "" }),
/* @__PURE__ */ createBaseVNode("td", { bg_lightblue_ex: "" }),
/* @__PURE__ */ createBaseVNode("td", { fg_blue: "" }),
/* @__PURE__ */ createBaseVNode("td")
]),
/* @__PURE__ */ createBaseVNode("tr", { fg_lightcyan_ex: "" }, [
/* @__PURE__ */ createBaseVNode("td", null, "Cyan"),
/* @__PURE__ */ createBaseVNode("td", { bg_cyan: "" }),
/* @__PURE__ */ createBaseVNode("td", { bg_lightcyan_ex: "" }),
/* @__PURE__ */ createBaseVNode("td", { fg_cyan: "" }),
/* @__PURE__ */ createBaseVNode("td")
]),
/* @__PURE__ */ createBaseVNode("tr", { fg_lightgreen_ex: "" }, [
/* @__PURE__ */ createBaseVNode("td", null, "Green"),
/* @__PURE__ */ createBaseVNode("td", { bg_green: "" }),
/* @__PURE__ */ createBaseVNode("td", { bg_lightgreen_ex: "" }),
/* @__PURE__ */ createBaseVNode("td", { fg_green: "" }),
/* @__PURE__ */ createBaseVNode("td")
]),
/* @__PURE__ */ createBaseVNode("tr", { fg_lightmagenta_ex: "" }, [
/* @__PURE__ */ createBaseVNode("td", null, "Magenta"),
/* @__PURE__ */ createBaseVNode("td", { bg_magenta: "" }),
/* @__PURE__ */ createBaseVNode("td", { bg_lightmagenta_ex: "" }),
/* @__PURE__ */ createBaseVNode("td", { fg_magenta: "" }),
/* @__PURE__ */ createBaseVNode("td")
]),
/* @__PURE__ */ createBaseVNode("tr", { fg_lightred_ex: "" }, [
/* @__PURE__ */ createBaseVNode("td", null, "Red"),
/* @__PURE__ */ createBaseVNode("td", { bg_red: "" }),
/* @__PURE__ */ createBaseVNode("td", { bg_lightred_ex: "" }),
/* @__PURE__ */ createBaseVNode("td", { fg_red: "" }),
/* @__PURE__ */ createBaseVNode("td")
]),
/* @__PURE__ */ createBaseVNode("tr", { fg_lightwhite_ex: "" }, [
/* @__PURE__ */ createBaseVNode("td", null, "White"),
/* @__PURE__ */ createBaseVNode("td", { bg_white: "" }),
/* @__PURE__ */ createBaseVNode("td", { bg_lightwhite_ex: "" }),
/* @__PURE__ */ createBaseVNode("td", { fg_white: "" }),
/* @__PURE__ */ createBaseVNode("td")
]),
/* @__PURE__ */ createBaseVNode("tr", null, [
/* @__PURE__ */ createBaseVNode("td", null, "Yellow"),
/* @__PURE__ */ createBaseVNode("td", { bg_yellow: "" }),
/* @__PURE__ */ createBaseVNode("td", { bg_lightyellow_ex: "" }),
/* @__PURE__ */ createBaseVNode("td", { fg_yellow: "" }),
/* @__PURE__ */ createBaseVNode("td")
])
])
], -1);
const _hoisted_35 = /* @__PURE__ */ createBaseVNode("p", null, "There are also control sequences that can be used to change the behavior of ANSI output:", -1);
const _hoisted_36 = /* @__PURE__ */ createBaseVNode("table", null, [
/* @__PURE__ */ createBaseVNode("thead", null, [
/* @__PURE__ */ createBaseVNode("tr", null, [
/* @__PURE__ */ createBaseVNode("th", null, "Control Sequences"),
/* @__PURE__ */ createBaseVNode("th", null, "Description")
])
]),
/* @__PURE__ */ createBaseVNode("tbody", null, [
/* @__PURE__ */ createBaseVNode("tr", null, [
/* @__PURE__ */ createBaseVNode("td", { style_bright: "" }),
/* @__PURE__ */ createBaseVNode("td", null, "Make the text brighter")
]),
/* @__PURE__ */ createBaseVNode("tr", null, [
/* @__PURE__ */ createBaseVNode("td", { style_dim: "" }),
/* @__PURE__ */ createBaseVNode("td", null, "Make the text dimmer")
]),
/* @__PURE__ */ createBaseVNode("tr", null, [
/* @__PURE__ */ createBaseVNode("td", { style_normal: "" }),
/* @__PURE__ */ createBaseVNode("td", null, [
/* @__PURE__ */ createTextVNode("Make the text normal (neither "),
/* @__PURE__ */ createBaseVNode("code", null, "{style_bright}"),
/* @__PURE__ */ createTextVNode(" nor "),
/* @__PURE__ */ createBaseVNode("code", null, "{style_dim}"),
/* @__PURE__ */ createTextVNode(")")
])
]),
/* @__PURE__ */ createBaseVNode("tr", null, [
/* @__PURE__ */ createBaseVNode("td", { style_reset_all: "" }),
/* @__PURE__ */ createBaseVNode("td", null, "Reset all text attributes to default. (This is automatically added to the end of every string.)")
]),
/* @__PURE__ */ createBaseVNode("tr", null, [
/* @__PURE__ */ createBaseVNode("td", { bg_reset: "" }),
/* @__PURE__ */ createBaseVNode("td", null, "Reset the background color to the user's default")
]),
/* @__PURE__ */ createBaseVNode("tr", null, [
/* @__PURE__ */ createBaseVNode("td", { fg_reset: "" }),
/* @__PURE__ */ createBaseVNode("td", null, "Reset the foreground color to the user's default")
])
])
], -1);
const _hoisted_37 = /* @__PURE__ */ createStaticVNode("", 44);
const _hoisted_81 = [
_hoisted_1,
_hoisted_34,
_hoisted_35,
_hoisted_36,
_hoisted_37
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_81);
}
const cli_development = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
cli_development as default
};
+15
View File
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"Tab Completion for QMK","description":"","frontmatter":{},"headers":[],"relativePath":"cli_tab_complete.md","filePath":"cli_tab_complete.md"}');
const _sfc_main = { name: "cli_tab_complete.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode('<h1 id="tab-completion-for-qmk" tabindex="-1">Tab Completion for QMK <a class="header-anchor" href="#tab-completion-for-qmk" aria-label="Permalink to &quot;Tab Completion for QMK&quot;">​</a></h1><p>If you are using Bash 4.2 or later, Zsh, or FiSH you can enable Tab Completion for the QMK CLI. This will let you tab complete the names of flags, keyboards, files, and other <code>qmk</code> options.</p><h2 id="setup" tabindex="-1">Setup <a class="header-anchor" href="#setup" aria-label="Permalink to &quot;Setup&quot;">​</a></h2><p>There are several ways you can setup tab completion.</p><h3 id="for-your-user-only" tabindex="-1">For Your User Only <a class="header-anchor" href="#for-your-user-only" aria-label="Permalink to &quot;For Your User Only&quot;">​</a></h3><p>Add this to the end of your <code>.profile</code> or <code>.bashrc</code>:</p><pre><code>source ~/qmk_firmware/util/qmk_tab_complete.sh\n</code></pre><p>If you put <code>qmk_firmware</code> into another location you will need to adjust this path.</p><p>Zsh users will need to load <code>bashcompinit</code>. The following can be added to <code>~/.zshrc</code> file:</p><pre><code>autoload -Uz bashcompinit &amp;&amp; bashcompinit\n</code></pre><h3 id="system-wide-symlink" tabindex="-1">System Wide Symlink <a class="header-anchor" href="#system-wide-symlink" aria-label="Permalink to &quot;System Wide Symlink&quot;">​</a></h3><p>If you want the tab completion available to all users of the system you can add a symlink to the <code>qmk_tab_complete.sh</code> script:</p><pre><code>ln -s ~/qmk_firmware/util/qmk_tab_complete.sh /etc/profile.d/qmk_tab_complete.sh\n</code></pre><h3 id="system-wide-copy" tabindex="-1">System Wide Copy <a class="header-anchor" href="#system-wide-copy" aria-label="Permalink to &quot;System Wide Copy&quot;">​</a></h3><p>In some cases a symlink may not work. Instead you can copy the file directly into place. Be aware that updates to the tab complete script may happen from time to time, you will want to recopy the file periodically.</p><pre><code>cp util/qmk_tab_complete.sh /etc/profile.d\n</code></pre>', 16);
const _hoisted_17 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_17);
}
const cli_tab_complete = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
cli_tab_complete as default
};
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"Tab Completion for QMK","description":"","frontmatter":{},"headers":[],"relativePath":"cli_tab_complete.md","filePath":"cli_tab_complete.md"}');
const _sfc_main = { name: "cli_tab_complete.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 16);
const _hoisted_17 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_17);
}
const cli_tab_complete = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
cli_tab_complete as default
};
File diff suppressed because one or more lines are too long
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"Coding Conventions (C)","description":"","frontmatter":{},"headers":[],"relativePath":"coding_conventions_c.md","filePath":"coding_conventions_c.md"}');
const _sfc_main = { name: "coding_conventions_c.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 11);
const _hoisted_12 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_12);
}
const coding_conventions_c = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
coding_conventions_c as default
};
File diff suppressed because one or more lines are too long
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"Coding Conventions (Python)","description":"","frontmatter":{},"headers":[],"relativePath":"coding_conventions_python.md","filePath":"coding_conventions_python.md"}');
const _sfc_main = { name: "coding_conventions_python.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 108);
const _hoisted_109 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_109);
}
const coding_conventions_python = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
coding_conventions_python as default
};
+441
View File
@@ -0,0 +1,441 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://www.w3.org/2000/svg"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:ns1="http://sozi.baierouge.fr"
xmlns:cc="http://web.resource.org/cc/"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
id="Layer_1"
enable-background="new 0 0 360 360"
xml:space="preserve"
viewBox="0 0 360 360"
version="1.1"
y="0px"
x="0px"
>
<g
>
</g
>
<g
>
<g
>
<path
d="m193.8 167.46l113.52-113.89c-23.457-23.36-50.2-38.727-82.193-47.23l-41.313 155.45c3.15 0.84 7.66 3.37 9.98 5.67z"
fill="#E0C3D3"
/>
<path
d="m209.95 151.26l97.367-97.688c-23.457-23.36-50.2-38.727-82.193-47.23l-35.43 133.29c7.71 1.86 14.76 5.91 20.25 11.63z"
fill="#E0A0C3"
/>
<path
d="m225.94 135.21l81.375-81.643c-23.457-23.36-50.2-38.727-82.193-47.23l-29.61 111.4c11.55 2.89 22.11 8.95 30.42 17.47z"
fill="#E080B5"
/>
<path
d="m241.95 119.15l65.369-65.585c-23.457-23.36-50.2-38.727-82.193-47.23l-23.784 89.491c15.38 3.919 29.46 12.004 40.6 23.324z"
fill="#E061A7"
/>
<path
d="m257.95 103.1l49.371-49.533c-23.457-23.36-50.2-38.727-82.193-47.23l-17.962 67.589c19.22 4.944 36.82 15.052 50.78 29.174z"
fill="#E04198"
/>
<path
d="m273.95 87.05l33.373-33.482c-23.457-23.36-50.2-38.727-82.193-47.23l-12.142 45.687c23.07 5.968 44.18 18.099 60.96 35.025z"
fill="#E0228B"
/>
<path
d="m289.94 70.999l17.375-17.431c-23.457-23.36-50.2-38.728-82.193-47.231l-6.321 23.784c26.91 6.994 51.54 21.148 71.13 40.878z"
fill="#E10071"
/>
</g
>
<g
>
<path
d="m174.73 162.13c2.934-0.792 6.094-0.876 8.876-0.292l41-155.36c-31.994-8.502-61.625-8.332-93.483 0.274l42.101 155.85c-0.01-0.02 1.13-0.37 1.5-0.47z"
fill="#FFD9D9"
/>
<path
d="m168.93 139.99c6.926-1.871 14.036-1.906 20.556-0.349l35.12-133.16c-31.994-8.502-61.625-8.332-93.483 0.274l36.127 133.73c0.95-0.27 1.19-0.36 1.67-0.49z"
fill="#FFB6B6"
/>
<path
d="m163.03 118.12c10.904-2.946 22.03-2.917 32.267-0.373l29.31-111.27c-31.994-8.502-61.625-8.332-93.483 0.274l30.218 111.86c0.96-0.27 1.19-0.36 1.68-0.49z"
fill="#FF8F8F"
/>
<path
d="m157.12 96.243c14.884-4.021 30.029-3.944 43.982-0.413l23.51-89.354c-31.994-8.502-61.625-8.332-93.483 0.274l24.304 89.968c0.96-0.268 1.2-0.344 1.69-0.475z"
fill="#FF6E6E"
/>
<path
d="m151.21 74.369c18.863-5.096 38.024-4.964 55.695-0.446l17.71-67.447c-31.994-8.502-61.625-8.332-93.483 0.274l18.395 68.094c0.96-0.267 1.2-0.344 1.69-0.475z"
fill="#FF4848"
/>
<path
d="m145.06 52.56c22.919-6.191 46.298-6.016 67.745-0.456l11.81-45.628c-31.994-8.502-61.625-8.332-93.483 0.274l12.484 46.214c0.97-0.263 1.13-0.317 1.45-0.404z"
fill="#FF2424"
/>
<path
d="m139.15 30.685c26.906-7.269 54.312-7.036 79.48-0.483l5.978-23.726c-31.994-8.502-61.625-8.332-93.483 0.274l6.575 24.34c0.97-0.262 1.13-0.318 1.45-0.405z"
fill="#FF0000"
/>
</g
>
<g
>
<path
d="m173.23 162.6l-42.1-155.85c-31.858 8.606-56.824 23.185-80.185 46.64l114.57 114.36c2.08-2.33 4.86-4.17 7.71-5.15z"
fill="#FFEBD9"
/>
<path
d="m167.25 140.48l-36.12-133.73c-31.858 8.606-56.824 23.185-80.185 46.64l98.442 98.288c4.77-5.09 11.17-9.11 17.86-11.2z"
fill="#FFD7B3"
/>
<path
d="m161.34 118.61l-30.21-111.86c-31.858 8.606-56.824 23.185-80.185 46.64l82.386 82.283c7.49-7.82 17.47-13.93 28.01-17.06z"
fill="#FFC48F"
/>
<path
d="m155.43 96.719l-24.3-89.969c-31.858 8.606-56.824 23.185-80.185 46.64l66.336 66.282c10.2-10.55 23.74-18.78 38.15-22.951z"
fill="#FFB26C"
/>
<path
d="m149.52 74.845l-18.39-68.095c-31.858 8.606-56.824 23.185-80.185 46.64l50.287 50.283c12.91-13.273 30.02-23.612 48.29-28.825z"
fill="#FF9F48"
/>
<path
d="m143.61 52.964l-12.48-46.214c-31.858 8.606-56.824 23.185-80.185 46.64l34.05 34.204c15.705-16.028 35.495-28.198 58.615-34.63z"
fill="#FF8C24"
/>
<path
d="m137.7 31.091l-6.575-24.34c-31.858 8.606-56.824 23.185-80.185 46.64l17.99 18.216c18.435-18.762 41.795-33.041 68.775-40.516z"
fill="#FF8000"
/>
</g
>
<g
>
<path
d="m166.24 167.56l-114.82-114.3c-23.36 23.457-36.884 48.514-45.386 80.507l155.98 41.453c0.85-3.15 1.92-5.35 4.23-7.66z"
fill="#FFFED9"
/>
<path
d="m149.96 151.35l-98.535-98.09c-23.36 23.457-36.884 48.514-45.386 80.507l133.85 35.573c1.8-6.74 5.26-12.94 10.07-17.99z"
fill="#FFFDB3"
/>
<path
d="m133.9 135.37l-82.475-82.11c-23.36 23.457-36.884 48.514-45.386 80.507l111.95 29.753c2.82-10.58 8.31-20.29 15.91-28.15z"
fill="#FFFC8F"
/>
<path
d="m117.84 119.37l-66.415-66.11c-23.36 23.457-36.884 48.514-45.386 80.507l90.037 23.929c3.845-14.42 11.364-27.64 21.764-38.33z"
fill="#FFFB6C"
/>
<path
d="m101.78 103.39l-50.355-50.13c-23.36 23.457-36.884 48.514-45.386 80.507l68.136 18.108c4.869-18.26 14.403-34.99 27.605-48.49z"
fill="#FFFA48"
/>
<path
d="m85.716 87.398l-34.291-34.138c-23.36 23.457-36.884 48.514-45.386 80.507l46.235 12.288c5.893-22.09 17.445-42.34 33.442-58.662z"
fill="#FFF924"
/>
<path
d="m69.657 71.411l-18.232-18.151c-23.36 23.457-36.884 48.514-45.386 80.507l24.334 6.468c6.917-25.93 20.488-49.694 39.284-68.829z"
fill="#FFFF00"
/>
</g
>
<g
>
<path
d="m162.13 185.27c-0.792-2.934-0.647-7.06-0.061-9.842l-155.89-41.15c-8.503 31.994-8.034 62.733 0.572 94.591l155.85-42.1c-0.02 0.01-0.37-1.13-0.47-1.5z"
fill="#EBFFD9"
/>
<path
d="m139.99 191.07c-1.963-7.268-1.891-14.725-0.095-21.517l-133.72-35.27c-8.503 31.994-8.034 62.733 0.572 94.591l133.73-36.127c-0.27-0.96-0.36-1.19-0.49-1.67z"
fill="#D8FFB6"
/>
<path
d="m118.12 196.98c-3.039-11.249-2.905-22.722-0.121-33.231l-111.82-29.47c-8.503 31.994-8.034 62.733 0.572 94.591l111.86-30.218c-0.27-0.96-0.36-1.19-0.49-1.67z"
fill="#C5FF92"
/>
<path
d="m96.244 202.89c-4.114-15.228-3.942-30.725-0.169-44.949l-89.897-23.66c-8.503 31.994-8.034 62.733 0.572 94.591l89.968-24.304c-0.268-0.97-0.343-1.2-0.474-1.68z"
fill="#B1FF6C"
/>
<path
d="m74.371 208.8c-5.189-19.208-4.962-38.724-0.201-56.666l-67.992-17.85c-8.503 31.994-8.034 62.733 0.572 94.591l68.094-18.395c-0.267-0.96-0.343-1.2-0.473-1.68z"
fill="#9DFF48"
/>
<path
d="m52.563 214.95c-6.285-23.265-6.011-46.996-0.205-68.714l-46.18-11.96c-8.503 31.994-8.034 62.733 0.572 94.591l46.214-12.484c-0.263-0.97-0.315-1.12-0.401-1.44z"
fill="#8AFF24"
/>
<path
d="m30.688 220.86c-7.362-27.251-7.029-55.011-0.229-80.452l-24.28-6.125c-8.503 31.994-8.034 62.733 0.572 94.591l24.34-6.575c-0.264-0.97-0.317-1.12-0.403-1.44z"
fill="#71FF00"
/>
</g
>
<g
>
<path
d="m162.6 186.77l-155.85 42.1c8.606 31.857 23.185 56.824 46.641 80.185l114.36-114.57c-2.33-2.09-4.17-4.87-5.15-7.72z"
fill="#DCFFDC"
/>
<path
d="m140.48 192.75l-133.73 36.12c8.606 31.857 23.185 56.824 46.641 80.185l98.286-98.442c-5.1-4.78-9.11-11.18-11.2-17.87z"
fill="#B6FFB6"
/>
<path
d="m118.61 198.66l-111.86 30.21c8.606 31.857 23.185 56.824 46.641 80.185l82.281-82.387c-7.82-7.49-13.93-17.47-17.06-28.01z"
fill="#92FF92"
/>
<path
d="m96.719 204.57l-89.969 24.3c8.606 31.857 23.185 56.824 46.641 80.185l66.28-66.336c-10.55-10.2-18.78-23.74-22.951-38.15z"
fill="#6EFF6E"
/>
<path
d="m74.845 210.48l-68.095 18.39c8.606 31.857 23.185 56.824 46.641 80.185l50.281-50.287c-13.274-12.92-23.614-30.02-28.825-48.29z"
fill="#4AFF4A"
/>
<path
d="m52.964 216.39l-46.214 12.48c8.606 31.857 23.185 56.824 46.641 80.185l34.202-34.049c-16.028-15.71-28.198-35.5-34.629-58.62z"
fill="#27FF27"
/>
<path
d="m31.091 222.3l-24.34 6.575c8.606 31.857 23.185 56.824 46.641 80.185l18.214-17.989c-18.763-18.43-33.043-41.79-40.515-68.77z"
fill="#00FF00"
/>
</g
>
<g
>
<path
d="m167.59 193.87l-114.31 114.78c23.455 23.359 47.388 37.112 79.381 45.616l41.606-156.55c-3.16-0.85-4.37-1.55-6.68-3.85z"
fill="#DCFFED"
/>
<path
d="m151.42 210.11l-98.14 98.54c23.455 23.359 47.388 37.112 79.381 45.616l35.721-134.41c-6.34-1.86-12.17-5.21-16.96-9.75z"
fill="#B6FFD9"
/>
<path
d="m135.43 226.16l-82.15 82.49c23.455 23.359 47.388 37.112 79.381 45.616l29.9-112.51c-10.18-2.89-19.52-8.26-27.13-15.6z"
fill="#92FFC6"
/>
<path
d="m119.43 242.22l-66.15 66.43c23.456 23.359 47.388 37.112 79.381 45.616l24.079-90.603c-14.02-3.92-26.87-11.31-37.31-21.45z"
fill="#6EFFB3"
/>
<path
d="m103.44 258.28l-50.16 50.37c23.455 23.359 47.388 37.112 79.381 45.616l18.258-68.701c-17.86-4.95-34.22-14.35-47.48-27.29z"
fill="#4AFFA0"
/>
<path
d="m87.451 274.34l-34.17 34.31c23.455 23.359 47.388 37.112 79.381 45.616l12.438-46.801c-21.69-5.97-41.58-17.4-57.649-33.13z"
fill="#27FF8D"
/>
<path
d="m71.459 290.39l-18.179 18.26c23.455 23.359 47.388 37.112 79.381 45.616l6.618-24.9c-25.53-6.99-48.93-20.44-67.821-38.98z"
fill="#00FF80"
/>
</g
>
<g
>
<path
d="m173.85 197.82l-41.812 156.61c31.993 8.501 61.11 8.47 92.969-0.136l-42.101-155.85c-2.95 0.59-6.08 0.35-9.06-0.62z"
fill="#DCFFFE"
/>
<path
d="m167.98 219.87l-35.941 134.56c31.993 8.501 61.11 8.47 92.969-0.136l-36.127-133.73c-6.82 1.57-14.22 1.29-20.9-0.69z"
fill="#B6FFFD"
/>
<path
d="m162.15 241.77l-30.107 112.65c31.993 8.501 61.11 8.47 92.969-0.136l-30.219-111.86c-10.69 2.62-22.24 2.33-32.64-0.65z"
fill="#92FFFC"
/>
<path
d="m156.32 263.68l-24.276 90.754c31.993 8.501 61.11 8.47 92.969-0.136l-24.305-89.969c-14.54 3.66-30.26 3.33-44.38-0.64z"
fill="#6EFFFB"
/>
<path
d="m150.49 285.57l-18.446 68.856c31.993 8.501 61.11 8.47 92.969-0.136l-18.396-68.095c-18.41 4.7-38.28 4.34-56.12-0.63z"
fill="#4AFFFA"
/>
<path
d="m144.7 307.61l-12.655 46.815c31.993 8.501 61.11 8.47 92.969-0.136l-12.484-46.215c-23.22 6.1-46.19 5.49-67.83-0.45z"
fill="#27FFF9"
/>
<path
d="m138.88 329.52l-6.839 24.913c31.994 8.501 61.11 8.47 92.969-0.136l-6.575-24.341c-27.08 7.13-54.2 6.49-79.56-0.43z"
fill="#00FFFF"
/>
</g
>
<g
>
<path
d="m192.47 193.82c-2.109 1.906-5.088 3.48-8.022 4.273-0.373 0.101-1.527 0.377-1.533 0.354l42.101 155.85c31.857-8.606 57.647-23.407 81.009-46.862l-113.56-113.61z"
fill="#DCEFFF"
/>
<path
d="m208.69 210.01c-4.857 4.652-11.156 8.255-18.107 10.133-0.485 0.131-0.729 0.176-1.699 0.42l36.127 133.73c31.857-8.606 57.647-23.407 81.009-46.862l-97.33-97.42z"
fill="#B6DEFF"
/>
<path
d="m224.73 226.01c-7.572 7.374-17.307 13.052-28.233 16.004-0.486 0.131-0.732 0.17-1.701 0.42l30.219 111.86c31.857-8.606 57.647-23.407 81.009-46.862l-81.3-81.42z"
fill="#92CEFF"
/>
<path
d="m240.78 242.02c-10.285 10.097-23.467 17.838-38.372 21.864-0.484 0.131-0.729 0.186-1.696 0.438l24.305 89.969c31.857-8.606 57.647-23.407 81.009-46.862l-65.25-65.41z"
fill="#6EBEFF"
/>
<path
d="m208.31 285.76c-0.485 0.132-0.731 0.185-1.698 0.439l18.396 68.095c31.857-8.606 57.647-23.407 81.009-46.862l-49.444-49.336c-13 12.81-29.38 22.56-48.27 27.66z"
fill="#4AADFF"
/>
<path
d="m213.98 307.7c-0.324 0.088-0.49 0.122-1.456 0.38l12.484 46.215c31.857-8.606 57.647-23.407 81.009-46.862l-33.533-33.371c-15.72 15.59-35.58 27.44-58.5 33.63z"
fill="#279EFF"
/>
<path
d="m219.89 329.57c-0.325 0.088-0.491 0.121-1.457 0.38l6.575 24.341c31.857-8.606 57.647-23.407 81.009-46.862l-17.47-17.385c-18.43 18.34-41.75 32.27-68.65 39.53z"
fill="#0080FF"
/>
</g
>
<g
>
<path
d="m197.71 185.73c-0.843 3.153-2.941 5.768-5.242 8.083l113.97 113.5c23.359-23.456 39.325-47.987 47.829-79.98l-156.56-41.6z"
fill="#DCDCFF"
/>
<path
d="m219.85 191.62c-2.041 6.976-5.889 13.329-11.148 18.372l97.727 97.328c23.359-23.456 39.325-47.987 47.829-79.98l-134.41-35.72z"
fill="#B6B6FF"
/>
<path
d="m241.75 197.44c-3.064 10.814-8.936 20.677-16.995 28.538l81.675 81.342c23.359-23.456 39.325-47.987 47.829-79.98l-112.52-29.9z"
fill="#9292FF"
/>
<path
d="m263.66 203.26c-4.089 14.652-11.976 28.037-22.837 38.716l65.61 65.343c23.359-23.456 39.325-47.987 47.829-79.98l-90.6-24.08z"
fill="#6E6EFF"
/>
<path
d="m285.56 209.08c-5.112 18.491-15.019 35.392-28.682 48.887l49.554 49.352c23.359-23.456 39.325-47.987 47.829-79.98l-68.7-18.26z"
fill="#4A4AFF"
/>
<path
d="m307.46 214.9c-6.137 22.329-18.063 42.745-34.525 59.06l33.496 33.358c23.359-23.456 39.325-47.987 47.829-79.98l-46.81-12.44z"
fill="#2727FF"
/>
<path
d="m329.36 220.72c-7.161 26.167-21.104 50.1-40.368 69.23l17.438 17.366c23.359-23.456 39.325-47.987 47.829-79.98l-24.9-6.62z"
fill="#0000FF"
/>
</g
>
<g
>
<path
d="m198.44 177.09c0.588 2.949 0.342 6.08-0.624 9.056l156.61 41.813c8.501-31.994 8.47-61.111-0.136-92.969l-155.85 42.1z"
fill="#ECDCFF"
/>
<path
d="m220.56 171.12c1.57 6.827 1.293 14.228-0.688 20.901l134.56 35.941c8.501-31.994 8.47-61.111-0.136-92.969l-133.73 36.13z"
fill="#D8B6FF"
/>
<path
d="m242.43 165.21c2.612 10.689 2.32 22.245-0.657 32.643l112.65 30.108c8.501-31.994 8.47-61.111-0.136-92.969l-111.85 30.22z"
fill="#C492FF"
/>
<path
d="m264.32 159.29c3.655 14.55 3.324 30.265-0.649 44.388l90.754 24.277c8.501-31.994 8.47-61.111-0.136-92.969l-89.96 24.3z"
fill="#B16EFF"
/>
<path
d="m286.2 153.38c4.699 18.412 4.345 38.281-0.625 56.128l68.855 18.446c8.501-31.994 8.47-61.111-0.136-92.969l-68.1 18.39z"
fill="#9E4AFF"
/>
<path
d="m308.08 147.47c6.088 23.216 5.471 46.185-0.464 67.83l46.814 12.655c8.501-31.994 8.47-61.111-0.136-92.969l-46.21 12.48z"
fill="#8B27FF"
/>
<path
d="m329.95 141.56c7.131 27.078 6.49 54.192-0.435 79.554l24.911 6.84c8.501-31.994 8.47-61.111-0.136-92.969l-24.34 6.58z"
fill="#8000FF"
/>
</g
>
<g
>
<path
d="m198.09 175.56c0.101 0.374 0.377 1.528 0.354 1.534l155.85-42.101c-8.606-31.858-23.408-57.649-46.862-81.009l-113.63 113.48c1.9 2.11 3.5 5.16 4.29 8.1z"
fill="#FEDCFF"
/>
<path
d="m220.14 169.42c0.131 0.486 0.176 0.729 0.42 1.699l133.73-36.126c-8.606-31.858-23.407-57.648-46.862-81.009l-97.479 97.275c4.61 4.84 8.32 11.25 10.19 18.16z"
fill="#FDB6FF"
/>
<path
d="m242.01 163.51c0.131 0.484 0.169 0.729 0.419 1.697l111.86-30.218c-8.606-31.858-23.408-57.649-46.862-81.009l-81.486 81.231c7.34 7.56 13.13 17.41 16.07 28.3z"
fill="#FC92FF"
/>
<path
d="m263.89 157.6c0.13 0.484 0.185 0.725 0.438 1.692l89.969-24.304c-8.606-31.858-23.408-57.649-46.862-81.009l-65.48 65.173c10.06 10.28 17.91 23.57 21.93 38.45z"
fill="#FB6EFF"
/>
<path
d="m285.76 151.69c0.131 0.483 0.183 0.724 0.438 1.69l68.095-18.395c-8.606-31.858-23.408-57.649-46.862-81.009l-49.482 49.121c12.79 13 22.71 29.74 27.8 48.6z"
fill="#FA4AFF"
/>
<path
d="m307.7 146.03c0.087 0.321 0.12 0.48 0.378 1.447l46.215-12.484c-8.606-31.858-23.408-57.649-46.862-81.009l-33.484 33.07c15.59 15.719 27.55 36.039 33.74 58.969z"
fill="#F927FF"
/>
<path
d="m329.58 140.12c0.086 0.321 0.118 0.48 0.377 1.446l24.341-6.575c-8.606-31.858-23.52-58.061-46.974-81.421l-17.375 17.432c18.32 18.435 32.35 42.199 39.62 69.109z"
fill="#FF00FF"
/>
</g
>
</g
>
<metadata
><rdf:RDF
><cc:Work
><dc:format
>image/svg+xml</dc:format
><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage"
/><cc:license
rdf:resource="http://creativecommons.org/licenses/publicdomain/"
/><dc:publisher
><cc:Agent
rdf:about="http://openclipart.org/"
><dc:title
>Openclipart</dc:title
></cc:Agent
></dc:publisher
></cc:Work
><cc:License
rdf:about="http://creativecommons.org/licenses/publicdomain/"
><cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction"
/><cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution"
/><cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks"
/></cc:License
></rdf:RDF
></metadata
></svg
>

After

Width:  |  Height:  |  Size: 17 KiB

File diff suppressed because one or more lines are too long
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"Compatible Microcontrollers","description":"","frontmatter":{},"headers":[],"relativePath":"compatible_microcontrollers.md","filePath":"compatible_microcontrollers.md"}');
const _sfc_main = { name: "compatible_microcontrollers.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 24);
const _hoisted_25 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_25);
}
const compatible_microcontrollers = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
compatible_microcontrollers as default
};
File diff suppressed because one or more lines are too long
+15
View File
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"Configuring QMK","description":"","frontmatter":{},"headers":[],"relativePath":"config_options.md","filePath":"config_options.md"}');
const _sfc_main = { name: "config_options.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 59);
const _hoisted_60 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_60);
}
const config_options = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
config_options as default
};
File diff suppressed because one or more lines are too long
@@ -0,0 +1,16 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const _imports_0 = "/assets/configurator_diagram.CbZon-ao.svg";
const __pageData = JSON.parse('{"title":"QMK Configurator Architecture","description":"","frontmatter":{},"headers":[],"relativePath":"configurator_architecture.md","filePath":"configurator_architecture.md"}');
const _sfc_main = { name: "configurator_architecture.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 30);
const _hoisted_31 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_31);
}
const configurator_architecture = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
configurator_architecture as default
};
File diff suppressed because one or more lines are too long
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"Adding Default Keymaps to QMK Configurator","description":"","frontmatter":{},"headers":[],"relativePath":"configurator_default_keymaps.md","filePath":"configurator_default_keymaps.md"}');
const _sfc_main = { name: "configurator_default_keymaps.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 34);
const _hoisted_35 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_35);
}
const configurator_default_keymaps = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
configurator_default_keymaps as default
};
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 39 KiB

File diff suppressed because one or more lines are too long
@@ -0,0 +1,15 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
const __pageData = JSON.parse('{"title":"QMK Configurator: Step by Step","description":"","frontmatter":{},"headers":[],"relativePath":"configurator_step_by_step.md","filePath":"configurator_step_by_step.md"}');
const _sfc_main = { name: "configurator_step_by_step.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 28);
const _hoisted_29 = [
_hoisted_1
];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", null, _hoisted_29);
}
const configurator_step_by_step = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
export {
__pageData,
configurator_step_by_step as default
};

Some files were not shown because too many files have changed in this diff Show More