Skip to content

Commit

Permalink
overhaul the newbs guide
Browse files Browse the repository at this point in the history
  • Loading branch information
skullydazed committed Mar 6, 2020
1 parent 86f6405 commit 45e218c
Show file tree
Hide file tree
Showing 14 changed files with 146 additions and 153 deletions.
11 changes: 7 additions & 4 deletions docs/_summary.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
* Complete Newbs Guide
* Tutorial
* [Introduction](newbs.md)
* [Setup](newbs_getting_started.md)
* [Building Your First Firmware](newbs_building_firmware.md)
Expand All @@ -18,10 +18,13 @@

* Configurator
* [Overview](newbs_building_firmware_configurator.md)
* [Keyboard Support](reference_configurator_support.md)
* [Step by Step](configurator_step_by_step.md)
* [Troubleshooting](configurator_troubleshooting.md)
* [Problems and Bugs](configurator_problems.md)
* QMK API
* [Overview](api_overview.md)
* [API Documentation](api_docs.md)
* [Keyboard Support](reference_configurator_support.md)

* CLI
* [Overview](cli.md)
Expand All @@ -35,8 +38,8 @@
* [Keymap Overview](keymap.md)
* [Vagrant Guide](getting_started_vagrant.md)
* Flashing
* [Flashing](flashing.md)
* [Flashing ATmega32A (ps2avrgb)](flashing_bootloadhid.md)
* [Flashing Firmware](flashing.md)
* Git Best Practices
* [Introduction](newbs_git_best_practices.md)
* [Your Fork](newbs_git_using_your_master_branch.md)
Expand All @@ -53,7 +56,6 @@
* [Quantum Keycodes](quantum_keycodes.md)

* Advanced Keycodes
* [Auto Shift](feature_auto_shift.md)
* [Command](feature_command.md)
* [Dynamic Macros](feature_dynamic_macros.md)
* [Grave Escape](feature_grave_esc.md)
Expand All @@ -64,6 +66,7 @@
* [US ANSI Shifted Keys](keycodes_us_ansi_shifted.md)

* Software Features
* [Auto Shift](feature_auto_shift.md)
* [Combos](feature_combo.md)
* [Debounce API](feature_debounce_type.md)
* [Key Lock](feature_key_lock.md)
Expand Down
3 changes: 3 additions & 0 deletions docs/configurator_problems.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Problems and Bugs

