Deactivate one shot keys if already used in next keydown
This commit is contained in:
parent
e97eef5f86
commit
c6e976889f
2 changed files with 14 additions and 1 deletions
|
@ -37,6 +37,18 @@ void update_oneshot(
|
|||
*state = os_up_unqueued;
|
||||
unregister_code(mod);
|
||||
}
|
||||
if (!is_oneshot_ignored_key(keycode)) {
|
||||
switch (*state) {
|
||||
case os_up_used:
|
||||
unregister_code(mod);
|
||||
break;
|
||||
case os_up_queued:
|
||||
*state = os_up_used;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (!is_oneshot_ignored_key(keycode)) {
|
||||
// On non-ignored keyup, consider the oneshot used.
|
||||
|
@ -44,7 +56,7 @@ void update_oneshot(
|
|||
case os_down_unused:
|
||||
*state = os_down_used;
|
||||
break;
|
||||
case os_up_queued:
|
||||
case os_up_used:
|
||||
*state = os_up_unqueued;
|
||||
unregister_code(mod);
|
||||
break;
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
typedef enum {
|
||||
os_up_unqueued,
|
||||
os_up_queued,
|
||||
os_up_used,
|
||||
os_down_unused,
|
||||
os_down_used,
|
||||
} oneshot_state;
|
||||
|
|
Loading…
Reference in a new issue