diff options
| author | Alex Ong <the.onga@gmail.com> | 2019-01-04 19:39:14 +1100 |
|---|---|---|
| committer | Alex Ong <the.onga@gmail.com> | 2019-01-04 19:39:14 +1100 |
| commit | 47c91fc7f75ae0a477e55b687aa0fc30da0a283c (patch) | |
| tree | 65ad39452748ff2e6d4a83ce54ede6ca22c9ada9 /tmk_core/common/action_layer.c | |
| parent | ac9b88e8ccbbf38762871504cd827ff0d941c426 (diff) | |
| parent | 563ce3f225d981ce460c12ca5130dfe47af41df0 (diff) | |
| download | qmk_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.c | 23 |
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 | */ |
| 16 | uint32_t default_layer_state = 0; | 16 | uint32_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)) | ||
| 23 | uint32_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)) |
| 23 | uint32_t default_layer_state_set_kb(uint32_t state) { | 32 | uint32_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) |
| 223 | uint8_t source_layers_cache[(MATRIX_ROWS * MATRIX_COLS + 7) / 8][MAX_LAYER_BITS] = {{0}}; | 240 | uint8_t source_layers_cache[(MATRIX_ROWS * MATRIX_COLS + 7) / 8][MAX_LAYER_BITS] = {{0}}; |
| 224 | 241 | ||
| 225 | void update_source_layers_cache(keypos_t key, uint8_t layer) | 242 | void 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 | */ |
| 264 | action_t store_or_get_action(bool pressed, keypos_t key) | 281 | action_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 | } |
