3 When defining a [keymap](keymap.md) each key needs a valid key definition. This page documents the symbols that correspond to keycodes that are available to you in QMK.
5 This is a reference only. Each group of keys links to the page documenting their functionality in more detail.
7 ## [Basic Keycodes](keycodes_basic.md)
9 |Key |Aliases |Description |
10 |-----------------------|----------|-----------------------------------------------|
11 |`KC_1` | |`1` and `!` |
12 |`KC_2` | |`2` and `@` |
13 |`KC_3` | |`3` and `#` |
14 |`KC_4` | |`4` and `$` |
15 |`KC_5` | |`5` and `%` |
16 |`KC_6` | |`6` and `^` |
17 |`KC_7` | |`7` and `&` |
18 |`KC_8` | |`8` and `*` |
19 |`KC_9` | |`9` and `(` |
20 |`KC_0` | |`0` and `)` |
45 |`KC_A` | |`a` and `A` |
46 |`KC_B` | |`b` and `B` |
47 |`KC_C` | |`c` and `C` |
48 |`KC_D` | |`d` and `D` |
49 |`KC_E` | |`e` and `E` |
50 |`KC_F` | |`f` and `F` |
51 |`KC_G` | |`g` and `G` |
52 |`KC_H` | |`h` and `H` |
53 |`KC_I` | |`i` and `I` |
54 |`KC_J` | |`j` and `J` |
55 |`KC_K` | |`k` and `K` |
56 |`KC_L` | |`l` and `L` |
57 |`KC_M` | |`m` and `M` |
58 |`KC_N` | |`n` and `N` |
59 |`KC_O` | |`o` and `O` |
60 |`KC_P` | |`p` and `P` |
61 |`KC_Q` | |`q` and `Q` |
62 |`KC_R` | |`r` and `R` |
63 |`KC_S` | |`s` and `S` |
64 |`KC_T` | |`t` and `T` |
65 |`KC_U` | |`u` and `U` |
66 |`KC_V` | |`v` and `V` |
67 |`KC_W` | |`w` and `W` |
68 |`KC_X` | |`x` and `X` |
69 |`KC_Y` | |`y` and `Y` |
70 |`KC_Z` | |`z` and `Z` |
71 |`KC_ENTER` |`KC_ENT` |Return (Enter) |
72 |`KC_ESCAPE` |`KC_ESC` |Escape |
73 |`KC_BSPACE` |`KC_BSPC` |Delete (Backspace) |
75 |`KC_SPACE` |`KC_SPC` |Spacebar |
76 |`KC_MINUS` |`KC_MINS` |`-` and `_` |
77 |`KC_EQUAL` |`KC_EQL` |`=` and `+` |
78 |`KC_LBRACKET` |`KC_LBRC` |`[` and `{` |
79 |`KC_RBRACKET` |`KC_RBRC` |`]` and `}` |
80 |`KC_BSLASH` |`KC_BSLS` |`\` and <code>|</code> |
81 |`KC_NONUS_HASH` |`KC_NUHS` |Non-US `#` and `~` |
82 |`KC_NONUS_BSLASH` |`KC_NUBS` |Non-US `\` and <code>|</code> |
83 |`KC_INT1` |`KC_RO` |JIS `\` and <code>|</code> |
84 |`KC_INT2` |`KC_KANA` |JIS Katakana/Hiragana |
85 |`KC_INT3` |`KC_JYEN` |JIS `¥` |
86 |`KC_SCOLON` |`KC_SCLN` |`;` and `:` |
87 |`KC_QUOTE` |`KC_QUOT` |`'` and `"` |
88 |`KC_GRAVE` |`KC_GRV` |<code>`</code> and `~` |
89 |`KC_COMMA` |`KC_COMM` |`,` and `<` |
90 |`KC_DOT` | |`.` and `>` |
91 |`KC_SLASH` |`KC_SLSH` |`/` and `?` |
92 |`KC_CAPSLOCK` |`KC_CAPS` |Caps Lock |
93 |`KC_LCTRL` |`KC_LCTL` |Left Control |
94 |`KC_LSHIFT` |`KC_LSFT` |Left Shift |
95 |`KC_LALT` | |Left Alt |
96 |`KC_LGUI` | |Left GUI (Windows/Command/Meta key) |
97 |`KC_RCTRL` |`KC_RCTL` |Right Control |
98 |`KC_RSHIFT` |`KC_RSFT` |Right Shift |
99 |`KC_RALT` | |Right Alt |
100 |`KC_RGUI` | |Right GUI (Windows/Command/Meta key) |
101 |`KC_LOCKING_CAPS` |`KC_LCAP` |Locking Caps Lock |
102 |`KC_LOCKING_NUM` |`KC_LNUM` |Locking Num Lock |
103 |`KC_LOCKING_SCROLL` |`KC_LSCR` |Locking Scroll Lock |
104 |`KC_INT4` |`KC_HENK` |JIS Henkan |
105 |`KC_INT5` |`KC_MHEN` |JIS Muhenkan |
106 |`KC_PSCREEN` |`KC_PSCR` |Print Screen |
107 |`KC_SCROLLLOCK` |`KC_SLCK` |Scroll Lock |
108 |`KC_PAUSE` |`KC_PAUS` |Pause |
109 |`KC_INSERT` |`KC_INS` |Insert |
111 |`KC_PGUP` | |Page Up |
112 |`KC_DELETE` |`KC_DEL` |Forward Delete |
114 |`KC_PGDOWN` |`KC_PGDN` |Page Down |
115 |`KC_RIGHT` |`KC_RGHT` |Right Arrow |
116 |`KC_LEFT` | |Left Arrow |
117 |`KC_DOWN` | |Down Arrow |
118 |`KC_UP` | |Up Arrow |
119 |`KC_APPLICATION` |`KC_APP` |Application (Windows Menu Key) |
120 |`KC_POWER` | |Deprecated by MS in favor of `KC_SYSTEM_POWER`.|
121 |`KC_EXECUTE` | |Execute |
124 |`KC_SELECT` | |Select |
125 |`KC_AGAIN` | |Again |
129 |`KC_PASTE` | |Paste |
131 |`KC_ALT_ERASE` | |Alternate Erase |
132 |`KC_SYSREQ` | |SysReq/Attention |
133 |`KC_CANCEL` | |Cancel |
134 |`KC_CLEAR` | |Clear |
135 |`KC_PRIOR` | |Prior |
136 |`KC_RETURN` | |Return |
137 |`KC_SEPARATOR` | |Separator |
140 |`KC_CLEAR_AGAIN` | |Clear/Again |
141 |`KC_CRSEL` | |CrSel/Props |
142 |`KC_EXSEL` | |ExSel |
143 |`KC_SYSTEM_POWER` |`KC_PWR` |System Power Down. Recommended over `KC_POWER`.|
144 |`KC_SYSTEM_SLEEP` |`KC_SLEP` |System Sleep |
145 |`KC_SYSTEM_WAKE` |`KC_WAKE` |System Wake |
146 |`KC_MAIL` |`KC_MAIL` | |
147 |`KC_CALCULATOR` |`KC_CALC` | |
148 |`KC_MY_COMPUTER` |`KC_MYCM` | |
149 |`KC_WWW_SEARCH` |`KC_WSCH` | |
150 |`KC_WWW_HOME` |`KC_WHOM` | |
151 |`KC_WWW_BACK` |`KC_WBAK` | |
152 |`KC_WWW_FORWARD` |`KC_WFWD` | |
153 |`KC_WWW_STOP` |`KC_WSTP` | |
154 |`KC_WWW_REFRESH` |`KC_WREF` | |
155 |`KC_WWW_FAVORITES` |`KC_WFAV` | |
157 |`KC__MUTE` | |Mute (macOS) |
158 |`KC__VOLUP` | |Volume Up (macOS) |
159 |`KC__VOLDOWN` | |Volume Down (macOS) |
160 |`KC_AUDIO_MUTE` |`KC_MUTE` |Mute (Windows/macOS/Linux) |
161 |`KC_AUDIO_VOL_UP` |`KC_VOLU` |Volume Up (Windows/macOS/Linux) |
162 |`KC_AUDIO_VOL_DOWN` |`KC_VOLD` |Volume Down (Windows/macOS/Linux) |
163 |`KC_MEDIA_NEXT_TRACK` |`KC_MNXT` |Next Track (Windows) |
164 |`KC_MEDIA_PREV_TRACK` |`KC_MPRV` |Previous Track (Windows) |
165 |`KC_MEDIA_FAST_FORWARD`|`KC_MFFD` |Next Track (macOS) |
166 |`KC_MEDIA_REWIND` |`KC_MRWD` |Previous Track (macOS) |
167 |`KC_MEDIA_STOP` |`KC_MSTP` |Stop Track |
168 |`KC_MEDIA_PLAY_PAUSE` |`KC_MPLY` |Play/Pause Track |
169 |`KC_MEDIA_SELECT` |`KC_MSEL` | |
170 |`KC_NUMLOCK` |`KC_NLCK` |Keypad Num Lock and Clear |
171 |`KC_KP_SLASH` |`KC_PSLS` |Keypad `/` |
172 |`KC_KP_ASTERISK` |`KC_PAST` |Keypad `*` |
173 |`KC_KP_MINUS` |`KC_PMNS` |Keypad `-` |
174 |`KC_KP_PLUS` |`KC_PPLS` |Keypad `+` |
175 |`KC_KP_ENTER` |`KC_PENT` |Keypad Enter |
176 |`KC_KP_1` |`KC_P1` |Keypad `1` and End |
177 |`KC_KP_2` |`KC_P2` |Keypad `2` and Down Arrow |
178 |`KC_KP_3` |`KC_P3` |Keypad `3` and Page Down |
179 |`KC_KP_4` |`KC_P4` |Keypad `4` and Left Arrow |
180 |`KC_KP_5` |`KC_P5` |Keypad `5` |
181 |`KC_KP_6` |`KC_P6` |Keypad `6` and Right Arrow |
182 |`KC_KP_7` |`KC_P7` |Keypad `7` and Home |
183 |`KC_KP_8` |`KC_P8` |Keypad `8` and Up Arrow |
184 |`KC_KP_9` |`KC_P9` |Keypad `9` and Page Up |
185 |`KC_KP_0` |`KC_P0` |Keypad `0` and Insert |
186 |`KC_KP_DOT` |`KC_PDOT` |Keypad `.` and Delete |
187 |`KC_KP_EQUAL` |`KC_PEQL` |Keypad `=` |
188 |`KC_KP_COMMA` |`KC_PCMM` |Keypad `,` |
189 |`KC_KP_EQUAL_AS400` | |Keypad `=` on AS/400 keyboards |
190 |`KC_NO` | |Ignore this key (NOOP) |
191 |`KC_TRANSPARENT` |`KC_TRNS` |Use the next lowest non-transparent key |
193 ## [Mouse Keys](feature_mouse_keys.md)
195 |Key |Aliases |Description |
196 |----------------|---------|---------------------------|
197 |`KC_MS_UP` |`KC_MS_U`|Mouse Cursor Up |
198 |`KC_MS_DOWN` |`KC_MS_D`|Mouse Cursor Down |
199 |`KC_MS_LEFT` |`KC_MS_L`|Mouse Cursor Left |
200 |`KC_MS_RIGHT` |`KC_MS_R`|Mouse Cursor Right |
201 |`KC_MS_BTN1` |`KC_BTN1`|Mouse Button 1 |
202 |`KC_MS_BTN2` |`KC_BTN2`|Mouse Button 2 |
203 |`KC_MS_BTN3` |`KC_BTN3`|Mouse Button 3 |
204 |`KC_MS_BTN4` |`KC_BTN4`|Mouse Button 4 |
205 |`KC_MS_BTN5` |`KC_BTN5`|Mouse Button 5 |
206 |`KC_MS_WH_UP` |`KC_WH_U`|Mouse Wheel Up |
207 |`KC_MS_WH_DOWN` |`KC_WH_D`|Mouse Wheel Down |
208 |`KC_MS_WH_LEFT` |`KC_WH_L`|Mouse Wheel Left |
209 |`KC_MS_WH_RIGHT`|`KC_WH_R`|Mouse Wheel Right |
210 |`KC_MS_ACCEL0` |`KC_ACL0`|Set mouse acceleration to 0|
211 |`KC_MS_ACCEL1` |`KC_ACL1`|Set mouse acceleration to 1|
212 |`KC_MS_ACCEL2` |`KC_ACL2`|Set mouse acceleration to 2|
214 ## [Quantum Keycodes](quantum_keycodes.md#qmk-keycodes)
216 |Key |Aliases |Description |
217 |-------------|-----------|---------------------------------------------------------------------|
218 |`RESET` | |Put the keyboard into DFU mode for flashing |
219 |`DEBUG` | |Toggle debug mode |
220 |`KC_GESC` |`GRAVE_ESC`|Escape when tapped, <code>`</code> when pressed with Shift or GUI|
221 |`KC_LSPO` | |Left Shift when held, `(` when tapped |
222 |`KC_RSPC` | |Right Shift when held, `)` when tapped |
223 |`KC_LEAD` | |The [Leader key](feature_leader_key.md) |
224 |`KC_LOCK` | |The [Lock key](feature_key_lock.md) |
225 |`FUNC(n)` |`F(n)` |Call `fn_action(n)` (deprecated) |
226 |`M(n)` | |Call macro `n` |
227 |`MACROTAP(n)`| |Macro-tap `n` idk FIXME |
229 ## [Bootmagic](feature_bootmagic.md)
231 |Key |Aliases |Description |
232 |----------------------------------|---------|------------------------------------|
233 |`MAGIC_SWAP_CONTROL_CAPSLOCK` | |Swap Caps Lock and Left Control |
234 |`MAGIC_CAPSLOCK_TO_CONTROL` | |Treat Caps Lock as Control |
235 |`MAGIC_SWAP_LALT_LGUI` | |Swap Left Alt and GUI |
236 |`MAGIC_SWAP_RALT_RGUI` | |Swap Right Alt and GUI |
237 |`MAGIC_NO_GUI` | |Disable the GUI key |
238 |`MAGIC_SWAP_GRAVE_ESC` | |Swap <code>`</code> and Escape |
239 |`MAGIC_SWAP_BACKSLASH_BACKSPACE` | |Swap `\` and Backspace |
240 |`MAGIC_HOST_NKRO` | |Force NKRO on |
241 |`MAGIC_SWAP_ALT_GUI` |`AG_SWAP`|Swap Alt and GUI on both sides |
242 |`MAGIC_UNSWAP_CONTROL_CAPSLOCK` | |Unswap Caps Lock and Left Control |
243 |`MAGIC_UNCAPSLOCK_TO_CONTROL` | |Stop treating Caps Lock as Control |
244 |`MAGIC_UNSWAP_LALT_LGUI` | |Unswap Left Alt and GUI |
245 |`MAGIC_UNSWAP_RALT_RGUI` | |Unswap Right Alt and GUI |
246 |`MAGIC_UNNO_GUI` | |Enable the GUI key |
247 |`MAGIC_UNSWAP_GRAVE_ESC` | |Unswap <code>`</code> and Escape|
248 |`MAGIC_UNSWAP_BACKSLASH_BACKSPACE`| |Unswap `\` and Backspace |
249 |`MAGIC_UNHOST_NKRO` | |Force NKRO off |
250 |`MAGIC_UNSWAP_ALT_GUI` |`AG_NORM`|Unswap Alt and GUI on both sides |
251 |`MAGIC_TOGGLE_NKRO` | |Turn NKRO on or off |
253 ## [Backlighting](feature_backlight.md)
256 |---------|------------------------------------------|
257 |`BL_TOGG`|Turn the backlight on or off |
258 |`BL_STEP`|Cycle through backlight levels |
259 |`BL_ON` |Set the backlight to max brightness |
260 |`BL_OFF` |Turn the backlight off |
261 |`BL_INC` |Increase the backlight level |
262 |`BL_DEC` |Decrease the backlight level |
263 |`BL_BRTG`|Toggle backlight breathing |
265 ## [RGB Lighting](feature_rgblight.md)
267 |Key |Aliases |Description |
268 |-------------------|----------|--------------------------------------------------------------------|
269 |`RGB_TOG` | |Toggle RGB lighting on or off |
270 |`RGB_MODE_FORWARD` |`RGB_MOD` |Cycle through modes, reverse direction when Shift is held |
271 |`RGB_MODE_REVERSE` |`RGB_RMOD`|Cycle through modes in reverse, forward direction when Shift is held|
272 |`RGB_HUI` | |Increase hue |
273 |`RGB_HUD` | |Decrease hue |
274 |`RGB_SAI` | |Increase saturation |
275 |`RGB_SAD` | |Decrease saturation |
276 |`RGB_VAI` | |Increase value (brightness) |
277 |`RGB_VAD` | |Decrease value (brightness) |
278 |`RGB_MODE_PLAIN` |`RGB_M_P `|Static (no animation) mode |
279 |`RGB_MODE_BREATHE` |`RGB_M_B` |Breathing animation mode |
280 |`RGB_MODE_RAINBOW` |`RGB_M_R` |Rainbow animation mode |
281 |`RGB_MODE_SWIRL` |`RGB_M_SW`|Swirl animation mode |
282 |`RGB_MODE_SNAKE` |`RGB_M_SN`|Snake animation mode |
283 |`RGB_MODE_KNIGHT` |`RGB_M_K` |"Knight Rider" animation mode |
284 |`RGB_MODE_XMAS` |`RGB_M_X` |Christmas animation mode |
285 |`RGB_MODE_GRADIENT`|`RGB_M_G` |Static gradient animation mode |
287 ## [Thermal Printer](feature_thermal_printer.md)
290 |-----------|----------------------------------------|
291 |`PRINT_ON` |Start printing everything the user types|
292 |`PRINT_OFF`|Stop printing everything the user types |
294 ## [Bluetooth](feature_bluetooth.md)
297 |----------|----------------------------------------------|
298 |`OUT_AUTO`|Automatically switch between USB and Bluetooth|
299 |`OUT_USB` |USB only |
300 |`OUT_BT` |Bluetooth only |
302 ## [Modifiers](quantum_keycodes.md#modifiers)
304 |Key |Aliases |Description |
305 |----------|----------|----------------------------------------------------|
306 |`KC_HYPR` | |Hold Left Control, Shift, Alt and GUI |
307 |`KC_MEH` | |Hold Left Control, Shift and Alt |
308 |`LCTL(kc)`| |Hold Left Control and press `kc` |
309 |`LSFT(kc)`|`S(kc)` |Hold Left Shift and press `kc` |
310 |`LALT(kc)`| |Hold Left Alt and press `kc` |
311 |`LGUI(kc)`| |Hold Left GUI and press `kc` |
312 |`RCTL(kc)`| |Hold Right Control and press `kc` |
313 |`RSFT(kc)`| |Hold Right Shift and press `kc` |
314 |`RALT(kc)`| |Hold Right Alt and press `kc` |
315 |`RGUI(kc)`| |Hold Right GUI and press `kc` |
316 |`HYPR(kc)`| |Hold Left Control, Shift, Alt and GUI and press `kc`|
317 |`MEH(kc)` | |Hold Left Control, Shift and Alt and press `kc` |
318 |`LCAG(kc)`| |Hold Left Control, Alt and GUI and press `kc` |
319 |`ALTG(kc)`| |Hold Right Control and Alt and press `kc` |
320 |`SCMD(kc)`|`SWIN(kc)`|Hold Left Shift and GUI and press `kc` |
321 |`LCA(kc)` | |Hold Left Control and Alt and press `kc` |
323 ## [Mod-Tap Keys](quantum_keycodes.md#mod-tap-keys)
325 |Key |Aliases |Description |
326 |------------|------------|-------------------------------------------------------|
327 |`LCTL_T(kc)`|`CTL_T(kc)` |Left Control when held, `kc` when tapped |
328 |`RCTL_T(kc)`| |Right Control when held, `kc` when tapped |
329 |`LSFT_T(kc)`|`SFT_T(kc)` |Left Shift when held, `kc` when tapped |
330 |`RSFT_T(kc)`| |Right Shift when held, `kc` when tapped |
331 |`LALT_T(kc)`|`ALT_T(kc)` |Left Alt when held, `kc` when tapped |
332 |`RALT_T(kc)`|`ALGR_T(kc)`|Right Alt when held, `kc` when tapped |
333 |`LGUI_T(kc)`|`GUI_T(kc)` |Left GUI when held, `kc` when tapped |
334 |`RGUI_T(kc)`| |Right GUI when held, `kc` when tapped |
335 |`C_S_T(kc)` | |Left Control and Shift when held, `kc` when tapped |
336 |`MEH_T(kc)` | |Left Control, Shift and Alt when held, `kc` when tapped|
337 |`LCAG_T(kc)`| |Left Control, Alt and GUI when held, `kc` when tapped |
338 |`RCAG_T(kc)`| |Right Control, Alt and GUI when held, `kc` when tapped |
339 |`ALL_T(kc)` | |Left Control, Shift, Alt and GUI when held, `kc` when tapped - more info [here](http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/)|
340 |`SCMD_T(kc)`|`SWIN_T(kc)`|Left Shift and GUI when held, `kc` when tapped |
341 |`LCA_T(kc)` | |Left Control and Alt when held, `kc` when tapped |
343 ## [US ANSI Shifted Keys](keycodes_us_ansi_shifted.md)
345 |Key |Aliases |Description |
346 |------------------------|------------------|-------------------|
347 |`KC_TILDE` |`KC_TILD` |`~` |
348 |`KC_EXCLAIM` |`KC_EXLM` |`!` |
351 |`KC_DOLLAR` |`KC_DLR` |`$` |
352 |`KC_PERCENT` |`KC_PERC` |`%` |
353 |`KC_CIRCUMFLEX` |`KC_CIRC` |`^` |
354 |`KC_AMPERSAND` |`KC_AMPR` |`&` |
355 |`KC_ASTERISK` |`KC_ASTR` |`*` |
356 |`KC_LEFT_PAREN` |`KC_LPRN` |`(` |
357 |`KC_RIGHT_PAREN` |`KC_RPRN` |`)` |
358 |`KC_UNDERSCORE` |`KC_UNDS` |`_` |
360 |`KC_LEFT_CURLY_BRACE` |`KC_LCBR` |`{` |
361 |`KC_RIGHT_CURLY_BRACE` |`KC_RCBR` |`}` |
362 |`KC_PIPE` | |<code>|</code>|
363 |`KC_COLON` |`KC_COLN` |`:` |
364 |`KC_DOUBLE_QUOTE` |`KC_DQT`/`KC_DQUO`|`"` |
365 |`KC_LEFT_ANGLE_BRACKET` |`KC_LT`/`KC_LABK` |`<` |
366 |`KC_RIGHT_ANGLE_BRACKET`|`KC_GT`/`KC_RABK` |`>` |
367 |`KC_QUESTION` |`KC_QUES` |`?` |
369 ## [Switching and Toggling Layers](feature_common_shortcuts.md#switching-and-toggling-layers)
372 |---------------|----------------------------------------------------------------------------------|
373 |`LT(layer, kc)`|Turn on `layer` when held, `kc` when tapped |
374 |`TO(layer)` |Turn on `layer` when pressed |
375 |`MO(layer)` |Momentarily turn on `layer` when pressed (requires `KC_TRNS` on destination layer)|
376 |`DF(layer)` |Set the base (default) layer |
377 |`TG(layer)` |Toggle `layer` on or off |
378 |`TT(layer)` |Tap toggle? idk FIXME |
380 ## [One Shot Keys](quantum_keycodes.md#one-shot-keys)
383 |------------|----------------------------------|
384 |`OSM(mod)` |Hold `mod` for one keypress |
385 |`OSL(layer)`|Switch to `layer` for one keypress|
387 ## [Unicode Support](feature_unicode.md)
390 |------------|-------|-------------------------------------------------|
391 |`UNICODE(n)`|`UC(n)`|Send Unicode character `n` |
392 |`X(n)` | |Send Unicode character `n` via a different method|