aboutsummaryrefslogtreecommitdiff
path: root/keyboards/viterbi/keymaps/drashna/keymap.c
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/viterbi/keymaps/drashna/keymap.c')
-rw-r--r--keyboards/viterbi/keymaps/drashna/keymap.c467
1 files changed, 240 insertions, 227 deletions
diff --git a/keyboards/viterbi/keymaps/drashna/keymap.c b/keyboards/viterbi/keymaps/drashna/keymap.c
index acddcb741..0722746ff 100644
--- a/keyboards/viterbi/keymaps/drashna/keymap.c
+++ b/keyboards/viterbi/keymaps/drashna/keymap.c
@@ -11,32 +11,33 @@ extern keymap_config_t keymap_config;
11#define _NUMNAV 0 11#define _NUMNAV 0
12#define _DIABLO 1 12#define _DIABLO 1
13#define _GAMEPAD 2 13#define _GAMEPAD 2
14#define _MACROS 3 14#define _GMACRO 3
15#define _MEDIA 4 15#define _MEDIA 4
16#define _COVECUBE 5 16#define _COVECUBE 5
17 17
18 18
19enum custom_keycodes { 19enum custom_keycodes {
20 KC_DIABLO_CLEAR = SAFE_RANGE, 20 KC_DIABLO_CLEAR = SAFE_RANGE,
21 KC_P00, 21 KC_P00,
22 KC_MAKE, 22 KC_MAKE,
23 KC_OVERWATCH, 23 KC_RESET,
24 KC_SALT, 24 KC_OVERWATCH,
25 KC_MORESALT, 25 KC_SALT,
26 KC_SALTHARD, 26 KC_MORESALT,
27 KC_GOODGAME, 27 KC_SALTHARD,
28 KC_SYMM, 28 KC_GOODGAME,
29 KC_DOOMFIST, 29 KC_SYMM,
30 KC_JUSTGAME, 30 KC_DOOMFIST,
31 KC_GLHF, 31 KC_JUSTGAME,
32 KC_TORB, 32 KC_GLHF,
33 KC_AIM 33 KC_TORB,
34 KC_AIM
34}; 35};
35 36
36// Fillers to make layering more clear 37// Fillers to make layering more clear
37#define _______ KC_TRNS 38#define _______ KC_TRNS
38#define XXXXXXX KC_NO 39#define XXXXXXX KC_NO
39#define MACROS TG(_MACROS) 40#define GMACRO TG(_GMACRO)
40#define DIABLO TG(_DIABLO) 41#define DIABLO TG(_DIABLO)
41#define GAMEPAD TG(_GAMEPAD) 42#define GAMEPAD TG(_GAMEPAD)
42#define MEDIA TG(_MEDIA) 43#define MEDIA TG(_MEDIA)
@@ -65,58 +66,58 @@ static uint8_t diablo_key_time[4];
65 66
66 67
67bool check_dtimer(uint8_t dtimer) { 68bool check_dtimer(uint8_t dtimer) {
68 // has the correct number of seconds elapsed (as defined by diablo_times) 69 // has the correct number of seconds elapsed (as defined by diablo_times)
69 return (timer_elapsed(diablo_timer[dtimer]) < (diablo_key_time[dtimer] * 1000)) ? false : true; 70 return (timer_elapsed(diablo_timer[dtimer]) < (diablo_key_time[dtimer] * 1000)) ? false : true;
70}; 71};
71 72
72 73
73enum { 74enum {
74 TD_DIABLO_1 = 0, 75 TD_DIABLO_1 = 0,
75 TD_DIABLO_2, 76 TD_DIABLO_2,
76 TD_DIABLO_3, 77 TD_DIABLO_3,
77 TD_DIABLO_4 78 TD_DIABLO_4
78}; 79};
79 80
80 81
81// Cycle through the times for the macro, starting at 0, for disabled. 82// Cycle through the times for the macro, starting at 0, for disabled.
82// Max of six values, so don't exceed 83// Max of six values, so don't exceed
83void diablo_tapdance_master(qk_tap_dance_state_t *state, void *user_data, uint8_t diablo_key) { 84void diablo_tapdance_master(qk_tap_dance_state_t *state, void *user_data, uint8_t diablo_key) {
84 if (state->count >= 7) { 85 if (state->count >= 7) {
85 diablo_key_time[diablo_key] = diablo_times[0]; 86 diablo_key_time[diablo_key] = diablo_times[0];
86 reset_tap_dance(state); 87 reset_tap_dance(state);
87 } 88 }
88 else { 89 else {
89 diablo_key_time[diablo_key] = diablo_times[state->count - 1]; 90 diablo_key_time[diablo_key] = diablo_times[state->count - 1];
90 } 91 }
91} 92}
92 93
93 94
94// Would rather have one function for all of this, but no idea how to do that... 95// Would rather have one function for all of this, but no idea how to do that...
95void diablo_tapdance1(qk_tap_dance_state_t *state, void *user_data) { 96void diablo_tapdance1(qk_tap_dance_state_t *state, void *user_data) {
96 diablo_tapdance_master(state, user_data, 0); 97 diablo_tapdance_master(state, user_data, 0);
97} 98}
98 99
99void diablo_tapdance2(qk_tap_dance_state_t *state, void *user_data) { 100void diablo_tapdance2(qk_tap_dance_state_t *state, void *user_data) {
100 diablo_tapdance_master(state, user_data, 1); 101 diablo_tapdance_master(state, user_data, 1);
101} 102}
102 103
103void diablo_tapdance3(qk_tap_dance_state_t *state, void *user_data) { 104void diablo_tapdance3(qk_tap_dance_state_t *state, void *user_data) {
104 diablo_tapdance_master(state, user_data, 2); 105 diablo_tapdance_master(state, user_data, 2);
105} 106}
106 107
107void diablo_tapdance4(qk_tap_dance_state_t *state, void *user_data) { 108void diablo_tapdance4(qk_tap_dance_state_t *state, void *user_data) {
108 diablo_tapdance_master(state, user_data, 3); 109 diablo_tapdance_master(state, user_data, 3);
109} 110}
110 111
111 112
112 113
113//Tap Dance Definitions 114//Tap Dance Definitions
114qk_tap_dance_action_t tap_dance_actions[] = { 115qk_tap_dance_action_t tap_dance_actions[] = {
115 // tap once to disable, and more to enable timed micros 116 // tap once to disable, and more to enable timed micros
116 [TD_DIABLO_1] = ACTION_TAP_DANCE_FN(diablo_tapdance1), 117 [TD_DIABLO_1] = ACTION_TAP_DANCE_FN(diablo_tapdance1),
117 [TD_DIABLO_2] = ACTION_TAP_DANCE_FN(diablo_tapdance2), 118 [TD_DIABLO_2] = ACTION_TAP_DANCE_FN(diablo_tapdance2),
118 [TD_DIABLO_3] = ACTION_TAP_DANCE_FN(diablo_tapdance3), 119 [TD_DIABLO_3] = ACTION_TAP_DANCE_FN(diablo_tapdance3),
119 [TD_DIABLO_4] = ACTION_TAP_DANCE_FN(diablo_tapdance4), 120 [TD_DIABLO_4] = ACTION_TAP_DANCE_FN(diablo_tapdance4),
120 121
121}; 122};
122#endif 123#endif
@@ -125,7 +126,7 @@ qk_tap_dance_action_t tap_dance_actions[] = {
125const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 126const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
126 127
127 [_NUMNAV] = KEYMAP( 128 [_NUMNAV] = KEYMAP(
128 MACROS, DIABLO, GAMEPAD, KC_NLCK, KC_SLCK, KC_COLN, KC_PSLS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 129 GMACRO, DIABLO, GAMEPAD, KC_NLCK, KC_SLCK, KC_COLN, KC_PSLS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
129 MEDIA, KC_CALC, COVECUBE,KC_P7, KC_P8, KC_P9, KC_PAST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 130 MEDIA, KC_CALC, COVECUBE,KC_P7, KC_P8, KC_P9, KC_PAST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
130 KC_HOME, KC_DEL, KC_PGUP, KC_P4, KC_P5, KC_P6, KC_PMNS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 131 KC_HOME, KC_DEL, KC_PGUP, KC_P4, KC_P5, KC_P6, KC_PMNS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
131 KC_END, KC_UP, KC_PGDN, KC_P1, KC_P2, KC_P3, KC_PPLS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 132 KC_END, KC_UP, KC_PGDN, KC_P1, KC_P2, KC_P3, KC_PPLS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
@@ -139,17 +140,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
139 KC_LCTL, (TD_DIABLO_1), TD(TD_DIABLO_2), TD(TD_DIABLO_3), TD(TD_DIABLO_4), KC_Z, KC_DIABLO_CLEAR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 140 KC_LCTL, (TD_DIABLO_1), TD(TD_DIABLO_2), TD(TD_DIABLO_3), TD(TD_DIABLO_4), KC_Z, KC_DIABLO_CLEAR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
140 KC_LALT, KC_F4, KC_F5, KC_F8, KC_F9, KC_F10, SFT_T(KC_SPACE), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \ 141 KC_LALT, KC_F4, KC_F5, KC_F8, KC_F9, KC_F10, SFT_T(KC_SPACE), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \
141 ), 142 ),
142 143
143 [_GAMEPAD] = KEYMAP( // Game pad layout designed primarily for Overwatch 144 [_GAMEPAD] = KEYMAP( // Game pad layout designed primarily for Overwatch
144 MACROS, KC_ESC, GAMEPAD, KC_1, KC_2, KC_3, KC_4, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 145 GMACRO, KC_ESC, GAMEPAD, KC_1, KC_2, KC_3, KC_4, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
145 MEDIA, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 146 MEDIA, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
146 KC_Z, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 147 KC_Z, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
147 KC_Y, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 148 KC_Y, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
148 KC_F1, KC_U, KC_I, KC_Y, KC_V, KC_SPC, KC_V, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \ 149 KC_F1, KC_U, KC_I, KC_Y, KC_V, KC_SPC, KC_V, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \
149 ), 150 ),
150 151
151 [_MACROS] = KEYMAP( 152 [_GMACRO] = KEYMAP(
152 MACROS, XXXXXXX, GAMEPAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 153 GMACRO, XXXXXXX, GAMEPAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
153 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 154 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
154 KC_SYMM, KC_TORB, KC_DOOMFIST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 155 KC_SYMM, KC_TORB, KC_DOOMFIST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
155 KC_GLHF, KC_GOODGAME, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 156 KC_GLHF, KC_GOODGAME, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
@@ -165,7 +166,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
165 ), 166 ),
166 167
167 [_MEDIA] = KEYMAP( 168 [_MEDIA] = KEYMAP(
168 RESET, KC_MAKE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 169 KC_RESET,KC_MAKE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
169 MEDIA, XXXXXXX, RGB_SAI, RGB_VAI, RGB_M_P, RGB_M_B, RGB_M_R, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 170 MEDIA, XXXXXXX, RGB_SAI, RGB_VAI, RGB_M_P, RGB_M_B, RGB_M_R, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
170 RGB_TOG, RGB_MOD, RGB_SAD, RGB_VAD, RGB_M_SW,RGB_M_SN,RGB_M_K, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 171 RGB_TOG, RGB_MOD, RGB_SAD, RGB_VAD, RGB_M_SW,RGB_M_SN,RGB_M_K, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
171 KC_MPLY, KC_MSTP, KC_MPRV, KC_MNXT, RGB_M_K, RGB_M_X, RGB_M_G, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 172 KC_MPLY, KC_MSTP, KC_MPRV, KC_MNXT, RGB_M_K, RGB_M_X, RGB_M_G, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
@@ -178,179 +179,191 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
178 179
179 180
180bool process_record_user(uint16_t keycode, keyrecord_t *record) { 181bool process_record_user(uint16_t keycode, keyrecord_t *record) {
181 uint16_t kc; 182 uint16_t kc;
182 if (is_overwatch) { 183 if (is_overwatch) {
183 kc = KC_BSPC; 184 kc = KC_BSPC;
185 }
186 else {
187 kc = KC_ENTER;
188 }
189 // Once a delay command is added to "SEND_STRING",
190 // replace these with X_BSPC and X_ENTER instead.
191 // and add "SS_TAP(kc) SS_DELAY(50)" to all of the
192 // SEND_STRING commands, to compress things.
193 switch (keycode) {
194#ifdef TAP_DANCE_ENABLE
195 case KC_DIABLO_CLEAR: // reset all Diable timers, disabling them
196 if (record->event.pressed) {
197 uint8_t dtime;
198
199 for (dtime = 0; dtime < 4; dtime++) {
200 diablo_key_time[dtime] = diablo_times[0];
201 }
184 } 202 }
185 else { 203 return false;
186 kc = KC_ENTER; 204 break;
205#endif
206 case KC_P00:
207 if (!record->event.pressed) {
208 register_code(KC_P0);
209 unregister_code(KC_P0);
210 register_code(KC_P0);
211 unregister_code(KC_P0);
187 } 212 }
188 // Once a delay command is added to "SEND_STRING", 213 return false;
189 // replace these with X_BSPC and X_ENTER instead. 214 break;
190 // and add "SS_TAP(kc) SS_DELAY(50)" to all of the 215 case KC_MAKE:
191 // SEND_STRING commands, to compress things. 216 if (!record->event.pressed) {
192 switch (keycode) { 217 SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP SS_TAP(X_ENTER));
193#ifdef TAP_DANCE_ENABLE 218 }
194 case KC_DIABLO_CLEAR: // reset all Diable timers, disabling them 219 return false;
195 if (record->event.pressed) { 220 break;
196 uint8_t dtime; 221 case KC_RESET:
197 222 if (!record->event.pressed) {
198 for (dtime = 0; dtime < 4; dtime++) { 223#ifdef RGBLIGHT_ENABLE
199 diablo_key_time[dtime] = diablo_times[0]; 224 rgblight_enable();
200 } 225 rgblight_mode(1);
201 } 226 rgblight_setrgb(0xff, 0x00, 0x00);
202 return false;
203 break;
204#endif 227#endif
205 case KC_P00: 228 reset_keyboard();
206 if (!record->event.pressed) { 229 }
207 register_code(KC_P0); 230 return false;
208 unregister_code(KC_P0); 231 break;
209 register_code(KC_P0); 232
210 unregister_code(KC_P0); 233 case KC_OVERWATCH: // reset all Diable timers, disabling them
211 } 234 if (record->event.pressed) {
212 return false; 235 is_overwatch = !is_overwatch;
213 break; 236 }
214 case KC_MAKE:
215 if (!record->event.pressed) {
216 SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP SS_TAP(X_ENTER));
217 }
218 return false;
219 break;
220 case KC_OVERWATCH: // reset all Diable timers, disabling them
221 if (record->event.pressed) {
222 is_overwatch = !is_overwatch;
223 }
224#ifdef RGBLIGHT_ENABLE 237#ifdef RGBLIGHT_ENABLE
225 is_overwatch ? rgblight_mode(17) : rgblight_mode(18); 238 is_overwatch ? rgblight_mode(17) : rgblight_mode(18);
226#endif 239#endif
227 return false; 240 return false;
228 break; 241 break;
229 case KC_SALT: 242 case KC_SALT:
230 if (!record->event.pressed) { 243 if (!record->event.pressed) {
231 register_code(kc); 244 register_code(kc);
232 unregister_code(kc); 245 unregister_code(kc);
233 _delay_ms(50); 246 _delay_ms(50);
234 SEND_STRING("Salt, salt, salt..." SS_TAP(X_ENTER)); 247 SEND_STRING("Salt, salt, salt..." SS_TAP(X_ENTER));
235 } 248 }
236 return false; 249 return false;
237 break; 250 break;
238 case KC_MORESALT: 251 case KC_MORESALT:
239 if (!record->event.pressed) { 252 if (!record->event.pressed) {
240 register_code(kc); 253 register_code(kc);
241 unregister_code(kc); 254 unregister_code(kc);
242 _delay_ms(50); 255 _delay_ms(50);
243 SEND_STRING("Please sir, can I have some more salt?!" SS_TAP(X_ENTER)); 256 SEND_STRING("Please sir, can I have some more salt?!" SS_TAP(X_ENTER));
244 } 257 }
245 return false; 258 return false;
246 break; 259 break;
247 case KC_SALTHARD: 260 case KC_SALTHARD:
248 if (!record->event.pressed) { 261 if (!record->event.pressed) {
249 register_code(kc); 262 register_code(kc);
250 unregister_code(kc); 263 unregister_code(kc);
251 _delay_ms(50); 264 _delay_ms(50);
252 SEND_STRING("Your salt only makes my penis that much harder, and even more aggressive!" SS_TAP(X_ENTER)); 265 SEND_STRING("Your salt only makes my penis that much harder, and even more aggressive!" SS_TAP(X_ENTER));
253 } 266 }
254 return false; 267 return false;
255 break; 268 break;
256 case KC_GOODGAME: 269 case KC_GOODGAME:
257 if (!record->event.pressed) { 270 if (!record->event.pressed) {
258 register_code(kc); 271 register_code(kc);
259 unregister_code(kc); 272 unregister_code(kc);
260 _delay_ms(50); 273 _delay_ms(50);
261 SEND_STRING("Good game, everyone!" SS_TAP(X_ENTER)); 274 SEND_STRING("Good game, everyone!" SS_TAP(X_ENTER));
262 } 275 }
263 return false; 276 return false;
264 break; 277 break;
265 case KC_GLHF: 278 case KC_GLHF:
266 if (!record->event.pressed) { 279 if (!record->event.pressed) {
267 register_code(kc); 280 register_code(kc);
268 unregister_code(kc); 281 unregister_code(kc);
269 _delay_ms(50); 282 _delay_ms(50);
270 SEND_STRING("Good luck, have fun!!!" SS_TAP(X_ENTER)); 283 SEND_STRING("Good luck, have fun!!!" SS_TAP(X_ENTER));
271 } 284 }
272 return false; 285 return false;
273 break; 286 break;
274 case KC_SYMM: 287 case KC_SYMM:
275 if (!record->event.pressed) { 288 if (!record->event.pressed) {
276 register_code(kc); 289 register_code(kc);
277 unregister_code(kc); 290 unregister_code(kc);
278 _delay_ms(50); 291 _delay_ms(50);
279 SEND_STRING("Left click to win!" SS_TAP(X_ENTER)); 292 SEND_STRING("Left click to win!" SS_TAP(X_ENTER));
280 } 293 }
281 return false; 294 return false;
282 break; 295 break;
283 case KC_JUSTGAME: 296 case KC_JUSTGAME:
284 297
285 if (!record->event.pressed) { 298 if (!record->event.pressed) {
286 register_code(kc); 299 register_code(kc);
287 unregister_code(kc); 300 unregister_code(kc);
288 _delay_ms(50); 301 _delay_ms(50);
289 SEND_STRING("It may be a game, but if you don't want to actually try, please go play AI, so that people that actually want to take the game seriously and \"get good\" have a place to do so without trolls like you throwing games." SS_TAP(X_ENTER)); 302 SEND_STRING("It may be a game, but if you don't want to actually try, please go play AI, so that people that actually want to take the game seriously and \"get good\" have a place to do so without trolls like you throwing games." SS_TAP(X_ENTER));
290 } 303 }
291 return false; 304 return false;
292 break; 305 break;
293 case KC_TORB: 306 case KC_TORB:
294 307
295 if (!record->event.pressed) { 308 if (!record->event.pressed) {
296 register_code(kc); 309 register_code(kc);
297 unregister_code(kc); 310 unregister_code(kc);
298 _delay_ms(50); 311 _delay_ms(50);
299 SEND_STRING("That was positively riveting! SS_TAP(X_ENTER)"); 312 SEND_STRING("That was positively riveting! SS_TAP(X_ENTER)");
300 } 313 }
301 return false; 314 return false;
302 break; 315 break;
303 case KC_AIM: 316 case KC_AIM:
304 317
305 if (!record->event.pressed) { 318 if (!record->event.pressed) {
306 register_code(kc); 319 register_code(kc);
307 unregister_code(kc); 320 unregister_code(kc);
308 _delay_ms(50); 321 _delay_ms(50);
309 SEND_STRING("That aim is absolutely amazing. It's almost like you're a machine!" SS_TAP(X_ENTER)); 322 SEND_STRING("That aim is absolutely amazing. It's almost like you're a machine!" SS_TAP(X_ENTER));
310 _delay_ms(50); 323 _delay_ms(50);
311 SEND_STRING("Wait! That aim is TOO good! You're clearly using an aim hack! CHEATER!" SS_TAP(X_ENTER)); 324 SEND_STRING("Wait! That aim is TOO good! You're clearly using an aim hack! CHEATER!" SS_TAP(X_ENTER));
312 } 325 }
313 return false; 326 return false;
314 break; 327 break;
315 328
316 329
317 } 330 }
318 return true; 331 return true;
319} 332}
320 333
321#ifdef TAP_DANCE_ENABLE 334#ifdef TAP_DANCE_ENABLE
322 335
323// Sends the key press to system, but only if on the Diablo layer 336// Sends the key press to system, but only if on the Diablo layer
324void send_diablo_keystroke(uint8_t diablo_key) { 337void send_diablo_keystroke(uint8_t diablo_key) {
325 if (biton32(layer_state) == _DIABLO) { 338 if (biton32(layer_state) == _DIABLO) {
326 switch (diablo_key) { 339 switch (diablo_key) {
327 case 0: 340 case 0:
328 SEND_STRING("1"); 341 SEND_STRING("1");
329 break; 342 break;
330 case 1: 343 case 1:
331 SEND_STRING("2"); 344 SEND_STRING("2");
332 break; 345 break;
333 case 2: 346 case 2:
334 SEND_STRING("3"); 347 SEND_STRING("3");
335 break; 348 break;
336 case 3: 349 case 3:
337 SEND_STRING("4"); 350 SEND_STRING("4");
338 break; 351 break;
339 }
340 } 352 }
353 }
341} 354}
342 355
343// Checks each of the 4 timers/keys to see if enough time has elapsed 356// Checks each of the 4 timers/keys to see if enough time has elapsed
344// Runs the "send string" command if enough time has passed, and resets the timer. 357// Runs the "send string" command if enough time has passed, and resets the timer.
345void run_diablo_macro_check(void) { 358void run_diablo_macro_check(void) {
346 uint8_t dtime; 359 uint8_t dtime;
347 360
348 for (dtime = 0; dtime < 4; dtime++) { 361 for (dtime = 0; dtime < 4; dtime++) {
349 if (check_dtimer(dtime) && diablo_key_time[dtime]) { 362 if (check_dtimer(dtime) && diablo_key_time[dtime]) {
350 diablo_timer[dtime] = timer_read(); 363 diablo_timer[dtime] = timer_read();
351 send_diablo_keystroke(dtime); 364 send_diablo_keystroke(dtime);
352 }
353 } 365 }
366 }
354 367
355} 368}
356#endif 369#endif
@@ -358,9 +371,9 @@ void run_diablo_macro_check(void) {
358 371
359void matrix_init_user(void) { // Runs boot tasks for keyboard 372void matrix_init_user(void) { // Runs boot tasks for keyboard
360#ifdef RGBLIGHT_ENABLE 373#ifdef RGBLIGHT_ENABLE
361 rgblight_enable(); 374 rgblight_enable();
362 rgblight_set_teal; 375 rgblight_set_teal;
363 rgblight_mode(1); 376 rgblight_mode(1);
364#endif 377#endif
365}; 378};
366 379
@@ -368,39 +381,39 @@ void matrix_init_user(void) { // Runs boot tasks for keyboard
368void matrix_scan_user(void) { // runs frequently to update info 381void matrix_scan_user(void) { // runs frequently to update info
369#ifdef TAP_DANCE_ENABLE 382#ifdef TAP_DANCE_ENABLE
370 // Run Diablo 3 macro checking code. 383 // Run Diablo 3 macro checking code.
371 run_diablo_macro_check(); 384 run_diablo_macro_check();
372#endif 385#endif
373}; 386};
374 387
375 388
376uint32_t layer_state_set_kb(uint32_t state) { 389uint32_t layer_state_set_kb(uint32_t state) {
377#ifdef RGBLIGHT_ENABLE 390#ifdef RGBLIGHT_ENABLE
378 rgblight_enable(); 391 rgblight_enable();
379 switch (biton32(state)) { 392 switch (biton32(state)) {
380 case _NUMNAV: 393 case _NUMNAV:
381 rgblight_set_teal; 394 rgblight_set_teal;
382 rgblight_mode(2); 395 rgblight_mode(2);
383 break; 396 break;
384 case _MACROS: 397 case _GMACRO:
385 rgblight_set_orange; 398 rgblight_set_orange;
386 is_overwatch ? rgblight_mode(17) : rgblight_mode(18); 399 is_overwatch ? rgblight_mode(17) : rgblight_mode(18);
387 break; 400 break;
388 case _DIABLO: 401 case _DIABLO:
389 rgblight_set_red; 402 rgblight_set_red;
390 rgblight_mode(5); 403 rgblight_mode(5);
391 break; 404 break;
392 case _GAMEPAD: 405 case _GAMEPAD:
393 rgblight_set_yellow; 406 rgblight_set_yellow;
394 rgblight_mode(1); 407 rgblight_mode(1);
395 break; 408 break;
396 case _MEDIA: 409 case _MEDIA:
397 rgblight_set_blue; 410 rgblight_set_blue;
398 rgblight_mode(1); 411 rgblight_mode(1);
399 break; 412 break;
400 case _COVECUBE: 413 case _COVECUBE:
401 rgblight_set_green; 414 rgblight_set_green;
402 rgblight_mode(2); 415 rgblight_mode(2);
403 } 416 }
404#endif 417#endif
405 return state; 418 return state;
406} 419}