From 930414eedb491644ad3421c7ba719852eafbcf5f Mon Sep 17 00:00:00 2001 From: Drashna Jael're Date: Wed, 4 Mar 2020 22:21:34 -0800 Subject: [PATCH 1/4] 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. --- tmk_core/common/bootmagic.c | 2 ++ tmk_core/common/magic.c | 3 +++ 2 files changed, 5 insertions(+) diff --git a/tmk_core/common/bootmagic.c b/tmk_core/common/bootmagic.c index bb2aa0db8cdd..41688dac30ee 100644 --- a/tmk_core/common/bootmagic.c +++ b/tmk_core/common/bootmagic.c @@ -122,6 +122,8 @@ void bootmagic(void) { default_layer = eeconfig_read_default_layer(); default_layer_set((layer_state_t)default_layer); } + /* Also initialize layer state to trigger callback functions for layer_state */ + layer_clear(); /* EE_HANDS handedness */ if (bootmagic_scan_keycode(BOOTMAGIC_KEY_EE_HANDS_LEFT)) { diff --git a/tmk_core/common/magic.c b/tmk_core/common/magic.c index d8ab52573511..916cc0e3deeb 100644 --- a/tmk_core/common/magic.c +++ b/tmk_core/common/magic.c @@ -33,4 +33,7 @@ void magic(void) { uint8_t default_layer = 0; default_layer = eeconfig_read_default_layer(); default_layer_set((layer_state_t)default_layer); + + /* Also initialize layer state to trigger callback functions for layer_state */ + layer_clear(); } From 3b82ad8d1a9569f80e916f643b746c2ae703808b Mon Sep 17 00:00:00 2001 From: Drashna Jael're Date: Tue, 10 Mar 2020 00:52:38 -0700 Subject: [PATCH 2/4] Stupid hack --- tmk_core/common/bootmagic.c | 2 +- tmk_core/common/magic.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tmk_core/common/bootmagic.c b/tmk_core/common/bootmagic.c index 41688dac30ee..a565ea677d9d 100644 --- a/tmk_core/common/bootmagic.c +++ b/tmk_core/common/bootmagic.c @@ -123,7 +123,7 @@ void bootmagic(void) { default_layer_set((layer_state_t)default_layer); } /* Also initialize layer state to trigger callback functions for layer_state */ - layer_clear(); + layer_state_set_kb(layer_state); /* EE_HANDS handedness */ if (bootmagic_scan_keycode(BOOTMAGIC_KEY_EE_HANDS_LEFT)) { diff --git a/tmk_core/common/magic.c b/tmk_core/common/magic.c index 916cc0e3deeb..ea3d4d0171ea 100644 --- a/tmk_core/common/magic.c +++ b/tmk_core/common/magic.c @@ -35,5 +35,5 @@ void magic(void) { default_layer_set((layer_state_t)default_layer); /* Also initialize layer state to trigger callback functions for layer_state */ - layer_clear(); + layer_state_set_kb(layer_state); } From 635f6b612512b0c36d5b9a4fd072e342090ae9f1 Mon Sep 17 00:00:00 2001 From: Drashna Jael're Date: Mon, 18 May 2020 04:27:12 -0700 Subject: [PATCH 3/4] Fix type casting? --- tmk_core/common/bootmagic.c | 2 +- tmk_core/common/magic.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tmk_core/common/bootmagic.c b/tmk_core/common/bootmagic.c index a565ea677d9d..c1b3adf94df1 100644 --- a/tmk_core/common/bootmagic.c +++ b/tmk_core/common/bootmagic.c @@ -123,7 +123,7 @@ void bootmagic(void) { 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); + layer_state_set_kb((layer_state_t)layer_state); /* EE_HANDS handedness */ if (bootmagic_scan_keycode(BOOTMAGIC_KEY_EE_HANDS_LEFT)) { diff --git a/tmk_core/common/magic.c b/tmk_core/common/magic.c index ea3d4d0171ea..e14994164e22 100644 --- a/tmk_core/common/magic.c +++ b/tmk_core/common/magic.c @@ -35,5 +35,5 @@ void magic(void) { 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); + layer_state_set_kb((layer_state_t)layer_state); } From 9f30a553d566b6df39cc435238978ce3500c0984 Mon Sep 17 00:00:00 2001 From: Drashna Jael're Date: Tue, 19 May 2020 02:10:17 -0700 Subject: [PATCH 4/4] Fix compile issues with magic is disabled --- tmk_core/common/action_layer.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tmk_core/common/action_layer.h b/tmk_core/common/action_layer.h index 16922c1ff921..9b9173c33bae 100644 --- a/tmk_core/common/action_layer.h +++ b/tmk_core/common/action_layer.h @@ -85,6 +85,8 @@ void layer_invert(uint8_t layer); void layer_or(layer_state_t state); void layer_and(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 # define layer_state 0 @@ -101,10 +103,10 @@ void layer_xor(layer_state_t state); # define layer_or(state) (void)state # define layer_and(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 -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 */ #if !defined(NO_ACTION_LAYER) && !defined(STRICT_LAYER_RELEASE)