]> git.donarmstrong.com Git - qmk_firmware.git/blobdiff - tmk_core/common/backlight.c
Add `SGUI()` and `SGUI_T()` for consistency with `KC_GUI` (#2442)
[qmk_firmware.git] / tmk_core / common / backlight.c
index 0e0ad2d1541d8e05dc7de68f64ce1eec4ec3b2a9..12f75b38ac8773c8ea821b1942c8a48bb0137a0b 100644 (file)
@@ -28,6 +28,9 @@ void backlight_init(void)
         eeconfig_init();
     }
     backlight_config.raw = eeconfig_read_backlight();
+    if (backlight_config.level > BACKLIGHT_LEVELS) {
+       backlight_config.level = BACKLIGHT_LEVELS;
+    }
     backlight_set(backlight_config.enable ? backlight_config.level : 0);
 }
 
@@ -58,6 +61,8 @@ void backlight_decrease(void)
 void backlight_toggle(void)
 {
     backlight_config.enable ^= 1;
+    if (backlight_config.raw == 1) // enabled but level = 0
+        backlight_config.level = 1;
     eeconfig_update_backlight(backlight_config.raw);
     dprintf("backlight toggle: %u\n", backlight_config.enable);
     backlight_set(backlight_config.enable ? backlight_config.level : 0);
@@ -78,7 +83,9 @@ void backlight_step(void)
 
 void backlight_level(uint8_t level)
 {
-    backlight_config.level ^= level;
+    if (level > BACKLIGHT_LEVELS)
+        level = BACKLIGHT_LEVELS;
+    backlight_config.level = level;
     backlight_config.enable = !!backlight_config.level;
     eeconfig_update_backlight(backlight_config.raw);
     backlight_set(backlight_config.level);
@@ -87,4 +94,4 @@ void backlight_level(uint8_t level)
 uint8_t get_backlight_level(void)
 {
     return backlight_config.level;
-}
\ No newline at end of file
+}