aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorThat-Canadian <poole.chris.11@gmail.com>2017-08-07 08:00:02 -0400
committerThat-Canadian <poole.chris.11@gmail.com>2017-08-07 08:00:02 -0400
commit1bbb49585ee1aef347b7c3397bc9f83040289402 (patch)
tree21bb9b3fb5c266ce786b250d2004730fd1df5ece /docs
parent15822a8e44a4d3d02ae5d5e9deedd27ffc2c6709 (diff)
parent597ff7aee9a04b4f4f41d6d1f5b2e1223e0e83b8 (diff)
downloadqmk_firmware-1bbb49585ee1aef347b7c3397bc9f83040289402.tar.gz
qmk_firmware-1bbb49585ee1aef347b7c3397bc9f83040289402.zip
Merge branch 'master' into minidox
Diffstat (limited to 'docs')
-rw-r--r--docs/documentation_best_practices.md38
-rw-r--r--docs/faq.md110
-rw-r--r--docs/glossary.md143
3 files changed, 236 insertions, 55 deletions
diff --git a/docs/documentation_best_practices.md b/docs/documentation_best_practices.md
index 8c5b4795a..f30793181 100644
--- a/docs/documentation_best_practices.md
+++ b/docs/documentation_best_practices.md
@@ -22,6 +22,14 @@ Your page should generally have multiple "H1" headings. Only H1 and H2 headings
22 22
23You can have styled hint blocks drawn around text to draw attention to it. 23You can have styled hint blocks drawn around text to draw attention to it.
24 24
25```
26{% hint style='info' %}
27This uses `hint style='info'`
28{% endhint %}
29```
30
31### Examples:
32
25{% hint style='info' %} 33{% hint style='info' %}
26This uses `hint style='info'` 34This uses `hint style='info'`
27{% endhint %} 35{% endhint %}
@@ -37,3 +45,33 @@ This uses `hint style='danger'`
37{% hint style='working' %} 45{% hint style='working' %}
38This uses `hint style='working'` 46This uses `hint style='working'`
39{% endhint %} 47{% endhint %}
48
49# Styled Terminal Blocks
50
51You can present styled terminal blocks by including special tokens inside your text block.
52
53```
54\`\`\`
55**[terminal]
56**[prompt foo@joe]**[path ~]**[delimiter $ ]**[command ./myscript]
57Normal output line. Nothing special here...
58But...
59You can add some colors. What about a warning message?
60**[warning [WARNING] The color depends on the theme. Could look normal too]
61What about an error message?
62**[error [ERROR] This is not the error you are looking for]
63\`\`\`
64```
65
66### Example
67
68```
69**[terminal]
70**[prompt foo@joe]**[path ~]**[delimiter $ ]**[command ./myscript]
71Normal output line. Nothing special here...
72But...
73You can add some colors. What about a warning message?
74**[warning [WARNING] The color depends on the theme. Could look normal too]
75What about an error message?
76**[error [ERROR] This is not the error you are looking for]
77```
diff --git a/docs/faq.md b/docs/faq.md
index d7f2a6f4f..3287578ac 100644
--- a/docs/faq.md
+++ b/docs/faq.md
@@ -1,10 +1,16 @@
1# Frequently Asked Questions 1# Frequently Asked Questions
2 2
3## What is QMK? 3## General
4
5### What is QMK?
4 6
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). 7[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 8
7## What Differences Are There Between QMK and TMK? 9### Why the name Quantum?
10
11<!-- FIXME -->
12
13### What Differences Are There Between QMK and TMK?
8 14
9TMK was originally designed and implemented by [Jun Wako](https://github.com/tmk). QMK started as [Jack Humbert's](https://github.com/jackhumbert) 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. 15TMK was originally designed and implemented by [Jun Wako](https://github.com/tmk). QMK started as [Jack Humbert's](https://github.com/jackhumbert) 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.
10 16
@@ -14,8 +20,22 @@ From a project and community management standpoint TMK maintains all the officia
14 20
15Both approaches have their merits and their drawbacks, and code flows freely between TMK and QMK when it makes sense. 21Both approaches have their merits and their drawbacks, and code flows freely between TMK and QMK when it makes sense.
16 22
17# Debug Console 23# Building
18## hid_listen can't recognize device 24
25## Windows
26
27### I'm on Windows Vista, 7, or 8, how do I setup my build environment?
28
29Follow the build instructions to [install MHV AVR Tools](https://docs.qmk.fm/build_environment_setup.html#windows-vista-and-later).
30
31### I'm on Windows 10 without the Creators Update. Do I have to install it?
32
33No, but if you don't install the creators update you will not be able to build and flash with a single command. You will be able to build but to flash you will have to use a separate program, such as [QMK Flasher](https://github.com/qmk/qmk_flasher).
34
35# Troubleshooting
36
37## Debug Console
38### hid_listen can't recognize device
19When debug console of your device is not ready you will see like this: 39When debug console of your device is not ready you will see like this:
20 40
21``` 41```
@@ -34,7 +54,7 @@ If you can't get this 'Listening:' message try building with `CONSOLE_ENABLE=yes
34You may need privilege to access the device on OS like Linux. 54You may need privilege to access the device on OS like Linux.
35- try `sudo hid_listen` 55- try `sudo hid_listen`
36 56
37## Can't get message on console 57### Can't get message on console
38Check: 58Check:
39- *hid_listen* finds your device. See above. 59- *hid_listen* finds your device. See above.
40- Enable debug with pressing **Magic**+d. See [Magic Commands](https://github.com/tmk/tmk_keyboard#magic-commands). 60- Enable debug with pressing **Magic**+d. See [Magic Commands](https://github.com/tmk/tmk_keyboard#magic-commands).
@@ -42,7 +62,7 @@ Check:
42- try using 'print' function instead of debug print. See **common/print.h**. 62- try using 'print' function instead of debug print. See **common/print.h**.
43- disconnect other devices with console function. See [Issue #97](https://github.com/tmk/tmk_keyboard/issues/97). 63- disconnect other devices with console function. See [Issue #97](https://github.com/tmk/tmk_keyboard/issues/97).
44 64
45## Linux or UNIX like system requires Super User privilege 65### Linux or UNIX like system requires Super User privilege
46Just use 'sudo' to execute *hid_listen* with privilege. 66Just use 'sudo' to execute *hid_listen* with privilege.
47``` 67```
48$ sudo hid_listen 68$ sudo hid_listen
@@ -56,10 +76,9 @@ File: /etc/udev/rules.d/52-tmk-keyboard.rules(in case of Ubuntu)
56SUBSYSTEMS=="usb", ATTRS{idVendor}=="feed", MODE:="0666" 76SUBSYSTEMS=="usb", ATTRS{idVendor}=="feed", MODE:="0666"
57``` 77```
58 78
59*** 79## Software Issues
60 80
61# Miscellaneous 81### NKRO Doesn't work
62## NKRO Doesn't work
63First you have to compile frimware with this build option `NKRO_ENABLE` in **Makefile**. 82First you have to compile frimware with this build option `NKRO_ENABLE` in **Makefile**.
64 83
65Try `Magic` **N** command(`LShift+RShift+N` by default) when **NKRO** still doesn't work. You can use this command to toggle between **NKRO** and **6KRO** mode temporarily. In some situations **NKRO** doesn't work you need to switch to **6KRO** mode, in particular when you are in BIOS. 84Try `Magic` **N** command(`LShift+RShift+N` by default) when **NKRO** still doesn't work. You can use this command to toggle between **NKRO** and **6KRO** mode temporarily. In some situations **NKRO** doesn't work you need to switch to **6KRO** mode, in particular when you are in BIOS.
@@ -68,15 +87,7 @@ If your firmeare built with `BOOTMAGIC_ENABLE` you need to turn its switch on by
68 87
69https://github.com/tmk/tmk_keyboard#boot-magic-configuration---virtual-dip-switch 88https://github.com/tmk/tmk_keyboard#boot-magic-configuration---virtual-dip-switch
70 89
71 90### Can't read column of matrix beyond 16
72## TrackPoint needs reset circuit(PS/2 mouse support)
73Without reset circuit you will have inconsistent reuslt due to improper initialize of the hardware. See circuit schematic of TPM754.
74
75- http://geekhack.org/index.php?topic=50176.msg1127447#msg1127447
76- http://www.mikrocontroller.net/attachment/52583/tpm754.pdf
77
78
79## Can't read column of matrix beyond 16
80Use `1UL<<16` instead of `1<<16` in `read_cols()` in [matrix.h] when your columns goes beyond 16. 91Use `1UL<<16` instead of `1<<16` in `read_cols()` in [matrix.h] when your columns goes beyond 16.
81 92
82In C `1` means one of [int] type which is [16bit] in case of AVR so you can't shift left more than 15. You will get unexpected zero when you say `1<<16`. You have to use [unsigned long] type with `1UL`. 93In C `1` means one of [int] type which is [16bit] in case of AVR so you can't shift left more than 15. You will get unexpected zero when you say `1<<16`. You have to use [unsigned long] type with `1UL`.
@@ -84,16 +95,16 @@ In C `1` means one of [int] type which is [16bit] in case of AVR so you can't sh
84http://deskthority.net/workshop-f7/rebuilding-and-redesigning-a-classic-thinkpad-keyboard-t6181-60.html#p146279 95http://deskthority.net/workshop-f7/rebuilding-and-redesigning-a-classic-thinkpad-keyboard-t6181-60.html#p146279
85 96
86 97
87## Bootloader jump doesn't work 98### Bootloader jump doesn't work
88Properly configure bootloader size in **Makefile**. With wrong section size bootloader won't probably start with **Magic command** and **Boot Magic**. 99Properly configure bootloader size in **Makefile**. With wrong section size bootloader won't probably start with **Magic command** and **Boot Magic**.
89``` 100```
90# Size of Bootloaders in bytes: 101# Size of Bootloaders in bytes:
91# Atmel DFU loader(ATmega32U4) 4096 102# Atmel DFU loader(ATmega32U4) 4096
92# Atmel DFU loader(AT90USB128) 8192 103# Atmel DFU loader(AT90USB128) 8192
93# LUFA bootloader(ATmega32U4) 4096 104# LUFA bootloader(ATmega32U4) 4096
94# Arduino Caterina(ATmega32U4) 4096 105# Arduino Caterina(ATmega32U4) 4096
95# USBaspLoader(ATmega***) 2048 106# USBaspLoader(ATmega***) 2048
96# Teensy halfKay(ATmega32U4) 512 107# Teensy halfKay(ATmega32U4) 512
97# Teensy++ halfKay(AT90USB128) 2048 108# Teensy++ halfKay(AT90USB128) 2048
98OPT_DEFS += -DBOOTLOADER_SIZE=4096 109OPT_DEFS += -DBOOTLOADER_SIZE=4096
99``` 110```
@@ -107,14 +118,14 @@ byte Atmel/LUFA(ATMega32u4) byte Atmel(AT90SUB1286)
107 | | | | 118 | | | |
108 | | | | 119 | | | |
109 | Application | | Application | 120 | Application | | Application |
110 | | | | 121 | | | |
111 = = = = 122 = = = =
112 | | 32KB-4KB | | 128KB-8KB 123 | | 32KB-4KB | | 128KB-8KB
1130x6000 +---------------+ 0x1E000 +---------------+ 1240x6000 +---------------+ 0x1E000 +---------------+
114 | Bootloader | 4KB | Bootloader | 8KB 125 | Bootloader | 4KB | Bootloader | 8KB
1150x7FFF +---------------+ 0x1FFFF +---------------+ 1260x7FFF +---------------+ 0x1FFFF +---------------+
116 127
117 128
118byte Teensy(ATMega32u4) byte Teensy++(AT90SUB1286) 129byte Teensy(ATMega32u4) byte Teensy++(AT90SUB1286)
1190x0000 +---------------+ 0x00000 +---------------+ 1300x0000 +---------------+ 0x00000 +---------------+
120 | | | | 131 | | | |
@@ -132,20 +143,28 @@ And see this discussion for further reference.
132https://github.com/tmk/tmk_keyboard/issues/179 143https://github.com/tmk/tmk_keyboard/issues/179
133 144
134 145
135## Special Extra key doesn't work(System, Audio control keys) 146### Special Extra key doesn't work(System, Audio control keys)
136You need to define `EXTRAKEY_ENABLE` in `rules.mk` to use them in QMK. 147You need to define `EXTRAKEY_ENABLE` in `rules.mk` to use them in QMK.
137 148
138``` 149```
139EXTRAKEY_ENABLE = yes # Audio control and System control 150EXTRAKEY_ENABLE = yes # Audio control and System control
140``` 151```
141 152
142## Wakeup from sleep doesn't work 153### Wakeup from sleep doesn't work
143 154
144In Windows check `Allow this device to wake the computer` setting in Power **Management property** tab of **Device Manager**. Also check BIOS setting. 155In Windows check `Allow this device to wake the computer` setting in Power **Management property** tab of **Device Manager**. Also check BIOS setting.
145 156
146Pressing any key during sleep should wake host. 157Pressing any key during sleep should wake host.
147 158
148## Using Arduino? 159## Hardware Issues
160
161### TrackPoint needs reset circuit(PS/2 mouse support)
162Without reset circuit you will have inconsistent reuslt due to improper initialize of the hardware. See circuit schematic of TPM754.
163
164- http://geekhack.org/index.php?topic=50176.msg1127447#msg1127447
165- http://www.mikrocontroller.net/attachment/52583/tpm754.pdf
166
167### Using Arduino?
149 168
150**Note that Arduino pin naming is different from actual chip.** For example, Arduino pin `D0` is not `PD0`. Check circuit with its schematics yourself. 169**Note that Arduino pin naming is different from actual chip.** For example, Arduino pin `D0` is not `PD0`. Check circuit with its schematics yourself.
151 170
@@ -154,8 +173,7 @@ Pressing any key during sleep should wake host.
154 173
155Arduino leonardo and micro have **ATMega32U4** and can be used for TMK, though Arduino bootloader may be a problem. 174Arduino leonardo and micro have **ATMega32U4** and can be used for TMK, though Arduino bootloader may be a problem.
156 175
157 176### Using PF4-7 pins of USB AVR?
158## Using PF4-7 pins of USB AVR?
159You need to set JTD bit of MCUCR yourself to use PF4-7 as GPIO. Those pins are configured to serve JTAG function by default. MCUs like ATMega*U* or AT90USB* are affeteced with this. 177You need to set JTD bit of MCUCR yourself to use PF4-7 as GPIO. Those pins are configured to serve JTAG function by default. MCUs like ATMega*U* or AT90USB* are affeteced with this.
160 178
161If you are using Teensy this isn't needed. Teensy is shipped with JTAGEN fuse bit unprogrammed to disable the function. 179If you are using Teensy this isn't needed. Teensy is shipped with JTAGEN fuse bit unprogrammed to disable the function.
@@ -171,12 +189,7 @@ https://github.com/tmk/tmk_keyboard/blob/master/keyboard/hbkb/matrix.c#L67
171And read **26.5.1 MCU Control Register – MCUCR** of ATMega32U4 datasheet. 189And read **26.5.1 MCU Control Register – MCUCR** of ATMega32U4 datasheet.
172 190
173 191
174## Adding LED indicators of Lock keys 192### Program Arduino Micro/Leonardo
175You need your own LED indicators for CapsLock, ScrollLock and NumLock? See this post.
176
177http://deskthority.net/workshop-f7/tmk-keyboard-firmware-collection-t4478-120.html#p191560
178
179## Program Arduino Micro/Leonardo
180Push reset button and then run command like this within 8 seconds. 193Push reset button and then run command like this within 8 seconds.
181 194
182``` 195```
@@ -188,27 +201,16 @@ Device name will vary depending on your system.
188http://arduino.cc/en/Main/ArduinoBoardMicro 201http://arduino.cc/en/Main/ArduinoBoardMicro
189https://geekhack.org/index.php?topic=14290.msg1563867#msg1563867 202https://geekhack.org/index.php?topic=14290.msg1563867#msg1563867
190 203
191 204### Problem on BIOS(UEFI)/Resume(Sleep&Wake)/Power cycles
192## USB 3 compatibility
193I heard some people have a problem with USB 3 port, try USB 2 port.
194
195
196## Mac compatibility
197### OS X 10.11 and Hub
198https://geekhack.org/index.php?topic=14290.msg1884034#msg1884034
199
200
201## Problem on BIOS(UEFI)/Resume(Sleep&Wake)/Power cycles
202Some people reported their keyboard stops working on BIOS and/or after resume(power cycles). 205Some people reported their keyboard stops working on BIOS and/or after resume(power cycles).
203 206
204As of now root of its cause is not clear but some build options seem to be related. In Makefile try to disable those options like `CONSOLE_ENABLE`, `NKRO_ENABLE`, `SLEEP_LED_ENABLE` and/or others. 207As of now root of its cause is not clear but some build options seem to be related. In Makefile try to disable those options like `CONSOLE_ENABLE`, `NKRO_ENABLE`, `SLEEP_LED_ENABLE` and/or others.
205 208
206https://github.com/tmk/tmk_keyboard/issues/266 209https://github.com/tmk/tmk_keyboard/issues/266
207https://geekhack.org/index.php?topic=41989.msg1967778#msg1967778 210https://geekhack.org/index.php?topic=41989.msg1967778#msg1967778
208 211
212## Flashing Problems
209 213
214### Can't use dfu-programmer or QMK Flasher to flash on Windows
210 215
211## FLIP doesn't work 216Windows requires a driver to support the keyboard in DFU mode. You can use [QMK Driver Installer](https://github.com/qmk/qmk_driver_installer/releases) to install the necessary drivers.
212### AtLibUsbDfu.dll not found
213Remove current driver and reinstall one FLIP provides from DeviceManager.
214http://imgur.com/a/bnwzy
diff --git a/docs/glossary.md b/docs/glossary.md
index fac1952a6..2fd53ca97 100644
--- a/docs/glossary.md
+++ b/docs/glossary.md
@@ -1,29 +1,170 @@
1# Glossary of QMK terms 1# Glossary of QMK terms
2 2
3## ARM
4A line of 32-bit MCU's produced by a number of companies, such as Atmel, Cypress, Kinetis, NXP, ST, and TI.
5
6## AVR
7A line of 8-bit MCU's produced by [Atmel](http://atmel.com). AVR was the original platform that TMK supported.
8
9## AZERTY
10The standard Français (French) keyboard layout. Named for the first 6 keys on the keyboard.
11
12## Backlight
13A generic term for lighting on a keyboard. The backlight is typically, but not always, an array of LED's that shine through keycaps and/or switches.
14
15## Bluetooth
16A short range peer to peer wireless protocol. Most common wireless protocol for a keyboard.
17
18## Bootloader
19A special program that is written to a protected area of your MCU that allows the MCU to upgrade its own firmware, typically over USB.
20
21## Bootmagic
22A feature that allows for various keyboard behavior changes to happen on the fly, such as swapping or disabling common keys.
23
24## C
25A low-level programming language suitable for system code. Most QMK code is written in C.
26
27## Colemak
28An alternative keyboard layout that is gaining in popularity.
29
30## Compile
31The process of turning human readable code into machine code your MCU can run.
32
33## Dvorak
34An alternative keyboard layout developed by Dr. August Dvorak in the 1930's. A shortened form of the Dvorak Simplified Keyboard.
35
3## Dynamic Macro 36## Dynamic Macro
4A macro which has been recorded on the keyboard and which will be lost when the keyboard is unplugged or the computer rebooted. 37A macro which has been recorded on the keyboard and which will be lost when the keyboard is unplugged or the computer rebooted.
5 38
39* [Dynamic Macro Documentation](dynamic_macros.html)
40
41## Eclipse
42An IDE that is popular with many C developers.
43
44* [Eclipse Setup Instructions](eclipse.html)
45
46## Firmware
47The software that controls your MCU.
48
49## FLIP
50Software provided by Atmel for flashing AVR devices. We generally recommend [QMK Flasher](https://github.com/qmk/qmk_flasher) instead, but for some advanced use cases FLIP is required.
51
6## git 52## git
7Versioning software used at the commandline 53Versioning software used at the commandline
8 54
55## GitHub
56The website that hosts most of the QMK project. It provides integration with git, issue tracking, and other features that help us run QMK.
57
58## ISP
59In-system programming, a method of programming an AVR chip using external hardware and the JTAG pins.
60
61## hid_listen
62An interface for receiving debugging messages from your keyboard. You can view these messages using [QMK Flasher](https://github.com/qmk/qmk_flasher) or [PJRC's hid_listen](https://www.pjrc.com/teensy/hid_listen.html)
63
9## Keycode 64## Keycode
10A 2-byte number that represents a particular key. `0x00`-`0xFF` are used for [Basic Keycodes](keycodes.html) while `0x100`-`0xFFFF` are used for [Quantum Keycodes](quantum_keycodes.html). 65A 2-byte number that represents a particular key. `0x00`-`0xFF` are used for [Basic Keycodes](keycodes.html) while `0x100`-`0xFFFF` are used for [Quantum Keycodes](quantum_keycodes.html).
11 66
67## Key Down
68An event that happens when a key is pressed down, but is completed before a key is released.
69
70## Key Up
71An event that happens when a key is released.
72
12## Keymap 73## Keymap
13An array of keycodes mapped to a physical keyboard layout, which are processed on key presses and releases 74An array of keycodes mapped to a physical keyboard layout, which are processed on key presses and releases
14 75
76## Layer
77An abstraction used to allow a key to serve multiple purposes. The highest active layer takes precedence.
78
79## Leader Key
80A feature that allows you to tap the leader key followed by a sequence of 1, 2, or 3 keys to activate key presses or other quantum features.
81
82* [Leader Key Documentation](leader_key.html)
83
84## LED
85Light Emitting Diode, the most common device used for indicators on a keyboard.
86
87## Make
88Software package that is used to compile all the source files. You run `make` with various options to compile your keyboard firmware.
89
15## Matrix 90## Matrix
16A wiring pattern of columns and rows (and usually diodes) that enables the MCU to detect keypresses with a fewer number of pins 91A wiring pattern of columns and rows that enables the MCU to detect keypresses with a fewer number of pins. The matrix often incorporates diodes to allow for NKRO.
17 92
18## Macro 93## Macro
19A feature that lets you send muiltple keypress events (hid reports) after having pressed only a single key. 94A feature that lets you send muiltple keypress events (hid reports) after having pressed only a single key.
20 95
96* [Macro Documentation](macros.html)
97
98## MCU
99Microcontrol Unit, the processor that powers your keyboard.
100
101## Modifier
102A key that is held down while typing another key to modify the action of that key. Examples include Ctrl, Alt, and Shift.
103
21## Mousekeys 104## Mousekeys
22A feature that lets you control your mouse cursor and click from your keyboard. 105A feature that lets you control your mouse cursor and click from your keyboard.
23 106
24* [Mousekeys Documentation](mouse_keys.html) 107* [Mousekeys Documentation](mouse_keys.html)
25 108
109## N-Key Rollover (NKRO)
110A term that applies to keyboards that are capable of reporting any number of key-presses at once.
111
112## Oneshot Modifier
113A modifier that acts as if it is held down until another key is released, so you can press the mod and then press the key, rather than holding the mod while pressing the key.
114
115## ProMicro
116A low cost AVR development board. Clones of this device are often found on ebay very inexpensively (under $5) but people often struggle with flashing their pro micros.
117
118## Pull Request
119A request to submit code to QMK. We encourage all users to submit Pull Requests for their personal keymaps.
120
121## QWERTY
122The standard English keyboard layout, and often a shortcut for other language's standard layouts. Named for the first 6 letters on the keyboard.
123
124## QWERTZ
125The standard Deutsche (German) keyboard layout. Named for the first 6 letters on the keyboard.
126
127## Rollover
128The term for pressing a key while a key is already held down. Variants include 2KRO, 6KRO, and NKRO.
129
130## Scancode
131A 1 byte number that is sent as part of a HID report over USB that represents a single key. These numbers are documented in the [HID Usage Tables](http://www.usb.org/developers/hidpage/Hut1_12v2.pdf) published by the [USB-IF](http://www.usb.org/).
132
133## Space Cadet Shift
134A special set of shift keys which allow you to type various types of braces by tapping the left or right shift one or more times.
135
136* [Space Cadet Shift Documentation](space_cadet_shift.html)
137
138## Tap
139Pressing and releasing a key. In some situations you will need to distinguish between a key down and a key up event, and Tap always refers to both at once.
140
26## Tap Dance 141## Tap Dance
27A feature that lets you assign muiltple keycodes to the same key based on how many times you press it. 142A feature that lets you assign muiltple keycodes to the same key based on how many times you press it.
28 143
29* [Tap Dance Documentation](tap_dance.html) 144* [Tap Dance Documentation](tap_dance.html)
145
146## Teensy
147A low-cost AVR development board that is commonly used for hand-wired builds. A teensy is often chosen despite costing a few dollors more due to its halfkay bootloader, which makes flashing very simple.
148
149## Underlight
150A generic term for LEDs that light the underside of the board. These LED's typically shine away from the bottom of the PCB and towards the surface the keyboard rests on.
151
152## Unicode
153In the larger computer world Unicode is a set of encoding schemes for representing characters in any language. As it relates to QMK it means using various OS schemes to send unicode codepoints instead of scancodes.
154
155* [Unicode Documentation](unicode.html)
156
157## Unit Testing
158A framework for running automated tests against QMK. Unit testing helps us be confident that our changes do not break anything.
159
160* [Unit Testing Documentation](unit_testing.html)
161
162## USB
163Universal Serial Bus, the most common wired interface for a keyboard.
164
165## USB Host (or simply Host)
166The USB Host is your computer, or whatever device your keyboard is plugged into.
167
168# Couldn't find the term you're looking for?
169
170[Open an issue](https://github.com/qmk/qmk_firmware/issues) with your question and the term in question could be added here. Better still, open a pull request with the definition. :)