Refactor `qmk compile-json` to `qmk compile` (#6592)
[jackhill/qmk/firmware.git] / docs / reference_glossary.md
CommitLineData
7b0356d1 1# Glossary of QMK Terms
3e3c3e2b 2
cb9e5915 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
7f7f7635 7A line of 8-bit MCU's produced by [Atmel](http://www.microchip.com/). AVR was the original platform that TMK supported.
cb9e5915 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
d8e29b53 36## Dynamic Macro
37A macro which has been recorded on the keyboard and which will be lost when the keyboard is unplugged or the computer rebooted.
3e3c3e2b 38
67cc5ceb 39* [Dynamic Macro Documentation](feature_dynamic_macros.md)
cb9e5915 40
41## Eclipse
42An IDE that is popular with many C developers.
43
7aaef162 44* [Eclipse Setup Instructions](eclipse.md)
cb9e5915 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
d8e29b53 52## git
af37bb2f 53Versioning software used at the command line
3e3c3e2b 54
cb9e5915 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
d8e29b53 64## Keycode
7aaef162 65A 2-byte number that represents a particular key. `0x00`-`0xFF` are used for [Basic Keycodes](keycodes_basic.md) while `0x100`-`0xFFFF` are used for [Quantum Keycodes](quantum_keycodes.md).
d8e29b53 66
cb9e5915 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
d8e29b53 73## Keymap
74An array of keycodes mapped to a physical keyboard layout, which are processed on key presses and releases
75
cb9e5915 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
7aaef162 82* [Leader Key Documentation](feature_leader_key.md)
cb9e5915 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
d8e29b53 90## Matrix
cb9e5915 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.
d8e29b53 92
93## Macro
af37bb2f 94A feature that lets you send multiple keypress events (hid reports) after having pressed only a single key.
d8e29b53 95
67cc5ceb 96* [Macro Documentation](feature_macros.md)
cb9e5915 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
d8e29b53 104## Mousekeys
105A feature that lets you control your mouse cursor and click from your keyboard.
106
7aaef162 107* [Mousekeys Documentation](feature_mouse_keys.md)
d8e29b53 108
cb9e5915 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
c9178882 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. Also known as a Sticky key or a Dead key.
cb9e5915 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
dad79caf 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](https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf) published by the [USB-IF](http://www.usb.org/).
cb9e5915 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
03ad6927 136* [Space Cadet Shift Documentation](feature_space_cadet_shift.md)
cb9e5915 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
d8e29b53 141## Tap Dance
af37bb2f 142A feature that lets you assign multiple keycodes to the same key based on how many times you press it.
d8e29b53 143
67cc5ceb 144* [Tap Dance Documentation](feature_tap_dance.md)
cb9e5915 145
146## Teensy
af37bb2f 147A low-cost AVR development board that is commonly used for hand-wired builds. A teensy is often chosen despite costing a few dollars more due to its halfkay bootloader, which makes flashing very simple.
cb9e5915 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
67cc5ceb 155* [Unicode Documentation](feature_unicode.md)
cb9e5915 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
f02430b1 160* [Unit Testing Documentation](unit_testing.md)
cb9e5915 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.
585f1400 167
7b0356d1 168# Couldn't Find the Term You're Looking For?
585f1400 169
bb53635f 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. :)