qmk_firmware/static/Getting_Started/index.html

165 lines
15 KiB
HTML
Raw Permalink Normal View History

2018-05-06 19:34:47 +00:00
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<title>Getting Started - QMK Firmware</title>
<meta name="description" content="Keyboard controller firmware for Atmel AVR and ARM USB families">
<meta name="author" content="QMK Community">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
2018-05-08 04:02:24 +00:00
<link rel="icon" href="../themes/daux/img/favicon-navy.png" type="image/x-icon">
2018-05-06 19:34:47 +00:00
<!-- Mobile -->
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Font -->
<!-- CSS -->
2018-05-08 04:02:24 +00:00
<link href='../themes/daux/css/theme-navy.min.css' rel='stylesheet' type='text/css'>
2018-05-06 19:34:47 +00:00
<!-- Tipue Search -->
<link href="../tipuesearch/tipuesearch.css" rel="stylesheet">
<!--[if lt IE 9]>
<script src="../themes/daux/js/html5shiv-3.7.3.min.js"></script>
<![endif]-->
</head>
<body class=" ">
<div class="Columns content">
<aside class="Columns__left Collapsible">
<button type="button" class="Button Collapsible__trigger">
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
<span class="Collapsible__trigger__bar"></span>
</button>
<a class="Brand" href="../index.html">QMK Firmware</a>
<div class="Search">
<svg class="Search__icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 451 451">
<path d="M447.05 428l-109.6-109.6c29.4-33.8 47.2-77.9 47.2-126.1C384.65 86.2 298.35 0 192.35 0 86.25 0 .05 86.3.05 192.3s86.3 192.3 192.3 192.3c48.2 0 92.3-17.8 126.1-47.2L428.05 447c2.6 2.6 6.1 4 9.5 4s6.9-1.3 9.5-4c5.2-5.2 5.2-13.8 0-19zM26.95 192.3c0-91.2 74.2-165.3 165.3-165.3 91.2 0 165.3 74.2 165.3 165.3s-74.1 165.4-165.3 165.4c-91.1 0-165.3-74.2-165.3-165.4z"/>
</svg>
<input type="search" id="tipue_search_input" class="Search__field" placeholder="Search..." autocomplete="on"
results=25 autosave=text_search>
</div>
<div class="Collapsible__content">
<!-- Navigation -->
2018-05-08 04:02:24 +00:00
<ul class='Nav'><li class='Nav__item Nav__item--open has-children'><a href="../Getting_Started/index.html" class="folder"><i class="Nav__arrow">&nbsp;</i>Getting Started</a><ul class='Nav'><li class='Nav__item has-children'><a href="../Getting_Started/Install_Build_Tools/index.html" class="folder"><i class="Nav__arrow">&nbsp;</i>Install Build Tools</a><ul class='Nav'><li class='Nav__item '><a href="../Getting_Started/Install_Build_Tools/Vagrant.html">Vagrant</a></li></ul></li><li class='Nav__item '><a href="../Getting_Started/Build_Compile_Instructions.html">Build Compile Instructions</a></li><li class='Nav__item '><a href="../Getting_Started/Flashing_Firmware.html">Flashing Firmware</a></li><li class='Nav__item '><a href="../Getting_Started/Contributing.html">Contributing</a></li><li class='Nav__item '><a href="../Getting_Started/How_to_Use_GitHub.html">How to Use GitHub</a></li><li class='Nav__item '><a href="../Getting_Started/Getting_Help.html">Getting Help</a></li></ul></li><li class='Nav__item has-children'><a href="../Complete_Newbs_Guide/index.html" class="folder"><i class="Nav__arrow">&nbsp;</i>Complete Newbs Guide</a><ul class='Nav'><li class='Nav__item '><a href="../Complete_Newbs_Guide/Complete_Newbie's_Guide.html">Complete Newbie's Guide</a></li><li class='Nav__item '><a href="../Complete_Newbs_Guide/Building_Your_First_Firmware.html">Building Your First Firmware</a></li><li class='Nav__item '><a href="../Complete_Newbs_Guide/Flashing_Firmware.html">Flashing Firmware</a></li><li class='Nav__item '><a href="../Complete_Newbs_Guide/Testing_and_Debugging.html">Testing and Debugging</a></li></ul></li><li class='Nav__item has-children'><a href="../FAQ/index.html" class="folder"><i class="Nav__arrow">&nbsp;</i>FAQ</a><ul class='Nav'><li class='Nav__item '><a href="../FAQ/General_FAQ.html">General FAQ</a></li><li class='Nav__item '><a href="../FAQ/Build_Compile_QMK.html">Build Compile QMK</a></li><li class='Nav__item '><a href="../FAQ/Debugging_and_Troubleshooting.html">Debugging and Troubleshooting</a></li><li class='Nav__item '><a href="../FAQ/Keymaps.html">Keymaps</a></li></ul></li><li class='Nav__item has-children'><a href="../Hardware/index.html" class="folder"><i class="Nav__arrow">&nbsp;</i>Hardware</a><ul class='Nav'><li class='Nav__item '><a href="../Hardware/AVR_Processors.html">AVR Processors</a></li><li class='Nav__item '><a href="../Hardware/Drivers.html">Drivers</a></li></ul></li><li class='Nav__item has-children'><a href="../Features/index.html" class="folder"><i class="Nav__arrow">&nbsp;</i>Features</a><ul class='Nav'><li class='Nav__item '><a href="../Features/Advanced_Keycodes.html">Advanced Keycodes</a></li><li class='Nav__item '><a href="../Features/Audio.html">Audio</a></li><li class='Nav__item '><a href="../Features/Auto_Shift.html">Auto Shift</a></li><li class='Nav__item '><a href="../Features/Backlight.html">Backlight</a></li><li class='Nav__item '><a href="../Features/Bluetooth.html">Bluetooth</a></li><li class='Nav__item '><a href="../Features/Bootmagic.html">Bootmagic</a></li><li class='Nav__item '><a href="../Features/Command.html">Command</a></li><li class='Nav__item '><a href="../Features/Dynamic_Macros.html">Dynamic Macros</a></li><li class='Nav__item '><a href="../Features/Grave_Escape.html">Grave Escape</a></li><li class='Nav__item '><a href="../Features/Key_Lock.html">Key Lock</a></li><li class='Nav__item '><a href="../Features/Layouts.html">Layouts</a></li><li class='Nav__item '><a href="../Features/Leader_Key.html">Leader Key</a></li><li class='Nav__item '><a href="../Features/Macros.html">Macros</a></li><li class='Nav__item '><a href="../Features/Mouse_Keys.html">Mouse Keys</a></li><li class='Nav__item '><a href="../Features/Pointing_Device.html">Pointing Device</a></li><li class='Nav__item '><a href="../Features/PS_2_Mouse.html">PS 2 Mouse</a></li><li class='Nav__item '><a href="../Features/RGB_Lighting.html">RGB Lighting</a></li><li class='Nav__item '><a href="../Features/Space_Cadet_Shift.html">Space Cadet Shift</a></li><li class='Nav__item '><a href="../Fea
2018-05-06 19:34:47 +00:00
<div class="Links">
2018-05-08 04:02:24 +00:00
</div>
2018-05-06 19:34:47 +00:00
</div>
</aside>
<div class="Columns__right Columns__right--full">
<div class="Columns__right__content">
<div class="doc_content">
<article class="Page">
<div class="Page__header">
<h1><a href="../Getting_Started/index.html">Getting Started</a></h1>
2018-05-08 04:02:24 +00:00
<span class="EditOn">
<a href="https://github.com/qmk/qmk_firmware/blob/master/docs/01_Getting_Started/index.md" target="_blank">
Edit on GitHub </a>
</span>
</div>
2018-05-06 19:34:47 +00:00
<div class="s-content">
<ul class="TableOfContents">
<li>
<p><a href="#page_Introduction">Introduction</a></p>
<ul class="TableOfContents">
<li>
<p><a href="#page_Basic-QMK-Structure">Basic QMK Structure</a></p>
<ul class="TableOfContents">
<li>
<p><a href="#page_Keyboard-Project-Structure">Keyboard Project Structure</a></p>
</li>
<li>
<p><a href="#page_Keymap-Structure">Keymap Structure</a></p>
</li>
</ul>
</li>
</ul>
</li>
<li>
<p><a href="#page_The-File">The <code>config.h</code> File</a></p>
</li>
</ul>
<h1 id="page_Introduction">Introduction</h1>
<p>This page attempts to explain the basic information you need to know to work with the QMK project. It assumes that you are familiar with navigating a Unix shell, but does not assume you are familiar with C or with compiling using make.</p>
<h2 id="page_Basic-QMK-Structure">Basic QMK Structure</h2>
<p>QMK is a fork of <a href="https://github.com/tmk" class="Link--external">Jun Wako</a>'s <a href="https://github.com/tmk/tmk_keyboard" class="Link--external">tmk_keyboard</a> project. The original TMK code, with modifications, can be found in the <code>tmk</code> folder. The QMK additions to the project may be found in the <code>quantum</code> folder. Keyboard projects may be found in the <code>handwired</code> and <code>keyboard</code> folders.</p>
<h3 id="page_Keyboard-Project-Structure">Keyboard Project Structure</h3>
<p>Within the folder <code>keyboards</code> and its subfolder <code>handwired</code> is a directory for each keyboard project, for example <code>qmk_firmware/keyboards/clueboard</code>. Within it you'll find the following structure:</p>
<ul>
<li>
<code>keymaps/</code>: Different keymaps that can be built</li>
<li>
<code>rules.mk</code>: The file that sets the default &quot;make&quot; options. Do not edit this file directly, instead use a keymap specific <code>Makefile</code>
</li>
<li>
<code>config.h</code>: The file that sets the default compile time options. Do not edit this file directly, instead use a keymap specific <code>config.h</code>.</li>
</ul>
<h3 id="page_Keymap-Structure">Keymap Structure</h3>
<p>In every keymap folder, the following files may be found. Only <code>keymap.c</code> is required, and if the rest of the files are not found the default options will be chosen.</p>
<ul>
<li>
<code>config.h</code>: the options to configure your keymap</li>
<li>
<code>keymap.c</code>: all of your keymap code, required</li>
<li>
<code>rules.mk</code>: the features of QMK that are enabled</li>
<li>
<code>readme.md</code>: a description of your keymap, how others might use it, and explanations of features. Please upload images to a service like imgur.</li>
</ul>
<h1 id="page_The-File">The <code>config.h</code> File</h1>
<p>There are 2 <code>config.h</code> locations:</p>
<ul>
<li>keyboard (<code>/keyboards/&lt;keyboard&gt;/config.h</code>)</li>
<li>keymap (<code>/keyboards/&lt;keyboard&gt;/keymaps/&lt;keymap&gt;/config.h</code>)</li>
</ul>
<p>If the keymap <code>config.h</code> exists, that file is included by the build system and the keyboard <code>config.h</code> is not included. If you wish to override settings in your keymap's <code>config.h</code> you will need to include some glue code:</p>
<pre><code>#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#include &quot;config_common.h&quot;
</code></pre>
<p>If you want to override a setting from the parent <code>config.h</code> file, you need to <code>#undef</code> and then <code>#define</code> the setting again, like this:</p>
<pre><code class="language-c">#undef MY_SETTING
#define MY_SETTING 4
</code></pre>
</div>
<nav>
<ul class="Pager">
2018-05-08 04:02:24 +00:00
<li class=Pager--prev><a href="../index.html">Previous</a></li> <li class=Pager--next><a href="../Getting_Started/Install_Build_Tools/index.html">Next</a></li> </ul>
2018-05-06 19:34:47 +00:00
</nav>
</article>
</div>
</div>
</div>
</div>
<!-- JS -->
<script src="../themes/daux/js/jquery-1.11.3.min.js"></script><script src="../themes/daux/js/highlight.pack.js"></script><script src="../themes/daux/js/daux.js"></script>
<!-- Tipue Search -->
<script type="text/javascript" src="../tipuesearch/tipuesearch.js"></script>
<script>
window.onunload = function(){}; // force $(document).ready to be called on back/forward navigation in firefox
$(function() {
tipuesearch({
'base_url': '../'
});
});
</script>
</body>
</html>