aboutsummaryrefslogtreecommitdiff
path: root/keyboards
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards')
-rw-r--r--keyboards/jj50/keymaps/archetype/config.h1
-rw-r--r--keyboards/jj50/keymaps/archetype/keymap.c138
2 files changed, 101 insertions, 38 deletions
diff --git a/keyboards/jj50/keymaps/archetype/config.h b/keyboards/jj50/keymaps/archetype/config.h
index 7955796ea..a12e070b4 100644
--- a/keyboards/jj50/keymaps/archetype/config.h
+++ b/keyboards/jj50/keymaps/archetype/config.h
@@ -4,5 +4,6 @@
4#undef TAPPING_TERM 4#undef TAPPING_TERM
5 5
6#define AUTO_SHIFT_TIMEOUT 150 6#define AUTO_SHIFT_TIMEOUT 150
7#define NO_AUTO_SHIFT_ALPHA
7#define TAPPING_TERM 150 8#define TAPPING_TERM 150
8//#define BOOTMAGIC_KEY_SALT KC_LCTL 9//#define BOOTMAGIC_KEY_SALT KC_LCTL
diff --git a/keyboards/jj50/keymaps/archetype/keymap.c b/keyboards/jj50/keymaps/archetype/keymap.c
index 0704943e0..82c615f13 100644
--- a/keyboards/jj50/keymaps/archetype/keymap.c
+++ b/keyboards/jj50/keymaps/archetype/keymap.c
@@ -32,71 +32,131 @@ enum {
32 TD_BSPC_DEL = 0, 32 TD_BSPC_DEL = 0,
33 TD_LCTL_LBRC = 1, 33 TD_LCTL_LBRC = 1,
34 TD_LALT_RBRC = 2, 34 TD_LALT_RBRC = 2,
35 TD_ESC_LAYER = 3,
35}; 36};
36 37
37 38
38void left_brackets(qk_tap_dance_state_t *state, void *user_data) { 39void left_brackets(qk_tap_dance_state_t *state, void *user_data) {
39 if (state->count == 1) { 40 if (state->count == 1) {
40 if (state->interrupted || !state->pressed) { 41 if (!state->pressed) {
41 register_mods(MOD_LSFT); 42 register_code16(KC_LPRN);
42 register_code(KC_9);
43 } else { 43 } else {
44 register_mods(MOD_LCTL); 44 register_code(KC_LCTL);
45 } 45 }
46 } else if (state->count == 2) { 46 } else if (state->count == 2) {
47 register_code(KC_LBRC); 47 register_code16(KC_LBRC);
48 } else if (state->count == 3) { 48 } else if (state->count == 3) {
49 register_mods(MOD_LSFT); 49 register_code16(KC_LCBR);
50 register_code(KC_LBRC);
51 } 50 }
52} 51}
53 52
54void left_brackets_reset(qk_tap_dance_state_t *state, void *user_data) { 53void left_brackets_reset(qk_tap_dance_state_t *state, void *user_data) {
55 if (state->count == 1) { 54 if (state->count == 1) {
56 if (state->interrupted || !state->pressed) { 55 unregister_code16(KC_LPRN);
57 unregister_mods(MOD_LSFT);
58 unregister_code(KC_9);
59 } else {
60 unregister_mods(MOD_LCTL);
61 }
62 } else if (state->count == 2) { 56 } else if (state->count == 2) {
63 unregister_code(KC_LBRC); 57 unregister_code16(KC_LBRC);
64 } else if (state->count == 3) { 58 } else if (state->count == 3) {
65 unregister_mods(MOD_LSFT); 59 unregister_code16(KC_LCBR);
66 unregister_code(KC_LBRC);
67 } 60 }
61
62 unregister_code(KC_LCTL);
68} 63}
69 64
70void right_brackets(qk_tap_dance_state_t *state, void *user_data) { 65void right_brackets(qk_tap_dance_state_t *state, void *user_data) {
71 if (state->count == 1) { 66 if (state->count == 1) {
72 if (state->interrupted || !state->pressed) { 67 if (!state->pressed) {
73 register_mods(MOD_LSFT); 68 register_code16(KC_RPRN);
74 register_code(KC_0);
75 } else { 69 } else {
76 register_mods(MOD_LALT); 70 register_code(KC_LALT);
77 } 71 }
78 } else if (state->count == 2) { 72 } else if (state->count == 2) {
79 register_code(KC_RBRC); 73 register_code16(KC_RBRC);
80 } else if (state->count == 3) { 74 } else if (state->count == 3) {
81 register_mods(MOD_LSFT); 75 register_code16(KC_RCBR);
82 register_code(KC_RBRC);
83 } 76 }
84} 77}
85 78
86void right_brackets_reset(qk_tap_dance_state_t *state, void *user_data) { 79void right_brackets_reset(qk_tap_dance_state_t *state, void *user_data) {
87 if (state->count == 1) { 80 if (state->count == 1) {
88 if (state->interrupted || !state->pressed) { 81 unregister_code16(KC_RPRN);
89 unregister_mods(MOD_LSFT);
90 unregister_code(KC_0);
91 } else {
92 unregister_mods(MOD_LALT);
93 }
94 } else if (state->count == 2) { 82 } else if (state->count == 2) {
95 unregister_code(KC_RBRC); 83 unregister_code16(KC_RBRC);
96 } else if (state->count == 3) { 84 } else if (state->count == 3) {
97 unregister_mods(MOD_LSFT); 85 unregister_code16(KC_RCBR);
98 unregister_code(KC_RBRC);
99 } 86 }
87
88 unregister_code(KC_LALT);
89}
90
91typedef struct {
92 bool is_press_action;
93 int state;
94} tap;
95
96enum {
97 SINGLE_TAP = 1,
98 SINGLE_HOLD = 2,
99 DOUBLE_TAP = 3,
100 DOUBLE_HOLD = 4,
101 DOUBLE_SINGLE_TAP = 5, //send two single taps
102 TRIPLE_TAP = 6,
103 TRIPLE_HOLD = 7,
104 TRIPLE_SINGLE_TAP = 8, //send three single taps
105};
106
107int cur_dance (qk_tap_dance_state_t *state) {
108 if (state->count == 1) {
109 if (state->interrupted || !state->pressed) return SINGLE_TAP;
110 else return SINGLE_HOLD;
111 }
112 else if (state->count == 2) {
113 if (state->interrupted) return DOUBLE_SINGLE_TAP;
114 else if (state->pressed) return DOUBLE_HOLD;
115 else return DOUBLE_TAP;
116 }
117
118 if (state->count == 3) {
119 if (state->interrupted) return TRIPLE_SINGLE_TAP;
120 else if (state->pressed) return TRIPLE_HOLD;
121 else return TRIPLE_TAP;
122 }
123 else return 9; //magic number. At some point this method will expand to work for more presses
124}
125
126static tap tap_state = {
127 .is_press_action = true,
128 .state = 0
129};
130
131void layer_switcher (qk_tap_dance_state_t *state, void *user_data) {
132 tap_state.state = cur_dance(state);
133 switch (tap_state.state) {
134 case SINGLE_TAP: register_code(KC_ESC); break;
135 case SINGLE_HOLD: register_code(KC_ESC); break;
136 case DOUBLE_TAP: register_code(KC_ESC); break;
137 case DOUBLE_HOLD: layer_on(_COLEMAK); break;
138 case DOUBLE_SINGLE_TAP: register_code(KC_ESC); unregister_code(KC_ESC); register_code(KC_ESC); break;
139 case TRIPLE_TAP: register_code(KC_ESC); break;
140 case TRIPLE_HOLD: layer_on(_FX); break;
141 case TRIPLE_SINGLE_TAP: register_code(KC_ESC); unregister_code(KC_ESC); register_code(KC_ESC); unregister_code(KC_ESC); register_code(KC_ESC); break;
142 //Last case is for fast typing. Assuming your key is `f`:
143 //For example, when typing the word `buffer`, and you want to make sure that you send `ff` and not `Esc`.
144 //In order to type `ff` when typing fast, the next character will have to be hit within the `TAPPING_TERM`, which by default is 200ms.
145 }
146}
147
148void layer_switcher_reset (qk_tap_dance_state_t *state, void *user_data) {
149 switch (tap_state.state) {
150 case SINGLE_TAP: unregister_code(KC_ESC); break;
151 case SINGLE_HOLD: unregister_code(KC_ESC); break;
152 case DOUBLE_TAP: unregister_code(KC_ESC); break;
153 case DOUBLE_HOLD: break;
154 case DOUBLE_SINGLE_TAP: unregister_code(KC_ESC); break;
155 case TRIPLE_TAP: unregister_code(KC_ESC); break;
156 case TRIPLE_HOLD: break;
157 case TRIPLE_SINGLE_TAP: unregister_code(KC_ESC); break;
158 }
159 tap_state.state = 0;
100} 160}
101 161
102qk_tap_dance_action_t tap_dance_actions[] = { 162qk_tap_dance_action_t tap_dance_actions[] = {
@@ -106,6 +166,8 @@ qk_tap_dance_action_t tap_dance_actions[] = {
106 [TD_LCTL_LBRC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, left_brackets, left_brackets_reset), 166 [TD_LCTL_LBRC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, left_brackets, left_brackets_reset),
107 // Single tap = ) | Double tap = ] | Triple tap = } | Single hold = KC_LALT 167 // Single tap = ) | Double tap = ] | Triple tap = } | Single hold = KC_LALT
108 [TD_LALT_RBRC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, right_brackets, right_brackets_reset), 168 [TD_LALT_RBRC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, right_brackets, right_brackets_reset),
169 // Layer Switcher ESC
170 [TD_ESC_LAYER] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, layer_switcher, layer_switcher_reset, 100),
109}; 171};
110 172
111 173
@@ -115,7 +177,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
115 177
116 //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+. 178 //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+.
117 //| | | | | | | | | | | | | 179 //| | | | | | | | | | | | |
118 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \ 180 TD(TD_ESC_LAYER), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
119 //| | | | | | | | | | | | | 181 //| | | | | | | | | | | | |
120 //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+| 182 //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+|
121 //| | | | | | | | | | | | | 183 //| | | | | | | | | | | | |
@@ -131,7 +193,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
131 //| | | | | | | | | | | | | 193 //| | | | | | | | | | | | |
132 //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+| 194 //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+|
133 //| | | | | | | | | | | | | 195 //| | | | | | | | | | | | |
134 TD(TD_LCTL_LBRC), KC_LGUI, TD(TD_LALT_RBRC), _______, _______, LT(_FN, KC_SPC), LT(_FN, KC_SPC), _______, KC_COMM, KC_LEFT, KC_DOWN, KC_RGHT \ 196 TD(TD_LCTL_LBRC), KC_LGUI, TD(TD_LALT_RBRC), _______, _______, LT(_FN, KC_SPC), _______, LT(_FX, KC_SPC), KC_COMM, KC_LEFT, KC_DOWN, KC_RGHT \
135 //| | | | | | | | | | | | | 197 //| | | | | | | | | | | | |
136 //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+' 198 //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+'
137 ), 199 ),
@@ -194,19 +256,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
194 //| | | | | | | | | | | | | 256 //| | | | | | | | | | | | |
195 //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+| 257 //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+|
196 //| | | | | | | | | | | | | 258 //| | | | | | | | | | | | |
197 _______, BL_ON, BL_INC, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, \ 259 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, _______, \
198 //| | | | | | | | | | | | | 260 //| | | | | | | | | | | | |
199 //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+| 261 //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+|
200 //| | | | | | | | | | | | | 262 //| | | | | | | | | | | | |
201 _______, BL_OFF, BL_DEC, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, _______, _______, \ 263 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAD, _______, \
202 //| | | | | | | | | | | | | 264 //| | | | | | | | | | | | |
203 //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+| 265 //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+|
204 //| | | | | | | | | | | | | 266 //| | | | | | | | | | | | |
205 _______, RGB_TOG, BL_STEP, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, _______, _______, _______, _______, \ 267 _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_HUI, RGB_TOG, \
206 //| | | | | | | | | | | | | 268 //| | | | | | | | | | | | |
207 //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+| 269 //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+|
208 //| | | | | | | | | | | | | 270 //| | | | | | | | | | | | |
209 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ 271 _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAI, RGB_HUD, RGB_SAD \
210 //| | | | | | | | | | | | | 272 //| | | | | | | | | | | | |
211 //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+' 273 //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+'
212 ), 274 ),