aboutsummaryrefslogtreecommitdiff
path: root/users
diff options
context:
space:
mode:
authorimchipwood <imchipwood@gmail.com>2021-07-20 09:40:54 -0700
committerGitHub <noreply@github.com>2021-07-20 09:40:54 -0700
commitec78f8bca2523a91a293d8ae4d61050d1e36b320 (patch)
tree4c25c6448c0cea9bd2ad49765d8a41affa9f11d9 /users
parent4f880801ecb781c74ccf4e4f80a2097d67bc27c2 (diff)
downloadqmk_firmware-ec78f8bca2523a91a293d8ae4d61050d1e36b320.tar.gz
qmk_firmware-ec78f8bca2523a91a293d8ae4d61050d1e36b320.zip
[Keymap] Adding user code & keymaps for dumbpad & hotdox (#12924)
Co-authored-by: Drashna Jaelre <drashna@live.com> Co-authored-by: Ryan <fauxpark@gmail.com>
Diffstat (limited to 'users')
-rw-r--r--users/imchipwood/imchipwood.c141
-rw-r--r--users/imchipwood/imchipwood.h51
-rw-r--r--users/imchipwood/rules.mk2
3 files changed, 194 insertions, 0 deletions
diff --git a/users/imchipwood/imchipwood.c b/users/imchipwood/imchipwood.c
new file mode 100644
index 000000000..e319c00ce
--- /dev/null
+++ b/users/imchipwood/imchipwood.c
@@ -0,0 +1,141 @@
1/* Copyright 2021 imchipwood
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#include "imchipwood.h"
17
18static td_state_t td_state[3];
19
20// determine the tapdance state to return
21int cur_dance(qk_tap_dance_state_t *state) {
22 if (state->count == 1) {
23 if (state->interrupted || !state->pressed) {
24 return SINGLE_TAP;
25 } else {
26 return SINGLE_HOLD;
27 }
28 }
29 if (state->count == 2) {
30 return DOUBLE_TAP;
31 } else {
32 return 3;
33 } // any number higher than the maximum state value you return above
34}
35
36void altf2_finished(qk_tap_dance_state_t *state, void *user_data) {
37 td_state[0] = cur_dance(state);
38 switch (td_state[0]) {
39 case SINGLE_TAP:
40 register_code(KC_F2);
41 break;
42 case SINGLE_HOLD:
43 register_mods(MOD_BIT(KC_LALT));
44 break;
45 case DOUBLE_TAP:
46 register_mods(MOD_BIT(KC_LALT));
47 tap_code(KC_F2);
48 break;
49 }
50}
51
52void altf2_reset(qk_tap_dance_state_t *state, void *user_data) {
53 switch (td_state[0]) {
54 case SINGLE_TAP:
55 unregister_code(KC_F2);
56 break;
57 case SINGLE_HOLD:
58 unregister_mods(MOD_BIT(KC_LALT));
59 break;
60 case DOUBLE_TAP:
61 unregister_code(KC_F2);
62 unregister_mods(MOD_BIT(KC_LALT));
63 break;
64 }
65}
66
67
68void ctlf5_finished(qk_tap_dance_state_t *state, void *user_data) {
69 td_state[1] = cur_dance(state);
70 switch (td_state[1]) {
71 case SINGLE_TAP:
72 register_code(KC_F5);
73 break;
74 case SINGLE_HOLD:
75 register_mods(MOD_BIT(KC_LCTL));
76 break;
77 case DOUBLE_TAP:
78 register_mods(MOD_BIT(KC_LCTL));
79 tap_code(KC_F5);
80 break;
81 }
82}
83
84void ctlf5_reset(qk_tap_dance_state_t *state, void *user_data) {
85 switch (td_state[1]) {
86 case SINGLE_TAP:
87 unregister_code(KC_F5);
88 break;
89 case SINGLE_HOLD:
90 unregister_mods(MOD_BIT(KC_LCTL));
91 break;
92 case DOUBLE_TAP:
93 unregister_code(KC_F5);
94 unregister_mods(MOD_BIT(KC_LCTL));
95 break;
96 }
97}
98
99void altf7_finished(qk_tap_dance_state_t *state, void *user_data) {
100 td_state[2] = cur_dance(state);
101 switch (td_state[2]) {
102 case SINGLE_TAP:
103 register_code(KC_F7);
104 break;
105 case SINGLE_HOLD:
106 register_mods(MOD_BIT(KC_LALT));
107 break;
108 case DOUBLE_TAP:
109 register_mods(MOD_BIT(KC_LALT));
110 tap_code(KC_F7);
111 break;
112 }
113}
114
115void altf7_reset(qk_tap_dance_state_t *state, void *user_data) {
116 switch (td_state[2]) {
117 case SINGLE_TAP:
118 unregister_code(KC_F7);
119 break;
120 case SINGLE_HOLD:
121 unregister_mods(MOD_BIT(KC_LALT));
122 break;
123 case DOUBLE_TAP:
124 unregister_code(KC_F7);
125 unregister_mods(MOD_BIT(KC_LALT));
126 break;
127 }
128}
129
130qk_tap_dance_action_t tap_dance_actions[] = {
131 [ALT_F2] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, altf2_finished, altf2_reset),
132 [CTL_F5] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ctlf5_finished, ctlf5_reset),
133 [ALT_F7] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, altf7_finished, altf7_reset),
134 [DEL_NLCK] = ACTION_TAP_DANCE_DOUBLE(KC_DEL, KC_NLCK),
135 // Double tap right -> END
136 [TD_REND] = ACTION_TAP_DANCE_DOUBLE(KC_RIGHT, KC_END),
137 // Double tap left -> HOME
138 [TD_LOME] = ACTION_TAP_DANCE_DOUBLE(KC_LEFT, KC_HOME),
139 // Double tap right shift -> CAPS LOCK
140 [TD_RSFT_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_RSFT, KC_CAPS),
141};
diff --git a/users/imchipwood/imchipwood.h b/users/imchipwood/imchipwood.h
new file mode 100644
index 000000000..64726a862
--- /dev/null
+++ b/users/imchipwood/imchipwood.h
@@ -0,0 +1,51 @@
1/* Copyright 2021 imchipwood
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#pragma once
17
18#include "quantum.h"
19
20// change the tapping term to a little bit quicker
21#ifdef TAPPING_TERM
22 #undef TAPPING_TERM
23#endif
24#define TAPPING_TERM 175
25
26#ifdef TAPPING_TOGGLE
27 #undef TAPPING_TOGGLE
28#endif
29#define TAPPING_TOGGLE 2
30
31
32enum td_keycodes {
33 TD_REND = 0, // right when tapped, end when double tapped
34 TD_LOME, // left when tapped, home when double tapped
35 TD_RSFT_CAPS,
36 ALT_F2, // F2 when tapped, LALT when held, LALT+F2 when double tapped
37 CTL_F5, // F5 when tapped, LCTL when held, LCTL+F5 when double tapped
38 ALT_F7, // F7 when tapped, LALT when held, LALT+F7 when double tapped
39 DEL_NLCK, // DEL when tapped, NUMLOCK when double tapped
40};
41
42
43typedef enum { SINGLE_TAP, SINGLE_HOLD, DOUBLE_TAP } td_state_t;
44int cur_dance(qk_tap_dance_state_t *state);
45
46void altf2_finished(qk_tap_dance_state_t *state, void *user_data);
47void altf2_reset(qk_tap_dance_state_t *state, void *user_data);
48void ctlf5_finished(qk_tap_dance_state_t *state, void *user_data);
49void ctlf5_reset(qk_tap_dance_state_t *state, void *user_data);
50void altf7_finished(qk_tap_dance_state_t *state, void *user_data);
51void altf7_reset(qk_tap_dance_state_t *state, void *user_data);
diff --git a/users/imchipwood/rules.mk b/users/imchipwood/rules.mk
new file mode 100644
index 000000000..87cca5b5e
--- /dev/null
+++ b/users/imchipwood/rules.mk
@@ -0,0 +1,2 @@
1SRC += imchipwood.c
2TAP_DANCE_ENABLE=yes