color selection for battery status added
This commit is contained in:
parent
34264e3d92
commit
9f2dd537ee
2 changed files with 36 additions and 19 deletions
23
app/Kconfig
23
app/Kconfig
|
@ -250,23 +250,38 @@ config ZMK_RGB_UNDERGLOW_AUTO_OFF_USB
|
||||||
bool "Turn off RGB underglow when USB is disconnected"
|
bool "Turn off RGB underglow when USB is disconnected"
|
||||||
depends on USB_DEVICE_STACK
|
depends on USB_DEVICE_STACK
|
||||||
|
|
||||||
|
config ZMK_RGB_UNDERGLOW_NUM_LEDS
|
||||||
|
int "Numer of leds on the pcb"
|
||||||
|
range 0 100
|
||||||
|
default 100
|
||||||
|
|
||||||
config ZMK_RGB_UNDERGLOW_STATUS_BATTERY
|
config ZMK_RGB_UNDERGLOW_STATUS_BATTERY
|
||||||
bool "Shows battery status on a LED"
|
bool "Shows battery status on a LED"
|
||||||
default y
|
default y
|
||||||
|
|
||||||
config ZMK_RGB_UNDERGLOW_STATUS_BATTERY_N
|
config ZMK_RGB_UNDERGLOW_STATUS_BATTERY_N
|
||||||
int "LED number to show the battery status"
|
int "LED number to show the battery status"
|
||||||
range 0 26
|
range 0 ZMK_RGB_UNDERGLOW_NUM_LEDS
|
||||||
default 0
|
default 0
|
||||||
depends on ZMK_RGB_UNDERGLOW_STATUS_BATTERY
|
depends on ZMK_RGB_UNDERGLOW_STATUS_BATTERY
|
||||||
|
|
||||||
|
config ZMK_RGB_UNDERGLOW_STATUS_BATTERY_COLOR_MIN
|
||||||
|
int "Color when battery is at 0%"
|
||||||
|
range 0 359
|
||||||
|
default 0
|
||||||
|
|
||||||
|
config ZMK_RGB_UNDERGLOW_STATUS_BATTERY_COLOR_MAX
|
||||||
|
int "Color when battery is at 100%"
|
||||||
|
range 0 359
|
||||||
|
default 100
|
||||||
|
|
||||||
config ZMK_RGB_UNDERGLOW_STATUS_LAYER
|
config ZMK_RGB_UNDERGLOW_STATUS_LAYER
|
||||||
bool "Shows layer status on a LED"
|
bool "Shows layer status on a LED"
|
||||||
default y
|
default y
|
||||||
|
|
||||||
config ZMK_RGB_UNDERGLOW_STATUS_LAYER_N
|
config ZMK_RGB_UNDERGLOW_STATUS_LAYER_N
|
||||||
int "LED number to show the layer status"
|
int "LED number to show the layer status"
|
||||||
range 0 26
|
range 0 ZMK_RGB_UNDERGLOW_NUM_LEDS
|
||||||
default 1
|
default 1
|
||||||
depends on ZMK_RGB_UNDERGLOW_STATUS_LAYER
|
depends on ZMK_RGB_UNDERGLOW_STATUS_LAYER
|
||||||
|
|
||||||
|
@ -276,7 +291,7 @@ config ZMK_RGB_UNDERGLOW_STATUS_OUTPUT
|
||||||
|
|
||||||
config ZMK_RGB_UNDERGLOW_STATUS_OUTPUT_N
|
config ZMK_RGB_UNDERGLOW_STATUS_OUTPUT_N
|
||||||
int "LED number to show the output status"
|
int "LED number to show the output status"
|
||||||
range 0 26
|
range 0 ZMK_RGB_UNDERGLOW_NUM_LEDS
|
||||||
default 2
|
default 2
|
||||||
depends on ZMK_RGB_UNDERGLOW_STATUS_OUTPUT
|
depends on ZMK_RGB_UNDERGLOW_STATUS_OUTPUT
|
||||||
|
|
||||||
|
@ -286,7 +301,7 @@ config ZMK_RGB_UNDERGLOW_STATUS_BLE
|
||||||
|
|
||||||
config ZMK_RGB_UNDERGLOW_STATUS_BLE_N
|
config ZMK_RGB_UNDERGLOW_STATUS_BLE_N
|
||||||
int "LED number to show the selected ble"
|
int "LED number to show the selected ble"
|
||||||
range 0 26
|
range 0 ZMK_RGB_UNDERGLOW_NUM_LEDS
|
||||||
default 3
|
default 3
|
||||||
depends on ZMK_RGB_UNDERGLOW_STATUS_BLE
|
depends on ZMK_RGB_UNDERGLOW_STATUS_BLE
|
||||||
|
|
||||||
|
|
|
@ -80,6 +80,13 @@ static struct zmk_led_hsb hsb_scale_zero_max(struct zmk_led_hsb hsb) {
|
||||||
return hsb;
|
return hsb;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static uint8_t hue_scale_range(uint8_t hue) {
|
||||||
|
int hue_d = abs(CONFIG_ZMK_RGB_UNDERGLOW_STATUS_BATTERY_COLOR_MAX - CONFIG_ZMK_RGB_UNDERGLOW_STATUS_BATTERY_COLOR_MIN);
|
||||||
|
int direc = hue_d - abs(CONFIG_ZMK_RGB_UNDERGLOW_STATUS_BATTERY_COLOR_MAX - CONFIG_ZMK_RGB_UNDERGLOW_STATUS_BATTERY_COLOR_MIN - 1);
|
||||||
|
hue = (hue * hue_d / 100) + (CONFIG_ZMK_RGB_UNDERGLOW_STATUS_BATTERY_COLOR_MIN * direc);
|
||||||
|
return hue;
|
||||||
|
}
|
||||||
|
|
||||||
static struct led_rgb hsb_to_rgb(struct zmk_led_hsb hsb) {
|
static struct led_rgb hsb_to_rgb(struct zmk_led_hsb hsb) {
|
||||||
double r, g, b;
|
double r, g, b;
|
||||||
|
|
||||||
|
@ -186,36 +193,31 @@ static void zmk_rgb_underglow_effect_status() {
|
||||||
// and turn on specific ones.
|
// and turn on specific ones.
|
||||||
|
|
||||||
#if CONFIG_ZMK_SPLIT_ROLE_CENTRAL
|
#if CONFIG_ZMK_SPLIT_ROLE_CENTRAL
|
||||||
|
struct zmk_led_hsb status_hsb = state.color;
|
||||||
|
|
||||||
// ------- Turn on the layer status leds -------
|
// ------- Turn on the layer status leds -------
|
||||||
#if IS_ENABLED(CONFIG_ZMK_RGB_UNDERGLOW_STATUS_LAYER)
|
#if IS_ENABLED(CONFIG_ZMK_RGB_UNDERGLOW_STATUS_LAYER)
|
||||||
struct zmk_led_hsb layer_hsb = state.color;
|
status_hsb.h = zmk_keymap_highest_layer_active() * 20;
|
||||||
layer_hsb.h = zmk_keymap_highest_layer_active() * 20;
|
pixels[CONFIG_ZMK_RGB_UNDERGLOW_STATUS_LAYER_N] = hsb_to_rgb(hsb_scale_min_max(status_hsb));
|
||||||
|
|
||||||
pixels[CONFIG_ZMK_RGB_UNDERGLOW_STATUS_LAYER_N] = hsb_to_rgb(hsb_scale_min_max(layer_hsb));
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// ------- Turn on the output status led -------
|
// ------- Turn on the output status led -------
|
||||||
#if IS_ENABLED(CONFIG_ZMK_RGB_UNDERGLOW_STATUS_OUTPUT)
|
#if IS_ENABLED(CONFIG_ZMK_RGB_UNDERGLOW_STATUS_OUTPUT)
|
||||||
struct zmk_led_hsb output_hsb = state.color;
|
status_hsb.h = zmk_endpoints_selected() * 40;
|
||||||
output_hsb.h = zmk_endpoints_selected() * 40;
|
pixels[CONFIG_ZMK_RGB_UNDERGLOW_STATUS_OUTPUT_N] = hsb_to_rgb(hsb_scale_min_max(status_hsb));
|
||||||
|
|
||||||
pixels[CONFIG_ZMK_RGB_UNDERGLOW_STATUS_OUTPUT_N] = hsb_to_rgb(hsb_scale_min_max(output_hsb));
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// ------- Turn on the status led for selected ble -------
|
// ------- Turn on the status led for selected ble -------
|
||||||
#if IS_ENABLED(CONFIG_ZMK_RGB_UNDERGLOW_STATUS_BLE)
|
#if IS_ENABLED(CONFIG_ZMK_RGB_UNDERGLOW_STATUS_BLE)
|
||||||
struct zmk_led_hsb ble_hsb = state.color;
|
status_hsb.h = zmk_ble_active_profile_index() * 80;
|
||||||
ble_hsb.h = zmk_ble_active_profile_index() * 80;
|
pixels[CONFIG_ZMK_RGB_UNDERGLOW_STATUS_BLE_N] = hsb_to_rgb(hsb_scale_min_max(status_hsb));
|
||||||
|
|
||||||
pixels[CONFIG_ZMK_RGB_UNDERGLOW_STATUS_BLE_N] = hsb_to_rgb(hsb_scale_min_max(ble_hsb));
|
|
||||||
//LOG_DBG("---------> BLE selected: %d", ble_hsb.h);
|
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// ------- Turn on the battery status led -------
|
// ------- Turn on the battery status led -------
|
||||||
#if IS_ENABLED(CONFIG_ZMK_RGB_UNDERGLOW_STATUS_BATTERY)
|
#if IS_ENABLED(CONFIG_ZMK_RGB_UNDERGLOW_STATUS_BATTERY)
|
||||||
struct zmk_led_hsb battery_hsb = state.color;
|
struct zmk_led_hsb battery_hsb = state.color;
|
||||||
battery_hsb.h = zmk_battery_state_of_charge();
|
battery_hsb.h = hue_scale_range(zmk_battery_state_of_charge());
|
||||||
battery_hsb.b = zmk_battery_state_of_charge();
|
battery_hsb.b = zmk_battery_state_of_charge();
|
||||||
|
|
||||||
pixels[CONFIG_ZMK_RGB_UNDERGLOW_STATUS_BATTERY_N] = hsb_to_rgb(hsb_scale_min_max(battery_hsb));
|
pixels[CONFIG_ZMK_RGB_UNDERGLOW_STATUS_BATTERY_N] = hsb_to_rgb(hsb_scale_min_max(battery_hsb));
|
||||||
|
|
Loading…
Add table
Reference in a new issue