|
|
- #include "tapDance.h"
-
- #include "quantum.h"
-
- void left(qk_tap_dance_state_t* state, void* user_data) {
- switch (state->count) {
- case 1:
- if (state->pressed)
- tap_code16(S(KC_LBRACKET));
- else
- tap_code16(S(KC_9));
- break;
- case 2:
- if (state->pressed)
- tap_code16(S(KC_COMM));
- else
- tap_code(KC_LBRACKET);
- break;
- default:
- reset_tap_dance(state);
- }
- }
-
- void right(qk_tap_dance_state_t* state, void* user_data) {
- switch (state->count) {
- case 1:
- if (state->pressed)
- tap_code16(S(KC_RBRACKET));
- else
- tap_code16(S(KC_0));
- break;
- case 2:
- if (state->pressed)
- tap_code16(S(KC_DOT));
- else
- tap_code(KC_RBRACKET);
- break;
- default:
- reset_tap_dance(state);
- }
- }
-
- enum { REST, HOLD1, HOLD2, HOLD3 };
-
- static int Alt = REST;
- void altFinish(qk_tap_dance_state_t* state, void* user_data) {
- switch (state->count) {
- case 1:
- if (state->pressed) {
- register_code(KC_LALT);
- Alt = HOLD1;
- }
- break;
- case 2:
- if (state->pressed) {
- register_code(KC_RALT);
- Alt = HOLD2;
- }
- break;
- case 3:
- if (state->pressed) {
- register_code(KC_RALT);
- register_code(KC_RSHIFT);
- Alt = HOLD3;
- }
- break;
- default:
- reset_tap_dance(state);
- }
- }
-
- void altReset(qk_tap_dance_state_t* state, void* user_data) {
- switch (Alt) {
- case HOLD1:
- unregister_code(KC_LALT);
- break;
- case HOLD2:
- unregister_code(KC_RALT);
- break;
- case HOLD3:
- unregister_code(KC_RSHIFT);
- unregister_code(KC_RALT);
- break;
- }
- Alt = REST;
- }
-
- static int Ctrl = REST;
- void ctrlFinish(qk_tap_dance_state_t* state, void* user_data) {
- switch (state->count) {
- case 1:
- if (state->pressed) {
- register_code(KC_LCTL);
- Ctrl = HOLD1;
- } else {
- tap_code(KC_ESC);
- }
- break;
- case 2:
- if (state->pressed) {
- register_code(KC_LGUI);
- Ctrl = HOLD2;
- }
- break;
- default:
- reset_tap_dance(state);
- }
- }
-
- void ctrlReset(qk_tap_dance_state_t* state, void* user_data) {
- switch (Ctrl) {
- case HOLD1:
- unregister_code(KC_LCTL);
- break;
- case HOLD2:
- unregister_code(KC_LGUI);
- break;
- }
- Ctrl = REST;
- }
-
- qk_tap_dance_action_t tap_dance_actions[] = {
- [ALT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, altFinish, altReset),
- [CTRL] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ctrlFinish, ctrlReset),
- [LEFT] = ACTION_TAP_DANCE_FN(left),
- [RIGHT] = ACTION_TAP_DANCE_FN(right),
- };
|