mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-04-01 21:39:52 +00:00
Deploying to gh-pages from @ qmk/qmk_firmware@b39285807e 🚀
This commit is contained in:
parent
fd39eedae8
commit
164d75ab4d
404.html
ChangeLog
20190830.html20200229.html20200530.html20200829.html20201128.html20210227.html20210529.html20210828.html20211127.html20220226.html20220528.html20220827.html20221126.html20230226.html20230528.html20230827.html20231126.html20240225.html20240526.html
__capabilities.html__capabilities_inc.htmladc_driver.htmlapa102_driver.htmlapi_development_environment.htmlapi_development_overview.htmlapi_docs.htmlapi_overview.htmlarm_debugging.htmlassets
app.B02gM4TG.js
audio_driver.htmlbreaking_changes.htmlbreaking_changes_history.htmlbreaking_changes_instructions.htmlchibios_upgrade_instructions.htmlcli.htmlcli_commands.htmlcli_configuration.htmlcli_development.htmlcli_tab_complete.htmlcoding_conventions_c.htmlcoding_conventions_python.htmlcompatible_microcontrollers.htmlconfig_options.htmlconfigurator_architecture.htmlconfigurator_default_keymaps.htmlconfigurator_step_by_step.htmlconfigurator_troubleshooting.htmlcontributing.htmlcustom_matrix.htmlcustom_quantum_functions.htmldata_driven_config.htmldocumentation_best_practices.htmldocumentation_templates.htmlchunks
@localSearchIndexroot.BBXsS3Hw.js@localSearchIndexroot.BpGsD2Ym.jsVPLocalSearchBox.B8KfKVEU.jstheme.Y8mokbzj.js
cli_commands.md.CyobrwxG.jscli_commands.md.DCpejdln.jscli_commands.md.DCpejdln.lean.jscli_configuration.md.CGSB128P.jscli_configuration.md.CGSB128P.lean.jscli_configuration.md.DE7-bdby.jscli_development.md.CczMJOE3.jscli_development.md.CczMJOE3.lean.jscli_tab_complete.md.B7wjrflU.jscli_tab_complete.md.ChaxfzYo.jscli_tab_complete.md.ChaxfzYo.lean.jsfeature_audio.md.CSdy-B0q.jsfeature_audio.md.CSdy-B0q.lean.jsfeature_auto_shift.md.0xqmu9IK.jsfeature_auto_shift.md.0xqmu9IK.lean.jsfeature_auto_shift.md.Dqbx4mPc.jsfeature_layouts.md.DZtRrpjH.jsfeature_layouts.md.qcy8hNMO.jsfeature_layouts.md.qcy8hNMO.lean.jsfeature_macros.md.DpKdCniT.jsfeature_macros.md.DpKdCniT.lean.jsflashing_bootloadhid.md.aXGP0bN5.jsflashing_bootloadhid.md.aXGP0bN5.lean.jsflashing_bootloadhid.md.fHtXqWj8.jshand_wire.md.CieyXSH7.jshand_wire.md.CieyXSH7.lean.jshardware_keyboard_guidelines.md.Bvlp0QQ-.jshardware_keyboard_guidelines.md.D6JrfTvT.jshardware_keyboard_guidelines.md.D6JrfTvT.lean.jshow_a_matrix_works.md.JINKbCuX.jshow_a_matrix_works.md.JINKbCuX.lean.jshow_a_matrix_works.md.kbkC_Qqf.jskeymap.md.DG7FvBbs.jskeymap.md.Y4Fei1Ty.jskeymap.md.Y4Fei1Ty.lean.jsnewbs_building_firmware.md.C7XiOjZf.jsnewbs_building_firmware.md.C7XiOjZf.lean.jsnewbs_building_firmware.md.D-rVQJMN.jsnewbs_flashing.md.B42m5Wln.jsnewbs_flashing.md.B42m5Wln.lean.jsnewbs_getting_started.md.DD4a5qPC.jsnewbs_getting_started.md.DD4a5qPC.lean.js
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,5 +1,5 @@
|
||||
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";
|
||||
import { R as RawTheme } from "./chunks/theme.Y8mokbzj.js";
|
||||
function resolveThemeExtends(theme) {
|
||||
if (theme.extends) {
|
||||
const base = resolveThemeExtends(theme.extends);
|
File diff suppressed because one or more lines are too long
4
assets/chunks/@localSearchIndexroot.BpGsD2Ym.js
Normal file
4
assets/chunks/@localSearchIndexroot.BpGsD2Ym.js
Normal file
File diff suppressed because one or more lines are too long
@ -5,8 +5,8 @@ var __publicField = (obj, key, value) => {
|
||||
return value;
|
||||
};
|
||||
import { Y as __vitePreload, j as ref, x as watch, an as unrefElement, ao as tryOnScopeDispose, d as defineComponent, G as shallowRef, ap as computedAsync, h as computed, aq as useSessionStorage, ar as useLocalStorage, y as watchEffect, as as watchDebounced, k as onMounted, S as nextTick, R as onKeyStroke, a6 as useRouter, at as useEventListener, Z as useScrollLock, V as inBrowser, au as onBeforeUnmount, o as openBlock, b as createBlock, l as createBaseVNode, a2 as withModifiers, m as unref, av as withDirectives, aw as vModelText, ax as isRef, c as createElementBlock, n as normalizeClass, e as createCommentVNode, E as renderList, F as Fragment, a as createTextVNode, t as toDisplayString, ay as Teleport, p as pushScopeId, q as popScopeId, az as markRaw, aA as createApp, ac as dataSymbol, ai as pathToFile, aB as escapeRegExp, _ as _export_sfc } from "./framework.DyMmIvSC.js";
|
||||
import { u as useData, c as createSearchTranslate } from "./theme.vwpNwX24.js";
|
||||
const localSearchIndex = { "root": () => __vitePreload(() => import("./@localSearchIndexroot.BBXsS3Hw.js"), true ? [] : void 0) };
|
||||
import { u as useData, c as createSearchTranslate } from "./theme.Y8mokbzj.js";
|
||||
const localSearchIndex = { "root": () => __vitePreload(() => import("./@localSearchIndexroot.BpGsD2Ym.js"), true ? [] : void 0) };
|
||||
/*!
|
||||
* tabbable 6.2.0
|
||||
* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE
|
@ -1,4 +1,4 @@
|
||||
const __vite__fileDeps=["assets/chunks/VPLocalSearchBox.J3eBaAEB.js","assets/chunks/framework.DyMmIvSC.js"],__vite__mapDeps=i=>i.map(i=>__vite__fileDeps[i]);
|
||||
const __vite__fileDeps=["assets/chunks/VPLocalSearchBox.B8KfKVEU.js","assets/chunks/framework.DyMmIvSC.js"],__vite__mapDeps=i=>i.map(i=>__vite__fileDeps[i]);
|
||||
import { d as defineComponent, o as openBlock, c as createElementBlock, r as renderSlot, n as normalizeClass, a as createTextVNode, t as toDisplayString, b as createBlock, w as withCtx, e as createCommentVNode, T as Transition, _ as _export_sfc, u as useData$1, i as isExternal, f as treatAsHtml, g as withBase, h as computed, j as ref, k as onMounted, l as createBaseVNode, m as unref, p as pushScopeId, q as popScopeId, s as isActive, v as useMediaQuery, x as watch, y as watchEffect, z as onUnmounted, A as watchPostEffect, B as onUpdated, C as getScrollOffset, D as resolveComponent, F as Fragment, E as renderList, G as shallowRef, H as onContentUpdated, I as createVNode, J as resolveDynamicComponent, K as EXTERNAL_URL_RE, L as useRoute, M as mergeProps, N as inject, O as useWindowSize, P as normalizeStyle, Q as onClickOutside, R as onKeyStroke, S as nextTick, U as useWindowScroll, V as inBrowser, W as readonly, X as defineAsyncComponent, Y as __vitePreload, Z as useScrollLock, $ as provide, a0 as toHandlers, a1 as withKeys, a2 as withModifiers, a3 as useSlots, a4 as reactive, a5 as toRef, a6 as useRouter, a7 as onBeforeMount } from "./framework.DyMmIvSC.js";
|
||||
const _sfc_main$Z = /* @__PURE__ */ defineComponent({
|
||||
__name: "VPBadge",
|
||||
@ -2225,7 +2225,7 @@ const _hoisted_3$6 = {
|
||||
const _sfc_main$l = /* @__PURE__ */ defineComponent({
|
||||
__name: "VPNavBarSearch",
|
||||
setup(__props) {
|
||||
const VPLocalSearchBox = defineAsyncComponent(() => __vitePreload(() => import("./VPLocalSearchBox.J3eBaAEB.js"), true ? __vite__mapDeps([0,1]) : void 0));
|
||||
const VPLocalSearchBox = defineAsyncComponent(() => __vitePreload(() => import("./VPLocalSearchBox.B8KfKVEU.js"), true ? __vite__mapDeps([0,1]) : void 0));
|
||||
const VPAlgoliaSearchBox = () => null;
|
||||
const { theme: theme2 } = useData();
|
||||
const loaded = ref(false);
|
File diff suppressed because one or more lines are too long
15
assets/cli_commands.md.DCpejdln.js
Normal file
15
assets/cli_commands.md.DCpejdln.js
Normal file
File diff suppressed because one or more lines are too long
15
assets/cli_configuration.md.CGSB128P.js
Normal file
15
assets/cli_configuration.md.CGSB128P.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,15 +0,0 @@
|
||||
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 "Tab Completion for QMK""></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 "Setup""></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 "For Your User Only""></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 && 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 "System Wide Symlink""></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 "System Wide Copy""></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
|
||||
};
|
15
assets/cli_tab_complete.md.ChaxfzYo.js
Normal file
15
assets/cli_tab_complete.md.ChaxfzYo.js
Normal 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 "Tab Completion for QMK""></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 "Setup""></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 "For Your User Only""></a></h3><p>Add this to the end of your <code>.profile</code> or <code>.bashrc</code>:</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>source ~/qmk_firmware/util/qmk_tab_complete.sh</span></span></code></pre></div><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><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>autoload -Uz bashcompinit && bashcompinit</span></span></code></pre></div><h3 id="system-wide-symlink" tabindex="-1">System Wide Symlink <a class="header-anchor" href="#system-wide-symlink" aria-label="Permalink to "System Wide Symlink""></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><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>ln -s ~/qmk_firmware/util/qmk_tab_complete.sh /etc/profile.d/qmk_tab_complete.sh</span></span></code></pre></div><h3 id="system-wide-copy" tabindex="-1">System Wide Copy <a class="header-anchor" href="#system-wide-copy" aria-label="Permalink to "System Wide Copy""></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><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>cp util/qmk_tab_complete.sh /etc/profile.d</span></span></code></pre></div>', 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
15
assets/feature_auto_shift.md.0xqmu9IK.js
Normal file
15
assets/feature_auto_shift.md.0xqmu9IK.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
15
assets/feature_layouts.md.qcy8hNMO.js
Normal file
15
assets/feature_layouts.md.qcy8hNMO.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
15
assets/flashing_bootloadhid.md.aXGP0bN5.js
Normal file
15
assets/flashing_bootloadhid.md.aXGP0bN5.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
15
assets/hardware_keyboard_guidelines.md.D6JrfTvT.js
Normal file
15
assets/hardware_keyboard_guidelines.md.D6JrfTvT.js
Normal file
File diff suppressed because one or more lines are too long
15
assets/how_a_matrix_works.md.JINKbCuX.js
Normal file
15
assets/how_a_matrix_works.md.JINKbCuX.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
15
assets/keymap.md.Y4Fei1Ty.js
Normal file
15
assets/keymap.md.Y4Fei1Ty.js
Normal file
File diff suppressed because one or more lines are too long
@ -1,12 +1,12 @@
|
||||
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.DyMmIvSC.js";
|
||||
const __pageData = JSON.parse('{"title":"Keymap Overview","description":"","frontmatter":{},"headers":[],"relativePath":"keymap.md","filePath":"keymap.md"}');
|
||||
const _sfc_main = { name: "keymap.md" };
|
||||
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 50);
|
||||
const _hoisted_51 = [
|
||||
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_51);
|
||||
return openBlock(), createElementBlock("div", null, _hoisted_52);
|
||||
}
|
||||
const keymap = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
|
||||
export {
|
15
assets/newbs_building_firmware.md.C7XiOjZf.js
Normal file
15
assets/newbs_building_firmware.md.C7XiOjZf.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -454,7 +454,7 @@ const _hoisted_50 = /* @__PURE__ */ createBaseVNode("p", null, [
|
||||
/* @__PURE__ */ createBaseVNode("code", null, "y"),
|
||||
/* @__PURE__ */ createTextVNode(" to all of the prompts.")
|
||||
], -1);
|
||||
const _hoisted_51 = /* @__PURE__ */ createStaticVNode('<div class="tip custom-block"><p class="custom-block-title">TIP</p><p>The qmk home folder can be specified at setup with <code>qmk setup -H <path></code>, and modified afterwards using the <a href="./cli_configuration#single-key-example">cli configuration</a> and the variable <code>user.qmk_home</code>. For all available options run <code>qmk setup --help</code>.</p></div><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>If you already know how to use GitHub, <a href="./getting_started_github">we recommend that you follow these instructions</a> and use <code>qmk setup <github_username>/qmk_firmware</code> to clone your personal fork. If you don't know what that means you can safely ignore this message.</p></div><h2 id="_4-test-your-build-environment" tabindex="-1">4. Test Your Build Environment <a class="header-anchor" href="#_4-test-your-build-environment" aria-label="Permalink to "4. Test Your Build Environment""></a></h2><p>Now that your QMK build environment is set up, you can build a firmware for your keyboard. Start by trying to build the keyboard's default keymap. You should be able to do that with a command in this format:</p><pre><code>qmk compile -kb <keyboard> -km default\n</code></pre><p>For example, to build a firmware for a Clueboard 66% you would use:</p><pre><code>qmk compile -kb clueboard/66/rev3 -km default\n</code></pre><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>The keyboard option is the path relative to the keyboard directory, the above example would be found in <code>qmk_firmware/keyboards/clueboard/66/rev3</code>. If you're unsure you can view a full list of supported keyboards with <code>qmk list-keyboards</code>.</p></div><p>When it is done you should have a lot of output that ends similar to this:</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>Linking: .build/clueboard_66_rev3_default.elf [OK]</span></span>\n<span class="line"><span>Creating load file for flashing: .build/clueboard_66_rev3_default.hex [OK]</span></span>\n<span class="line"><span>Copying clueboard_66_rev3_default.hex to qmk_firmware folder [OK]</span></span>\n<span class="line"><span>Checking file size of clueboard_66_rev3_default.hex [OK]</span></span>\n<span class="line"><span> * The firmware size is fine - 26356/28672 (2316 bytes free)</span></span></code></pre></div><h1 id="creating-your-keymap" tabindex="-1">Creating Your Keymap <a class="header-anchor" href="#creating-your-keymap" aria-label="Permalink to "Creating Your Keymap""></a></h1><p>You are now ready to create your own personal keymap! Move on to <a href="./newbs_building_firmware">Building Your First Firmware</a> for that.</p>', 12);
|
||||
const _hoisted_51 = /* @__PURE__ */ createStaticVNode('<div class="tip custom-block"><p class="custom-block-title">TIP</p><p>The qmk home folder can be specified at setup with <code>qmk setup -H <path></code>, and modified afterwards using the <a href="./cli_configuration#single-key-example">cli configuration</a> and the variable <code>user.qmk_home</code>. For all available options run <code>qmk setup --help</code>.</p></div><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>If you already know how to use GitHub, <a href="./getting_started_github">we recommend that you follow these instructions</a> and use <code>qmk setup <github_username>/qmk_firmware</code> to clone your personal fork. If you don't know what that means you can safely ignore this message.</p></div><h2 id="_4-test-your-build-environment" tabindex="-1">4. Test Your Build Environment <a class="header-anchor" href="#_4-test-your-build-environment" aria-label="Permalink to "4. Test Your Build Environment""></a></h2><p>Now that your QMK build environment is set up, you can build a firmware for your keyboard. Start by trying to build the keyboard's default keymap. You should be able to do that with a command in this format:</p><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes github-light github-dark vp-code"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">qmk</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> compile</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -kb</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> <</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">keyboar</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">d</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">></span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -km</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> default</span></span></code></pre></div><p>For example, to build a firmware for a Clueboard 66% you would use:</p><div class="language-sh vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki shiki-themes github-light github-dark vp-code"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">qmk</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> compile</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -kb</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> clueboard/66/rev3</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -km</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> default</span></span></code></pre></div><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>The keyboard option is the path relative to the keyboard directory, the above example would be found in <code>qmk_firmware/keyboards/clueboard/66/rev3</code>. If you're unsure you can view a full list of supported keyboards with <code>qmk list-keyboards</code>.</p></div><p>When it is done you should have a lot of output that ends similar to this:</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>Linking: .build/clueboard_66_rev3_default.elf [OK]</span></span>\n<span class="line"><span>Creating load file for flashing: .build/clueboard_66_rev3_default.hex [OK]</span></span>\n<span class="line"><span>Copying clueboard_66_rev3_default.hex to qmk_firmware folder [OK]</span></span>\n<span class="line"><span>Checking file size of clueboard_66_rev3_default.hex [OK]</span></span>\n<span class="line"><span> * The firmware size is fine - 26356/28672 (2316 bytes free)</span></span></code></pre></div><h1 id="creating-your-keymap" tabindex="-1">Creating Your Keymap <a class="header-anchor" href="#creating-your-keymap" aria-label="Permalink to "Creating Your Keymap""></a></h1><p>You are now ready to create your own personal keymap! Move on to <a href="./newbs_building_firmware">Building Your First Firmware</a> for that.</p>', 12);
|
||||
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
||||
const _component_PluginTabsTab = resolveComponent("PluginTabsTab");
|
||||
const _component_PluginTabs = resolveComponent("PluginTabs");
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user