aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDrashna Jaelre <drashna@live.com>2020-07-27 14:46:39 -0700
committerJames Young <18669334+noroadsleft@users.noreply.github.com>2020-08-29 14:30:02 -0700
commite6266b19be46c1340209bdd0a6c519452d5b9f2a (patch)
tree7463f3c351623667b7d4aff956ab0c34a40ee4b5
parent4b74f985ec7b14f5517df4e591f0c36b24f85f5c (diff)
downloadqmk_firmware-e6266b19be46c1340209bdd0a6c519452d5b9f2a.tar.gz
qmk_firmware-e6266b19be46c1340209bdd0a6c519452d5b9f2a.zip
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
-rw-r--r--tmk_core/common/action_layer.h6
-rw-r--r--tmk_core/common/bootmagic.c2
-rw-r--r--tmk_core/common/magic.c3
3 files changed, 9 insertions, 2 deletions
diff --git a/tmk_core/common/action_layer.h b/tmk_core/common/action_layer.h
index 16922c1ff..9b9173c33 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);
85void layer_or(layer_state_t state); 85void layer_or(layer_state_t state);
86void layer_and(layer_state_t state); 86void layer_and(layer_state_t state);
87void layer_xor(layer_state_t state); 87void layer_xor(layer_state_t state);
88layer_state_t layer_state_set_user(layer_state_t state);
89layer_state_t layer_state_set_kb(layer_state_t state);
88#else 90#else
89# define layer_state 0 91# define layer_state 0
90 92
@@ -101,10 +103,10 @@ void layer_xor(layer_state_t state);
101# define layer_or(state) (void)state 103# define layer_or(state) (void)state
102# define layer_and(state) (void)state 104# define layer_and(state) (void)state
103# define layer_xor(state) (void)state 105# define layer_xor(state) (void)state
106# define layer_state_set_kb(state) (void)state
107# define layer_state_set_user(state) (void)state
104#endif 108#endif
105 109
106layer_state_t layer_state_set_user(layer_state_t state);
107layer_state_t layer_state_set_kb(layer_state_t state);
108 110
109/* pressed actions cache */ 111/* pressed actions cache */
110#if !defined(NO_ACTION_LAYER) && !defined(STRICT_LAYER_RELEASE) 112#if !defined(NO_ACTION_LAYER) && !defined(STRICT_LAYER_RELEASE)
diff --git a/tmk_core/common/bootmagic.c b/tmk_core/common/bootmagic.c
index bb2aa0db8..c1b3adf94 100644
--- a/tmk_core/common/bootmagic.c
+++ b/tmk_core/common/bootmagic.c
@@ -122,6 +122,8 @@ void bootmagic(void) {
122 default_layer = eeconfig_read_default_layer(); 122 default_layer = eeconfig_read_default_layer();
123 default_layer_set((layer_state_t)default_layer); 123 default_layer_set((layer_state_t)default_layer);
124 } 124 }
125 /* Also initialize layer state to trigger callback functions for layer_state */
126 layer_state_set_kb((layer_state_t)layer_state);
125 127
126 /* EE_HANDS handedness */ 128 /* EE_HANDS handedness */
127 if (bootmagic_scan_keycode(BOOTMAGIC_KEY_EE_HANDS_LEFT)) { 129 if (bootmagic_scan_keycode(BOOTMAGIC_KEY_EE_HANDS_LEFT)) {
diff --git a/tmk_core/common/magic.c b/tmk_core/common/magic.c
index d8ab52573..e14994164 100644
--- a/tmk_core/common/magic.c
+++ b/tmk_core/common/magic.c
@@ -33,4 +33,7 @@ void magic(void) {
33 uint8_t default_layer = 0; 33 uint8_t default_layer = 0;
34 default_layer = eeconfig_read_default_layer(); 34 default_layer = eeconfig_read_default_layer();
35 default_layer_set((layer_state_t)default_layer); 35 default_layer_set((layer_state_t)default_layer);
36
37 /* Also initialize layer state to trigger callback functions for layer_state */
38 layer_state_set_kb((layer_state_t)layer_state);
36} 39}