diff options
| author | Drashna Jaelre <drashna@live.com> | 2018-12-04 13:27:41 -0800 |
|---|---|---|
| committer | MechMerlin <30334081+mechmerlin@users.noreply.github.com> | 2018-12-04 13:27:41 -0800 |
| commit | 6d0dc910d92bc381d3cce9ea712aa47ae40ddf15 (patch) | |
| tree | a1490c040ca730cdf43fb7f52422391998590597 /users/drashna | |
| parent | 106de349fb6410d0deb706ecb68ae1e78a4ef2db (diff) | |
| download | qmk_firmware-6d0dc910d92bc381d3cce9ea712aa47ae40ddf15.tar.gz qmk_firmware-6d0dc910d92bc381d3cce9ea712aa47ae40ddf15.zip | |
Rework drashna userspace to be more modular (#4544)
* Break up files to make more readable
* Add comments to ortho 4x12 layout rules.mk
* Small tweaks
* Update GitLab CI scripts
* Make ortho boards smaller
Diffstat (limited to 'users/drashna')
| -rw-r--r-- | users/drashna/.gitlab-ci.yml | 2 | ||||
| -rw-r--r-- | users/drashna/config.h | 4 | ||||
| -rw-r--r-- | users/drashna/drashna.c | 271 | ||||
| -rw-r--r-- | users/drashna/drashna.h | 301 | ||||
| -rw-r--r-- | users/drashna/process_records.c | 175 | ||||
| -rw-r--r-- | users/drashna/process_records.h | 101 | ||||
| -rw-r--r-- | users/drashna/rgb_stuff.h | 6 | ||||
| -rw-r--r-- | users/drashna/rules.mk | 3 | ||||
| -rw-r--r-- | users/drashna/tap_dances.c | 1 | ||||
| -rw-r--r-- | users/drashna/tap_dances.h | 12 | ||||
| -rw-r--r-- | users/drashna/wrappers.h | 170 |
11 files changed, 522 insertions, 524 deletions
diff --git a/users/drashna/.gitlab-ci.yml b/users/drashna/.gitlab-ci.yml index 3c95ad850..bd693babc 100644 --- a/users/drashna/.gitlab-ci.yml +++ b/users/drashna/.gitlab-ci.yml | |||
| @@ -13,7 +13,7 @@ qmk_firmware: | |||
| 13 | - apt-get install -y build-essential avr-libc binutils-arm-none-eabi binutils-avr dfu-programmer dfu-util diffutils gcc gcc-arm-none-eabi gcc-avr git libnewlib-arm-none-eabi unzip wget zip | 13 | - apt-get install -y build-essential avr-libc binutils-arm-none-eabi binutils-avr dfu-programmer dfu-util diffutils gcc gcc-arm-none-eabi gcc-avr git libnewlib-arm-none-eabi unzip wget zip |
| 14 | - avr-gcc --version | 14 | - avr-gcc --version |
| 15 | script: | 15 | script: |
| 16 | - make iris/rev2:drashna iris/rev2:drashna_old ergodox_ez:drashna viterbi/rev1:drashna orthodox/rev1:drashna orthodox/rev3:drashna crkbd:drashna planck/light:drashna | 16 | - make iris/rev2:drashna:production iris/rev2:drashna_old:production ergodox_ez:drashna ergodox_ez:drashna_glow viterbi/rev1:drashna:production orthodox/rev1:drashna:production orthodox/rev3:drashna:production crkbd:drashna:production planck/light:drashna:production |
| 17 | artifacts: | 17 | artifacts: |
| 18 | name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG" | 18 | name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG" |
| 19 | paths: | 19 | paths: |
diff --git a/users/drashna/config.h b/users/drashna/config.h index 06cae86ab..a33851230 100644 --- a/users/drashna/config.h +++ b/users/drashna/config.h | |||
| @@ -3,7 +3,7 @@ | |||
| 3 | 3 | ||
| 4 | #ifdef AUDIO_ENABLE | 4 | #ifdef AUDIO_ENABLE |
| 5 | #define AUDIO_CLICKY | 5 | #define AUDIO_CLICKY |
| 6 | #define STARTUP_SONG SONG(E1M1_DOOM) | 6 | #define STARTUP_SONG SONG(RICK_ROLL) |
| 7 | #define GOODBYE_SONG SONG(SONIC_RING) | 7 | #define GOODBYE_SONG SONG(SONIC_RING) |
| 8 | #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \ | 8 | #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \ |
| 9 | SONG(COLEMAK_SOUND), \ | 9 | SONG(COLEMAK_SOUND), \ |
| @@ -44,7 +44,7 @@ | |||
| 44 | // and when this option isn't enabled, z rapidly followed by x | 44 | // and when this option isn't enabled, z rapidly followed by x |
| 45 | // actually sends Ctrl-x. That's bad.) | 45 | // actually sends Ctrl-x. That's bad.) |
| 46 | #define IGNORE_MOD_TAP_INTERRUPT | 46 | #define IGNORE_MOD_TAP_INTERRUPT |
| 47 | #define PERMISSIVE_HOLD | 47 | #undef PERMISSIVE_HOLD |
| 48 | //#define TAPPING_FORCE_HOLD | 48 | //#define TAPPING_FORCE_HOLD |
| 49 | //#define RETRO_TAPPING | 49 | //#define RETRO_TAPPING |
| 50 | 50 | ||
diff --git a/users/drashna/drashna.c b/users/drashna/drashna.c index 8f10a530e..222824837 100644 --- a/users/drashna/drashna.c +++ b/users/drashna/drashna.c | |||
| @@ -16,8 +16,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
| 16 | */ | 16 | */ |
| 17 | 17 | ||
| 18 | #include "drashna.h" | 18 | #include "drashna.h" |
| 19 | #include "tap_dances.h" | ||
| 20 | #include "rgb_stuff.h" | ||
| 21 | 19 | ||
| 22 | userspace_config_t userspace_config; | 20 | userspace_config_t userspace_config; |
| 23 | #if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE)) | 21 | #if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE)) |
| @@ -27,9 +25,6 @@ userspace_config_t userspace_config; | |||
| 27 | #define DRASHNA_UNICODE_MODE 2 | 25 | #define DRASHNA_UNICODE_MODE 2 |
| 28 | #endif | 26 | #endif |
| 29 | 27 | ||
| 30 | uint16_t copy_paste_timer; | ||
| 31 | // Helper Functions | ||
| 32 | |||
| 33 | 28 | ||
| 34 | // This block is for all of the gaming macros, as they were all doing | 29 | // This block is for all of the gaming macros, as they were all doing |
| 35 | // the same thing, but with differring text sent. | 30 | // the same thing, but with differring text sent. |
| @@ -109,55 +104,9 @@ void bootmagic_lite(void) { | |||
| 109 | __attribute__ ((weak)) | 104 | __attribute__ ((weak)) |
| 110 | void matrix_init_keymap(void) {} | 105 | void matrix_init_keymap(void) {} |
| 111 | 106 | ||
| 112 | __attribute__ ((weak)) | ||
| 113 | void startup_keymap(void) {} | ||
| 114 | |||
| 115 | __attribute__ ((weak)) | ||
| 116 | void shutdown_keymap(void) {} | ||
| 117 | |||
| 118 | __attribute__ ((weak)) | ||
| 119 | void suspend_power_down_keymap(void) {} | ||
| 120 | |||
| 121 | __attribute__ ((weak)) | ||
| 122 | void suspend_wakeup_init_keymap(void) {} | ||
| 123 | |||
| 124 | __attribute__ ((weak)) | ||
| 125 | void matrix_scan_keymap(void) {} | ||
| 126 | |||
| 127 | __attribute__ ((weak)) | ||
| 128 | bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { | ||
| 129 | return true; | ||
| 130 | } | ||
| 131 | |||
| 132 | __attribute__ ((weak)) | ||
| 133 | bool process_record_secrets(uint16_t keycode, keyrecord_t *record) { | ||
| 134 | return true; | ||
| 135 | } | ||
| 136 | |||
| 137 | |||
| 138 | __attribute__ ((weak)) | ||
| 139 | uint32_t layer_state_set_keymap (uint32_t state) { | ||
| 140 | return state; | ||
| 141 | } | ||
| 142 | |||
| 143 | __attribute__ ((weak)) | ||
| 144 | uint32_t default_layer_state_set_keymap (uint32_t state) { | ||
| 145 | return state; | ||
| 146 | } | ||
| 147 | |||
| 148 | __attribute__ ((weak)) | ||
| 149 | void led_set_keymap(uint8_t usb_led) {} | ||
| 150 | |||
| 151 | __attribute__ ((weak)) | ||
| 152 | void eeconfig_init_keymap(void) {} | ||
| 153 | |||
| 154 | // Call user matrix init, set default RGB colors and then | 107 | // Call user matrix init, set default RGB colors and then |
| 155 | // call the keymap's init function | 108 | // call the keymap's init function |
| 156 | void matrix_init_user(void) { | 109 | void matrix_init_user(void) { |
| 157 | #if !defined(BOOTMAGIC_LITE) && !defined(BOOTMAGIC_ENABLE) | ||
| 158 | bootmagic_lite(); | ||
| 159 | #endif | ||
| 160 | |||
| 161 | userspace_config.raw = eeconfig_read_user(); | 110 | userspace_config.raw = eeconfig_read_user(); |
| 162 | 111 | ||
| 163 | #ifdef BOOTLOADER_CATERINA | 112 | #ifdef BOOTLOADER_CATERINA |
| @@ -178,40 +127,42 @@ void matrix_init_user(void) { | |||
| 178 | #endif //RGBLIGHT_ENABLE | 127 | #endif //RGBLIGHT_ENABLE |
| 179 | } | 128 | } |
| 180 | 129 | ||
| 181 | void startup_user (void) { | 130 | |
| 182 | // #ifdef RGBLIGHT_ENABLE | 131 | __attribute__ ((weak)) |
| 183 | // matrix_init_rgb(); | 132 | void shutdown_keymap(void) {} |
| 184 | // #endif //RGBLIGHT_ENABLE | ||
| 185 | startup_keymap(); | ||
| 186 | } | ||
| 187 | 133 | ||
| 188 | void shutdown_user (void) { | 134 | void shutdown_user (void) { |
| 189 | #ifdef RGBLIGHT_ENABLE | 135 | #ifdef RGBLIGHT_ENABLE |
| 190 | rgblight_enable_noeeprom(); | 136 | rgblight_enable_noeeprom(); |
| 191 | rgblight_mode_noeeprom(1); | 137 | rgblight_mode_noeeprom(1); |
| 192 | rgblight_setrgb_red(); | 138 | rgblight_setrgb_red(); |
| 193 | #endif // RGBLIGHT_ENABLE | 139 | #endif // RGBLIGHT_ENABLE |
| 194 | #ifdef RGB_MATRIX_ENABLE | 140 | #ifdef RGB_MATRIX_ENABLE |
| 195 | rgb_led led; | 141 | uint16_t timer_start = timer_read(); |
| 196 | for (int i = 0; i < DRIVER_LED_TOTAL; i++) { | 142 | rgb_matrix_set_color_all( 0xFF, 0x00, 0x00 ); |
| 197 | led = g_rgb_leds[i]; | 143 | while(timer_elapsed(timer_start) < 250) { wait_ms(1); } |
| 198 | if (led.matrix_co.raw < 0xFF) { | 144 | #endif //RGB_MATRIX_ENABLE |
| 199 | rgb_matrix_set_color( i, 0xFF, 0x00, 0x00 ); | ||
| 200 | } | ||
| 201 | } | ||
| 202 | #endif //RGB_MATRIX_ENABLE | ||
| 203 | shutdown_keymap(); | 145 | shutdown_keymap(); |
| 204 | } | 146 | } |
| 205 | 147 | ||
| 148 | __attribute__ ((weak)) | ||
| 149 | void suspend_power_down_keymap(void) {} | ||
| 150 | |||
| 206 | void suspend_power_down_user(void) { | 151 | void suspend_power_down_user(void) { |
| 207 | suspend_power_down_keymap(); | 152 | suspend_power_down_keymap(); |
| 208 | } | 153 | } |
| 209 | 154 | ||
| 155 | __attribute__ ((weak)) | ||
| 156 | void suspend_wakeup_init_keymap(void) {} | ||
| 157 | |||
| 210 | void suspend_wakeup_init_user(void) { | 158 | void suspend_wakeup_init_user(void) { |
| 211 | suspend_wakeup_init_keymap(); | 159 | suspend_wakeup_init_keymap(); |
| 212 | } | 160 | } |
| 213 | 161 | ||
| 214 | 162 | ||
| 163 | __attribute__ ((weak)) | ||
| 164 | void matrix_scan_keymap(void) {} | ||
| 165 | |||
| 215 | // No global matrix scan code, so just run keymap's matrix | 166 | // No global matrix scan code, so just run keymap's matrix |
| 216 | // scan function | 167 | // scan function |
| 217 | void matrix_scan_user(void) { | 168 | void matrix_scan_user(void) { |
| @@ -233,172 +184,11 @@ void matrix_scan_user(void) { | |||
| 233 | } | 184 | } |
| 234 | 185 | ||
| 235 | 186 | ||
| 236 | 187 | __attribute__ ((weak)) | |
| 237 | 188 | uint32_t layer_state_set_keymap (uint32_t state) { | |
| 238 | // Defines actions tor my global custom keycodes. Defined in drashna.h file | 189 | return state; |
| 239 | // Then runs the _keymap's record handier if not processed here | ||
| 240 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||
| 241 | |||
| 242 | // If console is enabled, it will print the matrix position and status of each key pressed | ||
| 243 | #ifdef KEYLOGGER_ENABLE | ||
| 244 | #if defined(KEYBOARD_ergodox_ez) || defined(KEYBOARD_iris_rev2) | ||
| 245 | xprintf("KL: col: %u, row: %u, pressed: %u\n", record->event.key.row, record->event.key.col, record->event.pressed); | ||
| 246 | #else | ||
| 247 | xprintf("KL: col: %u, row: %u, pressed: %u\n", record->event.key.col, record->event.key.row, record->event.pressed); | ||
| 248 | #endif | ||
| 249 | #endif //KEYLOGGER_ENABLE | ||
| 250 | |||
| 251 | switch (keycode) { | ||
| 252 | case KC_QWERTY: | ||
| 253 | if (record->event.pressed) { | ||
| 254 | set_single_persistent_default_layer(_QWERTY); | ||
| 255 | } | ||
| 256 | break; | ||
| 257 | case KC_COLEMAK: | ||
| 258 | if (record->event.pressed) { | ||
| 259 | set_single_persistent_default_layer(_COLEMAK); | ||
| 260 | } | ||
| 261 | break; | ||
| 262 | case KC_DVORAK: | ||
| 263 | if (record->event.pressed) { | ||
| 264 | set_single_persistent_default_layer(_DVORAK); | ||
| 265 | } | ||
| 266 | break; | ||
| 267 | case KC_WORKMAN: | ||
| 268 | if (record->event.pressed) { | ||
| 269 | set_single_persistent_default_layer(_WORKMAN); | ||
| 270 | } | ||
| 271 | break; | ||
| 272 | |||
| 273 | |||
| 274 | case KC_MAKE: // Compiles the firmware, and adds the flash command based on keyboard bootloader | ||
| 275 | if (!record->event.pressed) { | ||
| 276 | uint8_t temp_mod = get_mods(); | ||
| 277 | uint8_t temp_osm = get_oneshot_mods(); | ||
| 278 | clear_mods(); clear_oneshot_mods(); | ||
| 279 | send_string_with_delay_P(PSTR("make " QMK_KEYBOARD ":" QMK_KEYMAP), 10); | ||
| 280 | if (temp_mod & MODS_SHIFT_MASK || temp_osm & MODS_SHIFT_MASK) { | ||
| 281 | #if defined(__ARM__) | ||
| 282 | send_string_with_delay_P(PSTR(":dfu-util"), 10); | ||
| 283 | #elif defined(BOOTLOADER_DFU) | ||
| 284 | send_string_with_delay_P(PSTR(":dfu"), 10); | ||
| 285 | #elif defined(BOOTLOADER_HALFKAY) | ||
| 286 | send_string_with_delay_P(PSTR(":teensy"), 10); | ||
| 287 | #elif defined(BOOTLOADER_CATERINA) | ||
| 288 | send_string_with_delay_P(PSTR(":avrdude"), 10); | ||
| 289 | #endif // bootloader options | ||
| 290 | } | ||
| 291 | #if defined(KEYBOARD_viterbi) | ||
| 292 | send_string_with_delay_P(PSTR(":dfu"), 10); | ||
| 293 | #endif | ||
| 294 | if (temp_mod & MODS_CTRL_MASK || temp_osm & MODS_CTRL_MASK) { send_string_with_delay_P(PSTR(" -j8 --output-sync"), 10); } | ||
| 295 | send_string_with_delay_P(PSTR(SS_TAP(X_ENTER)), 10); | ||
| 296 | set_mods(temp_mod); | ||
| 297 | } | ||
| 298 | break; | ||
| 299 | |||
| 300 | case VRSN: // Prints firmware version | ||
| 301 | if (record->event.pressed) { | ||
| 302 | send_string_with_delay_P(PSTR(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE), MACRO_TIMER); | ||
| 303 | } | ||
| 304 | break; | ||
| 305 | |||
| 306 | // These are a serious of gaming macros. | ||
| 307 | // Only enables for the viterbi, basically, | ||
| 308 | // to save on firmware space, since it's limited. | ||
| 309 | #ifdef MACROS_ENABLED | ||
| 310 | case KC_OVERWATCH: // Toggle's if we hit "ENTER" or "BACKSPACE" to input macros | ||
| 311 | if (record->event.pressed) { userspace_config.is_overwatch ^= 1; eeconfig_update_user(userspace_config.raw); } | ||
| 312 | #ifdef RGBLIGHT_ENABLE | ||
| 313 | userspace_config.is_overwatch ? rgblight_mode_noeeprom(17) : rgblight_mode_noeeprom(18); | ||
| 314 | #endif //RGBLIGHT_ENABLE | ||
| 315 | break; | ||
| 316 | case KC_SALT: | ||
| 317 | return send_game_macro("Salt, salt, salt...", record, false); | ||
| 318 | case KC_MORESALT: | ||
| 319 | return send_game_macro("Please sir, can I have some more salt?!", record, false); | ||
| 320 | case KC_SALTHARD: | ||
| 321 | return send_game_macro("Your salt only makes me harder, and even more aggressive!", record, false); | ||
| 322 | case KC_GOODGAME: | ||
| 323 | return send_game_macro("Good game, everyone!", record, false); | ||
| 324 | case KC_GLHF: | ||
| 325 | return send_game_macro("Good luck, have fun!!!", record, false); | ||
| 326 | case KC_SYMM: | ||
| 327 | return send_game_macro("Left click to win!", record, false); | ||
| 328 | case KC_JUSTGAME: | ||
| 329 | 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); | ||
| 330 | case KC_TORB: | ||
| 331 | return send_game_macro("That was positively riveting!", record, false); | ||
| 332 | case KC_AIM: | ||
| 333 | send_game_macro("That aim is absolutely amazing. It's almost like you're a machine!", record, true); | ||
| 334 | return send_game_macro("Wait! That aim is TOO good! You're clearly using an aim hack! CHEATER!", record, false); | ||
| 335 | case KC_C9: | ||
| 336 | return send_game_macro("OMG!!! C9!!!", record, false); | ||
| 337 | case KC_GGEZ: | ||
| 338 | return send_game_macro("That was a fantastic game, though it was a bit easy. Try harder next time!", record, false); | ||
| 339 | #endif // MACROS_ENABLED | ||
| 340 | |||
| 341 | |||
| 342 | case KC_DIABLO_CLEAR: // reset all Diablo timers, disabling them | ||
| 343 | #ifdef TAP_DANCE_ENABLE | ||
| 344 | if (record->event.pressed) { | ||
| 345 | uint8_t dtime; | ||
| 346 | for (dtime = 0; dtime < 4; dtime++) { | ||
| 347 | diablo_key_time[dtime] = diablo_times[0]; | ||
| 348 | } | ||
| 349 | } | ||
| 350 | #endif // TAP_DANCE_ENABLE | ||
| 351 | break; | ||
| 352 | |||
| 353 | |||
| 354 | case KC_CCCV: // One key copy/paste | ||
| 355 | if(record->event.pressed){ | ||
| 356 | copy_paste_timer = timer_read(); | ||
| 357 | } else { | ||
| 358 | if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { // Hold, copy | ||
| 359 | register_code(KC_LCTL); | ||
| 360 | tap_code(KC_C); | ||
| 361 | unregister_code(KC_LCTL); | ||
| 362 | } else { // Tap, paste | ||
| 363 | register_code(KC_LCTL); | ||
| 364 | tap_code(KC_V); | ||
| 365 | unregister_code(KC_LCTL); | ||
| 366 | } | ||
| 367 | } | ||
| 368 | break; | ||
| 369 | #ifdef UNICODE_ENABLE | ||
| 370 | case UC_FLIP: // (ノಠ痊ಠ)ノ彡┻━┻ | ||
| 371 | if (record->event.pressed) { | ||
| 372 | send_unicode_hex_string("0028 30CE 0CA0 75CA 0CA0 0029 30CE 5F61 253B 2501 253B"); | ||
| 373 | } | ||
| 374 | break; | ||
| 375 | case UC_TABL: // ┬─┬ノ( º _ ºノ) | ||
| 376 | if (record->event.pressed) { | ||
| 377 | send_unicode_hex_string("252C 2500 252C 30CE 0028 0020 00BA 0020 005F 0020 00BA 30CE 0029"); | ||
| 378 | } | ||
| 379 | break; | ||
| 380 | case UC_SHRG: // ¯\_(ツ)_/¯ | ||
| 381 | if (record->event.pressed) { | ||
| 382 | send_unicode_hex_string("00AF 005C 005F 0028 30C4 0029 005F 002F 00AF"); | ||
| 383 | } | ||
| 384 | break; | ||
| 385 | case UC_DISA: // ಠ_ಠ | ||
| 386 | if (record->event.pressed) { | ||
| 387 | send_unicode_hex_string("0CA0 005F 0CA0"); | ||
| 388 | } | ||
| 389 | break; | ||
| 390 | #endif | ||
| 391 | } | ||
| 392 | return process_record_keymap(keycode, record) && | ||
| 393 | #if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE) | ||
| 394 | process_record_user_rgb(keycode, record) && | ||
| 395 | #endif // RGBLIGHT_ENABLE | ||
| 396 | process_record_secrets(keycode, record); | ||
| 397 | } | 190 | } |
| 398 | 191 | ||
| 399 | |||
| 400 | |||
| 401 | // Runs state check and changes underglow color and animation | ||
| 402 | // on layer change, no matter where the change was initiated | 192 | // on layer change, no matter where the change was initiated |
| 403 | // Then runs keymap's layer change check | 193 | // Then runs keymap's layer change check |
| 404 | uint32_t layer_state_set_user(uint32_t state) { | 194 | uint32_t layer_state_set_user(uint32_t state) { |
| @@ -410,6 +200,12 @@ uint32_t layer_state_set_user(uint32_t state) { | |||
| 410 | } | 200 | } |
| 411 | 201 | ||
| 412 | 202 | ||
| 203 | __attribute__ ((weak)) | ||
| 204 | uint32_t default_layer_state_set_keymap (uint32_t state) { | ||
| 205 | return state; | ||
| 206 | } | ||
| 207 | |||
| 208 | // Runs state check and changes underglow color and animation | ||
| 413 | uint32_t default_layer_state_set_user(uint32_t state) { | 209 | uint32_t default_layer_state_set_user(uint32_t state) { |
| 414 | state = default_layer_state_set_keymap(state); | 210 | state = default_layer_state_set_keymap(state); |
| 415 | #ifdef RGBLIGHT_ENABLE | 211 | #ifdef RGBLIGHT_ENABLE |
| @@ -418,6 +214,8 @@ uint32_t default_layer_state_set_user(uint32_t state) { | |||
| 418 | return state; | 214 | return state; |
| 419 | } | 215 | } |
| 420 | 216 | ||
| 217 | __attribute__ ((weak)) | ||
| 218 | void led_set_keymap(uint8_t usb_led) {} | ||
| 421 | 219 | ||
| 422 | // Any custom LED code goes here. | 220 | // Any custom LED code goes here. |
| 423 | // So far, I only have keyboard specific code, | 221 | // So far, I only have keyboard specific code, |
| @@ -426,6 +224,9 @@ void led_set_user(uint8_t usb_led) { | |||
| 426 | led_set_keymap(usb_led); | 224 | led_set_keymap(usb_led); |
| 427 | } | 225 | } |
| 428 | 226 | ||
| 227 | __attribute__ ((weak)) | ||
| 228 | void eeconfig_init_keymap(void) {} | ||
| 229 | |||
| 429 | void eeconfig_init_user(void) { | 230 | void eeconfig_init_user(void) { |
| 430 | userspace_config.raw = 0; | 231 | userspace_config.raw = 0; |
| 431 | userspace_config.rgb_layer_change = true; | 232 | userspace_config.rgb_layer_change = true; |
diff --git a/users/drashna/drashna.h b/users/drashna/drashna.h index 06e726714..0a3d0f632 100644 --- a/users/drashna/drashna.h +++ b/users/drashna/drashna.h | |||
| @@ -19,9 +19,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
| 19 | #include "quantum.h" | 19 | #include "quantum.h" |
| 20 | #include "version.h" | 20 | #include "version.h" |
| 21 | #include "eeprom.h" | 21 | #include "eeprom.h" |
| 22 | 22 | #include "wrappers.h" | |
| 23 | #ifdef RGB_MATRIX_ENABLE | 23 | #include "process_records.h" |
| 24 | #include "rgb_matrix.h" | 24 | #ifdef TAP_DANCE_ENABLE |
| 25 | #include "tap_dances.h" | ||
| 26 | #endif // TAP_DANCE_ENABLE | ||
| 27 | #if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE) | ||
| 28 | #include "rgb_stuff.h" | ||
| 25 | #endif | 29 | #endif |
| 26 | 30 | ||
| 27 | 31 | ||
| @@ -51,17 +55,19 @@ define modifiers here, since MOD_* doesn't seem to work for these | |||
| 51 | #define MODS_GUI_MASK (MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)) | 55 | #define MODS_GUI_MASK (MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI)) |
| 52 | 56 | ||
| 53 | 57 | ||
| 54 | /* | ||
| 55 | RGB color codes are no longer located here anymore. Instead, you will want to | ||
| 56 | head to https://github.com/qmk/qmk_firmware/blob/master/quantum/rgblight_list.h | ||
| 57 | */ | ||
| 58 | |||
| 59 | #ifdef RGBLIGHT_ENABLE | ||
| 60 | void rgblight_sethsv_default_helper(uint8_t index); | ||
| 61 | #endif // RGBLIGHT_ENABLE | ||
| 62 | 58 | ||
| 63 | bool mod_key_press_timer (uint16_t code, uint16_t mod_code, bool pressed); | 59 | bool mod_key_press_timer (uint16_t code, uint16_t mod_code, bool pressed); |
| 64 | bool mod_key_press (uint16_t code, uint16_t mod_code, bool pressed, uint16_t this_timer); | 60 | bool mod_key_press (uint16_t code, uint16_t mod_code, bool pressed, uint16_t this_timer); |
| 61 | bool send_game_macro(const char *str, keyrecord_t *record, bool override); | ||
| 62 | void matrix_init_keymap(void); | ||
| 63 | void shutdown_keymap(void); | ||
| 64 | void suspend_power_down_keymap(void); | ||
| 65 | void suspend_wakeup_init_keymap(void); | ||
| 66 | void matrix_scan_keymap(void); | ||
| 67 | uint32_t layer_state_set_keymap (uint32_t state); | ||
| 68 | uint32_t default_layer_state_set_keymap (uint32_t state); | ||
| 69 | void led_set_keymap(uint8_t usb_led); | ||
| 70 | void eeconfig_init_keymap(void); | ||
| 65 | 71 | ||
| 66 | typedef union { | 72 | typedef union { |
| 67 | uint32_t raw; | 73 | uint32_t raw; |
| @@ -75,110 +81,6 @@ typedef union { | |||
| 75 | 81 | ||
| 76 | extern userspace_config_t userspace_config; | 82 | extern userspace_config_t userspace_config; |
| 77 | 83 | ||
| 78 | #if defined(KEYMAP_SAFE_RANGE) | ||
| 79 | #define PLACEHOLDER_SAFE_RANGE KEYMAP_SAFE_RANGE | ||
| 80 | #else | ||
| 81 | #define PLACEHOLDER_SAFE_RANGE SAFE_RANGE | ||
| 82 | #endif | ||
| 83 | |||
| 84 | enum userspace_custom_keycodes { | ||
| 85 | VRSN = PLACEHOLDER_SAFE_RANGE, // Prints QMK Firmware and board info | ||
| 86 | KC_QWERTY, // Sets default layer to QWERTY | ||
| 87 | KC_COLEMAK, // Sets default layer to COLEMAK | ||
| 88 | KC_DVORAK, // Sets default layer to DVORAK | ||
| 89 | KC_WORKMAN, // Sets default layer to WORKMAN | ||
| 90 | KC_DIABLO_CLEAR, // Clears all Diablo Timers | ||
| 91 | KC_OVERWATCH, // Toggles game macro input mode (so in OW, it defaults to game chat) | ||
| 92 | KC_SALT, // See drashna.c for details | ||
| 93 | KC_MORESALT, | ||
| 94 | KC_SALTHARD, | ||
| 95 | KC_GOODGAME, | ||
| 96 | KC_SYMM, | ||
| 97 | KC_JUSTGAME, | ||
| 98 | KC_GLHF, | ||
| 99 | KC_TORB, | ||
| 100 | KC_AIM, | ||
| 101 | KC_C9, | ||
| 102 | KC_GGEZ, | ||
| 103 | KC_MAKE, // Run keyboard's customized make command | ||
| 104 | KC_RGB_T, // Toggles RGB Layer Indication mode | ||
| 105 | KC_SECRET_1, // test1 | ||
| 106 | KC_SECRET_2, // test2 | ||
| 107 | KC_SECRET_3, // test3 | ||
| 108 | KC_SECRET_4, // test4 | ||
| 109 | KC_SECRET_5, // test5 | ||
| 110 | KC_CCCV, // Hold to copy, tap to paste | ||
| 111 | KC_NUKE, // NUCLEAR LAUNCH DETECTED!!! | ||
| 112 | UC_FLIP, // (ಠ痊ಠ)┻━┻ | ||
| 113 | UC_TABL, // ┬─┬ノ( º _ ºノ) | ||
| 114 | UC_SHRG, // ¯\_(ツ)_/¯ | ||
| 115 | UC_DISA, // ಠ_ಠ | ||
| 116 | NEW_SAFE_RANGE //use "NEWPLACEHOLDER for keymap specific codes | ||
| 117 | }; | ||
| 118 | |||
| 119 | |||
| 120 | #define LOWER MO(_LOWER) | ||
| 121 | #define RAISE MO(_RAISE) | ||
| 122 | #define ADJUST MO(_ADJUST) | ||
| 123 | #define TG_MODS TG(_MODS) | ||
| 124 | #define TG_GAME TG(_GAMEPAD) | ||
| 125 | |||
| 126 | #define KC_SEC1 KC_SECRET_1 | ||
| 127 | #define KC_SEC2 KC_SECRET_2 | ||
| 128 | #define KC_SEC3 KC_SECRET_3 | ||
| 129 | #define KC_SEC4 KC_SECRET_4 | ||
| 130 | #define KC_SEC5 KC_SECRET_5 | ||
| 131 | |||
| 132 | #define QWERTY KC_QWERTY | ||
| 133 | #define DVORAK KC_DVORAK | ||
| 134 | #define COLEMAK KC_COLEMAK | ||
| 135 | #define WORKMAN KC_WORKMAN | ||
| 136 | |||
| 137 | #define KC_RESET RESET | ||
| 138 | #define KC_RST KC_RESET | ||
| 139 | |||
| 140 | #ifdef SWAP_HANDS_ENABLE | ||
| 141 | #define KC_C1R3 SH_TT | ||
| 142 | #else // SWAP_HANDS_ENABLE | ||
| 143 | #define KC_C1R3 KC_BSPC | ||
| 144 | #endif // SWAP_HANDS_ENABLE | ||
| 145 | |||
| 146 | #define BK_LWER LT(_LOWER, KC_BSPC) | ||
| 147 | #define SP_LWER LT(_LOWER, KC_SPC) | ||
| 148 | #define DL_RAIS LT(_RAISE, KC_DEL) | ||
| 149 | #define ET_RAIS LT(_RAISE, KC_ENTER) | ||
| 150 | |||
| 151 | /* OSM keycodes, to keep things clean and easy to change */ | ||
| 152 | #define KC_MLSF OSM(MOD_LSFT) | ||
| 153 | #define KC_MRSF OSM(MOD_RSFT) | ||
| 154 | |||
| 155 | #define OS_LGUI OSM(MOD_LGUI) | ||
| 156 | #define OS_RGUI OSM(MOD_RGUI) | ||
| 157 | #define OS_LSFT OSM(MOD_LSFT) | ||
| 158 | #define OS_RSFT OSM(MOD_RSFT) | ||
| 159 | #define OS_LCTL OSM(MOD_LCTL) | ||
| 160 | #define OS_RCTL OSM(MOD_RCTL) | ||
| 161 | #define OS_LALT OSM(MOD_LALT) | ||
| 162 | #define OS_RALT OSM(MOD_RALT) | ||
| 163 | #define OS_MEH OSM(MOD_MEH) | ||
| 164 | #define OS_HYPR OSM(MOD_HYPR) | ||
| 165 | |||
| 166 | #define ALT_APP ALT_T(KC_APP) | ||
| 167 | |||
| 168 | #define MG_NKRO MAGIC_TOGGLE_NKRO | ||
| 169 | |||
| 170 | #define UC_IRNY UC(0x2E2E) | ||
| 171 | #define UC_CLUE UC(0x203D) | ||
| 172 | |||
| 173 | #ifdef TAP_DANCE_ENABLE | ||
| 174 | enum { | ||
| 175 | TD_D3_1 = 0, | ||
| 176 | TD_D3_2, | ||
| 177 | TD_D3_3, | ||
| 178 | TD_D3_4 | ||
| 179 | }; | ||
| 180 | #endif // TAP_DANCE_ENABLE | ||
| 181 | |||
| 182 | 84 | ||
| 183 | /* | 85 | /* |
| 184 | Custom Keycodes for Diablo 3 layer | 86 | Custom Keycodes for Diablo 3 layer |
| @@ -196,172 +98,3 @@ We use custom codes here, so we can substitute the right stuff | |||
| 196 | #define KC_D3_3 KC_3 | 98 | #define KC_D3_3 KC_3 |
| 197 | #define KC_D3_4 KC_4 | 99 | #define KC_D3_4 KC_4 |
| 198 | #endif // TAP_DANCE_ENABLE | 100 | #endif // TAP_DANCE_ENABLE |
| 199 | |||
| 200 | /* | ||
| 201 | Since our quirky block definitions are basically a list of comma separated | ||
| 202 | arguments, we need a wrapper in order for these definitions to be | ||
| 203 | expanded before being used as arguments to the LAYOUT_xxx macro. | ||
| 204 | */ | ||
| 205 | #if (!defined(LAYOUT) && defined(KEYMAP)) | ||
| 206 | #define LAYOUT KEYMAP | ||
| 207 | #endif | ||
| 208 | |||
| 209 | #define LAYOUT_ergodox_wrapper(...) LAYOUT_ergodox(__VA_ARGS__) | ||
| 210 | #define LAYOUT_ergodox_pretty_wrapper(...) LAYOUT_ergodox_pretty(__VA_ARGS__) | ||
| 211 | #define KEYMAP_wrapper(...) LAYOUT(__VA_ARGS__) | ||
| 212 | #define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) | ||
| 213 | #define LAYOUT_ortho_4x12_wrapper(...) LAYOUT_ortho_4x12(__VA_ARGS__) | ||
| 214 | |||
| 215 | /* | ||
| 216 | Blocks for each of the four major keyboard layouts | ||
| 217 | Organized so we can quickly adapt and modify all of them | ||
| 218 | at once, rather than for each keyboard, one at a time. | ||
| 219 | And this allows for much cleaner blocks in the keymaps. | ||
| 220 | For instance Tap/Hold for Control on all of the layouts | ||
| 221 | |||
| 222 | NOTE: These are all the same length. If you do a search/replace | ||
| 223 | then you need to add/remove underscores to keep the | ||
| 224 | lengths consistent. | ||
| 225 | */ | ||
| 226 | |||
| 227 | #define _________________QWERTY_L1_________________ KC_Q, KC_W, KC_E, KC_R, KC_T | ||
| 228 | #define _________________QWERTY_L2_________________ KC_A, KC_S, KC_D, KC_F, KC_G | ||
| 229 | #define _________________QWERTY_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B | ||
| 230 | |||
| 231 | #define _________________QWERTY_R1_________________ KC_Y, KC_U, KC_I, KC_O, KC_P | ||
| 232 | #define _________________QWERTY_R2_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN | ||
| 233 | #define _________________QWERTY_R3_________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLASH | ||
| 234 | |||
| 235 | |||
| 236 | #define _________________COLEMAK_L1________________ KC_Q, KC_W, KC_F, KC_P, KC_G | ||
| 237 | #define _________________COLEMAK_L2________________ KC_A, KC_R, KC_S, KC_T, KC_D | ||
| 238 | #define _________________COLEMAK_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_B | ||
| 239 | |||
| 240 | #define _________________COLEMAK_R1________________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN | ||
| 241 | #define _________________COLEMAK_R2________________ KC_H, KC_N, KC_E, KC_I, KC_O | ||
| 242 | #define _________________COLEMAK_R3________________ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLASH | ||
| 243 | |||
| 244 | #define ______________COLEMAK_MOD_DH_L1____________ KC_Q, KC_W, KC_F, KC_P, KC_B | ||
| 245 | #define ______________COLEMAK_MOD_DH_L2____________ KC_A, KC_R, KC_S, KC_T, KC_G | ||
| 246 | #define ______________COLEMAK_MOD_DH_L3____________ KC_Z, KC_X, KC_C, KC_D, KC_V | ||
| 247 | |||
| 248 | #define ______________COLEMAK_MOD_DH_R1____________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN | ||
| 249 | #define ______________COLEMAK_MOD_DH_R2____________ KC_M, KC_N, KC_E, KC_I, KC_O | ||
| 250 | #define ______________COLEMAK_MOD_DH_R3____________ KC_K, KC_H, KC_COMM, KC_DOT, KC_SLASH | ||
| 251 | |||
| 252 | |||
| 253 | #define _________________DVORAK_L1_________________ KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y | ||
| 254 | #define _________________DVORAK_L2_________________ KC_A, KC_O, KC_E, KC_U, KC_I | ||
| 255 | #define _________________DVORAK_L3_________________ KC_SCLN, KC_Q, KC_J, KC_K, KC_X | ||
| 256 | |||
| 257 | #define _________________DVORAK_R1_________________ KC_F, KC_G, KC_C, KC_R, KC_L | ||
| 258 | #define _________________DVORAK_R2_________________ KC_D, KC_H, KC_T, KC_N, KC_S | ||
| 259 | #define _________________DVORAK_R3_________________ KC_B, KC_M, KC_W, KC_V, KC_Z | ||
| 260 | |||
| 261 | |||
| 262 | #define ________________DVORAK_AU_L1_______________ KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y | ||
| 263 | #define ________________DVORAK_AU_L2_______________ KC_O, KC_A, KC_E, KC_I, KC_U | ||
| 264 | #define ________________DVORAK_AU_L3_______________ KC_SCLN, KC_Q, KC_J, KC_K, KC_X | ||
| 265 | |||
| 266 | #define ________________DVORAK_AU_R1_______________ KC_F, KC_G, KC_C, KC_R, KC_L | ||
| 267 | #define ________________DVORAK_AU_R2_______________ KC_D, KC_H, KC_T, KC_N, KC_S | ||
| 268 | #define ________________DVORAK_AU_R3_______________ KC_B, KC_M, KC_W, KC_V, KC_Z | ||
| 269 | |||
| 270 | #define _________________WORKMAN_L1________________ KC_Q, KC_D, KC_R, KC_W, KC_B | ||
| 271 | #define _________________WORKMAN_L2________________ KC_A, KC_S, KC_H, KC_T, KC_G | ||
| 272 | #define _________________WORKMAN_L3________________ KC_Z, KC_X, KC_M, KC_C, KC_V | ||
| 273 | |||
| 274 | #define _________________WORKMAN_R1________________ KC_J, KC_F, KC_U, KC_P, KC_SCLN | ||
| 275 | #define _________________WORKMAN_R2________________ KC_Y, KC_N, KC_E, KC_O, KC_I | ||
| 276 | #define _________________WORKMAN_R3________________ KC_K, KC_L, KC_COMM, KC_DOT, KC_SLASH | ||
| 277 | |||
| 278 | |||
| 279 | #define _________________NORMAN_L1_________________ KC_Q, KC_W, KC_D, KC_F, KC_K | ||
| 280 | #define _________________NORMAN_L2_________________ KC_A, KC_S, KC_E, KC_T, KC_G | ||
| 281 | #define _________________NORMAN_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B | ||
| 282 | |||
| 283 | #define _________________NORMAN_R1_________________ KC_J, KC_U, KC_R, KC_L, KC_SCLN | ||
| 284 | #define _________________NORMAN_R2_________________ KC_Y, KC_N, KC_I, KC_O, KC_U | ||
| 285 | #define _________________NORMAN_R3_________________ KC_P, KC_M, KC_COMM, KC_DOT, KC_SLASH | ||
| 286 | |||
| 287 | |||
| 288 | #define _________________MALTRON_L1________________ KC_Q, KC_P, KC_Y, KC_C, KC_B | ||
| 289 | #define _________________MALTRON_L2________________ KC_A, KC_N, KC_I, KC_S, KC_F | ||
| 290 | #define _________________MALTRON_L3________________ KC_SCLN, KC_SLSH, KC_J KC_G, KC_COMM | ||
| 291 | |||
| 292 | #define _________________MALTRON_R1________________ KC_V, KC_M, KC_U, KC_Z, KC_L | ||
| 293 | #define _________________MALTRON_R2________________ KC_D, KC_T, KC_D, KC_O, KC_R | ||
| 294 | #define _________________MALTRON_R3________________ KC_DOT, KC_W, KC_K, KC_MINS, KC_X | ||
| 295 | |||
| 296 | |||
| 297 | #define _________________EUCALYN_L1________________ KC_SLSH, KC_COMM, KC_DOT, KC_F, KC_Q | ||
| 298 | #define _________________EUCALYN_L2________________ KC_A, KC_O, KC_E, KC_I, KC_U | ||
| 299 | #define _________________EUCALYN_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_W | ||
| 300 | |||
| 301 | #define _________________EUCALYN_R1________________ KC_M, KC_R, KC_D, KC_Y, KC_P | ||
| 302 | #define _________________EUCALYN_R2________________ KC_G, KC_T, KC_K, KC_S, KC_N | ||
| 303 | #define _________________EUCALYN_R3________________ KC_B, KC_H, KC_J, KC_L, KC_SCLN | ||
| 304 | |||
| 305 | |||
| 306 | #define _____________CARPLAX_QFMLWY_L1_____________ KC_Q, KC_F, KC_M, KC_L, KC_W | ||
| 307 | #define _____________CARPLAX_QFMLWY_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R | ||
| 308 | #define _____________CARPLAX_QFMLWY_L3_____________ KC_Z, KC_V, KC_G, KC_C, KC_X | ||
| 309 | |||
| 310 | #define _____________CARPLAX_QFMLWY_R1_____________ KC_Y, KC_U, KC_O, KC_B, KC_J | ||
| 311 | #define _____________CARPLAX_QFMLWY_R2_____________ KC_I, KC_A, KC_E, KC_H, KC_SCLN | ||
| 312 | #define _____________CARPLAX_QFMLWY_R3_____________ KC_P, KC_K, KC_COMM, KC_DOT, KC_SLSH | ||
| 313 | |||
| 314 | |||
| 315 | #define _____________CARPLAX_QGMLWB_L1_____________ KC_Q, KC_G, KC_M, KC_L, KC_W | ||
| 316 | #define _____________CARPLAX_QGMLWB_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R | ||
| 317 | #define _____________CARPLAX_QGMLWB_L3_____________ KC_Z, KC_X, KC_C, KC_F, KC_J | ||
| 318 | |||
| 319 | #define _____________CARPLAX_QGMLWB_R1_____________ KC_B, KC_Y, KC_U, KC_V, KC_SCLN | ||
| 320 | #define _____________CARPLAX_QGMLWB_R2_____________ KC_I, KC_A, KC_E, KC_O, KC_H | ||
| 321 | #define _____________CARPLAX_QGMLWB_R3_____________ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH | ||
| 322 | |||
| 323 | |||
| 324 | #define _____________CARPLAX_QGMLWY_L1_____________ KC_Q, KC_G, KC_M, KC_L, KC_W | ||
| 325 | #define _____________CARPLAX_QGMLWY_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R | ||
| 326 | #define _____________CARPLAX_QGMLWY_L3_____________ KC_Z, KC_X, KC_C, KC_V, KC_J | ||
| 327 | |||
| 328 | #define _____________CARPLAX_QGMLWY_R1_____________ KC_Y, KC_F, KC_U, KC_B, KC_SCLN | ||
| 329 | #define _____________CARPLAX_QGMLWY_R2_____________ KC_I, KC_A, KC_E, KC_O, KC_H | ||
| 330 | #define _____________CARPLAX_QGMLWY_R3_____________ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH | ||
| 331 | |||
| 332 | |||
| 333 | #define ________________NUMBER_LEFT________________ KC_1, KC_2, KC_3, KC_4, KC_5 | ||
| 334 | #define ________________NUMBER_RIGHT_______________ KC_6, KC_7, KC_8, KC_9, KC_0 | ||
| 335 | #define _________________FUNC_LEFT_________________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5 | ||
| 336 | #define _________________FUNC_RIGHT________________ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 | ||
| 337 | |||
| 338 | #define ___________________BLANK___________________ _______, _______, _______, _______, _______ | ||
| 339 | |||
| 340 | |||
| 341 | #define _________________LOWER_L1__________________ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC | ||
| 342 | #define _________________LOWER_L2__________________ _________________FUNC_LEFT_________________ | ||
| 343 | #define _________________LOWER_L3__________________ _________________FUNC_RIGHT________________ | ||
| 344 | |||
| 345 | #define _________________LOWER_R1__________________ KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN | ||
| 346 | #define _________________LOWER_R2__________________ _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR | ||
| 347 | #define _________________LOWER_R3__________________ _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT | ||
| 348 | |||
| 349 | |||
| 350 | |||
| 351 | #define _________________RAISE_L1__________________ ________________NUMBER_LEFT________________ | ||
| 352 | #define _________________RAISE_L2__________________ ___________________BLANK___________________ | ||
| 353 | #define _________________RAISE_L3__________________ ___________________BLANK___________________ | ||
| 354 | |||
| 355 | #define _________________RAISE_R1__________________ ________________NUMBER_RIGHT_______________ | ||
| 356 | #define _________________RAISE_R2__________________ _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC | ||
| 357 | #define _________________RAISE_R3__________________ _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END | ||
| 358 | |||
| 359 | |||
| 360 | |||
| 361 | #define _________________ADJUST_L1_________________ RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG | ||
| 362 | #define _________________ADJUST_L2_________________ MU_TOG , CK_TOGG, AU_ON, AU_OFF, AG_NORM | ||
| 363 | #define _________________ADJUST_L3_________________ RGB_RMOD,RGB_HUD,RGB_SAD, RGB_VAD, KC_RGB_T | ||
| 364 | |||
| 365 | #define _________________ADJUST_R1_________________ KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5 | ||
| 366 | #define _________________ADJUST_R2_________________ AG_SWAP, QWERTY, COLEMAK, DVORAK, WORKMAN | ||
| 367 | #define _________________ADJUST_R3_________________ MG_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT | ||
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 | } | ||
diff --git a/users/drashna/process_records.h b/users/drashna/process_records.h new file mode 100644 index 000000000..620997add --- /dev/null +++ b/users/drashna/process_records.h | |||
| @@ -0,0 +1,101 @@ | |||
| 1 | #pragma once | ||
| 2 | #include "drashna.h" | ||
| 3 | |||
| 4 | #if defined(KEYMAP_SAFE_RANGE) | ||
| 5 | #define PLACEHOLDER_SAFE_RANGE KEYMAP_SAFE_RANGE | ||
| 6 | #else | ||
| 7 | #define PLACEHOLDER_SAFE_RANGE SAFE_RANGE | ||
| 8 | #endif | ||
| 9 | |||
| 10 | enum userspace_custom_keycodes { | ||
| 11 | VRSN = PLACEHOLDER_SAFE_RANGE, // Prints QMK Firmware and board info | ||
| 12 | KC_QWERTY, // Sets default layer to QWERTY | ||
| 13 | KC_COLEMAK, // Sets default layer to COLEMAK | ||
| 14 | KC_DVORAK, // Sets default layer to DVORAK | ||
| 15 | KC_WORKMAN, // Sets default layer to WORKMAN | ||
| 16 | KC_DIABLO_CLEAR, // Clears all Diablo Timers | ||
| 17 | KC_OVERWATCH, // Toggles game macro input mode (so in OW, it defaults to game chat) | ||
| 18 | KC_SALT, // See drashna.c for details | ||
| 19 | KC_MORESALT, | ||
| 20 | KC_SALTHARD, | ||
| 21 | KC_GOODGAME, | ||
| 22 | KC_SYMM, | ||
| 23 | KC_JUSTGAME, | ||
| 24 | KC_GLHF, | ||
| 25 | KC_TORB, | ||
| 26 | KC_AIM, | ||
| 27 | KC_C9, | ||
| 28 | KC_GGEZ, | ||
| 29 | KC_MAKE, // Run keyboard's customized make command | ||
| 30 | KC_RGB_T, // Toggles RGB Layer Indication mode | ||
| 31 | KC_SECRET_1, // test1 | ||
| 32 | KC_SECRET_2, // test2 | ||
| 33 | KC_SECRET_3, // test3 | ||
| 34 | KC_SECRET_4, // test4 | ||
| 35 | KC_SECRET_5, // test5 | ||
| 36 | KC_CCCV, // Hold to copy, tap to paste | ||
| 37 | KC_NUKE, // NUCLEAR LAUNCH DETECTED!!! | ||
| 38 | UC_FLIP, // (ಠ痊ಠ)┻━┻ | ||
| 39 | UC_TABL, // ┬─┬ノ( º _ ºノ) | ||
| 40 | UC_SHRG, // ¯\_(ツ)_/¯ | ||
| 41 | UC_DISA, // ಠ_ಠ | ||
| 42 | NEW_SAFE_RANGE //use "NEWPLACEHOLDER for keymap specific codes | ||
| 43 | }; | ||
| 44 | |||
| 45 | bool process_record_secrets(uint16_t keycode, keyrecord_t *record); | ||
| 46 | bool process_record_keymap(uint16_t keycode, keyrecord_t *record); | ||
| 47 | |||
| 48 | |||
| 49 | |||
| 50 | #define LOWER MO(_LOWER) | ||
| 51 | #define RAISE MO(_RAISE) | ||
| 52 | #define ADJUST MO(_ADJUST) | ||
| 53 | #define TG_MODS TG(_MODS) | ||
| 54 | #define TG_GAME TG(_GAMEPAD) | ||
| 55 | |||
| 56 | #define KC_SEC1 KC_SECRET_1 | ||
| 57 | #define KC_SEC2 KC_SECRET_2 | ||
| 58 | #define KC_SEC3 KC_SECRET_3 | ||
| 59 | #define KC_SEC4 KC_SECRET_4 | ||
| 60 | #define KC_SEC5 KC_SECRET_5 | ||
| 61 | |||
| 62 | #define QWERTY KC_QWERTY | ||
| 63 | #define DVORAK KC_DVORAK | ||
| 64 | #define COLEMAK KC_COLEMAK | ||
| 65 | #define WORKMAN KC_WORKMAN | ||
| 66 | |||
| 67 | #define KC_RESET RESET | ||
| 68 | #define KC_RST KC_RESET | ||
| 69 | |||
| 70 | #ifdef SWAP_HANDS_ENABLE | ||
| 71 | #define KC_C1R3 SH_TT | ||
| 72 | #else // SWAP_HANDS_ENABLE | ||
| 73 | #define KC_C1R3 KC_BSPC | ||
| 74 | #endif // SWAP_HANDS_ENABLE | ||
| 75 | |||
| 76 | #define BK_LWER LT(_LOWER, KC_BSPC) | ||
| 77 | #define SP_LWER LT(_LOWER, KC_SPC) | ||
| 78 | #define DL_RAIS LT(_RAISE, KC_DEL) | ||
| 79 | #define ET_RAIS LT(_RAISE, KC_ENTER) | ||
| 80 | |||
| 81 | /* OSM keycodes, to keep things clean and easy to change */ | ||
| 82 | #define KC_MLSF OSM(MOD_LSFT) | ||
| 83 | #define KC_MRSF OSM(MOD_RSFT) | ||
| 84 | |||
| 85 | #define OS_LGUI OSM(MOD_LGUI) | ||
| 86 | #define OS_RGUI OSM(MOD_RGUI) | ||
| 87 | #define OS_LSFT OSM(MOD_LSFT) | ||
| 88 | #define OS_RSFT OSM(MOD_RSFT) | ||
| 89 | #define OS_LCTL OSM(MOD_LCTL) | ||
| 90 | #define OS_RCTL OSM(MOD_RCTL) | ||
| 91 | #define OS_LALT OSM(MOD_LALT) | ||
| 92 | #define OS_RALT OSM(MOD_RALT) | ||
| 93 | #define OS_MEH OSM(MOD_MEH) | ||
| 94 | #define OS_HYPR OSM(MOD_HYPR) | ||
| 95 | |||
| 96 | #define ALT_APP ALT_T(KC_APP) | ||
| 97 | |||
| 98 | #define MG_NKRO MAGIC_TOGGLE_NKRO | ||
| 99 | |||
| 100 | #define UC_IRNY UC(0x2E2E) | ||
| 101 | #define UC_CLUE UC(0x203D) | ||
diff --git a/users/drashna/rgb_stuff.h b/users/drashna/rgb_stuff.h index 3db068a31..065bda9f9 100644 --- a/users/drashna/rgb_stuff.h +++ b/users/drashna/rgb_stuff.h | |||
| @@ -1,4 +1,8 @@ | |||
| 1 | #pragma once | ||
| 1 | #include "quantum.h" | 2 | #include "quantum.h" |
| 3 | #ifdef RGB_MATRIX_ENABLE | ||
| 4 | #include "rgb_matrix.h" | ||
| 5 | #endif | ||
| 2 | 6 | ||
| 3 | typedef struct { | 7 | typedef struct { |
| 4 | bool enabled; | 8 | bool enabled; |
| @@ -13,3 +17,5 @@ void matrix_init_rgb(void); | |||
| 13 | void matrix_scan_rgb(void); | 17 | void matrix_scan_rgb(void); |
| 14 | uint32_t layer_state_set_rgb(uint32_t state); | 18 | uint32_t layer_state_set_rgb(uint32_t state); |
| 15 | uint32_t default_layer_state_set_rgb(uint32_t state); | 19 | uint32_t default_layer_state_set_rgb(uint32_t state); |
| 20 | void rgblight_sethsv_default_helper(uint8_t index); | ||
| 21 | void rgb_matrix_set_color_all( uint8_t red, uint8_t green, uint8_t blue ); | ||
diff --git a/users/drashna/rules.mk b/users/drashna/rules.mk index 49b1ddae9..5f243b007 100644 --- a/users/drashna/rules.mk +++ b/users/drashna/rules.mk | |||
| @@ -1,4 +1,5 @@ | |||
| 1 | SRC += drashna.c | 1 | SRC += drashna.c \ |
| 2 | process_records.c | ||
| 2 | 3 | ||
| 3 | ifneq ("$(wildcard $(USER_PATH)/secrets.c)","") | 4 | ifneq ("$(wildcard $(USER_PATH)/secrets.c)","") |
| 4 | SRC += secrets.c | 5 | SRC += secrets.c |
diff --git a/users/drashna/tap_dances.c b/users/drashna/tap_dances.c index 346675853..cbb3cf54e 100644 --- a/users/drashna/tap_dances.c +++ b/users/drashna/tap_dances.c | |||
| @@ -1,4 +1,3 @@ | |||
| 1 | #include "drashna.h" | ||
| 2 | #include "tap_dances.h" | 1 | #include "tap_dances.h" |
| 3 | 2 | ||
| 4 | 3 | ||
diff --git a/users/drashna/tap_dances.h b/users/drashna/tap_dances.h index 8935753f6..41d2bacb7 100644 --- a/users/drashna/tap_dances.h +++ b/users/drashna/tap_dances.h | |||
| @@ -1,3 +1,6 @@ | |||
| 1 | #pragma once | ||
| 2 | #include "drashna.h" | ||
| 3 | |||
| 1 | //define diablo macro timer variables | 4 | //define diablo macro timer variables |
| 2 | extern uint16_t diablo_timer[4]; | 5 | extern uint16_t diablo_timer[4]; |
| 3 | extern uint8_t diablo_times[]; | 6 | extern uint8_t diablo_times[]; |
| @@ -5,3 +8,12 @@ extern uint8_t diablo_key_time[4]; | |||
| 5 | 8 | ||
| 6 | 9 | ||
| 7 | void run_diablo_macro_check(void); | 10 | void run_diablo_macro_check(void); |
| 11 | |||
| 12 | #ifdef TAP_DANCE_ENABLE | ||
| 13 | enum { | ||
| 14 | TD_D3_1 = 0, | ||
| 15 | TD_D3_2, | ||
| 16 | TD_D3_3, | ||
| 17 | TD_D3_4 | ||
| 18 | }; | ||
| 19 | #endif // TAP_DANCE_ENABLE | ||
diff --git a/users/drashna/wrappers.h b/users/drashna/wrappers.h new file mode 100644 index 000000000..b45359f67 --- /dev/null +++ b/users/drashna/wrappers.h | |||
| @@ -0,0 +1,170 @@ | |||
| 1 | #pragma once | ||
| 2 | #include "drashna.h" | ||
| 3 | /* | ||
| 4 | Since our quirky block definitions are basically a list of comma separated | ||
| 5 | arguments, we need a wrapper in order for these definitions to be | ||
| 6 | expanded before being used as arguments to the LAYOUT_xxx macro. | ||
| 7 | */ | ||
| 8 | #if (!defined(LAYOUT) && defined(KEYMAP)) | ||
| 9 | #define LAYOUT KEYMAP | ||
| 10 | #endif | ||
| 11 | |||
| 12 | #define LAYOUT_ergodox_wrapper(...) LAYOUT_ergodox(__VA_ARGS__) | ||
| 13 | #define LAYOUT_ergodox_pretty_wrapper(...) LAYOUT_ergodox_pretty(__VA_ARGS__) | ||
| 14 | #define KEYMAP_wrapper(...) LAYOUT(__VA_ARGS__) | ||
| 15 | #define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) | ||
| 16 | #define LAYOUT_ortho_4x12_wrapper(...) LAYOUT_ortho_4x12(__VA_ARGS__) | ||
| 17 | |||
| 18 | /* | ||
| 19 | Blocks for each of the four major keyboard layouts | ||
| 20 | Organized so we can quickly adapt and modify all of them | ||
| 21 | at once, rather than for each keyboard, one at a time. | ||
| 22 | And this allows for much cleaner blocks in the keymaps. | ||
| 23 | For instance Tap/Hold for Control on all of the layouts | ||
| 24 | |||
| 25 | NOTE: These are all the same length. If you do a search/replace | ||
| 26 | then you need to add/remove underscores to keep the | ||
| 27 | lengths consistent. | ||
| 28 | */ | ||
| 29 | |||
| 30 | #define _________________QWERTY_L1_________________ KC_Q, KC_W, KC_E, KC_R, KC_T | ||
| 31 | #define _________________QWERTY_L2_________________ KC_A, KC_S, KC_D, KC_F, KC_G | ||
| 32 | #define _________________QWERTY_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B | ||
| 33 | |||
| 34 | #define _________________QWERTY_R1_________________ KC_Y, KC_U, KC_I, KC_O, KC_P | ||
| 35 | #define _________________QWERTY_R2_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN | ||
| 36 | #define _________________QWERTY_R3_________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLASH | ||
| 37 | |||
| 38 | |||
| 39 | #define _________________COLEMAK_L1________________ KC_Q, KC_W, KC_F, KC_P, KC_G | ||
| 40 | #define _________________COLEMAK_L2________________ KC_A, KC_R, KC_S, KC_T, KC_D | ||
| 41 | #define _________________COLEMAK_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_B | ||
| 42 | |||
| 43 | #define _________________COLEMAK_R1________________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN | ||
| 44 | #define _________________COLEMAK_R2________________ KC_H, KC_N, KC_E, KC_I, KC_O | ||
| 45 | #define _________________COLEMAK_R3________________ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLASH | ||
| 46 | |||
| 47 | #define ______________COLEMAK_MOD_DH_L1____________ KC_Q, KC_W, KC_F, KC_P, KC_B | ||
| 48 | #define ______________COLEMAK_MOD_DH_L2____________ KC_A, KC_R, KC_S, KC_T, KC_G | ||
| 49 | #define ______________COLEMAK_MOD_DH_L3____________ KC_Z, KC_X, KC_C, KC_D, KC_V | ||
| 50 | |||
| 51 | #define ______________COLEMAK_MOD_DH_R1____________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN | ||
| 52 | #define ______________COLEMAK_MOD_DH_R2____________ KC_M, KC_N, KC_E, KC_I, KC_O | ||
| 53 | #define ______________COLEMAK_MOD_DH_R3____________ KC_K, KC_H, KC_COMM, KC_DOT, KC_SLASH | ||
| 54 | |||
| 55 | |||
| 56 | #define _________________DVORAK_L1_________________ KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y | ||
| 57 | #define _________________DVORAK_L2_________________ KC_A, KC_O, KC_E, KC_U, KC_I | ||
| 58 | #define _________________DVORAK_L3_________________ KC_SCLN, KC_Q, KC_J, KC_K, KC_X | ||
| 59 | |||
| 60 | #define _________________DVORAK_R1_________________ KC_F, KC_G, KC_C, KC_R, KC_L | ||
| 61 | #define _________________DVORAK_R2_________________ KC_D, KC_H, KC_T, KC_N, KC_S | ||
| 62 | #define _________________DVORAK_R3_________________ KC_B, KC_M, KC_W, KC_V, KC_Z | ||
| 63 | |||
| 64 | |||
| 65 | #define ________________DVORAK_AU_L1_______________ KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y | ||
| 66 | #define ________________DVORAK_AU_L2_______________ KC_O, KC_A, KC_E, KC_I, KC_U | ||
| 67 | #define ________________DVORAK_AU_L3_______________ KC_SCLN, KC_Q, KC_J, KC_K, KC_X | ||
| 68 | |||
| 69 | #define ________________DVORAK_AU_R1_______________ KC_F, KC_G, KC_C, KC_R, KC_L | ||
| 70 | #define ________________DVORAK_AU_R2_______________ KC_D, KC_H, KC_T, KC_N, KC_S | ||
| 71 | #define ________________DVORAK_AU_R3_______________ KC_B, KC_M, KC_W, KC_V, KC_Z | ||
| 72 | |||
| 73 | #define _________________WORKMAN_L1________________ KC_Q, KC_D, KC_R, KC_W, KC_B | ||
| 74 | #define _________________WORKMAN_L2________________ KC_A, KC_S, KC_H, KC_T, KC_G | ||
| 75 | #define _________________WORKMAN_L3________________ KC_Z, KC_X, KC_M, KC_C, KC_V | ||
| 76 | |||
| 77 | #define _________________WORKMAN_R1________________ KC_J, KC_F, KC_U, KC_P, KC_SCLN | ||
| 78 | #define _________________WORKMAN_R2________________ KC_Y, KC_N, KC_E, KC_O, KC_I | ||
| 79 | #define _________________WORKMAN_R3________________ KC_K, KC_L, KC_COMM, KC_DOT, KC_SLASH | ||
| 80 | |||
| 81 | |||
| 82 | #define _________________NORMAN_L1_________________ KC_Q, KC_W, KC_D, KC_F, KC_K | ||
| 83 | #define _________________NORMAN_L2_________________ KC_A, KC_S, KC_E, KC_T, KC_G | ||
| 84 | #define _________________NORMAN_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B | ||
| 85 | |||
| 86 | #define _________________NORMAN_R1_________________ KC_J, KC_U, KC_R, KC_L, KC_SCLN | ||
| 87 | #define _________________NORMAN_R2_________________ KC_Y, KC_N, KC_I, KC_O, KC_U | ||
| 88 | #define _________________NORMAN_R3_________________ KC_P, KC_M, KC_COMM, KC_DOT, KC_SLASH | ||
| 89 | |||
| 90 | |||
| 91 | #define _________________MALTRON_L1________________ KC_Q, KC_P, KC_Y, KC_C, KC_B | ||
| 92 | #define _________________MALTRON_L2________________ KC_A, KC_N, KC_I, KC_S, KC_F | ||
| 93 | #define _________________MALTRON_L3________________ KC_SCLN, KC_SLSH, KC_J KC_G, KC_COMM | ||
| 94 | |||
| 95 | #define _________________MALTRON_R1________________ KC_V, KC_M, KC_U, KC_Z, KC_L | ||
| 96 | #define _________________MALTRON_R2________________ KC_D, KC_T, KC_D, KC_O, KC_R | ||
| 97 | #define _________________MALTRON_R3________________ KC_DOT, KC_W, KC_K, KC_MINS, KC_X | ||
| 98 | |||
| 99 | |||
| 100 | #define _________________EUCALYN_L1________________ KC_SLSH, KC_COMM, KC_DOT, KC_F, KC_Q | ||
| 101 | #define _________________EUCALYN_L2________________ KC_A, KC_O, KC_E, KC_I, KC_U | ||
| 102 | #define _________________EUCALYN_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_W | ||
| 103 | |||
| 104 | #define _________________EUCALYN_R1________________ KC_M, KC_R, KC_D, KC_Y, KC_P | ||
| 105 | #define _________________EUCALYN_R2________________ KC_G, KC_T, KC_K, KC_S, KC_N | ||
| 106 | #define _________________EUCALYN_R3________________ KC_B, KC_H, KC_J, KC_L, KC_SCLN | ||
| 107 | |||
| 108 | |||
| 109 | #define _____________CARPLAX_QFMLWY_L1_____________ KC_Q, KC_F, KC_M, KC_L, KC_W | ||
| 110 | #define _____________CARPLAX_QFMLWY_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R | ||
| 111 | #define _____________CARPLAX_QFMLWY_L3_____________ KC_Z, KC_V, KC_G, KC_C, KC_X | ||
| 112 | |||
| 113 | #define _____________CARPLAX_QFMLWY_R1_____________ KC_Y, KC_U, KC_O, KC_B, KC_J | ||
| 114 | #define _____________CARPLAX_QFMLWY_R2_____________ KC_I, KC_A, KC_E, KC_H, KC_SCLN | ||
| 115 | #define _____________CARPLAX_QFMLWY_R3_____________ KC_P, KC_K, KC_COMM, KC_DOT, KC_SLSH | ||
| 116 | |||
| 117 | |||
| 118 | #define _____________CARPLAX_QGMLWB_L1_____________ KC_Q, KC_G, KC_M, KC_L, KC_W | ||
| 119 | #define _____________CARPLAX_QGMLWB_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R | ||
| 120 | #define _____________CARPLAX_QGMLWB_L3_____________ KC_Z, KC_X, KC_C, KC_F, KC_J | ||
| 121 | |||
| 122 | #define _____________CARPLAX_QGMLWB_R1_____________ KC_B, KC_Y, KC_U, KC_V, KC_SCLN | ||
| 123 | #define _____________CARPLAX_QGMLWB_R2_____________ KC_I, KC_A, KC_E, KC_O, KC_H | ||
| 124 | #define _____________CARPLAX_QGMLWB_R3_____________ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH | ||
| 125 | |||
| 126 | |||
| 127 | #define _____________CARPLAX_QGMLWY_L1_____________ KC_Q, KC_G, KC_M, KC_L, KC_W | ||
| 128 | #define _____________CARPLAX_QGMLWY_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R | ||
| 129 | #define _____________CARPLAX_QGMLWY_L3_____________ KC_Z, KC_X, KC_C, KC_V, KC_J | ||
| 130 | |||
| 131 | #define _____________CARPLAX_QGMLWY_R1_____________ KC_Y, KC_F, KC_U, KC_B, KC_SCLN | ||
| 132 | #define _____________CARPLAX_QGMLWY_R2_____________ KC_I, KC_A, KC_E, KC_O, KC_H | ||
| 133 | #define _____________CARPLAX_QGMLWY_R3_____________ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH | ||
| 134 | |||
| 135 | |||
| 136 | #define ________________NUMBER_LEFT________________ KC_1, KC_2, KC_3, KC_4, KC_5 | ||
| 137 | #define ________________NUMBER_RIGHT_______________ KC_6, KC_7, KC_8, KC_9, KC_0 | ||
| 138 | #define _________________FUNC_LEFT_________________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5 | ||
| 139 | #define _________________FUNC_RIGHT________________ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 | ||
| 140 | |||
| 141 | #define ___________________BLANK___________________ _______, _______, _______, _______, _______ | ||
| 142 | |||
| 143 | |||
| 144 | #define _________________LOWER_L1__________________ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC | ||
| 145 | #define _________________LOWER_L2__________________ _________________FUNC_LEFT_________________ | ||
| 146 | #define _________________LOWER_L3__________________ _________________FUNC_RIGHT________________ | ||
| 147 | |||
| 148 | #define _________________LOWER_R1__________________ KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN | ||
| 149 | #define _________________LOWER_R2__________________ _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR | ||
| 150 | #define _________________LOWER_R3__________________ _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT | ||
| 151 | |||
| 152 | |||
| 153 | |||
| 154 | #define _________________RAISE_L1__________________ ________________NUMBER_LEFT________________ | ||
| 155 | #define _________________RAISE_L2__________________ ___________________BLANK___________________ | ||
| 156 | #define _________________RAISE_L3__________________ ___________________BLANK___________________ | ||
| 157 | |||
| 158 | #define _________________RAISE_R1__________________ ________________NUMBER_RIGHT_______________ | ||
| 159 | #define _________________RAISE_R2__________________ _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC | ||
| 160 | #define _________________RAISE_R3__________________ _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END | ||
| 161 | |||
| 162 | |||
| 163 | |||
| 164 | #define _________________ADJUST_L1_________________ RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG | ||
| 165 | #define _________________ADJUST_L2_________________ MU_TOG , CK_TOGG, AU_ON, AU_OFF, AG_NORM | ||
| 166 | #define _________________ADJUST_L3_________________ RGB_RMOD,RGB_HUD,RGB_SAD, RGB_VAD, KC_RGB_T | ||
| 167 | |||
| 168 | #define _________________ADJUST_R1_________________ KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5 | ||
| 169 | #define _________________ADJUST_R2_________________ AG_SWAP, QWERTY, COLEMAK, DVORAK, WORKMAN | ||
| 170 | #define _________________ADJUST_R3_________________ MG_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT | ||
