Add layout change callbacks to VIA (#16087)
* Add layout change callbacks to VIA * Update worklouder example
This commit is contained in:
parent
3b60e71f07
commit
9124f5dc2d
3 changed files with 12 additions and 7 deletions
|
@ -100,15 +100,15 @@ led_config_t g_led_config = { {
|
||||||
} };
|
} };
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
|
# ifdef VIA_ENABLE
|
||||||
|
bool via_layout_2u = false;
|
||||||
|
|
||||||
|
void via_set_layout_options_kb(uint32_t value) { via_layout_2u = (bool)value; }
|
||||||
|
# endif // VIA_ENABLE
|
||||||
|
|
||||||
__attribute__((weak)) void rgb_matrix_indicators_user(void) {
|
__attribute__((weak)) void rgb_matrix_indicators_user(void) {
|
||||||
# ifdef VIA_ENABLE
|
# ifdef VIA_ENABLE
|
||||||
static bool layout_2u = false;
|
if (via_layout_2u) {
|
||||||
static uint16_t timer = 0;
|
|
||||||
if (timer_elapsed(timer) > 500) {
|
|
||||||
timer = timer_read();
|
|
||||||
layout_2u = (bool)via_get_layout_options();
|
|
||||||
}
|
|
||||||
if (layout_2u) {
|
|
||||||
rgb_matrix_set_color(5, 0, 0, 0);
|
rgb_matrix_set_color(5, 0, 0, 0);
|
||||||
rgb_matrix_set_color(7, 0, 0, 0);
|
rgb_matrix_set_color(7, 0, 0, 0);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -96,6 +96,7 @@ void via_init(void) {
|
||||||
// Let keyboard level test EEPROM valid state,
|
// Let keyboard level test EEPROM valid state,
|
||||||
// but not set it valid, it is done here.
|
// but not set it valid, it is done here.
|
||||||
via_init_kb();
|
via_init_kb();
|
||||||
|
via_set_layout_options_kb(via_get_layout_options());
|
||||||
|
|
||||||
// If the EEPROM has the magic, the data is good.
|
// If the EEPROM has the magic, the data is good.
|
||||||
// OK to load from EEPROM.
|
// OK to load from EEPROM.
|
||||||
|
@ -131,7 +132,10 @@ uint32_t via_get_layout_options(void) {
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__attribute__((weak)) void via_set_layout_options_kb(uint32_t value) {}
|
||||||
|
|
||||||
void via_set_layout_options(uint32_t value) {
|
void via_set_layout_options(uint32_t value) {
|
||||||
|
via_set_layout_options_kb(value);
|
||||||
// Start at the least significant byte
|
// Start at the least significant byte
|
||||||
void *target = (void *)(VIA_EEPROM_LAYOUT_OPTIONS_ADDR + VIA_EEPROM_LAYOUT_OPTIONS_SIZE - 1);
|
void *target = (void *)(VIA_EEPROM_LAYOUT_OPTIONS_ADDR + VIA_EEPROM_LAYOUT_OPTIONS_SIZE - 1);
|
||||||
for (uint8_t i = 0; i < VIA_EEPROM_LAYOUT_OPTIONS_SIZE; i++) {
|
for (uint8_t i = 0; i < VIA_EEPROM_LAYOUT_OPTIONS_SIZE; i++) {
|
||||||
|
|
|
@ -159,6 +159,7 @@ void via_init(void);
|
||||||
// Used by VIA to store and retrieve the layout options.
|
// Used by VIA to store and retrieve the layout options.
|
||||||
uint32_t via_get_layout_options(void);
|
uint32_t via_get_layout_options(void);
|
||||||
void via_set_layout_options(uint32_t value);
|
void via_set_layout_options(uint32_t value);
|
||||||
|
void via_set_layout_options_kb(uint32_t value);
|
||||||
|
|
||||||
// Called by QMK core to process VIA-specific keycodes.
|
// Called by QMK core to process VIA-specific keycodes.
|
||||||
bool process_record_via(uint16_t keycode, keyrecord_t *record);
|
bool process_record_via(uint16_t keycode, keyrecord_t *record);
|
||||||
|
|
Loading…
Reference in a new issue