aboutsummaryrefslogtreecommitdiffstats
path: root/tmk_core
diff options
context:
space:
mode:
authorzk-phi <zk-phi@users.noreply.github.com>2020-01-10 16:48:06 +0900
committerridingqwerty <george.g.koenig@gmail.com>2020-01-10 02:48:06 -0500
commit7f388b65530b06779089be6cb4ddc56b2ecb36ff (patch)
tree19cf455d8ca3ae379304ea212d5b3d85917137b9 /tmk_core
parente34af631c2c4b0c9406dead907bf74b460ee9f7f (diff)
downloadfirmware-7f388b65530b06779089be6cb4ddc56b2ecb36ff.tar.gz
firmware-7f388b65530b06779089be6cb4ddc56b2ecb36ff.tar.bz2
firmware-7f388b65530b06779089be6cb4ddc56b2ecb36ff.zip
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')
-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 7fbdbd8c3..d6062703e 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;