From b8b71a7be2565331f242c31f76a35f1229249325 Mon Sep 17 00:00:00 2001 From: Drashna Jael're Date: Wed, 5 Aug 2020 01:53:59 -0700 Subject: Add RGB Sleep toggle feature --- keyboards/moonlander/moonlander.c | 31 ++++++++++++++++++++++++++++++- keyboards/moonlander/moonlander.h | 6 ++++-- keyboards/moonlander/rules.mk | 4 ++++ 3 files changed, 38 insertions(+), 3 deletions(-) diff --git a/keyboards/moonlander/moonlander.c b/keyboards/moonlander/moonlander.c index ae043080f1..6dbea363be 100644 --- a/keyboards/moonlander/moonlander.c +++ b/keyboards/moonlander/moonlander.c @@ -319,7 +319,7 @@ led_config_t g_led_config = { { // clang-format on void suspend_power_down_kb(void) { - rgb_matrix_set_suspend_state(true); + rgb_matrix_set_suspend_state(keyboard_config.rgb_matrix_sleep_enable); suspend_power_down_user(); } @@ -416,7 +416,36 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) { eeconfig_update_kb(keyboard_config.raw); } return false; + case RGB_SLEEP_TOG: + if (record->event.pressed) { + keyboard_config.rgb_matrix_sleep_enable ^= true; + eeconfig_update_kb(keyboard_config.raw); + } + break; #endif } return process_record_user(keycode, record); } + +void matrix_init_kb(void) { + keyboard_config.raw = eeconfig_read_kb(); + +#ifdef RGB_MATRIX_ENABLE + if (keyboard_config.rgb_matrix_enable) { + rgb_matrix_set_flags(LED_FLAG_ALL); + } else { + rgb_matrix_set_flags(LED_FLAG_NONE); + } +#endif +} + +void eeconfig_init_kb(void) { // EEPROM is getting reset! + keyboard_config.raw = 0; + keyboard_config.rgb_matrix_enable = true; +#ifndef MOONLANDER_PRODUCTION_TESTING + keyboard_config.rgb_matrix_sleep_enable = true; +#endif + eeconfig_update_kb(keyboard_config.raw); + eeconfig_update_rgb_matrix_default(); + eeconfig_init_user(); +} diff --git a/keyboards/moonlander/moonlander.h b/keyboards/moonlander/moonlander.h index 399a6a6ec3..123ba5f5b7 100644 --- a/keyboards/moonlander/moonlander.h +++ b/keyboards/moonlander/moonlander.h @@ -57,14 +57,16 @@ along with this program. If not, see . enum planck_ez_keycodes { TOGGLE_LAYER_COLOR = SAFE_RANGE, + RGB_SLEEP_TOG, ML_SAFE_RANGE, }; typedef union { uint32_t raw; struct { - bool disable_layer_led :1; - bool rgb_matrix_enable :1; + bool disable_layer_led :1; + bool rgb_matrix_enable :1; + bool rgb_matrix_sleep_enable :1; }; } keyboard_config_t; diff --git a/keyboards/moonlander/rules.mk b/keyboards/moonlander/rules.mk index f481b60763..1be872f49b 100644 --- a/keyboards/moonlander/rules.mk +++ b/keyboards/moonlander/rules.mk @@ -22,3 +22,7 @@ EEPROM_DRIVER = i2c #project specific files SRC = matrix.c QUANTUM_LIB_SRC += i2c_master.c + +ifeq ($(strip $(MOONLANDER_PRODUCTION_TESTING)), yes) + OPT_DEFS += -DMOONLANDER_PRODUCTION_TESTING +endif -- cgit v1.2.3