From 80ccbdfd86b75689561c43d9344ccb3f15e4d094 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Wed, 27 Sep 2023 00:41:13 +0100 Subject: [PATCH] More data driven RGB/LED Matrix config (#21939) --- data/mappings/info_config.hjson | 8 ++++++++ data/schemas/keyboard.jsonschema | 8 ++++++++ docs/reference_info_json.md | 24 ++++++++++++++++++++++++ 3 files changed, 40 insertions(+) diff --git a/data/mappings/info_config.hjson b/data/mappings/info_config.hjson index c3db2e46a24..e68a4439d05 100644 --- a/data/mappings/info_config.hjson +++ b/data/mappings/info_config.hjson @@ -67,7 +67,11 @@ "LEADER_TIMEOUT": {"info_key": "leader_key.timeout", "value_type": "int"}, // LED Matrix + "LED_DISABLE_WHEN_USB_SUSPENDED": {"info_key": "led_matrix.sleep", "value_type": "bool"}, "LED_MATRIX_CENTER": {"info_key": "led_matrix.center_point", "value_type": "array.int"}, + "LED_MATRIX_KEYRELEASES": {"info_key": "led_matrix.react_on_keyup", "value_type": "bool"}, + "LED_MATRIX_LED_FLUSH_LIMIT": {"info_key": "led_matrix.led_flush_limit", "value_type": "int"}, + "LED_MATRIX_LED_PROCESS_LIMIT": {"info_key": "led_matrix.led_process_limit", "value_type": "int", "to_json": false}, "LED_MATRIX_MAXIMUM_BRIGHTNESS": {"info_key": "led_matrix.max_brightness", "value_type": "int"}, "LED_MATRIX_SPD_STEP": {"info_key": "led_matrix.speed_steps", "value_type": "int"}, "LED_MATRIX_SPLIT": {"info_key": "led_matrix.split_count", "value_type": "array.int"}, @@ -104,8 +108,12 @@ "PS2_DATA_PIN": {"info_key": "ps2.data_pin"}, // RGB Matrix + "RGB_DISABLE_WHEN_USB_SUSPENDED": {"info_key": "rgb_matrix.sleep", "value_type": "bool"}, "RGB_MATRIX_CENTER": {"info_key": "rgb_matrix.center_point", "value_type": "array.int"}, "RGB_MATRIX_HUE_STEP": {"info_key": "rgb_matrix.hue_steps", "value_type": "int"}, + "RGB_MATRIX_KEYRELEASES": {"info_key": "rgb_matrix.react_on_keyup", "value_type": "bool"}, + "RGB_MATRIX_LED_FLUSH_LIMIT": {"info_key": "rgb_matrix.led_flush_limit", "value_type": "int"}, + "RGB_MATRIX_LED_PROCESS_LIMIT": {"info_key": "rgb_matrix.led_process_limit", "value_type": "int", "to_json": false}, "RGB_MATRIX_MAXIMUM_BRIGHTNESS": {"info_key": "rgb_matrix.max_brightness", "value_type": "int"}, "RGB_MATRIX_SAT_STEP": {"info_key": "rgb_matrix.sat_steps", "value_type": "int"}, "RGB_MATRIX_SPD_STEP": {"info_key": "rgb_matrix.speed_steps", "value_type": "int"}, diff --git a/data/schemas/keyboard.jsonschema b/data/schemas/keyboard.jsonschema index 1d9b7e7e6a3..9c63ab8bcf5 100644 --- a/data/schemas/keyboard.jsonschema +++ b/data/schemas/keyboard.jsonschema @@ -402,6 +402,10 @@ "timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"}, "val_steps": {"$ref": "qmk.definitions.v1#/unsigned_int"}, "speed_steps": {"$ref": "qmk.definitions.v1#/unsigned_int"}, + "led_flush_limit": {"$ref": "qmk.definitions.v1#/unsigned_int"}, + "led_process_limit": {"$ref": "qmk.definitions.v1#/unsigned_int"}, + "react_on_keyup": {"$ref": "qmk.definitions.v1#/unsigned_int"}, + "sleep": {"type": "boolean"}, "split_count": { "type": "array", "minItems": 2, @@ -454,6 +458,10 @@ "sat_steps": {"$ref": "qmk.definitions.v1#/unsigned_int"}, "val_steps": {"$ref": "qmk.definitions.v1#/unsigned_int"}, "speed_steps": {"$ref": "qmk.definitions.v1#/unsigned_int"}, + "led_flush_limit": {"$ref": "qmk.definitions.v1#/unsigned_int"}, + "led_process_limit": {"$ref": "qmk.definitions.v1#/unsigned_int"}, + "react_on_keyup": {"$ref": "qmk.definitions.v1#/unsigned_int"}, + "sleep": {"type": "boolean"}, "split_count": { "type": "array", "minItems": 2, diff --git a/docs/reference_info_json.md b/docs/reference_info_json.md index 323db186647..001d80ddabb 100644 --- a/docs/reference_info_json.md +++ b/docs/reference_info_json.md @@ -342,9 +342,21 @@ Configures the [LED Matrix](feature_led_matrix.md) feature. * The key matrix position associated with the LED. * Example: `[0, 2]` * Example: `{"matrix": [2, 1], "x": 20, "y": 48, "flags": 2}` + * `led_flush_limit` + * Limits in milliseconds how frequently an animation will update the LEDs. + * Default: `16` + * `led_process_limit` + * Limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness). + * Default: `led_count / 5` * `max_brightness` * The maximum value which brightness is scaled to, from 0 to 255. * Default: `255` + * `react_on_keyup` + * Animations react to keyup instead of keydown. + * Default: `false` + * `sleep` + * Turn off the LEDs when the host goes to sleep. + * Default: `false` * `speed_steps` * The number of speed adjustment steps. * Default: `16` @@ -546,12 +558,24 @@ Configures the [RGB Matrix](feature_rgb_matrix.md) feature. * The key matrix position associated with the LED. * Example: `[0, 2]` * Example: `{"matrix": [2, 1], "x": 20, "y": 48, "flags": 2}` + * `led_flush_limit` + * Limits in milliseconds how frequently an animation will update the LEDs. + * Default: `16` + * `led_process_limit` + * Limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness). + * Default: `led_count / 5` * `max_brightness` * The maximum value which the HSV "V" component is scaled to, from 0 to 255. * Default: `255` + * `react_on_keyup` + * Animations react to keyup instead of keydown. + * Default: `false` * `sat_steps` * The number of saturation adjustment steps. * Default: `16` + * `sleep` + * Turn off the LEDs when the host goes to sleep. + * Default: `false` * `speed_steps` * The number of speed adjustment steps. * Default: `16`