keymap.c (6295B)
1 /* Copyright 2022 DOIO 2 * Copyright 2022 HorrorTroll <https://github.com/HorrorTroll> 3 * 4 * This program is free software: you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License as published by 6 * the Free Software Foundation, either version 2 of the License, or 7 * (at your option) any later version. 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with this program. If not, see <http://www.gnu.org/licenses/>. 16 */ 17 18 #include QMK_KEYBOARD_H 19 20 // OLED animation 21 #include "lib/layer_status/layer_status.h" 22 23 // Each layer gets a name for readability, which is then used in the keymap matrix below. 24 // The underscores don't mean anything - you can have a layer called STUFF or any other name. 25 // Layer names don't all need to be of the same length, obviously, and you can also skip them 26 // entirely and just use numbers. 27 28 enum layer_names { 29 _BASE, 30 _FN, 31 _FN1, 32 _FN2 33 }; 34 35 // enum layer_keycodes { }; 36 37 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 38 39 /* 40 ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ 41 │ 1 │ 2 │ 3 │ 4 │ │Ply│ │TO1│ 42 ├───┼───┼───┼───┤ └───┘ └───┘ 43 │ 5 │ 6 │ 7 │ 8 │ 44 ├───┼───┼───┼───┤ 45 │ 9 │ 0 │ ↑ │Ent│ ┌───┐ 46 ├───┼───┼───┼───┤ │Mut│ 47 │Fn2│ ← │ ↓ │ → │ └───┘ 48 └───┴───┴───┴───┘ 49 ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ 50 │ ! │ @ │ # │ $ │ │ │ │ │ 51 ├───┼───┼───┼───┤ └───┘ └───┘ 52 │ % │ ^ │ & │ * │ 53 ├───┼───┼───┼───┤ 54 │ ( │ ) │ │ │ ┌───┐ 55 ├───┼───┼───┼───┤ │ │ 56 │ │ │ │ │ └───┘ 57 └───┴───┴───┴───┘ 58 */ 59 /* Row: 0 1 2 3 4 */ 60 [_BASE] = LAYOUT( 61 KC_1, KC_2, KC_3, KC_4, KC_MPLY, 62 KC_5, KC_6, KC_7, KC_8, TO(_FN), 63 KC_9, KC_0, KC_UP, KC_ENT, KC_MUTE, 64 MO(_FN2), KC_LEFT, KC_DOWN, KC_RIGHT 65 ), 66 67 /* 68 ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ 69 │ │ │ │ │ │ │ │ │ 70 ├───┼───┼───┼───┤ └───┘ └───┘ 71 │ │ │ │ │ 72 ├───┼───┼───┼───┤ 73 │ │ │ │ │ ┌───┐ 74 ├───┼───┼───┼───┤ │ │ 75 │ │ │ │ │ └───┘ 76 └───┴───┴───┴───┘ 77 */ 78 /* Row: 0 1 2 3 4 */ 79 [_FN] = LAYOUT( 80 _______, _______, _______, _______, _______, 81 _______, _______, _______, _______, TO(_FN1), 82 _______, _______, _______, _______, _______, 83 _______, _______, _______, _______ 84 ), 85 86 /* 87 ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ 88 │ │ │ │ │ │ │ │ │ 89 ├───┼───┼───┼───┤ └───┘ └───┘ 90 │ │ │ │ │ 91 ├───┼───┼───┼───┤ 92 │ │ │ │ │ ┌───┐ 93 ├───┼───┼───┼───┤ │ │ 94 │ │ │ │ │ └───┘ 95 └───┴───┴───┴───┘ 96 */ 97 /* Row: 0 1 2 3 4 */ 98 [_FN1] = LAYOUT( 99 _______, _______, _______, _______, _______, 100 _______, _______, _______, _______, TO(_FN2), 101 _______, _______, _______, _______, _______, 102 _______, _______, _______, _______ 103 ), 104 105 /* 106 ┌───┬───┬───┬───┐ ┌───┐ ┌───┐ 107 │Spi│Spd│ │ │ │ │ │TO0│ 108 ├───┼───┼───┼───┤ └───┘ └───┘ 109 │Sai│Sad│ │ │ 110 ├───┼───┼───┼───┤ 111 │Tog│Mod│Hui│ │ ┌───┐ 112 ├───┼───┼───┼───┤ │ │ 113 │ │Vai│Hud│Vad│ └───┘ 114 └───┴───┴───┴───┘ 115 */ 116 /* Row: 0 1 2 3 4 */ 117 [_FN2] = LAYOUT( 118 RM_SPDU, RM_SPDD, _______, QK_BOOT, _______, 119 RM_SATU, RM_SATD, _______, _______, TO(_BASE), 120 RM_TOGG, RM_NEXT, RM_HUEU, _______, _______, 121 _______, RM_VALU, RM_HUED, RM_VALD 122 ), 123 }; 124 125 #ifdef OLED_ENABLE 126 bool oled_task_user(void) { 127 render_layer_status(); 128 129 return true; 130 } 131 #endif 132 133 #ifdef ENCODER_MAP_ENABLE 134 const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { 135 [_BASE] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(KC_PGDN, KC_PGUP), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, 136 [_FN] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, 137 [_FN1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, 138 [_FN2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, 139 }; 140 #endif