keymap.c (12801B)
1 /* Copyright 2021 klackygears 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 layer_names { 19 _QWERTY, 20 _LOWER, 21 _RAISE, 22 _ADJUST, 23 _FUNCTION, 24 }; 25 26 enum custom_keycodes { 27 RGBRST = SAFE_RANGE, 28 }; 29 30 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 31 32 /* Qwerty 33 * ,-----------------------------------------. ,------. ,----------------------------------------. 34 * | Tab | Q | W | E | R | T | | Mute | | Y | U | I | O | P | Bksp | 35 * |------+------+------+------+------+------| `------' |------+------+------+------+------+------| 36 * | Func | A | S | D | F | G | | H | J | K | L | ; | Enter| 37 * |------+------+------+------+------+------| |------+------+------+------+------+------| 38 * | Shift| Z | X | C | V | B | | N | M | , | . | / | ' | 39 * |------+------+------|--------------------+ ,------. +--------------------|------+------+------| 40 * | Ctrl | ` | GUI | Alt |Lower |Space | |Space | |Space |Raise | Left | Down | Up |Right | 41 * `-----------------------------------------' `------' `-----------------------------------------' 42 */ 43 [_QWERTY] = LAYOUT( 44 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_MUTE, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, 45 MO(_FUNCTION), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, 46 OSM(MOD_LSFT), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT, 47 KC_LCTL, KC_GRV, KC_LGUI, KC_LALT, MO(_LOWER), KC_SPC, KC_SPC, KC_SPC, MO(_RAISE), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT 48 ), 49 /* Lower 50 * ,-----------------------------------------. ,------. ,-----------------------------------------. 51 * | Esc | ! | @ | # | $ | % | | | | ^ | & | * | ( | ) | Del | 52 * |------+------+------+------+------+------| `------' |------+------+------+------+------+------| 53 * | F1 | F2 | F3 | F4 | F5 | F6 | | | _ | + | { | } |Enter | 54 * |------+------+------+------+------+------| |------+------+------+------+------+------| 55 * | F7 | F8 | F9 | F10 | F11 | F12 | | | | | Mute | | | | 56 * |------+------+------|--------------------+ ,------. +--------------------|------+------+------| 57 * | | | | |Lower | Bksp | | | | Bksp |Raise | Next | Vol- | Vol+ | Play | 58 * `-----------------------------------------' `------' `-----------------------------------------' 59 */ 60 [_LOWER] = LAYOUT( 61 KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, 62 KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, _______, 63 KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, KC_MUTE, _______, KC_PIPE, 64 _______, _______, _______, _______, _______, KC_BSPC, _______, KC_BSPC, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY 65 ), 66 /* Raise 67 * ,-----------------------------------------. ,------. ,-----------------------------------------. 68 * | Esc | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | Del | 69 * |------+------+------+------+------+------| `------' |------+------+------+------+------+------| 70 * | | 4 | 5 | 6 | + | F5 | | F6 | - | = | [ | ] |Enter | 71 * |------+------+------+------+------+------| |------+------+------+------+------+------| 72 * |Enter | 7 | 8 | 9 | - | F11 | | F12 |ISO # |ISO / | Mute | | \ | 73 * |------+------+------|--------------------+ ,------. +--------------------|------+------+------| 74 * | | , | 0 | . |Lower | Bksp | | | | Bksp |Raise | Next | Vol- | Vol+ | Play | 75 * `-----------------------------------------' `------' `-----------------------------------------' 76 */ 77 [_RAISE] = LAYOUT( 78 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, 79 _______, KC_4, KC_5, KC_6, KC_PLUS, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______, 80 KC_ENT, KC_7, KC_8, KC_9, KC_MINS, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_MUTE, _______, KC_BSLS, 81 _______, KC_COMM, KC_0, KC_DOT, _______, KC_BSPC, _______, KC_BSPC, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY 82 ), 83 /* Adjust (Lower + Raise) 84 * ,-----------------------------------------. ,------. ,-----------------------------------------. 85 * | | | | | | | | | |RGBRST|RGBMOD|RGBVAI|RGBSAI|RGBHUI| | 86 * |------+------+------+------+------+------| `------' |------+------+------+------+------+------| 87 * | | | | | | | | |RGBRMO|RGBVAD|RGBSAD|RGBHUD|RGBTOG| 88 * |------+------+------+------+------+------| |------+------+------+------+------+------| 89 * | | | | | | | | | | | | |BLSTEP| 90 * |------+------+------|--------------------+ ,------. +--------------------|------+------+------| 91 * | | | | | | | | | | | | | | | QK_BOOT| 92 * `-----------------------------------------' `------' `-----------------------------------------' 93 */ 94 [_ADJUST] = LAYOUT( 95 _______, _______, _______, _______, _______, _______, _______, RGBRST, RM_NEXT, RM_VALU, RM_SATU, RM_HUEU, _______, 96 _______, _______, _______, _______, _______, _______, _______, RM_PREV, RM_VALD, RM_SATD, RM_HUED, RM_TOGG, 97 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_STEP, 98 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT 99 ), 100 /* Function 101 * ,-----------------------------------------. ,------. ,-----------------------------------------. 102 * | | | | | | | | | | | | Up | | | | 103 * |------+------+------+------+------+------| `------' |------+------+------+------+------+------| 104 * | | | | | | | | | Left | Down |Right | | | 105 * |------+------+------+------+------+------| |------+------+------+------+------+------| 106 * | Caps | | | | | | | | | | | | | 107 * |------+------+------|--------------------+ ,------. +--------------------|------+------+------| 108 * | | | | | | | | | | | | | | | | 109 * `-----------------------------------------' `------' `-----------------------------------------' 110 */ 111 [_FUNCTION] = LAYOUT( 112 _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, _______, 113 _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, 114 KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 115 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ 116 ) 117 }; 118 119 layer_state_t layer_state_set_user(layer_state_t state) { 120 return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); 121 } 122 123 #ifdef OLED_ENABLE 124 125 126 static void render_ein60_logo(void) { 127 static const char PROGMEM ein60_logo[] = { 128 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 11,251,139,139,139,139,139,139,139,139,139,139,139, 11, 15, 0,240,240, 16,240, 0,240,240, 16,240,224,192,128, 0, 0, 0, 0,240, 16,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254,255, 11,251,139,139,139,139,139,139,139,139,139,139,139,143,128, 0, 0, 0, 0,254,255, 11,251, 11, 11, 11, 11,139,203,235,123,187,219,235,251,255, 7,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 4,253,197,197,197,197,197,197,197,197,197,197,199,192,192, 0,255,255, 0,255, 0,255,255, 0,254, 13, 27, 55,111,222,188,120,255, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0,255,197,197,197,197,197,197,197,197,197,197,253,253,255,131,254, 0, 0,255,255, 0,255,184,220,238,247,219,205,198,195,193,192,255,255,255,128,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 0, 3, 3, 2, 3, 0, 3, 3, 2, 3, 0, 0, 0, 0, 0, 1, 3, 2, 2, 3, 0, 8, 28, 20, 20, 20, 20, 20, 28, 8, 0, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 0, 0, 0, 1, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 132 }; 133 oled_write_raw_P(ein60_logo, sizeof(ein60_logo)); 134 } 135 136 static void render_status(void) { 137 // Host Keyboard Layer Status 138 oled_write_P(PSTR("Layer: "), false); 139 switch (get_highest_layer(layer_state)) { 140 case _QWERTY: 141 oled_write_P(PSTR("Default\n"), false); 142 break; 143 case _LOWER: 144 oled_write_P(PSTR("Lower\n"), false); 145 break; 146 case _RAISE: 147 oled_write_P(PSTR("Raise\n"), false); 148 break; 149 case _ADJUST: 150 oled_write_P(PSTR("Adjust\n"), false); 151 break; 152 case _FUNCTION: 153 oled_write_P(PSTR("FN\n"), false); 154 break; 155 default: 156 // Or use the write_ln shortcut over adding '\n' to the end of your string 157 oled_write_ln_P(PSTR("Undefined"), false); 158 } 159 160 161 // Host Keyboard LED Status 162 led_t led_state = host_keyboard_led_state(); 163 oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); 164 oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); 165 oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); 166 167 oled_set_cursor(1,2); 168 } 169 170 bool oled_task_user(void) { 171 172 render_status(); 173 oled_write_ln_P(PSTR(""), false); 174 render_ein60_logo(); 175 return false; 176 } 177 #endif 178 179 180 bool encoder_update_user(uint8_t index, bool clockwise) { 181 if (index == 0) { /* First encoder */ 182 if (clockwise) { 183 tap_code(KC_VOLU); 184 } else { 185 tap_code(KC_VOLD); 186 } 187 } else if (index == 1) { /* Second encoder */ 188 if (clockwise) { 189 tap_code(KC_DOWN); 190 } else { 191 tap_code(KC_UP); 192 } 193 } 194 return true; 195 } 196 197 bool process_record_user(uint16_t keycode, keyrecord_t *record) { 198 switch (keycode) { 199 case RGBRST: 200 #ifdef RGBLIGHT_ENABLE 201 if (record->event.pressed) { 202 eeconfig_update_rgblight_default(); 203 rgblight_enable(); 204 } 205 #endif 206 break; 207 } 208 return true; 209 }