break up keymaps and quantum keycodes into files by feature
parent
2709744cdd
commit
9b879b1267
|
@ -13,27 +13,36 @@
|
||||||
|
|
||||||
* [Features](features.md)
|
* [Features](features.md)
|
||||||
* [Common Shortcuts](feature_common_shortcuts.md)
|
* [Common Shortcuts](feature_common_shortcuts.md)
|
||||||
* [Layer Switching](feature_common_shortcuts.md#switching-and-toggling-layers)
|
* [Backlight](feature_backlight.md)
|
||||||
* [Modifier Keys](feature_common_shortcuts.md#modifier-keys)
|
* [Bootmagic](feature_bootmagic.md)
|
||||||
* [Shifted Keycodes](feature_common_shortcuts.md#shifted-keycodes)
|
* [Dynamic Macros](dynamic_macros.md)
|
||||||
* [One Shot Keys](feature_common_shortcuts.md#one-shot-keys)
|
* [Key Lock](key_lock.md)
|
||||||
* [Mod Tap](feature_common_shortcuts.md#mod-tap)
|
|
||||||
* [Leader Key](leader_key.md)
|
* [Leader Key](leader_key.md)
|
||||||
* [Macros](macros.md)
|
* [Macros](macros.md)
|
||||||
* [Dynamic Macros](dynamic_macros.md)
|
* [Mouse keys](mouse_keys.md)
|
||||||
* [Space Cadet](space_cadet_shift.md)
|
* [Space Cadet](space_cadet_shift.md)
|
||||||
* [Tap Dance](tap_dance.md)
|
* [Tap Dance](tap_dance.md)
|
||||||
* [Mouse keys](mouse_keys.md)
|
* [Thermal Printer](feature_thermal_printer.md)
|
||||||
* [Unicode](unicode.md)
|
|
||||||
* [Stenography](stenography.md)
|
* [Stenography](stenography.md)
|
||||||
* [Key Lock](key_lock.md)
|
* [Unicode](unicode.md)
|
||||||
|
|
||||||
* Reference
|
* Reference
|
||||||
* [Glossary](glossary.md)
|
* [Glossary](glossary.md)
|
||||||
* [Keymap overview](keymap.md)
|
* [Keymap overview](keymap.md)
|
||||||
* [Keycodes](keycodes.md)
|
* [Keycodes](keycodes.md)
|
||||||
* [Basic Keycodes](basic_keycodes.md)
|
* [Basic](basic_keycodes.md)
|
||||||
* [Quantum Keycodes](quantum_keycodes.md)
|
* [Quantum](quantum_keycodes.md)
|
||||||
|
* [Backlight](feature_backlight.md#backlight-keycodes)
|
||||||
|
* [Bluetooth](feature_bluetooth.md#bluetooth-keycodes)
|
||||||
|
* [Bootmagic](feature_bootmagic.md#bootmagic-keycodes)
|
||||||
|
* [Layer Switching](feature_common_shortcuts.md#switching-and-toggling-layers)
|
||||||
|
* [Mod+Key](feature_common_shortcuts.md#modifier-keys)
|
||||||
|
* [Mod Tap](feature_common_shortcuts.md#mod-tap)
|
||||||
|
* [One Shot Keys](feature_common_shortcuts.md#one-shot-keys)
|
||||||
|
* [Shifted Keys](feature_common_shortcuts.md#shifted-keycodes)
|
||||||
|
* [RGB Light](feature_rgblight.md#rgblight-keycodes)
|
||||||
|
* [Thermal Printer](feature_thermal_printer.md#thermal-printer-keycodes)
|
||||||
|
* [US ANSI Shifted Keys](keycodes_us_ansi_shifted.md)
|
||||||
* [The `config.h` File](config_options.md)
|
* [The `config.h` File](config_options.md)
|
||||||
* [Customizing Functionality](custom_quantum_functions.md)
|
* [Customizing Functionality](custom_quantum_functions.md)
|
||||||
* [Documentation Best Practices](documentation_best_practices.md)
|
* [Documentation Best Practices](documentation_best_practices.md)
|
||||||
|
|
|
@ -1,5 +1,11 @@
|
||||||
# Basic keycodes
|
# Basic keycodes
|
||||||
|
|
||||||
|
Basic keycodes are based on [HID Usage Keyboard/Keypad Page(0x07)](http://www.usb.org/developers/hidpage/Hut1_12v2.pdf) with following exceptions:
|
||||||
|
|
||||||
|
* `KC_NO` = 0 for no action
|
||||||
|
* `KC_TRNS` = 1 for layer transparency
|
||||||
|
* internal special keycodes in the `0xA5-DF` range (tmk heritage).
|
||||||
|
|
||||||
## Letters and Numbers
|
## Letters and Numbers
|
||||||
|
|
||||||
|KC_1|KC_2|KC_3|KC_4|KC_5|KC_6|KC_7|KC_8|
|
|KC_1|KC_2|KC_3|KC_4|KC_5|KC_6|KC_7|KC_8|
|
||||||
|
|
|
@ -0,0 +1,118 @@
|
||||||
|
# Audio
|
||||||
|
|
||||||
|
<!-- FIXME: this formatting needs work
|
||||||
|
|
||||||
|
## Audio
|
||||||
|
|
||||||
|
```c
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
AU_ON,
|
||||||
|
AU_OFF,
|
||||||
|
AU_TOG,
|
||||||
|
|
||||||
|
#ifdef FAUXCLICKY_ENABLE
|
||||||
|
FC_ON,
|
||||||
|
FC_OFF,
|
||||||
|
FC_TOG,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Music mode on/off/toggle
|
||||||
|
MU_ON,
|
||||||
|
MU_OFF,
|
||||||
|
MU_TOG,
|
||||||
|
|
||||||
|
// Music voice iterate
|
||||||
|
MUV_IN,
|
||||||
|
MUV_DE,
|
||||||
|
#endif
|
||||||
|
```
|
||||||
|
|
||||||
|
### Midi
|
||||||
|
|
||||||
|
#if !MIDI_ENABLE_STRICT || (defined(MIDI_ENABLE) && defined(MIDI_BASIC))
|
||||||
|
MI_ON, // send midi notes when music mode is enabled
|
||||||
|
MI_OFF, // don't send midi notes when music mode is enabled
|
||||||
|
#endif
|
||||||
|
|
||||||
|
MIDI_TONE_MIN,
|
||||||
|
MIDI_TONE_MAX
|
||||||
|
|
||||||
|
MI_C = MIDI_TONE_MIN,
|
||||||
|
MI_Cs,
|
||||||
|
MI_Db = MI_Cs,
|
||||||
|
MI_D,
|
||||||
|
MI_Ds,
|
||||||
|
MI_Eb = MI_Ds,
|
||||||
|
MI_E,
|
||||||
|
MI_F,
|
||||||
|
MI_Fs,
|
||||||
|
MI_Gb = MI_Fs,
|
||||||
|
MI_G,
|
||||||
|
MI_Gs,
|
||||||
|
MI_Ab = MI_Gs,
|
||||||
|
MI_A,
|
||||||
|
MI_As,
|
||||||
|
MI_Bb = MI_As,
|
||||||
|
MI_B,
|
||||||
|
|
||||||
|
MIDI_TONE_KEYCODE_OCTAVES > 1
|
||||||
|
|
||||||
|
where x = 1-5:
|
||||||
|
MI_C_x,
|
||||||
|
MI_Cs_x,
|
||||||
|
MI_Db_x = MI_Cs_x,
|
||||||
|
MI_D_x,
|
||||||
|
MI_Ds_x,
|
||||||
|
MI_Eb_x = MI_Ds_x,
|
||||||
|
MI_E_x,
|
||||||
|
MI_F_x,
|
||||||
|
MI_Fs_x,
|
||||||
|
MI_Gb_x = MI_Fs_x,
|
||||||
|
MI_G_x,
|
||||||
|
MI_Gs_x,
|
||||||
|
MI_Ab_x = MI_Gs_x,
|
||||||
|
MI_A_x,
|
||||||
|
MI_As_x,
|
||||||
|
MI_Bb_x = MI_As_x,
|
||||||
|
MI_B_x,
|
||||||
|
|
||||||
|
MI_OCT_Nx 1-2
|
||||||
|
MI_OCT_x 0-7
|
||||||
|
MIDI_OCTAVE_MIN = MI_OCT_N2,
|
||||||
|
MIDI_OCTAVE_MAX = MI_OCT_7,
|
||||||
|
MI_OCTD, // octave down
|
||||||
|
MI_OCTU, // octave up
|
||||||
|
|
||||||
|
MI_TRNS_Nx 1-6
|
||||||
|
MI_TRNS_x 0-6
|
||||||
|
MIDI_TRANSPOSE_MIN = MI_TRNS_N6,
|
||||||
|
MIDI_TRANSPOSE_MAX = MI_TRNS_6,
|
||||||
|
MI_TRNSD, // transpose down
|
||||||
|
MI_TRNSU, // transpose up
|
||||||
|
|
||||||
|
MI_VEL_x 1-10
|
||||||
|
MIDI_VELOCITY_MIN = MI_VEL_1,
|
||||||
|
MIDI_VELOCITY_MAX = MI_VEL_9,
|
||||||
|
MI_VELD, // velocity down
|
||||||
|
MI_VELU, // velocity up
|
||||||
|
|
||||||
|
MI_CHx 1-16
|
||||||
|
MIDI_CHANNEL_MIN = MI_CH1
|
||||||
|
MIDI_CHANNEL_MAX = MI_CH16,
|
||||||
|
MI_CHD, // previous channel
|
||||||
|
MI_CHU, // next channel
|
||||||
|
|
||||||
|
MI_ALLOFF, // all notes off
|
||||||
|
|
||||||
|
MI_SUS, // sustain
|
||||||
|
MI_PORT, // portamento
|
||||||
|
MI_SOST, // sostenuto
|
||||||
|
MI_SOFT, // soft pedal
|
||||||
|
MI_LEG, // legato
|
||||||
|
|
||||||
|
MI_MOD, // modulation
|
||||||
|
MI_MODSD, // decrease modulation speed
|
||||||
|
MI_MODSU, // increase modulation speed
|
||||||
|
#endif // MIDI_ADVANCED
|
||||||
|
|
||||||
|
-->
|
|
@ -0,0 +1,17 @@
|
||||||
|
# Backlighting
|
||||||
|
|
||||||
|
<!-- FIXME: Describe how backlighting works in QMK -->
|
||||||
|
|
||||||
|
## Backlight Keycodes
|
||||||
|
|
||||||
|
These keycodes control the backlight. Most keyboards use this for single color in-switch lighting.
|
||||||
|
|
||||||
|
|Name|Description|
|
||||||
|
|----|-----------|
|
||||||
|
|`BL_x`|Set a specific backlight level between 0-9|
|
||||||
|
|`BL_ON`|An alias for `BL_9`|
|
||||||
|
|`BL_OFF`|An alias for `BL_0`|
|
||||||
|
|`BL_DEC`|Turn the backlight level down by 1|
|
||||||
|
|`BL_INC`|Turn the backlight level up by 1|
|
||||||
|
|`BL_TOGG`|Toggle the backlight on or off|
|
||||||
|
|`BL_STEP`|Step through backlight levels, wrapping around to 0 when you reach the top.|
|
|
@ -0,0 +1,13 @@
|
||||||
|
# Bluetooth
|
||||||
|
|
||||||
|
<!-- FIXME: Document bluetooth support. -->
|
||||||
|
|
||||||
|
## Bluetooth Keycodes
|
||||||
|
|
||||||
|
This is used when multiple keyboard outputs can be selected. Currently this only allows for switching between USB and Bluetooth on keyboards that support both.
|
||||||
|
|
||||||
|
|Name|Description|
|
||||||
|
|----|-----------|
|
||||||
|
|`OUT_AUTO`|auto mode|
|
||||||
|
|`OUT_USB`|usb only|
|
||||||
|
|`OUT_BT`|bluetooth|
|
|
@ -0,0 +1,29 @@
|
||||||
|
# Bootmagic
|
||||||
|
|
||||||
|
<!-- FIXME: Describe the bootmagic feature here. -->
|
||||||
|
|
||||||
|
## Bootmagic Keycodes
|
||||||
|
|
||||||
|
Shortcuts for bootmagic options. You can use these even when bootmagic is off.
|
||||||
|
|
||||||
|
|Name|Description|
|
||||||
|
|----|-----------|
|
||||||
|
|`MAGIC_SWAP_CONTROL_CAPSLOCK`|Swap Capslock and Left Control|
|
||||||
|
|`MAGIC_CAPSLOCK_TO_CONTROL`|Treat Capslock like a Control Key|
|
||||||
|
|`MAGIC_SWAP_LALT_LGUI`|Swap the left Alt and GUI keys|
|
||||||
|
|`MAGIC_SWAP_RALT_RGUI`|Swap the right Alt and GUI keys|
|
||||||
|
|`MAGIC_NO_GUI`|Disable the GUI key|
|
||||||
|
|`MAGIC_SWAP_GRAVE_ESC`|Swap the Grave and Esc key.|
|
||||||
|
|`MAGIC_SWAP_BACKSLASH_BACKSPACE`|Swap backslack and backspace|
|
||||||
|
|`MAGIC_HOST_NKRO`|Force NKRO on|
|
||||||
|
|`MAGIC_SWAP_ALT_GUI`/`AG_SWAP`|Swap Alt and Gui on both sides|
|
||||||
|
|`MAGIC_UNSWAP_CONTROL_CAPSLOCK`|Disable the Control/Capslock swap|
|
||||||
|
|`MAGIC_UNCAPSLOCK_TO_CONTROL`|Disable treating Capslock like Control |
|
||||||
|
|`MAGIC_UNSWAP_LALT_LGUI`|Disable Left Alt and GUI switching|
|
||||||
|
|`MAGIC_UNSWAP_RALT_RGUI`|Disable Right Alt and GUI switching|
|
||||||
|
|`MAGIC_UNNO_GUI`|Enable the GUI key |
|
||||||
|
|`MAGIC_UNSWAP_GRAVE_ESC`|Disable the Grave/Esc swap |
|
||||||
|
|`MAGIC_UNSWAP_BACKSLASH_BACKSPACE`|Disable the backslash/backspace swap|
|
||||||
|
|`MAGIC_UNHOST_NKRO`|Force NKRO off|
|
||||||
|
|`MAGIC_UNSWAP_ALT_GUI`/`AG_NORM`|Disable the Alt/GUI switching|
|
||||||
|
|`MAGIC_TOGGLE_NKRO`|Turn NKRO on or off|
|
|
@ -25,7 +25,9 @@ These functions allow you to activate layers in various ways.
|
||||||
* `TO(layer)` - Goes to a layer. This code is special, because it lets you go either up or down the stack -- just goes directly to the layer you want. So while other codes only let you go _up_ the stack (from layer 0 to layer 3, for example), `TO(2)` is going to get you to layer 2, no matter where you activate it from -- even if you're currently on layer 5. This gets activated on keydown (as soon as the key is pressed).
|
* `TO(layer)` - Goes to a layer. This code is special, because it lets you go either up or down the stack -- just goes directly to the layer you want. So while other codes only let you go _up_ the stack (from layer 0 to layer 3, for example), `TO(2)` is going to get you to layer 2, no matter where you activate it from -- even if you're currently on layer 5. This gets activated on keydown (as soon as the key is pressed).
|
||||||
* `TT(layer)` - Layer Tap-Toggle. If you hold the key down, the layer becomes active, and then deactivates when you let go. And if you tap it, the layer simply becomes active (toggles on). It needs 5 taps by default, but you can set it by defining `TAPPING_TOGGLE`, for example, `#define TAPPING_TOGGLE 2` for just two taps.
|
* `TT(layer)` - Layer Tap-Toggle. If you hold the key down, the layer becomes active, and then deactivates when you let go. And if you tap it, the layer simply becomes active (toggles on). It needs 5 taps by default, but you can set it by defining `TAPPING_TOGGLE`, for example, `#define TAPPING_TOGGLE 2` for just two taps.
|
||||||
|
|
||||||
Care must be taken when switching layers, it's possible to lock yourself in a layer with no way to deactivate that layer (without unplugging your keyboard.) We've created some guidelines to help users avoid the most common problems.
|
## Working With Layers
|
||||||
|
|
||||||
|
Care must be taken when switching layers, it's possible to lock yourself into a layer with no way to deactivate that layer (without unplugging your keyboard.) We've created some guidelines to help users avoid the most common problems.
|
||||||
|
|
||||||
### Beginners
|
### Beginners
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
# RGB Lighting
|
||||||
|
|
||||||
|
<!-- FIXME: Describe how to use RGB Lighting here. -->
|
||||||
|
|
||||||
|
## RGB Lighting Keycodes
|
||||||
|
|
||||||
|
This controls the RGB Lighting functionality. Most keyboards use WS2812 (and compatible) LEDs for underlight or case lighting.
|
||||||
|
|
||||||
|
|Name|Description|
|
||||||
|
|----|-----------|
|
||||||
|
|`RGB_TOG`|toggle on/off|
|
||||||
|
|`RGB_MOD`|cycle through modes|
|
||||||
|
|`RGB_HUI`|hue increase|
|
||||||
|
|`RGB_HUD`|hue decrease|
|
||||||
|
|`RGB_SAI`|saturation increase|
|
||||||
|
|`RGB_SAD`|saturation decrease|
|
||||||
|
|`RGB_VAI`|value increase|
|
||||||
|
|`RGB_VAD`|value decrease|
|
|
@ -0,0 +1,10 @@
|
||||||
|
# Thermal Printer
|
||||||
|
|
||||||
|
<!-- FIXME: Describe thermal printers support here. -->
|
||||||
|
|
||||||
|
## Thermal Printer Keycodes
|
||||||
|
|
||||||
|
|Name|Description|
|
||||||
|
|----|-----------|
|
||||||
|
|`PRINT_ON`|Start printing everything the user types|
|
||||||
|
|`PRINT_OFF`|Stop printing everything the user types|
|
360
docs/keycodes.md
360
docs/keycodes.md
|
@ -1,17 +1,351 @@
|
||||||
# Overview
|
# Overview
|
||||||
|
|
||||||
When defining a [keymap](keymap.md) each key needs a valid key definition.
|
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.
|
||||||
|
|
||||||
This page documents the symbols that correspond to keycodes that are available to you in QMK.
|
## Keycode Index
|
||||||
|
|
||||||
## Basic keycodes (`0x00` - `0xFF`)
|
|Long Name|Short Name|Description|
|
||||||
|
|---------|----------|-----------|
|
||||||
[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:
|
|`KC_1`||||
|
||||||
|
|`KC_2`||||
|
||||||
* `KC_NO` = 0 for no action
|
|`KC_3`||||
|
||||||
* `KC_TRNS` = 1 for layer transparency
|
|`KC_4`||||
|
||||||
* internal special keycodes in the `0xA5-DF` range (tmk heritage).
|
|`KC_5`||||
|
||||||
|
|`KC_6`||||
|
||||||
## Quantum keycodes (`0x0100` - `0xFFFF`)
|
|`KC_7`||||
|
||||||
|
|`KC_8`||||
|
||||||
[Quantum keycodes](quantum_keycodes.md) allow for easier customisation of your keymap than the basic ones provide, without having to define custom actions.
|
|`KC_9`||||
|
||||||
|
|`KC_0`||||
|
||||||
|
|`KC_F1`||||
|
||||||
|
|`KC_F2`||||
|
||||||
|
|`KC_F3`||||
|
||||||
|
|`KC_F4`||||
|
||||||
|
|`KC_F5`||||
|
||||||
|
|`KC_F6`||||
|
||||||
|
|`KC_F7`||||
|
||||||
|
|`KC_F8`||||
|
||||||
|
|`KC_F9`||||
|
||||||
|
|`KC_F10`||||
|
||||||
|
|`KC_F11`||||
|
||||||
|
|`KC_F12`||||
|
||||||
|
|`KC_F13`||||
|
||||||
|
|`KC_F14`||||
|
||||||
|
|`KC_F15`||||
|
||||||
|
|`KC_F16`||||
|
||||||
|
|`KC_F17`||||
|
||||||
|
|`KC_F18`||||
|
||||||
|
|`KC_F19`||||
|
||||||
|
|`KC_F20`||||
|
||||||
|
|`KC_F21`||||
|
||||||
|
|`KC_F22`||||
|
||||||
|
|`KC_F23`||||
|
||||||
|
|`KC_F24`||||
|
||||||
|
|`KC_A`||||
|
||||||
|
|`KC_B`||||
|
||||||
|
|`KC_C`||||
|
||||||
|
|`KC_D`||||
|
||||||
|
|`KC_E`||||
|
||||||
|
|`KC_F`||||
|
||||||
|
|`KC_G`||||
|
||||||
|
|`KC_H`||||
|
||||||
|
|`KC_I`||||
|
||||||
|
|`KC_J`||||
|
||||||
|
|`KC_K`||||
|
||||||
|
|`KC_L`||||
|
||||||
|
|`KC_M`||||
|
||||||
|
|`KC_N`||||
|
||||||
|
|`KC_O`||||
|
||||||
|
|`KC_P`||||
|
||||||
|
|`KC_Q`||||
|
||||||
|
|`KC_R`||||
|
||||||
|
|`KC_S`||||
|
||||||
|
|`KC_T`||||
|
||||||
|
|`KC_U`||||
|
||||||
|
|`KC_V`||||
|
||||||
|
|`KC_W`||||
|
||||||
|
|`KC_X`||||
|
||||||
|
|`KC_Y`||||
|
||||||
|
|`KC_Z`||||
|
||||||
|
|Long Name|Short Name|Description|
|
||||||
|
|---------|----------|-----------|
|
||||||
|
|`KC_ENTER`|`KC_ENT`|`Return (ENTER)`|
|
||||||
|
|`KC_ESCAPE`|`KC_ESC`|`ESCAPE`|
|
||||||
|
|`KC_BSPACE`|`KC_BSPC`|`DELETE (Backspace)`|
|
||||||
|
|`KC_TAB`||`Tab`|
|
||||||
|
|`KC_SPACE`|`KC_SPC`|Spacebar|
|
||||||
|
|`KC_MINUS`|`KC_MINS`|`-` and `_`|
|
||||||
|
|`KC_EQUAL`|`KC_EQL`|`=` and `+`|
|
||||||
|
|`KC_LBRACKET`|`KC_LBRC`|`[` and `{`|
|
||||||
|
|`KC_RBRACKET`|`KC_RBRC`|`]` and `}`|
|
||||||
|
|`KC_BSLASH`|`KC_BSLS`|`\` and <code>|</code> |
|
||||||
|
|`KC_NONUS_HASH`|`KC_NUHS`|Non-US `#` and `~`|
|
||||||
|
|`KC_NONUS_BSLASH`|`KC_NUBS`|Non-US `\` and <code>|</code> |
|
||||||
|
|`KC_INT1`|`KC_RO`|JIS `\` and <code>|</code> |
|
||||||
|
|`KC_INT2`|`KC_KANA`|International216|
|
||||||
|
|`KC_INT3`|`KC_JYEN`|Yen Symbol (`¥`)|
|
||||||
|
|`KC_SCOLON`|`KC_SCLN`|`;` and `:`|
|
||||||
|
|`KC_QUOTE`|`KC_QUOT`|`‘` and `“`|
|
||||||
|
|`KC_GRAVE`|`KC_GRV`|Grave Accent and Tilde|
|
||||||
|
|`KC_COMMA`|`KC_COMM`|`,` and `<`|
|
||||||
|
|`KC_DOT`||`.` and `>`|
|
||||||
|
|`KC_SLASH`|`KC_SLSH`|`/` and `?`|
|
||||||
|
|`KC_CAPSLOCK`|`KC_CAPS`|Caps Lock|
|
||||||
|
|Long Name|Short Name|Description|
|
||||||
|
|---------|----------|-----------|
|
||||||
|
|`KC_LCTRL`|`KC_LCTL`|LeftControl|
|
||||||
|
|`KC_LSHIFT`|`KC_LSFT`|LeftShift|
|
||||||
|
|`KC_LALT`||LeftAlt|
|
||||||
|
|`KC_LGUI`||Left GUI(Windows/Apple/Meta key)|
|
||||||
|
|`KC_RCTRL`|`KC_RCTL`|RightControl|
|
||||||
|
|`KC_RSHIFT`|`KC_RSFT`|RightShift|
|
||||||
|
|`KC_RALT`||RightAlt|
|
||||||
|
|`KC_RGUI`||Right GUI(Windows/Apple/Meta key)|
|
||||||
|
|`KC_LOCKING_CAPS`|`KC_LCAP`|Locking Caps Lock|
|
||||||
|
|`KC_LOCKING_NUM`|`KC_LNUM`|Locking Num Lock|
|
||||||
|
|`KC_LOCKING_SCROLL`|`KC_LSCR`|Locking Scroll Lock|
|
||||||
|
|`KC_INT4`|`KC_HENK`|JIS Henken|
|
||||||
|
|`KC_INT5`|`KC_MHEN`|JIS Muhenken|
|
||||||
|
|Long Name|Short Name|Description|
|
||||||
|
|---------|----------|-----------|
|
||||||
|
|`KC_PSCREEN`|`KC_PSCR`|PrintScreen|
|
||||||
|
|`KC_SCROLLLOCK`|`KC_SLCK`|Scroll Lock|
|
||||||
|
|`KC_PAUSE`|`KC_PAUS`|Pause|
|
||||||
|
|`KC_INSERT`|`KC_INS`|Insert|
|
||||||
|
|`KC_HOME`||Home|
|
||||||
|
|`KC_PGUP`||PageUp|
|
||||||
|
|`KC_DELETE`|`KC_DEL`|Delete Forward|
|
||||||
|
|`KC_END`||End|
|
||||||
|
|`KC_PGDOWN`|`KC_PGDN`|PageDown|
|
||||||
|
|`KC_RIGHT`|`KC_RGHT`|RightArrow|
|
||||||
|
|`KC_LEFT`||LeftArrow|
|
||||||
|
|`KC_DOWN`||DownArrow|
|
||||||
|
|`KC_UP`||UpArrow|
|
||||||
|
|`KC_APPLICATION`|`KC_APP`|Application|
|
||||||
|
|`KC_POWER`||Power|
|
||||||
|
|`KC_EXECUTE`||Execute|
|
||||||
|
|`KC_HELP`||Help|
|
||||||
|
|`KC_MENU`||Menu|
|
||||||
|
|`KC_SELECT`||Select|
|
||||||
|
|`KC_AGAIN`||Again|
|
||||||
|
|`KC_UNDO`||Undo|
|
||||||
|
|`KC_CUT`||Cut|
|
||||||
|
|`KC_COPY`||Copy|
|
||||||
|
|`KC_PASTE`||Paste|
|
||||||
|
|`KC_FIND`||Find|
|
||||||
|
|`KC_ALT_ERASE`||Alternate Erase|
|
||||||
|
|`KC_SYSREQ`||SysReq/Attention|
|
||||||
|
|`KC_CANCEL`||Cancel|
|
||||||
|
|`KC_CLEAR`||Clear|
|
||||||
|
|`KC_PRIOR`||Prior|
|
||||||
|
|`KC_RETURN`||Return|
|
||||||
|
|`KC_SEPARATOR`||Separator|
|
||||||
|
|`KC_OUT`||Out|
|
||||||
|
|`KC_OPER`||Oper|
|
||||||
|
|`KC_CLEAR_AGAIN`||Clear/Again|
|
||||||
|
|`KC_CRSEL`||CrSel/Props|
|
||||||
|
|`KC_EXSEL`||ExSel|
|
||||||
|
|`KC_SYSTEM_POWER`|`KC_PWR`|System Power Down|
|
||||||
|
|`KC_SYSTEM_SLEEP`|`KC_SLEP`|System Sleep|
|
||||||
|
|`KC_SYSTEM_WAKE`|`KC_WAKE`|System Wake|
|
||||||
|
|`KC_MAIL`|`KC_MAIL`||
|
||||||
|
|`KC_CALCULATOR`|`KC_CALC`||
|
||||||
|
|`KC_MY_COMPUTER`|`KC_MYCM`||
|
||||||
|
|`KC_WWW_SEARCH`|`KC_WSCH`||
|
||||||
|
|`KC_WWW_HOME`|`KC_WHOM`||
|
||||||
|
|`KC_WWW_BACK`|`KC_WBAK`||
|
||||||
|
|`KC_WWW_FORWARD`|`KC_WFWD`||
|
||||||
|
|`KC_WWW_STOP`|`KC_WSTP`||
|
||||||
|
|`KC_WWW_REFRESH`|`KC_WREF`||
|
||||||
|
|`KC_WWW_FAVORITES`|`KC_WFAV`||
|
||||||
|
|Long Name|Short Name|Description|
|
||||||
|
|---------|----------|-----------|
|
||||||
|
|`KC_STOP`||Stop|
|
||||||
|
|`KC__MUTE`||Mute|
|
||||||
|
|`KC__VOLUP`||Volume Up|
|
||||||
|
|`KC__VOLDOWN`||Volume Down|
|
||||||
|
|`KC_AUDIO_MUTE`|`KC_MUTE`||
|
||||||
|
|`KC_AUDIO_VOL_UP`|`KC_VOLU`||
|
||||||
|
|`KC_AUDIO_VOL_DOWN`|`KC_VOLD`||
|
||||||
|
|`KC_MEDIA_NEXT_TRACK`|`KC_MNXT`|Next Track (Windows)|
|
||||||
|
|`KC_MEDIA_PREV_TRACK`|`KC_MPRV`|Previous Track (Windows)|
|
||||||
|
|`KC_MEDIA_FAST_FORWARD`|`KC_MFFD`|Next Track (macOS)|
|
||||||
|
|`KC_MEDIA_REWIND`|`KC_MRWD`|Previous Track (macOS)|
|
||||||
|
|`KC_MEDIA_STOP`|`KC_MSTP`||
|
||||||
|
|`KC_MEDIA_PLAY_PAUSE`|`KC_MPLY`||
|
||||||
|
|`KC_MEDIA_SELECT`|`KC_MSEL`||
|
||||||
|
|Long Name|Short Name|Description|
|
||||||
|
|---------|----------|-----------|
|
||||||
|
|`KC_NUMLOCK`|`KC_NLCK`|Keypad Num Lock and Clear|
|
||||||
|
|`KC_KP_SLASH`|`KC_PSLS`|Keypad /|
|
||||||
|
|`KC_KP_ASTERISK`|`KC_PAST`|Keypad *|
|
||||||
|
|`KC_KP_MINUS`|`KC_PMNS`|Keypad -|
|
||||||
|
|`KC_KP_PLUS`|`KC_PPLS`|Keypad +|
|
||||||
|
|`KC_KP_ENTER`|`KC_PENT`|Keypad ENTER`|
|
||||||
|
|`KC_KP_1`|`KC_P1`|Keypad 1 and End|
|
||||||
|
|`KC_KP_2`|`KC_P2`|Keypad 2 and Down Arrow|
|
||||||
|
|`KC_KP_3`|`KC_P3`|Keypad 3 and PageDn|
|
||||||
|
|`KC_KP_4`|`KC_P4`|Keypad 4 and Left Arrow|
|
||||||
|
|`KC_KP_5`|`KC_P5`|Keypad 5|
|
||||||
|
|`KC_KP_6`|`KC_P6`|Keypad 6 and Right Arrow|
|
||||||
|
|`KC_KP_7`|`KC_P7`|Keypad 7 and Home|
|
||||||
|
|`KC_KP_8`|`KC_P8`|Keypad 8 and Up Arrow|
|
||||||
|
|`KC_KP_9`|`KC_P9`|Keypad 9 and PageUp|
|
||||||
|
|`KC_KP_0`|`KC_P0`|Keypad 0 and Insert|
|
||||||
|
|`KC_KP_DOT`|`KC_PDOT`|Keypad . and Delete|
|
||||||
|
|`KC_KP_EQUAL`|`KC_PEQL`|Keypad =|
|
||||||
|
|`KC_KP_COMMA`|`KC_PCMM`|Keypad Comma|
|
||||||
|
|`KC_KP_EQUAL_AS400`||Keypad Equal Sign|
|
||||||
|
|Long Name|Short Name|Description|
|
||||||
|
|---------|----------|-----------|
|
||||||
|
|`KC_NO`||Ignore this key. (NOOP) |
|
||||||
|
|`KC_TRNS`||Make this key transparent to find the key on a lower layer.|
|
||||||
|
|Long Name|Short Name|Description|
|
||||||
|
|---------|----------|-----------|
|
||||||
|
|[`KC_MS_UP`](mouse_keys.md)|`KC_MS_U`|Mouse Cursor Up|
|
||||||
|
|[`KC_MS_DOWN`](mouse_keys.md)|`KC_MS_D`|Mouse Cursor Down|
|
||||||
|
|[`KC_MS_LEFT`](mouse_keys.md)|`KC_MS_L`|Mouse Cursor Left|
|
||||||
|
|[`KC_MS_RIGHT`](mouse_keys.md)|`KC_MS_R`|Mouse Cursor Right|
|
||||||
|
|[`KC_MS_BTN1`](mouse_keys.md)|`KC_BTN1`|Mouse Button 1|
|
||||||
|
|[`KC_MS_BTN2`](mouse_keys.md)|`KC_BTN2`|Mouse Button 2|
|
||||||
|
|[`KC_MS_BTN3`](mouse_keys.md)|`KC_BTN3`|Mouse Button 3|
|
||||||
|
|[`KC_MS_BTN4`](mouse_keys.md)|`KC_BTN4`|Mouse Button 4|
|
||||||
|
|[`KC_MS_BTN5`](mouse_keys.md)|`KC_BTN5`|Mouse Button 5|
|
||||||
|
|[`KC_MS_WH_UP`](mouse_keys.md)|`KC_WH_U`|Mouse Wheel Up|
|
||||||
|
|[`KC_MS_WH_DOWN`](mouse_keys.md)|`KC_WH_D`|Mouse Wheel Down|
|
||||||
|
|[`KC_MS_WH_LEFT`](mouse_keys.md)|`KC_WH_L`|Mouse Wheel Left|
|
||||||
|
|[`KC_MS_WH_RIGHT`](mouse_keys.md)|`KC_WH_R`|Mouse Wheel Right|
|
||||||
|
|[`KC_MS_ACCEL0`](mouse_keys.md)|`KC_ACL0`|Mouse Acceleration 0|
|
||||||
|
|[`KC_MS_ACCEL1`](mouse_keys.md)|`KC_ACL1`|Mouse Acceleration 1|
|
||||||
|
|[`KC_MS_ACCEL2`](mouse_keys.md)|`KC_ACL2`|Mouse Acceleration 2|
|
||||||
|
|Long Name|Short Name|Description|
|
||||||
|
|---------|----------|-----------|
|
||||||
|
|[`RESET`](quantum_keycodes.md#qmk-keycodes)||Put the keyboard into DFU mode for flashing|
|
||||||
|
|[`DEBUG`](quantum_keycodes.md#qmk-keycodes)||Toggles debug mode|
|
||||||
|
|[`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_LSPO`](quantum_keycodes.md#qmk-keycodes)||Left shift when held, open paranthesis when tapped|
|
||||||
|
|[`KC_RSPC`](quantum_keycodes.md#qmk-keycodes)||Right shift when held, close paranthesis when tapped|
|
||||||
|
|[`KC_LEAD`](quantum_keycodes.md#qmk-keycodes)||The [leader key](leader_key.md)|
|
||||||
|
|[`FUNC(n)`](quantum_keycodes.md#qmk-keycodes)|`F(n)`|Call `fn_action(n)`|
|
||||||
|
|[`M(n)`](quantum_keycodes.md#qmk-keycodes)||to call macro n|
|
||||||
|
|[`MACROTAP(n)`](quantum_keycodes.md#qmk-keycodes)||to macro-tap n idk FIXME`|
|
||||||
|
|Long Name|Short Name|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|
|
||||||
|
|[`MAGIC_SWAP_LALT_LGUI`](feature_bootmagic.md)||Swap the left Alt and GUI keys|
|
||||||
|
|[`MAGIC_SWAP_RALT_RGUI`](feature_bootmagic.md)||Swap the right Alt and GUI keys|
|
||||||
|
|[`MAGIC_NO_GUI`](feature_bootmagic.md)||Disable the GUI key|
|
||||||
|
|[`MAGIC_SWAP_GRAVE_ESC`](feature_bootmagic.md)||Swap the Grave and Esc key.|
|
||||||
|
|[`MAGIC_SWAP_BACKSLASH_BACKSPACE`](feature_bootmagic.md)||Swap backslack and backspace|
|
||||||
|
|[`MAGIC_HOST_NKRO`](feature_bootmagic.md)||Force NKRO on|
|
||||||
|
|[`MAGIC_SWAP_ALT_GUI`/`AG_SWAP`](feature_bootmagic.md)||Swap Alt and Gui on both sides|
|
||||||
|
|[`MAGIC_UNSWAP_CONTROL_CAPSLOCK`](feature_bootmagic.md)||Disable the Control/Capslock swap|
|
||||||
|
|[`MAGIC_UNCAPSLOCK_TO_CONTROL`](feature_bootmagic.md)||Disable treating Capslock like Control |
|
||||||
|
|[`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|
|
||||||
|
|[`MAGIC_UNNO_GUI`](feature_bootmagic.md)||Enable the GUI key |
|
||||||
|
|[`MAGIC_UNSWAP_GRAVE_ESC`](feature_bootmagic.md)||Disable the Grave/Esc swap |
|
||||||
|
|[`MAGIC_UNSWAP_BACKSLASH_BACKSPACE`](feature_bootmagic.md)||Disable the backslash/backspace swap|
|
||||||
|
|[`MAGIC_UNHOST_NKRO`](feature_bootmagic.md)||Force NKRO off|
|
||||||
|
|[`MAGIC_UNSWAP_ALT_GUI`/`AG_NORM`](feature_bootmagic.md)||Disable the Alt/GUI switching|
|
||||||
|
|[`MAGIC_TOGGLE_NKRO`](feature_bootmagic.md)||Turn NKRO on or off|
|
||||||
|
|Long Name|Short Name|Description|
|
||||||
|
|---------|----------|-----------|
|
||||||
|
|[`BL_x`](feature_backlight.md)||Set a specific backlight level between 0-9|
|
||||||
|
|[`BL_ON`](feature_backlight.md)||An alias for `BL_9`|
|
||||||
|
|[`BL_OFF`](feature_backlight.md)||An alias for `BL_0`|
|
||||||
|
|[`BL_DEC`](feature_backlight.md)||Turn the backlight level down by 1|
|
||||||
|
|[`BL_INC`](feature_backlight.md)||Turn the backlight level up by 1|
|
||||||
|
|[`BL_TOGG`](feature_backlight.md)||Toggle the backlight on or off|
|
||||||
|
|[`BL_STEP`](feature_backlight.md)||Step through backlight levels, wrapping around to 0 when you reach the top.|
|
||||||
|
|Long Name|Short Name|Description|
|
||||||
|
|---------|----------|-----------|
|
||||||
|
|[`RGB_TOG`](feature_rgblight.md)||toggle on/off|
|
||||||
|
|[`RGB_MOD`](feature_rgblight.md)||cycle through modes|
|
||||||
|
|[`RGB_HUI`](feature_rgblight.md)||hue increase|
|
||||||
|
|[`RGB_HUD`](feature_rgblight.md)||hue decrease|
|
||||||
|
|[`RGB_SAI`](feature_rgblight.md)||saturation increase|
|
||||||
|
|[`RGB_SAD`](feature_rgblight.md)||saturation decrease|
|
||||||
|
|[`RGB_VAI`](feature_rgblight.md)||value increase|
|
||||||
|
|[`RGB_VAD`](feature_rgblight.md)||value decrease|
|
||||||
|
|Long Name|Short Name|Description|
|
||||||
|
|---------|----------|-----------|
|
||||||
|
|[`PRINT_ON`](feature_thermal_printer.md)||Start printing everything the user types|
|
||||||
|
|[`PRINT_OFF`](feature_thermal_printer.md)||Stop printing everything the user types|
|
||||||
|
|Long Name|Short Name|Description|
|
||||||
|
|---------|----------|-----------|
|
||||||
|
|[`OUT_AUTO`](feature_bluetooth.md)||auto mode|
|
||||||
|
|[`OUT_USB`](feature_bluetooth.md)||usb only|
|
||||||
|
|[`OUT_BT`](feature_bluetooth.md)||bluetooth (when `BLUETOOTH_ENABLE`)|
|
||||||
|
|Long Name|Short Name|Description|
|
||||||
|
|---------|----------|-----------|
|
||||||
|
|[`KC_HYPR`](quantum_keycodes.md#modifiers)||Hold down LCTL + LSFT + LALT + LGUI`|
|
||||||
|
|[`KC_MEH`](quantum_keycodes.md#modifiers)||Hold down LCTL + LSFT + LALT`|
|
||||||
|
|[`LCTL(kc)`](quantum_keycodes.md#modifiers)||`LCTL` + `kc`|
|
||||||
|
|[`LSFT(kc)`](quantum_keycodes.md#modifiers)|[`S(kc)`](quantum_keycodes.md#modifiers)|`LSFT` + `kc`|
|
||||||
|
|[`LALT(kc)`](quantum_keycodes.md#modifiers)||`LALT` + `kc`|
|
||||||
|
|[`LGUI(kc)`](quantum_keycodes.md#modifiers)||`LGUI` + `kc`|
|
||||||
|
|[`RCTL(kc)`](quantum_keycodes.md#modifiers)||`RCTL` + `kc`|
|
||||||
|
|[`RSFT(kc)`](quantum_keycodes.md#modifiers)||`RSFT` + `kc`|
|
||||||
|
|[`RALT(kc)`](quantum_keycodes.md#modifiers)||`RALT` + `kc`|
|
||||||
|
|[`RGUI(kc)`](quantum_keycodes.md#modifiers)||`RGUI` + `kc`|
|
||||||
|
|[`HYPR(kc)`](quantum_keycodes.md#modifiers)||`LCTL` + `LSFT` + `LALT` + `LGUI` + `kc`|
|
||||||
|
|[`MEH(kc)`](quantum_keycodes.md#modifiers)||`LCTL` + `LSFT` + `LALT` + `kc`|
|
||||||
|
|[`LCAG(kc)`](quantum_keycodes.md#modifiers)||`LCTL` + `LALT` + `LGUI` + `kc`|
|
||||||
|
|[`ALTG(kc)`](quantum_keycodes.md#modifiers)||`RCTL` + `RALT` + `kc`|
|
||||||
|
|[`SCMD(kc)`](quantum_keycodes.md#modifiers)|[`SWIN(kc)`](quantum_keycodes.md#modifiers)|`LGUI` + `LSFT` + `kc`|
|
||||||
|
|[`LCA(kc)`](quantum_keycodes.md#modifiers)||`LCTL` + `LALT` + `kc`|
|
||||||
|
|Long Name|Short Name|Description|
|
||||||
|
|---------|----------|-----------|
|
||||||
|
|[`CTL_T(kc)`](quantum_keycodes.md#mod-tap-keys)|[`LCTL_T(kc)`](quantum_keycodes.md#mod-tap-keys)|`LCTL` when held, `kc` when tapped|
|
||||||
|
|[`RCTL_T(kc)`](quantum_keycodes.md#mod-tap-keys)||[`RCTL` when held, `kc` when tapped|
|
||||||
|
|[`SFT_T(kc)`](quantum_keycodes.md#mod-tap-keys)|[`LSFT_T(kc)`](quantum_keycodes.md#mod-tap-keys)|`LSFT` when held, `kc` when tapped|
|
||||||
|
|[`RSFT_T(kc)`](quantum_keycodes.md#mod-tap-keys)||[`RSFT` when held, `kc` when tapped|
|
||||||
|
|[`ALT_T(kc)`](quantum_keycodes.md#mod-tap-keys)|[`LALT_T(kc)`](quantum_keycodes.md#mod-tap-keys)|`LALT` when held, `kc` when tapped|
|
||||||
|
|[`RALT_T(kc)`](quantum_keycodes.md#mod-tap-keys)|[`ALGR_T(kc)`](quantum_keycodes.md#mod-tap-keys)|`RALT` when held, `kc` when tapped|
|
||||||
|
|[`GUI_T(kc)`](quantum_keycodes.md#mod-tap-keys)|[`LGUI_T(kc)`](quantum_keycodes.md#mod-tap-keys)|`LGUI` when held, `kc` when tapped|
|
||||||
|
|[`RGUI_T(kc)`](quantum_keycodes.md#mod-tap-keys)||`RGUI` when held, `kc` when tapped|
|
||||||
|
|[`C_S_T(kc)`](quantum_keycodes.md#mod-tap-keys)||`LCTL` + `LSFT` when held, `kc` when tapped|
|
||||||
|
|[`MEH_T(kc)`](quantum_keycodes.md#mod-tap-keys)||`LCTL` + `LSFT` + `LALT` when held, `kc` when tapped|
|
||||||
|
|[`LCAG_T(kc)`](quantum_keycodes.md#mod-tap-keys)||`LCTL` + `LALT` + `LGUI` when held, `kc` when tapped|
|
||||||
|
|[`RCAG_T(kc)`](quantum_keycodes.md#mod-tap-keys)||`RCTL` + `RALT` + `RGUI` when held, `kc` when tapped|
|
||||||
|
|[`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/)|
|
||||||
|
|[`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|
|
||||||
|
|[`LCA_T(kc)`](quantum_keycodes.md#mod-tap-keys)||`LCTL` + `LALT` when held, `kc` when tapped|
|
||||||
|
|Short Name|Long Name|Description|
|
||||||
|
|----------|---------|-----------|
|
||||||
|
|[`KC_TILD`](keycodes_us_ansi_shifted.md)|`KC_TILDE`|tilde `~`|
|
||||||
|
|[`KC_EXLM`](keycodes_us_ansi_shifted.md)|`KC_EXCLAIM`|exclamation mark `!`|
|
||||||
|
|[`KC_AT`](keycodes_us_ansi_shifted.md)||at sign `@`|
|
||||||
|
|[`KC_HASH`](keycodes_us_ansi_shifted.md)||hash sign `#`|
|
||||||
|
|[`KC_DLR`](keycodes_us_ansi_shifted.md)|`KC_DOLLAR`|dollar sign `$`|
|
||||||
|
|[`KC_PERC`](keycodes_us_ansi_shifted.md)|`KC_PERCENT`|percent sign `%`|
|
||||||
|
|[`KC_CIRC`](keycodes_us_ansi_shifted.md)|`KC_CIRCUMFLEX`|circumflex `^`|
|
||||||
|
|[`KC_AMPR`](keycodes_us_ansi_shifted.md)|`KC_AMPERSAND`|ampersand `&`|
|
||||||
|
|[`KC_ASTR`](keycodes_us_ansi_shifted.md)|`KC_ASTERISK`|asterisk `*`|
|
||||||
|
|[`KC_LPRN`](keycodes_us_ansi_shifted.md)|`KC_LEFT_PAREN`|left parenthesis `(`|
|
||||||
|
|[`KC_RPRN`](keycodes_us_ansi_shifted.md)|`KC_RIGHT_PAREN`|right parenthesis `)`|
|
||||||
|
|[`KC_UNDS`](keycodes_us_ansi_shifted.md)|`KC_UNDERSCORE`|underscore `_`|
|
||||||
|
|[`KC_PLUS`](keycodes_us_ansi_shifted.md)||plus sign `+`|
|
||||||
|
|[`KC_LCBR`](keycodes_us_ansi_shifted.md)|`KC_LEFT_CURLY_BRACE`|left curly brace `{`|
|
||||||
|
|[`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 `<`|
|
||||||
|
|[`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 `:`|
|
||||||
|
|[`KC_PIPE`](keycodes_us_ansi_shifted.md)||pipe `\|`|
|
||||||
|
|[`KC_QUES`](keycodes_us_ansi_shifted.md)|`KC_QUESTION`|question mark `?`|
|
||||||
|
|[`KC_DQT`/`KC_DQUO`](keycodes_us_ansi_shifted.md)|`KC_DOUBLE_QUOTE`|double quote `"`|
|
||||||
|
|Long Name|Short Name|Description|
|
||||||
|
|---------|----------|-----------|
|
||||||
|
|[`LT(layer, kc)`](feature_common_shortcuts.md#switching-and-toggling-layers)||turn on layer (0-15) when held, kc ([basic keycodes](basic_keycodes.md)) when tapped|
|
||||||
|
|[`TO(layer)`](feature_common_shortcuts.md#switching-and-toggling-layers)||turn on layer when depressed|
|
||||||
|
|[`MO(layer)`](feature_common_shortcuts.md#switching-and-toggling-layers)||momentarily turn on layer when depressed (requires `KC_TRNS` on destination layer)|
|
||||||
|
|[`DF(layer)`](feature_common_shortcuts.md#switching-and-toggling-layers)||sets the base (default) layer|
|
||||||
|
|[`TG(layer)`](feature_common_shortcuts.md#switching-and-toggling-layers)||toggle layer on/off|
|
||||||
|
|[`TT(layer)](feature_common_shortcuts.md#switching-and-toggling-layers)`||tap toggle? idk FIXME`|
|
||||||
|
|[`OSM(mod)`](quantum_keycodes.md#one-shot-keys)||hold mod for one keypress|
|
||||||
|
|[`OSL(layer)`](quantum_keycodes.md#one-shot-keys)||switch to layer for one keypress|
|
||||||
|
|Long Name|Short Name|Description|
|
||||||
|
|---------|----------|-----------|
|
||||||
|
|[`UNICODE(n)`](unicode.md)|[`UC(n)`](unicode.md)|if `UNICODE_ENABLE`, this will send characters up to `0x7FFF`|
|
||||||
|
|[`X(n)`](unicode.md)||if `UNICODEMAP_ENABLE`, also sends unicode via a different method|
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
# US ANSI Shifted symbols
|
||||||
|
|
||||||
|
These keycodes correspond to characters that are "shifted" on a standard US ANSI keyboards. They do not have dedicated keycodes but are instead typed by holding down shift and then sending a keycode.
|
||||||
|
|
||||||
|
It's important to remember that all of these keycodes send a left shift - this may cause unintended actions if unaccounted for. The short code is preferred in most situations.
|
||||||
|
|
||||||
|
## US ANSI Shifted Keycodes
|
||||||
|
|
||||||
|
|Short Name|Long Name|Description|
|
||||||
|
|----------|---------|-----------|
|
||||||
|
|`KC_TILD`|`KC_TILDE`|tilde `~`|
|
||||||
|
|`KC_EXLM`|`KC_EXCLAIM`|exclamation mark `!`|
|
||||||
|
|`KC_AT`||at sign `@`|
|
||||||
|
|`KC_HASH`||hash sign `#`|
|
||||||
|
|`KC_DLR`|`KC_DOLLAR`|dollar sign `$`|
|
||||||
|
|`KC_PERC`|`KC_PERCENT`|percent sign `%`|
|
||||||
|
|`KC_CIRC`|`KC_CIRCUMFLEX`|circumflex `^`|
|
||||||
|
|`KC_AMPR`|`KC_AMPERSAND`|ampersand `&`|
|
||||||
|
|`KC_ASTR`|`KC_ASTERISK`|asterisk `*`|
|
||||||
|
|`KC_LPRN`|`KC_LEFT_PAREN`|left parenthesis `(`|
|
||||||
|
|`KC_RPRN`|`KC_RIGHT_PAREN`|right parenthesis `)`|
|
||||||
|
|`KC_UNDS`|`KC_UNDERSCORE`|underscore `_`|
|
||||||
|
|`KC_PLUS`||plus sign `+`|
|
||||||
|
|`KC_LCBR`|`KC_LEFT_CURLY_BRACE`|left curly brace `{`|
|
||||||
|
|`KC_RCBR`|`KC_RIGHT_CURLY_BRACE`|right curly brace `}`|
|
||||||
|
|`KC_LT`/`KC_LABK`|`KC_LEFT_ANGLE_BRACKET`|left angle bracket `<`|
|
||||||
|
|`KC_GT`/`KC_RABK`|`KC_RIGHT_ANGLE_BRACKET`|right angle bracket `>`|
|
||||||
|
|`KC_COLN`|`KC_COLON`|colon `:`|
|
||||||
|
|`KC_PIPE`||pipe `\|`|
|
||||||
|
|`KC_QUES`|`KC_QUESTION`|question mark `?`|
|
||||||
|
|`KC_DQT`/`KC_DQUO`|`KC_DOUBLE_QUOTE`|double quote `"`|
|
|
@ -1,8 +1,10 @@
|
||||||
# Quantum Keycodes
|
# Quantum Keycodes
|
||||||
|
|
||||||
|
Quantum keycodes allow for easier customisation of your keymap than the basic ones provide, without having to define custom actions.
|
||||||
|
|
||||||
All keycodes within quantum are numbers between `0x0000` and `0xFFFF`. Within your `keymap.c` it may look like you have functions and other special cases, but ultimately the C preprocessor will translate those into a single 4 byte integer. QMK has reserved `0x0000` through `0x00FF` for standard keycodes. These are keycodes such as `KC_A`, `KC_1`, and `KC_LCTL`, which are basic keys defined in the USB HID specification.
|
All keycodes within quantum are numbers between `0x0000` and `0xFFFF`. Within your `keymap.c` it may look like you have functions and other special cases, but ultimately the C preprocessor will translate those into a single 4 byte integer. QMK has reserved `0x0000` through `0x00FF` for standard keycodes. These are keycodes such as `KC_A`, `KC_1`, and `KC_LCTL`, which are basic keys defined in the USB HID specification.
|
||||||
|
|
||||||
On this page we have documented keycodes between `0x00FF` and `0xFFFF` which are used to implement advanced quantum features. If you define your own custom keycodes they will be put into this range as well. Keycodes above `0x00FF` may not be used with any of the mod/layer-tap keys listed
|
On this page we have documented keycodes between `0x00FF` and `0xFFFF` which are used to implement advanced quantum features. If you define your own custom keycodes they will be put into this range as well.
|
||||||
|
|
||||||
## QMK keycodes
|
## QMK keycodes
|
||||||
|
|
||||||
|
@ -14,341 +16,7 @@ On this page we have documented keycodes between `0x00FF` and `0xFFFF` which are
|
||||||
|`KC_LSPO`|Left shift when held, open paranthesis when tapped|
|
|`KC_LSPO`|Left shift when held, open paranthesis when tapped|
|
||||||
|`KC_RSPC`|Right shift when held, close paranthesis when tapped|
|
|`KC_RSPC`|Right shift when held, close paranthesis when tapped|
|
||||||
|`KC_LEAD`|The [leader key](leader_key.md)|
|
|`KC_LEAD`|The [leader key](leader_key.md)|
|
||||||
|
|`KC_LOCK`|The [lock key](key_lock.md)|
|
||||||
|`FUNC(n)`/`F(n)`|Call `fn_action(n)`|
|
|`FUNC(n)`/`F(n)`|Call `fn_action(n)`|
|
||||||
|`M(n)`|to call macro n|
|
|`M(n)`|to call macro n|
|
||||||
|`MACROTAP(n)`|to macro-tap n idk FIXME|
|
|`MACROTAP(n)`|to macro-tap n idk FIXME|
|
||||||
|`KC_LOCK`|The [lock key](key_lock.md)|
|
|
||||||
|
|
||||||
## Bootmagic Keycodes
|
|
||||||
|
|
||||||
Shortcuts for bootmagic options (these work even when bootmagic is off.)
|
|
||||||
|
|
||||||
|Name|Description|
|
|
||||||
|----|-----------|
|
|
||||||
|`MAGIC_SWAP_CONTROL_CAPSLOCK`|Swap Capslock and Left Control|
|
|
||||||
|`MAGIC_CAPSLOCK_TO_CONTROL`|Treat Capslock like a Control Key|
|
|
||||||
|`MAGIC_SWAP_LALT_LGUI`|Swap the left Alt and GUI keys|
|
|
||||||
|`MAGIC_SWAP_RALT_RGUI`|Swap the right Alt and GUI keys|
|
|
||||||
|`MAGIC_NO_GUI`|Disable the GUI key|
|
|
||||||
|`MAGIC_SWAP_GRAVE_ESC`|Swap the Grave and Esc key.|
|
|
||||||
|`MAGIC_SWAP_BACKSLASH_BACKSPACE`|Swap backslack and backspace|
|
|
||||||
|`MAGIC_HOST_NKRO`|Force NKRO on|
|
|
||||||
|`MAGIC_SWAP_ALT_GUI`/`AG_SWAP`|Swap Alt and Gui on both sides|
|
|
||||||
|`MAGIC_UNSWAP_CONTROL_CAPSLOCK`|Disable the Control/Capslock swap|
|
|
||||||
|`MAGIC_UNCAPSLOCK_TO_CONTROL`|Disable treating Capslock like Control |
|
|
||||||
|`MAGIC_UNSWAP_LALT_LGUI`|Disable Left Alt and GUI switching|
|
|
||||||
|`MAGIC_UNSWAP_RALT_RGUI`|Disable Right Alt and GUI switching|
|
|
||||||
|`MAGIC_UNNO_GUI`|Enable the GUI key |
|
|
||||||
|`MAGIC_UNSWAP_GRAVE_ESC`|Disable the Grave/Esc swap |
|
|
||||||
|`MAGIC_UNSWAP_BACKSLASH_BACKSPACE`|Disable the backslash/backspace swap|
|
|
||||||
|`MAGIC_UNHOST_NKRO`|Force NKRO off|
|
|
||||||
|`MAGIC_UNSWAP_ALT_GUI`/`AG_NORM`|Disable the Alt/GUI switching|
|
|
||||||
|`MAGIC_TOGGLE_NKRO`|Turn NKRO on or off|
|
|
||||||
|
|
||||||
<!-- FIXME: this formatting needs work
|
|
||||||
|
|
||||||
## Audio
|
|
||||||
|
|
||||||
```c
|
|
||||||
#ifdef AUDIO_ENABLE
|
|
||||||
AU_ON,
|
|
||||||
AU_OFF,
|
|
||||||
AU_TOG,
|
|
||||||
|
|
||||||
#ifdef FAUXCLICKY_ENABLE
|
|
||||||
FC_ON,
|
|
||||||
FC_OFF,
|
|
||||||
FC_TOG,
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Music mode on/off/toggle
|
|
||||||
MU_ON,
|
|
||||||
MU_OFF,
|
|
||||||
MU_TOG,
|
|
||||||
|
|
||||||
// Music voice iterate
|
|
||||||
MUV_IN,
|
|
||||||
MUV_DE,
|
|
||||||
#endif
|
|
||||||
```
|
|
||||||
|
|
||||||
### Midi
|
|
||||||
|
|
||||||
#if !MIDI_ENABLE_STRICT || (defined(MIDI_ENABLE) && defined(MIDI_BASIC))
|
|
||||||
MI_ON, // send midi notes when music mode is enabled
|
|
||||||
MI_OFF, // don't send midi notes when music mode is enabled
|
|
||||||
#endif
|
|
||||||
|
|
||||||
MIDI_TONE_MIN,
|
|
||||||
MIDI_TONE_MAX
|
|
||||||
|
|
||||||
MI_C = MIDI_TONE_MIN,
|
|
||||||
MI_Cs,
|
|
||||||
MI_Db = MI_Cs,
|
|
||||||
MI_D,
|
|
||||||
MI_Ds,
|
|
||||||
MI_Eb = MI_Ds,
|
|
||||||
MI_E,
|
|
||||||
MI_F,
|
|
||||||
MI_Fs,
|
|
||||||
MI_Gb = MI_Fs,
|
|
||||||
MI_G,
|
|
||||||
MI_Gs,
|
|
||||||
MI_Ab = MI_Gs,
|
|
||||||
MI_A,
|
|
||||||
MI_As,
|
|
||||||
MI_Bb = MI_As,
|
|
||||||
MI_B,
|
|
||||||
|
|
||||||
MIDI_TONE_KEYCODE_OCTAVES > 1
|
|
||||||
|
|
||||||
where x = 1-5:
|
|
||||||
MI_C_x,
|
|
||||||
MI_Cs_x,
|
|
||||||
MI_Db_x = MI_Cs_x,
|
|
||||||
MI_D_x,
|
|
||||||
MI_Ds_x,
|
|
||||||
MI_Eb_x = MI_Ds_x,
|
|
||||||
MI_E_x,
|
|
||||||
MI_F_x,
|
|
||||||
MI_Fs_x,
|
|
||||||
MI_Gb_x = MI_Fs_x,
|
|
||||||
MI_G_x,
|
|
||||||
MI_Gs_x,
|
|
||||||
MI_Ab_x = MI_Gs_x,
|
|
||||||
MI_A_x,
|
|
||||||
MI_As_x,
|
|
||||||
MI_Bb_x = MI_As_x,
|
|
||||||
MI_B_x,
|
|
||||||
|
|
||||||
MI_OCT_Nx 1-2
|
|
||||||
MI_OCT_x 0-7
|
|
||||||
MIDI_OCTAVE_MIN = MI_OCT_N2,
|
|
||||||
MIDI_OCTAVE_MAX = MI_OCT_7,
|
|
||||||
MI_OCTD, // octave down
|
|
||||||
MI_OCTU, // octave up
|
|
||||||
|
|
||||||
MI_TRNS_Nx 1-6
|
|
||||||
MI_TRNS_x 0-6
|
|
||||||
MIDI_TRANSPOSE_MIN = MI_TRNS_N6,
|
|
||||||
MIDI_TRANSPOSE_MAX = MI_TRNS_6,
|
|
||||||
MI_TRNSD, // transpose down
|
|
||||||
MI_TRNSU, // transpose up
|
|
||||||
|
|
||||||
MI_VEL_x 1-10
|
|
||||||
MIDI_VELOCITY_MIN = MI_VEL_1,
|
|
||||||
MIDI_VELOCITY_MAX = MI_VEL_9,
|
|
||||||
MI_VELD, // velocity down
|
|
||||||
MI_VELU, // velocity up
|
|
||||||
|
|
||||||
MI_CHx 1-16
|
|
||||||
MIDI_CHANNEL_MIN = MI_CH1
|
|
||||||
MIDI_CHANNEL_MAX = MI_CH16,
|
|
||||||
MI_CHD, // previous channel
|
|
||||||
MI_CHU, // next channel
|
|
||||||
|
|
||||||
MI_ALLOFF, // all notes off
|
|
||||||
|
|
||||||
MI_SUS, // sustain
|
|
||||||
MI_PORT, // portamento
|
|
||||||
MI_SOST, // sostenuto
|
|
||||||
MI_SOFT, // soft pedal
|
|
||||||
MI_LEG, // legato
|
|
||||||
|
|
||||||
MI_MOD, // modulation
|
|
||||||
MI_MODSD, // decrease modulation speed
|
|
||||||
MI_MODSU, // increase modulation speed
|
|
||||||
#endif // MIDI_ADVANCED
|
|
||||||
|
|
||||||
-->
|
|
||||||
|
|
||||||
## Backlight
|
|
||||||
|
|
||||||
These keycodes control the backlight. Most keyboards use this for single color in-switch lighting.
|
|
||||||
|
|
||||||
|Name|Description|
|
|
||||||
|----|-----------|
|
|
||||||
|`BL_x`|Set a specific backlight level between 0-9|
|
|
||||||
|`BL_ON`|An alias for `BL_9`|
|
|
||||||
|`BL_OFF`|An alias for `BL_0`|
|
|
||||||
|`BL_DEC`|Turn the backlight level down by 1|
|
|
||||||
|`BL_INC`|Turn the backlight level up by 1|
|
|
||||||
|`BL_TOGG`|Toggle the backlight on or off|
|
|
||||||
|`BL_STEP`|Step through backlight levels, wrapping around to 0 when you reach the top.|
|
|
||||||
|
|
||||||
## RGBLIGHT WS2818 LEDs
|
|
||||||
|
|
||||||
This controls the `RGBLIGHT` functionality. Most keyboards use WS2812 (and compatible) LEDs for underlight or case lighting.
|
|
||||||
|
|
||||||
|Name|Description|
|
|
||||||
|----|-----------|
|
|
||||||
|`RGB_TOG`|toggle on/off|
|
|
||||||
|`RGB_MOD`|cycle through modes|
|
|
||||||
|`RGB_HUI`|hue increase|
|
|
||||||
|`RGB_HUD`|hue decrease|
|
|
||||||
|`RGB_SAI`|saturation increase|
|
|
||||||
|`RGB_SAD`|saturation decrease|
|
|
||||||
|`RGB_VAI`|value increase|
|
|
||||||
|`RGB_VAD`|value decrease|
|
|
||||||
|
|
||||||
## Thermal Printer (experimental)
|
|
||||||
|
|
||||||
|Name|Description|
|
|
||||||
|----|-----------|
|
|
||||||
|`PRINT_ON`|Start printing everything the user types|
|
|
||||||
|`PRINT_OFF`|Stop printing everything the user types|
|
|
||||||
|
|
||||||
## Keyboard output selection
|
|
||||||
|
|
||||||
This is used when multiple keyboard outputs can be selected. Currently this only allows for switching between USB and Bluetooth on keyboards that support both.
|
|
||||||
|
|
||||||
|Name|Description|
|
|
||||||
|----|-----------|
|
|
||||||
|`OUT_AUTO`|auto mode|
|
|
||||||
|`OUT_USB`|usb only|
|
|
||||||
|`OUT_BT`|bluetooth (when `BLUETOOTH_ENABLE`)|
|
|
||||||
|
|
||||||
## Modifiers
|
|
||||||
|
|
||||||
These are special keycodes that simulate pressing several modifiers at once.
|
|
||||||
|
|
||||||
|Name|Description|
|
|
||||||
|----|-----------|
|
|
||||||
|`KC_HYPR`|Hold down LCTL + LSFT + LALT + LGUI|
|
|
||||||
|`KC_MEH`|Hold down LCTL + LSFT + LALT|
|
|
||||||
|
|
||||||
/* FIXME: Should we have these in QMK too?
|
|
||||||
* |`KC_LCAG`|`LCTL` + `LALT` + `LGUI`|
|
|
||||||
* |`KC_ALTG`|`RCTL` + `RALT`|
|
|
||||||
* |`KC_SCMD`/`KC_SWIN`|`LGUI` + `LSFT`|
|
|
||||||
* |`KC_LCA`|`LCTL` + `LALT`|
|
|
||||||
*/
|
|
||||||
|
|
||||||
### Modifiers with keys
|
|
||||||
|
|
||||||
|Name|Description|
|
|
||||||
|----|-----------|
|
|
||||||
|`LCTL(kc)`|`LCTL` + `kc`|
|
|
||||||
|`LSFT(kc)`/`S(kc)`|`LSFT` + `kc`|
|
|
||||||
|`LALT(kc)`|`LALT` + `kc`|
|
|
||||||
|`LGUI(kc)`|`LGUI` + `kc`|
|
|
||||||
|`RCTL(kc)`|`RCTL` + `kc`|
|
|
||||||
|`RSFT(kc)`|`RSFT` + `kc`|
|
|
||||||
|`RALT(kc)`|`RALT` + `kc`|
|
|
||||||
|`RGUI(kc)`|`RGUI` + `kc`|
|
|
||||||
|`HYPR(kc)`|`LCTL` + `LSFT` + `LALT` + `LGUI` + `kc`|
|
|
||||||
|`MEH(kc)`|`LCTL` + `LSFT` + `LALT` + `kc`|
|
|
||||||
|`LCAG(kc)`|`LCTL` + `LALT` + `LGUI` + `kc`|
|
|
||||||
|`ALTG(kc)`|`RCTL` + `RALT` + `kc`|
|
|
||||||
|`SCMD(kc)`/`SWIN(kc)`|`LGUI` + `LSFT` + `kc`|
|
|
||||||
|`LCA(kc)`|`LCTL` + `LALT` + `kc`|
|
|
||||||
|
|
||||||
### One Shot Keys
|
|
||||||
|
|
||||||
Most modifiers work by being held down while you push another key. You can use `OSM()` to setup a "One Shot" modifier. When you tap a one shot mod it will remain is a pressed state until you press another key.
|
|
||||||
|
|
||||||
To specify a your modifier you need to pass the `MOD` form of the key. For example, if you want to setup a One Shot Control you would use `OSM(MOD_LCTL)`.
|
|
||||||
|
|
||||||
|Name|Description|
|
|
||||||
|----|-----------|
|
|
||||||
|`OSM(mod)`|use mod for one keypress|
|
|
||||||
|`OSL(layer)`|switch to layer for one keypress|
|
|
||||||
|
|
||||||
### Mod-tap keys
|
|
||||||
|
|
||||||
These keycodes will press the mod(s) when held, and the key when tapped. They only work with [basic keycodes](basic_keycodes.md).
|
|
||||||
|
|
||||||
|Name|Description|
|
|
||||||
|----|-----------|
|
|
||||||
|`CTL_T(kc)`/`LCTL_T(kc)`|`LCTL` when held, `kc` when tapped|
|
|
||||||
|`RCTL_T(kc)`|`RCTL` when held, `kc` when tapped|
|
|
||||||
|`SFT_T(kc)`/`LSFT_T(kc)`|`LSFT` when held, `kc` when tapped|
|
|
||||||
|`RSFT_T(kc)`|`RSFT` when held, `kc` when tapped|
|
|
||||||
|`ALT_T(kc)`/`LALT_T(kc)`|`LALT` when held, `kc` when tapped|
|
|
||||||
|`RALT_T(kc)`/`ALGR_T(kc)`|`RALT` when held, `kc` when tapped|
|
|
||||||
|`GUI_T(kc)`/`LGUI_T(kc)`|`LGUI` when held, `kc` when tapped|
|
|
||||||
|`RGUI_T(kc)`|`RGUI` when held, `kc` when tapped|
|
|
||||||
|`C_S_T(kc)`|`LCTL` + `LSFT` when held, `kc` when tapped|
|
|
||||||
|`MEH_T(kc)`|`LCTL` + `LSFT` + `LALT` when held, `kc` when tapped|
|
|
||||||
|`LCAG_T(kc)`|`LCTL` + `LALT` + `LGUI` when held, `kc` when tapped|
|
|
||||||
|`RCAG_T(kc)`|`RCTL` + `RALT` + `RGUI` when held, `kc` when tapped|
|
|
||||||
|`ALL_T(kc)`|`LCTL` + `LSFT` + `LALT` + `LGUI` when held, `kc` when tapped [more info](http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/)|
|
|
||||||
|`SCMD_T(kc)`/`SWIN_T(kc)`|`LGUI` + `LSFT` when held, `kc` when tapped|
|
|
||||||
|`LCA_T(kc)`|`LCTL` + `LALT` when held, `kc` when tapped|
|
|
||||||
|
|
||||||
## US ANSI Shifted symbols
|
|
||||||
|
|
||||||
These keycodes correspond to characters that are "shifted" on a standard US ANSI keyboards. They do not have dedicated keycodes but are instead typed by holding down shift and then sending a keycode.
|
|
||||||
|
|
||||||
It's important to remember that all of these keycodes send a left shift - this may cause unintended actions if unaccounted for. The short code is preferred in most situations.
|
|
||||||
|
|
||||||
|Short Name|Long Name|Description|
|
|
||||||
|----------|---------|-----------|
|
|
||||||
|`KC_TILD`|`KC_TILDE`|tilde `~`|
|
|
||||||
|`KC_EXLM`|`KC_EXCLAIM`|exclamation mark `!`|
|
|
||||||
|`KC_AT`||at sign `@`|
|
|
||||||
|`KC_HASH`||hash sign `#`|
|
|
||||||
|`KC_DLR`|`KC_DOLLAR`|dollar sign `$`|
|
|
||||||
|`KC_PERC`|`KC_PERCENT`|percent sign `%`|
|
|
||||||
|`KC_CIRC`|`KC_CIRCUMFLEX`|circumflex `^`|
|
|
||||||
|`KC_AMPR`|`KC_AMPERSAND`|ampersand `&`|
|
|
||||||
|`KC_ASTR`|`KC_ASTERISK`|asterisk `*`|
|
|
||||||
|`KC_LPRN`|`KC_LEFT_PAREN`|left parenthesis `(`|
|
|
||||||
|`KC_RPRN`|`KC_RIGHT_PAREN`|right parenthesis `)`|
|
|
||||||
|`KC_UNDS`|`KC_UNDERSCORE`|underscore `_`|
|
|
||||||
|`KC_PLUS`||plus sign `+`|
|
|
||||||
|`KC_LCBR`|`KC_LEFT_CURLY_BRACE`|left curly brace `{`|
|
|
||||||
|`KC_RCBR`|`KC_RIGHT_CURLY_BRACE`|right curly brace `}`|
|
|
||||||
|`KC_LT`/`KC_LABK`|`KC_LEFT_ANGLE_BRACKET`|left angle bracket `<`|
|
|
||||||
|`KC_GT`/`KC_RABK`|`KC_RIGHT_ANGLE_BRACKET`|right angle bracket `>`|
|
|
||||||
|`KC_COLN`|`KC_COLON`|colon `:`|
|
|
||||||
|`KC_PIPE`||pipe `\|`|
|
|
||||||
|`KC_QUES`|`KC_QUESTION`|question mark `?`|
|
|
||||||
|`KC_DQT`/`KC_DQUO`|`KC_DOUBLE_QUOTE`|double quote `"`|
|
|
||||||
|
|
||||||
## Layer Changes
|
|
||||||
|
|
||||||
These are keycodes that can be used to change the current layer.
|
|
||||||
|
|
||||||
|Name|Description|
|
|
||||||
|----|-----------|
|
|
||||||
|`LT(layer, kc)`|turn on layer (0-15) when held, kc ([basic keycodes](basic_keycodes.md)) when tapped|
|
|
||||||
|`TO(layer)`|turn on layer when depressed|
|
|
||||||
|`MO(layer)`|momentarily turn on layer when depressed (requires `KC_TRNS` on destination layer)|
|
|
||||||
|`DF(layer)`|sets the base (default) layer|
|
|
||||||
|`TG(layer)`|toggle layer on/off|
|
|
||||||
|`TT(layer)`|tap toggle? idk FIXME|
|
|
||||||
|`OSL(layer)`|switch to layer for one keycode|
|
|
||||||
|
|
||||||
## Unicode
|
|
||||||
|
|
||||||
These keycodes can be used in conjuction with the [Unicode](unicode_and_additional_language_support.md) support.
|
|
||||||
|
|
||||||
|`UNICODE(n)`/`UC(n)`|if `UNICODE_ENABLE`, this will send characters up to `0x7FFF`|
|
|
||||||
|`X(n)`|if `UNICODEMAP_ENABLE`, also sends unicode via a different method|
|
|
||||||
|
|
||||||
# `SAFE_RANGE`, or safely defining custom keycodes
|
|
||||||
|
|
||||||
Sometimes you want to define your own custom keycodes to make your keymap easier to read. QMK provides `SAFE_RANGE` to help you do that. `SAFE_RANGE` is the first available keycode in the `0x0000`-`0xFFFF` range and you can use it when creating your own custom keycode enum:
|
|
||||||
|
|
||||||
```
|
|
||||||
enum my_keycodes {
|
|
||||||
FOO = SAFE_RANGE,
|
|
||||||
BAR
|
|
||||||
};
|
|
||||||
```
|
|
||||||
|
|
||||||
You can then use `process_record_user()` to do something with your keycode:
|
|
||||||
|
|
||||||
```
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
switch (keycode) {
|
|
||||||
case FOO:
|
|
||||||
// Do something here
|
|
||||||
break;
|
|
||||||
case BAR:
|
|
||||||
// Do something here
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
Loading…
Reference in New Issue