qmk_firmware

QMK firmware for my keyboards (Corne, Sweep Ferris) and trackball (Ploopy Adept)
Log | Files | Refs | Submodules | LICENSE

keymap.c (16342B)


      1  /*
      2  Copyright 2020 Garret Gartner
      3 
      4  This program is free software: you can redistribute it and/or modify
      5  it under the terms of the GNU General Public License as published by
      6  the Free Software Foundation, either version 2 of the License, or
      7  (at your option) any later version.
      8 
      9  This program is distributed in the hope that it will be useful,
     10  but WITHOUT ANY WARRANTY; without even the implied warranty of
     11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     12  GNU General Public License for more details.
     13 
     14  You should have received a copy of the GNU General Public License
     15  along with this program.  If not, see <http://www.gnu.org/licenses/>.
     16  */
     17 
     18 #include QMK_KEYBOARD_H
     19 
     20 enum avenue_layers {
     21   _QWERTY,
     22   _LOWER,
     23   _RAISE,
     24   _FUNCTION
     25 };
     26 
     27 
     28 
     29 //Tap Dance Declarations:
     30 enum avenue_tapcodes {
     31   TD_RST,
     32   TD_DBQT,
     33 };
     34 
     35 void dance_rst_reset (tap_dance_state_t *state, void *user_data) { // *Line_Note.001
     36   if (state->count >= 2) {
     37     reset_keyboard();
     38     reset_tap_dance(state);
     39   }
     40 }
     41 
     42 //Tap Dance Functions:
     43 tap_dance_action_t tap_dance_actions[] = {
     44  [TD_RST] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, NULL, dance_rst_reset), // References "dance_rst_reset" (*Line_Note.001)
     45  [TD_DBQT] = ACTION_TAP_DANCE_DOUBLE (KC_QUOTE, KC_DQT)
     46 };
     47 
     48 
     49 
     50 // Keymap Customization:
     51 #define LOWR  MO(_LOWER)
     52 #define RISE  MO(_RAISE)
     53 #define FN    MO(_FUNCTION)
     54 #define GUI   KC_LGUI
     55 #define ALT   KC_LALT
     56 #define SPACE KC_SPACE
     57 
     58     /*
     59     *   ┌────┐
     60     *   │    │ = "TRANSPARENT" KEY LOCATION
     61     *   └────┘
     62     */
     63 
     64 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     65 
     66     /* _QWERTY (Base)
     67     *
     68     * ┌────┐ ┌────┐                                       ┌────┬────┬────┐
     69     * │MUTE│ │Esc │                                       │ \  │ -  │ =  │
     70     * └────┘ └────┘                                       └────┴────┴────┘
     71     * ┌────┐ ┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┐
     72     * │Home│ │Tab │ Q  │ W  │ E  │ R  │ T  │ Y  │ U  │ I  │ O  │ P  │BkSp│
     73     * ├────┤ ├────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┤
     74     * │PgUp│ │CAPS│ A  │ S  │ D  │ F  │ G  │ H  │ J  │ K  │ L  │ ;  │ '  │
     75     * ├────┤ ├────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┤
     76     * │PgDn│ │Shft│ Z  │ X  │ C  │ V  │ B  │ N  │ M  │ ,  │ .  │ /  │Entr│
     77     * ├────┤ ├────┼────┼────┼────┼────┼────┴────┼────┼────┼────┼────┼────┤
     78     * │End │ │CTL │GUI │ALT │FUNC│LOWR│    │    │RISE│Left│Down│ Up │Rght│
     79     * └────┘ └────┴────┴────┴────┴────┴─────────┴────┴────┴────┴────┴────┘
     80     */
     81     [_QWERTY] = LAYOUT_all(
     82         KC_MUTE,      KC_ESC,                                                                       KC_BSLS,   KC_MINUS,   KC_EQUAL,
     83         KC_HOME,      KC_TAB,    KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,      KC_O,      KC_P,       KC_BSPC,
     84         KC_PGUP,      KC_LCTL,   KC_A,   KC_S,   KC_D,   KC_F,   KC_G,   KC_H,   KC_J,   KC_K,      KC_L,      KC_SCLN,    KC_QUOT,
     85         KC_PGDN,      KC_LSFT,   KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM,   KC_DOT,    KC_SLSH,    KC_ENT,
     86         KC_END,       KC_DEL,    GUI,    ALT,    FN,     LOWR,   SPACE,  SPACE,  RISE,   KC_LEFT,   KC_DOWN,   KC_UP,      KC_RIGHT
     87     ),
     88 
     89     /* _LOWER (Media / Symbols / Punctuation)
     90     *
     91     * ┌────┐ ┌────┐                                       ┌────┬────┬────┐
     92     * │ // │ │PRNT│                                       │ [  │ ]  │ `  │
     93     * └────┘ └────┘                                       └────┴────┴────┘
     94     * ┌────┐ ┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┐
     95     * │PLAY│ │    │ 1  │ 2  │ 3  │ 4  │ 5  │ 6  │ 7  │ 8  │ 9  │ 0  │    │
     96     * ├────┤ ├────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┤
     97     * │NEXT│ │    │ !  │ @  │ #  │ $  │ %  │ ^  │ &  │ *  │ (  │ )  │ "  │
     98     * ├────┤ ├────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┤
     99     * │PREV│ │    │    │    │    │    │    │    │    │    │    │    │    │
    100     * ├────┤ ├────┼────┼────┼────┼────┼────┴────┼────┼────┼────┼────┼────┤
    101     * │STOP│ │    │    │    │    │    │    │    │    │    │    │    │    │
    102     * └────┘ └────┴────┴────┴────┴────┴─────────┴────┴────┴────┴────┴────┘
    103     */
    104     [_LOWER] = LAYOUT_all(
    105         _______,      _______,                                                                                           KC_LBRC,   KC_RBRC,   KC_GRAVE,
    106         KC_MPLY,      _______,   KC_1,      KC_2,      KC_3,      KC_4,      KC_5,      KC_6,      KC_7,      KC_8,      KC_9,      KC_0,      _______,
    107         KC_MNXT,      _______,   KC_EXLM,   KC_AT,     KC_HASH,   KC_DLR,    KC_PERC,   KC_CIRC,   KC_AMPR,   KC_ASTR,   KC_LPRN,   KC_RPRN,   KC_DQT,
    108         KC_MPRV,      _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,
    109         KC_MSTP,      _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______
    110     ),
    111 
    112     /* _RAISE (Misc Modifiers / Extended Punctuation)
    113     *
    114     * ┌────┐ ┌────┐                                       ┌────┬────┬────┐
    115     * │PRNT│ │    │                                       │ {  │ }  │ ~  │
    116     * └────┘ └────┘                                       └────┴────┴────┘
    117     * ┌────┐ ┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┐
    118     * │    │ │    │    │    │    │    │    │    │    │    │    │    │    │
    119     * ├────┤ ├────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┤
    120     * │    │ │CAPS│    │    │    │    │    │    │    │    │    │    │    │
    121     * ├────┤ ├────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┤
    122     * │    │ │    │    │    │    │    │    │    │    │    │    │    │    │
    123     * ├────┤ ├────┼────┼────┼────┼────┼────┴────┼────┼────┼────┼────┼────┤
    124     * │    │ │    │    │    │    │    │    │    │    │    │    │    │    │
    125     * └────┘ └────┴────┴────┴────┴────┴─────────┴────┴────┴────┴────┴────┘
    126     */
    127     [_RAISE] = LAYOUT_all(
    128         KC_PSCR,      _______,                                                                                           KC_LCBR,   KC_RCBR,   KC_TILD,
    129         _______,      _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,
    130         _______,      KC_CAPS,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,
    131         _______,      _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,
    132         _______,      _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______
    133     ),
    134 
    135     /* _FUNCTION (F-Row / DFU Reset / RGB Toggle)
    136     *
    137     * ┌────┐ ┌────┐                                       ┌────┬────┬────┐
    138     * │RSET│ │RGB │                                       │F11 │F12 │F13 │
    139     * └────┘ └────┘                                       └────┴────┴────┘
    140     * ┌────┐ ┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┐
    141     * │    │ │    │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ F7 │ F8 │ F9 │F10 │    │
    142     * ├────┤ ├────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┤
    143     * │    │ │    │    │    │    │    │    │    │    │    │    │    │    │
    144     * ├────┤ ├────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┤
    145     * │    │ │    │    │    │    │    │    │    │    │    │    │    │    │
    146     * ├────┤ ├────┼────┼────┼────┼────┼────┴────┼────┼────┼────┼────┼────┤
    147     * │    │ │    │    │    │    │    │    │    │    │    │    │    │    │
    148     * └────┘ └────┴────┴────┴────┴────┴─────────┴────┴────┴────┴────┴────┘
    149     */
    150     [_FUNCTION] = LAYOUT_all(
    151         TD(TD_RST),   UG_TOGG,                                                                                           KC_F11,    KC_F12,    KC_F13,
    152         _______,      _______,   KC_F1,     KC_F2,     KC_F3,     KC_F4,     KC_F5,     KC_F6,     KC_F7,     KC_F8,     KC_F9,     KC_F10,    _______,
    153         _______,      _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,
    154         _______,      _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,
    155         _______,      _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______
    156     )
    157 };
    158 
    159 
    160 
    161 //  KEYMAP TEMPLATE:
    162 //
    163 //  /* <_LAYER>:
    164 //  *
    165 //  * ┌────┐ ┌────┐                                       ┌────┬────┬────┐
    166 //  * │    │ │    │                                       │    │    │    │
    167 //  * └────┘ └────┘                                       └────┴────┴────┘
    168 //  * ┌────┐ ┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┐
    169 //  * │    │ │    │    │    │    │    │    │    │    │    │    │    │    │
    170 //  * ├────┤ ├────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┤
    171 //  * │    │ │    │    │    │    │    │    │    │    │    │    │    │    │
    172 //  * ├────┤ ├────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┤
    173 //  * │    │ │    │    │    │    │    │    │    │    │    │    │    │    │
    174 //  * ├────┤ ├────┼────┼────┼────┼────┼────┴────┼────┼────┼────┼────┼────┤
    175 //  * │    │ │    │    │    │    │    │    │    │    │    │    │    │    │
    176 //  * └────┘ └────┴────┴────┴────┴────┴─────────┴────┴────┴────┴────┴────┘
    177 //  */
    178 //  [<LAYER>] = LAYOUT_all(
    179 //      _______,      _______,                                                                                           _______,   _______,   _______,
    180 //      _______,      _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,
    181 //      _______,      _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,
    182 //      _______,      _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,
    183 //      _______,      _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______,   _______
    184 //  )
    185 
    186 
    187 // Per-Key Tapping Term Definitions:
    188 uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
    189     switch (keycode) {
    190         case TD(TD_DBQT):
    191             return 235;
    192         default:
    193             return TAPPING_TERM;
    194     }
    195 }
    196 
    197 // Encoder Customization: (*Order-of-Keycode Specific)
    198 bool encoder_update_user(uint8_t index, bool clockwise) {
    199     if (index == 0) {
    200         if (clockwise) {
    201             tap_code(KC_VOLU);
    202         } else {
    203             tap_code(KC_VOLD);
    204         }
    205     }
    206     return true;
    207 }
    208 
    209 
    210 
    211 // RGB Indicator Customization: (100% stolen from Jetpacktuxedo)
    212 void keyboard_post_init_user(void) {
    213   #ifdef RGBLIGHT_ENABLE
    214 // Set up RGB effects on _only_ the first LED (index 0):
    215         rgblight_set_effect_range(0, 1);
    216 // Set LED effects to breathing mode in a "terminal-green" type color:
    217         rgblight_sethsv_noeeprom(50, 255, 100);
    218         rgblight_mode_noeeprom(RGBLIGHT_EFFECT_BREATHING + 2);
    219 // Init the second LED to a static color:
    220         rgblight_setrgb_at(225, 185, 0, 1);
    221   #endif // RGBLIGHT_ENABLE
    222 }
    223 
    224 // RGB Indicator Customization: (cont.)
    225 layer_state_t layer_state_set_user(layer_state_t state){
    226     #ifdef RGBLIGHT_ENABLE
    227         uint8_t led1r = 0;
    228         uint8_t led1g = 0;
    229         uint8_t led1b = 0;
    230         if (layer_state_cmp(state, 1)) {
    231             led1b = 255;
    232         }
    233         if (layer_state_cmp(state, 3)) {
    234             led1r = 200;
    235         }
    236         rgblight_setrgb_at(led1r, led1g, led1b, 1);
    237     #endif //RGBLIGHT_ENABLE
    238   return state;
    239 }