#include QMK_KEYBOARD_H
#if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_LAYERS)
static uint32_t rgb_preview_timer = 0;
#endif
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_MPLY, KC_MUTE,
TG(3), TG(2), TG(1), TG(0),
KC_PSCR, KC_SLCK, KC_PAUS, A(KC_F4),
KC_INS, KC_HOME, KC_PGUP, KC_F12, KC_DEL, A(KC_F4), KC_PGDN, KC_CALCULATOR
),
[1] = LAYOUT(
KC_MPLY, KC_MUTE,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_F7, KC_F8, KC_F9, KC_F10,
KC_F4, KC_F5, KC_F6, KC_F11,
KC_F1, KC_F2, KC_F3, KC_F12 ),
[2] = LAYOUT(
KC_MPLY, KC_MUTE,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI,
RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD,
RGB_TOG, EEP_RST, RESET, KC_TRNS
),
[3] = LAYOUT(
KC_MPLY, KC_MUTE,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI,
RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD,
RGB_TOG, EEP_RST, RESET, KC_TRNS
)
};
const rgblight_segment_t PROGMEM my_layer0_layer[] = RGBLIGHT_LAYER_SEGMENTS(
{0,16,HSV_WHITE}
);
const rgblight_segment_t PROGMEM my_layer1_layer[] = RGBLIGHT_LAYER_SEGMENTS(
{0,16,HSV_ORANGE}
);
const rgblight_segment_t PROGMEM my_layer2_layer[] = RGBLIGHT_LAYER_SEGMENTS(
{0,16,HSV_RED}
);
const rgblight_segment_t PROGMEM my_layer3_layer[] = RGBLIGHT_LAYER_SEGMENTS(
{0,16,HSV_BLUE}
);
const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
my_layer0_layer,
my_layer1_layer,
my_layer2_layer,
my_layer3_layer );
bool encoder_update_user(uint8_t index, bool clockwise) {
if (index == 0) {
if (clockwise) {
tap_code(KC_MPRV);
} else {
tap_code(KC_MNXT);
}
} else if (index == 1) {
if (clockwise) {
tap_code(KC_VOLD);
} else {
tap_code(KC_VOLU);
}
}
return true;
}
void post_process_record_user(uint16_t keycode, keyrecord_t *record) {
# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_LAYERS)
switch (keycode) {
case RGB_TOG ... VLK_TOG:
for (uint8_t i = 0; i < RGBLIGHT_MAX_LAYERS; i++) {
rgblight_set_layer_state(i, false);
}
rgb_preview_timer = timer_read32();
break;
}
# endif
return;
}
layer_state_t layer_state_set_user(layer_state_t state) {
rgblight_set_layer_state(0, false);
rgblight_set_layer_state(1, layer_state_cmp(state, 1));
rgblight_set_layer_state(2, layer_state_cmp(state, 2));
rgblight_set_layer_state(3, layer_state_cmp(state, 3));
return state;
}
void keyboard_post_init_user(void) {
rgblight_layers = my_rgb_layers;
layer_state_set_user(layer_state);
}
void matrix_scan_user(void) {
# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_LAYERS)
if (rgb_preview_timer && TIMER_DIFF_32(timer_read32(), rgb_preview_timer) > PREVIEW_TIMEOUT) {
rgb_preview_timer = 0;
default_layer_state_set_user(default_layer_state);
layer_state_set_user(layer_state);
led_update_user((led_t) host_keyboard_leds());
}
# endif
}
void eeconfig_init_user(void) {
rgblight_enable(); rgblight_sethsv_orange(); }