Initialize Layer State on startup (#8318)
* Initialize Layer State on startup Right now, on startup, the default layer state gets called and set, triggering the callback functions for the default layer state. However, the normal layer state never actually gets initialized. It's set to 0 directly, by default, but the callback functions are never actually called. This creates some inconsistency in the behavior for end users. This adds a simple "clear" that triggers the callback on startup. This should produce more consisten behavior between the two functions and layer masks. * Stupid hack * Fix type casting? * Fix compile issues with magic is disabled
This commit is contained in:
parent
4b74f985ec
commit
e6266b19be
3 changed files with 9 additions and 2 deletions
|
@ -85,6 +85,8 @@ void layer_invert(uint8_t layer);
|
||||||
void layer_or(layer_state_t state);
|
void layer_or(layer_state_t state);
|
||||||
void layer_and(layer_state_t state);
|
void layer_and(layer_state_t state);
|
||||||
void layer_xor(layer_state_t state);
|
void layer_xor(layer_state_t state);
|
||||||
|
layer_state_t layer_state_set_user(layer_state_t state);
|
||||||
|
layer_state_t layer_state_set_kb(layer_state_t state);
|
||||||
#else
|
#else
|
||||||
# define layer_state 0
|
# define layer_state 0
|
||||||
|
|
||||||
|
@ -101,10 +103,10 @@ void layer_xor(layer_state_t state);
|
||||||
# define layer_or(state) (void)state
|
# define layer_or(state) (void)state
|
||||||
# define layer_and(state) (void)state
|
# define layer_and(state) (void)state
|
||||||
# define layer_xor(state) (void)state
|
# define layer_xor(state) (void)state
|
||||||
|
# define layer_state_set_kb(state) (void)state
|
||||||
|
# define layer_state_set_user(state) (void)state
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
layer_state_t layer_state_set_user(layer_state_t state);
|
|
||||||
layer_state_t layer_state_set_kb(layer_state_t state);
|
|
||||||
|
|
||||||
/* pressed actions cache */
|
/* pressed actions cache */
|
||||||
#if !defined(NO_ACTION_LAYER) && !defined(STRICT_LAYER_RELEASE)
|
#if !defined(NO_ACTION_LAYER) && !defined(STRICT_LAYER_RELEASE)
|
||||||
|
|
|
@ -122,6 +122,8 @@ void bootmagic(void) {
|
||||||
default_layer = eeconfig_read_default_layer();
|
default_layer = eeconfig_read_default_layer();
|
||||||
default_layer_set((layer_state_t)default_layer);
|
default_layer_set((layer_state_t)default_layer);
|
||||||
}
|
}
|
||||||
|
/* Also initialize layer state to trigger callback functions for layer_state */
|
||||||
|
layer_state_set_kb((layer_state_t)layer_state);
|
||||||
|
|
||||||
/* EE_HANDS handedness */
|
/* EE_HANDS handedness */
|
||||||
if (bootmagic_scan_keycode(BOOTMAGIC_KEY_EE_HANDS_LEFT)) {
|
if (bootmagic_scan_keycode(BOOTMAGIC_KEY_EE_HANDS_LEFT)) {
|
||||||
|
|
|
@ -33,4 +33,7 @@ void magic(void) {
|
||||||
uint8_t default_layer = 0;
|
uint8_t default_layer = 0;
|
||||||
default_layer = eeconfig_read_default_layer();
|
default_layer = eeconfig_read_default_layer();
|
||||||
default_layer_set((layer_state_t)default_layer);
|
default_layer_set((layer_state_t)default_layer);
|
||||||
|
|
||||||
|
/* Also initialize layer state to trigger callback functions for layer_state */
|
||||||
|
layer_state_set_kb((layer_state_t)layer_state);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue