aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJack Humbert <jack.humb@gmail.com>2017-06-29 00:15:07 -0400
committerJack Humbert <jack.humb@gmail.com>2017-06-29 00:15:07 -0400
commitd5244c6cf4939301b18ecf07650df6a6f9800e07 (patch)
treea9ad4ea0031d3e744c1e98b5e7c918f0417dedb8
parent40d82906cb2556ead29e2288788c7a26caf1f026 (diff)
downloadqmk_firmware-d5244c6cf4939301b18ecf07650df6a6f9800e07.tar.gz
qmk_firmware-d5244c6cf4939301b18ecf07650df6a6f9800e07.zip
restructure keycode docs
-rw-r--r--docs/_summary.md2
-rw-r--r--docs/basic_keycodes.md186
-rw-r--r--docs/keycodes.md219
-rw-r--r--docs/quantum_keycodes.md274
4 files changed, 466 insertions, 215 deletions
diff --git a/docs/_summary.md b/docs/_summary.md
index b08d86520..268ab9954 100644
--- a/docs/_summary.md
+++ b/docs/_summary.md
@@ -9,6 +9,8 @@
9* [Keymap overview](keymap.md) 9* [Keymap overview](keymap.md)
10* [Custom Quantum Functions](custom_quantum_functions.md) 10* [Custom Quantum Functions](custom_quantum_functions.md)
11* [Keycodes](keycodes.md) 11* [Keycodes](keycodes.md)
12 * [Basic Keycodes](basic_keycodes.md)
13 * [Quantum Keycodes](quantum_keycodes.md)
12* [Layer switching](key_functions.md) 14* [Layer switching](key_functions.md)
13* [Leader Key](leader_key.md) 15* [Leader Key](leader_key.md)
14* [Macros](macros.md) 16* [Macros](macros.md)
diff --git a/docs/basic_keycodes.md b/docs/basic_keycodes.md
new file mode 100644
index 000000000..2be3ada15
--- /dev/null
+++ b/docs/basic_keycodes.md
@@ -0,0 +1,186 @@
1# Basic keycodes
2
3## Letters and Numbers
4
5|KC_1|KC_2|KC_3|KC_4|KC_5|KC_6|KC_7|KC_8|
6|----|----|----|----|----|----|----|----|
7|KC_9|KC_0|KC_F1|KC_F2|KC_F3|KC_F4|KC_F5|KC_F6|
8|KC_F7|KC_F8|KC_F9|KC_F10|KC_F11|KC_F12|KC_F13|KC_F14|
9|KC_F15|KC_F16|KC_F17|KC_F18|KC_F19|KC_F20|KC_F21|KC_F22|
10|KC_F23|KC_F24|KC_A|KC_B|KC_C|KC_D|KC_E|KC_F|
11|KC_G|KC_H|KC_I|KC_J|KC_K|KC_L|KC_M|KC_N|
12|KC_O|KC_P|KC_Q|KC_R|KC_S|KC_T|KC_U|KC_V|
13|KC_W|KC_X|KC_Y|KC_Z|||||
14
15## Punctuation
16
17|Long Name|Short Name|Description|
18|---------|----------|-----------|
19|KC_ENTER|KC_ENT|`Return (ENTER)`|
20|KC_ESCAPE|KC_ESC|`ESCAPE`|
21|KC_BSPACE|KC_BSPC|`DELETE (Backspace)`|
22|KC_TAB||`Tab`|
23|KC_SPACE|KC_SPC|Spacebar|
24|KC_MINUS|KC_MINS|`-` and `_`|
25|KC_EQUAL|KC_EQL|`=` and `+`|
26|KC_LBRACKET|KC_LBRC|`[` and `{`|
27|KC_RBRACKET|KC_RBRC|`]` and `}`|
28|KC_BSLASH|KC_BSLS|`\` and <code>&#124;</code> |
29|KC_NONUS_HASH|KC_NUHS|Non-US `#` and `~`|
30|KC_NONUS_BSLASH|KC_NUBS|Non-US `\` and <code>&#124;</code> |
31|KC_INT1|KC_RO|JIS `\` and <code>&#124;</code> |
32|KC_INT2|KC_KANA|International216|
33|KC_INT3|KC_JYEN|Yen Symbol (`¥`)|
34|KC_SCOLON|KC_SCLN|`;` and `:`|
35|KC_QUOTE|KC_QUOT|`‘` and `“`|
36|KC_GRAVE|KC_GRV|Grave Accent and Tilde|
37|KC_COMMA|KC_COMM|`,` and `<`|
38|KC_DOT||`.` and `>`|
39|KC_SLASH|KC_SLSH|`/` and `?`|
40|KC_CAPSLOCK|KC_CAPS|Caps Lock|
41
42## Modifiers
43
44|Long Name|Short Name|Description|
45|---------|----------|-----------|
46|KC_LCTRL|KC_LCTL|LeftControl|
47|KC_LSHIFT|KC_LSFT|LeftShift|
48|KC_LALT||LeftAlt|
49|KC_LGUI||Left GUI(Windows/Apple/Meta key)|
50|KC_RCTRL|KC_RCTL|RightControl|
51|KC_RSHIFT|KC_RSFT|RightShift|
52|KC_RALT||RightAlt|
53|KC_RGUI||Right GUI(Windows/Apple/Meta key)|
54|KC_LOCKING_CAPS||Locking Caps Lock|
55|KC_LOCKING_NUM||Locking Num Lock|
56|KC_LOCKING_SCROLL||Locking Scroll Lock|
57|KC_INT4|KC_HENK|JIS Henken|
58|KC_INT5|KC_MHEN|JIS Muhenken|
59
60## Commands
61
62|Long Name|Short Name|Description|
63|---------|----------|-----------|
64|KC_PSCREEN|KC_PSCR|PrintScreen|
65|KC_SCROLLLOCK|KC_SLCK|Scroll Lock|
66|KC_PAUSE|KC_PAUS|Pause|
67|KC_INSERT|KC_INS|Insert|
68|KC_HOME||Home|
69|KC_PGUP||PageUp|
70|KC_DELETE|KC_DEL|Delete Forward|
71|KC_END||End|
72|KC_PGDOWN|KC_PGDN|PageDown|
73|KC_RIGHT|KC_RGHT|RightArrow|
74|KC_LEFT||LeftArrow|
75|KC_DOWN||DownArrow|
76|KC_UP||UpArrow|
77|KC_APPLICATION|KC_APP|Application|
78|KC_POWER||Power|
79|KC_EXECUTE||Execute|
80|KC_HELP||Help|
81|KC_MENU||Menu|
82|KC_SELECT||Select|
83|KC_AGAIN||Again|
84|KC_UNDO||Undo|
85|KC_CUT||Cut|
86|KC_COPY||Copy|
87|KC_PASTE||Paste|
88|KC_FIND||Find|
89|KC_ALT_ERASE||Alternate Erase|
90|KC_SYSREQ||SysReq/Attention|
91|KC_CANCEL||Cancel|
92|KC_CLEAR||Clear|
93|KC_PRIOR||Prior|
94|KC_RETURN||Return|
95|KC_SEPARATOR||Separator|
96|KC_OUT||Out|
97|KC_OPER||Oper|
98|KC_CLEAR_AGAIN||Clear/Again|
99|KC_CRSEL||CrSel/Props|
100|KC_EXSEL||ExSel|
101|KC_SYSTEM_POWER|KC_PWR|System Power Down|
102|KC_SYSTEM_SLEEP|KC_SLEP|System Sleep|
103|KC_SYSTEM_WAKE|KC_WAKE|System Wake|
104|KC_MAIL|KC_MAIL||
105|KC_CALCULATOR|KC_CALC||
106|KC_MY_COMPUTER|KC_MYCM||
107|KC_WWW_SEARCH|KC_WSCH||
108|KC_WWW_HOME|KC_WHOM||
109|KC_WWW_BACK|KC_WBAK||
110|KC_WWW_FORWARD|KC_WFWD||
111|KC_WWW_STOP|KC_WSTP||
112|KC_WWW_REFRESH|KC_WREF||
113|KC_WWW_FAVORITES|KC_WFAV||
114
115## Media Keys
116
117Windows and Mac use different key codes for next track and previous track. Make sure you choose the keycode that corresponds to your OS.
118
119|Long Name|Short Name|Description|
120|---------|----------|-----------|
121|KC_STOP||Stop|
122|KC__MUTE||Mute|
123|KC__VOLUP||Volume Up|
124|KC__VOLDOWN||Volume Down|
125|KC_AUDIO_MUTE|KC_MUTE||
126|KC_AUDIO_VOL_UP|KC_VOLU||
127|KC_AUDIO_VOL_DOWN|KC_VOLD||
128|KC_MEDIA_NEXT_TRACK|KC_MNXT|Next Track (Windows)|
129|KC_MEDIA_PREV_TRACK|KC_MPRV|Previous Track (Windows)|
130|KC_MEDIA_FAST_FORWARD|KC_MFFD|Next Track (macOS)|
131|KC_MEDIA_REWIND|KC_MRWD|Previous Track (macOS)|
132|KC_MEDIA_STOP|KC_MSTP||
133|KC_MEDIA_PLAY_PAUSE|KC_MPLY||
134|KC_MEDIA_SELECT|KC_MSEL||
135
136## Numpad
137
138|Long Name|Short Name|Description|
139|---------|----------|-----------|
140|KC_NUMLOCK|KC_NLCK|Keypad Num Lock and Clear|
141|KC_KP_SLASH|KC_PSLS|Keypad /|
142|KC_KP_ASTERISK|KC_PAST|Keypad *|
143|KC_KP_MINUS|KC_PMNS|Keypad -|
144|KC_KP_PLUS|KC_PPLS|Keypad +|
145|KC_KP_ENTER|KC_PENT|Keypad ENTER|
146|KC_KP_1|KC_P1|Keypad 1 and End|
147|KC_KP_2|KC_P2|Keypad 2 and Down Arrow|
148|KC_KP_3|KC_P3|Keypad 3 and PageDn|
149|KC_KP_4|KC_P4|Keypad 4 and Left Arrow|
150|KC_KP_5|KC_P5|Keypad 5|
151|KC_KP_6|KC_P6|Keypad 6 and Right Arrow|
152|KC_KP_7|KC_P7|Keypad 7 and Home|
153|KC_KP_8|KC_P8|Keypad 8 and Up Arrow|
154|KC_KP_9|KC_P9|Keypad 9 and PageUp|
155|KC_KP_0|KC_P0|Keypad 0 and Insert|
156|KC_KP_DOT|KC_PDOT|Keypad . and Delete|
157|KC_KP_EQUAL|KC_PEQL|Keypad =|
158|KC_KP_COMMA|KC_PCMM|Keypad Comma|
159|KC_KP_EQUAL_AS400||Keypad Equal Sign|
160
161## Special Keys
162
163|Long Name|Short Name|Description|
164|---------|----------|-----------|
165|KC_NO||Ignore this key. (NOOP) |
166
167## Mousekey
168
169|Long Name|Short Name|Description|
170|---------|----------|-----------|
171|KC_MS_UP|KC_MS_U|Mouse Cursor Up|
172|KC_MS_DOWN|KC_MS_D|Mouse Cursor Down|
173|KC_MS_LEFT|KC_MS_L|Mouse Cursor Left|
174|KC_MS_RIGHT|KC_MS_R|Mouse Cursor Right|
175|KC_MS_BTN1|KC_BTN1|Mouse Button 1|
176|KC_MS_BTN2|KC_BTN2|Mouse Button 2|
177|KC_MS_BTN3|KC_BTN3|Mouse Button 3|
178|KC_MS_BTN4|KC_BTN4|Mouse Button 4|
179|KC_MS_BTN5|KC_BTN5|Mouse Button 5|
180|KC_MS_WH_UP|KC_WH_U|Mouse Wheel Up|
181|KC_MS_WH_DOWN|KC_WH_D|Mouse Wheel Down|
182|KC_MS_WH_LEFT|KC_WH_L|Mouse Wheel Left|
183|KC_MS_WH_RIGHT|KC_WH_R|Mouse Wheel Right|
184|KC_MS_ACCEL0|KC_ACL0|Mouse Acceleration 0|
185|KC_MS_ACCEL1|KC_ACL1|Mouse Acceleration 1|
186|KC_MS_ACCEL2|KC_ACL2|Mouse Acceleration 2| \ No newline at end of file
diff --git a/docs/keycodes.md b/docs/keycodes.md
index 5cf5c019d..7c5cae8b3 100644
--- a/docs/keycodes.md
+++ b/docs/keycodes.md
@@ -4,225 +4,14 @@ When defining a [keymap](keymap.md) each key needs a valid key definition.
4 4
5This page documents the symbols that correspond to keycodes that are available to you in QMK. 5This page documents the symbols that correspond to keycodes that are available to you in QMK.
6 6
7To customize your board, they can be used by themselves or as **action codes** in combination with one of the [many C macros](https://github.com/qmk/qmk_firmware/wiki#c-macros-for-action-code). 7## Basic keycodes (`0x00` - `0xFF`)
8 8
9The source of truth for these codes is [tmk_core/common/keycode.h](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/common/keycode.h) file in the qmk source code. 9[Basic keycodes](basic_keycodes.md) in QMK are based on [HID Usage Keyboard/Keypad Page(0x07)](http://www.usb.org/developers/hidpage/Hut1_12v2.pdf) with following exceptions:
10
11# The Keycodes
12
13Keycodes in QMK are based on [HID Usage Keyboard/Keypad Page(0x07)](http://www.usb.org/developers/hidpage/Hut1_12v2.pdf) with following exceptions:
14 10
15* `KC_NO` = 0 for no action 11* `KC_NO` = 0 for no action
16* `KC_TRNS` = 1 for layer transparency 12* `KC_TRNS` = 1 for layer transparency
17* internal special keycodes in the `0xA5-DF` range (tmk heritage). 13* internal special keycodes in the `0xA5-DF` range (tmk heritage).
18 14
19## Letters and Numbers 15## Quantum keycodes (`0x0100` - `0xFFFF`)
20
21|KC_1|KC_2|KC_3|KC_4|KC_5|KC_6|KC_7|KC_8|
22|----|----|----|----|----|----|----|----|
23|KC_9|KC_0|KC_F1|KC_F2|KC_F3|KC_F4|KC_F5|KC_F6|
24|KC_F7|KC_F8|KC_F9|KC_F10|KC_F11|KC_F12|KC_F13|KC_F14|
25|KC_F15|KC_F16|KC_F17|KC_F18|KC_F19|KC_F20|KC_F21|KC_F22|
26|KC_F23|KC_F24|KC_A|KC_B|KC_C|KC_D|KC_E|KC_F|
27|KC_G|KC_H|KC_I|KC_J|KC_K|KC_L|KC_M|KC_N|
28|KC_O|KC_P|KC_Q|KC_R|KC_S|KC_T|KC_U|KC_V|
29|KC_W|KC_X|KC_Y|KC_Z|||||
30
31## Punctuation
32
33|Long Name|Short Name|Description|
34|---------|----------|-----------|
35|KC_ENTER|KC_ENT|`Return (ENTER)`|
36|KC_ESCAPE|KC_ESC|`ESCAPE`|
37|KC_BSPACE|KC_BSPC|`DELETE (Backspace)`|
38|KC_TAB||`Tab`|
39|KC_SPACE|KC_SPC|Spacebar|
40|KC_MINUS|KC_MINS|`-` and `_`|
41|KC_EQUAL|KC_EQL|`=` and `+`|
42|KC_LBRACKET|KC_LBRC|`[` and `{`|
43|KC_RBRACKET|KC_RBRC|`]` and `}`|
44|KC_BSLASH|KC_BSLS|`\` and <code>&#124;</code> |
45|KC_NONUS_HASH|KC_NUHS|Non-US `#` and `~`|
46|KC_NONUS_BSLASH|KC_NUBS|Non-US `\` and <code>&#124;</code> |
47|KC_INT1|KC_RO|JIS `\` and <code>&#124;</code> |
48|KC_INT2|KC_KANA|International216|
49|KC_INT3|KC_JYEN|Yen Symbol (`¥`)|
50|KC_SCOLON|KC_SCLN|`;` and `:`|
51|KC_QUOTE|KC_QUOT|`‘` and `“`|
52|KC_GRAVE|KC_GRV|Grave Accent and Tilde|
53|KC_COMMA|KC_COMM|`,` and `<`|
54|KC_DOT||`.` and `>`|
55|KC_SLASH|KC_SLSH|`/` and `?`|
56|KC_CAPSLOCK|KC_CAPS|Caps Lock|
57
58## Modifiers
59
60|Long Name|Short Name|Description|
61|---------|----------|-----------|
62|KC_LCTRL|KC_LCTL|LeftControl|
63|KC_LSHIFT|KC_LSFT|LeftShift|
64|KC_LALT||LeftAlt|
65|KC_LGUI||Left GUI(Windows/Apple/Meta key)|
66|KC_RCTRL|KC_RCTL|RightControl|
67|KC_RSHIFT|KC_RSFT|RightShift|
68|KC_RALT||RightAlt|
69|KC_RGUI||Right GUI(Windows/Apple/Meta key)|
70|KC_LOCKING_CAPS||Locking Caps Lock|
71|KC_LOCKING_NUM||Locking Num Lock|
72|KC_LOCKING_SCROLL||Locking Scroll Lock|
73|KC_INT4|KC_HENK|JIS Henken|
74|KC_INT5|KC_MHEN|JIS Muhenken|
75
76## Commands
77
78|Long Name|Short Name|Description|
79|---------|----------|-----------|
80|KC_PSCREEN|KC_PSCR|PrintScreen|
81|KC_SCROLLLOCK|KC_SLCK|Scroll Lock|
82|KC_PAUSE|KC_PAUS|Pause|
83|KC_INSERT|KC_INS|Insert|
84|KC_HOME||Home|
85|KC_PGUP||PageUp|
86|KC_DELETE|KC_DEL|Delete Forward|
87|KC_END||End|
88|KC_PGDOWN|KC_PGDN|PageDown|
89|KC_RIGHT|KC_RGHT|RightArrow|
90|KC_LEFT||LeftArrow|
91|KC_DOWN||DownArrow|
92|KC_UP||UpArrow|
93|KC_APPLICATION|KC_APP|Application|
94|KC_POWER||Power|
95|KC_EXECUTE||Execute|
96|KC_HELP||Help|
97|KC_MENU||Menu|
98|KC_SELECT||Select|
99|KC_AGAIN||Again|
100|KC_UNDO||Undo|
101|KC_CUT||Cut|
102|KC_COPY||Copy|
103|KC_PASTE||Paste|
104|KC_FIND||Find|
105|KC_ALT_ERASE||Alternate Erase|
106|KC_SYSREQ||SysReq/Attention|
107|KC_CANCEL||Cancel|
108|KC_CLEAR||Clear|
109|KC_PRIOR||Prior|
110|KC_RETURN||Return|
111|KC_SEPARATOR||Separator|
112|KC_OUT||Out|
113|KC_OPER||Oper|
114|KC_CLEAR_AGAIN||Clear/Again|
115|KC_CRSEL||CrSel/Props|
116|KC_EXSEL||ExSel|
117|KC_SYSTEM_POWER|KC_PWR|System Power Down|
118|KC_SYSTEM_SLEEP|KC_SLEP|System Sleep|
119|KC_SYSTEM_WAKE|KC_WAKE|System Wake|
120|KC_MAIL|KC_MAIL||
121|KC_CALCULATOR|KC_CALC||
122|KC_MY_COMPUTER|KC_MYCM||
123|KC_WWW_SEARCH|KC_WSCH||
124|KC_WWW_HOME|KC_WHOM||
125|KC_WWW_BACK|KC_WBAK||
126|KC_WWW_FORWARD|KC_WFWD||
127|KC_WWW_STOP|KC_WSTP||
128|KC_WWW_REFRESH|KC_WREF||
129|KC_WWW_FAVORITES|KC_WFAV||
130
131## Media Keys
132
133Windows and Mac use different key codes for next track and previous track. Make sure you choose the keycode that corresponds to your OS.
134
135|Long Name|Short Name|Description|
136|---------|----------|-----------|
137|KC_STOP||Stop|
138|KC__MUTE||Mute|
139|KC__VOLUP||Volume Up|
140|KC__VOLDOWN||Volume Down|
141|KC_AUDIO_MUTE|KC_MUTE||
142|KC_AUDIO_VOL_UP|KC_VOLU||
143|KC_AUDIO_VOL_DOWN|KC_VOLD||
144|KC_MEDIA_NEXT_TRACK|KC_MNXT|Next Track (Windows)|
145|KC_MEDIA_PREV_TRACK|KC_MPRV|Previous Track (Windows)|
146|KC_MEDIA_FAST_FORWARD|KC_MFFD|Next Track (macOS)|
147|KC_MEDIA_REWIND|KC_MRWD|Previous Track (macOS)|
148|KC_MEDIA_STOP|KC_MSTP||
149|KC_MEDIA_PLAY_PAUSE|KC_MPLY||
150|KC_MEDIA_SELECT|KC_MSEL||
151
152## Numpad
153
154|Long Name|Short Name|Description|
155|---------|----------|-----------|
156|KC_NUMLOCK|KC_NLCK|Keypad Num Lock and Clear|
157|KC_KP_SLASH|KC_PSLS|Keypad /|
158|KC_KP_ASTERISK|KC_PAST|Keypad *|
159|KC_KP_MINUS|KC_PMNS|Keypad -|
160|KC_KP_PLUS|KC_PPLS|Keypad +|
161|KC_KP_ENTER|KC_PENT|Keypad ENTER|
162|KC_KP_1|KC_P1|Keypad 1 and End|
163|KC_KP_2|KC_P2|Keypad 2 and Down Arrow|
164|KC_KP_3|KC_P3|Keypad 3 and PageDn|
165|KC_KP_4|KC_P4|Keypad 4 and Left Arrow|
166|KC_KP_5|KC_P5|Keypad 5|
167|KC_KP_6|KC_P6|Keypad 6 and Right Arrow|
168|KC_KP_7|KC_P7|Keypad 7 and Home|
169|KC_KP_8|KC_P8|Keypad 8 and Up Arrow|
170|KC_KP_9|KC_P9|Keypad 9 and PageUp|
171|KC_KP_0|KC_P0|Keypad 0 and Insert|
172|KC_KP_DOT|KC_PDOT|Keypad . and Delete|
173|KC_KP_EQUAL|KC_PEQL|Keypad =|
174|KC_KP_COMMA|KC_PCMM|Keypad Comma|
175|KC_KP_EQUAL_AS400||Keypad Equal Sign|
176
177## Special Keys
178
179|Long Name|Short Name|Description|
180|---------|----------|-----------|
181|KC_NO||Ignore this key. (NOOP) |
182
183## Mousekey
184
185|Long Name|Short Name|Description|
186|---------|----------|-----------|
187|KC_MS_UP|KC_MS_U|Mouse Cursor Up|
188|KC_MS_DOWN|KC_MS_D|Mouse Cursor Down|
189|KC_MS_LEFT|KC_MS_L|Mouse Cursor Left|
190|KC_MS_RIGHT|KC_MS_R|Mouse Cursor Right|
191|KC_MS_BTN1|KC_BTN1|Mouse Button 1|
192|KC_MS_BTN2|KC_BTN2|Mouse Button 2|
193|KC_MS_BTN3|KC_BTN3|Mouse Button 3|
194|KC_MS_BTN4|KC_BTN4|Mouse Button 4|
195|KC_MS_BTN5|KC_BTN5|Mouse Button 5|
196|KC_MS_WH_UP|KC_WH_U|Mouse Wheel Up|
197|KC_MS_WH_DOWN|KC_WH_D|Mouse Wheel Down|
198|KC_MS_WH_LEFT|KC_WH_L|Mouse Wheel Left|
199|KC_MS_WH_RIGHT|KC_WH_R|Mouse Wheel Right|
200|KC_MS_ACCEL0|KC_ACL0|Mouse Acceleration 0|
201|KC_MS_ACCEL1|KC_ACL1|Mouse Acceleration 1|
202|KC_MS_ACCEL2|KC_ACL2|Mouse Acceleration 2|
203
204## Magic Keys
205
206The following keys can be used to turn on and off various "Magic" features. These include Boot Magic (holding certain keys down while plugging the keyboard in) and the Magic Key.
207 16
208|Long Name|Short Name|Description| 17[Quantum keycodes](quantum_keycodes.md) allow for easier customisation of your keymap than the basic ones provide, without having to define custom actions.
209|---------|----------|-----------|
210|MAGIC_SWAP_CONTROL_CAPSLOCK||Swap Capslock and Control|
211|MAGIC_CAPSLOCK_TO_CONTROL||Change Capslock to Control|
212|MAGIC_SWAP_ALT_GUI||Swap ALT and GUI|
213|MAGIC_SWAP_LALT_LGUI||Swap LALT and LGUI|
214|MAGIC_SWAP_RALT_RGUI||Swap RALT and RGUI|
215|MAGIC_NO_GUI||Disable off the GUI key|
216|MAGIC_SWAP_GRAVE_ESC||Swap the GRAVE (~ `) and Esc keys|
217|MAGIC_SWAP_BACKSLASH_BACKSPACE||Swap Backslash and Backspace|
218|MAGIC_UNSWAP_CONTROL_CAPSLOCK||Disable the Control/Caps Swap|
219|MAGIC_UNCAPSLOCK_TO_CONTROL||Turn Capslock back into Capslock|
220|MAGIC_UNSWAP_ALT_GUI||Turn the ALT/GUI swap off|
221|MAGIC_UNSWAP_LALT_LGUI||Turn the LALT/LGUI swap off|
222|MAGIC_UNSWAP_RALT_RGUI||Turn the RALT/RGUI swap off|
223|MAGIC_UNNO_GUI||Enable the GUI key|
224|MAGIC_UNSWAP_GRAVE_ESC||Turn the GRAVE/ESC swap off|
225|MAGIC_UNSWAP_BACKSLASH_BACKSPACE||Turn the Backslash/Backspace swap off|
226|MAGIC_HOST_NKRO||Turn NKRO on|
227|MAGIC_UNHOST_NKRO||Turn NKRO off|
228|MAGIC_TOGGLE_NKRO||Toggle NKRO on or off|
diff --git a/docs/quantum_keycodes.md b/docs/quantum_keycodes.md
new file mode 100644
index 000000000..81eb64701
--- /dev/null
+++ b/docs/quantum_keycodes.md
@@ -0,0 +1,274 @@
1# Quantum Keycodes
2
3Something important to realise with keycodes is that they are all numbers between `0x0` and `0xFFFF` - even though they may look like functions, words, or phrases, they are all shortcuts to some number. This allows us to define all of what they do in different places, and store keymaps in a relatively small place (arrays). If you try to "call" a keycode by placing it somewhere besides a keymap, it may compile, but it won't do anything useful.
4
5All keycodes on this page have a value above `0xFF` (values less are considered the [basic keycodes](basic_keycodes.md)) and won't work with any of the mod/layer-tap keys listed at the bottom.
6
7* `SAFE_RANGE` is always the last keycode in the quantum list, and where custom lists can begin
8* `RESET` puts the keyboard into DFU mode for flashing
9* `DEBUG` toggles debug mode
10* Shortcuts for bootmagic options (work when bootmagic is off)
11 * `MAGIC_SWAP_CONTROL_CAPSLOCK`
12 * `MAGIC_CAPSLOCK_TO_CONTROL`
13 * `MAGIC_SWAP_LALT_LGUI`
14 * `MAGIC_SWAP_RALT_RGUI`
15 * `MAGIC_NO_GUI`
16 * `MAGIC_SWAP_GRAVE_ESC`
17 * `MAGIC_SWAP_BACKSLASH_BACKSPACE`
18 * `MAGIC_HOST_NKRO`
19 * `MAGIC_SWAP_ALT_GUI`/`AG_SWAP`
20 * `MAGIC_UNSWAP_CONTROL_CAPSLOCK`
21 * `MAGIC_UNCAPSLOCK_TO_CONTROL`
22 * `MAGIC_UNSWAP_LALT_LGUI`
23 * `MAGIC_UNSWAP_RALT_RGUI`
24 * `MAGIC_UNNO_GUI`
25 * `MAGIC_UNSWAP_GRAVE_ESC`
26 * `MAGIC_UNSWAP_BACKSLASH_BACKSPACE`
27 * `MAGIC_UNHOST_NKRO`
28 * `MAGIC_UNSWAP_ALT_GUI`/`AG_NORM`
29 * `MAGIC_TOGGLE_NKRO`
30* `KC_GESC`/`GRAVE_ESC` acts as escape when pressed normally but when pressed with a mod will send a `~`
31* `KC_LSPO` left shift when held, open paranthesis when tapped
32* `KC_RSPC` right shift when held, close paranthesis when tapped
33* `KC_LEAD` the leader key
34
35* `FUNC(n)`/`F(n)` to call `fn_action` n
36* `M(n)` to call macro n
37* `MACROTAP(n)` to macro-tap n idk FIXME
38
39## Audio
40
41```c
42#ifdef AUDIO_ENABLE
43 AU_ON,
44 AU_OFF,
45 AU_TOG,
46
47 #ifdef FAUXCLICKY_ENABLE
48 FC_ON,
49 FC_OFF,
50 FC_TOG,
51 #endif
52
53 // Music mode on/off/toggle
54 MU_ON,
55 MU_OFF,
56 MU_TOG,
57
58 // Music voice iterate
59 MUV_IN,
60 MUV_DE,
61#endif
62```
63
64## Midi
65
66#if !MIDI_ENABLE_STRICT || (defined(MIDI_ENABLE) && defined(MIDI_BASIC))
67 MI_ON, // send midi notes when music mode is enabled
68 MI_OFF, // don't send midi notes when music mode is enabled
69#endif
70
71MIDI_TONE_MIN,
72MIDI_TONE_MAX
73
74MI_C = MIDI_TONE_MIN,
75MI_Cs,
76MI_Db = MI_Cs,
77MI_D,
78MI_Ds,
79MI_Eb = MI_Ds,
80MI_E,
81MI_F,
82MI_Fs,
83MI_Gb = MI_Fs,
84MI_G,
85MI_Gs,
86MI_Ab = MI_Gs,
87MI_A,
88MI_As,
89MI_Bb = MI_As,
90MI_B,
91
92MIDI_TONE_KEYCODE_OCTAVES > 1
93
94where x = 1-5:
95MI_C_x,
96MI_Cs_x,
97MI_Db_x = MI_Cs_x,
98MI_D_x,
99MI_Ds_x,
100MI_Eb_x = MI_Ds_x,
101MI_E_x,
102MI_F_x,
103MI_Fs_x,
104MI_Gb_x = MI_Fs_x,
105MI_G_x,
106MI_Gs_x,
107MI_Ab_x = MI_Gs_x,
108MI_A_x,
109MI_As_x,
110MI_Bb_x = MI_As_x,
111MI_B_x,
112
113MI_OCT_Nx 1-2
114MI_OCT_x 0-7
115MIDI_OCTAVE_MIN = MI_OCT_N2,
116MIDI_OCTAVE_MAX = MI_OCT_7,
117MI_OCTD, // octave down
118MI_OCTU, // octave up
119
120MI_TRNS_Nx 1-6
121MI_TRNS_x 0-6
122MIDI_TRANSPOSE_MIN = MI_TRNS_N6,
123MIDI_TRANSPOSE_MAX = MI_TRNS_6,
124MI_TRNSD, // transpose down
125MI_TRNSU, // transpose up
126
127MI_VEL_x 1-10
128MIDI_VELOCITY_MIN = MI_VEL_1,
129MIDI_VELOCITY_MAX = MI_VEL_10,
130MI_VELD, // velocity down
131MI_VELU, // velocity up
132
133MI_CHx 1-16
134MIDI_CHANNEL_MIN = MI_CH1
135MIDI_CHANNEL_MAX = MI_CH16,
136MI_CHD, // previous channel
137MI_CHU, // next channel
138
139MI_ALLOFF, // all notes off
140
141MI_SUS, // sustain
142MI_PORT, // portamento
143MI_SOST, // sostenuto
144MI_SOFT, // soft pedal
145MI_LEG, // legato
146
147MI_MOD, // modulation
148MI_MODSD, // decrease modulation speed
149MI_MODSU, // increase modulation speed
150#endif // MIDI_ADVANCED
151
152## Backlight
153
154* `BL_x` where x = 0-15
155* `BL_ON = BL_9`
156* `BL_OFF = BL_0`
157* `BL_DEC`
158* `BL_INC`
159* `BL_TOGG`
160* `BL_STEP`
161
162## RGB WS2818 LEDs
163
164* `RGB_TOG` toggle on/off
165* `RGB_MOD` cycle between modes
166* `RGB_HUI` hue increase
167* `RGB_HUD` hue decrease
168* `RGB_SAI` saturation increase
169* `RGB_SAD` saturation decrease
170* `RGB_VAI` value increase
171* `RGB_VAD` value decrease
172
173## Thermal Printer (experimental)
174
175* `PRINT_ON`
176* `PRINT_OFF`
177
178## Keyboard output selection
179
180* `OUT_AUTO` auto mode
181* `OUT_USB` usb only
182* `OUT_BT` bluetooth (when `BLUETOOTH_ENABLE`)
183
184## Modifiers
185
186* `KC_HYPR` LCTL + LSFT + LALT + LGUI - `MOD_HYPR` is the bit version
187* `KC_MEH` LCTL + LSFT + LALT - `MOD_MEH` is the bit version
188
189### Modifiers with keys
190
191* `LCTL(kc)` LCTL + kc
192* `LSFT(kc)`/`S(kc)` LSFT + kc
193* `LALT(kc)` LALT + kc
194* `LGUI(kc)` LGUI + kc
195* `RCTL(kc)` RCTL + kc
196* `RSFT(kc)` RSFT + kc
197* `RALT(kc)` RALT + kc
198* `RGUI(kc)` RGUI + kc
199
200* `HYPR(kc)` LCTL + LSFT + LALT + LGUI + kc
201* `MEH(kc)` LCTL + LSFT + LALT + kc
202* `LCAG(kc)` LCTL + LALT + LGUI + kc
203* `ALTG(kc)` RCTL + RALT + kc
204* `SCMD(kc)`/`SWIN(kc)` LGUI + LSFT + kc
205* `LCA(kc)` LCTL + LALT + kc
206
207* `OSM(mod)` use mod for one keypress - use mod bits with this
208
209> Mod bits are the 4-letter part of the keycode prefixed with `MOD_`, e.g. `MOD_LCTL`
210
211### Mod-tap keys
212
213These keycodes will press the mod(s) when held, and the key when tapped. They only work with [basic keycodes](basic_keycodes.md).
214
215* `CTL_T(kc)`/`LCTL_T(kc)` LCTL when held, kc when tapped
216* `RCTL_T(kc)` RCTL when held, kc when tapped
217
218* `SFT_T(kc)`/`LSFT_T(kc)` LSFT when held, kc when tapped
219* `RSFT_T(kc)` RSFT when held, kc when tapped
220
221* `ALT_T(kc)`/`LALT_T(kc)` LALT when held, kc when tapped
222* `RALT_T(kc)`/`ALGR_T(kc)` RALT when held, kc when tapped
223
224* `GUI_T(kc)`/`LGUI_T(kc)` LGUI when held, kc when tapped
225* `RGUI_T(kc)` RGUI when held, kc when tapped
226
227* `C_S_T(kc)` LCTL + LSFT when held, kc when tapped
228* `MEH_T(kc)` LCTL + LSFT + LALT when held, kc when tapped
229* `LCAG_T(kc)` LCTL + LALT + LGUI when held, kc when tapped
230* `RCAG_T(kc)` RCTL + RALT + RGUI when held, kc when tapped
231* `ALL_T(kc)` LCTL + LSFT + LALT + LGUI when held, kc tapped [more info](http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/)
232* `SCMD_T(kc)`/`SWIN_T(kc)` LGUI + LSFT when held, kc when tapped
233* `LCA_T(kc)` LCTL + LALT when held, kc when tapped
234
235## Shifted symbols
236
237It's important to remember that all of the keycodes also send a left shift - this may cause unintended actions if unaccounted for. The 4-letter code is preferred in most situations.
238
239* `KC_TILD`/`KC_TILDE` tilde `~`
240* `KC_EXLM`/`KC_EXCLAIM` exclamation mark `!`
241* `KC_AT` at sign `@`
242* `KC_HASH` hash sign `#`
243* `KC_DLR`/`KC_DOLLAR` dollar sign `$`
244* `KC_PERC`/`KC_PERCENT` percent sign `%`
245* `KC_CIRC`/`KC_CIRCUMFLEX` circumflex `^`
246* `KC_AMPR`/`KC_AMPERSAND` ampersand `&`
247* `KC_ASTR`/`KC_ASTERISK` asterisk `*`
248* `KC_LPRN`/`KC_LEFT_PAREN` left parenthesis `(`
249* `KC_RPRN`/`KC_RIGHT_PAREN` right parenthesis `)`
250* `KC_UNDS`/`KC_UNDERSCORE` underscore `_`
251* `KC_PLUS` plus sign `+`
252* `KC_LCBR`/`KC_LEFT_CURLY_BRACE` left curly brace `{`
253* `KC_RCBR`/`KC_RIGHT_CURLY_BRACE` right curly brace `}`
254* `KC_LT`/`KC_LABK`/`KC_LEFT_ANGLE_BRACKET` left angle bracket `<`
255* `KC_GT`/`KC_RABK`/`KC_RIGHT_ANGLE_BRACKET` right angle bracket `>`
256* `KC_COLN`/`KC_COLON` colon `:`
257* `KC_PIPE` pipe `|`
258* `KC_QUES`/`KC_QUESTION` question mark `?`
259* `KC_DQT`/`KC_DOUBLE_QUOTE`/`KC_DQUO` double quote `"`
260
261## Layer adjustments
262
263* `LT(layer, kc)` turn on layer (0-15) when held, kc ([basic keycodes](basic_keycodes.md)) when tapped
264* `TO(layer)` turn on layer when depressed
265* `MO(layer)` momentarily turn on layer when depressed (requires `KC_TRNS` on destination layer)
266* `DF(layer)` sets the base (default) layer
267* `TG(layer)` toggle layer on/off
268* `OSL(layer)` switch to layer for one keycode
269* `TT(layer)` tap toggle? idk FIXME
270
271## Unicode
272
273* `UNICODE(n)`/`UC(n)` if `UNICODE_ENABLE`, this will send characters up to `0x7FFF`
274* `X(n)` if `UNICODEMAP_ENABLE`, also sends unicode via a different method \ No newline at end of file