We are always accepting customer requests and bug reports. Please file them at [qmk_configurator](https://github.com/qmk/qmk_configurator/issues)
58 changes: 58 additions & 0 deletions docs/configurator_step_by_step.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# Step by Step

This page describes the steps for building your firmware in QMK Configurator.

## Step 1: Select your keyboard

Click the drop down box and select the keyboard you want to create a keymap for.

?> If your keyboard has several versions, make sure you select the correct one.

I'll say that again because it's important:

!> **MAKE SURE YOU SELECT THE RIGHT VERSION!**

If your keyboard has been advertised to be powered by QMK but is not in the list, chances are a developer hasn't gotten to it yet or we haven't had a chance to merge it in yet. File an issue at [qmk_firmware](https://github.com/qmk/qmk_firmware/issues) requesting to support that particular keyboard, if there is no active [Pull Request](https://github.com/qmk/qmk_firmware/pulls?q=is%3Aopen+is%3Apr+label%3Akeyboard) for it. There are also QMK powered keyboards that are in their manufacturer's own github accounts. Double check for that as well. <!-- FIXME(skullydazed): This feels too wordy and I'm not sure we want to encourage these kinds of issues. Also, should we prompt them to bug the manufacutrer? -->

## Step 2: Select your keyboard layout

Choose the layout that best represents the keymap you want to create. Some keyboards do not have enough layouts or correct layouts defined yet. They will be supported in the future.

!> Sometimes there isn't a layout that supports your exact build. In that case select `LAYOUT_all`.

## Step 3: Name Your Keymap

Call this keymap what you want.

?> If you are running into issues when compiling, it may be worth changing this name, as it may already exist in the QMK Firmware repo.

## Step 4: Define Your Keymap

Keycode Entry is accomplished in one of 3 ways.

1. Drag and drop
2. Clicking on an empty spot on the layout and clicking the keycode you desire
3. Clicking on an empty spot on the layout, pressing the physical key on your keyboard.

?> Hover your mouse over a key and a short blurb will tell you what that keycode does. For a more verbose description please see:

* [Basic Keycode Reference](keycodes_basic.md)
* [Advanced Keycode Reference](feature_advanced_keycodes.md)

!> If your selected layout doesn't match your physical build leave the unused keys blank. If you're not sure which key is in use, for example you have a one backspace key but `LAYOUT_all` has 2 keys, put the same keycode in both locations.

## Step 5: Save Your Keymap for Future Changes

When you're satisfied with your keymap or just want to work on it later, press the `Export Keymap` button. It will save your keymap to your computer. You can then load this .json file in the future by pressing the `Import Keymap` button.

!> **CAUTION:** This is not the same type of .json file used for kbfirmware.com or any other tool. If you try to use this for those tools, or the .json from those tools with QMK Configurator, you will encounter problems.

## Step 6: Compile your firmware file

Press the green `Compile` button.

When the compilation is done, you will be able to press the green `Download Firmware` button.

## Next steps: Flashing Your Keyboard

Please refer to [Flashing Firmware](newbs_flashing.md)
22 changes: 22 additions & 0 deletions docs/configurator_troubleshooting.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Configurator Troubleshooting

## My .json file is not working

If the .json file was generated with QMK Configurator, congratulations you have stumbled upon a bug. File an issue at [qmk_configurator](https://github.com/qmk/qmk_configurator/issues)

If not....how did you miss my big bold message at the top saying not to use other .json files?

## There are extra spaces in my layout? What do I do?

If you're referring to having three spots for space bar, the best course of action is to just fill them all with space bar. The same can be done for backspace and shifts

## What is the keycode for.......

Please see:

* [Basic Keycode Reference](keycodes_basic.md)
* [Advanced Keycode Reference](feature_advanced_keycodes.md)

## It won't compile

Please double check the other layers of your keymap to make sure there are no random keys present.
2 changes: 1 addition & 1 deletion docs/es/newbs_building_firmware_configurator.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ El [Configurador QMK](https://config.qmk.fm) es un entorno gráfico online que g

?> **Por favor sigue estos pasos en orden.**

Ve el [Video tutorial](https://youtu.be/tx54jkRC9ZY)
Ve el [Video tutorial](https://www.youtube.com/watch?v=-imgglzDMdY)

El Configurador QMK functiona mejor con Chrome/Firefox.

Expand Down
2 changes: 1 addition & 1 deletion docs/fr-fr/newbs_building_firmware_configurator.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Le [Configurateur de QMK](https://config.qmk.fm) est une interface graphique en

?> **S'il vous plaît, suivez les étapes suivantes dans l'ordre.**

Regardez le [Tutoriel vidéo](https://youtu.be/tx54jkRC9ZY)
Regardez le [Tutoriel vidéo](https://youtu.be/tx54jkRC9ZY)https://www.youtube.com/watch?v=-imgglzDMdY)

Le configurateur de QMK fonctionne mieux avec Chrome et Firefox.

Expand Down
2 changes: 1 addition & 1 deletion docs/ja/newbs_building_firmware_configurator.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

?> **次の手順を順番に実行してください。**

[Video Tutorial](https://youtu.be/tx54jkRC9ZY) を見てください。
[Video Tutorial](https://www.youtube.com/watch?v=-imgglzDMdY) を見てください。

QMK Configurator は Chrome/Firefox で最適に動作します。

Expand Down
16 changes: 10 additions & 6 deletions docs/newbs.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# The Complete Newbs Guide To QMK

QMK 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.
Your 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 Firmware 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.

QMK 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.

Not 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](https://qmk.fm/keyboards/). If your current keyboard can't run QMK there are a lot of choices out there for boards that do.

Expand All @@ -10,17 +12,19 @@ This guide is suitable for everyone who wants to build a keyboard firmware using

## Overview

There are 6 main sections to this guide:
There are 4 main sections to this guide:

1. [Getting Started](newbs_getting_started.md)
1. [Setup Your Environment](newbs_getting_started.md)
2. [Building Your First Firmware](newbs_building_firmware.md)
3. [Flashing Firmware](newbs_flashing.md)
4. [Testing and Debugging](newbs_testing_debugging.md)
5. [Best Git Practices](newbs_git_best_practices.md)
6. [Learn More with these Resources](newbs_learn_more_resources.md)

This 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).

## Additional Resources

* [Thomas Baart's QMK Basics Blog](https://thomasbaart.nl/category/mechanical-keyboards/firmware/qmk/qmk-basics/) – A user-created blog covering the basics of how to use QMK Firmware, as seen from a new user's perspective.
Beyond this guide there are several resources you may find helpful while you learn QMK. We've collected them on the [Learning Resources](newbs_learn_more_resources.md) page.

## Open Source

QMK is Open Source Software released under the GNU General Public License.
9 changes: 5 additions & 4 deletions docs/newbs_building_firmware.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,12 @@ This line indicates where the list of Layers begins. Below that you'll find line

## Customize The Layout To Your Liking

How to complete this step is entirely up to you. Make the one change that's been bugging you, or completely rework everything. You can remove layers if you don't need all of them, or add layers up to a total of 32. Check the following documentation to find out what you can define here:
How to complete this step is entirely up to you. Make the one change that's been bugging you, or completely rework everything. You can remove layers if you don't need all of them, or add layers up to a total of 32. There are a lot of features in QMK, explore the sidebar to the left under "Using QMK" to see the full list. To get you started here are a few of the easier to use features:

* [Keycodes](keycodes.md)
* [Features](features.md)
* [FAQ](faq.md)
* [Basic Keycodes](keycodes_basic.md)
* [Quantum Keycodes](quantum_keycodes.md)
* [Grave/Escape](feature_grave_esc.md)
* [Mouse keys](feature_mouse_keys.md)

?> While you get a feel for how keymaps work, keep each change small. Bigger changes make it harder to debug any problems that arise.

Expand Down
104 changes: 5 additions & 99 deletions docs/newbs_building_firmware_configurator.md
Original file line number Diff line number Diff line change
@@ -1,105 +1,11 @@
# QMK Configurator

The [QMK Configurator](https://config.qmk.fm) is an online graphical user interface that generates QMK Firmware hex files.

?> **Please follow these steps in order.**

Watch the [Video Tutorial](https://youtu.be/tx54jkRC9ZY)

The QMK Configurator works best with Chrome/Firefox.


!> **Files from other tools such as KLE, or kbfirmware will not be compatible with QMK Configurator. Do not load them, do not import them. QMK Configurator is a DIFFERENT tool.**

## Selecting your keyboard

Click the drop down box and select the keyboard you want to create a keymap for.

?> If your keyboard has several versions, make sure you select the correct one.

I'll say that again because it's important:

!> **MAKE SURE YOU SELECT THE RIGHT VERSION!**

If your keyboard has been advertised to be powered by QMK but is not in the list, chances are a developer hasn't gotten to it yet or we haven't had a chance to merge it in yet. File an issue at [qmk_firmware](https://github.com/qmk/qmk_firmware/issues) requesting to support that particular keyboard, if there is no active [Pull Request](https://github.com/qmk/qmk_firmware/pulls?q=is%3Aopen+is%3Apr+label%3Akeyboard) for it. There are also QMK powered keyboards that are in their manufacturer's own github accounts. Double check for that as well.

## Selecting your keyboard layout

Choose the layout that best represents the keymap you want to create. Some keyboards do not have enough layouts or correct layouts defined yet. They will be supported in the future.

## Keymap Name

Call this keymap what you want.

?> If you are running into issues when compiling, it may be worth changing this name, as it may already exist in the QMK Firmware repo.

## Creating Your Keymap

Keycode Entry is accomplished in 3 ways.
1. Drag and dropping
2. Clicking on an empty spot on the layout and clicking the keycode you desire
3. Clicking on an empty spot on the layout, pressing the physical key on your keyboard.

Hover your mouse over a key and a short blurb will tell you what that keycode does. For a more verbose description please see:

* [Basic Keycode Reference](keycodes_basic.md)
* [Advanced Keycode Reference](feature_advanced_keycodes.md)

In the event that you can't find a layout that supports your keymap, for example three spots for spacebar, or two spots for backspace, or 2 spots for shift etc etc, Fill them ALL up.

### Example:

3 spots for spacebar: Fill them ALL with spacebar
[![QMK Configurator Screenshot](https://i.imgur.com/anw9cOL.png)](https://config.qmk.fm/)

2 spots for backspace: Fill them BOTH with backspace

2 spots for right shift: Fill them BOTH with right shift

1 spot for left shift and 1 spot for iso support: Fill them both with left shift

5 spots, but only 4 keys: Guess and check or ask someone who has done it before.

## Saving Your Keymap for Future Edits

When you're satisfied with your keymap or just want to work on it later, press the `Export Keymap` button. It will save your keymap as the name you chose above appended with .json.

You can then load this .json file in the future by pressing the `Import Keymap` button.

!> **CAUTION:** This is not the same type of .json file used for kbfirmware.com or any other tool. If you try to use this for those tools, or the .json from those tools with QMK Configurator, there is a chance your keyboard will **explode**.

## Generating your firmware file

Press the green `Compile` button.

When the compilation is done, you will be able to press the green `Download Firmware` button.

## Flashing Your Keyboard

Please refer to [Flashing Firmware](newbs_flashing.md)

## Troubleshooting

#### My .json file is not working

If the .json file was generated with QMK Configurator, congratulations you have stumbled upon a bug. File an issue at [qmk_configurator](https://github.com/qmk/qmk_configurator/issues)

If not....how did you miss my big bold message at the top saying not to use other .json files?

#### There are extra spaces in my layout? What do I do?

If you're referring to having three spots for space bar, the best course of action is to just fill them all with space bar. The same can be done for backspace and shifts

#### What is the keycode for.......

Please see:

* [Basic Keycode Reference](keycodes_basic.md)
* [Advanced Keycode Reference](feature_advanced_keycodes.md)

#### It won't compile
The [QMK Configurator](https://config.qmk.fm) is an online graphical user interface that generates QMK Firmware hex files.

Please double check the other layers of your keymap to make sure there are no random keys present.
Watch the [Video Tutorial](https://www.youtube.com/watch?v=-imgglzDMdY). Many people find that is enough information to start programming their own keyboard.

## Problems and Bugs
The QMK Configurator works best with Chrome or Firefox.

We are always accepting customer requests and bug reports. Please file them at [qmk_configurator](https://github.com/qmk/qmk_configurator/issues)
!> **Note: Files from other tools such as KLE, or kbfirmware will not be compatible with QMK Configurator. Do not load them, do not import them. QMK Configurator is a DIFFERENT tool.**
22 changes: 3 additions & 19 deletions docs/newbs_flashing.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Now that you've built a custom firmware file you'll want to flash your keyboard.

The simplest way to flash your keyboard will be with the [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases).

However, the QMK Toolbox is only available for Windows and macOS currently. If you're using Linux (or just wish to flash the firmware from the command line), you'll have to use the [method outlined below](newbs_flashing.md#flash-your-keyboard-from-the-command-line).
However, the QMK Toolbox is only available for Windows and macOS currently. If you're using Linux (or just wish to flash the firmware from the command line), proceed down to [Flash Your Keyboard From The Command Line](newbs_flashing.md#flash-your-keyboard-from-the-command-line).

### Load The File Into QMK Toolbox

Expand Down Expand Up @@ -100,26 +100,10 @@ However, this does rely on the bootloader being set by the keyboard. If this in

WARNING: This board's bootloader is not specified or is not supported by the ":flash" target at this time.

In this case, you'll have to fall back on specifying the bootloader.

There are five main bootloaders that are used. Pro Micro and clones use Caterina, Teensys use HalfKay, OLKB's AVR boards use QMK-DFU, other ATmega32U4 boards use DFU, and most ARM boards use ARM DFU.

You can find more information about the bootloaders in the [Flashing Instructions and Bootloader Information](flashing.md) page.

If you know what bootloader that you're using you can specify that in your flash command:

qmk flash -bl <bootloader>

Run this command to get a list of valid bootloaders:

qmk flash --bootloaders

### More information

See the Flashing documentation for more information on esoteric flashing situations.
In this case, you'll have to fall back on specifying the bootloader. See the [Flashing Firmware](flashing.md) Guide for more details.

## Test It Out!

Congrats! Your custom firmware has been programmed to your keyboard!

Give 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.
Give 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 guide, so head over there to learn about validating your firmware and how to troubleshoot your custom functionality.
Loading

0 comments on commit 45e218c

Please sign in to comment.