keymap.c (5696B)
1 /* Copyright 2020 Ibnu D. Aji 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 for combos. 19 enum combos { 20 // left hand combinations. 21 Q_W, 22 W_E, 23 E_R, 24 Z_X, 25 C_X, 26 C_V, 27 28 // right hand combinations. 29 P_O, 30 O_U, 31 U_I, 32 SLASH_DOT, 33 DOT_COMMA, 34 COMMA_M, 35 36 // both hands combinations. 37 SLASH_Z, 38 COMMA_X, 39 J_F, 40 }; 41 42 enum { 43 _BASE, 44 _LOWER, 45 _RAISE, 46 _ADJUST, 47 }; 48 49 // thumb keys. 50 #define ALT_ENT ALT_T(KC_ENT) 51 #define SFT_ESC SFT_T(KC_ESC) 52 53 // home row mods. 54 #define CT_S RCTL_T(KC_S) 55 #define CT_L RCTL_T(KC_L) 56 #define SH_A RSFT_T(KC_A) 57 #define SH_SCLN RSFT_T(KC_SCLN) 58 #define AL_D RALT_T(KC_D) 59 #define AL_K RALT_T(KC_K) 60 #define GU_G RGUI_T(KC_G) 61 #define GU_H RGUI_T(KC_H) 62 63 // layer toggle. 64 #define LW_BSPC LT(_LOWER, KC_BSPC) 65 #define RS_SPC LT(_RAISE, KC_SPC) 66 67 // idk, man. not used, i guess. 68 #define RAISE MO(_RAISE) 69 #define LOWER MO(_LOWER) 70 #define ADDDD MO(_ADJUST) 71 #define MUIS MO(_MUIS) 72 73 // common shortcuts for windows and linux that i use. 74 #define NXTTAB LCTL(KC_PGDN) 75 #define PRVTAB LCTL(KC_PGUP) 76 #define UPTAB LCTL(LSFT(KC_PGUP)) 77 #define DNTAB LCTL(LSFT(KC_PGDN)) 78 #define NXTWIN LALT(KC_TAB) 79 #define PRVWIN LALT(LSFT(KC_TAB)) 80 #define CALDL LCTL(LALT(KC_DEL)) 81 #define TSKMGR LCTL(LSFT(KC_ESC)) 82 #define EXPLR LGUI(KC_E) 83 #define LCKGUI LGUI(KC_L) 84 #define CONPST LSFT(KC_INS) 85 #define CLSGUI LALT(KC_F4) 86 87 // left hand combinations. 88 const uint16_t PROGMEM q_w_combo[] = {KC_Q, KC_W, COMBO_END}; 89 const uint16_t PROGMEM w_e_combo[] = {KC_W, KC_E, COMBO_END}; 90 const uint16_t PROGMEM e_r_combo[] = {KC_E, KC_R, COMBO_END}; 91 const uint16_t PROGMEM z_x_combo[] = {KC_Z, KC_X, COMBO_END}; 92 const uint16_t PROGMEM x_c_combo[] = {KC_X, KC_C, COMBO_END}; 93 const uint16_t PROGMEM c_v_combo[] = {KC_C, KC_V, COMBO_END}; 94 95 // right hand combinations. 96 const uint16_t PROGMEM p_o_combo[] = {KC_P, KC_O, COMBO_END}; 97 const uint16_t PROGMEM o_u_combo[] = {KC_O, KC_U, COMBO_END}; 98 const uint16_t PROGMEM u_i_combo[] = {KC_U, KC_I, COMBO_END}; 99 const uint16_t PROGMEM slash_dot_combo[] = {KC_SLSH, KC_DOT, COMBO_END}; 100 const uint16_t PROGMEM dot_comma_combo[] = {KC_DOT, KC_COMM,COMBO_END}; 101 const uint16_t PROGMEM comma_m_combo[] = {KC_COMM, KC_M, COMBO_END}; 102 103 // both hand combinations. 104 const uint16_t PROGMEM z_slash_combo[] = {KC_Z, KC_SLSH, COMBO_END}; 105 const uint16_t PROGMEM x_comma_combo[] = {KC_X, KC_COMM, COMBO_END}; 106 const uint16_t PROGMEM j_f_combo[] = {KC_F, KC_J, COMBO_END}; 107 108 combo_t key_combos[] = { 109 // left hand combinations. 110 [Q_W] = COMBO(q_w_combo, KC_TAB), 111 [W_E] = COMBO(w_e_combo, KC_DQT), 112 [E_R] = COMBO(e_r_combo, KC_UNDS), 113 [Z_X] = COMBO(z_x_combo, KC_ENT), 114 [C_X] = COMBO(x_c_combo, LCTL(KC_W)), 115 [C_V] = COMBO(c_v_combo, KC_DEL), 116 117 // right hand combinations. 118 [P_O] = COMBO(p_o_combo, KC_BSPC), 119 [O_U] = COMBO(o_u_combo, KC_QUOT), 120 [U_I] = COMBO(u_i_combo, KC_MINS), 121 [SLASH_DOT] = COMBO(slash_dot_combo, KC_PIPE), 122 [DOT_COMMA] = COMBO(dot_comma_combo, KC_APP), 123 [COMMA_M] = COMBO(comma_m_combo, KC_DEL), 124 125 // both hand combinations. 126 [SLASH_Z] = COMBO(z_slash_combo, KC_HOME), 127 [COMMA_X] = COMBO(x_comma_combo, KC_END), 128 [J_F] = COMBO(j_f_combo, KC_ENT), 129 }; 130 131 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 132 [_BASE] = LAYOUT_split_3x5_3( 133 KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, 134 SH_A, CT_S, AL_D, KC_F, GU_G, GU_H, KC_J, AL_K, CT_L, SH_SCLN, 135 KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, 136 LOWER, KC_BSPC,SFT_ESC, ALT_ENT,KC_SPC, RAISE 137 ), 138 139 [_RAISE] = LAYOUT_split_3x5_3( 140 KC_EXLM,KC_AT, KC_UP, KC_LCBR,KC_RCBR, KC_BSLS,KC_7, KC_8, KC_9, KC_ASTR , 141 KC_HASH,KC_LEFT,KC_DOWN,KC_RGHT,KC_DLR, KC_EQL, KC_4, KC_5, KC_6, KC_0 , 142 KC_LBRC,KC_RBRC,KC_LPRN,KC_RPRN,KC_AMPR, KC_GRV, KC_1, KC_2, KC_3, KC_PLUS , 143 LOWER, ADDDD, _______, ALT_ENT,RS_SPC, RAISE 144 ), 145 [_LOWER] = LAYOUT_split_3x5_3( 146 KC_ESC, KC_QUES,KC_UNDS,KC_F1, KC_F2, KC_F3, KC_F4, KC_MINS,KC_SLSH,KC_BSPC , 147 KC_LSFT,KC_TAB, KC_PGUP,KC_F5, KC_F6, KC_F7, KC_F8, KC_HOME,KC_LALT,KC_ENT , 148 KC_CAPS,KC_SCRL,KC_PGDN,KC_F9, KC_F10, KC_F11, KC_F12, KC_END, KC_INS, KC_SLSH , 149 LOWER, _______,_______, _______,ADDDD, RAISE 150 ), 151 [_ADJUST] = LAYOUT_split_3x5_3( 152 _______,EXPLR, KC_UP, PRVTAB, PRVWIN, NXTWIN, NXTTAB, _______,_______,LCKGUI, 153 TSKMGR, KC_LEFT,KC_DOWN,KC_RGHT,UPTAB, DNTAB, KC_ENT, KC_LGUI,_______,CALDL, 154 _______,CLSGUI, _______,CONPST, QK_BOOT, _______,_______,_______,_______,_______, 155 _______,_______,_______, _______,_______,_______ 156 ), 157 };