Explorar o código

RGB Matrix layer key indicator (#14626)

* Add layer key indicator example

* Update description

* Deobfuscate with index variable

* Add missing layer variable

* Correct color name and indicator function

* Function typo

* Place layer variable outside loops to save firmware space

Co-authored-by: filterpaper <filterpaper@localhost>
Albert Y %!s(int64=3) %!d(string=hai) anos
pai
achega
e3073be488
Modificáronse 1 ficheiros con 20 adicións e 0 borrados
  1. 20 0
      docs/feature_rgb_matrix.md

+ 20 - 0
docs/feature_rgb_matrix.md

@@ -790,6 +790,26 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
 }
 ```
 
+Layer indicator with only configured keys:
+```c
+void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
+    if (get_highest_layer(layer_state) > 0) {
+        uint8_t layer = get_highest_layer(layer_state);
+
+        for (uint8_t row = 0; row < MATRIX_ROWS; ++row) {
+            for (uint8_t col = 0; col < MATRIX_COLS; ++col) {
+                uint8_t index = g_led_config.matrix_co[row][col];
+
+                if (index >= led_min && index <= led_max && index != NO_LED &&
+                keymap_key_to_keycode(layer, (keypos_t){col,row}) > KC_TRNS) {
+                    rgb_matrix_set_color(index, RGB_GREEN);
+                }
+            }
+        }
+    }
+}
+```
+
 #### Examples :id=indicator-examples
 
 This example sets the modifiers to be a specific color based on the layer state.  You can use a switch case here, instead, if you would like.  This uses HSV and then converts to RGB, because this allows the brightness to be limited (important when using the WS2812 driver).