keymap.c (2944B)
1 /* Copyright 2021 projectcain 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 enum layers{ 19 BASE, 20 NUM, 21 SYM, 22 META 23 }; 24 25 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 26 [BASE] = LAYOUT_all( 27 KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, 28 KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOTE, 29 KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, 30 MO(1), KC_LCTL, MO(1), SFT_T(KC_BSPC), KC_SPACE, KC_SPACE, MO(2), KC_LALT, MO(2) 31 ), 32 33 [NUM] = LAYOUT_all( 34 KC_Q, KC_W, KC_E, KC_R, KC_T, KC_KP_SLASH, KC_7, KC_8, KC_9, KC_MINUS, KC_BSPC, 35 KC_A, KC_S, KC_D, KC_F, KC_G, KC_KP_ASTERISK, KC_4, KC_5, KC_6, KC_PLUS, 36 SC_LCPO, KC_X, KC_C, KC_V, KC_B, KC_0, KC_1, KC_2, KC_3, SC_RCPC, 37 MO(1), KC_LCTL, KC_TRNS, SFT_T(KC_BSPC), KC_TRNS, KC_SPACE, KC_TRNS, KC_LALT, MO(2) 38 ), 39 40 [SYM] = LAYOUT_all( 41 S(KC_GRV), KC_GRV, KC_TRNS, S(KC_BSLS), KC_BSLS, KC_TRNS, S(KC_MINS), KC_EQL, KC_TRNS, C(KC_W), QK_BOOT, 42 S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), KC_SCLN, S(KC_SCLN), 43 S(KC_LBRC), KC_LBRC, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_RBRC, S(KC_RBRC), 44 MO(1), KC_LCTL, KC_TRNS, SFT_T(KC_BSPC), KC_TRNS, KC_SPACE, KC_TRNS, KC_LALT, MO(2) 45 ), 46 47 }; 48 49 50 51 enum combos { 52 KL_SLSH, 53 JK_MINUS, 54 LQUOTE_ENTER, 55 QW_ESC, 56 AS_TAB, 57 FJ_LGUI 58 }; 59 60 const uint16_t PROGMEM kl_combo[] = {KC_K, KC_L, COMBO_END}; 61 const uint16_t PROGMEM jk_combo[] = {KC_J, KC_K, COMBO_END}; 62 const uint16_t PROGMEM lquote_combo[] = {KC_L, KC_QUOTE, COMBO_END}; 63 const uint16_t PROGMEM qw_combo[] = {KC_Q, KC_W, COMBO_END}; 64 const uint16_t PROGMEM as_combo[] = {KC_A, KC_S, COMBO_END}; 65 const uint16_t PROGMEM fj_combo[] = {KC_F, KC_J, COMBO_END}; 66 67 combo_t key_combos[] = { 68 [KL_SLSH] = COMBO(kl_combo, S(KC_SLSH)), 69 [JK_MINUS] = COMBO(jk_combo, KC_MINUS), 70 [LQUOTE_ENTER] = COMBO(lquote_combo, KC_ENTER), 71 [QW_ESC] = COMBO(qw_combo, KC_ESC), 72 [AS_TAB] = COMBO(as_combo, KC_TAB), 73 [FJ_LGUI] = COMBO(fj_combo, KC_LGUI) 74 };