Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add layout change callbacks to VIA #16087

Merged
merged 2 commits into from
Feb 6, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions keyboards/work_louder/work_board/work_board.c
Original file line number Diff line number Diff line change
Expand Up @@ -100,15 +100,15 @@ led_config_t g_led_config = { {
} };
// 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) {
# ifdef VIA_ENABLE
static bool layout_2u = false;
static uint16_t timer = 0;
if (timer_elapsed(timer) > 500) {
timer = timer_read();
layout_2u = (bool)via_get_layout_options();
}
if (layout_2u) {
if (via_layout_2u) {
rgb_matrix_set_color(5, 0, 0, 0);
rgb_matrix_set_color(7, 0, 0, 0);
} else {
Expand Down
4 changes: 4 additions & 0 deletions quantum/via.c
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ void via_init(void) {
// Let keyboard level test EEPROM valid state,
// but not set it valid, it is done here.
via_init_kb();
via_set_layout_options_kb(via_get_layout_options());

// If the EEPROM has the magic, the data is good.
// OK to load from EEPROM.
Expand Down Expand Up @@ -131,7 +132,10 @@ uint32_t via_get_layout_options(void) {
return value;
}

__attribute__((weak)) void via_set_layout_options_kb(uint32_t value) {}

void via_set_layout_options(uint32_t value) {
via_set_layout_options_kb(value);
// Start at the least significant byte
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++) {
Expand Down
1 change: 1 addition & 0 deletions quantum/via.h
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,7 @@ void via_init(void);
// Used by VIA to store and retrieve the layout options.
uint32_t via_get_layout_options(void);
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.
bool process_record_via(uint16_t keycode, keyrecord_t *record);