diff options
author | Didier Loiseau <didierloiseau+git@gmail.com> | 2016-03-08 23:14:15 +0100 |
---|---|---|
committer | Didier Loiseau <didierloiseau+git@gmail.com> | 2016-03-08 23:14:15 +0100 |
commit | b7a81f041906c3c978a314987e486536be0a58cd (patch) | |
tree | 81865fdb062f2716cb1581a856f3728fb4b09209 /tmk_core/common/action.c | |
parent | 7d3ebd7b40b96f576fe4608b33f47329c334925b (diff) | |
download | qmk_firmware-b7a81f041906c3c978a314987e486536be0a58cd.tar.gz qmk_firmware-b7a81f041906c3c978a314987e486536be0a58cd.zip |
Fix #156: clear weak mods on every key press
- new macro_mods bit field for mods applied by macros
- weak_mods now only used for ACT_{L,R}MODS (i.e. LSFT, RSFT, LCTL etc.)
- clear the _weak_ mods on every key *pressed* such that LSFT etc.
can no more interfere with the next key
Diffstat (limited to 'tmk_core/common/action.c')
-rw-r--r-- | tmk_core/common/action.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/tmk_core/common/action.c b/tmk_core/common/action.c index 77ea39e942..4197c53ed2 100644 --- a/tmk_core/common/action.c +++ b/tmk_core/common/action.c @@ -70,6 +70,10 @@ void process_action(keyrecord_t *record) #endif dprintln(); + if (event.pressed) { + // clear the potential weak mods left by previously pressed keys + clear_weak_mods(); + } switch (action.kind.id) { /* Key and Mods */ case ACT_LMODS: @@ -500,6 +504,7 @@ void clear_keyboard(void) void clear_keyboard_but_mods(void) { clear_weak_mods(); + clear_macro_mods(); clear_keys(); send_keyboard_report(); #ifdef MOUSEKEY_ENABLE |