diff options
Diffstat (limited to 'keyboards/ergodox/ez')
-rw-r--r-- | keyboards/ergodox/ez/keymaps/drashna/keymap.c | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/keyboards/ergodox/ez/keymaps/drashna/keymap.c b/keyboards/ergodox/ez/keymaps/drashna/keymap.c index 343f6e0d87..a6e5b3335a 100644 --- a/keyboards/ergodox/ez/keymaps/drashna/keymap.c +++ b/keyboards/ergodox/ez/keymaps/drashna/keymap.c @@ -17,6 +17,8 @@ #define MOUS 2 #ifdef LAYER_UNDERGLOW_LIGHTING +bool has_layer_changed = true; + #define rgblight_set_teal rgblight_setrgb(0x00, 0xFF, 0xFF) #define rgblight_set_red rgblight_setrgb(0xFF, 0x00, 0x00) #define rgblight_set_blue rgblight_setrgb(0x00, 0xFF, 0x00); @@ -98,20 +100,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; } -void matrix_init_user(void) { // Runs boot tasks for keyboard - -#ifdef LAYER_UNDERGLOW_LIGHTING - rgblight_set_teal; -#endif - -}; + void matrix_scan_user(void) { - static uint8_t old_layer = 0; uint8_t new_layer = biton32(layer_state); - uint8_t modifiders = get_mods(); ergodox_board_led_off(); ergodox_right_led_1_off(); @@ -119,6 +113,9 @@ void matrix_scan_user(void) { ergodox_right_led_3_off(); #ifdef LAYER_UNDERGLOW_LIGHTING + static uint8_t old_layer = 0; + uint8_t modifiders = get_mods(); + if ( modifiders & MODS_SHIFT_MASK) { ergodox_right_led_1_on(); } @@ -128,7 +125,12 @@ void matrix_scan_user(void) { if ( modifiders & MODS_ALT_MASK) { ergodox_right_led_3_on(); } + if (old_layer != new_layer) { + has_layer_changed = true; + old_layer = new_layer; + } + if (has_layer_changed) { switch (new_layer) { case 1: rgblight_set_red; @@ -155,9 +157,11 @@ void matrix_scan_user(void) { rgblight_set_teal; break; } - } + has_layer_changed = false; + } + #else - switch (layer) { + switch (new_layer) { case 1: ergodox_right_led_1_on(); break; @@ -188,5 +192,4 @@ void matrix_scan_user(void) { break; } #endif - old_layer = new_layer; }; |