diff --git a/corne/crkbd_rev4_1_standard_vial.uf2 b/corne/crkbd_rev4_1_standard_vial.uf2 index 3552f29..ef65789 100644 Binary files a/corne/crkbd_rev4_1_standard_vial.uf2 and b/corne/crkbd_rev4_1_standard_vial.uf2 differ diff --git a/corne/v4.1vial/config.h b/corne/v4.1vial/config.h index 1aa95b7..839a8ec 100644 --- a/corne/v4.1vial/config.h +++ b/corne/v4.1vial/config.h @@ -31,12 +31,13 @@ along with this program. If not, see . // #define LANG_CHANGE_DEFAULT LANG_CHANGE_CTRL_SHIFT // #define LANG_CHANGE_DEFAULT LANG_CHANGE_WIN_SPACE -// #define RGB_MATRIX_ENABLE -// #define RGBLIGHT_LAYERS #define RGB_MATRIX_DRIVER ws2812 -// #define ENABLE_RGB_MATRIX_SOLID_COLOR #define SPLIT_LAYER_STATE_ENABLE +#undef RGB_MATRIX_MAXIMUM_BRIGHTNESS +#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 64 +// #define RGB_MATRIX_DEFAULT_VAL 32 + // Holding mouse movement keys moves the cursor at constant speeds #define MK_3_SPEED diff --git a/corne/v4.1vial/keymap.c b/corne/v4.1vial/keymap.c index a9b58f4..8d61a4f 100644 --- a/corne/v4.1vial/keymap.c +++ b/corne/v4.1vial/keymap.c @@ -653,59 +653,41 @@ void user_timer(void) { // Lighting Layers bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { - for (uint8_t i = led_min; i < led_max; i++) { - switch(get_highest_layer(layer_state|default_layer_state)) { - case L_ENG: - rgb_matrix_set_color(i, RGB_PINK); - break; - case L_RU: - rgb_matrix_set_color(i, RGB_PURPLE); - break; - case L_MEDIA: - rgb_matrix_set_color(i, RGB_MAGENTA); - break; - case L_NAV: - rgb_matrix_set_color(i, RGB_CYAN); - break; - case L_MOUSE: - rgb_matrix_set_color(i, RGB_YELLOW); - break; - case L_SYM: - rgb_matrix_set_color(i, RGB_GREEN); - break; - case L_NUM: - rgb_matrix_set_color(i, RGB_BLUE); - break; - case L_FUN: - rgb_matrix_set_color(i, RGB_RED); - break; - case L_GAME: - rgb_matrix_set_color(i, RGB_ORANGE); - break; - - default: // for any other layers, or the default layer - rgb_matrix_set_color(i, RGB_WHITE); - break; - } + // https://github.com/qmk/qmk_firmware/blob/master/quantum/color.h + hsv_t hsv = {255, 255, 255}; + + // Определяем цвет слоя в HSV + switch (get_highest_layer(layer_state | default_layer_state)) { + case L_ENG: hsv = (hsv_t){HSV_PINK}; break; // PINK + case L_RU: hsv = (hsv_t){HSV_PURPLE}; break; // PURPLE + case L_MEDIA: hsv = (hsv_t){HSV_MAGENTA}; break; // MAGENTA + case L_NAV: hsv = (hsv_t){HSV_CYAN}; break; // CYAN + case L_MOUSE: hsv = (hsv_t){HSV_YELLOW}; break; // YELLOW + case L_SYM: hsv = (hsv_t){HSV_GREEN}; break; // GREEN + case L_NUM: hsv = (hsv_t){HSV_BLUE}; break; // BLUE + case L_FUN: hsv = (hsv_t){HSV_RED}; break; // RED + case L_GAME: hsv = (hsv_t){HSV_ORANGE}; break; // ORANGE + default: hsv = (hsv_t){HSV_WHITE}; break; // WHITE } + + // Ограничиваем яркость глобальной настройкой + if (hsv.v > rgb_matrix_get_val()) { + hsv.v = rgb_matrix_get_val(); + } + + // Конвертируем HSV в RGB + rgb_t rgb = hsv_to_rgb(hsv); + + // Применяем цвет ко всем светодиодам + for (uint8_t i = led_min; i < led_max; i++) { + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + } + return false; } - void matrix_scan_user(void) { user_timer(); - - // // Проверяем, активен ли слой - // if (!layer_state_cmp(layer_state, L_MEDIA) && - // !layer_state_cmp(layer_state, L_NAV) && - // !layer_state_cmp(layer_state, L_MOUSE) && - // !layer_state_cmp(layer_state, L_SYM) && - // !layer_state_cmp(layer_state, L_NUM) && - // !layer_state_cmp(layer_state, L_FUN) && - // !layer_state_cmp(layer_state, L_RU)) { - // // Если ни один из этих слоев не активен, обновляем подсветку на основе текущего базового слоя - // default_layer_state_set_user(default_layer_state); - // } }