瀏覽代碼

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 4 年之前
父節點
當前提交
e3073be488
共有 1 個文件被更改,包括 20 次插入0 次删除
  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
 #### 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).
 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).