2 #include "process_keycode/process_tap_dance.h"
15 static td_status_t td_status = {NONE, NONE};
17 int cur_dance(qk_tap_dance_state_t *state) {
18 if (state->interrupted || !state->pressed) {
19 return state->count == 1 ? SINGLE_TAP : DOUBLE_TAP;
25 void td_lower_finished(qk_tap_dance_state_t *state, void *user_data) {
26 td_status.lower = cur_dance(state);
27 switch(td_status.lower) {
29 set_japanese_mode(false);
32 set_japanese_mode(false);
33 register_code(KC_ESC);
41 void td_lower_reset(qk_tap_dance_state_t *state, void *user_data) {
42 if (td_status.lower == DOUBLE_TAP) {
43 unregister_code(KC_ESC);
46 td_status.lower = NONE;
49 void td_raise_finished(qk_tap_dance_state_t *state, void *user_data) {
50 td_status.raise = cur_dance(state);
51 switch(td_status.raise) {
55 set_japanese_mode(true);
63 void td_raise_reset(qk_tap_dance_state_t *state, void *user_data) {
65 td_status.raise = NONE;
68 qk_tap_dance_action_t tap_dance_actions[] = {
70 ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, td_lower_finished, td_lower_reset, 100),
72 ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, td_raise_finished, td_raise_reset, 100)