aboutsummaryrefslogtreecommitdiff
path: root/users/ninjonas/tap_dances.c
diff options
context:
space:
mode:
Diffstat (limited to 'users/ninjonas/tap_dances.c')
-rw-r--r--users/ninjonas/tap_dances.c86
1 files changed, 86 insertions, 0 deletions
diff --git a/users/ninjonas/tap_dances.c b/users/ninjonas/tap_dances.c
index 0665a1607..ece95887a 100644
--- a/users/ninjonas/tap_dances.c
+++ b/users/ninjonas/tap_dances.c
@@ -1,5 +1,87 @@
1#include "ninjonas.h" 1#include "ninjonas.h"
2 2
3//// BEGIN: Advanced Tap Dances
4int cur_dance (qk_tap_dance_state_t *state) {
5 if (state->count == 1) {
6 if (!state->pressed) {
7 return SINGLE_TAP;
8 } else {
9 return SINGLE_HOLD;
10 }
11 } else if (state->count == 2) {
12 return DOUBLE_TAP;
13 }
14 else return 8;
15}
16
17// BEGIN: Copy, Paste, NUMPAD
18// https://beta.docs.qmk.fm/features/feature_tap_dance#example-6-using-tap-dance-for-momentary-layer-switch-and-layer-toggle-keys
19static tap copy_paste_numpad_tap_state = {
20 .is_press_action = true,
21 .state = 0
22};
23
24void copy_paste_numpad_finished (qk_tap_dance_state_t *state, void *user_data) {
25 copy_paste_numpad_tap_state.state = cur_dance(state);
26 switch (copy_paste_numpad_tap_state.state) {
27 case SINGLE_TAP:
28 tap_code16(LGUI(KC_V)); // Tap Cmd + V
29 break;
30 case SINGLE_HOLD:
31 tap_code16(LGUI(KC_C)); // Hold Cmd + C
32 break;
33 case DOUBLE_TAP:
34 if (layer_state_is(_NUMPAD)) {
35 layer_off(_NUMPAD);
36 } else {
37 layer_on(_NUMPAD);
38 }
39 break;
40 }
41}
42
43void copy_paste_numpad_reset (qk_tap_dance_state_t *state, void *user_data) {
44 copy_paste_numpad_tap_state.state = 0;
45}
46// END: Copy, Paste, NUMPAD
47
48// BEGIN: Y, NUMPAD
49static tap y_numpad_tap_state = {
50 .is_press_action = true,
51 .state = 0
52};
53
54void y_numpad_finished (qk_tap_dance_state_t *state, void *user_data) {
55 y_numpad_tap_state.state = cur_dance(state);
56 switch (y_numpad_tap_state.state) {
57 case SINGLE_TAP:
58 tap_code(KC_Y);
59 break;
60 case SINGLE_HOLD:
61 register_code16(KC_Y);
62 break;
63 case DOUBLE_TAP:
64 if (layer_state_is(_NUMPAD)) {
65 layer_off(_NUMPAD);
66 } else {
67 layer_on(_NUMPAD);
68 }
69 break;
70 }
71}
72
73void y_numpad_reset (qk_tap_dance_state_t *state, void *user_data) {
74 switch (y_numpad_tap_state.state) {
75 case SINGLE_HOLD:
76 unregister_code16(KC_Y);
77 break;
78 }
79 y_numpad_tap_state.state = 0;
80}
81// END: Y, NUMPAD
82
83//// END: Advanced Tap Dances
84
3qk_tap_dance_action_t tap_dance_actions[] = { 85qk_tap_dance_action_t tap_dance_actions[] = {
4 [TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS), 86 [TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS),
5 [TD_LBRC_BACK] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, LGUI(KC_LBRC)), 87 [TD_LBRC_BACK] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, LGUI(KC_LBRC)),
@@ -9,4 +91,8 @@ qk_tap_dance_action_t tap_dance_actions[] = {
9 [TD_GUI_GUISPC] = ACTION_TAP_DANCE_DOUBLE(KC_LGUI, LGUI(KC_SPC)), 91 [TD_GUI_GUISPC] = ACTION_TAP_DANCE_DOUBLE(KC_LGUI, LGUI(KC_SPC)),
10 [TD_W_CTRLW] = ACTION_TAP_DANCE_DOUBLE(KC_W, LGUI(KC_W)), 92 [TD_W_CTRLW] = ACTION_TAP_DANCE_DOUBLE(KC_W, LGUI(KC_W)),
11 [TD_Q_GUIQ] = ACTION_TAP_DANCE_DOUBLE(KC_Q, LGUI(KC_Q)), 93 [TD_Q_GUIQ] = ACTION_TAP_DANCE_DOUBLE(KC_Q, LGUI(KC_Q)),
94
95 // Advanced Tap Dances
96 [TD_COPY_PASTE_NUMPAD] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, copy_paste_numpad_finished, copy_paste_numpad_reset),
97 [TD_Y_NUMPAD] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, y_numpad_finished, y_numpad_reset),
12}; \ No newline at end of file 98}; \ No newline at end of file