aboutsummaryrefslogtreecommitdiff
path: root/tmk_core/common/action_layer.c
diff options
context:
space:
mode:
authorAlex Ong <the.onga@gmail.com>2019-01-04 19:39:14 +1100
committerAlex Ong <the.onga@gmail.com>2019-01-04 19:39:14 +1100
commit47c91fc7f75ae0a477e55b687aa0fc30da0a283c (patch)
tree65ad39452748ff2e6d4a83ce54ede6ca22c9ada9 /tmk_core/common/action_layer.c
parentac9b88e8ccbbf38762871504cd827ff0d941c426 (diff)
parent563ce3f225d981ce460c12ca5130dfe47af41df0 (diff)
downloadqmk_firmware-47c91fc7f75ae0a477e55b687aa0fc30da0a283c.tar.gz
qmk_firmware-47c91fc7f75ae0a477e55b687aa0fc30da0a283c.zip
Merge branch 'master' of https://github.com/qmk/qmk_firmware
Diffstat (limited to 'tmk_core/common/action_layer.c')
-rw-r--r--tmk_core/common/action_layer.c23
1 files changed, 20 insertions, 3 deletions
diff --git a/tmk_core/common/action_layer.c b/tmk_core/common/action_layer.c
index f3cd381ab..120ce3f51 100644
--- a/tmk_core/common/action_layer.c
+++ b/tmk_core/common/action_layer.c
@@ -15,13 +15,22 @@
15 */ 15 */
16uint32_t default_layer_state = 0; 16uint32_t default_layer_state = 0;
17 17
18/** \brief Default Layer State Set At user Level
19 *
20 * FIXME: Needs docs
21 */
22__attribute__((weak))
23uint32_t default_layer_state_set_user(uint32_t state) {
24 return state;
25}
26
18/** \brief Default Layer State Set At Keyboard Level 27/** \brief Default Layer State Set At Keyboard Level
19 * 28 *
20 * FIXME: Needs docs 29 * FIXME: Needs docs
21 */ 30 */
22__attribute__((weak)) 31__attribute__((weak))
23uint32_t default_layer_state_set_kb(uint32_t state) { 32uint32_t default_layer_state_set_kb(uint32_t state) {
24 return state; 33 return default_layer_state_set_user(state);
25} 34}
26 35
27/** \brief Default Layer State Set 36/** \brief Default Layer State Set
@@ -35,7 +44,11 @@ static void default_layer_state_set(uint32_t state)
35 default_layer_debug(); debug(" to "); 44 default_layer_debug(); debug(" to ");
36 default_layer_state = state; 45 default_layer_state = state;
37 default_layer_debug(); debug("\n"); 46 default_layer_debug(); debug("\n");
47#ifdef STRICT_LAYER_RELEASE
38 clear_keyboard_but_mods(); // To avoid stuck keys 48 clear_keyboard_but_mods(); // To avoid stuck keys
49#else
50 clear_keyboard_but_mods_and_keys(); // Don't reset held keys
51#endif
39} 52}
40 53
41/** \brief Default Layer Print 54/** \brief Default Layer Print
@@ -118,7 +131,11 @@ void layer_state_set(uint32_t state)
118 layer_debug(); dprint(" to "); 131 layer_debug(); dprint(" to ");
119 layer_state = state; 132 layer_state = state;
120 layer_debug(); dprintln(); 133 layer_debug(); dprintln();
134#ifdef STRICT_LAYER_RELEASE
121 clear_keyboard_but_mods(); // To avoid stuck keys 135 clear_keyboard_but_mods(); // To avoid stuck keys
136#else
137 clear_keyboard_but_mods_and_keys(); // Don't reset held keys
138#endif
122} 139}
123 140
124/** \brief Layer clear 141/** \brief Layer clear
@@ -219,7 +236,7 @@ void layer_debug(void)
219} 236}
220#endif 237#endif
221 238
222#if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS) 239#if !defined(NO_ACTION_LAYER) && !defined(STRICT_LAYER_RELEASE)
223uint8_t source_layers_cache[(MATRIX_ROWS * MATRIX_COLS + 7) / 8][MAX_LAYER_BITS] = {{0}}; 240uint8_t source_layers_cache[(MATRIX_ROWS * MATRIX_COLS + 7) / 8][MAX_LAYER_BITS] = {{0}};
224 241
225void update_source_layers_cache(keypos_t key, uint8_t layer) 242void update_source_layers_cache(keypos_t key, uint8_t layer)
@@ -263,7 +280,7 @@ uint8_t read_source_layers_cache(keypos_t key)
263 */ 280 */
264action_t store_or_get_action(bool pressed, keypos_t key) 281action_t store_or_get_action(bool pressed, keypos_t key)
265{ 282{
266#if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS) 283#if !defined(NO_ACTION_LAYER) && !defined(STRICT_LAYER_RELEASE)
267 if (disable_action_cache) { 284 if (disable_action_cache) {
268 return layer_switch_get_action(key); 285 return layer_switch_get_action(key);
269 } 286 }