diff options
-rw-r--r-- | docs/config_options.md | 2 | ||||
-rw-r--r-- | tmk_core/common/action.c | 39 | ||||
-rw-r--r-- | tmk_core/common/action_tapping.h | 2 |
3 files changed, 40 insertions, 3 deletions
diff --git a/docs/config_options.md b/docs/config_options.md index de67630adc..faa9c64814 100644 --- a/docs/config_options.md +++ b/docs/config_options.md @@ -109,6 +109,8 @@ If you define these options you will enable the associated feature, which may in * `#define TAPPING_TERM 200` * how long before a tap becomes a hold +* `#define RETRO_TAPPING` + * tap anyway, even after TAPPING_TERM, if there was no other key interruption between press and release * `#define TAPPING_TOGGLE 2` * how many taps before triggering the toggle * `#define PERMISSIVE_HOLD` diff --git a/tmk_core/common/action.c b/tmk_core/common/action.c index 41de014853..b39aa4cbc4 100644 --- a/tmk_core/common/action.c +++ b/tmk_core/common/action.c @@ -36,6 +36,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. int tp_buttons; +#ifdef RETRO_TAPPING +int retro_tapping_counter = 0; +#endif + #ifdef FAUXCLICKY_ENABLE #include <fauxclicky.h> #endif @@ -45,6 +49,9 @@ void action_exec(keyevent_t event) if (!IS_NOEVENT(event)) { dprint("\n---- action_exec: start -----\n"); dprint("EVENT: "); debug_event(event); dprintln(); +#ifdef RETRO_TAPPING + retro_tapping_counter++; +#endif } #ifdef FAUXCLICKY_ENABLE @@ -586,6 +593,32 @@ void process_action(keyrecord_t *record, action_t action) } #endif +#ifndef NO_ACTION_TAPPING + #ifdef RETRO_TAPPING + if (!is_tap_key(record->event.key)) { + retro_tapping_counter = 0; + } else { + if (event.pressed) { + if (tap_count > 0) { + retro_tapping_counter = 0; + } else { + + } + } else { + if (tap_count > 0) { + retro_tapping_counter = 0; + } else { + if (retro_tapping_counter == 2) { + register_code(action.layer_tap.code); + unregister_code(action.layer_tap.code); + } + retro_tapping_counter = 0; + } + } + } + #endif +#endif + #ifndef NO_ACTION_ONESHOT /* Because we switch layers after a oneshot event, we need to release the * key before we leave the layer or no key up event will be generated. @@ -619,7 +652,7 @@ void register_code(uint8_t code) #endif add_key(KC_CAPSLOCK); send_keyboard_report(); - wait_ms(100); + wait_ms(100); del_key(KC_CAPSLOCK); send_keyboard_report(); } @@ -630,7 +663,7 @@ void register_code(uint8_t code) #endif add_key(KC_NUMLOCK); send_keyboard_report(); - wait_ms(100); + wait_ms(100); del_key(KC_NUMLOCK); send_keyboard_report(); } @@ -641,7 +674,7 @@ void register_code(uint8_t code) #endif add_key(KC_SCROLLLOCK); send_keyboard_report(); - wait_ms(100); + wait_ms(100); del_key(KC_SCROLLLOCK); send_keyboard_report(); } diff --git a/tmk_core/common/action_tapping.h b/tmk_core/common/action_tapping.h index 9b42d50dc3..2f143ae8b8 100644 --- a/tmk_core/common/action_tapping.h +++ b/tmk_core/common/action_tapping.h @@ -24,6 +24,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #define TAPPING_TERM 200 #endif +//#define RETRO_TAPPING // Tap anyway, even after TAPPING_TERM, as long as there was no interruption + /* tap count needed for toggling a feature */ #ifndef TAPPING_TOGGLE #define TAPPING_TOGGLE 5 |