diff --git a/keyboards/keychron/q2/q2.c b/keyboards/keychron/q2/q2.c index ed4784a54774..4542f8ae38bb 100644 --- a/keyboards/keychron/q2/q2.c +++ b/keyboards/keychron/q2/q2.c @@ -25,6 +25,8 @@ const matrix_row_t matrix_mask[] = { 0b1111111111101111, }; +#ifdef DIP_SWITCH_ENABLE + bool dip_switch_update_kb(uint8_t index, bool active) { if (!dip_switch_update_user(index, active)) { return false;} if (index == 0) { @@ -32,3 +34,36 @@ bool dip_switch_update_kb(uint8_t index, bool active) { } return true; } + +#endif // DIP_SWITCH_ENABLE + +#if defined(RGB_MATRIX_ENABLE) && defined(CAPS_LOCK_LED_INDEX) + +#define CAPS_LOCK_MAX_BRIGHTNESS 0xFF +#ifdef RGB_MATRIX_MAXIMUM_BRIGHTNESS + #undef CAPS_LOCK_MAX_BRIGHTNESS + #define CAPS_LOCK_MAX_BRIGHTNESS RGB_MATRIX_MAXIMUM_BRIGHTNESS +#endif + +#define CAPS_LOCK_VAL_STEP 8 +#ifdef RGB_MATRIX_VAL_STEP + #undef CAPS_LOCK_VAL_STEP + #define CAPS_LOCK_VAL_STEP RGB_MATRIX_VAL_STEP +#endif + +__attribute__((weak)) +void rgb_matrix_indicators_user(void) { + if (host_keyboard_led_state().caps_lock) { + uint8_t b = rgb_matrix_get_val(); + if (b < CAPS_LOCK_VAL_STEP) { + b = CAPS_LOCK_VAL_STEP; + } else if (b < (CAPS_LOCK_MAX_BRIGHTNESS - CAPS_LOCK_VAL_STEP)) { + b += CAPS_LOCK_VAL_STEP; // one step more than current brightness + } else { + b = CAPS_LOCK_MAX_BRIGHTNESS; + } + rgb_matrix_set_color(CAPS_LOCK_LED_INDEX, b, b, b); // white, with the adjusted brightness } + } +} + +#endif // CAPS_LOCK_LED_INDEX diff --git a/keyboards/keychron/q2/q2_ansi_stm32l432/config.h b/keyboards/keychron/q2/q2_ansi_stm32l432/config.h index e41857d9b2a9..317438ac31bb 100644 --- a/keyboards/keychron/q2/q2_ansi_stm32l432/config.h +++ b/keyboards/keychron/q2/q2_ansi_stm32l432/config.h @@ -24,3 +24,6 @@ #define DRIVER_1_LED_TOTAL 34 #define DRIVER_2_LED_TOTAL 33 #define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) + +/* Enable caps-lock LED */ +#define CAPS_LOCK_LED_INDEX 30 diff --git a/keyboards/keychron/q2/q2_ansi_stm32l432_ec11/config.h b/keyboards/keychron/q2/q2_ansi_stm32l432_ec11/config.h index 76cd5d0e782f..d435d9173371 100644 --- a/keyboards/keychron/q2/q2_ansi_stm32l432_ec11/config.h +++ b/keyboards/keychron/q2/q2_ansi_stm32l432_ec11/config.h @@ -31,3 +31,6 @@ /* Specifies the number of pulses the encoder registers between each detent */ #define ENCODER_RESOLUTION 4 + +/* Enable caps-lock LED */ +#define CAPS_LOCK_LED_INDEX 30 diff --git a/keyboards/keychron/q2/q2_iso_stm32l432/config.h b/keyboards/keychron/q2/q2_iso_stm32l432/config.h index 70a60fd0269c..8c7e79576189 100644 --- a/keyboards/keychron/q2/q2_iso_stm32l432/config.h +++ b/keyboards/keychron/q2/q2_iso_stm32l432/config.h @@ -24,3 +24,6 @@ #define DRIVER_1_LED_TOTAL 34 #define DRIVER_2_LED_TOTAL 34 #define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) + +/* Enable caps-lock LED */ +#define CAPS_LOCK_LED_INDEX 29 diff --git a/keyboards/keychron/q2/q2_iso_stm32l432_ec11/config.h b/keyboards/keychron/q2/q2_iso_stm32l432_ec11/config.h index 486d3fd3b89e..437cde9c074e 100644 --- a/keyboards/keychron/q2/q2_iso_stm32l432_ec11/config.h +++ b/keyboards/keychron/q2/q2_iso_stm32l432_ec11/config.h @@ -31,3 +31,6 @@ /* Specifies the number of pulses the encoder registers between each detent */ #define ENCODER_RESOLUTION 4 + +/* Enable caps-lock LED */ +#define CAPS_LOCK_LED_INDEX 29