3x5_3.c (3150B)
- /**
- * Copyright 2020 Christopher Courtney <drashna@live.com> (@drashna)
- * Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
- * Copyright 2022 Charly Delay <charly@codesink.dev> (@0xcharly)
- * Copyright 2023 casuanoob <casuanoob@hotmail.com> (@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 <http://www.gnu.org/licenses/>.
- */
- #include "dilemma.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_t hsv = rgb_matrix_get_hsv();
- switch (get_highest_layer(layer_state)) {
- case 1:
- hsv = (hsv_t){HSV_BLUE};
- break;
- case 2:
- hsv = (hsv_t){HSV_AZURE};
- break;
- case 3:
- hsv = (hsv_t){HSV_ORANGE};
- break;
- case 4:
- hsv = (hsv_t){HSV_GREEN};
- break;
- case 5:
- hsv = (hsv_t){HSV_TEAL};
- break;
- case 6:
- hsv = (hsv_t){HSV_PURPLE};
- break;
- case 7:
- default:
- hsv = (hsv_t){HSV_RED};
- break;
- };
- if (hsv.v > rgb_matrix_get_val()) {
- hsv.v = MIN(rgb_matrix_get_val() + 22, 255);
- }
- rgb_t 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