keymap.c (13947B)
1 #include QMK_KEYBOARD_H 2 3 #ifdef RGBLIGHT_ENABLE 4 //Following line allows macro to read current RGB settings 5 extern rgblight_config_t rgblight_config; 6 #endif 7 8 // Each layer gets a name for readability, which is then used in the keymap matrix below. 9 // The underscores don't mean anything - you can have a layer called STUFF or any other name. 10 // Layer names don't all need to be of the same length, obviously, and you can also skip them 11 // entirely and just use numbers. 12 #define _QWERTY 0 13 #define _LOWER 1 14 #define _RAISE 2 15 #define _ADJUST 3 16 17 enum custom_keycodes { 18 LOWER = SAFE_RANGE, 19 RAISE, 20 ADJUST, 21 RGBRST 22 }; 23 24 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 25 /* QWERTY 26 * ,-----------------------------------------. ,-----------------------------------------. 27 * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | - | 28 * |------+------+------+------+------+------| |------+------+------+------+------+------| 29 * | Tab | Q | W | E | R | T | | Y | U | I | O | P | = | 30 * |------+------+------+------+------+------| |------+------+------+------+------+------| 31 * |LShift| A | S | D | F | G | | H | J | K | L | ; | ' | 32 * |------+------+------+------+------+------| |------+------+------+------+------+------| 33 * |LCTRL | Z | X | C | V | B |-------.-------. ,---------------| N | M | , | . | / | \ | 34 * `-----------------------------------------/ Del / / \ \ Bksp \----------------------------------------' 35 * | LAlt |ADJUST| /-------/ Space / \ Enter \-------\ | [ | ] | 36 * | | |/ LOWER / / \ \ RAISE \ | | | 37 * `-----------------------------' '------------------------------' 38 */ 39 [_QWERTY] = LAYOUT( 40 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, 41 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_EQL, 42 KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, 43 KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DEL, KC_SPC, KC_ENT, KC_BSPC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS, 44 KC_LALT, ADJUST, LOWER, RAISE, KC_LBRC, KC_RBRC 45 ), 46 47 /* LOWER 48 * ,-----------------------------------------. ,-----------------------------------------. 49 * | ESC | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | 50 * |------+------+------+------+------+------| |------+------+------+------+------+------| 51 * | Tab | / | - | 7 | 8 | 9 | | ! | @ | # | $ | % | F12 | 52 * |------+------+------+------+------+------| |------+------+------+------+------+------| 53 * |LShift| * | + | 4 | 5 | 6 | | ^ | & | * | ( | ) | - | 54 * |------+------+------+------+------+------| |------+------+------+------+------+------| 55 * |LCTRL | . | 0 | 1 | 2 | 3 |-------.-------. ,---------------| | _ | + | { | } | | | 56 * `-----------------------------------------/ F11 / / \ \ F12 \----------------------------------------' 57 * | LAlt | LGUI | /-------/ Space / \ Enter \-------\ | Caps | Num | 58 * | | |/ LOWER / / \ \ \ | | | 59 * `-----------------------------' '------------------------------' 60 */ 61 [_LOWER] = LAYOUT( 62 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, 63 _______, KC_PSLS, KC_PMNS, KC_P7, KC_P8, KC_P9, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_F12, 64 _______, KC_PAST, KC_PPLS, KC_P4, KC_P5, KC_P6, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TILD, 65 _______, KC_PDOT, KC_P0, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, 66 _______, KC_LGUI, _______, XXXXXXX, KC_CAPS, KC_NUM 67 68 ), 69 70 /* RAISE 71 * ,-----------------------------------------. ,-----------------------------------------. 72 * | | | | | | | | | | | | | | 73 * |------+------+------+------+------+------| |------+------+------+------+------+------| 74 * | | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | | 75 * |------+------+------+------+------+------| |------+------+------+------+------+------| 76 * | F1 | F2 | F3 | F4 | F5 | F6 | | | ª | | | | | 77 * |------+------+------+------+------+------| |------+------+------+------+------+------| 78 * | F7 | F8 | F9 | F10 | F11 | F12 |-------.-------. ,---------------| © | « | ¨ | | | | 79 * `-----------------------------------------/ / / \ \ \----------------------------------------' 80 * | | | /-------/ Space / \ Enter \-------\ | | | 81 * | | |/ / / \ \ RAISE \ | | | 82 * `-----------------------------' '------------------------------' 83 */ 84 [_RAISE] = LAYOUT( 85 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, 86 XXXXXXX, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX, 87 KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, XXXXXXX, KC_UP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, 88 KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, _______, _______, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, XXXXXXX, 89 XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX 90 ), 91 92 /* ADJUST 93 * ,-----------------------------------------. ,-----------------------------------------. 94 * |QK_BOOT | | | | | | | Mute | Vol+ | Play | | | | 95 * |------+------+------+------+------+------| |------+------+------+------+------+------| 96 * | | | | PSCR | SLCK | Pause| | Prev | Vol- | Next | | | | 97 * |------+------+------+------+------+------| |------+------+------+------+------+------| 98 * | | | |Insert| Home |PageUP| | | |RGB ON| HUE+ | SAT+ | VAL+ | 99 * |------+------+------+------+------+------| |------+------+------+------+------+------| 100 * | | | | Del | End |PageDN|-------.-------. ,---------------| |RGB Re| MODE | HUE- | SAT- | VAL- | 101 * `-----------------------------------------/ / / \ \ \----------------------------------------' 102 * | |ADJUST| /-------/ Space / \ Enter \-------\ | | | 103 * | | |/ / / \ \ \ | | | 104 * `-----------------------------' '------------------------------' 105 */ 106 [_ADJUST] = LAYOUT( 107 QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLU, KC_MPLY, XXXXXXX, XXXXXXX, XXXXXXX, 108 XXXXXXX, XXXXXXX, XXXXXXX, KC_PSCR, KC_SCRL, KC_PAUS, KC_MPRV, KC_VOLD, KC_MNXT, XXXXXXX, XXXXXXX, XXXXXXX, 109 XXXXXXX, XXXXXXX, XXXXXXX, KC_INS, KC_HOME, KC_PGUP, XXXXXXX, XXXXXXX, UG_TOGG, UG_HUEU, UG_SATU, UG_VALU, 110 XXXXXXX, XXXXXXX, XXXXXXX, KC_DEL, KC_END, KC_PGDN, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, RGBRST, UG_NEXT, UG_HUED, UG_SATD, UG_VALD, 111 XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX 112 ) 113 }; 114 115 116 int RGB_current_mode; 117 118 // Setting ADJUST layer RGB back to default 119 void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) { 120 if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) { 121 layer_on(layer3); 122 } else { 123 layer_off(layer3); 124 } 125 } 126 127 void matrix_init_user(void) { 128 #ifdef RGBLIGHT_ENABLE 129 RGB_current_mode = rgblight_config.mode; 130 #endif 131 } 132 133 #ifdef OLED_ENABLE 134 135 //assign the right code to your layers for OLED display 136 #define L_QWERTY 0 137 #define L_LOWER 2 138 #define L_RAISE 4 139 #define L_ADJUST 8 140 141 // When add source files to SRC in rules.mk, you can use functions. 142 const char *read_logo(void); 143 144 bool oled_task_user(void) { 145 if (is_keyboard_master()) { 146 static char indctr[2][20][5]= 147 { 148 // white icon 149 { 150 {0x80,0x81,0x82,0x83,0}, 151 {0x88,0x89,0x8A,0x8B,0}, 152 {0x90,0x91,0x92,0x93,0}, 153 {0x98,0x99,0x9A,0x9B,0}, 154 {0x01,0x02,0x03,0x04,0}, 155 {0xA0,0xA1,0xA2,0xA3,0}, 156 {0xA8,0xA9,0xAA,0xAB,0}, 157 {0xB0,0xB1,0xB2,0xB3,0}, 158 {0xB8,0xB9,0xBA,0xBB,0}, 159 {0x21,0x22,0x23,0x24,0}, 160 {0xC0,0xC1,0xC2,0xC3,0}, 161 {0xC8,0xC9,0xCA,0xCB,0}, 162 {0xD0,0xD1,0xD2,0xD3,0}, 163 {0xD8,0xD9,0xDA,0xDB,0}, 164 {0x41,0x42,0x43,0x44,0}, 165 {0xE0,0xE1,0xE2,0xE3,0}, 166 {0xE8,0xE9,0xEA,0xEB,0}, 167 {0xF0,0xF1,0xF2,0xF3,0}, 168 {0xF8,0xF9,0xFA,0xFB,0}, 169 {0x61,0x62,0x63,0x64,0} 170 }, 171 // Black icon 172 { 173 {0x84,0x85,0x86,0x87,0}, 174 {0x8C,0x8D,0x8E,0x8F,0}, 175 {0x94,0x95,0x96,0x97,0}, 176 {0x9C,0x9D,0x9E,0x9F,0}, 177 {0x05,0x06,0x07,0x08,0}, 178 {0xA4,0xA5,0xA6,0xA7,0}, 179 {0xAC,0xAD,0xAE,0xAF,0}, 180 {0xB4,0xB5,0xB6,0xB7,0}, 181 {0xBC,0xBD,0xBE,0xBF,0}, 182 {0x25,0x26,0x27,0x28,0}, 183 {0xC4,0xC5,0xC6,0xC7,0}, 184 {0xCC,0xCD,0xCE,0xCF,0}, 185 {0xD4,0xD5,0xD6,0xD7,0}, 186 {0xDC,0xDD,0xDE,0xDF,0}, 187 {0x45,0x46,0x47,0x48,0}, 188 {0xE4,0xE5,0xE6,0xE7,0}, 189 {0xEC,0xED,0xEE,0xEF,0}, 190 {0xF4,0xF5,0xF6,0xF7,0}, 191 {0xFC,0xFD,0xFE,0xFF,0}, 192 {0x65,0x66,0x67,0x68,0} 193 } 194 }; 195 196 int rown = 0; 197 int rowc = 0; 198 int rowl = 0; 199 int rowr = 0; 200 int rowa = 0; 201 202 //Set Indicator icon 203 led_t led_state = host_keyboard_led_state(); 204 if (led_state.num_lock) { rown = 1; } else { rown = 0; } 205 if (led_state.caps_lock) { rowc = 1; } else { rowc = 0; } 206 if (layer_state == L_LOWER) { rowl = 1; } 207 if (layer_state == L_RAISE) { rowr = 1; } 208 if (layer_state == L_ADJUST) { rowa = 1; } 209 210 oled_write(indctr[rowl] [0], false); 211 oled_write(indctr[rowr] [1], false); 212 oled_write(indctr[rowa] [2], false); 213 oled_write(indctr[rowc] [3], false); 214 oled_write(indctr[rown] [4], false); 215 oled_write_char(0x13, false); 216 oled_write(indctr[rowl] [5], false); 217 oled_write(indctr[rowr] [6], false); 218 oled_write(indctr[rowa] [7], false); 219 oled_write(indctr[rowc] [8], false); 220 oled_write(indctr[rown] [9], false); 221 oled_write_char(0x13, false); 222 oled_write(indctr[rowl] [10], false); 223 oled_write(indctr[rowr] [11], false); 224 oled_write(indctr[rowa] [12], false); 225 oled_write(indctr[rowc] [13], false); 226 oled_write(indctr[rown] [14], false); 227 oled_write_char(0x13, false); 228 oled_write(indctr[rowl] [15], false); 229 oled_write(indctr[rowr] [16], false); 230 oled_write(indctr[rowa] [17], false); 231 oled_write(indctr[rowc] [18], false); 232 oled_write(indctr[rown] [19], false); 233 234 }else{ 235 oled_write(read_logo(), false); 236 } 237 return false; 238 } 239 240 #endif 241 242 bool process_record_user(uint16_t keycode, keyrecord_t *record) { 243 switch (keycode) { 244 case LOWER: 245 if (record->event.pressed) { 246 layer_on(_LOWER); 247 } else { 248 layer_off(_LOWER); 249 } 250 return false; 251 break; 252 case RAISE: 253 if (record->event.pressed) { 254 layer_on(_RAISE); 255 } else { 256 layer_off(_RAISE); 257 } 258 return false; 259 break; 260 case ADJUST: 261 if (record->event.pressed) { 262 layer_on(_ADJUST); 263 } else { 264 layer_off(_ADJUST); 265 } 266 return false; 267 break; 268 case QK_UNDERGLOW_MODE_NEXT: 269 #ifdef RGBLIGHT_ENABLE 270 if (record->event.pressed) { 271 rgblight_mode(RGB_current_mode); 272 rgblight_step(); 273 RGB_current_mode = rgblight_config.mode; 274 } 275 #endif 276 return false; 277 break; 278 case RGBRST: 279 #ifdef RGBLIGHT_ENABLE 280 if (record->event.pressed) { 281 eeconfig_update_rgblight_default(); 282 rgblight_enable(); 283 RGB_current_mode = rgblight_config.mode; 284 } 285 #endif 286 break; 287 } 288 return true; 289 }