diff --git a/data/mappings/info_config.hjson b/data/mappings/info_config.hjson
index c4052c64f6c..1c6e86d876a 100644
--- a/data/mappings/info_config.hjson
+++ b/data/mappings/info_config.hjson
@@ -112,6 +112,7 @@
"LED_MATRIX_DEFAULT_ON": {"info_key": "led_matrix.default.on", "value_type": "bool"},
"LED_MATRIX_DEFAULT_VAL": {"info_key": "led_matrix.default.val", "value_type": "int"},
"LED_MATRIX_DEFAULT_SPD": {"info_key": "led_matrix.default.speed", "value_type": "int"},
+ "LED_MATRIX_DEFAULT_FLAGS": {"info_key": "led_matrix.default.flags", "value_type": "int"},
// Locking Switch
"LOCKING_SUPPORT_ENABLE": {"info_key": "qmk.locking.enabled", "value_type": "flag"},
@@ -166,6 +167,7 @@
"RGB_MATRIX_DEFAULT_SAT": {"info_key": "rgb_matrix.default.sat", "value_type": "int"},
"RGB_MATRIX_DEFAULT_VAL": {"info_key": "rgb_matrix.default.val", "value_type": "int"},
"RGB_MATRIX_DEFAULT_SPD": {"info_key": "rgb_matrix.default.speed", "value_type": "int"},
+ "RGB_MATRIX_DEFAULT_FLAGS": {"info_key": "rgb_matrix.default.flags", "value_type": "int"},
// RGBLight
"RGBLED_SPLIT": {"info_key": "rgblight.split_count", "value_type": "array.int"},
diff --git a/data/mappings/info_defaults.hjson b/data/mappings/info_defaults.hjson
index b33cb4fa1f9..d1f1579c55b 100644
--- a/data/mappings/info_defaults.hjson
+++ b/data/mappings/info_defaults.hjson
@@ -23,7 +23,8 @@
"animation": "solid",
"on": true,
"val": 255,
- "speed": 128
+ "speed": 128,
+ "flags": 255
},
"led_flush_limit": 16,
"max_brightness": 255,
@@ -53,7 +54,8 @@
"hue": 0,
"sat": 255,
"val": 255,
- "speed": 128
+ "speed": 128,
+ "flags": 255
},
"hue_steps": 8,
"led_flush_limit": 16,
diff --git a/data/schemas/keyboard.jsonschema b/data/schemas/keyboard.jsonschema
index 93fc4ed8a2f..57aeb3de22f 100644
--- a/data/schemas/keyboard.jsonschema
+++ b/data/schemas/keyboard.jsonschema
@@ -543,7 +543,8 @@
"on": {"type": "boolean"},
"animation": {"type": "string"},
"val": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
- "speed": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}
+ "speed": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
+ "flags": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}
}
},
"driver": {
@@ -631,7 +632,8 @@
"hue": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
"sat": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
"val": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
- "speed": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}
+ "speed": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
+ "flags": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}
}
},
"driver": {
diff --git a/docs/features/led_matrix.md b/docs/features/led_matrix.md
index 28d24bc400e..f14fb47d62d 100644
--- a/docs/features/led_matrix.md
+++ b/docs/features/led_matrix.md
@@ -88,6 +88,8 @@ As mentioned earlier, the center of the keyboard by default is expected to be `{
|`QK_LED_MATRIX_BRIGHTNESS_DOWN`|`LM_BRID`|Decrease the brightness level |
|`QK_LED_MATRIX_SPEED_UP` |`LM_SPDU`|Increase the animation speed |
|`QK_LED_MATRIX_SPEED_DOWN` |`LM_SPDD`|Decrease the animation speed |
+|`QK_LED_MATRIX_FLAG_NEXT` |`LM_FLGN`|Cycle through flags |
+|`QK_LED_MATRIX_FLAG_PREVIOUS` |`LM_FLGP`|Cycle through flags in reverse |
## LED Matrix Effects {#led-matrix-effects}
@@ -253,6 +255,7 @@ const char* effect_name = led_matrix_get_mode_name(led_matrix_get_mode());
#define LED_MATRIX_DEFAULT_FLAGS LED_FLAG_ALL // Sets the default LED flags, if none has been set
#define LED_MATRIX_SPLIT { X, Y } // (Optional) For split keyboards, the number of LEDs connected on each half. X = left, Y = Right.
// If reactive effects are enabled, you also will want to enable SPLIT_TRANSPORT_MIRROR
+#define LED_MATRIX_FLAG_STEPS { LED_FLAG_ALL, LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER, LED_FLAG_NONE } // Sets the flags which can be cycled through.
```
## EEPROM storage {#eeprom-storage}
@@ -505,6 +508,62 @@ The current effect speed, from 0 to 255.
---
+### `void led_matrix_set_flags(led_flags_t flags)` {#api-led-matrix-set-flags}
+
+Set the global effect flags.
+
+#### Arguments {#api-led-matrix-set-flags-arguments}
+
+ - `led_flags_t flags`
+ The [flags](#flags) value to set.
+
+---
+
+### `void led_matrix_set_flags_noeeprom(led_flags_t flags)` {#api-led-matrix-set-flags-noeeprom}
+
+Set the global effect flags. New state is not written to EEPROM.
+
+#### Arguments {#api-led-matrix-set-flags-noeeprom-arguments}
+
+ - `led_flags_t flags`
+ The [flags](#flags) value to set.
+
+---
+
+### `void led_matrix_flags_step(void)` {#api-led-matrix-flags-step}
+
+Move to the next flag combination.
+
+---
+
+### `void led_matrix_flags_step_noeeprom(void)` {#api-led-matrix-flags-step-noeeprom}
+
+Move to the next flag combination. New state is not written to EEPROM.
+
+---
+
+### `void led_matrix_flags_step_reverse(void)` {#api-led-matrix-flags-step-reverse}
+
+Move to the previous flag combination.
+
+---
+
+### `void led_matrix_flags_step_reverse_noeeprom(void)` {#api-led-matrix-flags-step-reverse-noeeprom}
+
+Move to the previous flag combination. New state is not written to EEPROM.
+
+---
+
+### `uint8_t led_matrix_get_flags(void)` {#api-led-matrix-get-flags}
+
+Get the current global effect flags.
+
+#### Return Value {#api-led-matrix-get-flags-return}
+
+The current effect [flags](#flags).
+
+---
+
### `void led_matrix_reload_from_eeprom(void)` {#api-led-matrix-reload-from-eeprom}
Reload the effect configuration (enabled, mode and brightness) from EEPROM.
diff --git a/docs/features/rgb_matrix.md b/docs/features/rgb_matrix.md
index 95ee4c48968..36680f24a26 100644
--- a/docs/features/rgb_matrix.md
+++ b/docs/features/rgb_matrix.md
@@ -96,6 +96,8 @@ As mentioned earlier, the center of the keyboard by default is expected to be `{
|`QK_RGB_MATRIX_VALUE_DOWN` |`RM_VALD`|Decrease the brightness level |
|`QK_RGB_MATRIX_SPEED_UP` |`RM_SPDU`|Increase the animation speed |
|`QK_RGB_MATRIX_SPEED_DOWN` |`RM_SPDD`|Decrease the animation speed |
+|`QK_RGB_MATRIX_FLAG_NEXT` |`RM_FLGN`|Cycle through flags |
+|`QK_RGB_MATRIX_FLAG_PREVIOUS` |`RM_FLGP`|Cycle through flags in reverse |
## RGB Matrix Effects {#rgb-matrix-effects}
@@ -409,6 +411,7 @@ const char* effect_name = rgb_matrix_get_mode_name(rgb_matrix_get_mode());
#define RGB_MATRIX_SPLIT { X, Y } // (Optional) For split keyboards, the number of LEDs connected on each half. X = left, Y = Right.
// If reactive effects are enabled, you also will want to enable SPLIT_TRANSPORT_MIRROR
#define RGB_TRIGGER_ON_KEYDOWN // Triggers RGB keypress events on key down. This makes RGB control feel more responsive. This may cause RGB to not function properly on some boards
+#define RGB_MATRIX_FLAG_STEPS { LED_FLAG_ALL, LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER, LED_FLAG_UNDERGLOW, LED_FLAG_NONE } // Sets the flags which can be cycled through.
```
## EEPROM storage {#eeprom-storage}
@@ -852,6 +855,62 @@ The current effect speed, from 0 to 255.
---
+### `void rgb_matrix_set_flags(led_flags_t flags)` {#api-rgb-matrix-set-flags}
+
+Set the global effect flags.
+
+#### Arguments {#api-rgb-matrix-set-flags-arguments}
+
+ - `led_flags_t flags`
+ The [flags](#flags) value to set.
+
+---
+
+### `void rgb_matrix_set_flags_noeeprom(led_flags_t flags)` {#api-rgb-matrix-set-flags-noeeprom}
+
+Set the global effect flags. New state is not written to EEPROM.
+
+#### Arguments {#api-rgb-matrix-set-flags-noeeprom-arguments}
+
+ - `led_flags_t flags`
+ The [flags](#flags) value to set.
+
+---
+
+### `void rgb_matrix_flags_step(void)` {#api-rgb-matrix-flags-step}
+
+Move to the next flag combination.
+
+---
+
+### `void rgb_matrix_flags_step_noeeprom(void)` {#api-rgb-matrix-flags-step-noeeprom}
+
+Move to the next flag combination. New state is not written to EEPROM.
+
+---
+
+### `void rgb_matrix_flags_step_reverse(void)` {#api-rgb-matrix-flags-step-reverse}
+
+Move to the previous flag combination.
+
+---
+
+### `void rgb_matrix_flags_step_reverse_noeeprom(void)` {#api-rgb-matrix-flags-step-reverse-noeeprom}
+
+Move to the previous flag combination. New state is not written to EEPROM.
+
+---
+
+### `uint8_t rgb_matrix_get_flags(void)` {#api-rgb-matrix-get-flags}
+
+Get the current global effect flags.
+
+#### Return Value {#api-rgb-matrix-get-flags-return}
+
+The current effect [flags](#flags).
+
+---
+
### `void rgb_matrix_sethsv(uint8_t h, uint8_t s, uint8_t v)` {#api-rgb-matrix-sethsv}
Set the global effect hue, saturation, and value (brightness).
diff --git a/docs/keycodes.md b/docs/keycodes.md
index e569e874316..9a4ca7ea0c1 100644
--- a/docs/keycodes.md
+++ b/docs/keycodes.md
@@ -433,6 +433,8 @@ See also: [LED Matrix](features/led_matrix)
|`QK_LED_MATRIX_BRIGHTNESS_DOWN`|`LM_BRID`|Decrease the brightness level |
|`QK_LED_MATRIX_SPEED_UP` |`LM_SPDU`|Increase the animation speed |
|`QK_LED_MATRIX_SPEED_DOWN` |`LM_SPDD`|Decrease the animation speed |
+|`QK_LED_MATRIX_FLAG_NEXT` |`LM_FLGN`|Cycle through flags |
+|`QK_LED_MATRIX_FLAG_PREVIOUS` |`LM_FLGP`|Cycle through flags in reverse |
## Magic Keycodes {#magic-keycodes}
@@ -783,6 +785,8 @@ See also: [RGB Matrix](features/rgb_matrix)
|`QK_RGB_MATRIX_VALUE_DOWN` |`RM_VALD`|Decrease the brightness level |
|`QK_RGB_MATRIX_SPEED_UP` |`RM_SPDU`|Increase the animation speed |
|`QK_RGB_MATRIX_SPEED_DOWN` |`RM_SPDD`|Decrease the animation speed |
+|`QK_RGB_MATRIX_FLAG_NEXT` |`RM_FLGN`|Cycle through flags |
+|`QK_RGB_MATRIX_FLAG_PREVIOUS` |`RM_FLGP`|Cycle through flags in reverse |
## US ANSI Shifted Symbols {#us-ansi-shifted-symbols}
diff --git a/docs/reference_info_json.md b/docs/reference_info_json.md
index e7cb8c31e87..91ab7f4577a 100644
--- a/docs/reference_info_json.md
+++ b/docs/reference_info_json.md
@@ -431,6 +431,9 @@ Configures the [LED Matrix](features/led_matrix) feature.
* `speed` Number
* The default animation speed.
* Default: `128`
+ * `flags` Number
+ * The default LED flags.
+ * Default: `255`
* `driver` String Required
* The driver to use. Must be one of `custom`, `is31fl3218`, `is31fl3731`, `is31fl3733`, `is31fl3736`, `is31fl3737`, `is31fl3741`, `is31fl3742a`, `is31fl3743a`, `is31fl3745`, `is31fl3746a`, `snled27351`.
* `layout` Array: Object Required
@@ -685,6 +688,9 @@ Configures the [RGB Matrix](features/rgb_matrix) feature.
* `speed` Number
* The default animation speed.
* Default: `128`
+ * `flags` Number
+ * The default LED flags.
+ * Default: `255`
* `driver` String Required
* The driver to use. Must be one of `aw20216s`, `custom`, `is31fl3218`, `is31fl3236`, `is31fl3729`, `is31fl3731`, `is31fl3733`, `is31fl3736`, `is31fl3737`, `is31fl3741`, `is31fl3742a`, `is31fl3743a`, `is31fl3745`, `is31fl3746a`, `snled27351`, `ws2812`.
* `hue_steps` Number
diff --git a/keyboards/xelus/valor/rev2/keyboard.json b/keyboards/xelus/valor/rev2/keyboard.json
index 451eeb99ff2..6356f69646f 100644
--- a/keyboards/xelus/valor/rev2/keyboard.json
+++ b/keyboards/xelus/valor/rev2/keyboard.json
@@ -67,6 +67,9 @@
"solid_splash": true,
"solid_multisplash": true
},
+ "default": {
+ "flags": 7
+ },
"driver": "ws2812",
"max_brightness": 200,
"sleep": true
diff --git a/keyboards/xelus/valor/rev2/rev2.c b/keyboards/xelus/valor/rev2/rev2.c
index 34a32cfc61d..99db45e08d2 100644
--- a/keyboards/xelus/valor/rev2/rev2.c
+++ b/keyboards/xelus/valor/rev2/rev2.c
@@ -64,9 +64,4 @@ led_config_t g_led_config = { {
8, 8, 8, 8
} };
-
-void keyboard_pre_init_kb(void) {
- rgb_matrix_set_flags(LED_FLAG_MODIFIER|LED_FLAG_UNDERGLOW|LED_FLAG_KEYLIGHT);
- keyboard_pre_init_user();
-}
#endif