1 #include "custom_encoder.h"
2 #include "custom_keycodes.h"
5 #include "custom_rgb.h"
7 // I'm lazy and like constants over calculations, also using it as a compile time check
8 #if defined(RGB_MATRIX_ENABLE)
9 #define RGB_FUNCTION_COUNT 6
10 #elif defined(RGBLIGHT_ENABLE)
11 #define RGB_FUNCTION_COUNT 5
14 typedef void (*rgb_f)(void);
16 const rgb_f rgb_functions[RGB_FUNCTION_COUNT][2] = {
17 #if defined(RGB_MATRIX_ENABLE)
18 { rgb_matrix_increase_hue, rgb_matrix_decrease_hue },
19 { rgb_matrix_increase_sat, rgb_matrix_decrease_sat },
20 { rgb_matrix_increase_val, rgb_matrix_decrease_val },
21 { rgb_matrix_increase_speed, rgb_matrix_decrease_speed },
22 { rgb_matrix_step, rgb_matrix_step_reverse },
23 { rgb_matrix_increase_flags, rgb_matrix_decrease_flags }
24 #elif defined(RGBLIGHT_ENABLE)
25 { rgblight_increase_hue, rgblight_decrease_hue },
26 { rgblight_increase_sat, rgblight_decrease_sat },
27 { rgblight_increase_val, rgblight_decrease_val },
28 { rgblight_increase_speed, rgblight_decrease_speed },
29 { rgblight_step, rgblight_step_reverse }
33 // Start at the end for mode
34 uint8_t rgb_encoder_state = 4;
36 bool process_record_encoder(uint16_t keycode, keyrecord_t *record)
41 if (record->event.pressed) {
42 if (get_mods() & MOD_MASK_SHIFT) {
43 rgb_encoder_state = (rgb_encoder_state - 1);
44 if (rgb_encoder_state >= RGB_FUNCTION_COUNT)
45 rgb_encoder_state = RGB_FUNCTION_COUNT - 1;
47 rgb_encoder_state = (rgb_encoder_state + 1) % RGB_FUNCTION_COUNT;
54 #endif // RGB_OLED_MENU
56 const uint16_t PROGMEM encoders[][2] = {
61 void encoder_update_user(uint8_t index, bool clockwise)
63 if (!is_keyboard_master())
67 if (index == RGB_OLED_MENU)
68 (*rgb_functions[rgb_encoder_state][clockwise])();
70 #endif // RGB_OLED_MENU
71 tap_code16(pgm_read_word(&encoders[index][clockwise]));