qmk-keychron-q3-colemak-dh/users/ridingqwerty/tapdances.c

34 lines
817 B
C
Raw Normal View History

#include "ridingqwerty.h"
#include "tapdances.h"
void braces_finished (tap_dance_state_t *state, void *user_data) {
if ((state->count == 1) || (state->count == 3)) {
register_code(KC_LSFT);
}
}
void braces_reset (tap_dance_state_t *state, void *user_data) {
// two or three taps for "[]"/"{}"
if ((state->count == 2) || (state->count == 3)) {
tap_code(KC_LBRC);
tap_code(KC_RBRC);
}
// one tap for "()"
else if (state->count == 1) {
tap_code(KC_9);
tap_code(KC_0);
}
// unregister the shift unconditionally
unregister_code(KC_LSFT);
// move back one space, inside the braces
if (state->count <= 3) {
tap_code(KC_LEFT);
}
}
tap_dance_action_t tap_dance_actions[] = {
[TD_BRACES] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, braces_finished, braces_reset)
};