static inline void process_tap_dance_action_on_reset (qk_tap_dance_action_t *action)
{
  _process_tap_dance_action_fn (&action->state, action->user_data, action->fn.on_reset);
  del_mods(action->state.oneshot_mods);
  del_weak_mods(action->state.weak_mods);
  send_keyboard_report();
}
static inline void process_tap_dance_action_on_dance_finished (qk_tap_dance_action_t *action)
{
  if (action->state.finished)
    return;
  action->state.finished = true;
  add_mods(action->state.oneshot_mods);
  send_keyboard_report();
  _process_tap_dance_action_fn (&action->state, action->user_data, action->fn.on_dance_finished);
}
void process_tap_dance_action (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_PAIR:
    _process_tap_dance_action_pair (&qk_tap_dance_state,
                                    action.pair.kc1, action.pair.kc2);
    break;
  case QK_TAP_DANCE_TYPE_FN:
    _process_tap_dance_action_fn (&qk_tap_dance_state, action.fn);
    break;

  default:
    break;
  }
}
static inline void process_tap_dance_action_on_each_tap (qk_tap_dance_action_t *action)
{
  _process_tap_dance_action_fn (&action->state, action->user_data, action->fn.on_each_tap);
}