keymap.c (18969B)
1 /* Copyright 2015-2021 Jack Humbert 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 17 #include QMK_KEYBOARD_H 18 19 enum planck_layers { _DVORAK, _QWERTY, _SYMBOL, _MOVE, _NUMPAD, _FKEYS, _SERVICE }; 20 21 enum planck_keycodes { 22 DVORAK = SAFE_RANGE, 23 QWERTY, 24 }; 25 26 // Left-hand home row mods 27 #define HOME_A LGUI_T(KC_A) 28 #define HOME_O LALT_T(KC_O) 29 #define HOME_E LSFT_T(KC_E) 30 #define HOME_U LCTL_T(KC_U) 31 32 // Right-hand home row mods 33 #define HOME_H RCTL_T(KC_H) 34 #define HOME_T RSFT_T(KC_T) 35 #define HOME_N LALT_T(KC_N) 36 #define HOME_S RGUI_T(KC_S) 37 38 #define LOWER LT(_SYMBOL, KC_TAB) 39 #define RAISE LT(_SYMBOL, KC_ENT) 40 41 // clang-format off 42 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 43 // ┌──────────────┬────────┬────────┬───────────┬────────┬─────┬─────┬────────┬─────────────┬────────┬────────┬──────┐ 44 // │ ? │ ' │ , │ . │ p │ y │ f │ g │ c │ r │ l │ ! │ 45 // ├──────────────┼────────┼────────┼───────────┼────────┼─────┼─────┼────────┼─────────────┼────────┼────────┼──────┤ 46 // │ esc │ HOME_A │ HOME_O │ HOME_E │ HOME_U │ i │ d │ HOME_H │ HOME_T │ HOME_N │ HOME_S │ - │ 47 // ├──────────────┼────────┼────────┼───────────┼────────┼─────┼─────┼────────┼─────────────┼────────┼────────┼──────┤ 48 // │ lsft │ ; │ q │ j │ k │ x │ b │ m │ w │ v │ z │ rsft │ 49 // ├──────────────┼────────┼────────┼───────────┼────────┼─────┼─────┼────────┼─────────────┼────────┼────────┼──────┤ 50 // │ MO(_SERVICE) │ │ │ MO(_MOVE) │ LOWER │ spc │ spc │ RAISE │ MO(_NUMPAD) │ │ │ │ 51 // └──────────────┴────────┴────────┴───────────┴────────┴─────┴─────┴────────┴─────────────┴────────┴────────┴──────┘ 52 [_DVORAK] = LAYOUT_planck_grid( 53 KC_QUES , KC_QUOT , KC_COMM , KC_DOT , KC_P , KC_Y , KC_F , KC_G , KC_C , KC_R , KC_L , KC_EXLM, 54 KC_ESC , HOME_A , HOME_O , HOME_E , HOME_U , KC_I , KC_D , HOME_H , HOME_T , HOME_N , HOME_S , KC_MINS, 55 KC_LSFT , KC_SCLN , KC_Q , KC_J , KC_K , KC_X , KC_B , KC_M , KC_W , KC_V , KC_Z , KC_RSFT, 56 MO(_SERVICE) , _______ , _______ , MO(_MOVE) , LOWER , KC_SPC , KC_SPC , RAISE , MO(_NUMPAD) , _______ , _______ , _______ 57 ), 58 59 // ┌──────┬─────┬──────┬──────┬───────┬─────┬─────┬───────┬──────┬─────┬─────┬─────┐ 60 // │ tab │ q │ w │ e │ r │ t │ y │ u │ i │ o │ p │ │ 61 // ├──────┼─────┼──────┼──────┼───────┼─────┼─────┼───────┼──────┼─────┼─────┼─────┤ 62 // │ esc │ a │ s │ d │ f │ g │ h │ j │ k │ l │ ; │ ' │ 63 // ├──────┼─────┼──────┼──────┼───────┼─────┼─────┼───────┼──────┼─────┼─────┼─────┤ 64 // │ lsft │ z │ x │ c │ v │ b │ n │ m │ , │ . │ / │ ent │ 65 // ├──────┼─────┼──────┼──────┼───────┼─────┼─────┼───────┼──────┼─────┼─────┼─────┤ 66 // │ lctl │ │ lalt │ lgui │ LOWER │ spc │ spc │ RAISE │ rgui │ │ │ │ 67 // └──────┴─────┴──────┴──────┴───────┴─────┴─────┴───────┴──────┴─────┴─────┴─────┘ 68 [_QWERTY] = LAYOUT_planck_grid( 69 KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , _______, 70 KC_ESC , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN , KC_QUOT, 71 KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM , KC_DOT , KC_SLSH , KC_ENT , 72 KC_LCTL , _______ , KC_LALT , KC_LGUI , LOWER , KC_SPC , KC_SPC , RAISE , KC_RGUI , _______ , _______ , _______ 73 ), 74 75 // ┌──────┬─────┬─────┬─────┬───┬─────┬─────┬───┬─────┬─────┬─────┬──────┐ 76 // │ │ & │ < │ > │ % │ @ │ ^ │ $ │ [ │ ] │ ` │ bspc │ 77 // ├──────┼─────┼─────┼─────┼───┼─────┼─────┼───┼─────┼─────┼─────┼──────┤ 78 // │ ~ │ | │ : │ ( │ 0 │ ) │ { │ 1 │ } │ = │ + │ _ │ 79 // ├──────┼─────┼─────┼─────┼───┼─────┼─────┼───┼─────┼─────┼─────┼──────┤ 80 // │ lsft │ 6 │ 7 │ 8 │ 9 │ # │ * │ 2 │ 3 │ 4 │ 5 │ rsft │ 81 // ├──────┼─────┼─────┼─────┼───┼─────┼─────┼───┼─────┼─────┼─────┼──────┤ 82 // │ │ │ │ │ \ │ │ │ / │ │ │ │ │ 83 // └──────┴─────┴─────┴─────┴───┴─────┴─────┴───┴─────┴─────┴─────┴──────┘ 84 [_SYMBOL] = LAYOUT_planck_grid( 85 _______ , KC_AMPR , KC_LT , KC_GT , KC_PERC , KC_AT , KC_CIRC , KC_DLR , KC_LBRC , KC_RBRC , KC_GRV , KC_BSPC, 86 KC_TILD , KC_PIPE , KC_COLN , KC_LPRN , KC_0 , KC_RPRN , KC_LCBR , KC_1 , KC_RCBR , KC_EQL , KC_PLUS , KC_UNDS, 87 KC_LSFT , KC_6 , KC_7 , KC_8 , KC_9 , KC_HASH , KC_ASTR , KC_2 , KC_3 , KC_4 , KC_5 , KC_RSFT, 88 _______ , _______ , _______ , _______ , KC_BSLS , _______ , _______ , KC_SLSH , _______ , _______ , _______ , _______ 89 ), 90 91 // ┌─────┬─────┬─────┬─────┬────────────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ 92 // │ │ │ │ │ │ │ │ 7 │ 8 │ 9 │ │ │ 93 // ├─────┼─────┼─────┼─────┼────────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ 94 // │ │ │ │ │ │ │ │ 4 │ 5 │ 6 │ │ │ 95 // ├─────┼─────┼─────┼─────┼────────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ 96 // │ │ │ │ │ │ │ │ 1 │ 2 │ 3 │ │ │ 97 // ├─────┼─────┼─────┼─────┼────────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ 98 // │ │ │ │ │ MO(_FKEYS) │ │ │ │ │ │ │ │ 99 // └─────┴─────┴─────┴─────┴────────────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ 100 [_NUMPAD] = LAYOUT_planck_grid( 101 _______ , _______ , _______ , _______ , _______ , _______ , _______ , KC_7 , KC_8 , KC_9 , _______ , _______, 102 _______ , _______ , _______ , _______ , _______ , _______ , _______ , KC_4 , KC_5 , KC_6 , _______ , _______, 103 _______ , _______ , _______ , _______ , _______ , _______ , _______ , KC_1 , KC_2 , KC_3 , _______ , _______, 104 _______ , _______ , _______ , _______ , MO(_FKEYS) , _______ , _______ , _______ , _______ , _______ , _______ , _______ 105 ), 106 107 // ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ 108 // │ │ │ │ │ │ │ f10 │ f7 │ f8 │ f9 │ │ │ 109 // ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ 110 // │ │ │ │ │ │ │ f11 │ f4 │ f5 │ f6 │ │ │ 111 // ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ 112 // │ │ │ │ │ │ │ f12 │ f1 │ f2 │ f3 │ │ │ 113 // ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ 114 // │ │ │ │ │ │ │ │ │ │ │ │ │ 115 // └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ 116 [_FKEYS] = LAYOUT_planck_grid( 117 _______ , _______ , _______ , _______ , _______ , _______ , KC_F10 , KC_F7 , KC_F8 , KC_F9 , _______ , _______, 118 _______ , _______ , _______ , _______ , _______ , _______ , KC_F11 , KC_F4 , KC_F5 , KC_F6 , _______ , _______, 119 _______ , _______ , _______ , _______ , _______ , _______ , KC_F12 , KC_F1 , KC_F2 , KC_F3 , _______ , _______, 120 _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ 121 ), 122 123 // ┌─────┬─────┬─────┬─────┬─────┬─────┬──────┬──────┬──────┬──────┬─────┬─────┐ 124 // │ │ │ │ │ │ │ home │ pgdn │ pgup │ end │ │ │ 125 // ├─────┼─────┼─────┼─────┼─────┼─────┼──────┼──────┼──────┼──────┼─────┼─────┤ 126 // │ │ │ │ │ │ │ left │ down │ up │ rght │ │ │ 127 // ├─────┼─────┼─────┼─────┼─────┼─────┼──────┼──────┼──────┼──────┼─────┼─────┤ 128 // │ │ │ │ │ │ │ │ │ │ │ │ │ 129 // ├─────┼─────┼─────┼─────┼─────┼─────┼──────┼──────┼──────┼──────┼─────┼─────┤ 130 // │ │ │ │ │ │ │ │ │ │ │ │ │ 131 // └─────┴─────┴─────┴─────┴─────┴─────┴──────┴──────┴──────┴──────┴─────┴─────┘ 132 [_MOVE] = LAYOUT_planck_grid( 133 _______ , _______ , _______ , _______ , _______ , _______ , KC_HOME , KC_PGDN , KC_PGUP , KC_END , _______ , _______, 134 _______ , _______ , _______ , _______ , _______ , _______ , KC_LEFT , KC_DOWN , KC_UP , KC_RGHT , _______ , _______, 135 _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______, 136 _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ 137 ), 138 139 // ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────────┬─────────┬─────┬─────────┬─────────┐ 140 // │ │ │ │ │ │ │ │ │ │ │ │ │ 141 // ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────────┼─────────┼─────┼─────────┼─────────┤ 142 // │ │ │ │ │ │ │ │ RGB_HUI │ RGB_HUD │ │ QWERTY │ DVORAK │ 143 // ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────────┼─────────┼─────┼─────────┼─────────┤ 144 // │ │ │ │ │ │ │ │ RGB_SAI │ RGB_SAD │ │ │ │ 145 // ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────────┼─────────┼─────┼─────────┼─────────┤ 146 // │ │ │ │ │ │ │ │ RGB_VAI │ RGB_VAD │ │ QK_MAKE │ QK_BOOT │ 147 // └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────────┴─────────┴─────┴─────────┴─────────┘ 148 [_SERVICE] = LAYOUT_planck_grid( 149 _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______, 150 _______ , _______ , _______ , _______ , _______ , _______ , _______ , RGB_HUI , RGB_HUD , _______ , QWERTY , DVORAK , 151 _______ , _______ , _______ , _______ , _______ , _______ , _______ , RGB_SAI , RGB_SAD , _______ , _______ , _______, 152 _______ , _______ , _______ , _______ , _______ , _______ , _______ , RGB_VAI , RGB_VAD , _______ , QK_MAKE , QK_BOOT 153 ) 154 }; 155 // clang-format on 156 157 /* [_BASE] = LAYOUT_planck_grid( */ 158 /* _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______, */ 159 /* _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______, */ 160 /* _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______, */ 161 /* _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ */ 162 /* ) */ 163 164 bool process_record_user(uint16_t keycode, keyrecord_t *record) { 165 switch (keycode) { 166 case DVORAK: 167 if (record->event.pressed) { 168 set_single_persistent_default_layer(_DVORAK); 169 } 170 return false; 171 break; 172 case QWERTY: 173 if (record->event.pressed) { 174 set_single_persistent_default_layer(_QWERTY); 175 } 176 return false; 177 break; 178 } 179 return true; 180 } 181 182 uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { 183 switch (keycode) { 184 case LOWER: 185 return 100; 186 case RAISE: 187 return 100; 188 default: 189 return TAPPING_TERM; 190 } 191 } 192 193 // clang-format off 194 const char chordal_hold_layout[MATRIX_ROWS][MATRIX_COLS] PROGMEM = 195 LAYOUT_planck_grid( 196 'L' , 'L' , 'L' , 'L' , 'L' , 'L' , 'R' , 'R' , 'R' , 'R' , 'R' , 'R' , 197 'L' , 'L' , 'L' , 'L' , 'L' , 'L' , 'R' , 'R' , 'R' , 'R' , 'R' , 'R' , 198 'L' , 'L' , 'L' , 'L' , 'L' , 'L' , 'R' , 'R' , 'R' , 'R' , 'R' , 'R' , 199 'L' , 'L' , 'L' , 'L' , 'L' , '*' , '*' , 'R' , 'R' , 'R' , 'R' , 'R' 200 ); 201 // clang-format on