/** * Copyright 2020 Christopher Courtney (@drashna) * Copyright 2021 Quentin LEBASTARD * Copyright 2022 Charly Delay (@0xcharly) * Copyright 2023 casuanoob (@casuanoob) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Publicw License as published by * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "quantum.h" #ifdef ENCODER_ENABLE bool encoder_update_kb(uint8_t index, bool clockwise) { if (!encoder_update_user(index, clockwise)) { return false; } switch (index) { case 0: // Left-half encoder, mouse scroll. tap_code(clockwise ? KC_MS_WH_UP : KC_MS_WH_DOWN); break; case 1: // Right-half encoder, volume control. tap_code(clockwise ? KC_AUDIO_VOL_UP : KC_AUDIO_VOL_DOWN); break; } return true; } #endif // ENCODER_ENABLE #ifdef RGB_MATRIX_ENABLE // Layer state indicator bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) { if (!rgb_matrix_indicators_advanced_user(led_min, led_max)) { return false; } if (host_keyboard_led_state().caps_lock) { for (int i = led_min; i <= led_max; i++) { if (HAS_FLAGS(g_led_config.flags[i], LED_FLAG_MODIFIER)) { rgb_matrix_set_color(i, MIN(rgb_matrix_get_val() + 76, 255), 0x00, 0x00); } } } uint8_t layer = get_highest_layer(layer_state); if (layer > 0) { HSV hsv = rgb_matrix_get_hsv(); switch (get_highest_layer(layer_state)) { case 1: hsv = (HSV){HSV_BLUE}; break; case 2: hsv = (HSV){HSV_AZURE}; break; case 3: hsv = (HSV){HSV_ORANGE}; break; case 4: hsv = (HSV){HSV_GREEN}; break; case 5: hsv = (HSV){HSV_TEAL}; break; case 6: hsv = (HSV){HSV_PURPLE}; break; case 7: default: hsv = (HSV){HSV_RED}; break; }; if (hsv.v > rgb_matrix_get_val()) { hsv.v = MIN(rgb_matrix_get_val() + 22, 255); } RGB rgb = hsv_to_rgb(hsv); for (uint8_t i = led_min; i < led_max; i++) { if (HAS_FLAGS(g_led_config.flags[i], LED_FLAG_UNDERGLOW)) { rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); } } } return false; }; #endif // RGB_MATRIX_ENABLE