diff options
Diffstat (limited to 'users/drashna/process_records.c')
| -rw-r--r-- | users/drashna/process_records.c | 175 |
1 files changed, 175 insertions, 0 deletions
diff --git a/users/drashna/process_records.c b/users/drashna/process_records.c new file mode 100644 index 000000000..5e311e60e --- /dev/null +++ b/users/drashna/process_records.c | |||
| @@ -0,0 +1,175 @@ | |||
| 1 | #include "drashna.h" | ||
| 2 | |||
| 3 | uint16_t copy_paste_timer; | ||
| 4 | |||
| 5 | __attribute__ ((weak)) | ||
| 6 | bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { | ||
| 7 | return true; | ||
| 8 | } | ||
| 9 | |||
| 10 | __attribute__ ((weak)) | ||
| 11 | bool process_record_secrets(uint16_t keycode, keyrecord_t *record) { | ||
| 12 | return true; | ||
| 13 | } | ||
| 14 | |||
| 15 | |||
| 16 | // Defines actions tor my global custom keycodes. Defined in drashna.h file | ||
| 17 | // Then runs the _keymap's record handier if not processed here | ||
| 18 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||
| 19 | |||
| 20 | // If console is enabled, it will print the matrix position and status of each key pressed | ||
| 21 | #ifdef KEYLOGGER_ENABLE | ||
| 22 | #if defined(KEYBOARD_ergodox_ez) || defined(KEYBOARD_iris_rev2) | ||
| 23 | xprintf("KL: col: %u, row: %u, pressed: %u\n", record->event.key.row, record->event.key.col, record->event.pressed); | ||
| 24 | #else | ||
| 25 | xprintf("KL: col: %u, row: %u, pressed: %u\n", record->event.key.col, record->event.key.row, record->event.pressed); | ||
| 26 | #endif | ||
| 27 | #endif //KEYLOGGER_ENABLE | ||
| 28 | |||
| 29 | switch (keycode) { | ||
| 30 | case KC_QWERTY: | ||
| 31 | if (record->event.pressed) { | ||
| 32 | set_single_persistent_default_layer(_QWERTY); | ||
| 33 | } | ||
| 34 | break; | ||
| 35 | case KC_COLEMAK: | ||
| 36 | if (record->event.pressed) { | ||
| 37 | set_single_persistent_default_layer(_COLEMAK); | ||
| 38 | } | ||
| 39 | break; | ||
| 40 | case KC_DVORAK: | ||
| 41 | if (record->event.pressed) { | ||
| 42 | set_single_persistent_default_layer(_DVORAK); | ||
| 43 | } | ||
| 44 | break; | ||
| 45 | case KC_WORKMAN: | ||
| 46 | if (record->event.pressed) { | ||
| 47 | set_single_persistent_default_layer(_WORKMAN); | ||
| 48 | } | ||
| 49 | break; | ||
| 50 | |||
| 51 | |||
| 52 | case KC_MAKE: // Compiles the firmware, and adds the flash command based on keyboard bootloader | ||
| 53 | if (!record->event.pressed) { | ||
| 54 | uint8_t temp_mod = get_mods(); | ||
| 55 | uint8_t temp_osm = get_oneshot_mods(); | ||
| 56 | clear_mods(); clear_oneshot_mods(); | ||
| 57 | send_string_with_delay_P(PSTR("make " QMK_KEYBOARD ":" QMK_KEYMAP), 10); | ||
| 58 | if (temp_mod & MODS_SHIFT_MASK || temp_osm & MODS_SHIFT_MASK) { | ||
| 59 | #if defined(__ARM__) | ||
| 60 | send_string_with_delay_P(PSTR(":dfu-util"), 10); | ||
| 61 | #elif defined(BOOTLOADER_DFU) | ||
| 62 | send_string_with_delay_P(PSTR(":dfu"), 10); | ||
| 63 | #elif defined(BOOTLOADER_HALFKAY) | ||
| 64 | send_string_with_delay_P(PSTR(":teensy"), 10); | ||
| 65 | #elif defined(BOOTLOADER_CATERINA) | ||
| 66 | send_string_with_delay_P(PSTR(":avrdude"), 10); | ||
| 67 | #endif // bootloader options | ||
| 68 | } | ||
| 69 | #if defined(KEYBOARD_viterbi) | ||
| 70 | send_string_with_delay_P(PSTR(":dfu"), 10); | ||
| 71 | #endif | ||
| 72 | if (temp_mod & MODS_CTRL_MASK || temp_osm & MODS_CTRL_MASK) { send_string_with_delay_P(PSTR(" -j8 --output-sync"), 10); } | ||
| 73 | send_string_with_delay_P(PSTR(SS_TAP(X_ENTER)), 10); | ||
| 74 | set_mods(temp_mod); | ||
| 75 | } | ||
| 76 | break; | ||
| 77 | |||
| 78 | case VRSN: // Prints firmware version | ||
| 79 | if (record->event.pressed) { | ||
| 80 | send_string_with_delay_P(PSTR(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE), MACRO_TIMER); | ||
| 81 | } | ||
| 82 | break; | ||
| 83 | |||
| 84 | // These are a serious of gaming macros. | ||
| 85 | // Only enables for the viterbi, basically, | ||
| 86 | // to save on firmware space, since it's limited. | ||
| 87 | #ifdef MACROS_ENABLED | ||
| 88 | case KC_OVERWATCH: // Toggle's if we hit "ENTER" or "BACKSPACE" to input macros | ||
| 89 | if (record->event.pressed) { userspace_config.is_overwatch ^= 1; eeconfig_update_user(userspace_config.raw); } | ||
| 90 | #ifdef RGBLIGHT_ENABLE | ||
| 91 | userspace_config.is_overwatch ? rgblight_mode_noeeprom(17) : rgblight_mode_noeeprom(18); | ||
| 92 | #endif //RGBLIGHT_ENABLE | ||
| 93 | break; | ||
| 94 | case KC_SALT: | ||
| 95 | return send_game_macro("Salt, salt, salt...", record, false); | ||
| 96 | case KC_MORESALT: | ||
| 97 | return send_game_macro("Please sir, can I have some more salt?!", record, false); | ||
| 98 | case KC_SALTHARD: | ||
| 99 | return send_game_macro("Your salt only makes me harder, and even more aggressive!", record, false); | ||
| 100 | case KC_GOODGAME: | ||
| 101 | return send_game_macro("Good game, everyone!", record, false); | ||
| 102 | case KC_GLHF: | ||
| 103 | return send_game_macro("Good luck, have fun!!!", record, false); | ||
| 104 | case KC_SYMM: | ||
| 105 | return send_game_macro("Left click to win!", record, false); | ||
| 106 | case KC_JUSTGAME: | ||
| 107 | return send_game_macro("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.", record, false); | ||
| 108 | case KC_TORB: | ||
| 109 | return send_game_macro("That was positively riveting!", record, false); | ||
| 110 | case KC_AIM: | ||
| 111 | send_game_macro("That aim is absolutely amazing. It's almost like you're a machine!", record, true); | ||
| 112 | return send_game_macro("Wait! That aim is TOO good! You're clearly using an aim hack! CHEATER!", record, false); | ||
| 113 | case KC_C9: | ||
| 114 | return send_game_macro("OMG!!! C9!!!", record, false); | ||
| 115 | case KC_GGEZ: | ||
| 116 | return send_game_macro("That was a fantastic game, though it was a bit easy. Try harder next time!", record, false); | ||
| 117 | #endif // MACROS_ENABLED | ||
| 118 | |||
| 119 | |||
| 120 | case KC_DIABLO_CLEAR: // reset all Diablo timers, disabling them | ||
| 121 | #ifdef TAP_DANCE_ENABLE | ||
| 122 | if (record->event.pressed) { | ||
| 123 | uint8_t dtime; | ||
| 124 | for (dtime = 0; dtime < 4; dtime++) { | ||
| 125 | diablo_key_time[dtime] = diablo_times[0]; | ||
| 126 | } | ||
| 127 | } | ||
| 128 | #endif // TAP_DANCE_ENABLE | ||
| 129 | break; | ||
| 130 | |||
| 131 | |||
| 132 | case KC_CCCV: // One key copy/paste | ||
| 133 | if(record->event.pressed){ | ||
| 134 | copy_paste_timer = timer_read(); | ||
| 135 | } else { | ||
| 136 | if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { // Hold, copy | ||
| 137 | register_code(KC_LCTL); | ||
| 138 | tap_code(KC_C); | ||
| 139 | unregister_code(KC_LCTL); | ||
| 140 | } else { // Tap, paste | ||
| 141 | register_code(KC_LCTL); | ||
| 142 | tap_code(KC_V); | ||
| 143 | unregister_code(KC_LCTL); | ||
| 144 | } | ||
| 145 | } | ||
| 146 | break; | ||
| 147 | #ifdef UNICODE_ENABLE | ||
| 148 | case UC_FLIP: // (ノಠ痊ಠ)ノ彡┻━┻ | ||
| 149 | if (record->event.pressed) { | ||
| 150 | send_unicode_hex_string("0028 30CE 0CA0 75CA 0CA0 0029 30CE 5F61 253B 2501 253B"); | ||
| 151 | } | ||
| 152 | break; | ||
| 153 | case UC_TABL: // ┬─┬ノ( º _ ºノ) | ||
| 154 | if (record->event.pressed) { | ||
| 155 | send_unicode_hex_string("252C 2500 252C 30CE 0028 0020 00BA 0020 005F 0020 00BA 30CE 0029"); | ||
| 156 | } | ||
| 157 | break; | ||
| 158 | case UC_SHRG: // ¯\_(ツ)_/¯ | ||
| 159 | if (record->event.pressed) { | ||
| 160 | send_unicode_hex_string("00AF 005C 005F 0028 30C4 0029 005F 002F 00AF"); | ||
| 161 | } | ||
| 162 | break; | ||
| 163 | case UC_DISA: // ಠ_ಠ | ||
| 164 | if (record->event.pressed) { | ||
| 165 | send_unicode_hex_string("0CA0 005F 0CA0"); | ||
| 166 | } | ||
| 167 | break; | ||
| 168 | #endif | ||
| 169 | } | ||
| 170 | return process_record_keymap(keycode, record) && | ||
| 171 | #if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE) | ||
| 172 | process_record_user_rgb(keycode, record) && | ||
| 173 | #endif // RGBLIGHT_ENABLE | ||
| 174 | process_record_secrets(keycode, record); | ||
| 175 | } | ||
