keymap.c (6220B)
1 #include QMK_KEYBOARD_H 2 3 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 4 [0] = LAYOUT_planck_mit( 5 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, 6 KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, 7 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, 8 KC_LCTL, KC_LGUI, KC_LALT, KC_LBRC, KC_MINS, LT(1, KC_SPC), KC_EQL, KC_RBRC, KC_LEFT, KC_DOWN, KC_RGHT, 9 KC_VOLD, KC_VOLU, KC_PGDN, KC_PGUP), 10 [1] = LAYOUT_planck_mit( 11 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, 12 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 13 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 14 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC, KC_TRNS, KC_DEL, KC_TRNS, KC_TRNS, KC_BSLS, KC_TRNS, 15 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), 16 }; 17 18 extern rgblight_config_t rgblight_config; 19 int RGB_LAYER0_mode = 6; 20 static uint8_t current_layer = 0; 21 static bool has_layer_changed = true; 22 uint16_t i = 0; 23 uint16_t j = 0; 24 static uint16_t RGB_encoder_timer; 25 static uint16_t RGB_encoder_timer2; 26 static uint8_t RGB_encoder_dir = 0; 27 28 const uint8_t RGBLED_RAINBOW_MOOD_INTERVALS[] PROGMEM = { 29 30, 30 5, 31 -5 32 }; 33 34 void matrix_init_user(void) { 35 RGB_encoder_timer = timer_read(); 36 RGB_encoder_timer2 = timer_read(); 37 } 38 39 void matrix_scan_user(void) { 40 uint8_t layer = get_highest_layer(layer_state); 41 42 if (RGB_encoder_dir != 0) { 43 if (timer_elapsed(RGB_encoder_timer) > 1400) { 44 RGB_encoder_dir = 0; 45 rgblight_mode(RGB_LAYER0_mode); 46 } else { 47 if (timer_elapsed(RGB_encoder_timer2) > 700) { 48 rgblight_setrgb(0, 0, 0); 49 RGB_encoder_timer2 = timer_read(); 50 } 51 if (timer_elapsed(RGB_encoder_timer2) > 80) { 52 if (RGB_encoder_dir == 1) { 53 rgblight_setrgb_at(128, 128, 0, 19); 54 } else { 55 rgblight_setrgb_at(128, 128, 0, 16); 56 } 57 } 58 if (timer_elapsed(RGB_encoder_timer2) > 180) { 59 if (RGB_encoder_dir == 1) { 60 rgblight_setrgb_at(160, 160, 0, 8); 61 } else { 62 rgblight_setrgb_at(160, 160, 0, 3); 63 } 64 } 65 if (timer_elapsed(RGB_encoder_timer2) > 280) { 66 if (RGB_encoder_dir == 1) { 67 rgblight_setrgb_at(192, 192, 0, 9); 68 } else { 69 rgblight_setrgb_at(192, 192, 0, 2); 70 } 71 } 72 if (timer_elapsed(RGB_encoder_timer2) > 400) { 73 if (RGB_encoder_dir == 1) { 74 rgblight_setrgb_at(224, 224, 0, 10); 75 } else { 76 rgblight_setrgb_at(224, 224, 0, 1); 77 } 78 } 79 } 80 } 81 82 /* layer rgb */ 83 if (layer != current_layer) { 84 has_layer_changed = true; 85 current_layer = layer; 86 } 87 if (has_layer_changed) { 88 if (layer == 0) { 89 rgblight_mode(RGB_LAYER0_mode); 90 } else { 91 rgblight_mode(1); 92 for (i = 0; i < 48; i++) { 93 (i > 41) ? (j = i - 1) : (j = i); 94 uint16_t kc = keymap_key_to_keycode(layer, (keypos_t) {.row = 0, .col = i 95 }); 96 if (kc == KC_TRNS) { 97 rgblight_setrgb_at(5, 5, 5, j); /* TRNS color 0-255*/ 98 } else if (kc == KC_NO) { 99 rgblight_setrgb_at(0, 0, 0, j); /* NO color 0-255*/ 100 } else { 101 if (layer == 1) { 102 rgblight_setrgb_at(128, 64, 0, j); /* 1 layer 0-255*/ 103 } else if (layer == 2) { 104 rgblight_setrgb_at(0, 64, 128, j); /* 2*/ 105 } else if (layer == 3) { 106 rgblight_setrgb_at(64, 128, 0, j); /* 3*/ 107 } else if (layer == 4) { 108 rgblight_setrgb_at(0, 128, 64, j); /* 4*/ 109 } else if (layer == 5) { 110 rgblight_setrgb_at(128, 0, 128, j); /* 5*/ 111 } else if (layer == 6) { 112 rgblight_setrgb_at(128, 0, 128, j); /* 6*/ 113 } else if (layer == 7) { 114 rgblight_setrgb_at(128, 128, 0, j); /* 7*/ 115 } else if (layer == 8) { 116 rgblight_setrgb_at(0, 128, 128, j); /* 8*/ 117 } else if (layer == 9) { 118 rgblight_setrgb_at(128, 192, 64, j); /* 9*/ 119 } else if (layer == 10) { 120 rgblight_setrgb_at(64, 192, 128, j); /* 10*/ 121 } else if (layer == 11) { 122 rgblight_setrgb_at(128, 64, 192, j); /* 11*/ 123 } else if (layer == 12) { 124 rgblight_setrgb_at(64, 128, 192, j); /* 12*/ 125 } else if (layer == 13) { 126 rgblight_setrgb_at(128, 192, 0, j); /* 13*/ 127 } else if (layer == 14) { 128 rgblight_setrgb_at(192, 0, 128, j); /* 14*/ 129 } else if (layer == 15) { 130 rgblight_setrgb_at(0, 192, 128, j); /* 15*/ 131 } 132 } 133 } 134 } 135 has_layer_changed = false; 136 } 137 /* end of layer rgb */ 138 } 139 140 bool process_record_user(uint16_t keycode, keyrecord_t * record) { 141 switch (keycode) { 142 case QK_UNDERGLOW_MODE_NEXT: 143 RGB_LAYER0_mode = rgblight_config.mode; 144 break; 145 default: 146 return (true); 147 } 148 return (true); 149 } 150 151 bool encoder_update_user(uint8_t index, bool clockwise) { 152 RGB_encoder_timer = timer_read(); 153 RGB_encoder_timer2 = timer_read(); 154 uint8_t layer = get_highest_layer(layer_state); 155 if (clockwise) { 156 RGB_encoder_dir = 1; 157 } else { 158 RGB_encoder_dir = -1; 159 } 160 if (index == 0) /* Right encoder */ { 161 if (clockwise) { 162 register_code(keymap_key_to_keycode(layer, (keypos_t) {.row = 4, .col = 11 163 })); 164 unregister_code(keymap_key_to_keycode(layer, (keypos_t) {.row = 4, .col = 11 165 })); 166 } else { 167 register_code(keymap_key_to_keycode(layer, (keypos_t) {.row = 4, .col = 10 168 })); 169 unregister_code(keymap_key_to_keycode(layer, (keypos_t) {.row = 4, .col = 10 170 })); 171 } 172 } else if (index == 1) /* Left encoder */ { 173 if (clockwise) { 174 register_code(keymap_key_to_keycode(layer, (keypos_t) {.row = 4, .col = 1 175 })); 176 unregister_code(keymap_key_to_keycode(layer, (keypos_t) {.row = 4, .col = 1 177 })); 178 } else { 179 register_code(keymap_key_to_keycode(layer, (keypos_t) {.row = 4, .col = 0 180 })); 181 unregister_code(keymap_key_to_keycode(layer, (keypos_t) {.row = 4, .col = 0 182 })); 183 } 184 } 185 return true; 186 }