keymap.c (12995B)
1 /* Copyright 2017 MogranJM 2 * 3 * This program is free software: you can redistribute it and/or modify 4 * it under the terms of the GNU General Public License as published by 5 * the Free Software Foundation, either version 2 of the License, or 6 * (at your option) any later version. 7 * 8 * This program is distributed in the hope that it will be useful, 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * GNU General Public License for more details. 12 * 13 * You should have received a copy of the GNU General Public License 14 * along with this program. If not, see <http://www.gnu.org/licenses/>. 15 */ 16 #include QMK_KEYBOARD_H 17 18 19 // Each layer gets a name for readability, which is then used in the keymap matrix below. 20 // The underscores don't mean anything - you can have a layer called STUFF or any other name. 21 // Layer names don't all need to be of the same length, obviously, and you can also skip them 22 // entirely and just use numbers. 23 24 enum terminus_mini_layers { 25 _COLEMAK, 26 _QWERTY, 27 _DVORAK, 28 _LOWER, 29 _RAISE, 30 _FUNCTION, 31 _MOUSE, 32 _ADJUST 33 }; 34 35 enum terminus_mini_keycodes { 36 LOWER = SAFE_RANGE, 37 RAISE, 38 FUNCTION, 39 MOUSE, 40 // Custom Macros 41 R_PIPE, 42 R_POINT 43 }; 44 45 #define SPC_LW LT(_LOWER, KC_SPC) 46 #define ENT_RS LT(_RAISE, KC_ENT) 47 48 #define QWERTY PDF(_QWERTY) 49 #define COLEMAK PDF(_COLEMAK) 50 #define DVORAK PDF(_DVORAK) 51 52 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 53 /* Colemak - 54 * ,----------------------------------------------------------------------------------. 55 * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Del | 56 * |-----+------+------+------+------+-------------+------+------+------+------+------| 57 * | BS | A | R | S | T | D | H | N | E | I | O | " | 58 * |-----+------+------+------+------+-------------+------+------+------+------+------| 59 * | LSPO| Z | X | C | V | B | K | M | , | . | / | RSPC | 60 * |-----+------+------+------+------+------+------+------+------+------+------+------| 61 * | Ctrl| LGUI | Lower| LAlt | Space/Lower | Enter/Raise | Fn | Mouse| Menu | Ctrl | 62 * `----------------------------------------------------------------------------------' 63 */ 64 [_COLEMAK] = LAYOUT( 65 KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL, 66 KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, 67 SC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SC_RSPC, 68 KC_LCTL, KC_LGUI, LOWER, KC_LALT, SPC_LW, ENT_RS, MO(5), MO(6), KC_APP, KC_RCTL 69 ), 70 71 /* QWERTY - 72 * ,----------------------------------------------------------------------------------. 73 * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del | 74 * |-----+------+------+------+------+-------------+------+------+------+------+------| 75 * | BS | A | S | D | F | G | H | J | K | L | ; | " | 76 * |-----+------+------+------+------+-------------+------+------+------+------+------| 77 * | LSPO| Z | X | C | V | B | N | M | , | . | / | RSPC | 78 * |-----+------+------+------+------+------+------+------+------+------+------+------| 79 * | Ctrl| LGUI | Lower| LAlt | Space/Lower | Enter/Raise | Fn | Mouse| Menu | Ctrl | 80 * `----------------------------------------------------------------------------------' 81 */ 82 [_QWERTY] = LAYOUT( 83 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, 84 KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, 85 SC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SC_RSPC, 86 KC_LCTL, KC_LGUI, LOWER, KC_LALT, SPC_LW, ENT_RS, MO(5), MO(6), KC_APP, KC_RCTL 87 ), 88 89 /* Dvorak 90 * ,-----------------------------------------------------------------------------------. 91 * | Tab | " | , | . | P | Y | F | G | C | R | L | Del | 92 * |------+------+------+------+------+-------------+------+------+------+------+------| 93 * | BS | A | O | E | U | I | D | H | T | N | S | / | 94 * |------+------+------+------+------+------|------+------+------+------+------+------| 95 * | LSPO | ; | Q | J | K | X | B | M | W | V | Z | RSPC | 96 * |------+------+------+------+------+------+------+------+------+------+------+------| 97 * | Ctrl | LGUI | Lower| LAlt | Space/Lower | Enter/Raise | Fn | Mouse| Menu |Ctrl | 98 * `-----------------------------------------------------------------------------------' 99 */ 100 [_DVORAK] = LAYOUT( 101 KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL, 102 KC_BSPC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, 103 SC_LSPO, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SC_RSPC, 104 KC_LCTL, KC_LGUI, LOWER, KC_LALT, SPC_LW, ENT_RS, MO(5), MO(6), KC_APP, KC_RCTL 105 ), 106 107 /* Lower 108 * ,-----------------------------------------------------------------------------------. 109 * | Tab | PgUp | Home | Up | End | / | 7 | 8 | 9 | * | | Del | 110 * |------+------+------+------+------+------+------+------+------+------+------+------| 111 * | BS | PgDn | Left | Down |Right | - | 4 | 5 | 6 | + | | | 112 * |------+------+------+------+------+------+------+------+------+------+------+------| 113 * | LSPO | Z | X | C | V | = | 1 | 2 | 3 | Enter| | RSPC | 114 * |------+------+------+------+------+------+------+------+------+------+------+------| 115 * | Ctrl | LGUI | Lower| LAlt | Space/Lower | 0 | . | Fn |ADJUST| Ctrl | 116 * `-----------------------------------------------------------------------------------' 117 Want to add tap-dance function to 0 key: Tap=0, doubleTap=Ent 118 */ 119 120 [_LOWER] = LAYOUT( 121 KC_TAB, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_PSLS, KC_7, KC_8, KC_9, KC_PAST, XXXXXXX, _______, 122 _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_MINS, KC_4, KC_5, KC_6, KC_PPLS, XXXXXXX, _______, 123 _______, _______, _______, _______, _______, KC_EQL, KC_1, KC_2, KC_3, KC_PENT, XXXXXXX, _______, 124 _______, _______, _______, _______, _______, KC_0, KC_DOT, MO(5), RAISE, _______ 125 ), 126 127 /* Raise 128 * ,-----------------------------------------------------------------------------------. 129 * | Esc | ! | @ | # | $ | % | ^ | & | * | - | + | Del | 130 * |------+------+------+------+------+------+------+------+------+------+------+------| 131 * | BS | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | " | 132 * |------+------+------+------+------+------+------+------+------+------+------+------| 133 * | LSPO | <- | %>% | { | [ | ` | \ | ] | } | . | ? | RSPC | 134 * |------+------+------+------+------+------+------+------+------+------+------+------| 135 * | Ctrl | LGUI | | LAlt | Space/Lower | Enter/Raise | Fn | Mouse| Raise| Ctrl | 136 * `-----------------------------------------------------------------------------------' 137 */ 138 139 [_RAISE] = LAYOUT( 140 KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_MINS, KC_EQL, _______, 141 _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, 142 _______, R_POINT, R_PIPE, KC_LCBR, KC_LBRC, KC_GRV, KC_BSLS, KC_RBRC, KC_RCBR, KC_DOT, KC_SLSH, _______, 143 _______, _______, XXXXXXX, _______, SPC_LW, ENT_RS, MO(5), MO(6), _______, _______ 144 ), 145 146 /*Function 147 * ,-----------------------------------------------------------------------------------. 148 * | Esc | Mute | Vol- | Vol+ | | | | F1 | F2 | F3 | F4 | Ins | 149 * |------+------+------+------+------+------+------+------+------+------+------+------| 150 * | Caps | Stop | |<< | >/|| | >>| | | | F5 | F6 | F7 | F8 |PrtSc | 151 * |------+------+------+------+------+------+------+------+------+------+------+------| 152 * | LSOB | | | | | | | F9 | F10 | F11 | F12 |ScrLk | 153 * |------+------+------+------+------+------+------+------+------+------+------+------| 154 * | Ctrl | LGUI | | Alt | Space/Lower | Enter/Raise | Fn | | |PsBrk | 155 * `-----------------------------------------------------------------------------------' 156 */ 157 158 [_FUNCTION] = LAYOUT( 159 _______, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, XXXXXXX, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_INS, 160 KC_CAPS, KC_MSTP, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8, KC_PSCR, 161 _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F9, KC_F10, KC_F11, KC_F12, KC_SCRL, 162 _______, _______, XXXXXXX, _______, _______, _______, _______, XXXXXXX, XXXXXXX, KC_PAUS 163 ), 164 165 /* MOUSE 166 * ,---------------------------------------------------------------------------------------. 167 * | Esc | WhlU | WhlL | MsUp | WhlR | | | M1 | M2 | M3 | | | 168 * |------+-------+------+-------+------+------+------+-------+-------+------+------+------| 169 * | | WhlD | MsL | MsDn | MsR | | |LClick |RClick | | | | 170 * |------+-------+------+-------+------+------+------+-------+-------+------+------+------| 171 * | LSPO | | | | | | | | | | | RSCB | 172 * |------+-------+------+-------+------+------+------+-------+-------+------+------+------| 173 * | Ctrl | | | | Sensitivity | Sensitivity | |MOUSE | | Ctrl | 174 * `---------------------------------------------------------------------------------------' 175 */ 176 177 [_MOUSE] = LAYOUT( 178 KC_ESC, MS_WHLU, MS_WHLL, MS_UP, MS_WHLR, XXXXXXX, XXXXXXX, MS_BTN3, MS_BTN4, MS_BTN5, XXXXXXX, XXXXXXX, 179 KC_BSPC, MS_WHLD, MS_LEFT, MS_DOWN, MS_RGHT, XXXXXXX, XXXXXXX, MS_BTN1, MS_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, 180 _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, SC_RSPC, 181 _______, XXXXXXX, XXXXXXX, XXXXXXX, MS_ACL2, MS_ACL0, XXXXXXX, MO(6), XXXXXXX, KC_RCTL 182 ), 183 184 /* Adjust (Lower + Raise) 185 * ,-----------------------------------------------------------------------------------. 186 * | | | | | |QK_BOOT | | | | | | Del | 187 * |------+------+------+------+------+-------------+------+------+------+------+------| 188 * | | | | | | | |Qwerty|Colemk|Dvorak| | | 189 * |------+------+------+------+------+-------------+------+------+------+------+------| 190 * | | | | | | | | | | | | | 191 * |------+------+------+------+------+------+------+------+------+------+------+------| 192 * | | | | | | | | | | | 193 * `-----------------------------------------------------------------------------------' 194 */ 195 196 [_ADJUST] = LAYOUT( 197 _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, KC_DEL, 198 _______, _______, _______, _______, _______, _______, _______, QWERTY, COLEMAK, DVORAK, _______, _______, 199 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 200 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ 201 ) 202 203 }; 204 205 // Cases to switch default layer to QWERTY, COLEMAK or DVORAK and to access ADJUST layer 206 bool process_record_user(uint16_t keycode, keyrecord_t *record) { 207 switch (keycode) { 208 case LOWER: 209 if (record->event.pressed) { 210 layer_on(_LOWER); 211 update_tri_layer(_LOWER, _RAISE, _ADJUST); 212 } else { 213 layer_off(_LOWER); 214 update_tri_layer(_LOWER, _RAISE, _ADJUST); 215 } 216 return false; 217 break; 218 case RAISE: 219 if (record->event.pressed) { 220 layer_on(_RAISE); 221 update_tri_layer(_LOWER, _RAISE, _ADJUST); 222 } else { 223 layer_off(_RAISE); 224 update_tri_layer(_LOWER, _RAISE, _ADJUST); 225 } 226 return false; 227 break; 228 // Macros to send R pointer & dplyr pipe 229 //R Pointer: <- 230 case R_POINT: 231 if (record->event.pressed) { // pointer 232 SEND_STRING("<- "); 233 //return MACRO(D(LSFT), T(COMM), U(LSFT), T(MINS), END); 234 } 235 break; 236 //dplyr pipe: %>% 237 case R_PIPE: 238 if (record->event.pressed) { // dplyr pipe 239 SEND_STRING("%>% "); 240 //return MACRO(D(LSFT), T(5), T(DOT), T(5), U(LSFT), END); 241 } 242 break; 243 } 244 return true; 245 }