aboutsummaryrefslogtreecommitdiff
path: root/users/rmw/tapdances.c
diff options
context:
space:
mode:
Diffstat (limited to 'users/rmw/tapdances.c')
-rw-r--r--users/rmw/tapdances.c389
1 files changed, 389 insertions, 0 deletions
diff --git a/users/rmw/tapdances.c b/users/rmw/tapdances.c
new file mode 100644
index 000000000..1b44a8725
--- /dev/null
+++ b/users/rmw/tapdances.c
@@ -0,0 +1,389 @@
1// Useful tapdance functions!
2
3#include "tapdances.h"
4
5qk_tap_dance_action_t tap_dance_actions[] = {
6 [SHCAP] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, caps, shift_reset)
7 ,[TDGUI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, shiftgui, gui_reset)
8 ,[TDGUI2] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, guictl, ubermod_reset)
9 ,[SHENT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, shiftenter, shift_reset)
10 ,[SHNTC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, shiftentercaps, shift_reset)
11 ,[GCA] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ubermod_mac, ubermod_reset) // GUI->CTL->ALT
12 ,[AGC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ubermod2_mac, ubermod_reset) // ALT->GUI->CTL
13 ,[SGCA] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, shift_and_mac, CASG_reset) // SG->SC->SA
14 ,[GUCTL] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, guictl, ubermod_reset)
15 ,[CAG] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ubermod, ubermod_reset) // CTL->ALT->GUI
16 ,[ACG] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ubermod2, ubermod_reset) // ALT->GUI->CTL
17 ,[SCAG] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, shift_and, CASG_reset) // SG->SC->SA
18 ,[DLTR] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, deleter, ubermod_reset) // backspace, backspace, alt backspace, gui backspace
19 ,[FRBK2] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, forward_back_mac, ubermod_reset)
20 ,[CTLALL] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ctrl_all_mac, ubermod_reset) // C->CG->CA->CAG
21 ,[CTLAND] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ctrl_all, ubermod_reset) // C->CA->CG->CAG
22 ,[FRBK] = ACTION_TAP_DANCE_DOUBLE(KC_WWW_BACK,KC_WWW_FORWARD)
23};
24
25void caps(qk_tap_dance_state_t *state, void *user_data) // Shift, Caps
26{ if (state->count >= 2) {register_code(KC_CAPS); unregister_code(KC_CAPS);}
27 else if (state->pressed) {register_mods(MOD_LSFT);} else {set_oneshot_mods(MOD_LSFT);}
28 reset_tap_dance(state);
29}
30
31void forward_back_mac(qk_tap_dance_state_t *state, void *user_data) // G<-, then G->
32{
33 if (state->count > 1) {
34 tap_code16(G(KC_RGHT));
35 }
36 else {
37 tap_code16(G(KC_LEFT));
38 }
39 reset_tap_dance(state);
40}
41
42void shiftgui(qk_tap_dance_state_t *state, void *user_data) // G->SG
43{
44 if (state->count > 1) {
45 if (state->pressed) {
46 register_mods(MOD_LSFT | MOD_LGUI);
47 }
48 else {
49 set_oneshot_mods(MOD_LSFT | MOD_LGUI);
50 }
51 }
52 else if (state->pressed) {
53 register_mods(MOD_LGUI);
54 }
55 else {
56 set_oneshot_mods(MOD_LGUI);
57 }
58 reset_tap_dance(state);
59}
60
61void guictl(qk_tap_dance_state_t *state, void *user_data) // G->GC
62{
63 if (state->count > 1) {
64 if (state->pressed) {
65 register_mods(MOD_LCTL | MOD_LGUI);
66 }
67 else {
68 set_oneshot_mods(MOD_LCTL | MOD_LGUI);
69 }
70 }
71 else if (state->pressed) {
72 register_mods(MOD_LGUI);
73 }
74 else {
75 set_oneshot_mods(MOD_LGUI);
76 }
77 reset_tap_dance(state);
78}
79
80void deleter(qk_tap_dance_state_t *state, void *user_data) // bkspc -> delwrd -> delline
81{
82 if (state->count > 3) {
83 tap_code16(G(KC_BSPC));
84 }
85 else if (state->count > 2) {
86 tap_code16(A(KC_BSPC));
87 }
88 else {
89 tap_code(KC_BSPC);
90 }
91 reset_tap_dance(state);
92}
93
94void ubermod(qk_tap_dance_state_t *state, void *user_data) // CTL->ALT->GUI
95{
96 if (state->count > 2) {
97 if (state->pressed) {
98 register_mods(MOD_LGUI);
99 }
100 else {
101 set_oneshot_mods(MOD_LGUI);
102 }
103 }
104 else if (state->count > 1) {
105 if (state->pressed) {
106 register_mods(MOD_LALT);
107 }
108 else {
109 set_oneshot_mods(MOD_LALT);
110 }
111 }
112 else if (state->pressed) {
113 register_mods(MOD_LCTL);
114 }
115 else {
116 set_oneshot_mods(MOD_LCTL);
117 }
118 reset_tap_dance(state);
119}
120
121void ubermod_mac(qk_tap_dance_state_t *state, void *user_data) // GUI->CTL->ALT
122{
123 if (state->count > 2) {
124 if (state->pressed) {
125 register_mods(MOD_LALT);
126 }
127 else {
128 set_oneshot_mods(MOD_LALT);
129 }
130 }
131 else if (state->count > 1) {
132 if (state->pressed) {
133 register_mods(MOD_LCTL);
134 }
135 else {
136 set_oneshot_mods(MOD_LCTL);
137 }
138 }
139 else if (state->pressed) {
140 register_mods(MOD_LGUI);
141 }
142 else {
143 set_oneshot_mods(MOD_LGUI);
144 }
145 reset_tap_dance(state);
146}
147
148void ubermod2(qk_tap_dance_state_t *state, void *user_data) // ALT->CTL->GUI
149{
150 if (state->count > 2) {
151 if (state->pressed) {
152 register_mods(MOD_LGUI);
153 }
154 else {
155 set_oneshot_mods(MOD_LGUI);
156 }
157 }
158 else if (state->count > 1) {
159 if (state->pressed) {
160 register_mods(MOD_LCTL);
161 }
162 else {
163 set_oneshot_mods(MOD_LCTL);
164 }
165 }
166 else if (state->pressed) {
167 register_mods(MOD_LALT);
168 }
169 else {
170 set_oneshot_mods(MOD_LALT);
171 }
172 reset_tap_dance(state);
173}
174
175void ubermod2_mac(qk_tap_dance_state_t *state, void *user_data) // ALT->GUI->CTL
176{
177 if (state->count > 2) {
178 if (state->pressed) {
179 register_mods(MOD_LCTL);
180 }
181 else {
182 set_oneshot_mods(MOD_LCTL);
183 }
184 }
185 else if (state->count > 1) {
186 if (state->pressed) {
187 register_mods(MOD_LGUI);
188 }
189 else {
190 set_oneshot_mods(MOD_LGUI);
191 }
192 }
193 else if (state->pressed) {
194 register_mods(MOD_LALT);
195 }
196 else {
197 set_oneshot_mods(MOD_LALT);
198 }
199 reset_tap_dance(state);
200}
201
202void shift_reset(qk_tap_dance_state_t *state, void *user_data)
203{
204 unregister_mods(MOD_LSFT);
205 // clear_oneshot_mods();
206}
207void gui_reset(qk_tap_dance_state_t *state, void *user_data)
208{
209 unregister_mods(MOD_LSFT | MOD_LGUI);
210}
211void CAS_reset(qk_tap_dance_state_t *state, void *user_data)
212{
213 unregister_mods(MOD_LCTL | MOD_LSFT | MOD_LALT);
214}
215void CASG_reset(qk_tap_dance_state_t *state, void *user_data)
216{
217 unregister_mods(MOD_LCTL | MOD_LSFT | MOD_LALT | MOD_LGUI);
218 // clear_oneshot_mods();
219}
220void ubermod_reset(qk_tap_dance_state_t *state, void *user_data) // AKA CAG_reset
221{
222 unregister_mods(MOD_LCTL | MOD_LALT | MOD_LGUI);
223}
224
225void shiftenter(qk_tap_dance_state_t *state, void *user_data)
226{
227 if (state->count > 1) {
228 tap_code(KC_ENT);
229 }
230 else if (state->pressed) {
231 register_mods(MOD_LSFT);
232 }
233 else {
234 set_oneshot_mods(MOD_LSFT);
235 }
236 reset_tap_dance(state);
237}
238
239void shiftentercaps(qk_tap_dance_state_t *state, void *user_data)
240{
241 if (state->count > 2) {
242 tap_code(KC_CAPS);
243 }
244 else if (state->count > 1) {
245 tap_code(KC_ENT);
246 }
247 else if (state->pressed) {
248 register_mods(MOD_LSFT);
249 }
250 else {
251 set_oneshot_mods(MOD_LSFT);
252 }
253 reset_tap_dance(state);
254}
255
256void ctrl_all_mac(qk_tap_dance_state_t *state, void *user_data) // C->CG->CAG
257{
258 if (state->count > 2) {
259 if (state->pressed) {
260 register_mods(MOD_LCTL | MOD_LALT | MOD_LGUI);
261 }
262 else {
263 set_oneshot_mods(MOD_LCTL | MOD_LGUI | MOD_LALT);
264 }
265 }
266 else if (state->count > 1) {
267 if (state->pressed) {
268 register_mods(MOD_LCTL | MOD_LGUI);
269 }
270 else {
271 set_oneshot_mods(MOD_LCTL | MOD_LGUI);
272 }
273 }
274 else if (state->pressed) {
275 register_mods(MOD_LCTL);
276 }
277 else {
278 set_oneshot_mods(MOD_LCTL);
279 }
280 reset_tap_dance(state);
281}
282
283void ctrl_all(qk_tap_dance_state_t *state, void *user_data) // C->CA->SC
284{
285 if (state->count > 2) {
286 if (state->pressed) {
287 register_mods(MOD_LCTL | MOD_LSFT);
288 }
289 else {
290 set_oneshot_mods(MOD_LCTL | MOD_LSFT);
291 }
292 }
293 else if (state->count > 1) {
294 if (state->pressed) {
295 register_mods(MOD_LCTL | MOD_LALT);
296 }
297 else {
298 set_oneshot_mods(MOD_LCTL | MOD_LALT);
299 }
300 }
301 else if (state->pressed) {
302 register_mods(MOD_LCTL);
303 }
304 else {
305 set_oneshot_mods(MOD_LCTL);
306 }
307 reset_tap_dance(state);
308}
309
310void alt_all(qk_tap_dance_state_t *state, void *user_data) // A->SA->AC
311{
312 if (state->count > 2) {
313 if (state->pressed) {
314 register_mods(MOD_LCTL | MOD_LALT);
315 }
316 else {
317 set_oneshot_mods(MOD_LALT | MOD_LCTL);
318 }
319 }
320 else if (state->count > 1) {
321 if (state->pressed) {
322 register_mods(MOD_LSFT | MOD_LALT);
323 }
324 else {
325 set_oneshot_mods(MOD_LALT | MOD_LSFT);
326 }
327 }
328 else if (state->pressed) {
329 register_mods(MOD_LALT);
330 }
331 else {
332 set_oneshot_mods(MOD_LALT);
333 }
334 reset_tap_dance(state);
335}
336
337void shift_and(qk_tap_dance_state_t *state, void *user_data) // SC->SA->SG
338{
339 if (state->count > 2) {
340 if (state->pressed) {
341 register_mods(MOD_LSFT | MOD_LGUI);
342 }
343 else {
344 set_oneshot_mods(MOD_LGUI | MOD_LSFT);
345 }
346 }
347 else if (state->count > 1) {
348 if (state->pressed) {
349 register_mods(MOD_LSFT | MOD_LALT);
350 }
351 else {
352 set_oneshot_mods(MOD_LALT | MOD_LSFT);
353 }
354 }
355 else if (state->pressed) {
356 register_mods(MOD_LCTL | MOD_LSFT);
357 }
358 else {
359 set_oneshot_mods(MOD_LSFT | MOD_LCTL);
360 }
361 reset_tap_dance(state);
362}
363
364void shift_and_mac(qk_tap_dance_state_t *state, void *user_data) // SG->SC->SA
365{
366 if (state->count > 1) {
367 if (state->pressed) {
368 register_mods(MOD_LSFT | MOD_LALT);
369 }
370 else {
371 set_oneshot_mods(MOD_LALT | MOD_LSFT);
372 }
373 }
374 else if (state->count > 2) {
375 if (state->pressed) {
376 register_mods(MOD_LCTL | MOD_LSFT);
377 }
378 else {
379 set_oneshot_mods(MOD_LSFT | MOD_LCTL);
380 }
381 }
382 else if (state->pressed) {
383 register_mods(MOD_LSFT | MOD_LGUI);
384 }
385 else {
386 set_oneshot_mods(MOD_LGUI | MOD_LSFT);
387 }
388 reset_tap_dance(state);
389}