94 lines
3.1 KiB
C
94 lines
3.1 KiB
C
/**
|
|
* 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 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
|