keymap.c (20239B)
1 /* Copyright 2021 Christoph Rehmann (crehmann) 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 enum layers { 19 _BASE = 0, 20 _NAVR, 21 _SYMB, 22 _NUMR, 23 _FUNL, 24 _ADJL 25 }; 26 27 28 // Aliases for readability 29 #define BASE DF(_BASE) 30 #define NAVR MO(_NAVR) 31 #define SYMB MO(_SYMB) 32 #define NUMR MO(_NUMR) 33 #define FUNL MO(_FUNL) 34 #define ADJL MO(_ADJL) 35 36 // Left-hand home row mods 37 #define RALT_X RALT_T(KC_X) 38 #define GUI_A LGUI_T(KC_A) 39 #define ALT_S LALT_T(KC_S) 40 #define CTL_D LCTL_T(KC_D) 41 #define SFT_F LSFT_T(KC_F) 42 43 // Right-hand home row mods 44 #define SFT_J RSFT_T(KC_J) 45 #define CTL_K RCTL_T(KC_K) 46 #define ALT_L LALT_T(KC_L) 47 #define GUI_SCL RGUI_T(KC_SCLN) 48 #define RALT_DT RALT_T(KC_DOT) 49 50 // Left-hand outer column 51 #define CTL_ESC MT(MOD_LCTL, KC_ESC) 52 #define SFT_TAB MT(MOD_LSFT, KC_TAB) 53 54 // Thumbcluster 55 #define UC_TL1 MS_BTN1 56 #define UC_TL2 LT(NAVR, KC_SPC) 57 #define UC_TL3 LT(NUMR, KC_TAB) 58 59 #define UC_TR3 LT(FUNL, KC_BSPC) 60 #define UC_TR2 LT(SYMB, KC_ENT) 61 #define UC_TR1 MS_BTN2 62 63 // Shortcuts 64 #define UC_COPY LCTL(KC_C) 65 #define UC_PSTE LCTL(KC_V) 66 #define UC_CUT LCTL(KC_X) 67 #define UC_OSFT OSM(MOD_LSFT) 68 69 // clang-format off 70 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 71 72 // /* 73 // * Base Layer 74 // * 75 // * ,----------------------------------. ,----------------------------------. 76 // * | Q | W | E | R | T | | Y | U | I | O | P | 77 // * | | | | | | | | | | | | 78 // * ,------+------+------+------+------+------| |------+------+------+------+------+------. 79 // * | OSM | A | S | D | F | G | | H | J | K | L | ; : | Bksp | 80 // * | Shift| GUI | LALT | LCTL | LSFT | | | | LSFT | LCTL | ALT | GUI | | 81 // * |------+------+------+------+------+------| |------+------+------+------+------+------| 82 // * | ESC | Z | X | C | F | B | | N | M | , < | . > | / ? | ADJL | 83 // * | CTL | | RALT | | | | | | | | RALT | | | 84 // * `----------------------------------+------+-------------. ,-------------+------+----------------------------------' 85 // * | BTN1 | Space| TAB | | Bksp| Enter| BTN2 | 86 // * | | NAVR | NUMR | | FUNL| SYML | | 87 // * `--------------------' `--------------------' 88 // */ 89 [_BASE] = LAYOUT( 90 KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , 91 UC_OSFT, GUI_A , ALT_S , CTL_D , SFT_F , KC_G , KC_H , SFT_J , CTL_K , ALT_L , GUI_SCL, KC_DEL, 92 CTL_ESC, KC_Z , RALT_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, RALT_DT, KC_SLSH, ADJL , 93 MS_BTN1, UC_TL2 , UC_TL3 , UC_TR3 , UC_TR2 , UC_TR1 94 ), 95 96 // /* 97 // * Navigation Layer (Right) 98 // * 99 // * ,----------------------------------. ,----------------------------------. 100 // * | | | | | | |Insert| Cut | PgUp | PgDn | | 101 // * | | | | | | | | | | | | 102 // * ,------+------+------+------+------+------| |------+------+------+------+------+------. 103 // * | | | | | | | | Copy | ← | ↑ | ↓ | → | | 104 // * | | | | | | | | | | | | | | 105 // * |------+------+------+------+------+------| |------+------+------+------+------+------| 106 // * | | | | | | | | Paste| Home | WH_U | WH_D | End | | 107 // * | | | | | | | | | | | | | | 108 // * `----------------------------------+------+-------------. ,-------------+------+----------------------------------' 109 // * | | | | | Bksp | Enter| | 110 // * | | | | | | | | 111 // * `--------------------' `--------------------' 112 // */ 113 [_NAVR] = LAYOUT( 114 _______, _______, _______, _______, _______, KC_INS , UC_CUT , KC_PGUP, KC_PGDN, _______, 115 _______, _______, _______, _______, _______, _______, UC_COPY, KC_LEFT, KC_UP , KC_DOWN, KC_RGHT, _______, 116 _______, _______, _______, _______, _______, _______, UC_PSTE, KC_HOME, MS_WHLU, MS_WHLD, KC_END , _______, 117 _______, _______, _______, KC_BSPC, KC_ENT , _______ 118 ), 119 // -------------------------------------------------------------------------------------------------------------------------------------------------------- 120 121 122 // /* 123 // * Symbol Layer (Right) 124 // 125 // * ,----------------------------------. ,----------------------------------. 126 // * | ` | ~ | | | \ | | | | / | + | = | ? | 127 // * | | | | | | | | | | | | 128 // * ,------+------+------+------+------+------| |------+------+------+------+------+------. 129 // * | | ! | @ | # | $ | % | | ^ | & | * | ( | ) | | 130 // * | | | | | | | | | | | | | | 131 // * |------+------+------+------+------+------| |------+------+------+------+------+------| 132 // * | | : | ; | - | [ | { | | } | ] | _ | , | . | | 133 // * | | | | | | | | | | | | | | 134 // * `----------------------------------+------+-------------. ,-------------+------+----------------------------------' 135 // * | | Space| TAB | | Bksp | Enter| | 136 // * | | | | | | | | 137 // * `--------------------' `--------------------' 138 // * 139 [_SYMB] = LAYOUT( 140 KC_GRV , KC_TILD, KC_PIPE, KC_BSLS, _______, _______, KC_SLSH, KC_PLUS, KC_EQL , KC_QUES, 141 _______, KC_EXLM, KC_AT , KC_HASH, KC_DLR , KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, 142 _______, KC_COLN, KC_SCLN, KC_MINS, KC_LBRC, KC_LCBR, KC_RCBR, KC_RBRC, KC_UNDS, KC_COMM, KC_DOT , _______, 143 _______, KC_SPC , KC_TAB , KC_BSPC, KC_ENT , _______ 144 ), 145 146 // /* 147 // * Number Layer (Right) 148 // * 149 // * ,----------------------------------. ,----------------------------------. 150 // * | | | | | | | / | 7 | 8 | 9 | - | 151 // * | | | | | | | | | | | | 152 // * ,------+------+------+------+------+------| |------+------+------+------+------+------. 153 // * | | | | | | | | * | 4 | 5 | 6 | + | | 154 // * | | | | | | | | | | | | | | 155 // * |------+------+------+------+------+------| |------+------+------+------+------+------| 156 // * | | | | | | | | 0 | 1 | 2 | 3 | . | | 157 // * | | | | | | | | | | | | | | 158 // * `----------------------------------+------+-------------. ,-------------+------+----------------------------------' 159 // * | | | | | Bksp | Enter| | 160 // * | | | | | | | | 161 // * `--------------------' `--------------------' 162 // */ 163 [_NUMR] = LAYOUT( 164 _______, _______, _______, _______, _______, KC_SLSH, KC_7 , KC_8 , KC_9 , KC_MINS, 165 _______, _______, _______, _______, _______, _______, KC_ASTR, KC_4 , KC_5 , KC_6 , KC_PLUS, _______, 166 _______, _______, _______, _______, _______, _______, KC_0 , KC_1 , KC_2 , KC_3 , KC_DOT , _______, 167 _______, _______, _______, KC_BSPC, KC_ENT , _______ 168 ), 169 170 // /* 171 // * Function Layer (Left) 172 // * 173 // * ,----------------------------------. ,----------------------------------. 174 // * | F12 | F7 | F8 | F9 | Pause| | | | | | | 175 // * | | | | | | | | | | | | 176 // * ,------+------+------+------+------+------| |------+------+------+------+------+------. 177 // * | | F11 | F4 | F5 | F6 | PrScr| | | | | | | | 178 // * | | | | | | | | | | | | | | 179 // * |------+------+------+------+------+------| |------+------+------+------+------+------| 180 // * | | F10 | F1 | F2 | F3 | CapsL| | | | | | | | 181 // * | | | | | | | | | | | | | | 182 // * `----------------------------------+------+-------------. ,-------------+------+----------------------------------' 183 // * | | Space| TAB | | | | | 184 // * | | | | | | | | 185 // * `--------------------' `--------------------' 186 // */ 187 [_FUNL] = LAYOUT( 188 KC_F12 , KC_F7 , KC_F8 , KC_F9 , KC_PAUS, _______, _______, _______, _______, _______, 189 _______, KC_F11 , KC_F4 , KC_F5 , KC_F6 , KC_PSCR, _______, _______, _______, _______, _______, _______, 190 _______, KC_F10 , KC_F1 , KC_F2 , KC_F3 , KC_CAPS, _______, _______, _______, _______, _______, _______, 191 _______, KC_SPC , KC_TAB , _______, _______, _______ 192 ), 193 194 // /* 195 // * Adjustment Layer (Left) 196 // * 197 // * ,----------------------------------. ,----------------------------------. 198 // * | | | | | | | | | | | | 199 // * | | | | | | | | | | | | 200 // * ,------+------+------+------+------+------| |------+------+------+------+------+------. 201 // * | |M Prev| VolDn| VolDn|M Next| | | | | | | | | 202 // * | | | | | | | | | | | | | | 203 // * |------+------+------+------+------+------| |------+------+------+------+------+------| 204 // * | | | | Mute | Play | | | | | | | | | 205 // * | | | | | | | | | | | | | | 206 // * `----------------------------------+------+-------------. ,-------------+------+----------------------------------' 207 // * | | Space| TAB | | | | | 208 // * | | | | | | | | 209 // * `--------------------' `--------------------' 210 // */ 211 [_ADJL] = LAYOUT( 212 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 213 _______, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, 214 _______, _______, _______, KC_MUTE, KC_MPLY, _______, _______, _______, _______, _______, _______, _______, 215 _______, KC_SPC , KC_TAB , _______, _______, _______ 216 ), 217 218 // -------------------------------------------------------- TEMPLATE ------------------------------------------------------------------------------------- 219 // /* 220 // * Layer 221 // * 222 // * ,----------------------------------. ,----------------------------------. 223 // * | | | | | | | | | | | | 224 // * | | | | | | | | | | | | 225 // * ,------+------+------+------+------+------| |------+------+------+------+------+------. 226 // * | | | | | | | | | | | | | | 227 // * | | | | | | | | | | | | | | 228 // * |------+------+------+------+------+------| |------+------+------+------+------+------| 229 // * | | | | | | | | | | | | | | 230 // * | | | | | | | | | | | | | | 231 // * `----------------------------------+------+-------------. ,-------------+------+----------------------------------' 232 // * | | | | | | | | 233 // * | | | | | | | | 234 // * `--------------------' `--------------------' 235 // */ 236 // [_LAYERINDEX] = LAYOUT( 237 // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 238 // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 239 // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 240 // _______, _______, _______, _______, _______, _______ 241 // ), 242 // -------------------------------------------------------------------------------------------------------------------------------------------------------- 243 }; 244 245 // uncommint this and modify the timings if the home row mods are not working for you 246 /* 247 uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { 248 switch (keycode) { 249 case GUI_A: 250 return TAPPING_TERM + 150; 251 case ALT_S: 252 return TAPPING_TERM + 50; 253 case ALT_L: 254 return TAPPING_TERM + 50; 255 case GUI_SCL: 256 return TAPPING_TERM + 150; 257 default: 258 return TAPPING_TERM; 259 } 260 } 261 */ 262 263 #ifdef HAPTIC_ENABLE 264 265 bool get_haptic_enabled_key(uint16_t keycode, keyrecord_t *record) { 266 switch (keycode) { 267 case MS_BTN1 ... MS_BTN5: 268 return true; 269 break; 270 } 271 272 return false; 273 } 274 #endif