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 }