diff options
Diffstat (limited to 'quantum/quantum_keycodes.h')
| -rw-r--r-- | quantum/quantum_keycodes.h | 313 | 
1 files changed, 298 insertions, 15 deletions
| diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h index 4853655f95..7354ae0da1 100644 --- a/quantum/quantum_keycodes.h +++ b/quantum/quantum_keycodes.h @@ -1,7 +1,31 @@ - +/* Copyright 2016-2017 Jack Humbert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <http://www.gnu.org/licenses/>. + */  #ifndef QUANTUM_KEYCODES_H  #define QUANTUM_KEYCODES_H +#ifndef MIDI_ENABLE_STRICT +#define MIDI_ENABLE_STRICT 0 +#endif + +#if !MIDI_ENABLE_STRICT || (defined(MIDI_ENABLE) && defined(MIDI_ADVANCED)) +#ifndef MIDI_TONE_KEYCODE_OCTAVES +#define MIDI_TONE_KEYCODE_OCTAVES 3 +#endif +#endif +  enum quantum_keycodes {      // Ranges used in shortucuts - not to be used directly      QK_TMK                = 0x0000, @@ -39,22 +63,27 @@ enum quantum_keycodes {      QK_CHORDING           = 0x5600,      QK_CHORDING_MAX       = 0x56FF,  #endif +    QK_TAP_DANCE          = 0x5700, +    QK_TAP_DANCE_MAX      = 0x57FF, +    QK_LAYER_TAP_TOGGLE   = 0x5800, +    QK_LAYER_TAP_TOGGLE_MAX = 0x58FF,      QK_MOD_TAP            = 0x6000, -    QK_MOD_TAP_MAX        = 0x6FFF, -    QK_TAP_DANCE          = 0x7100, -    QK_TAP_DANCE_MAX      = 0x71FF, -#ifdef UNICODEMAP_ENABLE -    QK_UNICODE_MAP        = 0x7800, -    QK_UNICODE_MAP_MAX    = 0x7FFF, +    QK_MOD_TAP_MAX        = 0x7FFF, +#if defined(UNICODEMAP_ENABLE) && defined(UNICODE_ENABLE) +    #error "Cannot enable both UNICODEMAP && UNICODE"  #endif  #ifdef UNICODE_ENABLE      QK_UNICODE            = 0x8000,      QK_UNICODE_MAX        = 0xFFFF,  #endif +#ifdef UNICODEMAP_ENABLE +    QK_UNICODE_MAP        = 0x8000, +    QK_UNICODE_MAP_MAX    = 0x83FF, +#endif      // Loose keycodes - to be used directly -    RESET = 0x7000, +    RESET = 0x5C00,      DEBUG,      MAGIC_SWAP_CONTROL_CAPSLOCK,      MAGIC_CAPSLOCK_TO_CONTROL, @@ -86,6 +115,13 @@ enum quantum_keycodes {      AU_OFF,      AU_TOG, +#ifdef FAUXCLICKY_ENABLE +    // Faux clicky +    FC_ON, +    FC_OFF, +    FC_TOG, +#endif +      // Music mode on/off/toggle      MU_ON,      MU_OFF, @@ -95,9 +131,230 @@ enum quantum_keycodes {      MUV_IN,      MUV_DE, -    // Midi mode on/off -    MIDI_ON, -    MIDI_OFF, +    // 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 + +#if !MIDI_ENABLE_STRICT || (defined(MIDI_ENABLE) && defined(MIDI_ADVANCED)) +    MIDI_TONE_MIN, + +#if !MIDI_ENABLE_STRICT || MIDI_TONE_KEYCODE_OCTAVES > 0 +    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, +#endif + +#if !MIDI_ENABLE_STRICT || MIDI_TONE_KEYCODE_OCTAVES > 1 +    MI_C_1, +    MI_Cs_1, +    MI_Db_1 = MI_Cs_1, +    MI_D_1, +    MI_Ds_1, +    MI_Eb_1 = MI_Ds_1, +    MI_E_1, +    MI_F_1, +    MI_Fs_1, +    MI_Gb_1 = MI_Fs_1, +    MI_G_1, +    MI_Gs_1, +    MI_Ab_1 = MI_Gs_1, +    MI_A_1, +    MI_As_1, +    MI_Bb_1 = MI_As_1, +    MI_B_1, +#endif + +#if !MIDI_ENABLE_STRICT || MIDI_TONE_KEYCODE_OCTAVES > 2 +    MI_C_2, +    MI_Cs_2, +    MI_Db_2 = MI_Cs_2, +    MI_D_2, +    MI_Ds_2, +    MI_Eb_2 = MI_Ds_2, +    MI_E_2, +    MI_F_2, +    MI_Fs_2, +    MI_Gb_2 = MI_Fs_2, +    MI_G_2, +    MI_Gs_2, +    MI_Ab_2 = MI_Gs_2, +    MI_A_2, +    MI_As_2, +    MI_Bb_2 = MI_As_2, +    MI_B_2, +#endif + +#if !MIDI_ENABLE_STRICT || MIDI_TONE_KEYCODE_OCTAVES > 3 +    MI_C_3, +    MI_Cs_3, +    MI_Db_3 = MI_Cs_3, +    MI_D_3, +    MI_Ds_3, +    MI_Eb_3 = MI_Ds_3, +    MI_E_3, +    MI_F_3, +    MI_Fs_3, +    MI_Gb_3 = MI_Fs_3, +    MI_G_3, +    MI_Gs_3, +    MI_Ab_3 = MI_Gs_3, +    MI_A_3, +    MI_As_3, +    MI_Bb_3 = MI_As_3, +    MI_B_3, +#endif + +#if !MIDI_ENABLE_STRICT || MIDI_TONE_KEYCODE_OCTAVES > 4 +    MI_C_4, +    MI_Cs_4, +    MI_Db_4 = MI_Cs_4, +    MI_D_4, +    MI_Ds_4, +    MI_Eb_4 = MI_Ds_4, +    MI_E_4, +    MI_F_4, +    MI_Fs_4, +    MI_Gb_4 = MI_Fs_4, +    MI_G_4, +    MI_Gs_4, +    MI_Ab_4 = MI_Gs_4, +    MI_A_4, +    MI_As_4, +    MI_Bb_4 = MI_As_4, +    MI_B_4, +#endif + +#if !MIDI_ENABLE_STRICT || MIDI_TONE_KEYCODE_OCTAVES > 5 +    MI_C_5, +    MI_Cs_5, +    MI_Db_5 = MI_Cs_5, +    MI_D_5, +    MI_Ds_5, +    MI_Eb_5 = MI_Ds_5, +    MI_E_5, +    MI_F_5, +    MI_Fs_5, +    MI_Gb_5 = MI_Fs_5, +    MI_G_5, +    MI_Gs_5, +    MI_Ab_5 = MI_Gs_5, +    MI_A_5, +    MI_As_5, +    MI_Bb_5 = MI_As_5, +    MI_B_5, +#endif + +#if !MIDI_ENABLE_STRICT || MIDI_TONE_KEYCODE_OCTAVES > 5 +    MIDI_TONE_MAX = MI_B_5, +#elif MIDI_TONE_KEYCODE_OCTAVES > 4 +    MIDI_TONE_MAX = MI_B_4, +#elif MIDI_TONE_KEYCODE_OCTAVES > 3 +    MIDI_TONE_MAX = MI_B_3, +#elif MIDI_TONE_KEYCODE_OCTAVES > 2 +    MIDI_TONE_MAX = MI_B_2, +#elif MIDI_TONE_KEYCODE_OCTAVES > 1 +    MIDI_TONE_MAX = MI_B_1, +#elif MIDI_TONE_KEYCODE_OCTAVES > 0 +    MIDI_TONE_MAX = MI_B, +#endif + +    MIDI_OCTAVE_MIN, +    MI_OCT_N2 = MIDI_OCTAVE_MIN, +    MI_OCT_N1, +    MI_OCT_0, +    MI_OCT_1, +    MI_OCT_2, +    MI_OCT_3, +    MI_OCT_4, +    MI_OCT_5, +    MI_OCT_6, +    MI_OCT_7, +    MIDI_OCTAVE_MAX = MI_OCT_7, +    MI_OCTD, // octave down +    MI_OCTU, // octave up + +    MIDI_TRANSPOSE_MIN, +    MI_TRNS_N6 = MIDI_TRANSPOSE_MIN, +    MI_TRNS_N5, +    MI_TRNS_N4, +    MI_TRNS_N3, +    MI_TRNS_N2, +    MI_TRNS_N1, +    MI_TRNS_0, +    MI_TRNS_1, +    MI_TRNS_2, +    MI_TRNS_3, +    MI_TRNS_4, +    MI_TRNS_5, +    MI_TRNS_6, +    MIDI_TRANSPOSE_MAX = MI_TRNS_6, +    MI_TRNSD, // transpose down +    MI_TRNSU, // transpose up + +    MIDI_VELOCITY_MIN, +    MI_VEL_1 = MIDI_VELOCITY_MIN, +    MI_VEL_2, +    MI_VEL_3, +    MI_VEL_4, +    MI_VEL_5, +    MI_VEL_6, +    MI_VEL_7, +    MI_VEL_8, +    MI_VEL_9, +    MI_VEL_10, +    MIDI_VELOCITY_MAX = MI_VEL_10, +    MI_VELD, // velocity down +    MI_VELU, // velocity up + +    MIDI_CHANNEL_MIN, +    MI_CH1 = MIDI_CHANNEL_MIN, +    MI_CH2, +    MI_CH3, +    MI_CH4, +    MI_CH5, +    MI_CH6, +    MI_CH7, +    MI_CH8, +    MI_CH9, +    MI_CH10, +    MI_CH11, +    MI_CH12, +    MI_CH13, +    MI_CH14, +    MI_CH15, +    MI_CH16, +    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 functionality      BL_0, @@ -141,6 +398,13 @@ enum quantum_keycodes {      PRINT_ON,      PRINT_OFF, +    // output selection +    OUT_AUTO, +    OUT_USB, +#ifdef BLUETOOTH_ENABLE +    OUT_BT, +#endif +      // always leave at the end      SAFE_RANGE  }; @@ -161,6 +425,7 @@ enum quantum_keycodes {  #define ALTG(kc) (kc | QK_RCTL | QK_RALT)  #define SCMD(kc) (kc | QK_LGUI | QK_LSFT)  #define SWIN(kc) SCMD(kc) +#define LCA(kc) (kc | QK_LCTL | QK_LALT)  #define MOD_HYPR 0xf  #define MOD_MEH 0x7 @@ -246,8 +511,10 @@ enum quantum_keycodes {  #define M(kc) (kc | QK_MACRO) +#define MACROTAP(kc) (kc | QK_MACRO | FUNC_TAP<<8)  #define MACRODOWN(...) (record->event.pressed ? MACRO(__VA_ARGS__) : MACRO_NONE) +  // L-ayer, T-ap - 256 keycode max, 16 layer max  #define LT(layer, kc) (kc | QK_LAYER_TAP | ((layer & 0xF) << 8)) @@ -257,9 +524,6 @@ enum quantum_keycodes {  #define BL_ON  BL_9  #define BL_OFF BL_0 -#define MI_ON MIDI_ON -#define MI_OFF MIDI_OFF -  // GOTO layer - 16 layers max  // when:  // ON_PRESS    = 1 @@ -285,18 +549,37 @@ enum quantum_keycodes {  // One-shot mod  #define OSM(mod) (mod | QK_ONE_SHOT_MOD) +// Layer tap-toggle +#define TT(layer) (layer | QK_LAYER_TAP_TOGGLE) +  // M-od, T-ap - 256 keycode max -#define MT(mod, kc) (kc | QK_MOD_TAP | ((mod & 0xF) << 8)) +#define MT(mod, kc) (kc | QK_MOD_TAP | ((mod & 0x1F) << 8)) +  #define CTL_T(kc) MT(MOD_LCTL, kc) +#define LCTL_T(kc) MT(MOD_LCTL, kc) +#define RCTL_T(kc) MT(MOD_RCTL, kc) +  #define SFT_T(kc) MT(MOD_LSFT, kc) +#define LSFT_T(kc) MT(MOD_LSFT, kc) +#define RSFT_T(kc) MT(MOD_RSFT, kc) +  #define ALT_T(kc) MT(MOD_LALT, kc) +#define LALT_T(kc) MT(MOD_LALT, kc) +#define RALT_T(kc) MT(MOD_RALT, kc) +#define ALGR_T(kc) MT(MOD_RALT, kc) // dual-function AltGR +  #define GUI_T(kc) MT(MOD_LGUI, kc) +#define LGUI_T(kc) MT(MOD_LGUI, kc) +#define RGUI_T(kc) MT(MOD_RGUI, kc) +  #define C_S_T(kc) MT((MOD_LCTL | MOD_LSFT), kc) // Control + Shift e.g. for gnome-terminal  #define MEH_T(kc) MT((MOD_LCTL | MOD_LSFT | MOD_LALT), kc) // Meh is a less hyper version of the Hyper key -- doesn't include Win or Cmd, so just alt+shift+ctrl  #define LCAG_T(kc) MT((MOD_LCTL | MOD_LALT | MOD_LGUI), kc) // Left control alt and gui +#define RCAG_T(kc) MT((MOD_RCTL | MOD_RALT | MOD_RGUI), kc) // Right control alt and gui  #define ALL_T(kc) MT((MOD_LCTL | MOD_LSFT | MOD_LALT | MOD_LGUI), kc) // see http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/  #define SCMD_T(kc) MT((MOD_LGUI | MOD_LSFT), kc)  #define SWIN_T(kc) SCMD_T(kc) +#define LCA_T(kc) MT((MOD_LCTL | MOD_LALT), kc) // Left control and left alt  // Dedicated keycode versions for Hyper and Meh, if you want to use them as standalone keys rather than mod-tap  #define KC_HYPR HYPR(KC_NO) | 
