summaryrefslogtreecommitdiff
path: root/tmk_core/common/action.c
diff options
context:
space:
mode:
authorzk-phi <zk-phi@users.noreply.github.com>2020-01-10 16:48:06 +0900
committerFlorian Didron <fdidron@users.noreply.github.com>2020-02-26 10:15:12 +0900
commitfcfe18283633c39626e7582af28fc5193a98ee65 (patch)
treea307e7945f7dff2c8a209be8ea6d7f477c427626 /tmk_core/common/action.c
parentb80becc5e54066a984505465ea22c073aefc14a4 (diff)
Add per-key IGNORE_MOD_TAP_INTERRUPT feature (#7838)
* Implement IGNORE_MOD_TAP_INTERRUPT_PER_KEY - Add configurable option IGNORE_MOD_TAP_INTERRUPT_PER_KEY - Add function get_ignore_mod_tap_interrupt iff the option is enabled Unless IGNORE_MOD_TAP_INTERRUPT_PER_KEY is defined, this patch does not affect the resulting binary. * Add documentation for IGNORE_MOD_TAP_INTERRUPT_PER_KEY
Diffstat (limited to 'tmk_core/common/action.c')
-rw-r--r--tmk_core/common/action.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/tmk_core/common/action.c b/tmk_core/common/action.c
index bd6aeba4f8..dbde31caba 100644
--- a/tmk_core/common/action.c
+++ b/tmk_core/common/action.c
@@ -47,6 +47,10 @@ int retro_tapping_counter = 0;
# include <fauxclicky.h>
#endif
+#ifdef IGNORE_MOD_TAP_INTERRUPT_PER_KEY
+__attribute__ ((weak)) bool get_ignore_mod_tap_interrupt(uint16_t keycode) { return false; }
+#endif
+
#ifndef TAP_CODE_DELAY
# define TAP_CODE_DELAY 0
#endif
@@ -308,8 +312,12 @@ void process_action(keyrecord_t *record, action_t action) {
default:
if (event.pressed) {
if (tap_count > 0) {
-# ifndef IGNORE_MOD_TAP_INTERRUPT
- if (record->tap.interrupted) {
+# if !defined(IGNORE_MOD_TAP_INTERRUPT) || defined(IGNORE_MOD_TAP_INTERRUPT_PER_KEY)
+ if (
+# ifdef IGNORE_MOD_TAP_INTERRUPT_PER_KEY
+ !get_ignore_mod_tap_interrupt(get_event_keycode(record->event)) &&
+# endif
+ record->tap.interrupted) {
dprint("mods_tap: tap: cancel: add_mods\n");
// ad hoc: set 0 to cancel tap
record->tap.count = 0;