forked from mirrors/qmk_userspace
[Core] Replace Tapping Force Hold feature with Quick Tap Term (#17007)
* Replace Tapping Force Hold feature with Quick Tap Term * Replace keyboard level TAPPING_FORCE_HOLD with QUICK_TAP_TERM 0 * Deprecate force hold in info_config.json * Before and after quick tap term unit tests * Quick tap unit tests iteration * Keymap config.h correction * Remove TAPPING_FORCE_HOLD_PER_KEY macros that were missed * Add two more test cases for quick tap * Replace TAPPING_FORCE_HOLD with QUICK_TAP_TERM in configs #2 * Replace TAPPING_FORCE_HOLD_PER_KEY with QUICK_TAP_TERM_PER_KEY in configs #2 * Add function declaration for get_quick_tap_term Co-authored-by: Stefan Kerkmann <karlk90@pm.me>
This commit is contained in:
parent
8698d109d7
commit
cbabc8dbe6
226 changed files with 462 additions and 380 deletions
|
@ -25,6 +25,7 @@
|
|||
# define IS_TAPPING_RECORD(r) (IS_TAPPING() && KEYEQ(tapping_key.event.key, (r->event.key)) && tapping_key.keycode == r->keycode)
|
||||
# endif
|
||||
# define WITHIN_TAPPING_TERM(e) (TIMER_DIFF_16(e.time, tapping_key.event.time) < GET_TAPPING_TERM(get_record_keycode(&tapping_key, false), &tapping_key))
|
||||
# define WITHIN_QUICK_TAP_TERM(e) (TIMER_DIFF_16(e.time, tapping_key.event.time) < GET_QUICK_TAP_TERM(get_record_keycode(&tapping_key, false), &tapping_key))
|
||||
|
||||
# ifdef DYNAMIC_TAPPING_TERM_ENABLE
|
||||
uint16_t g_tapping_term = TAPPING_TERM;
|
||||
|
@ -40,9 +41,9 @@ __attribute__((weak)) uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *r
|
|||
}
|
||||
# endif
|
||||
|
||||
# ifdef TAPPING_FORCE_HOLD_PER_KEY
|
||||
__attribute__((weak)) bool get_tapping_force_hold(uint16_t keycode, keyrecord_t *record) {
|
||||
return false;
|
||||
# ifdef QUICK_TAP_TERM_PER_KEY
|
||||
__attribute__((weak)) uint16_t get_quick_tap_term(uint16_t keycode, keyrecord_t *record) {
|
||||
return QUICK_TAP_TERM;
|
||||
}
|
||||
# endif
|
||||
|
||||
|
@ -121,7 +122,7 @@ void action_tapping_process(keyrecord_t record) {
|
|||
* readable. The conditional definition of tapping_keycode and all the
|
||||
* conditional uses of it are hidden inside macros named TAP_...
|
||||
*/
|
||||
# if (defined(AUTO_SHIFT_ENABLE) && defined(RETRO_SHIFT)) || defined(PERMISSIVE_HOLD_PER_KEY) || defined(TAPPING_FORCE_HOLD_PER_KEY) || defined(HOLD_ON_OTHER_KEY_PRESS_PER_KEY)
|
||||
# if (defined(AUTO_SHIFT_ENABLE) && defined(RETRO_SHIFT)) || defined(PERMISSIVE_HOLD_PER_KEY) || defined(QUICK_TAP_TERM_PER_KEY) || defined(HOLD_ON_OTHER_KEY_PRESS_PER_KEY)
|
||||
# define TAP_DEFINE_KEYCODE uint16_t tapping_keycode = get_record_keycode(&tapping_key, false)
|
||||
# else
|
||||
# define TAP_DEFINE_KEYCODE
|
||||
|
@ -169,14 +170,6 @@ void action_tapping_process(keyrecord_t record) {
|
|||
# define TAP_GET_IGNORE_MOD_TAP_INTERRUPT false
|
||||
# endif
|
||||
|
||||
# ifdef TAPPING_FORCE_HOLD_PER_KEY
|
||||
# define TAP_GET_TAPPING_FORCE_HOLD get_tapping_force_hold(tapping_keycode, &tapping_key)
|
||||
# elif defined(TAPPING_FORCE_HOLD)
|
||||
# define TAP_GET_TAPPING_FORCE_HOLD true
|
||||
# else
|
||||
# define TAP_GET_TAPPING_FORCE_HOLD false
|
||||
# endif
|
||||
|
||||
/** \brief Tapping
|
||||
*
|
||||
* Rule: Tap key is typed(pressed and released) within TAPPING_TERM.
|
||||
|
@ -385,7 +378,7 @@ bool process_tapping(keyrecord_t *keyp) {
|
|||
if (WITHIN_TAPPING_TERM(event) || MAYBE_RETRO_SHIFTING(event)) {
|
||||
if (event.pressed) {
|
||||
if (IS_TAPPING_RECORD(keyp)) {
|
||||
if (!TAP_GET_TAPPING_FORCE_HOLD && !tapping_key.tap.interrupted && tapping_key.tap.count > 0) {
|
||||
if (WITHIN_QUICK_TAP_TERM(event) && !tapping_key.tap.interrupted && tapping_key.tap.count > 0) {
|
||||
// sequential tap.
|
||||
keyp->tap = tapping_key.tap;
|
||||
if (keyp->tap.count < 15) keyp->tap.count += 1;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue