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
This commit is contained in:
zk-phi
2020-01-10 16:48:06 +09:00
committed by Florian Didron
parent b80becc5e5
commit fcfe182836
+10 -2
View File
@@ -47,6 +47,10 @@ int retro_tapping_counter = 0;
# include <fauxclicky.h> # include <fauxclicky.h>
#endif #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 #ifndef TAP_CODE_DELAY
# define TAP_CODE_DELAY 0 # define TAP_CODE_DELAY 0
#endif #endif
@@ -308,8 +312,12 @@ void process_action(keyrecord_t *record, action_t action) {
default: default:
if (event.pressed) { if (event.pressed) {
if (tap_count > 0) { if (tap_count > 0) {
# ifndef IGNORE_MOD_TAP_INTERRUPT # if !defined(IGNORE_MOD_TAP_INTERRUPT) || defined(IGNORE_MOD_TAP_INTERRUPT_PER_KEY)
if (record->tap.interrupted) { 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"); dprint("mods_tap: tap: cancel: add_mods\n");
// ad hoc: set 0 to cancel tap // ad hoc: set 0 to cancel tap
record->tap.count = 0; record->tap.count = 0;