| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- #include "tapdance.h"
- static td_state_t td_state;
- void dance_dlt_finished(qk_tap_dance_state_t *state, void *user_data) {
- if (state->count == 1) {
- register_code16(KC_DELT);
- } else {
- register_code16(C(KC_DELT));
- }
- }
- void dance_dlt_reset(qk_tap_dance_state_t *state, void *user_data) {
- if (state->count == 1) {
- unregister_code16(KC_DELT);
- } else {
- unregister_code16(C(KC_DELT));
- }
- }
- void dance_cln_finished(qk_tap_dance_state_t *state, void *user_data) {
- if (state->count == 1) {
- register_code(KC_LSFT);
- }
- register_code(KC_SCLN);
- }
- void dance_cln_reset(qk_tap_dance_state_t *state, void *user_data) {
- if (state->count == 1) {
- unregister_code(KC_LSFT);
- }
- unregister_code(KC_SCLN);
- }
- int current_dance(qk_tap_dance_state_t *state) {
- if (state->count == 1) {
- if (state->interrupted || !state->pressed) {
- return SINGLE_TAP;
- } else {
- return SINGLE_HOLD;
- }
- }
- if (state->count == 2) {
- return DOUBLE_TAP;
- } else {
- return 3;
- }
- }
- void dance_tmb_finished(qk_tap_dance_state_t *state, void *user_data) {
- td_state = current_dance(state);
- switch (td_state) {
- case SINGLE_TAP:
- register_code16(KC_ESC);
- break;
- case SINGLE_HOLD:
- register_mods(MOD_BIT(KC_LSFT));
- break;
- case DOUBLE_TAP:
- register_code16(KC_DELT);
- break;
- }
- }
- void dance_tmb_reset(qk_tap_dance_state_t *state, void *user_data) {
- switch (td_state) {
- case SINGLE_TAP:
- unregister_code16(KC_ESC);
- break;
- case SINGLE_HOLD:
- unregister_mods(MOD_BIT(KC_LSFT));
- break;
- case DOUBLE_TAP:
- unregister_code16(KC_DELT);
- break;
- }
- }
- qk_tap_dance_action_t tap_dance_actions[] = {
- [TD_DLT_CTLDLT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_dlt_finished, dance_dlt_reset),
- [TD_SCLN_CLN] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_cln_finished, dance_cln_reset),
- [TD_LEFT_THUMB] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_tmb_finished, dance_tmb_reset),
- };
|