aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorskullY <skullydazed@gmail.com>2020-02-20 15:50:50 -0800
committerskullydazed <skullydazed@users.noreply.github.com>2020-03-05 16:00:10 -0800
commita701c15d872ad171592335e61e91d7234dbec54a (patch)
treeef06fabdf0c0cd5d7457b63c48264700ac7fc67c
parent1b7fa46f8e0616450bed8bff71bc1cffbca2eac8 (diff)
downloadqmk_firmware-a701c15d872ad171592335e61e91d7234dbec54a.tar.gz
qmk_firmware-a701c15d872ad171592335e61e91d7234dbec54a.zip
Rework the newbs guide around the qmk cli
-rw-r--r--docs/README.md17
-rw-r--r--docs/_summary.md5
-rw-r--r--docs/de/_summary.md2
-rw-r--r--docs/es/_summary.md2
-rw-r--r--docs/faq_general.md38
-rw-r--r--docs/fr-fr/_summary.md2
-rw-r--r--docs/getting_started_getting_help.md4
-rw-r--r--docs/he-il/_summary.md2
-rw-r--r--docs/ja/_summary.md2
-rw-r--r--docs/newbs.md21
-rw-r--r--docs/newbs_building_firmware.md46
-rw-r--r--docs/newbs_flashing.md275
-rw-r--r--docs/newbs_getting_started.md63
-rw-r--r--docs/newbs_testing_debugging.md10
-rw-r--r--docs/pt-br/_summary.md2
-rw-r--r--docs/ru-ru/_summary.md2
-rw-r--r--docs/zh-cn/_summary.md4
17 files changed, 143 insertions, 354 deletions
diff --git a/docs/README.md b/docs/README.md
index 5f1f29754..477028d10 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -9,7 +9,7 @@
9 9
10## What is QMK Firmware? 10## What is QMK Firmware?
11 11
12QMK (*Quantum Mechanical Keyboard*) is an open source community centered around developing computer input devices. Early on the community was keyboard focused, but has now grown to include mice and MIDI devices as well. The community maintains [QMK Firmware](https://github.com/qmk/qmk_firmware), [QMK Configurator](https://config.qmk.fm), [QMK Toolbox](https://github.com/qmk/qmk_toolbox), [qmk.fm](https://qmk.fm), and this documentation. 12QMK (*Quantum Mechanical Keyboard*) is an open source community centered around developing computer input devices. The community encompasses all sorts of input devices, such as keyboards, mice, and MIDI devices. A core group of collaborators maintains [QMK Firmware](https://github.com/qmk/qmk_firmware), [QMK Configurator](https://config.qmk.fm), [QMK Toolbox](https://github.com/qmk/qmk_toolbox), [qmk.fm](https://qmk.fm), and this documentation with the help of community members like you.
13 13
14## Get Started 14## Get Started
15 15
@@ -18,9 +18,24 @@ Totally new to QMK? There are two ways to get started:
18* Basic: [QMK Configurator](https://config.qmk.fm) 18* Basic: [QMK Configurator](https://config.qmk.fm)
19 * Just select your keyboard from the dropdown and program your keyboard. 19 * Just select your keyboard from the dropdown and program your keyboard.
20 * We have an [introductory video](https://www.youtube.com/watch?v=-imgglzDMdY) you can watch. 20 * We have an [introductory video](https://www.youtube.com/watch?v=-imgglzDMdY) you can watch.
21 * There is also an overview [document you can read](newbs_building_firmware_configurator.md).
21* Advanced: [Use The Source](newbs.md) 22* Advanced: [Use The Source](newbs.md)
22 * More powerful, but harder to use 23 * More powerful, but harder to use
23 24
24## Make It Yours 25## Make It Yours
25 26
26QMK has lots of [features](features.md) to explore, and a good deal of reference documentation to dig through. Most features are taken advantage of by modifying your [keymap](keymap.md), and changing the [keycodes](keycodes.md). 27QMK has lots of [features](features.md) to explore, and a good deal of reference documentation to dig through. Most features are taken advantage of by modifying your [keymap](keymap.md), and changing the [keycodes](keycodes.md).
28
29## Need help?
30
31Check out the [support page](getting_started_getting_help.md) to see how you can get help using QMK.
32
33## Give Back
34
35There are a lot of ways you can contribute to the QMK Community. The easiest way to get started is to use it and spread the word to your friends.
36
37* Help people out on our forums and chat rooms:
38 * [/r/olkb](https://www.reddit.com/r/olkb/)
39 * [Discord Server](https://discord.gg/Uq7gcHh)
40* Contribute to our documentation by clicking "Edit This Page" at the bottom
41* [Translate our documentation into your language](translating.md)
diff --git a/docs/_summary.md b/docs/_summary.md
index 7897efe45..baa493717 100644
--- a/docs/_summary.md
+++ b/docs/_summary.md
@@ -20,7 +20,7 @@
20 * [Driver Installation with Zadig](driver_installation_zadig.md) 20 * [Driver Installation with Zadig](driver_installation_zadig.md)
21 21
22* Using QMK 22* Using QMK
23 * [Support](support.md) 23 * [Support](getting_started_getting_help.md)
24 * Guides 24 * Guides
25 * [ARM Debugging Guide](arm_debugging.md) 25 * [ARM Debugging Guide](arm_debugging.md)
26 * [Best Git Practices](newbs_git_best_practices.md) 26 * [Best Git Practices](newbs_git_best_practices.md)
@@ -37,7 +37,8 @@
37 * [Vagrant Guide](getting_started_vagrant.md) 37 * [Vagrant Guide](getting_started_vagrant.md)
38 38
39 * QMK Features 39 * QMK Features
40 * [Keycodes](keycodes.md) 40 * Keycodes
41 * [Full List](keycodes.md)
41 * [Basic Keycodes](keycodes_basic.md) 42 * [Basic Keycodes](keycodes_basic.md)
42 * [US ANSI Shifted Keys](keycodes_us_ansi_shifted.md) 43 * [US ANSI Shifted Keys](keycodes_us_ansi_shifted.md)
43 * [Quantum Keycodes](quantum_keycodes.md) 44 * [Quantum Keycodes](quantum_keycodes.md)
diff --git a/docs/de/_summary.md b/docs/de/_summary.md
index f3ce806ba..ab9b0a053 100644
--- a/docs/de/_summary.md
+++ b/docs/de/_summary.md
@@ -108,7 +108,7 @@
108* Andere Themen 108* Andere Themen
109 * [Eclipse mit QMK](de/other_eclipse.md) 109 * [Eclipse mit QMK](de/other_eclipse.md)
110 * [VSCode mit QMK](de/other_vscode.md) 110 * [VSCode mit QMK](de/other_vscode.md)
111 * [Support](de/support.md) 111 * [Support](de/getting_started_getting_help.md)
112 * [Übersetzungen](de/translating.md) 112 * [Übersetzungen](de/translating.md)
113 113
114* QMK Internals (In Progress) 114* QMK Internals (In Progress)
diff --git a/docs/es/_summary.md b/docs/es/_summary.md
index 03bf05ba8..73f4b0b18 100644
--- a/docs/es/_summary.md
+++ b/docs/es/_summary.md
@@ -108,7 +108,7 @@
108* Otros temas 108* Otros temas
109 * [Usando Eclipse con QMK](es/other_eclipse.md) 109 * [Usando Eclipse con QMK](es/other_eclipse.md)
110 * [Usando VSCode con QMK](es/other_vscode.md) 110 * [Usando VSCode con QMK](es/other_vscode.md)
111 * [Soporte](es/support.md) 111 * [Soporte](es/getting_started_getting_help.md)
112 * [Cómo añadir traducciones](es/translating.md) 112 * [Cómo añadir traducciones](es/translating.md)
113 113
114* QMK Internals (En progreso) 114* QMK Internals (En progreso)
diff --git a/docs/faq_general.md b/docs/faq_general.md
index f14272ede..8e9771cbc 100644
--- a/docs/faq_general.md
+++ b/docs/faq_general.md
@@ -4,6 +4,44 @@
4 4
5[QMK](https://github.com/qmk), short for Quantum Mechanical Keyboard, is a group of people building tools for custom keyboards. We started with the [QMK firmware](https://github.com/qmk/qmk_firmware), a heavily modified fork of [TMK](https://github.com/tmk/tmk_keyboard). 5[QMK](https://github.com/qmk), short for Quantum Mechanical Keyboard, is a group of people building tools for custom keyboards. We started with the [QMK firmware](https://github.com/qmk/qmk_firmware), a heavily modified fork of [TMK](https://github.com/tmk/tmk_keyboard).
6 6
7## I don't know where to start!
8
9If this is the case, then you should start with our [Newbs Guide](newbs.md). There is a lot of great info there, and that should cover everything you need to get started.
10
11If that's an issue, hop onto the [QMK Configurator](https://config.qmk.fm), as that will handle a majority of what you need there.
12
13## How can I flash the firmware I built?
14
15First, head to the [Compiling/Flashing FAQ Page](faq_build.md). There is a good deal of info there, and you'll find a bunch of solutions to common issues there.
16
17## What if I have an issue that isn't covered here?
18
19Okay, that's fine. Then please check the [open issues in our GitHub](https://github.com/qmk/qmk_firmware/issues) to see if somebody is experiencing the same thing (make sure it's not just similar, but actually the same).
20
21If you can't find anything, then please open a [new issue](https://github.com/qmk/qmk_firmware/issues/new)!
22
23## What if I found a bug?
24
25Then please open an [issue](https://github.com/qmk/qmk_firmware/issues/new), and if you know how to fix it, open up a Pull Request on GitHub with the fix.
26
27## But `git` and `GitHub` are intimidating!
28
29Don't worry, we have some pretty nice [Guidelines](newbs_git_best_practices.md) on how to start using `git` and GitHub to make things easier to develop.
30
31Additionally, you can find additional `git` and GitHub related links [here](newbs_learn_more_resources.md).
32
33## I have a Keyboard that I want to add support for
34
35Awesome! Open up a Pull Request for it. We'll review the code, and merge it!
36
37### What if I want to do brand it with `QMK`?
38
39That's amazing! We would love to assist you with that!
40
41In fact, we have a [whole page](https://qmk.fm/powered/) dedicated to adding QMK Branding to your page and keyboard. This covers pretty much everything you need (knowledge and images) to officially support QMK.
42
43If you have any questions about this, open an issue or head to [Discord](https://discord.gg/Uq7gcHh).
44
7## What Differences Are There Between QMK and TMK? 45## What Differences Are There Between QMK and TMK?
8 46
9TMK was originally designed and implemented by [Jun Wako](https://github.com/tmk). QMK started as [Jack Humbert](https://github.com/jackhumbert)'s fork of TMK for the Planck. After a while Jack's fork had diverged quite a bit from TMK, and in 2015 Jack decided to rename his fork to QMK. 47TMK was originally designed and implemented by [Jun Wako](https://github.com/tmk). QMK started as [Jack Humbert](https://github.com/jackhumbert)'s fork of TMK for the Planck. After a while Jack's fork had diverged quite a bit from TMK, and in 2015 Jack decided to rename his fork to QMK.
diff --git a/docs/fr-fr/_summary.md b/docs/fr-fr/_summary.md
index 38e3abe7c..23be5d7a0 100644
--- a/docs/fr-fr/_summary.md
+++ b/docs/fr-fr/_summary.md
@@ -112,7 +112,7 @@
112* Autres sujets 112* Autres sujets
113 * [Utiliser Eclipse avec QMK](fr-fr/other_eclipse.md) 113 * [Utiliser Eclipse avec QMK](fr-fr/other_eclipse.md)
114 * [Utiliser VSCode avec QMK](fr-fr/other_vscode.md) 114 * [Utiliser VSCode avec QMK](fr-fr/other_vscode.md)
115 * [Support](fr-fr/support.md) 115 * [Support](fr-fr/getting_started_getting_help.md)
116 * [Comment ajouter des traductions](fr-fr/translating.md) 116 * [Comment ajouter des traductions](fr-fr/translating.md)
117 117
118* À l’intérieur de QMK (En cours de documentation) 118* À l’intérieur de QMK (En cours de documentation)
diff --git a/docs/getting_started_getting_help.md b/docs/getting_started_getting_help.md
index 9788ad38e..79c1dbc1b 100644
--- a/docs/getting_started_getting_help.md
+++ b/docs/getting_started_getting_help.md
@@ -2,9 +2,11 @@
2 2
3There are a lot of resources for getting help with QMK. 3There are a lot of resources for getting help with QMK.
4 4
5Please read our [Code of Conduct](https://qmk.fm/coc/) before participating in any of our community spaces.
6
5## Realtime Chat 7## Realtime Chat
6 8
7You can find QMK developers and users on our main [Discord server](https://discord.gg/Uq7gcHh). There are specific channels in the server for chatting about the firmware, Toolbox, hardware, and configurator. 9If you need help with something, the best place to get quick support is going to be on our [Discord Server](https://discord.gg/Uq7gcHh). There is usually somebody online, and there are a bunch of very helpful people there.
8 10
9## OLKB Subreddit 11## OLKB Subreddit
10 12
diff --git a/docs/he-il/_summary.md b/docs/he-il/_summary.md
index 804db534a..19a0e1a7d 100644
--- a/docs/he-il/_summary.md
+++ b/docs/he-il/_summary.md
@@ -124,7 +124,7 @@
124* נושאים נוספים 124* נושאים נוספים
125 * [שימוש ב - Eclipse עם QMK](he-il/other_eclipse.md) 125 * [שימוש ב - Eclipse עם QMK](he-il/other_eclipse.md)
126 * [שימוש ב - VSCode עם QMK](he-il/other_vscode.md) 126 * [שימוש ב - VSCode עם QMK](he-il/other_vscode.md)
127 * [תמיכה](he-il/support.md) 127 * [תמיכה](he-il/getting_started_getting_help.md)
128 * [כיצד להוסיף תרגום](he-il/translating.md) 128 * [כיצד להוסיף תרגום](he-il/translating.md)
129 129
130* QMK מבפנים (בתהליך) 130* QMK מבפנים (בתהליך)
diff --git a/docs/ja/_summary.md b/docs/ja/_summary.md
index afe962f86..6b28d97e0 100644
--- a/docs/ja/_summary.md
+++ b/docs/ja/_summary.md
@@ -117,7 +117,7 @@
117* 他の話題 117* 他の話題
118 * [Eclipse で QMK を使用](ja/other_eclipse.md) 118 * [Eclipse で QMK を使用](ja/other_eclipse.md)
119 * [VSCode で QMK を使用](ja/other_vscode.md) 119 * [VSCode で QMK を使用](ja/other_vscode.md)
120 * [サポート](ja/support.md) 120 * [サポート](ja/getting_started_getting_help.md)
121 * [翻訳を追加する方法](ja/translating.md) 121 * [翻訳を追加する方法](ja/translating.md)
122 122
123* QMK の内部詳細(作成中) 123* QMK の内部詳細(作成中)
diff --git a/docs/newbs.md b/docs/newbs.md
index 775bba2ca..3efae9992 100644
--- a/docs/newbs.md
+++ b/docs/newbs.md
@@ -2,19 +2,22 @@
2 2
3QMK is a powerful Open Source firmware for your mechanical keyboard. You can use QMK to customize your keyboard in ways both simple and powerful. People of all skill levels, from complete newbie to master programmer, have successfully used QMK to customize their keyboard. This guide will help you do the same, no matter your skill level. 3QMK is a powerful Open Source firmware for your mechanical keyboard. You can use QMK to customize your keyboard in ways both simple and powerful. People of all skill levels, from complete newbie to master programmer, have successfully used QMK to customize their keyboard. This guide will help you do the same, no matter your skill level.
4 4
5Not sure if your keyboard can run QMK? If it's a mechanical keyboard you built yourself chances are good it can. We support a [large number of hobbyist boards](http://qmk.fm/keyboards/), so even if your current keyboard can't run QMK you shouldn't have trouble finding one to suit your needs. 5Not sure if your keyboard can run QMK? If it's a mechanical keyboard you built yourself chances are good it can. We support a [large number of hobbyist boards](http://qmk.fm/keyboards/). If your current keyboard can't run QMK there are a lot of choices out there for boards that do.
6
7## Is This Guide For Me?
8
9This guide is suitable for everyone who wants to build a keyboard firmware using the source code. If you are already a programmer you will find the process very familiar and easier to follow. If the thought of programming intimidates you please [take a look at our online GUI](newbs_building_firmware_configurator.md) instead.
6 10
7## Overview 11## Overview
8 12
9There are 7 main sections to this guide: 13There are 6 main sections to this guide:
10 14
11* [Getting Started](newbs_getting_started.md) 151. [Getting Started](newbs_getting_started.md)
12* [Building Your First Firmware using the command line](newbs_building_firmware.md) 162. [Building Your First Firmware](newbs_building_firmware.md)
13* [Building Your First Firmware using the online GUI](newbs_building_firmware_configurator.md) 173. [Flashing Firmware](newbs_flashing.md)
14* [Flashing Firmware](newbs_flashing.md) 184. [Testing and Debugging](newbs_testing_debugging.md)
15* [Testing and Debugging](newbs_testing_debugging.md) 195. [Best Git Practices](newbs_git_best_practices.md)
16* [Best Git Practices](newbs_git_best_practices.md) 206. [Learn More with these Resources](newbs_learn_more_resources.md)
17* [Learn More with these Resources](newbs_learn_more_resources.md)
18 21
19This guide is focused on helping someone who has never compiled software before. It makes choices and recommendations based on that viewpoint. There are alternative methods for many of these procedures, and we support most of those alternatives. If you have any doubt about how to accomplish a task you can [ask us for guidance](getting_started_getting_help.md). 22This guide is focused on helping someone who has never compiled software before. It makes choices and recommendations based on that viewpoint. There are alternative methods for many of these procedures, and we support most of those alternatives. If you have any doubt about how to accomplish a task you can [ask us for guidance](getting_started_getting_help.md).
20 23
diff --git a/docs/newbs_building_firmware.md b/docs/newbs_building_firmware.md
index d7d31c07f..f1391c587 100644
--- a/docs/newbs_building_firmware.md
+++ b/docs/newbs_building_firmware.md
@@ -2,47 +2,29 @@
2 2
3Now that you have setup your build environment you are ready to start building custom firmware. For this section of the guide we will bounce between 3 programs- your file manager, your text editor, and your terminal window. Keep all 3 open until you are done and happy with your keyboard firmware. 3Now that you have setup your build environment you are ready to start building custom firmware. For this section of the guide we will bounce between 3 programs- your file manager, your text editor, and your terminal window. Keep all 3 open until you are done and happy with your keyboard firmware.
4 4
5If you have closed and reopened your terminal window since following the first part of the guide, don't forget to `cd qmk_firmware` so that your terminal is in the correct directory. 5## Create a New Keymap
6 6
7## Navigate To Your Keymaps Folder 7To create your own keymap you'll want to create a copy of the `default` keymap. If you configured your build environment in the last step you can do that easily with the QMK CLI:
8 8
9Start by navigating to the `keymaps` folder for your keyboard. 9 qmk new-keymap
10 10
11If you are on macOS or Windows there are commands you can use to easily open the keymaps folder. 11If you did not configure your environment, or you have multiple keyboards, you can specify a keyboard name:
12 12
13### macOS: 13 qmk new-keymap -kb <keyboard_name>
14 14
15``` open keyboards/<keyboard_folder>/keymaps ``` 15Look at the output from that command, you should see something like this:
16 16
17### Windows: 17 Ψ <github_username> keymap directory created in: /home/me/qmk_firmware/keyboards/clueboard/66/rev3/keymaps/<github_username>
18 18
19``` start .\\keyboards\\<keyboard_folder>\\keymaps ``` 19This is the location of your new `keymap.c` file.
20
21## Create a Copy Of The `default` Keymap
22
23Once you have the `keymaps` folder open you will want to create a copy of the `default` folder. We highly recommend you name your folder the same as your GitHub username, but you can use any name you want as long as it contains only lower case letters, numbers, and the underscore character.
24
25To automate the process, you also have the option to run the `new_keymap.sh` script.
26
27Navigate to the `qmk_firmware/util` directory and type the following:
28
29```
30./new_keymap.sh <keyboard path> <username>
31```
32
33For example, for a user named John, trying to make a new keymap for the 1up60hse, they would type in
34
35```
36./new_keymap.sh 1upkeyboards/1up60hse john
37```
38 20
39## Open `keymap.c` In Your Favorite Text Editor 21## Open `keymap.c` In Your Favorite Text Editor
40 22
41Open up your `keymap.c`. Inside this file you'll find the structure that controls how your keyboard behaves. At the top of `keymap.c` there may be some defines and enums that make the keymap easier to read. Farther down you'll find a line that looks like this: 23Open your `keymap.c` file in your text editor. Inside this file you'll find the structure that controls how your keyboard behaves. At the top of `keymap.c` there may be some defines and enums that make the keymap easier to read. Farther down you'll find a line that looks like this:
42 24
43 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 25 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
44 26
45This line indicates the start of the list of Layers. Below that you'll find lines containing either `LAYOUT` or `KEYMAP`, and these lines indicate the start of a layer. Below that line is the list of keys that comprise a particular layer. 27This line indicates where the list of Layers begins. Below that you'll find lines containing `LAYOUT`, and these lines indicate the start of a layer. Below that line is the list of keys that comprise a particular layer.
46 28
47!> When editing your keymap file be careful not to add or remove any commas. If you do you will prevent your firmware from compiling and it may not be easy to figure out where the extra, or missing, comma is. 29!> When editing your keymap file be careful not to add or remove any commas. If you do you will prevent your firmware from compiling and it may not be easy to figure out where the extra, or missing, comma is.
48 30
@@ -58,13 +40,13 @@ How to complete this step is entirely up to you. Make the one change that's been
58 40
59## Build Your Firmware 41## Build Your Firmware
60 42
61When your changes to the keymap are complete you will need to build the firmware. To do so go back to your terminal window and run the build command: 43When your changes to the keymap are complete you will need to build the firmware. To do so go back to your terminal window and run the compile command:
62 44
63 make <my_keyboard>:<my_keymap> 45 qmk compile
64 46
65For example, if your keymap is named "xyverz" and you're building a keymap for a rev5 planck, you'll use this command: 47If you did not configure your environment, or you have multiple keyboards, you can specify a keyboard and/or keymap:
66 48
67 make planck/rev5:xyverz 49 qmk compile -kb <keyboard> -km <keymap>
68 50
69While this compiles you will have a lot of output going to the screen informing you of what files are being compiled. It should end with output that looks similar to this: 51While this compiles you will have a lot of output going to the screen informing you of what files are being compiled. It should end with output that looks similar to this:
70 52
diff --git a/docs/newbs_flashing.md b/docs/newbs_flashing.md
index 428e698e2..3cbeb1c4b 100644
--- a/docs/newbs_flashing.md
+++ b/docs/newbs_flashing.md
@@ -86,13 +86,13 @@ Click the `Flash` button in QMK Toolbox. You will see output similar to the foll
86 86
87## Flash your Keyboard from the Command Line 87## Flash your Keyboard from the Command Line
88 88
89This has been made pretty simple compared to what it used to be. When you are ready to compile and flash your firmware, open up your terminal window and run the build command: 89This has been made pretty simple compared to what it used to be. When you are ready to compile and flash your firmware, open up your terminal window and run the flash command:
90 90
91 make <my_keyboard>:<my_keymap>:flash 91 qmk flash
92 92
93For example, if your keymap is named "xyverz" and you're building a keymap for a rev5 planck, you'll use this command: 93If you have not configured your keyboard/keymap name, or you have multiple keyboards, you can specify the keyboard and keymap:
94 94
95 make planck/rev5:xyverz:flash 95 qmk flash -kb <my_keyboard> -km <my_keymap>
96 96
97This will check the keyboard's configuration, and then attempt to flash it based on the specified bootloader. This means that you don't need to know which bootloader that your keyboard uses. Just run the command, and let the command do the heavy lifting. 97This will check the keyboard's configuration, and then attempt to flash it based on the specified bootloader. This means that you don't need to know which bootloader that your keyboard uses. Just run the command, and let the command do the heavy lifting.
98 98
@@ -106,273 +106,20 @@ There are five main bootloaders that are used. Pro Micro and clones use Caterina
106 106
107You can find more information about the bootloaders in the [Flashing Instructions and Bootloader Information](flashing.md) page. 107You can find more information about the bootloaders in the [Flashing Instructions and Bootloader Information](flashing.md) page.
108 108
109If you know what bootloader that you're using, then when compiling the firmware, you can actually add some extra text to the `make` command to automate the flashing process. 109If you know what bootloader that you're using you can specify that in your flash command:
110 110
111### DFU 111 qmk flash -bl <bootloader>
112 112
113For the DFU bootloader, when you're ready to compile and flash your firmware, open up your terminal window and run the build command: 113Run this command to get a list of valid bootloaders:
114 114
115 make <my_keyboard>:<my_keymap>:dfu 115 qmk flash --bootloaders
116 116
117For example, if your keymap is named "xyverz" and you're building a keymap for a rev5 planck, you'll use this command: 117### More information
118 118
119 make planck/rev5:xyverz:dfu 119See the Flashing documentation for more information on esoteric flashing situations.
120
121Once it finishes compiling, it should output the following:
122
123```
124Linking: .build/planck_rev5_xyverz.elf [OK]
125Creating load file for flashing: .build/planck_rev5_xyverz.hex [OK]
126Copying planck_rev5_xyverz.hex to qmk_firmware folder [OK]
127Checking file size of planck_rev5_xyverz.hex
128 * File size is fine - 18574/28672
129 ```
130
131After it gets to this point, the build script will look for the DFU bootloader every 5 seconds. It will repeat the following until the device is found or you cancel it.
132
133 dfu-programmer: no device present.
134 Error: Bootloader not found. Trying again in 5s.
135
136Once it does this, you'll want to reset the controller. It should then show output similar to this:
137
138```
139*** Attempting to flash, please don't remove device
140>>> dfu-programmer atmega32u4 erase --force
141 Erasing flash... Success
142 Checking memory from 0x0 to 0x6FFF... Empty.
143>>> dfu-programmer atmega32u4 flash /Users/skully/qmk_firmware/clueboard_66_hotswap_gen1_skully.hex
144 Checking memory from 0x0 to 0x55FF... Empty.
145 0% 100% Programming 0x5600 bytes...
146 [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success
147 0% 100% Reading 0x7000 bytes...
148 [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success
149 Validating... Success
150 0x5600 bytes written into 0x7000 bytes memory (76.79%).
151>>> dfu-programmer atmega32u4 reset
152```
153
154?> If you have any issues with this - such as `dfu-programmer: no device present` - please see the [Frequently Asked Build Questions](faq_build.md).
155
156#### DFU commands
157
158There are a number of DFU commands that you can use to flash firmware to a DFU device:
159
160* `:dfu` - This is the normal option and waits until a DFU device is available, and then flashes the firmware. This will check every 5 seconds, to see if a DFU device has appeared.
161* `:dfu-ee` - This flashes an `eep` file instead of the normal hex. This is uncommon.
162* `:dfu-split-left` - This flashes the normal firmware, just like the default option (`:dfu`). However, this also flashes the "Left Side" EEPROM file for split keyboards. _This is ideal for Elite C based split keyboards._
163* `:dfu-split-right` - This flashes the normal firmware, just like the default option (`:dfu`). However, this also flashes the "Right Side" EEPROM file for split keyboards. _This is ideal for Elite C based split keyboards._
164
165
166### Caterina
167
168For Arduino boards and their clones (such as the SparkFun ProMicro), when you're ready to compile and flash your firmware, open up your terminal window and run the build command:
169
170 make <my_keyboard>:<my_keymap>:avrdude
171
172For example, if your keymap is named "xyverz" and you're building a keymap for a rev2 Lets Split, you'll use this command:
173
174 make lets_split/rev2:xyverz:avrdude
175
176Once the firmware finishes compiling, it will output something like this:
177
178```
179Linking: .build/lets_split_rev2_xyverz.elf [OK]
180Creating load file for flashing: .build/lets_split_rev2_xyverz.hex [OK]
181Checking file size of lets_split_rev2_xyverz.hex [OK]
182 * File size is fine - 27938/28672
183Detecting USB port, reset your controller now..............
184```
185
186At this point, reset the board and then the script will detect the bootloader and then flash the board. The output should look something like this:
187
188```
189Detected controller on USB port at /dev/ttyS15
190
191Connecting to programmer: .
192Found programmer: Id = "CATERIN"; type = S
193 Software Version = 1.0; No Hardware Version given.
194Programmer supports auto addr increment.
195Programmer supports buffered memory access with buffersize=128 bytes.
196
197Programmer supports the following devices:
198 Device code: 0x44
199
200avrdude.exe: AVR device initialized and ready to accept instructions
201
202Reading | ################################################## | 100% 0.00s
203
204avrdude.exe: Device signature = 0x1e9587 (probably m32u4)
205avrdude.exe: NOTE: "flash" memory has been specified, an erase cycle will be performed
206 To disable this feature, specify the -D option.
207avrdude.exe: erasing chip
208avrdude.exe: reading input file "./.build/lets_split_rev2_xyverz.hex"
209avrdude.exe: input file ./.build/lets_split_rev2_xyverz.hex auto detected as Intel Hex
210avrdude.exe: writing flash (27938 bytes):
211
212Writing | ################################################## | 100% 2.40s
213
214avrdude.exe: 27938 bytes of flash written
215avrdude.exe: verifying flash memory against ./.build/lets_split_rev2_xyverz.hex:
216avrdude.exe: load data flash data from input file ./.build/lets_split_rev2_xyverz.hex:
217avrdude.exe: input file ./.build/lets_split_rev2_xyverz.hex auto detected as Intel Hex
218avrdude.exe: input file ./.build/lets_split_rev2_xyverz.hex contains 27938 bytes
219avrdude.exe: reading on-chip flash data:
220
221Reading | ################################################## | 100% 0.43s
222
223avrdude.exe: verifying ...
224avrdude.exe: 27938 bytes of flash verified
225
226avrdude.exe: safemode: Fuses OK (E:CB, H:D8, L:FF)
227
228avrdude.exe done. Thank you.
229```
230If you have any issues with this, you may need to this:
231
232 sudo make <my_keyboard>:<my_keymap>:avrdude
233
234
235#### Caterina commands
236
237There are a number of DFU commands that you can use to flash firmware to a DFU device:
238
239* `:avrdude` - This is the normal option which waits until a Caterina device is available (by detecting a new COM port), and then flashes the firmware.
240* `:avrdude-loop` - This runs the same command as `:avrdude`, but after each device is flashed, it will attempt to flash again. This is useful for bulk flashing. _This requires you to manually escape the loop by hitting Control+C._
241* `:avrdude-split-left` - This flashes the normal firmware, just like the default option (`:avrdude`). However, this also flashes the "Left Side" EEPROM file for split keyboards. _This is ideal for Pro Micro based split keyboards._
242* `:avrdude-split-right` - This flashes the normal firmware, just like the default option (`:avrdude`). However, this also flashes the "Right Side" EEPROM file for split keyboards. _This is ideal for Pro Micro based split keyboards._
243
244
245### HalfKay
246
247For the PJRC devices (Teensy's), when you're ready to compile and flash your firmware, open up your terminal window and run the build command:
248
249 make <my_keyboard>:<my_keymap>:teensy
250
251For example, if your keymap is named "xyverz" and you're building a keymap for an Ergodox or Ergodox EZ, you'll use this command:
252
253 make ergodox_ez:xyverz:teensy
254
255Once the firmware finishes compiling, it will output something like this:
256
257```
258Linking: .build/ergodox_ez_xyverz.elf [OK]
259Creating load file for flashing: .build/ergodox_ez_xyverz.hex [OK]
260Checking file size of ergodox_ez_xyverz.hex [OK]
261 * File size is fine - 25584/32256
262 Teensy Loader, Command Line, Version 2.1
263Read "./.build/ergodox_ez_xyverz.hex": 25584 bytes, 79.3% usage
264Waiting for Teensy device...
265 (hint: press the reset button)
266 ```
267
268 At this point, reset your board. Once you've done that, you'll see output like this:
269
270 ```
271 Found HalfKay Bootloader
272Read "./.build/ergodox_ez_xyverz.hex": 28532 bytes, 88.5% usage
273Programming............................................................................................................................................................................
274...................................................
275Booting
276```
277
278### STM32 (ARM)
279
280For a majority of ARM boards (including the Proton C, Planck Rev 6, and Preonic Rev 3), when you're ready to compile and flash your firmware, open up your terminal window and run the build command:
281
282 make <my_keyboard>:<my_keymap>:dfu-util
283
284For example, if your keymap is named "xyverz" and you're building a keymap for the Planck Revision 6 keyboard, you'll use this command and then reboot the keyboard to the bootloader (before it finishes compiling):
285
286 make planck/rev6:xyverz:dfu-util
287
288Once the firmware finishes compiling, it will output something like this:
289
290```
291Linking: .build/planck_rev6_xyverz.elf [OK]
292Creating binary load file for flashing: .build/planck_rev6_xyverz.bin [OK]
293Creating load file for flashing: .build/planck_rev6_xyverz.hex [OK]
294
295Size after:
296 text data bss dec hex filename
297 0 41820 0 41820 a35c .build/planck_rev6_xyverz.hex
298
299Copying planck_rev6_xyverz.bin to qmk_firmware folder [OK]
300dfu-util 0.9
301
302Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
303Copyright 2010-2016 Tormod Volden and Stefan Schmidt
304This program is Free Software and has ABSOLUTELY NO WARRANTY
305Please report bugs to http://sourceforge.net/p/dfu-util/tickets/
306
307Invalid DFU suffix signature
308A valid DFU suffix will be required in a future dfu-util release!!!
309Opening DFU capable USB device...
310ID 0483:df11
311Run-time device DFU version 011a
312Claiming USB DFU Interface...
313Setting Alternate Setting #0 ...
314Determining device status: state = dfuERROR, status = 10
315dfuERROR, clearing status
316Determining device status: state = dfuIDLE, status = 0
317dfuIDLE, continuing
318DFU mode device DFU version 011a
319Device returned transfer size 2048
320DfuSe interface name: "Internal Flash "
321Downloading to address = 0x08000000, size = 41824
322Download [=========================] 100% 41824 bytes
323Download done.
324File downloaded successfully
325Transitioning to dfuMANIFEST state
326```
327
328#### STM32 Commands
329
330There are a number of DFU commands that you can use to flash firmware to a STM32 device:
331
332* `:dfu-util` - The default command for flashing to STM32 devices, and will wait until an STM32 bootloader is present. .
333* `:dfu-util-split-left` - This flashes the normal firmware, just like the default option (`:dfu-util`). However, this also configures the "Left Side" EEPROM setting for split keyboards.
334* `:dfu-util-split-right` - This flashes the normal firmware, just like the default option (`:dfu-util`). However, this also configures the "Right Side" EEPROM setting for split keyboards.
335* `:st-link-cli` - This allows you to flash the firmware via ST-LINK's CLI utility, rather than dfu-util.
336
337
338### BootloadHID
339
340For Bootmapper Client(BMC)/bootloadHID/ATmega32A based boards, when you're ready to compile and flash your firmware, open up your terminal window and run the build command:
341
342 make <my_keyboard>:<my_keymap>:bootloaderHID
343
344For example, if your keymap is named "xyverz" and you're building a keymap for a jj40, you'll use this command:
345
346 make jj40:xyverz:bootloaderHID
347
348Once the firmware finishes compiling, it will output something like this:
349
350```
351Linking: .build/jj40_default.elf [OK]
352Creating load file for flashing: .build/jj40_default.hex [OK]
353Copying jj40_default.hex to qmk_firmware folder [OK]
354Checking file size of jj40_default.hex [OK]
355 * The firmware size is fine - 21920/28672 (6752 bytes free)
356```
357
358After it gets to this point, the build script will look for the DFU bootloader every 5 seconds. It will repeat the following until the device is found or you cancel it.
359
360```
361Error opening HIDBoot device: The specified device was not found
362Trying again in 5s.
363```
364
365Once it does this, you'll want to reset the controller. It should then show output similar to this:
366
367```
368Page size = 128 (0x80)
369Device size = 32768 (0x8000); 30720 bytes remaining
370Uploading 22016 (0x5600) bytes starting at 0 (0x0)
3710x05580 ... 0x05600
372```
373 120
374## Test It Out! 121## Test It Out!
375 122
376Congrats! Your custom firmware has been programmed to your keyboard! 123Congrats! Your custom firmware has been programmed to your keyboard!
377 124
378Give it a try and make sure everything works the way you want it to. We've written [Testing and Debugging](newbs_testing_debugging.md) to round out this Newbie Guide, so head over there to learn about how to troubleshoot your custom functionality. 125Give it a try and make sure everything works the way you want it to. We've written [Testing and Debugging](newbs_testing_debugging.md) to round out this Newbie Guide, so head over there to learn about validating your firmware and how to troubleshoot your custom functionality.
diff --git a/docs/newbs_getting_started.md b/docs/newbs_getting_started.md
index 1c7206cf5..7ea4c62e2 100644
--- a/docs/newbs_getting_started.md
+++ b/docs/newbs_getting_started.md
@@ -1,15 +1,14 @@
1# Getting Started 1# Getting Started
2 2
3Your computer keyboard has a processor inside of it, not unlike the one inside your computer. This processor runs software that is responsible for detecting button presses and sending reports about the state of the keyboard when buttons are pressed or released. QMK fills the role of that software, detecting button presses and passing that information on to the host computer. When you build your custom keymap, you are creating the equivalent of an executable program for your keyboard. 3Your computer keyboard has a processor inside of it, similar to the one inside your computer. This processor runs software that is responsible for detecting button presses and informing the computer when keys are pressed. QMK fills the role of that software, detecting button presses and passing that information on to the host computer. When you build your custom keymap, you are creating an executable program for your keyboard.
4 4
5QMK tries to put a lot of power into your hands by making easy things easy, and hard things possible. You don't have to know how to program to create powerful keymaps — you only have to follow a few simple syntax rules. 5QMK tries to put a lot of power into your hands by making easy things easy, and hard things possible. You don't have to know how to program to create powerful keymaps — you only have to follow a few simple syntax rules.
6 6
7# Prerequisites 7# Prerequisites
8 8
9Before you can build keymaps, you need to install some software and set up your build environment. This only has to be done once no matter how many keyboards you plan to compile firmware for. 9Before you can build keymaps, you need to install some software and set up your build environment. This only has to be done once no matter how many keyboards you plan to compile firmware for.
10
11If you would prefer a more graphical user interface approach, please consider using the online [QMK Configurator](https://config.qmk.fm). Please refer to [Building Your First Firmware using the online GUI](newbs_building_firmware_configurator.md).
12 10
11If you would prefer a more graphical user interface approach, please consider using the online [QMK Configurator](newbs_building_firmware_configurator.md).
13 12
14## Download Software 13## Download Software
15 14
@@ -40,52 +39,50 @@ We've tried to make QMK as easy to set up as possible. You only have to prepare
40 39
41### Windows 40### Windows
42 41
43You will need to install MSYS2 and Git. 42You will need to install MSYS2, Git, and the QMK CLI.
44 43
45* Follow the installation instructions on the [MSYS2 homepage](http://www.msys2.org). 44* Follow the installation instructions on the [MSYS2 homepage](http://www.msys2.org).
46* Close any open MSYS2 terminals and open a new MSYS2 MinGW 64-bit terminal. 45* Close any open MSYS2 terminals and open a new MSYS2 MinGW 64-bit terminal.
47* Install Git by running this command: `pacman -S git`.
48 46
49### macOS 47After opening a new MSYS2 MinGW 64-bit terminal run these commands:
50 48
51You will need to install Homebrew. Follow the instructions on the [Homebrew homepage](https://brew.sh). 49 pacman -S git python3-pip
50 python3 -m pip install qmk
51 qmk setup
52 52
53After Homebrew is installed, continue with _Set Up QMK_. In that step you will run a script that will install other packages. 53### macOS
54 54
55### Linux 55You will need to install Homebrew. Follow the instructions on the [Homebrew homepage](https://brew.sh).
56 56
57You will need to install Git. It's very likely that you already have it, but if not, one of the following commands should install it: 57After Homebrew is installed run these commands:
58 58
59* Debian / Ubuntu / Devuan: `apt-get install git` 59 brew tap qmk/qmk
60* Fedora / Red Hat / CentOS: `yum install git` 60 brew install qmk
61* Arch: `pacman -S git` 61 qmk setup
62 62
63?> Docker is also an option on all platforms. [Click here for details.](getting_started_build_tools.md#docker) 63### Linux
64 64
65## Set Up QMK 65You will need to install Git and Python. It's very likely that you already have both, but if not, one of the following commands should install them:
66 66
67Once you have set up your Linux/Unix environment, you are ready to download QMK. We will do this by using Git to "clone" the QMK repository. Open a Terminal or MSYS2 MinGW window and leave it open for the remainder of this guide. Inside that window run these two commands: 67* Debian / Ubuntu / Devuan: `apt-get install git python3 && python3 -m pip install qmk`
68* Fedora / Red Hat / CentOS: `yum install git python3 && python3 -m pip install qmk`
69* Arch: `pacman -S qmk`
68 70
69```shell 71After installing QMK you can set it up with this command:
70git clone --recurse-submodules https://github.com/qmk/qmk_firmware.git
71cd qmk_firmware
72```
73 72
74?> If you already know [how to use GitHub](getting_started_github.md), we recommend that you create and clone your own fork instead. If you don't know what that means, you can safely ignore this message. 73 qmk setup
75 74
76QMK comes with a script to help you set up the rest of what you'll need. You should run it now by typing in this command: 75?> If you already know [how to use GitHub](getting_started_github.md), we recommend that you create your own fork and use `qmk setup <github_username>` to clone your personal fork. If you don't know what that means you can safely ignore this message.
77
78 util/qmk_install.sh
79 76
80## Test Your Build Environment 77## Test Your Build Environment
81 78
82Now 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: 79Now 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:
83 80
84 make <keyboard>:default 81 qmk compile -kb <keyboard> -km default
85 82
86For example, to build a firmware for a Clueboard 66% you would use: 83For example, to build a firmware for a Clueboard 66% you would use:
87 84
88 make clueboard/66/rev3:default 85 qmk compile -kb clueboard/66/rev3 -km default
89 86
90When it is done you should have a lot of output that ends similar to this: 87When it is done you should have a lot of output that ends similar to this:
91 88
@@ -97,6 +94,18 @@ Checking file size of clueboard_66_rev3_default.hex
97 * The firmware size is fine - 26356/28672 (2316 bytes free) 94 * The firmware size is fine - 26356/28672 (2316 bytes free)
98``` 95```
99 96
97## Configure Your Build Environment
98
99You can configure your build environment to set the defaults and make working with QMK less tedious. Let's do that now!
100
101Most people new to QMK only have 1 keyboard. You can set this keyboard as your default with the `qmk config` command. For example, to set your default keyboard to `clueboard/66/rev4`:
102
103 qmk config user.keyboard=clueboard/66/rev4
104
105You can also set your default keymap name. Most people use their github username here, and we recommend that you do too.
106
107 qmk config user.keymap=<github_username>
108
100# Creating Your Keymap 109# Creating Your Keymap
101 110
102You are now ready to create your own personal keymap! Move on to [Building Your First Firmware](newbs_building_firmware.md) for that. 111You are now ready to create your own personal keymap! Move on to [Building Your First Firmware](newbs_building_firmware.md) for that.
diff --git a/docs/newbs_testing_debugging.md b/docs/newbs_testing_debugging.md
index 4756a29be..62982584f 100644
--- a/docs/newbs_testing_debugging.md
+++ b/docs/newbs_testing_debugging.md
@@ -4,15 +4,7 @@ Once you've flashed your keyboard with a custom firmware you're ready to test it
4 4
5## Testing 5## Testing
6 6
7Testing your keyboard is usually pretty straightforward. Press every single key and make sure it sends the keys you expect. There are even programs that will help you make sure that no key is missed. 7Testing your keyboard is usually pretty straightforward. Press every single key and make sure it sends the keys you expect. You can use [QMK Configurator](https://config.qmk.fm/#/test/)'s test mode to check your keyboard, even if it doesn't run QMK.
8
9Note: These programs are not provided by or endorsed by QMK.
10
11* [QMK Configurator](https://config.qmk.fm/#/test/) (Web Based)
12* [Switch Hitter](https://web.archive.org/web/20190413233743/https://elitekeyboards.com/switchhitter.php) (Windows Only)
13* [Keyboard Viewer](https://www.imore.com/how-use-keyboard-viewer-your-mac) (Mac Only)
14* [Keyboard Tester](http://www.keyboardtester.com) (Web Based)
15* [Keyboard Checker](http://keyboardchecker.com) (Web Based)
16 8
17## Debugging 9## Debugging
18 10
diff --git a/docs/pt-br/_summary.md b/docs/pt-br/_summary.md
index 27efd73ab..597f0f2d0 100644
--- a/docs/pt-br/_summary.md
+++ b/docs/pt-br/_summary.md
@@ -108,7 +108,7 @@
108* Other Topics 108* Other Topics
109 * [Using Eclipse with QMK](pt-br/other_eclipse.md) 109 * [Using Eclipse with QMK](pt-br/other_eclipse.md)
110 * [Using VSCode with QMK](pt-br/other_vscode.md) 110 * [Using VSCode with QMK](pt-br/other_vscode.md)
111 * [Support](pt-br/support.md) 111 * [Support](pt-br/getting_started_getting_help.md)
112 * [How to add translations](pt-br/translating.md) 112 * [How to add translations](pt-br/translating.md)
113 113
114* QMK Internals (In Progress) 114* QMK Internals (In Progress)
diff --git a/docs/ru-ru/_summary.md b/docs/ru-ru/_summary.md
index 3269ac86d..92b78bff1 100644
--- a/docs/ru-ru/_summary.md
+++ b/docs/ru-ru/_summary.md
@@ -110,7 +110,7 @@
110* Other Topics 110* Other Topics
111 * [Using Eclipse with QMK](ru-ru/other_eclipse.md) 111 * [Using Eclipse with QMK](ru-ru/other_eclipse.md)
112 * [Using VSCode with QMK](ru-ru/other_vscode.md) 112 * [Using VSCode with QMK](ru-ru/other_vscode.md)
113 * [Support](ru-ru/support.md) 113 * [Support](ru-ru/getting_started_getting_help.md)
114 * [Translating the QMK Docs](ru-ru/translating.md) 114 * [Translating the QMK Docs](ru-ru/translating.md)
115 115
116* QMK Internals (In Progress) 116* QMK Internals (In Progress)
diff --git a/docs/zh-cn/_summary.md b/docs/zh-cn/_summary.md
index 2f473305a..537c3eb1f 100644
--- a/docs/zh-cn/_summary.md
+++ b/docs/zh-cn/_summary.md
@@ -117,7 +117,7 @@
117* 其他话题 117* 其他话题
118 * [使用Eclipse开发QMK](zh-cn/other_eclipse.md) 118 * [使用Eclipse开发QMK](zh-cn/other_eclipse.md)
119 * [使用VSCode开发QMK](zh-cn/other_vscode.md) 119 * [使用VSCode开发QMK](zh-cn/other_vscode.md)
120 * [支持](zh-cn/support.md) 120 * [支持](zh-cn/getting_started_getting_help.md)
121 * [翻译QMK文档](zh-cn/translating.md) 121 * [翻译QMK文档](zh-cn/translating.md)
122 122
123* QMK 内构 (正在编写) 123* QMK 内构 (正在编写)
@@ -129,4 +129,4 @@
129 * [发送函数](zh-cn/internals_send_functions.md) 129 * [发送函数](zh-cn/internals_send_functions.md)
130 * [Sysex工具](zh-cn/internals_sysex_tools.md) 130 * [Sysex工具](zh-cn/internals_sysex_tools.md)
131<!--fromen:20200126-6:03AM(GMT+8)--> 131<!--fromen:20200126-6:03AM(GMT+8)-->
132<!--cn:20200211-11:04AM(GMT+8)--> \ No newline at end of file 132<!--cn:20200211-11:04AM(GMT+8)-->