@ -40,7 +40,24 @@ void process_tap_dance_action (uint16_t keycode)
action . pair . kc1 , action . pair . kc2 ) ;
break ;
case QK_TAP_DANCE_TYPE_FN :
_process_tap_dance_action_fn ( & qk_tap_dance_state , action . fn ) ;
_process_tap_dance_action_fn ( & qk_tap_dance_state , action . fn . regular ) ;
break ;
default :
break ;
}
}
void process_tap_dance_action_anyway ( uint16_t keycode )
{
uint16_t idx = keycode - QK_TAP_DANCE ;
qk_tap_dance_action_t action ;
action = tap_dance_actions [ idx ] ;
switch ( action . type ) {
case QK_TAP_DANCE_TYPE_FN :
_process_tap_dance_action_fn ( & qk_tap_dance_state , action . fn . anyway ) ;
break ;
default :
@ -53,6 +70,7 @@ bool process_tap_dance(uint16_t keycode, keyrecord_t *record) {
switch ( keycode ) {
case QK_TAP_DANCE . . . QK_TAP_DANCE_MAX :
process_tap_dance_action_anyway ( qk_tap_dance_state . keycode ) ;
if ( qk_tap_dance_state . keycode & & qk_tap_dance_state . keycode ! = keycode ) {
process_tap_dance_action ( qk_tap_dance_state . keycode ) ;
} else {
@ -68,6 +86,7 @@ bool process_tap_dance(uint16_t keycode, keyrecord_t *record) {
default :
if ( qk_tap_dance_state . keycode ) {
//process_tap_dance_action_anyway (qk_tap_dance_state.keycode);
process_tap_dance_action ( qk_tap_dance_state . keycode ) ;
reset_tap_dance ( & qk_tap_dance_state ) ;
@ -87,6 +106,21 @@ void matrix_scan_tap_dance () {
}
void reset_tap_dance ( qk_tap_dance_state_t * state ) {
uint16_t idx = state - > keycode - QK_TAP_DANCE ;
qk_tap_dance_action_t action ;
action = tap_dance_actions [ idx ] ;
switch ( action . type ) {
case QK_TAP_DANCE_TYPE_FN :
if ( action . fn . reset ) {
action . fn . reset ( ) ;
}
break ;
default :
break ;
}
state - > keycode = 0 ;
state - > count = 0 ;
}