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