diff options
| author | Erez Zukerman <bulk@ezuk.org> | 2016-04-06 22:47:31 +0300 |
|---|---|---|
| committer | Erez Zukerman <bulk@ezuk.org> | 2016-04-06 22:47:31 +0300 |
| commit | 153a6fb0d3e9b54c4d6241c44ffdb9ce8a65de7f (patch) | |
| tree | cd210829c02686007ff02784dad65accf0779cd9 /tmk_core/common/action.c | |
| parent | 27ee47d0bd467e86e36feff8c66b3aea661f91b5 (diff) | |
| parent | 567f256c5d4598adb4dcd63fa4e4a7b4df553b12 (diff) | |
| download | qmk_firmware-153a6fb0d3e9b54c4d6241c44ffdb9ce8a65de7f.tar.gz qmk_firmware-153a6fb0d3e9b54c4d6241c44ffdb9ce8a65de7f.zip | |
Merge pull request #182 from Vifon/modifier-release-fix
Fix the layer-dependent modifiers handling
Diffstat (limited to 'tmk_core/common/action.c')
| -rw-r--r-- | tmk_core/common/action.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/tmk_core/common/action.c b/tmk_core/common/action.c index 901089634..f9e6c17dc 100644 --- a/tmk_core/common/action.c +++ b/tmk_core/common/action.c | |||
| @@ -53,6 +53,22 @@ void action_exec(keyevent_t event) | |||
| 53 | #endif | 53 | #endif |
| 54 | } | 54 | } |
| 55 | 55 | ||
| 56 | #if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS) | ||
| 57 | bool disable_action_cache = false; | ||
| 58 | |||
| 59 | void process_action_nocache(keyrecord_t *record) | ||
| 60 | { | ||
| 61 | disable_action_cache = true; | ||
| 62 | process_action(record); | ||
| 63 | disable_action_cache = false; | ||
| 64 | } | ||
| 65 | #else | ||
| 66 | void process_action_nocache(keyrecord_t *record) | ||
| 67 | { | ||
| 68 | process_action(record); | ||
| 69 | } | ||
| 70 | #endif | ||
| 71 | |||
| 56 | __attribute__ ((weak)) | 72 | __attribute__ ((weak)) |
| 57 | void process_action_kb(keyrecord_t *record) {} | 73 | void process_action_kb(keyrecord_t *record) {} |
| 58 | 74 | ||
| @@ -67,7 +83,7 @@ void process_action(keyrecord_t *record) | |||
| 67 | 83 | ||
| 68 | process_action_kb(record); | 84 | process_action_kb(record); |
| 69 | 85 | ||
| 70 | action_t action = layer_switch_get_action(event.key); | 86 | action_t action = store_or_get_action(event.pressed, event.key); |
| 71 | dprint("ACTION: "); debug_action(action); | 87 | dprint("ACTION: "); debug_action(action); |
| 72 | #ifndef NO_ACTION_LAYER | 88 | #ifndef NO_ACTION_LAYER |
| 73 | dprint(" layer_state: "); layer_debug(); | 89 | dprint(" layer_state: "); layer_debug(); |
