diff options
Diffstat (limited to 'keyboards/viterbi/keymaps/drashna/keymap.c')
| -rw-r--r-- | keyboards/viterbi/keymaps/drashna/keymap.c | 467 |
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 | ||
| 19 | enum custom_keycodes { | 19 | enum 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 | ||
| 67 | bool check_dtimer(uint8_t dtimer) { | 68 | bool 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 | ||
| 73 | enum { | 74 | enum { |
| 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 |
| 83 | void diablo_tapdance_master(qk_tap_dance_state_t *state, void *user_data, uint8_t diablo_key) { | 84 | void 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... |
| 95 | void diablo_tapdance1(qk_tap_dance_state_t *state, void *user_data) { | 96 | void 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 | ||
| 99 | void diablo_tapdance2(qk_tap_dance_state_t *state, void *user_data) { | 100 | void 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 | ||
| 103 | void diablo_tapdance3(qk_tap_dance_state_t *state, void *user_data) { | 104 | void 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 | ||
| 107 | void diablo_tapdance4(qk_tap_dance_state_t *state, void *user_data) { | 108 | void 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 |
| 114 | qk_tap_dance_action_t tap_dance_actions[] = { | 115 | qk_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[] = { | |||
| 125 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | 126 | const 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 | ||
| 180 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | 181 | bool 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 |
| 324 | void send_diablo_keystroke(uint8_t diablo_key) { | 337 | void 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. |
| 345 | void run_diablo_macro_check(void) { | 358 | void 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 | ||
| 359 | void matrix_init_user(void) { // Runs boot tasks for keyboard | 372 | void 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 | |||
| 368 | void matrix_scan_user(void) { // runs frequently to update info | 381 | void 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 | ||
| 376 | uint32_t layer_state_set_kb(uint32_t state) { | 389 | uint32_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 | } |
