diff options
author | Drashna Jaelre <drashna@live.com> | 2021-01-04 16:37:20 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-04 16:37:20 -0800 |
commit | 810eafad121bda333c53490e2d8a29f3a83d9c19 (patch) | |
tree | 975b8bd9c846d13f30da944e873326e0e0f69fa8 | |
parent | c38fe492426676cf101eeb024f7f33d8e98c445f (diff) | |
download | qmk_firmware-810eafad121bda333c53490e2d8a29f3a83d9c19.tar.gz qmk_firmware-810eafad121bda333c53490e2d8a29f3a83d9c19.zip |
Fix Tap-Hold Configs (#11127)
* Add proper prototypes for Tap-Hold Per Key functions
* Fix handwired/tennie default keymap
* Remove unneeded references
* Fix tapping term per key check in space cadet
* Pre-emptive fix for tap dance
* Fix marksard/leftover30
* Replace hard coded tapping term with define
-rw-r--r-- | keyboards/handwired/tennie/keymaps/default/config.h | 1 | ||||
-rw-r--r-- | keyboards/handwired/tennie/keymaps/default/keymap.c | 3 | ||||
-rw-r--r-- | keyboards/marksard/leftover30/keymaps/default/keymap.c | 2 | ||||
-rw-r--r-- | quantum/process_keycode/process_space_cadet.c | 11 | ||||
-rw-r--r-- | quantum/process_keycode/process_space_cadet.h | 3 | ||||
-rw-r--r-- | quantum/process_keycode/process_tap_dance.c | 5 | ||||
-rw-r--r-- | quantum/quantum.h | 1 | ||||
-rw-r--r-- | tmk_core/common/action_tapping.h | 9 |
8 files changed, 19 insertions, 16 deletions
diff --git a/keyboards/handwired/tennie/keymaps/default/config.h b/keyboards/handwired/tennie/keymaps/default/config.h index 4496c59100..b8f7e42789 100644 --- a/keyboards/handwired/tennie/keymaps/default/config.h +++ b/keyboards/handwired/tennie/keymaps/default/config.h @@ -17,3 +17,4 @@ #pragma once // place overrides here +#define TAPPING_TOGGLE 2 diff --git a/keyboards/handwired/tennie/keymaps/default/keymap.c b/keyboards/handwired/tennie/keymaps/default/keymap.c index 3736841cbb..b65abb89e0 100644 --- a/keyboards/handwired/tennie/keymaps/default/keymap.c +++ b/keyboards/handwired/tennie/keymaps/default/keymap.c @@ -15,9 +15,6 @@ */ #include QMK_KEYBOARD_H -#define TAPPING_TOGGLE 2 - - // Layer names #define base 0 #define shrek 1 diff --git a/keyboards/marksard/leftover30/keymaps/default/keymap.c b/keyboards/marksard/leftover30/keymaps/default/keymap.c index 60751cd1ca..b8d9973330 100644 --- a/keyboards/marksard/leftover30/keymaps/default/keymap.c +++ b/keyboards/marksard/leftover30/keymaps/default/keymap.c @@ -99,7 +99,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ) }; -uint16_t get_tapping_term(uint16_t keycode) { +uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case KC_SPRA: return TAPPING_LAYER_TERM; diff --git a/quantum/process_keycode/process_space_cadet.c b/quantum/process_keycode/process_space_cadet.c index bcaf62a964..f99db2a87b 100644 --- a/quantum/process_keycode/process_space_cadet.c +++ b/quantum/process_keycode/process_space_cadet.c @@ -16,10 +16,6 @@ #include "process_space_cadet.h" #include "action_tapping.h" -#ifdef NO_ACTION_TAPPING -__attribute__((weak)) uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { return TAPPING_TERM; }; -#endif - // ********** OBSOLETE DEFINES, STOP USING! (pls?) ********** // Shift / paren setup #ifndef LSPO_KEY @@ -97,7 +93,12 @@ void perform_space_cadet(keyrecord_t *record, uint16_t sc_keycode, uint8_t holdM register_mods(MOD_BIT(holdMod)); } } else { - if (sc_last == holdMod && timer_elapsed(sc_timer) < get_tapping_term(sc_keycode, record)) { +#ifdef TAPPING_TERM_PER_KEY + if (sc_last == holdMod && timer_elapsed(sc_timer) < get_tapping_term(sc_keycode, record)) +#else + if (sc_last == holdMod && timer_elapsed(sc_timer) < TAPPING_TERM) +#endif + { if (holdMod != tapMod) { if (IS_MOD(holdMod)) { unregister_mods(MOD_BIT(holdMod)); diff --git a/quantum/process_keycode/process_space_cadet.h b/quantum/process_keycode/process_space_cadet.h index 3ace073997..fcb70f3b43 100644 --- a/quantum/process_keycode/process_space_cadet.h +++ b/quantum/process_keycode/process_space_cadet.h @@ -19,6 +19,3 @@ void perform_space_cadet(keyrecord_t *record, uint16_t sc_keycode, uint8_t holdMod, uint8_t tapMod, uint8_t keycode); bool process_space_cadet(uint16_t keycode, keyrecord_t *record); -#ifdef NO_ACTION_TAPPING -uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record); -#endif diff --git a/quantum/process_keycode/process_tap_dance.c b/quantum/process_keycode/process_tap_dance.c index 0c7b6353eb..138de0eba2 100644 --- a/quantum/process_keycode/process_tap_dance.c +++ b/quantum/process_keycode/process_tap_dance.c @@ -14,7 +14,6 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ #include "quantum.h" -#include "action_tapping.h" #ifndef NO_ACTION_ONESHOT uint8_t get_oneshot_mods(void); @@ -167,7 +166,11 @@ void matrix_scan_tap_dance() { if (action->custom_tapping_term > 0) { tap_user_defined = action->custom_tapping_term; } else { +#ifdef TAPPING_TERM_PER_KEY tap_user_defined = get_tapping_term(action->state.keycode, NULL); +#else + tap_user_defined = TAPPING_TERM; +#endif } if (action->state.count && timer_elapsed(action->state.timer) > tap_user_defined) { process_tap_dance_action_on_dance_finished(action); diff --git a/quantum/quantum.h b/quantum/quantum.h index 3e09df4f88..f4df5bf155 100644 --- a/quantum/quantum.h +++ b/quantum/quantum.h @@ -56,6 +56,7 @@ #include "config_common.h" #include "led.h" #include "action_util.h" +#include "action_tapping.h" #include "print.h" #include "send_string_keycodes.h" #include "suspend.h" diff --git a/tmk_core/common/action_tapping.h b/tmk_core/common/action_tapping.h index 087090f805..4d10c668af 100644 --- a/tmk_core/common/action_tapping.h +++ b/tmk_core/common/action_tapping.h @@ -22,8 +22,6 @@ 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 @@ -33,6 +31,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #ifndef NO_ACTION_TAPPING uint16_t get_event_keycode(keyevent_t event, bool update_layer_cache); -uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record); void action_tapping_process(keyrecord_t record); + +uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record); +bool get_permissive_hold(uint16_t keycode, keyrecord_t *record); +bool get_ignore_mod_tap_interrupt(uint16_t keycode, keyrecord_t *record); +bool get_tapping_force_hold(uint16_t keycode, keyrecord_t *record); +bool get_retro_tapping(uint16_t keycode, keyrecord_t *record); #endif |