@ -1,75 +1,77 @@
# Overview
# Keycodes Overview
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. This is a reference only. Where possible keys link to the page documenting their functionality.
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.
## Keycode Index
This is a reference only. Each group of keys links to the page documenting their functionality in more detail.
|Long Name|Short Name|Description|
## [Basic Keycodes ](keycodes_basic.md )
|---------|----------|-----------|
|`KC_1`||||
|Key |Aliases |Description |
|`KC_2`||||
|-----------------------|----------|-----------------------------------------------|
|`KC_3`||||
|`KC_1` | |`1` and `!` |
|`KC_4`||||
|`KC_2` | |`2` and `@` |
|`KC_5`||||
|`KC_3` | |`3` and `#` |
|`KC_6`||||
|`KC_4` | |`4` and `$` |
|`KC_7`||||
|`KC_5` | |`5` and `%` |
|`KC_8`||||
|`KC_6` | |`6` and `^` |
|`KC_9`||||
|`KC_7` | |`7` and `&` |
|`KC_0`||||
|`KC_8` | |`8` and `*` |
|`KC_F1`||||
|`KC_9` | |`9` and `(` |
|`KC_F2`||||
|`KC_0` | |`0` and `)` |
|`KC_F3`||||
|`KC_F1` | | |
|`KC_F4`||||
|`KC_F2` | | |
|`KC_F5`||||
|`KC_F3` | | |
|`KC_F6`||||
|`KC_F4` | | |
|`KC_F7`||||
|`KC_F5` | | |
|`KC_F8`||||
|`KC_F6` | | |
|`KC_F9`||||
|`KC_F7` | | |
|`KC_F10`||||
|`KC_F8` | | |
|`KC_F11`||||
|`KC_F9` | | |
|`KC_F12`||||
|`KC_F10` | | |
|`KC_F13`||||
|`KC_F11` | | |
|`KC_F14`||||
|`KC_F12` | | |
|`KC_F15`||||
|`KC_F13` | | |
|`KC_F16`||||
|`KC_F14` | | |
|`KC_F17`||||
|`KC_F15` | | |
|`KC_F18`||||
|`KC_F16` | | |
|`KC_F19`||||
|`KC_F17` | | |
|`KC_F20`||||
|`KC_F18` | | |
|`KC_F21`||||
|`KC_F19` | | |
|`KC_F22`||||
|`KC_F20` | | |
|`KC_F23`||||
|`KC_F21` | | |
|`KC_F24`||||
|`KC_F22` | | |
|`KC_A`||||
|`KC_F23` | | |
|`KC_B`||||
|`KC_F24` | | |
|`KC_C`||||
|`KC_A` | |`a` and `A` |
|`KC_D`||||
|`KC_B` | |`b` and `B` |
|`KC_E`||||
|`KC_C` | |`c` and `C` |
|`KC_F`||||
|`KC_D` | |`d` and `D` |
|`KC_G`||||
|`KC_E` | |`e` and `E` |
|`KC_H`||||
|`KC_F` | |`f` and `F` |
|`KC_I`||||
|`KC_G` | |`g` and `G` |
|`KC_J`||||
|`KC_H` | |`h` and `H` |
|`KC_K`||||
|`KC_I` | |`i` and `I` |
|`KC_L`||||
|`KC_J` | |`j` and `J` |
|`KC_M`||||
|`KC_K` | |`k` and `K` |
|`KC_N`||||
|`KC_L` | |`l` and `L` |
|`KC_O`||||
|`KC_M` | |`m` and `M` |
|`KC_P`||||
|`KC_N` | |`n` and `N` |
|`KC_Q`||||
|`KC_O` | |`o` and `O` |
|`KC_R`||||
|`KC_P` | |`p` and `P` |
|`KC_S`||||
|`KC_Q` | |`q` and `Q` |
|`KC_T`||||
|`KC_R` | |`r` and `R` |
|`KC_U`||||
|`KC_S` | |`s` and `S` |
|`KC_V`||||
|`KC_T` | |`t` and `T` |
|`KC_W`||||
|`KC_U` | |`u` and `U` |
|`KC_X`||||
|`KC_V` | |`v` and `V` |
|`KC_Y`||||
|`KC_W` | |`w` and `W` |
|`KC_Z`||||
|`KC_X` | |`x` and `X` |
|`KC_ENTER`|`KC_ENT`|`Return (ENTER)`|
|`KC_Y` | |`y` and `Y` |
|`KC_ESCAPE`|`KC_ESC`|`ESCAPE`|
|`KC_Z` | |`z` and `Z` |
|`KC_BSPACE`|`KC_BSPC`|`DELETE (Backspace)`|
|`KC_ENTER` |`KC_ENT` |Return (Enter) |
|`KC_TAB`||`Tab`|
|`KC_ESCAPE` |`KC_ESC` |Escape |
|`KC_BSPACE` |`KC_BSPC` |Delete (Backspace) |
|`KC_TAB` | |Tab |
|`KC_SPACE` |`KC_SPC` |Spacebar |
|`KC_SPACE` |`KC_SPC` |Spacebar |
|`KC_MINUS` |`KC_MINS` |`-` and `_` |
|`KC_MINUS` |`KC_MINS` |`-` and `_` |
|`KC_EQUAL` |`KC_EQL` |`=` and `+` |
|`KC_EQUAL` |`KC_EQL` |`=` and `+` |
@ -79,11 +81,11 @@ When defining a [keymap](keymap.md) each key needs a valid key definition. This
|`KC_NONUS_HASH` |`KC_NUHS` |Non-US `#` and `~` |
|`KC_NONUS_HASH` |`KC_NUHS` |Non-US `#` and `~` |
|`KC_NONUS_BSLASH` |`KC_NUBS` |Non-US `\` and < code > | </ code > |
|`KC_NONUS_BSLASH` |`KC_NUBS` |Non-US `\` and < code > | </ code > |
|`KC_INT1` |`KC_RO` |JIS `\` and < code > | </ code > |
|`KC_INT1` |`KC_RO` |JIS `\` and < code > | </ code > |
|`KC_INT2`|`KC_KANA`|International216 |
|`KC_INT2` |`KC_KANA` |JIS Katakana/Hiragana |
|`KC_INT3`|`KC_JYEN`|Yen Symbol (`¥`) |
|`KC_INT3` |`KC_JYEN` |JIS `¥` |
|`KC_SCOLON` |`KC_SCLN` |`;` and `:` |
|`KC_SCOLON` |`KC_SCLN` |`;` and `:` |
|`KC_QUOTE`|`KC_QUOT`|`‘ ` and `“` |
|`KC_QUOTE` |`KC_QUOT` |`'` and `"` |
|`KC_GRAVE`|`KC_GRV`|Grave Accent and Tilde |
|`KC_GRAVE` |`KC_GRV` |< code > ` </ code > and `~` |
|`KC_COMMA` |`KC_COMM` |`,` and `<` |
|`KC_COMMA` |`KC_COMM` |`,` and `<` |
|`KC_DOT` | |`.` and `>` |
|`KC_DOT` | |`.` and `>` |
|`KC_SLASH` |`KC_SLSH` |`/` and `?` |
|`KC_SLASH` |`KC_SLSH` |`/` and `?` |
@ -91,31 +93,31 @@ When defining a [keymap](keymap.md) each key needs a valid key definition. This
|`KC_LCTRL` |`KC_LCTL` |Left Control |
|`KC_LCTRL` |`KC_LCTL` |Left Control |
|`KC_LSHIFT` |`KC_LSFT` |Left Shift |
|`KC_LSHIFT` |`KC_LSFT` |Left Shift |
|`KC_LALT` | |Left Alt |
|`KC_LALT` | |Left Alt |
|`KC_LGUI`||Left GUI(Windows/Apple/Meta key) |
|`KC_LGUI` | |Left GUI (Windows/Command/Meta key) |
|`KC_RCTRL` |`KC_RCTL` |Right Control |
|`KC_RCTRL` |`KC_RCTL` |Right Control |
|`KC_RSHIFT` |`KC_RSFT` |Right Shift |
|`KC_RSHIFT` |`KC_RSFT` |Right Shift |
|`KC_RALT` | |Right Alt |
|`KC_RALT` | |Right Alt |
|`KC_RGUI`||Right GUI(Windows/Apple/Meta key) |
|`KC_RGUI` | |Right GUI (Windows/Command/Meta key) |
|`KC_LOCKING_CAPS` |`KC_LCAP` |Locking Caps Lock |
|`KC_LOCKING_CAPS` |`KC_LCAP` |Locking Caps Lock |
|`KC_LOCKING_NUM` |`KC_LNUM` |Locking Num Lock |
|`KC_LOCKING_NUM` |`KC_LNUM` |Locking Num Lock |
|`KC_LOCKING_SCROLL` |`KC_LSCR` |Locking Scroll Lock |
|`KC_LOCKING_SCROLL` |`KC_LSCR` |Locking Scroll Lock |
|`KC_INT4`|`KC_HENK`|JIS Henken |
|`KC_INT4` |`KC_HENK` |JIS Henkan |
|`KC_INT5`|`KC_MHEN`|JIS Muhenken |
|`KC_INT5` |`KC_MHEN` |JIS Muhenkan |
|`KC_PSCREEN` |`KC_PSCR` |Print Screen |
|`KC_PSCREEN` |`KC_PSCR` |Print Screen |
|`KC_SCROLLLOCK` |`KC_SLCK` |Scroll Lock |
|`KC_SCROLLLOCK` |`KC_SLCK` |Scroll Lock |
|`KC_PAUSE` |`KC_PAUS` |Pause |
|`KC_PAUSE` |`KC_PAUS` |Pause |
|`KC_INSERT` |`KC_INS` |Insert |
|`KC_INSERT` |`KC_INS` |Insert |
|`KC_HOME` | |Home |
|`KC_HOME` | |Home |
|`KC_PGUP` | |Page Up |
|`KC_PGUP` | |Page Up |
|`KC_DELETE`|`KC_DEL`|Delete Forward |
|`KC_DELETE` |`KC_DEL` |Forward Delete |
|`KC_END` | |End |
|`KC_END` | |End |
|`KC_PGDOWN` |`KC_PGDN` |Page Down |
|`KC_PGDOWN` |`KC_PGDN` |Page Down |
|`KC_RIGHT` |`KC_RGHT` |Right Arrow |
|`KC_RIGHT` |`KC_RGHT` |Right Arrow |
|`KC_LEFT` | |Left Arrow |
|`KC_LEFT` | |Left Arrow |
|`KC_DOWN` | |Down Arrow |
|`KC_DOWN` | |Down Arrow |
|`KC_UP` | |Up Arrow |
|`KC_UP` | |Up Arrow |
|`KC_APPLICATION`|`KC_APP`|Application|
|`KC_APPLICATION` |`KC_APP` |Application (Windows Menu Key) |
|`KC_POWER`||Old power button scancode. MS has deprecated this in favor of `KC_SYSTEM_POWER` .|
|`KC_POWER` | |Deprecated by MS in favor of `KC_SYSTEM_POWER` .|
|`KC_EXECUTE` | |Execute |
|`KC_EXECUTE` | |Execute |
|`KC_HELP` | |Help |
|`KC_HELP` | |Help |
|`KC_MENU` | |Menu |
|`KC_MENU` | |Menu |
@ -162,154 +164,229 @@ When defining a [keymap](keymap.md) each key needs a valid key definition. This
|`KC_MEDIA_PREV_TRACK` |`KC_MPRV` |Previous Track (Windows) |
|`KC_MEDIA_PREV_TRACK` |`KC_MPRV` |Previous Track (Windows) |
|`KC_MEDIA_FAST_FORWARD`|`KC_MFFD` |Next Track (macOS) |
|`KC_MEDIA_FAST_FORWARD`|`KC_MFFD` |Next Track (macOS) |
|`KC_MEDIA_REWIND` |`KC_MRWD` |Previous Track (macOS) |
|`KC_MEDIA_REWIND` |`KC_MRWD` |Previous Track (macOS) |
|`KC_MEDIA_STOP`|`KC_MSTP`||
|`KC_MEDIA_STOP` |`KC_MSTP` |Stop Track |
|`KC_MEDIA_PLAY_PAUSE`|`KC_MPLY`||
|`KC_MEDIA_PLAY_PAUSE` |`KC_MPLY` |Play/Pause Track |
|`KC_MEDIA_SELECT` |`KC_MSEL` | |
|`KC_MEDIA_SELECT` |`KC_MSEL` | |
|`KC_NUMLOCK` |`KC_NLCK` |Keypad Num Lock and Clear |
|`KC_NUMLOCK` |`KC_NLCK` |Keypad Num Lock and Clear |
|`KC_KP_SLASH`|`KC_PSLS`|Keypad /|
|`KC_KP_SLASH` |`KC_PSLS` |Keypad `/` |
|`KC_KP_ASTERISK`|`KC_PAST`|Keypad *|
|`KC_KP_ASTERISK` |`KC_PAST` |Keypad `*` |
|`KC_KP_MINUS`|`KC_PMNS`|Keypad -|
|`KC_KP_MINUS` |`KC_PMNS` |Keypad `-` |
|`KC_KP_PLUS`|`KC_PPLS`|Keypad +|
|`KC_KP_PLUS` |`KC_PPLS` |Keypad `+` |
|`KC_KP_ENTER`|`KC_PENT`|Keypad ENTER`|
|`KC_KP_ENTER` |`KC_PENT` |Keypad Enter |
|`KC_KP_1`|`KC_P1`|Keypad 1 and End|
|`KC_KP_1` |`KC_P1` |Keypad `1` and End |
|`KC_KP_2`|`KC_P2`|Keypad 2 and Down Arrow|
|`KC_KP_2` |`KC_P2` |Keypad `2` and Down Arrow |
|`KC_KP_3`|`KC_P3`|Keypad 3 and PageDn|
|`KC_KP_3` |`KC_P3` |Keypad `3` and Page Down |
|`KC_KP_4`|`KC_P4`|Keypad 4 and Left Arrow|
|`KC_KP_4` |`KC_P4` |Keypad `4` and Left Arrow |
|`KC_KP_5`|`KC_P5`|Keypad 5|
|`KC_KP_5` |`KC_P5` |Keypad `5` |
|`KC_KP_6`|`KC_P6`|Keypad 6 and Right Arrow|
|`KC_KP_6` |`KC_P6` |Keypad `6` and Right Arrow |
|`KC_KP_7`|`KC_P7`|Keypad 7 and Home|
|`KC_KP_7` |`KC_P7` |Keypad `7` and Home |
|`KC_KP_8`|`KC_P8`|Keypad 8 and Up Arrow|
|`KC_KP_8` |`KC_P8` |Keypad `8` and Up Arrow |
|`KC_KP_9`|`KC_P9`|Keypad 9 and PageUp|
|`KC_KP_9` |`KC_P9` |Keypad `9` and Page Up |
|`KC_KP_0`|`KC_P0`|Keypad 0 and Insert|
|`KC_KP_0` |`KC_P0` |Keypad `0` and Insert |
|`KC_KP_DOT`|`KC_PDOT`|Keypad . and Delete|
|`KC_KP_DOT` |`KC_PDOT` |Keypad `.` and Delete |
|`KC_KP_EQUAL`|`KC_PEQL`|Keypad =|
|`KC_KP_EQUAL` |`KC_PEQL` |Keypad `=` |
|`KC_KP_COMMA`|`KC_PCMM`|Keypad Comma|
|`KC_KP_COMMA` |`KC_PCMM` |Keypad `,` |
|`KC_KP_EQUAL_AS400`||Keypad Equal Sign|
|`KC_KP_EQUAL_AS400` | |Keypad `=` on AS/400 keyboards |
|`KC_NO`||Ignore this key. (NOOP) |
|`KC_NO` | |Ignore this key (NOOP) |
|`KC_TRNS`||Make this key transparent to find the key on a lower layer.|
|`KC_TRANSPARENT` |`KC_TRNS` |Use the next lowest non-transparent key |
|[`KC_MS_UP`](feature_mouse_keys.md)|`KC_MS_U`|Mouse Cursor Up|
|[`KC_MS_DOWN`](feature_mouse_keys.md)|`KC_MS_D`|Mouse Cursor Down|
## [Mouse Keys ](feature_mouse_keys.md )
|[`KC_MS_LEFT`](feature_mouse_keys.md)|`KC_MS_L`|Mouse Cursor Left|
|[`KC_MS_RIGHT`](feature_mouse_keys.md)|`KC_MS_R`|Mouse Cursor Right|
|Key |Aliases |Description |
|[`KC_MS_BTN1`](feature_mouse_keys.md)|`KC_BTN1`|Mouse Button 1|
|----------------|---------|---------------------------|
|[`KC_MS_BTN2`](feature_mouse_keys.md)|`KC_BTN2`|Mouse Button 2|
|`KC_MS_UP` |`KC_MS_U`|Mouse Cursor Up |
|[`KC_MS_BTN3`](feature_mouse_keys.md)|`KC_BTN3`|Mouse Button 3|
|`KC_MS_DOWN` |`KC_MS_D`|Mouse Cursor Down |
|[`KC_MS_BTN4`](feature_mouse_keys.md)|`KC_BTN4`|Mouse Button 4|
|`KC_MS_LEFT` |`KC_MS_L`|Mouse Cursor Left |
|[`KC_MS_BTN5`](feature_mouse_keys.md)|`KC_BTN5`|Mouse Button 5|
|`KC_MS_RIGHT` |`KC_MS_R`|Mouse Cursor Right |
|[`KC_MS_WH_UP`](feature_mouse_keys.md)|`KC_WH_U`|Mouse Wheel Up|
|`KC_MS_BTN1` |`KC_BTN1`|Mouse Button 1 |
|[`KC_MS_WH_DOWN`](feature_mouse_keys.md)|`KC_WH_D`|Mouse Wheel Down|
|`KC_MS_BTN2` |`KC_BTN2`|Mouse Button 2 |
|[`KC_MS_WH_LEFT`](feature_mouse_keys.md)|`KC_WH_L`|Mouse Wheel Left|
|`KC_MS_BTN3` |`KC_BTN3`|Mouse Button 3 |
|[`KC_MS_WH_RIGHT`](feature_mouse_keys.md)|`KC_WH_R`|Mouse Wheel Right|
|`KC_MS_BTN4` |`KC_BTN4`|Mouse Button 4 |
|[`KC_MS_ACCEL0`](feature_mouse_keys.md)|`KC_ACL0`|Mouse Acceleration 0|
|`KC_MS_BTN5` |`KC_BTN5`|Mouse Button 5 |
|[`KC_MS_ACCEL1`](feature_mouse_keys.md)|`KC_ACL1`|Mouse Acceleration 1|
|`KC_MS_WH_UP` |`KC_WH_U`|Mouse Wheel Up |
|[`KC_MS_ACCEL2`](feature_mouse_keys.md)|`KC_ACL2`|Mouse Acceleration 2|
|`KC_MS_WH_DOWN` |`KC_WH_D`|Mouse Wheel Down |
|[`RESET`](quantum_keycodes.md#qmk-keycodes)||Put the keyboard into DFU mode for flashing|
|`KC_MS_WH_LEFT` |`KC_WH_L`|Mouse Wheel Left |
|[`DEBUG`](quantum_keycodes.md#qmk-keycodes)||Toggles debug mode|
|`KC_MS_WH_RIGHT`|`KC_WH_R`|Mouse Wheel Right |
|[`KC_GESC`](quantum_keycodes.md#qmk-keycodes)|`GRAVE_ESC`|Acts as escape when pressed normally but when pressed with Shift or GUI will send a `~` |
|`KC_MS_ACCEL0` |`KC_ACL0`|Set mouse acceleration to 0|
|[`KC_LSPO`](quantum_keycodes.md#qmk-keycodes)||Left shift when held, open paranthesis when tapped|
|`KC_MS_ACCEL1` |`KC_ACL1`|Set mouse acceleration to 1|
|[`KC_RSPC`](quantum_keycodes.md#qmk-keycodes)||Right shift when held, close paranthesis when tapped|
|`KC_MS_ACCEL2` |`KC_ACL2`|Set mouse acceleration to 2|
|[`KC_LEAD`](feature_leader_key.md)||The leader key|
|[`FUNC(n)`](quantum_keycodes.md#qmk-keycodes)|`F(n)`|Call `fn_action(n)` |
## [Quantum Keycodes ](quantum_keycodes.md#qmk-keycodes )
|[`M(n)`](quantum_keycodes.md#qmk-keycodes)||to call macro n|
|[`MACROTAP(n)`](quantum_keycodes.md#qmk-keycodes)||to macro-tap n idk FIXME`|
|Key |Aliases |Description |
|[`MAGIC_SWAP_CONTROL_CAPSLOCK`](feature_bootmagic.md)||Swap Capslock and Left Control|
|-------------|-----------|---------------------------------------------------------------------|
|[`MAGIC_CAPSLOCK_TO_CONTROL`](feature_bootmagic.md)||Treat Capslock like a Control Key|
|`RESET` | |Put the keyboard into DFU mode for flashing |
|[`MAGIC_SWAP_LALT_LGUI`](feature_bootmagic.md)||Swap the left Alt and GUI keys|
|`DEBUG` | |Toggle debug mode |
|[`MAGIC_SWAP_RALT_RGUI`](feature_bootmagic.md)||Swap the right Alt and GUI keys|
|`KC_GESC` |`GRAVE_ESC`|Escape when tapped, < code > ` < / code > when pressed with Shift or GUI|
|[`MAGIC_NO_GUI`](feature_bootmagic.md)||Disable the GUI key|
|`KC_LSPO` | |Left Shift when held, `(` when tapped |
|[`MAGIC_SWAP_GRAVE_ESC`](feature_bootmagic.md)||Swap the Grave and Esc key.|
|`KC_RSPC` | |Right Shift when held, `)` when tapped |
|[`MAGIC_SWAP_BACKSLASH_BACKSPACE`](feature_bootmagic.md)||Swap backslack and backspace|
|`KC_LEAD` | |The [Leader key ](feature_leader_key.md ) |
|[`MAGIC_HOST_NKRO`](feature_bootmagic.md)||Force NKRO on|
|`KC_LOCK` | |The [Lock key ](feature_key_lock.md ) |
|[`MAGIC_SWAP_ALT_GUI`/`AG_SWAP`](feature_bootmagic.md)||Swap Alt and Gui on both sides|
|`FUNC(n)` |`F(n)` |Call `fn_action(n)` (deprecated) |
|[`MAGIC_UNSWAP_CONTROL_CAPSLOCK`](feature_bootmagic.md)||Disable the Control/Capslock swap|
|`M(n)` | |Call macro `n` |
|[`MAGIC_UNCAPSLOCK_TO_CONTROL`](feature_bootmagic.md)||Disable treating Capslock like Control |
|`MACROTAP(n)`| |Macro-tap `n` idk FIXME |
|[`MAGIC_UNSWAP_LALT_LGUI`](feature_bootmagic.md)||Disable Left Alt and GUI switching|
|[`MAGIC_UNSWAP_RALT_RGUI`](feature_bootmagic.md)||Disable Right Alt and GUI switching|
## [Bootmagic ](feature_bootmagic.md )
|[`MAGIC_UNNO_GUI`](feature_bootmagic.md)||Enable the GUI key |
|[`MAGIC_UNSWAP_GRAVE_ESC`](feature_bootmagic.md)||Disable the Grave/Esc swap |
|Key |Aliases |Description |
|[`MAGIC_UNSWAP_BACKSLASH_BACKSPACE`](feature_bootmagic.md)||Disable the backslash/backspace swap|
|----------------------------------|---------|------------------------------------|
|[`MAGIC_UNHOST_NKRO`](feature_bootmagic.md)||Force NKRO off|
|`MAGIC_SWAP_CONTROL_CAPSLOCK` | |Swap Caps Lock and Left Control |
|[`MAGIC_UNSWAP_ALT_GUI`/`AG_NORM`](feature_bootmagic.md)||Disable the Alt/GUI switching|
|`MAGIC_CAPSLOCK_TO_CONTROL` | |Treat Caps Lock as Control |
|[`MAGIC_TOGGLE_NKRO`](feature_bootmagic.md)||Turn NKRO on or off|
|`MAGIC_SWAP_LALT_LGUI` | |Swap Left Alt and GUI |
|[`BL_x`](feature_backlight.md)||Set a specific backlight level between 0-9|
|`MAGIC_SWAP_RALT_RGUI` | |Swap Right Alt and GUI |
|[`BL_ON`](feature_backlight.md)||An alias for `BL_9` |
|`MAGIC_NO_GUI` | |Disable the GUI key |
|[`BL_OFF`](feature_backlight.md)||An alias for `BL_0` |
|`MAGIC_SWAP_GRAVE_ESC` | |Swap < code > ` < / code > and Escape |
|[`BL_DEC`](feature_backlight.md)||Turn the backlight level down by 1|
|`MAGIC_SWAP_BACKSLASH_BACKSPACE` | |Swap `\` and Backspace |
|[`BL_INC`](feature_backlight.md)||Turn the backlight level up by 1|
|`MAGIC_HOST_NKRO` | |Force NKRO on |
|[`BL_TOGG`](feature_backlight.md)||Toggle the backlight on or off|
|`MAGIC_SWAP_ALT_GUI` |`AG_SWAP`|Swap Alt and GUI on both sides |
|[`BL_STEP`](feature_backlight.md)||Step through backlight levels, wrapping around to 0 when you reach the top.|
|`MAGIC_UNSWAP_CONTROL_CAPSLOCK` | |Unswap Caps Lock and Left Control |
|[`RGB_TOG`](feature_rgblight.md)||toggle on/off|
|`MAGIC_UNCAPSLOCK_TO_CONTROL` | |Stop treating Caps Lock as Control |
|[`RGB_MOD`](feature_rgblight.md)||cycle through modes|
|`MAGIC_UNSWAP_LALT_LGUI` | |Unswap Left Alt and GUI |
|[`RGB_HUI`](feature_rgblight.md)||hue increase|
|`MAGIC_UNSWAP_RALT_RGUI` | |Unswap Right Alt and GUI |
|[`RGB_HUD`](feature_rgblight.md)||hue decrease|
|`MAGIC_UNNO_GUI` | |Enable the GUI key |
|[`RGB_SAI`](feature_rgblight.md)||saturation increase|
|`MAGIC_UNSWAP_GRAVE_ESC` | |Unswap < code > ` < / code > and Escape|
|[`RGB_SAD`](feature_rgblight.md)||saturation decrease|
|`MAGIC_UNSWAP_BACKSLASH_BACKSPACE`| |Unswap `\` and Backspace |
|[`RGB_VAI`](feature_rgblight.md)||value increase|
|`MAGIC_UNHOST_NKRO` | |Force NKRO off |
|[`RGB_VAD`](feature_rgblight.md)||value decrease|
|`MAGIC_UNSWAP_ALT_GUI` |`AG_NORM`|Unswap Alt and GUI on both sides |
|[`PRINT_ON`](feature_thermal_printer.md)||Start printing everything the user types|
|`MAGIC_TOGGLE_NKRO` | |Turn NKRO on or off |
|[`PRINT_OFF`](feature_thermal_printer.md)||Stop printing everything the user types|
|[`OUT_AUTO`](feature_bluetooth.md)||auto mode|
## [Backlighting ](feature_backlight.md )
|[`OUT_USB`](feature_bluetooth.md)||usb only|
|[`OUT_BT`](feature_bluetooth.md)||bluetooth (when `BLUETOOTH_ENABLE` )|
|Key |Description |
|[`KC_HYPR`](quantum_keycodes.md#modifiers)||Hold down LCTL + LSFT + LALT + LGUI`|
|---------|------------------------------------------|
|[`KC_MEH`](quantum_keycodes.md#modifiers)||Hold down LCTL + LSFT + LALT`|
|`BL_TOGG`|Turn the backlight on or off |
|[`LCTL(kc)`](quantum_keycodes.md#modifiers)||`LCTL` + `kc` |
|`BL_STEP`|Cycle through backlight levels |
|[`LSFT(kc)`](quantum_keycodes.md#modifiers)|[`S(kc)`](quantum_keycodes.md#modifiers)|`LSFT` + `kc` |
|`BL_x` |Set a specific backlight level between 0-9|
|[`LALT(kc)`](quantum_keycodes.md#modifiers)||`LALT` + `kc` |
|`BL_ON` |An alias for `BL_9` |
|[`LGUI(kc)`](quantum_keycodes.md#modifiers)||`LGUI` + `kc` |
|`BL_OFF` |An alias for `BL_0` |
|[`RCTL(kc)`](quantum_keycodes.md#modifiers)||`RCTL` + `kc` |
|`BL_INC` |Increase backlight level |
|[`RSFT(kc)`](quantum_keycodes.md#modifiers)||`RSFT` + `kc` |
|`BL_DEC` |Decrease backlight level |
|[`RALT(kc)`](quantum_keycodes.md#modifiers)||`RALT` + `kc` |
|[`RGUI(kc)`](quantum_keycodes.md#modifiers)||`RGUI` + `kc` |
## [RGB Lighting ](feature_rgblight.md )
|[`HYPR(kc)`](quantum_keycodes.md#modifiers)||`LCTL` + `LSFT` + `LALT` + `LGUI` + `kc` |
|[`MEH(kc)`](quantum_keycodes.md#modifiers)||`LCTL` + `LSFT` + `LALT` + `kc` |
|Key |Aliases |Description |
|[`LCAG(kc)`](quantum_keycodes.md#modifiers)||`LCTL` + `LALT` + `LGUI` + `kc` |
|-------------------|----------|--------------------------------------------------------------------|
|[`ALTG(kc)`](quantum_keycodes.md#modifiers)||`RCTL` + `RALT` + `kc` |
|`RGB_TOG` | |Toggle RGB lighting on or off |
|[`SCMD(kc)`](quantum_keycodes.md#modifiers)|[`SWIN(kc)`](quantum_keycodes.md#modifiers)|`LGUI` + `LSFT` + `kc` |
|`RGB_MODE_FORWARD` |`RGB_MOD` |Cycle through modes, reverse direction when Shift is held |
|[`LCA(kc)`](quantum_keycodes.md#modifiers)||`LCTL` + `LALT` + `kc` |
|`RGB_MODE_REVERSE` |`RGB_RMOD`|Cycle through modes in reverse, forward direction when Shift is held|
|[`CTL_T(kc)`](quantum_keycodes.md#mod-tap-keys)|[`LCTL_T(kc)`](quantum_keycodes.md#mod-tap-keys)|`LCTL` when held, `kc` when tapped|
|`RGB_HUI` | |Increase hue |
|[`RCTL_T(kc)`](quantum_keycodes.md#mod-tap-keys)||[`RCTL` when held, `kc` when tapped|
|`RGB_HUD` | |Decrease hue |
|[`SFT_T(kc)`](quantum_keycodes.md#mod-tap-keys)|[`LSFT_T(kc)`](quantum_keycodes.md#mod-tap-keys)|`LSFT` when held, `kc` when tapped|
|`RGB_SAI` | |Increase saturation |
|[`RSFT_T(kc)`](quantum_keycodes.md#mod-tap-keys)||[`RSFT` when held, `kc` when tapped|
|`RGB_SAD` | |Decrease saturation |
|[`ALT_T(kc)`](quantum_keycodes.md#mod-tap-keys)|[`LALT_T(kc)`](quantum_keycodes.md#mod-tap-keys)|`LALT` when held, `kc` when tapped|
|`RGB_VAI` | |Increase value (brightness) |
|[`RALT_T(kc)`](quantum_keycodes.md#mod-tap-keys)|[`ALGR_T(kc)`](quantum_keycodes.md#mod-tap-keys)|`RALT` when held, `kc` when tapped|
|`RGB_VAD` | |Decrease value (brightness) |
|[`GUI_T(kc)`](quantum_keycodes.md#mod-tap-keys)|[`LGUI_T(kc)`](quantum_keycodes.md#mod-tap-keys)|`LGUI` when held, `kc` when tapped|
|`RGB_MODE_PLAIN` |`RGB_M_P `|Static (no animation) mode |
|[`RGUI_T(kc)`](quantum_keycodes.md#mod-tap-keys)||`RGUI` when held, `kc` when tapped|
|`RGB_MODE_BREATHE` |`RGB_M_B` |Breathing animation mode |
|[`C_S_T(kc)`](quantum_keycodes.md#mod-tap-keys)||`LCTL` + `LSFT` when held, `kc` when tapped|
|`RGB_MODE_RAINBOW` |`RGB_M_R` |Rainbow animation mode |
|[`MEH_T(kc)`](quantum_keycodes.md#mod-tap-keys)||`LCTL` + `LSFT` + `LALT` when held, `kc` when tapped|
|`RGB_MODE_SWIRL` |`RGB_M_SW`|Swirl animation mode |
|[`LCAG_T(kc)`](quantum_keycodes.md#mod-tap-keys)||`LCTL` + `LALT` + `LGUI` when held, `kc` when tapped|
|`RGB_MODE_SNAKE` |`RGB_M_SN`|Snake animation mode |
|[`RCAG_T(kc)`](quantum_keycodes.md#mod-tap-keys)||`RCTL` + `RALT` + `RGUI` when held, `kc` when tapped|
|`RGB_MODE_KNIGHT` |`RGB_M_K` |"Knight Rider" animation mode |
|[`ALL_T(kc)`](quantum_keycodes.md#mod-tap-keys)||`LCTL` + `LSFT` + `LALT` + `LGUI` when held, `kc` when tapped [more info ](http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/ )|
|`RGB_MODE_XMAS` |`RGB_M_X` |Christmas animation mode |
|[`SCMD_T(kc)`](quantum_keycodes.md#mod-tap-keys)|[`SWIN_T(kc)`](quantum_keycodes.md#mod-tap-keys)|`LGUI` + `LSFT` when held, `kc` when tapped|
|`RGB_MODE_GRADIENT`|`RGB_M_G` |Static gradient animation mode |
|[`LCA_T(kc)`](quantum_keycodes.md#mod-tap-keys)||`LCTL` + `LALT` when held, `kc` when tapped|
|[`KC_TILD`](keycodes_us_ansi_shifted.md)|`KC_TILDE`|tilde `~` |
## [Thermal Printer ](feature_thermal_printer.md )
|[`KC_EXLM`](keycodes_us_ansi_shifted.md)|`KC_EXCLAIM`|exclamation mark `!` |
|[`KC_AT`](keycodes_us_ansi_shifted.md)||at sign `@` |
|Key |Description |
|[`KC_HASH`](keycodes_us_ansi_shifted.md)||hash sign `#` |
|-----------|----------------------------------------|
|[`KC_DLR`](keycodes_us_ansi_shifted.md)|`KC_DOLLAR`|dollar sign `$` |
|`PRINT_ON` |Start printing everything the user types|
|[`KC_PERC`](keycodes_us_ansi_shifted.md)|`KC_PERCENT`|percent sign `%` |
|`PRINT_OFF`|Stop printing everything the user types |
|[`KC_CIRC`](keycodes_us_ansi_shifted.md)|`KC_CIRCUMFLEX`|circumflex `^` |
|[`KC_AMPR`](keycodes_us_ansi_shifted.md)|`KC_AMPERSAND`|ampersand `&` |
## [Bluetooth ](feature_bluetooth.md )
|[`KC_ASTR`](keycodes_us_ansi_shifted.md)|`KC_ASTERISK`|asterisk `*` |
|[`KC_LPRN`](keycodes_us_ansi_shifted.md)|`KC_LEFT_PAREN`|left parenthesis `(` |
|Key |Description |
|[`KC_RPRN`](keycodes_us_ansi_shifted.md)|`KC_RIGHT_PAREN`|right parenthesis `)` |
|----------|----------------------------------------------|
|[`KC_UNDS`](keycodes_us_ansi_shifted.md)|`KC_UNDERSCORE`|underscore `_` |
|`OUT_AUTO`|Automatically switch between USB and Bluetooth|
|[`KC_PLUS`](keycodes_us_ansi_shifted.md)||plus sign `+` |
|`OUT_USB` |USB only |
|[`KC_LCBR`](keycodes_us_ansi_shifted.md)|`KC_LEFT_CURLY_BRACE`|left curly brace `{` |
|`OUT_BT` |Bluetooth only |
|[`KC_RCBR`](keycodes_us_ansi_shifted.md)|`KC_RIGHT_CURLY_BRACE`|right curly brace `}` |
|[`KC_LT`/`KC_LABK`](keycodes_us_ansi_shifted.md)|`KC_LEFT_ANGLE_BRACKET`|left angle bracket `<` |
## [Modifiers ](quantum_keycodes.md#modifiers )
|[`KC_GT`/`KC_RABK`](keycodes_us_ansi_shifted.md)|`KC_RIGHT_ANGLE_BRACKET`|right angle bracket `>` |
|[`KC_COLN`](keycodes_us_ansi_shifted.md)|`KC_COLON`|colon `:` |
|Key |Aliases |Description |
|[`KC_PIPE`](keycodes_us_ansi_shifted.md)||pipe `\|` |
|----------|----------|----------------------------------------------------|
|[`KC_QUES`](keycodes_us_ansi_shifted.md)|`KC_QUESTION`|question mark `?` |
|`KC_HYPR` | |Hold Left Control, Shift, Alt and GUI |
|[`KC_DQT`/`KC_DQUO`](keycodes_us_ansi_shifted.md)|`KC_DOUBLE_QUOTE`|double quote `"` |
|`KC_MEH` | |Hold Left Control, Shift and Alt |
|[`LT(layer, kc)`](feature_common_shortcuts.md#switching-and-toggling-layers)||turn on layer (0-15) when held, kc ([basic keycodes](keycodes_basic.md)) when tapped|
|`LCTL(kc)`| |Hold Left Control and press `kc` |
|[`TO(layer)`](feature_common_shortcuts.md#switching-and-toggling-layers)||turn on layer when depressed|
|`LSFT(kc)`|`S(kc)` |Hold Left Shift and press `kc` |
|[`MO(layer)`](feature_common_shortcuts.md#switching-and-toggling-layers)||momentarily turn on layer when depressed (requires `KC_TRNS` on destination layer)|
|`LALT(kc)`| |Hold Left Alt and press `kc` |
|[`DF(layer)`](feature_common_shortcuts.md#switching-and-toggling-layers)||sets the base (default) layer|
|`LGUI(kc)`| |Hold Left GUI and press `kc` |
|[`TG(layer)`](feature_common_shortcuts.md#switching-and-toggling-layers)||toggle layer on/off|
|`RCTL(kc)`| |Hold Right Control and press `kc` |
|[`TT(layer)`](feature_common_shortcuts.md#switching-and-toggling-layers)||tap toggle? idk FIXME`|
|`RSFT(kc)`| |Hold Right Shift and press `kc` |
|[`OSM(mod)`](quantum_keycodes.md#one-shot-keys)||hold mod for one keypress|
|`RALT(kc)`| |Hold Right Alt and press `kc` |
|[`OSL(layer)`](quantum_keycodes.md#one-shot-keys)||switch to layer for one keypress|
|`RGUI(kc)`| |Hold Right GUI and press `kc` |
|[`UNICODE(n)`](feature_unicode.md)|[`UC(n)`](feature_unicode.md)|if `UNICODE_ENABLE` , this will send characters up to `0x7FFF` |
|`HYPR(kc)`| |Hold Left Control, Shift, Alt and GUI and press `kc` |
|[`X(n)`](feature_unicode.md)||if `UNICODEMAP_ENABLE` , also sends unicode via a different method|
|`MEH(kc)` | |Hold Left Control, Shift and Alt and press `kc` |
|`LCAG(kc)`| |Hold Left Control, Alt and GUI and press `kc` |
|`ALTG(kc)`| |Hold Right Control and Alt and press `kc` |
|`SCMD(kc)`|`SWIN(kc)`|Hold Left Shift and GUI and press `kc` |
|`LCA(kc)` | |Hold Left Control and Alt and press `kc` |
## [Mod-Tap Keys ](quantum_keycodes.md#mod-tap-keys )
|Key |Aliases |Description |
|------------|------------|-------------------------------------------------------|
|`LCTL_T(kc)`|`CTL_T(kc)` |Left Control when held, `kc` when tapped |
|`RCTL_T(kc)`| |Right Control when held, `kc` when tapped |
|`LSFT_T(kc)`|`SFT_T(kc)` |Left Shift when held, `kc` when tapped |
|`RSFT_T(kc)`| |Right Shift when held, `kc` when tapped |
|`LALT_T(kc)`|`ALT_T(kc)` |Left Alt when held, `kc` when tapped |
|`RALT_T(kc)`|`ALGR_T(kc)`|Right Alt when held, `kc` when tapped |
|`LGUI_T(kc)`|`GUI_T(kc)` |Left GUI when held, `kc` when tapped |
|`RGUI_T(kc)`| |Right GUI when held, `kc` when tapped |
|`C_S_T(kc)` | |Left Control and Shift when held, `kc` when tapped |
|`MEH_T(kc)` | |Left Control, Shift and Alt when held, `kc` when tapped|
|`LCAG_T(kc)`| |Left Control, Alt and GUI when held, `kc` when tapped |
|`RCAG_T(kc)`| |Right Control, Alt and GUI when held, `kc` when tapped |
|`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/ )|
|`SCMD_T(kc)`|`SWIN_T(kc)`|Left Shift and GUI when held, `kc` when tapped |
|`LCA_T(kc)` | |Left Control and Alt when held, `kc` when tapped |
## [US ANSI Shifted Keys ](keycodes_us_ansi_shifted.md )
|Key |Aliases |Description |
|------------------------|------------------|-------------------|
|`KC_TILDE` |`KC_TILD` |`~` |
|`KC_EXCLAIM` |`KC_EXLM` |`!` |
|`KC_AT` | |`@` |
|`KC_HASH` | |`#` |
|`KC_DOLLAR` |`KC_DLR` |`$` |
|`KC_PERCENT` |`KC_PERC` |`%` |
|`KC_CIRCUMFLEX` |`KC_CIRC` |`^` |
|`KC_AMPERSAND` |`KC_AMPR` |`& ` |
|`KC_ASTERISK` |`KC_ASTR` |`*` |
|`KC_LEFT_PAREN` |`KC_LPRN` |`(` |
|`KC_RIGHT_PAREN` |`KC_RPRN` |`)` |
|`KC_UNDERSCORE` |`KC_UNDS` |`_` |
|`KC_PLUS` | |`+` |
|`KC_LEFT_CURLY_BRACE` |`KC_LCBR` |`{` |
|`KC_RIGHT_CURLY_BRACE` |`KC_RCBR` |`}` |
|`KC_PIPE` | |< code > | < / code > |
|`KC_COLON` |`KC_COLN` |`:` |
|`KC_DOUBLE_QUOTE` |`KC_DQT`/`KC_DQUO`|`"` |
|`KC_LEFT_ANGLE_BRACKET` |`KC_LT`/`KC_LABK` |`< ` |
|`KC_RIGHT_ANGLE_BRACKET`|`KC_GT`/`KC_RABK` |`>` |
|`KC_QUESTION` |`KC_QUES` |`?` |
## [Switching and Toggling Layers ](feature_common_shortcuts.md#switching-and-toggling-layers )
|Key |Description |
|---------------|----------------------------------------------------------------------------------|
|`LT(layer, kc)`|Turn on `layer` when held, `kc` when tapped |
|`TO(layer)` |Turn on `layer` when pressed |
|`MO(layer)` |Momentarily turn on `layer` when pressed (requires `KC_TRNS` on destination layer)|
|`DF(layer)` |Set the base (default) layer |
|`TG(layer)` |Toggle `layer` on or off |
|`TT(layer)` |Tap toggle? idk FIXME |
## [One Shot Keys ](quantum_keycodes.md#one-shot-keys )
|Key |Description |
|------------|----------------------------------|
|`OSM(mod)` |Hold `mod` for one keypress |
|`OSL(layer)`|Switch to `layer` for one keypress|
## [Unicode Support ](feature_unicode.md )
|Key |Aliases| |
|------------|-------|-------------------------------------------------|
|`UNICODE(n)`|`UC(n)`|Send Unicode character `n` |
|`X(n)` | |Send Unicode character `n` via a different method|