diff options
Diffstat (limited to 'docs/keycodes.md')
-rw-r--r-- | docs/keycodes.md | 584 |
1 files changed, 322 insertions, 262 deletions
diff --git a/docs/keycodes.md b/docs/keycodes.md index b172e13306..8613512221 100644 --- a/docs/keycodes.md +++ b/docs/keycodes.md @@ -207,6 +207,8 @@ See also: [Basic Keycodes](keycodes_basic.md) |`KC_MEDIA_REWIND` |`KC_MRWD` |Previous Track |✔<sup>6</sup>|✔<sup>5</sup>|✔ | |`KC_BRIGHTNESS_UP` |`KC_BRIU` |Brightness Up |✔ |✔ |✔ | |`KC_BRIGHTNESS_DOWN` |`KC_BRID` |Brightness Down |✔ |✔ |✔ | +|`KC_CONTROL_PANEL` |`KC_CPNL` |Open Control Panel |✔ | | | +|`KC_ASSISTANT` |`KC_ASST` |Launch Context-Aware Assistant |✔ | | | <sup>1. The Linux kernel HID driver recognizes [nearly all keycodes](https://github.com/torvalds/linux/blob/master/drivers/hid/hid-input.c), but the default bindings depend on the DE/WM.</sup><br/> <sup>2. Treated as F13-F15.</sup><br/> @@ -231,63 +233,90 @@ See also: [Quantum Keycodes](quantum_keycodes.md#qmk-keycodes) See also: [Audio](feature_audio.md) -|Key |Aliases |Description | -|----------------|---------|----------------------------------| -|`AU_ON` | |Turns on Audio Feature | -|`AU_OFF` | |Turns off Audio Feature | -|`AU_TOG` | |Toggles Audio state | -|`CLICKY_TOGGLE` |`CK_TOGG`|Toggles Audio clicky mode | -|`CLICKY_UP` |`CK_UP` |Increases frequency of the clicks | -|`CLICKY_DOWN` |`CK_DOWN`|Decreases frequency of the clicks | -|`CLICKY_RESET` |`CK_RST` |Resets frequency to default | -|`MU_ON` | |Turns on Music Mode | -|`MU_OFF` | |Turns off Music Mode | -|`MU_TOG` | |Toggles Music Mode | -|`MU_MOD` | |Cycles through the music modes | +|Key |Aliases |Description | +|-------------------------|---------|-------------------------------------------| +|`QK_AUDIO_ON` |`AU_ON` |Turns on Audio Feature | +|`QK_AUDIO_OFF` |`AU_OFF` |Turns off Audio Feature | +|`QK_AUDIO_TOGGLE` |`AU_TOGG`|Toggles Audio state | +|`QK_AUDIO_CLICKY_TOGGLE` |`CK_TOGG`|Toggles Audio clicky mode | +|`QK_AUDIO_CLICKY_ON` |`CK_ON` |Turns on Audio clicky mode | +|`QK_AUDIO_CLICKY_OFF` |`CK_OFF` |Turns on Audio clicky mode | +|`QK_AUDIO_CLICKY_UP` |`CK_UP` |Increases frequency of the clicks | +|`QK_AUDIO_CLICKY_DOWN` |`CK_DOWN`|Decreases frequency of the clicks | +|`QK_AUDIO_CLICKY_RESET` |`CK_RST` |Resets frequency to default | +|`QK_MUSIC_ON` |`MU_ON` |Turns on Music Mode | +|`QK_MUSIC_OFF` |`MU_OFF` |Turns off Music Mode | +|`QK_MUSIC_TOGGLE` |`MU_TOGG`|Toggles Music Mode | +|`QK_MUSIC_MODE_NEXT` |`MU_NEXT`|Cycles through the music modes | +|`QK_AUDIO_VOICE_NEXT` |`AU_NEXT`|Cycles through the audio voices | +|`QK_AUDIO_VOICE_PREVIOUS`|`AU_PREV`|Cycles through the audio voices in reverse | + +## Auto Shift :id=auto-shift + +See also: [Auto Shift](feature_auto_shift.md) + +|Key |Aliases |Description | +|----------------------|---------|--------------------------------------------| +|`QK_AUTO_SHIFT_DOWN` |`AS_DOWN`|Lower the Auto Shift timeout variable (down)| +|`QK_AUTO_SHIFT_UP` |`AS_UP` |Raise the Auto Shift timeout variable (up) | +|`QK_AUTO_SHIFT_REPORT`|`AS_RPT` |Report your current Auto Shift timeout value| +|`QK_AUTO_SHIFT_ON` |`AS_ON` |Turns on the Auto Shift Function | +|`QK_AUTO_SHIFT_OFF` |`AS_OFF` |Turns off the Auto Shift Function | +|`QK_AUTO_SHIFT_TOGGLE`|`AS_TOGG`|Toggles the state of the Auto Shift feature | + +## Autocorrect :id=autocorrect + +See also: [Autocorrect](feature_autocorrect.md) + +|Key |Aliases |Description | +|-----------------------|---------|----------------------------------------------| +|`QK_AUTOCORRECT_ON` |`AC_ON` |Turns on the Autocorrect feature. | +|`QK_AUTOCORRECT_OFF` |`AC_OFF` |Turns off the Autocorrect feature. | +|`QK_AUTOCORRECT_TOGGLE`|`AC_TOGG`|Toggles the status of the Autocorrect feature.| ## Backlighting :id=backlighting See also: [Backlighting](feature_backlight.md) -|Key |Description | -|---------|------------------------------------------| -|`BL_TOGG`|Turn the backlight on or off | -|`BL_STEP`|Cycle through backlight levels | -|`BL_ON` |Set the backlight to max brightness | -|`BL_OFF` |Turn the backlight off | -|`BL_INC` |Increase the backlight level | -|`BL_DEC` |Decrease the backlight level | -|`BL_BRTG`|Toggle backlight breathing | +| Key | Aliases | Description | +|---------------------------------|-----------|-------------------------------------| +| `QK_BACKLIGHT_TOGGLE` | `BL_TOGG` | Turn the backlight on or off | +| `QK_BACKLIGHT_STEP` | `BL_STEP` | Cycle through backlight levels | +| `QK_BACKLIGHT_ON` | `BL_ON` | Set the backlight to max brightness | +| `QK_BACKLIGHT_OFF` | `BL_OFF` | Turn the backlight off | +| `QK_BACKLIGHT_UP` | `BL_UP` | Increase the backlight level | +| `QK_BACKLIGHT_DOWN` | `BL_DOWN` | Decrease the backlight level | +| `QK_BACKLIGHT_TOGGLE_BREATHING` | `BL_BRTG` | Toggle backlight breathing | ## Bluetooth :id=bluetooth See also: [Bluetooth](feature_bluetooth.md) -|Key |Description | -|----------|----------------------------------------------| -|`OUT_AUTO`|Automatically switch between USB and Bluetooth| -|`OUT_USB` |USB only | -|`OUT_BT` |Bluetooth only | +|Key |Aliases |Description | +|---------------------|---------|----------------------------------------------| +|`QK_OUTPUT_AUTO` |`OU_AUTO`|Automatically switch between USB and Bluetooth| +|`QK_OUTPUT_USB` |`OU_USB` |USB only | +|`QK_OUTPUT_BLUETOOTH`|`OU_BT` |Bluetooth only | ## Caps Word :id=caps-word See also: [Caps Word](feature_caps_word.md) -|Key |Aliases |Description | -|-----------|---------|------------------------------| -|`CAPS_WORD`|`CAPSWRD`|Toggles Caps Word | +|Key |Aliases |Description | +|---------------------|---------|------------------------------| +|`QK_CAPS_WORD_TOGGLE`|`CW_TOGG`|Toggles Caps Word | ## Dynamic Macros :id=dynamic-macros See also: [Dynamic Macros](feature_dynamic_macros.md) -|Key |Aliases |Description | -|-----------------|---------|--------------------------------------------------| -|`DYN_REC_START1` |`DM_REC1`|Start recording Macro 1 | -|`DYN_REC_START2` |`DM_REC2`|Start recording Macro 2 | -|`DYN_MACRO_PLAY1`|`DM_PLY1`|Replay Macro 1 | -|`DYN_MACRO_PLAY2`|`DM_PLY2`|Replay Macro 2 | -|`DYN_REC_STOP` |`DM_RSTP`|Finish the macro that is currently being recorded.| +|Key |Aliases |Description | +|---------------------------------|---------|--------------------------------------------------| +|`QK_DYNAMIC_MACRO_RECORD_START_1`|`DM_REC1`|Start recording Macro 1 | +|`QK_DYNAMIC_MACRO_RECORD_START_2`|`DM_REC2`|Start recording Macro 2 | +|`QK_DYNAMIC_MACRO_PLAY_1` |`DM_PLY1`|Replay Macro 1 | +|`QK_DYNAMIC_MACRO_PLAY_2` |`DM_PLY2`|Replay Macro 2 | +|`QK_DYNAMIC_MACRO_RECORD_STOP` |`DM_RSTP`|Finish the macro that is currently being recorded.| ## Grave Escape :id=grave-escape @@ -297,13 +326,52 @@ See also: [Grave Escape](feature_grave_esc.md) |-----------------|---------|------------------------------------------------------------------| |`QK_GRAVE_ESCAPE`|`QK_GESC`|Escape when pressed, <code>`</code> when Shift or GUI are held| +## Joystick :id=joystick + +See also: [Joystick](feature_joystick.md) + +|Key |Aliases|Description| +|-----------------------|-------|-----------| +|`QK_JOYSTICK_BUTTON_0` |`JS_0` |Button 0 | +|`QK_JOYSTICK_BUTTON_1` |`JS_1` |Button 1 | +|`QK_JOYSTICK_BUTTON_2` |`JS_2` |Button 2 | +|`QK_JOYSTICK_BUTTON_3` |`JS_3` |Button 3 | +|`QK_JOYSTICK_BUTTON_4` |`JS_4` |Button 4 | +|`QK_JOYSTICK_BUTTON_5` |`JS_5` |Button 5 | +|`QK_JOYSTICK_BUTTON_6` |`JS_6` |Button 6 | +|`QK_JOYSTICK_BUTTON_7` |`JS_7` |Button 7 | +|`QK_JOYSTICK_BUTTON_8` |`JS_8` |Button 8 | +|`QK_JOYSTICK_BUTTON_9` |`JS_9` |Button 9 | +|`QK_JOYSTICK_BUTTON_10`|`JS_10`|Button 10 | +|`QK_JOYSTICK_BUTTON_11`|`JS_11`|Button 11 | +|`QK_JOYSTICK_BUTTON_12`|`JS_12`|Button 12 | +|`QK_JOYSTICK_BUTTON_13`|`JS_13`|Button 13 | +|`QK_JOYSTICK_BUTTON_14`|`JS_14`|Button 14 | +|`QK_JOYSTICK_BUTTON_15`|`JS_15`|Button 15 | +|`QK_JOYSTICK_BUTTON_16`|`JS_16`|Button 16 | +|`QK_JOYSTICK_BUTTON_17`|`JS_17`|Button 17 | +|`QK_JOYSTICK_BUTTON_18`|`JS_18`|Button 18 | +|`QK_JOYSTICK_BUTTON_19`|`JS_19`|Button 19 | +|`QK_JOYSTICK_BUTTON_20`|`JS_20`|Button 20 | +|`QK_JOYSTICK_BUTTON_21`|`JS_21`|Button 21 | +|`QK_JOYSTICK_BUTTON_22`|`JS_22`|Button 22 | +|`QK_JOYSTICK_BUTTON_23`|`JS_23`|Button 23 | +|`QK_JOYSTICK_BUTTON_24`|`JS_24`|Button 24 | +|`QK_JOYSTICK_BUTTON_25`|`JS_25`|Button 25 | +|`QK_JOYSTICK_BUTTON_26`|`JS_26`|Button 26 | +|`QK_JOYSTICK_BUTTON_27`|`JS_27`|Button 27 | +|`QK_JOYSTICK_BUTTON_28`|`JS_28`|Button 28 | +|`QK_JOYSTICK_BUTTON_29`|`JS_29`|Button 29 | +|`QK_JOYSTICK_BUTTON_30`|`JS_30`|Button 30 | +|`QK_JOYSTICK_BUTTON_31`|`JS_31`|Button 31 | + ## Key Lock :id=key-lock See also: [Key Lock](feature_key_lock.md) |Key |Description | |---------|--------------------------------------------------------------| -|`KC_LOCK`|Hold down the next key pressed, until the key is pressed again| +|`QK_LOCK`|Hold down the next key pressed, until the key is pressed again| ## Layer Switching :id=layer-switching @@ -326,7 +394,7 @@ See also: [Leader Key](feature_leader_key.md) |Key |Description | |---------|------------------------| -|`KC_LEAD`|Begins a leader sequence| +|`QK_LEAD`|Begins a leader sequence| ## Magic Keycodes :id=magic-keycodes @@ -363,6 +431,7 @@ See also: [Magic Keycodes](keycodes_magic.md) |`MAGIC_UNSWAP_GRAVE_ESC` |`GE_NORM`|Unswap <code>`</code> and Escape | |`MAGIC_SWAP_BACKSLASH_BACKSPACE` |`BS_SWAP`|Swap `\` and Backspace | |`MAGIC_UNSWAP_BACKSLASH_BACKSPACE`|`BS_NORM`|Unswap `\` and Backspace | +|`MAGIC_TOGGLE_BACKSLASH_BACKSPACE`|`BS_TOGG`|Toggle `\` and Backspace swap state | |`MAGIC_HOST_NKRO` |`NK_ON` |Enable N-key rollover | |`MAGIC_UNHOST_NKRO` |`NK_OFF` |Disable N-key rollover | |`MAGIC_TOGGLE_NKRO` |`NK_TOGG`|Toggle N-key rollover | @@ -373,152 +442,152 @@ See also: [Magic Keycodes](keycodes_magic.md) See also: [MIDI](feature_midi.md) -|Key |Aliases |Description | -|------------|---------|---------------------------------| -|`MI_ON` | |Turn MIDI on | -|`MI_OFF` | |Turn MIDI off | -|`MI_TOG` | |Toggle MIDI enabled | -|`MI_C` | |C octave 0 | -|`MI_Cs` |`MI_Db` |C♯/D♭ octave 0 | -|`MI_D` | |D octave 0 | -|`MI_Ds` |`MI_Eb` |D♯/E♭ octave 0 | -|`MI_E` | |E octave 0 | -|`MI_F` | |F octave 0 | -|`MI_Fs` |`MI_Gb` |F♯/G♭ octave 0 | -|`MI_G` | |G octave 0 | -|`MI_Gs` |`MI_Gs` |G♯/A♭ octave 0 | -|`MI_A` | |A octave 0 | -|`MI_As` |`MI_Bb` |A♯/B♭ octave 0 | -|`MI_B` | |B octave 0 | -|`MI_C_1` | |C octave 1 | -|`MI_Cs_1` |`MI_Db_1`|C♯/D♭ octave 1 | -|`MI_D_1` | |D octave 1 | -|`MI_Ds_1` |`MI_Eb_1`|D♯/E♭ octave 1 | -|`MI_E_1` | |E octave 1 | -|`MI_F_1` | |F octave 1 | -|`MI_Fs_1` |`MI_Gb_1`|F♯/G♭ octave 1 | -|`MI_G_1` | |G octave 1 | -|`MI_Gs_1` |`MI_Ab_1`|G♯/A♭ octave 1 | -|`MI_A_1` | |A octave 1 | -|`MI_As_1` |`MI_Bb_1`|A♯/B♭ octave 1 | -|`MI_B_1` | |B octave 1 | -|`MI_C_2` | |C octave 2 | -|`MI_Cs_2` |`MI_Db_2`|C♯/D♭ octave 2 | -|`MI_D_2` | |D octave 2 | -|`MI_Ds_2` |`MI_Eb_2`|D♯/E♭ octave 2 | -|`MI_E_2` | |E octave 2 | -|`MI_F_2` | |F octave 2 | -|`MI_Fs_2` |`MI_Gb_2`|F♯/G♭ octave 2 | -|`MI_G_2` | |G octave 2 | -|`MI_Gs_2` |`MI_Ab_2`|G♯/A♭ octave 2 | -|`MI_A_2` | |A octave 2 | -|`MI_As_2` |`MI_Bb_2`|A♯/B♭ octave 2 | -|`MI_B_2` | |B octave 2 | -|`MI_C_3` | |C octave 3 | -|`MI_Cs_3` |`MI_Db_3`|C♯/D♭ octave 3 | -|`MI_D_3` | |D octave 3 | -|`MI_Ds_3` |`MI_Eb_3`|D♯/E♭ octave 3 | -|`MI_E_3` | |E octave 3 | -|`MI_F_3` | |F octave 3 | -|`MI_Fs_3` |`MI_Gb_3`|F♯/G♭ octave 3 | -|`MI_G_3` | |G octave 3 | -|`MI_Gs_3` |`MI_Ab_3`|G♯/A♭ octave 3 | -|`MI_A_3` | |A octave 3 | -|`MI_As_3` |`MI_Bb_3`|A♯/B♭ octave 3 | -|`MI_B_3` | |B octave 3 | -|`MI_C_4` | |C octave 4 | -|`MI_Cs_4` |`MI_Db_4`|C♯/D♭ octave 4 | -|`MI_D_4` | |D octave 4 | -|`MI_Ds_4` |`MI_Eb_4`|D♯/E♭ octave 4 | -|`MI_E_4` | |E octave 4 | -|`MI_F_4` | |F octave 4 | -|`MI_Fs_4` |`MI_Gb_4`|F♯/G♭ octave 4 | -|`MI_G_4` | |G octave 4 | -|`MI_Gs_4` |`MI_Ab_4`|G♯/A♭ octave 4 | -|`MI_A_4` | |A octave 4 | -|`MI_As_4` |`MI_Bb_4`|A♯/B♭ octave 4 | -|`MI_B_4` | |B octave 4 | -|`MI_C_5` | |C octave 5 | -|`MI_Cs_5` |`MI_Db_5`|C♯/D♭ octave 5 | -|`MI_D_5` | |D octave 5 | -|`MI_Ds_5` |`MI_Eb_5`|D♯/E♭ octave 5 | -|`MI_E_5` | |E octave 5 | -|`MI_F_5` | |F octave 5 | -|`MI_Fs_5` |`MI_Gb_5`|F♯/G♭ octave 5 | -|`MI_G_5` | |G octave 5 | -|`MI_Gs_5` |`MI_Ab_5`|G♯/A♭ octave 5 | -|`MI_A_5` | |A octave 5 | -|`MI_As_5` |`MI_Bb_5`|A♯/B♭ octave 5 | -|`MI_B_5` | |B octave 5 | -|`MI_OCT_N2` | |Set octave to -2 | -|`MI_OCT_N1` | |Set octave to -1 | -|`MI_OCT_0` | |Set octave to 0 | -|`MI_OCT_1` | |Set octave to 1 | -|`MI_OCT_2` | |Set octave to 2 | -|`MI_OCT_3` | |Set octave to 3 | -|`MI_OCT_4` | |Set octave to 4 | -|`MI_OCT_5` | |Set octave to 5 | -|`MI_OCT_6` | |Set octave to 6 | -|`MI_OCT_7` | |Set octave to 7 | -|`MI_OCTD` | |Move down an octave | -|`MI_OCTU` | |Move up an octave | -|`MI_TRNS_N6`| |Set transposition to -6 semitones| -|`MI_TRNS_N5`| |Set transposition to -5 semitones| -|`MI_TRNS_N4`| |Set transposition to -4 semitones| -|`MI_TRNS_N3`| |Set transposition to -3 semitones| -|`MI_TRNS_N2`| |Set transposition to -2 semitones| -|`MI_TRNS_N1`| |Set transposition to -1 semitone | -|`MI_TRNS_0` | |No transposition | -|`MI_TRNS_1` | |Set transposition to +1 semitone | -|`MI_TRNS_2` | |Set transposition to +2 semitones| -|`MI_TRNS_3` | |Set transposition to +3 semitones| -|`MI_TRNS_4` | |Set transposition to +4 semitones| -|`MI_TRNS_5` | |Set transposition to +5 semitones| -|`MI_TRNS_6` | |Set transposition to +6 semitones| -|`MI_TRNSD` | |Decrease transposition | -|`MI_TRNSU` | |Increase transposition | -|`MI_VEL_0` | |Set velocity to 0 | -|`MI_VEL_1` | |Set velocity to 12 | -|`MI_VEL_2` | |Set velocity to 25 | -|`MI_VEL_3` | |Set velocity to 38 | -|`MI_VEL_4` | |Set velocity to 51 | -|`MI_VEL_5` | |Set velocity to 64 | -|`MI_VEL_6` | |Set velocity to 76 | -|`MI_VEL_7` | |Set velocity to 89 | -|`MI_VEL_8` | |Set velocity to 102 | -|`MI_VEL_9` | |Set velocity to 114 | -|`MI_VEL_10` | |Set velocity to 127 | -|`MI_VELD` | |Decrease velocity | -|`MI_VELU` | |Increase velocity | -|`MI_CH1` | |Set channel to 1 | -|`MI_CH2` | |Set channel to 2 | -|`MI_CH3` | |Set channel to 3 | -|`MI_CH4` | |Set channel to 4 | -|`MI_CH5` | |Set channel to 5 | -|`MI_CH6` | |Set channel to 6 | -|`MI_CH7` | |Set channel to 7 | -|`MI_CH8` | |Set channel to 8 | -|`MI_CH9` | |Set channel to 9 | -|`MI_CH10` | |Set channel to 10 | -|`MI_CH11` | |Set channel to 11 | -|`MI_CH12` | |Set channel to 12 | -|`MI_CH13` | |Set channel to 13 | -|`MI_CH14` | |Set channel to 14 | -|`MI_CH15` | |Set channel to 15 | -|`MI_CH16` | |Set channel to 16 | -|`MI_CHD` | |Decrease channel | -|`MI_CHU` | |Increase channel | -|`MI_ALLOFF` | |Stop all notes | -|`MI_SUS` | |Sustain | -|`MI_PORT` | |Portmento | -|`MI_SOST` | |Sostenuto | -|`MI_SOFT` | |Soft Pedal | -|`MI_LEG` | |Legato | -|`MI_MOD` | |Modulation | -|`MI_MODSD` | |Decrease modulation speed | -|`MI_MODSU` | |Increase modulation speed | -|`MI_BENDD` | |Bend pitch down | -|`MI_BENDU` | |Bend pitch up | +|Key |Aliases |Description | +|-------------------------------|------------------|---------------------------------| +|`QK_MIDI_ON` |`MI_ON` |Turn MIDI on | +|`QK_MIDI_OFF` |`MI_OFF` |Turn MIDI off | +|`QK_MIDI_TOGGLE` |`MI_TOGG` |Toggle MIDI enabled | +|`QK_MIDI_NOTE_C_0` |`MI_C` |C octave 0 | +|`QK_MIDI_NOTE_C_SHARP_0` |`MI_Cs`, `MI_Db` |C♯/D♭ octave 0 | +|`QK_MIDI_NOTE_D_0` |`MI_D` |D octave 0 | +|`QK_MIDI_NOTE_D_SHARP_0` |`MI_Ds`, `MI_Eb` |D♯/E♭ octave 0 | +|`QK_MIDI_NOTE_E_0` |`MI_E` |E octave 0 | +|`QK_MIDI_NOTE_F_0` |`MI_F` |F octave 0 | +|`QK_MIDI_NOTE_F_SHARP_0` |`MI_Fs`, `MI_Gb` |F♯/G♭ octave 0 | +|`QK_MIDI_NOTE_G_0` |`MI_G` |G octave 0 | +|`QK_MIDI_NOTE_G_SHARP_0` |`MI_Gs`, `MI_Ab` |G♯/A♭ octave 0 | +|`QK_MIDI_NOTE_A_0` |`MI_A` |A octave 0 | +|`QK_MIDI_NOTE_A_SHARP_0` |`MI_As`, `MI_Bb` |A♯/B♭ octave 0 | +|`QK_MIDI_NOTE_B_0` |`MI_B` |B octave 0 | +|`QK_MIDI_NOTE_C_1` |`MI_C1` |C octave 1 | +|`QK_MIDI_NOTE_C_SHARP_1` |`MI_Cs1`, `MI_Db1`|C♯/D♭ octave 1 | +|`QK_MIDI_NOTE_D_1` |`MI_D1` |D octave 1 | +|`QK_MIDI_NOTE_D_SHARP_1` |`MI_Ds1`, `MI_Eb1`|D♯/E♭ octave 1 | +|`QK_MIDI_NOTE_E_1` |`MI_E1` |E octave 1 | +|`QK_MIDI_NOTE_F_1` |`MI_F1` |F octave 1 | +|`QK_MIDI_NOTE_F_SHARP_1` |`MI_Fs1`, `MI_Gb1`|F♯/G♭ octave 1 | +|`QK_MIDI_NOTE_G_1` |`MI_G1` |G octave 1 | +|`QK_MIDI_NOTE_G_SHARP_1` |`MI_Gs1`, `MI_Ab1`|G♯/A♭ octave 1 | +|`QK_MIDI_NOTE_A_1` |`MI_A1` |A octave 1 | +|`QK_MIDI_NOTE_A_SHARP_1` |`MI_As1`, `MI_Bb1`|A♯/B♭ octave 1 | +|`QK_MIDI_NOTE_B_1` |`MI_B1` |B octave 1 | +|`QK_MIDI_NOTE_C_2` |`MI_C2` |C octave 2 | +|`QK_MIDI_NOTE_C_SHARP_2` |`MI_Cs2`, `MI_Db2`|C♯/D♭ octave 2 | +|`QK_MIDI_NOTE_D_2` |`MI_D2` |D octave 2 | +|`QK_MIDI_NOTE_D_SHARP_2` |`MI_Ds2`, `MI_Eb2`|D♯/E♭ octave 2 | +|`QK_MIDI_NOTE_E_2` |`MI_E2` |E octave 2 | +|`QK_MIDI_NOTE_F_2` |`MI_F2` |F octave 2 | +|`QK_MIDI_NOTE_F_SHARP_2` |`MI_Fs2`, `MI_Gb2`|F♯/G♭ octave 2 | +|`QK_MIDI_NOTE_G_2` |`MI_G2` |G octave 2 | +|`QK_MIDI_NOTE_G_SHARP_2` |`MI_Gs2`, `MI_Ab2`|G♯/A♭ octave 2 | +|`QK_MIDI_NOTE_A_2` |`MI_A2` |A octave 2 | +|`QK_MIDI_NOTE_A_SHARP_2` |`MI_As2`, `MI_Bb2`|A♯/B♭ octave 2 | +|`QK_MIDI_NOTE_B_2` |`MI_B2` |B octave 2 | +|`QK_MIDI_NOTE_C_3` |`MI_C3` |C octave 3 | +|`QK_MIDI_NOTE_C_SHARP_3` |`MI_Cs3`, `MI_Db3`|C♯/D♭ octave 3 | +|`QK_MIDI_NOTE_D_3` |`MI_D3` |D octave 3 | +|`QK_MIDI_NOTE_D_SHARP_3` |`MI_Ds3`, `MI_Eb3`|D♯/E♭ octave 3 | +|`QK_MIDI_NOTE_E_3` |`MI_E3` |E octave 3 | +|`QK_MIDI_NOTE_F_3` |`MI_F3` |F octave 3 | +|`QK_MIDI_NOTE_F_SHARP_3` |`MI_Fs3`, `MI_Gb3`|F♯/G♭ octave 3 | +|`QK_MIDI_NOTE_G_3` |`MI_G3` |G octave 3 | +|`QK_MIDI_NOTE_G_SHARP_3` |`MI_Gs3`, `MI_Ab3`|G♯/A♭ octave 3 | +|`QK_MIDI_NOTE_A_3` |`MI_A3` |A octave 3 | +|`QK_MIDI_NOTE_A_SHARP_3` |`MI_As3`, `MI_Bb3`|A♯/B♭ octave 3 | +|`QK_MIDI_NOTE_B_3` |`MI_B3` |B octave 3 | +|`QK_MIDI_NOTE_C_4` |`MI_C4` |C octave 4 | +|`QK_MIDI_NOTE_C_SHARP_4` |`MI_Cs4`, `MI_Db4`|C♯/D♭ octave 4 | +|`QK_MIDI_NOTE_D_4` |`MI_D4` |D octave 4 | +|`QK_MIDI_NOTE_D_SHARP_4` |`MI_Ds4`, `MI_Eb4`|D♯/E♭ octave 4 | +|`QK_MIDI_NOTE_E_4` |`MI_E4` |E octave 4 | +|`QK_MIDI_NOTE_F_4` |`MI_F4` |F octave 4 | +|`QK_MIDI_NOTE_F_SHARP_4` |`MI_Fs4`, `MI_Gb4`|F♯/G♭ octave 4 | +|`QK_MIDI_NOTE_G_4` |`MI_G4` |G octave 4 | +|`QK_MIDI_NOTE_G_SHARP_4` |`MI_Gs4`, `MI_Ab4`|G♯/A♭ octave 4 | +|`QK_MIDI_NOTE_A_4` |`MI_A4` |A octave 4 | +|`QK_MIDI_NOTE_A_SHARP_4` |`MI_As4`, `MI_Bb4`|A♯/B♭ octave 4 | +|`QK_MIDI_NOTE_B_4` |`MI_B4` |B octave 4 | +|`QK_MIDI_NOTE_C_5` |`MI_C5` |C octave 5 | +|`QK_MIDI_NOTE_C_SHARP_5` |`MI_Cs5`, `MI_Db5`|C♯/D♭ octave 5 | +|`QK_MIDI_NOTE_D_5` |`MI_D5` |D octave 5 | +|`QK_MIDI_NOTE_D_SHARP_5` |`MI_Ds5`, `MI_Eb5`|D♯/E♭ octave 5 | +|`QK_MIDI_NOTE_E_5` |`MI_E5` |E octave 5 | +|`QK_MIDI_NOTE_F_5` |`MI_F5` |F octave 5 | +|`QK_MIDI_NOTE_F_SHARP_5` |`MI_Fs5`, `MI_Gb5`|F♯/G♭ octave 5 | +|`QK_MIDI_NOTE_G_5` |`MI_G5` |G octave 5 | +|`QK_MIDI_NOTE_G_SHARP_5` |`MI_Gs5`, `MI_Ab5`|G♯/A♭ octave 5 | +|`QK_MIDI_NOTE_A_5` |`MI_A5` |A octave 5 | +|`QK_MIDI_NOTE_A_SHARP_5` |`MI_As5`, `MI_Bb5`|A♯/B♭ octave 5 | +|`QK_MIDI_NOTE_B_5` |`MI_B5` |B octave 5 | +|`QK_MIDI_OCTAVE_N2` |`MI_OCN2` |Set octave to -2 | +|`QK_MIDI_OCTAVE_N1` |`MI_OCN1` |Set octave to -1 | +|`QK_MIDI_OCTAVE_0` |`MI_OC0` |Set octave to 0 | +|`QK_MIDI_OCTAVE_1` |`MI_OC1` |Set octave to 1 | +|`QK_MIDI_OCTAVE_2` |`MI_OC2` |Set octave to 2 | +|`QK_MIDI_OCTAVE_3` |`MI_OC3` |Set octave to 3 | +|`QK_MIDI_OCTAVE_4` |`MI_OC4` |Set octave to 4 | +|`QK_MIDI_OCTAVE_5` |`MI_OC5` |Set octave to 5 | +|`QK_MIDI_OCTAVE_6` |`MI_OC6` |Set octave to 6 | +|`QK_MIDI_OCTAVE_7` |`MI_OC7` |Set octave to 7 | +|`QK_MIDI_OCTAVE_DOWN` |`MI_OCTD` |Move down an octave | +|`QK_MIDI_OCTAVE_UP` |`MI_OCTU` |Move up an octave | +|`QK_MIDI_TRANSPOSE_N6` |`MI_TRN6` |Set transposition to -6 semitones| +|`QK_MIDI_TRANSPOSE_N5` |`MI_TRN5` |Set transposition to -5 semitones| +|`QK_MIDI_TRANSPOSE_N4` |`MI_TRN4` |Set transposition to -4 semitones| +|`QK_MIDI_TRANSPOSE_N3` |`MI_TRN3` |Set transposition to -3 semitones| +|`QK_MIDI_TRANSPOSE_N2` |`MI_TRN2` |Set transposition to -2 semitones| +|`QK_MIDI_TRANSPOSE_N1` |`MI_TRN1` |Set transposition to -1 semitone | +|`QK_MIDI_TRANSPOSE_0` |`MI_TR0` |No transposition | +|`QK_MIDI_TRANSPOSE_1` |`MI_TR1` |Set transposition to +1 semitone | +|`QK_MIDI_TRANSPOSE_2` |`MI_TR2` |Set transposition to +2 semitones| +|`QK_MIDI_TRANSPOSE_3` |`MI_TR3` |Set transposition to +3 semitones| +|`QK_MIDI_TRANSPOSE_4` |`MI_TR4` |Set transposition to +4 semitones| +|`QK_MIDI_TRANSPOSE_5` |`MI_TR5` |Set transposition to +5 semitones| +|`QK_MIDI_TRANSPOSE_6` |`MI_TR6` |Set transposition to +6 semitones| +|`QK_MIDI_TRANSPOSE_DOWN` |`MI_TRSD` |Decrease transposition | +|`QK_MIDI_TRANSPOSE_UP` |`MI_TRSU` |Increase transposition | +|`QK_MIDI_VELOCITY_0` |`MI_VL0` |Set velocity to 0 | +|`QK_MIDI_VELOCITY_1` |`MI_VL1` |Set velocity to 12 | +|`QK_MIDI_VELOCITY_2` |`MI_VL2` |Set velocity to 25 | +|`QK_MIDI_VELOCITY_3` |`MI_VL3` |Set velocity to 38 | +|`QK_MIDI_VELOCITY_4` |`MI_VL4` |Set velocity to 51 | +|`QK_MIDI_VELOCITY_5` |`MI_VL5` |Set velocity to 64 | +|`QK_MIDI_VELOCITY_6` |`MI_VL6` |Set velocity to 76 | +|`QK_MIDI_VELOCITY_7` |`MI_VL7` |Set velocity to 89 | +|`QK_MIDI_VELOCITY_8` |`MI_VL8` |Set velocity to 102 | +|`QK_MIDI_VELOCITY_9` |`MI_VL9` |Set velocity to 114 | +|`QK_MIDI_VELOCITY_10` |`MI_VL10` |Set velocity to 127 | +|`QK_MIDI_VELOCITY_DOWN` |`MI_VELD` |Decrease velocity | +|`QK_MIDI_VELOCITY_UP` |`MI_VELU` |Increase velocity | +|`QK_MIDI_CHANNEL_1` |`MI_CH1` |Set channel to 1 | +|`QK_MIDI_CHANNEL_2` |`MI_CH2` |Set channel to 2 | +|`QK_MIDI_CHANNEL_3` |`MI_CH3` |Set channel to 3 | +|`QK_MIDI_CHANNEL_4` |`MI_CH4` |Set channel to 4 | +|`QK_MIDI_CHANNEL_5` |`MI_CH5` |Set channel to 5 | +|`QK_MIDI_CHANNEL_6` |`MI_CH6` |Set channel to 6 | +|`QK_MIDI_CHANNEL_7` |`MI_CH7` |Set channel to 7 | +|`QK_MIDI_CHANNEL_8` |`MI_CH8` |Set channel to 8 | +|`QK_MIDI_CHANNEL_9` |`MI_CH9` |Set channel to 9 | +|`QK_MIDI_CHANNEL_10` |`MI_CH10` |Set channel to 10 | +|`QK_MIDI_CHANNEL_11` |`MI_CH11` |Set channel to 11 | +|`QK_MIDI_CHANNEL_12` |`MI_CH12` |Set channel to 12 | +|`QK_MIDI_CHANNEL_13` |`MI_CH13` |Set channel to 13 | +|`QK_MIDI_CHANNEL_14` |`MI_CH14` |Set channel to 14 | +|`QK_MIDI_CHANNEL_15` |`MI_CH15` |Set channel to 15 | +|`QK_MIDI_CHANNEL_16` |`MI_CH16` |Set channel to 16 | +|`QK_MIDI_CHANNEL_DOWN` |`MI_CHND` |Decrease channel | +|`QK_MIDI_CHANNEL_UP` |`MI_CHNU` |Increase channel | +|`QK_MIDI_ALL_NOTES_OFF` |`MI_AOFF` |Stop all notes | +|`QK_MIDI_SUSTAIN` |`MI_SUST` |Sustain | +|`QK_MIDI_PORTAMENTO` |`MI_PORT` |Portmento | +|`QK_MIDI_SOSTENUTO` |`MI_SOST` |Sostenuto | +|`QK_MIDI_SOFT` |`MI_SOFT` |Soft Pedal | +|`QK_MIDI_LEGATO` |`MI_LEG` |Legato | +|`QK_MIDI_MODULATION` |`MI_MOD` |Modulation | +|`QK_MIDI_MODULATION_SPEED_DOWN`|`MI_MODD` |Decrease modulation speed | +|`QK_MIDI_MODULATION_SPEED_UP` |`MI_MODU` |Increase modulation speed | +|`QK_MIDI_PITCH_BEND_DOWN` |`MI_BNDD` |Bend pitch down | +|`QK_MIDI_PITCH_BEND_UP` |`MI_BNDU` |Bend pitch up | ## Mouse Keys :id=mouse-keys @@ -604,11 +673,11 @@ See also: [Mod-Tap](mod_tap.md) See also: [Dynamic Tapping Term](tap_hold#dynamic-tapping-term) -| Key | Description | -|-------------|------------------------------------------------------------------------------------------------------------------------| -| `DT_PRNT` | "Dynamic Tapping Term Print": Types the current tapping term, in milliseconds | -| `DT_UP` | "Dynamic Tapping Term Up": Increases the current tapping term by `DYNAMIC_TAPPING_TERM_INCREMENT`ms (5ms by default) | -| `DT_DOWN` | "Dynamic Tapping Term Down": Decreases the current tapping term by `DYNAMIC_TAPPING_TERM_INCREMENT`ms (5ms by default) | +| Key | Aliases | Description | +|-------------------------------|---------|-------------------------------------------------------------------------------------------| +|`QK_DYNAMIC_TAPPING_TERM_PRINT`|`DT_PRNT`| Types the current tapping term, in milliseconds | +|`QK_DYNAMIC_TAPPING_TERM_UP` |`DT_UP` | Increases the current tapping term by `DYNAMIC_TAPPING_TERM_INCREMENT`ms (5ms by default) | +|`QK_DYNAMIC_TAPPING_TERM_DOWN` |`DT_DOWN`| Decreases the current tapping term by `DYNAMIC_TAPPING_TERM_INCREMENT`ms (5ms by default) | ## RGB Lighting :id=rgb-lighting @@ -653,15 +722,6 @@ See also: [RGB Matrix Lighting](feature_rgb_matrix.md) |`RGB_SPI` | |Increase effect speed (does not support eeprom yet), decrease speed when Shift is held| |`RGB_SPD` | |Decrease effect speed (does not support eeprom yet), increase speed when Shift is held| -## Thermal Printer :id=thermal-printer - -See also: [Thermal Printer](feature_thermal_printer.md) - -|Key |Description | -|-----------|----------------------------------------| -|`PRINT_ON` |Start printing everything the user types| -|`PRINT_OFF`|Stop printing everything the user types | - ## US ANSI Shifted Symbols :id=us-ansi-shifted-symbols See also: [US ANSI Shifted Symbols](keycodes_us_ansi_shifted.md) @@ -694,67 +754,66 @@ See also: [US ANSI Shifted Symbols](keycodes_us_ansi_shifted.md) See also: [One Shot Keys](one_shot_keys.md) -|Key |Description | -|------------|----------------------------------| -|`OSM(mod)` |Hold `mod` for one keypress | -|`OSL(layer)`|Switch to `layer` for one keypress| -|`OS_ON` |Turns One Shot keys on | -|`OS_OFF` |Turns One Shot keys off | -|`OS_TOGG` |Toggles One Shot keys status | +|Key |Aliases |Description | +|--------------------|---------|----------------------------------| +|`OSM(mod)` | |Hold `mod` for one keypress | +|`OSL(layer)` | |Switch to `layer` for one keypress| +|`QK_ONE_SHOT_TOGGLE`|`OS_TOGG`|Toggles One Shot keys status | +|`QK_ONE_SHOT_ON` |`OS_ON` |Turns One Shot keys on | +|`QK_ONE_SHOT_OFF` |`OS_OFF` |Turns One Shot keys off | ## Programmable Button Support :id=programmable-button See also: [Programmable Button](feature_programmable_button.md) -|Key |Description | -|------------------------|----------------------| -|`PROGRAMMABLE_BUTTON_1` |Programmable button 1 | -|`PROGRAMMABLE_BUTTON_2` |Programmable button 2 | -|`PROGRAMMABLE_BUTTON_3` |Programmable button 3 | -|`PROGRAMMABLE_BUTTON_4` |Programmable button 4 | -|`PROGRAMMABLE_BUTTON_5` |Programmable button 5 | -|`PROGRAMMABLE_BUTTON_6` |Programmable button 6 | -|`PROGRAMMABLE_BUTTON_7` |Programmable button 7 | -|`PROGRAMMABLE_BUTTON_8` |Programmable button 8 | -|`PROGRAMMABLE_BUTTON_9` |Programmable button 9 | -|`PROGRAMMABLE_BUTTON_10`|Programmable button 10| -|`PROGRAMMABLE_BUTTON_11`|Programmable button 11| -|`PROGRAMMABLE_BUTTON_12`|Programmable button 12| -|`PROGRAMMABLE_BUTTON_13`|Programmable button 13| -|`PROGRAMMABLE_BUTTON_14`|Programmable button 14| -|`PROGRAMMABLE_BUTTON_15`|Programmable button 15| -|`PROGRAMMABLE_BUTTON_16`|Programmable button 16| -|`PROGRAMMABLE_BUTTON_17`|Programmable button 17| -|`PROGRAMMABLE_BUTTON_18`|Programmable button 18| -|`PROGRAMMABLE_BUTTON_19`|Programmable button 19| -|`PROGRAMMABLE_BUTTON_20`|Programmable button 20| -|`PROGRAMMABLE_BUTTON_21`|Programmable button 21| -|`PROGRAMMABLE_BUTTON_22`|Programmable button 22| -|`PROGRAMMABLE_BUTTON_23`|Programmable button 23| -|`PROGRAMMABLE_BUTTON_24`|Programmable button 24| -|`PROGRAMMABLE_BUTTON_25`|Programmable button 25| -|`PROGRAMMABLE_BUTTON_26`|Programmable button 26| -|`PROGRAMMABLE_BUTTON_27`|Programmable button 27| -|`PROGRAMMABLE_BUTTON_28`|Programmable button 28| -|`PROGRAMMABLE_BUTTON_29`|Programmable button 29| -|`PROGRAMMABLE_BUTTON_30`|Programmable button 30| -|`PROGRAMMABLE_BUTTON_31`|Programmable button 31| -|`PROGRAMMABLE_BUTTON_32`|Programmable button 32| -|`PB_1` to `PB_32` |Aliases for keymaps | +|Key |Aliases|Description | +|---------------------------|-------|----------------------| +|`QK_PROGRAMMABLE_BUTTON_1` |`PB_1` |Programmable button 1 | +|`QK_PROGRAMMABLE_BUTTON_2` |`PB_2` |Programmable button 2 | +|`QK_PROGRAMMABLE_BUTTON_3` |`PB_3` |Programmable button 3 | +|`QK_PROGRAMMABLE_BUTTON_4` |`PB_4` |Programmable button 4 | +|`QK_PROGRAMMABLE_BUTTON_5` |`PB_5` |Programmable button 5 | +|`QK_PROGRAMMABLE_BUTTON_6` |`PB_6` |Programmable button 6 | +|`QK_PROGRAMMABLE_BUTTON_7` |`PB_7` |Programmable button 7 | +|`QK_PROGRAMMABLE_BUTTON_8` |`PB_8` |Programmable button 8 | +|`QK_PROGRAMMABLE_BUTTON_9` |`PB_9` |Programmable button 9 | +|`QK_PROGRAMMABLE_BUTTON_10`|`PB_10`|Programmable button 10| +|`QK_PROGRAMMABLE_BUTTON_11`|`PB_11`|Programmable button 11| +|`QK_PROGRAMMABLE_BUTTON_12`|`PB_12`|Programmable button 12| +|`QK_PROGRAMMABLE_BUTTON_13`|`PB_13`|Programmable button 13| +|`QK_PROGRAMMABLE_BUTTON_14`|`PB_14`|Programmable button 14| +|`QK_PROGRAMMABLE_BUTTON_15`|`PB_15`|Programmable button 15| +|`QK_PROGRAMMABLE_BUTTON_16`|`PB_16`|Programmable button 16| +|`QK_PROGRAMMABLE_BUTTON_17`|`PB_17`|Programmable button 17| +|`QK_PROGRAMMABLE_BUTTON_18`|`PB_18`|Programmable button 18| +|`QK_PROGRAMMABLE_BUTTON_19`|`PB_19`|Programmable button 19| +|`QK_PROGRAMMABLE_BUTTON_20`|`PB_20`|Programmable button 20| +|`QK_PROGRAMMABLE_BUTTON_21`|`PB_21`|Programmable button 21| +|`QK_PROGRAMMABLE_BUTTON_22`|`PB_22`|Programmable button 22| +|`QK_PROGRAMMABLE_BUTTON_23`|`PB_23`|Programmable button 23| +|`QK_PROGRAMMABLE_BUTTON_24`|`PB_24`|Programmable button 24| +|`QK_PROGRAMMABLE_BUTTON_25`|`PB_25`|Programmable button 25| +|`QK_PROGRAMMABLE_BUTTON_26`|`PB_26`|Programmable button 26| +|`QK_PROGRAMMABLE_BUTTON_27`|`PB_27`|Programmable button 27| +|`QK_PROGRAMMABLE_BUTTON_28`|`PB_28`|Programmable button 28| +|`QK_PROGRAMMABLE_BUTTON_29`|`PB_29`|Programmable button 29| +|`QK_PROGRAMMABLE_BUTTON_30`|`PB_30`|Programmable button 30| +|`QK_PROGRAMMABLE_BUTTON_31`|`PB_31`|Programmable button 31| +|`QK_PROGRAMMABLE_BUTTON_32`|`PB_32`|Programmable button 32| ## Space Cadet :id=space-cadet See also: [Space Cadet](feature_space_cadet.md) -|Key |Description | -|-----------|----------------------------------------| -|`KC_LCPO` |Left Control when held, `(` when tapped | -|`KC_RCPC` |Right Control when held, `)` when tapped| -|`KC_LSPO` |Left Shift when held, `(` when tapped | -|`KC_RSPC` |Right Shift when held, `)` when tapped | -|`KC_LAPO` |Left Alt when held, `(` when tapped | -|`KC_RAPC` |Right Alt when held, `)` when tapped | -|`KC_SFTENT`|Right Shift when held, Enter when tapped| +|Key |Aliases |Description | +|----------------------------------------------|---------|----------------------------------------| +|`QK_SPACE_CADET_LEFT_CTRL_PARENTHESIS_OPEN` |`SC_LCPO`|Left Control when held, `(` when tapped | +|`QK_SPACE_CADET_RIGHT_CTRL_PARENTHESIS_CLOSE` |`SC_RCPC`|Right Control when held, `)` when tapped| +|`QK_SPACE_CADET_LEFT_SHIFT_PARENTHESIS_OPEN` |`SC_LSPO`|Left Shift when held, `(` when tapped | +|`QK_SPACE_CADET_RIGHT_SHIFT_PARENTHESIS_CLOSE`|`SC_RSPC`|Right Shift when held, `)` when tapped | +|`QK_SPACE_CADET_LEFT_ALT_PARENTHESIS_OPEN` |`SC_LAPO`|Left Alt when held, `(` when tapped | +|`QK_SPACE_CADET_RIGHT_ALT_PARENTHESIS_CLOSE` |`SC_RAPC`|Right Alt when held, `)` when tapped | +|`QK_SPACE_CADET_RIGHT_SHIFT_ENTER` |`SC_SENT`|Right Shift when held, Enter when tapped| ## Swap Hands :id=swap-hands @@ -775,15 +834,16 @@ See also: [Swap Hands](feature_swap_hands.md) See also: [Unicode Support](feature_unicode.md) -|Key |Aliases |Description | -|----------------------|---------|----------------------------------------------------------------| -|`UC(c)` | |Send Unicode code point `c`, up to `0x7FFF` | -|`X(i)` | |Send Unicode code point at index `i` in `unicode_map` | -|`XP(i, j)` | |Send Unicode code point at index `i`, or `j` if Shift/Caps is on| -|`UNICODE_MODE_FORWARD`|`UC_MOD` |Cycle through selected input modes | -|`UNICODE_MODE_REVERSE`|`UC_RMOD`|Cycle through selected input modes in reverse | -|`UNICODE_MODE_MAC` |`UC_M_MA`|Switch to macOS input | -|`UNICODE_MODE_LNX` |`UC_M_LN`|Switch to Linux input | -|`UNICODE_MODE_WIN` |`UC_M_WI`|Switch to Windows input | -|`UNICODE_MODE_BSD` |`UC_M_BS`|Switch to BSD input (not implemented) | -|`UNICODE_MODE_WINC` |`UC_M_WC`|Switch to Windows input using WinCompose | +|Key |Aliases |Description | +|----------------------------|---------|--------------------------------- |