diff options
| -rw-r--r-- | keyboards/ergodox_ez/keymaps/drashna-custom/config.h | 2 | ||||
| -rw-r--r-- | keyboards/ergodox_ez/keymaps/drashna-custom/keymap.c | 186 | ||||
| -rw-r--r-- | keyboards/ergodox_ez/keymaps/drashna-custom/rules.mk | 7 | ||||
| -rw-r--r-- | keyboards/ergodox_ez/keymaps/drashna/keymap.c | 87 | ||||
| -rw-r--r-- | keyboards/handwired/woodpad/config.h | 1 | ||||
| -rw-r--r-- | keyboards/handwired/woodpad/keymaps/drashna/config.h | 2 | ||||
| -rw-r--r-- | keyboards/handwired/woodpad/keymaps/drashna/keymap.c | 131 | ||||
| -rw-r--r-- | keyboards/handwired/woodpad/keymaps/drashna/rules.mk | 4 | ||||
| -rw-r--r-- | keyboards/orthodox/keymaps/drashna/config.h | 11 | ||||
| -rw-r--r-- | keyboards/orthodox/keymaps/drashna/keymap.c | 236 | ||||
| -rw-r--r-- | keyboards/orthodox/keymaps/drashna/rules.mk | 9 | ||||
| -rw-r--r-- | keyboards/viterbi/keymaps/drashna/config.h | 4 | ||||
| -rw-r--r-- | keyboards/viterbi/keymaps/drashna/keymap.c | 265 | ||||
| -rw-r--r-- | keyboards/viterbi/keymaps/drashna/rules.mk | 3 |
14 files changed, 490 insertions, 458 deletions
diff --git a/keyboards/ergodox_ez/keymaps/drashna-custom/config.h b/keyboards/ergodox_ez/keymaps/drashna-custom/config.h index 5fef1e0d8..c1ebf174a 100644 --- a/keyboards/ergodox_ez/keymaps/drashna-custom/config.h +++ b/keyboards/ergodox_ez/keymaps/drashna-custom/config.h | |||
| @@ -13,6 +13,4 @@ | |||
| 13 | #define RGBLIGHT_EFFECT_BREATHE_CENTER 1 | 13 | #define RGBLIGHT_EFFECT_BREATHE_CENTER 1 |
| 14 | #endif // RGBLIGHT_ENABLE | 14 | #endif // RGBLIGHT_ENABLE |
| 15 | 15 | ||
| 16 | #define FORCE_NKRO | ||
| 17 | |||
| 18 | #endif \ No newline at end of file | 16 | #endif \ No newline at end of file |
diff --git a/keyboards/ergodox_ez/keymaps/drashna-custom/keymap.c b/keyboards/ergodox_ez/keymaps/drashna-custom/keymap.c index 5440c3346..bdc4eed48 100644 --- a/keyboards/ergodox_ez/keymaps/drashna-custom/keymap.c +++ b/keyboards/ergodox_ez/keymaps/drashna-custom/keymap.c | |||
| @@ -48,17 +48,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
| 48 | //define layer change stuff for underglow indicator | 48 | //define layer change stuff for underglow indicator |
| 49 | bool skip_leds = false; | 49 | bool skip_leds = false; |
| 50 | 50 | ||
| 51 | #define rgblight_set_blue rgblight_sethsv (0xFF, 0xFF, 0xFF); | 51 | #ifdef RGBLIGHT_ENABLE |
| 52 | #define rgblight_set_red rgblight_sethsv(0x00, 0xFF, 0xFF); | 52 | #define rgblight_set_blue rgblight_sethsv (0xFF, 0xFF, 0xFF); |
| 53 | #define rgblight_set_green rgblight_sethsv (0x78, 0xFF, 0xFF); | 53 | #define rgblight_set_red rgblight_sethsv (0x00, 0xFF, 0xFF); |
| 54 | #define rgblight_set_orange rgblight_sethsv (0x1E, 0xFF, 0xFF); | 54 | #define rgblight_set_green rgblight_sethsv (0x78, 0xFF, 0xFF); |
| 55 | #define rgblight_set_teal rgblight_sethsv (0xC3, 0xFF, 0xFF); | 55 | #define rgblight_set_orange rgblight_sethsv (0x1E, 0xFF, 0xFF); |
| 56 | #define rgblight_set_magenta rgblight_sethsv (0x12C, 0xFF, 0xFF); | 56 | #define rgblight_set_teal rgblight_sethsv (0xC3, 0xFF, 0xFF); |
| 57 | #define rgblight_set_urine rgblight_sethsv (0x3C, 0xFF, 0xFF); | 57 | #define rgblight_set_magenta rgblight_sethsv (0x12C, 0xFF, 0xFF); |
| 58 | #define rgblight_set_purple rgblight_sethsv (0x10E, 0xFF, 0xFF); | 58 | #define rgblight_set_yellow rgblight_sethsv (0x3C, 0xFF, 0xFF); |
| 59 | //This is both for underglow, and Diablo 3 macros | 59 | #define rgblight_set_purple rgblight_sethsv (0x10E, 0xFF, 0xFF); |
| 60 | 60 | #endif | |
| 61 | static uint8_t current_layer = 0; | ||
| 62 | 61 | ||
| 63 | //define diablo macro timer variables | 62 | //define diablo macro timer variables |
| 64 | static uint16_t diablo_timer[4]; | 63 | static uint16_t diablo_timer[4]; |
| @@ -136,11 +135,13 @@ void dance_flsh_each(qk_tap_dance_state_t *state, void *user_data) { | |||
| 136 | // and set the underglow to red, because red == bad | 135 | // and set the underglow to red, because red == bad |
| 137 | void dance_flsh_finished(qk_tap_dance_state_t *state, void *user_data) { | 136 | void dance_flsh_finished(qk_tap_dance_state_t *state, void *user_data) { |
| 138 | if (state->count >= 4) { | 137 | if (state->count >= 4) { |
| 138 | #ifdef RGBLIGHT_ENABLE | ||
| 139 | rgblight_enable(); | 139 | rgblight_enable(); |
| 140 | rgblight_mode(1); | 140 | rgblight_mode(1); |
| 141 | rgblight_setrgb(0xff,0x00,0x00); | 141 | rgblight_setrgb(0xff,0x00,0x00); |
| 142 | reset_keyboard(); | 142 | #endif |
| 143 | reset_tap_dance(state); | 143 | reset_tap_dance(state); |
| 144 | reset_keyboard(); | ||
| 144 | } | 145 | } |
| 145 | } | 146 | } |
| 146 | 147 | ||
| @@ -229,7 +230,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 229 | KC_LSHIFT, LCTL_T(KC_Z),KC_X, KC_C, KC_V, KC_B, TG(OVERWATCH), | 230 | KC_LSHIFT, LCTL_T(KC_Z),KC_X, KC_C, KC_V, KC_B, TG(OVERWATCH), |
| 230 | LT(SYMB,KC_GRAVE),KC_QUOTE, KC_LGUI, KC_LBRACKET,KC_RBRACKET, | 231 | LT(SYMB,KC_GRAVE),KC_QUOTE, KC_LGUI, KC_LBRACKET,KC_RBRACKET, |
| 231 | 232 | ||
| 232 | ALT_T(KC_APPLICATION), KC_LEAD, | 233 | ALT_T(KC_APPLICATION), KC_LGUI, |
| 233 | KC_HOME, | 234 | KC_HOME, |
| 234 | KC_SPACE, KC_BSPACE, KC_END, | 235 | KC_SPACE, KC_BSPACE, KC_END, |
| 235 | 236 | ||
| @@ -237,8 +238,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 237 | TG(DIABLO), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLASH, | 238 | TG(DIABLO), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLASH, |
| 238 | KC_H, KC_J, KC_K, KC_L, KC_SCOLON, GUI_T(KC_QUOTE), | 239 | KC_H, KC_J, KC_K, KC_L, KC_SCOLON, GUI_T(KC_QUOTE), |
| 239 | TG(OVERWATCH), KC_N, KC_M, KC_COMMA, KC_DOT, RCTL_T(KC_SLASH),KC_RSHIFT, | 240 | TG(OVERWATCH), KC_N, KC_M, KC_COMMA, KC_DOT, RCTL_T(KC_SLASH),KC_RSHIFT, |
| 240 | KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_FN1, | 241 | KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, TT(SYMB), |
| 241 | KC_LALT, CTL_T(KC_ESCAPE), | 242 | KC_LEAD, CTL_T(KC_ESCAPE), |
| 242 | KC_PGUP, | 243 | KC_PGUP, |
| 243 | KC_PGDOWN, KC_DELETE, KC_ENTER | 244 | KC_PGDOWN, KC_DELETE, KC_ENTER |
| 244 | ), | 245 | ), |
| @@ -280,7 +281,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 280 | TG(DIABLO), KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS, | 281 | TG(DIABLO), KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS, |
| 281 | KC_H, KC_N, KC_E, KC_I, KC_O, GUI_T(KC_QUOTE), | 282 | KC_H, KC_N, KC_E, KC_I, KC_O, GUI_T(KC_QUOTE), |
| 282 | TG(OVERWATCH),KC_K, KC_M, KC_COMM,KC_DOT, RCTL_T(KC_SLASH), KC_RSHIFT, | 283 | TG(OVERWATCH),KC_K, KC_M, KC_COMM,KC_DOT, RCTL_T(KC_SLASH), KC_RSHIFT, |
| 283 | KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_FN1, | 284 | KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, TT(SYMB), |
| 284 | KC_LALT, CTL_T(KC_ESC), | 285 | KC_LALT, CTL_T(KC_ESC), |
| 285 | KC_PGUP, | 286 | KC_PGUP, |
| 286 | KC_PGDN,KC_DELETE, KC_ENT | 287 | KC_PGDN,KC_DELETE, KC_ENT |
| @@ -323,7 +324,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 323 | TG(DIABLO), KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, | 324 | TG(DIABLO), KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, |
| 324 | KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, | 325 | KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, |
| 325 | TG(OVERWATCH),KC_B, KC_M, KC_W, KC_V, RCTL_T(KC_Z), KC_RSHIFT, | 326 | TG(OVERWATCH),KC_B, KC_M, KC_W, KC_V, RCTL_T(KC_Z), KC_RSHIFT, |
| 326 | KC_LEFT,KC_DOWN,KC_UP, KC_RIGHT, KC_FN1, | 327 | KC_LEFT,KC_DOWN,KC_UP, KC_RIGHT, TT(SYMB), |
| 327 | KC_LALT, CTL_T(KC_ESC), | 328 | KC_LALT, CTL_T(KC_ESC), |
| 328 | KC_PGUP, | 329 | KC_PGUP, |
| 329 | KC_PGDN,KC_DELETE, KC_ENT | 330 | KC_PGDN,KC_DELETE, KC_ENT |
| @@ -366,7 +367,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 366 | TG(DIABLO), KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_BSLS, | 367 | TG(DIABLO), KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_BSLS, |
| 367 | KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOTE, | 368 | KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOTE, |
| 368 | TG(OVERWATCH),KC_K, KC_L, KC_COMM,KC_DOT, RCTL_T(KC_SLASH), KC_RSHIFT, | 369 | TG(OVERWATCH),KC_K, KC_L, KC_COMM,KC_DOT, RCTL_T(KC_SLASH), KC_RSHIFT, |
| 369 | KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_FN1, | 370 | KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, TT(SYMB), |
| 370 | KC_LALT, CTL_T(KC_ESC), | 371 | KC_LALT, CTL_T(KC_ESC), |
| 371 | KC_PGUP, | 372 | KC_PGUP, |
| 372 | KC_PGDN,KC_DELETE, KC_ENT | 373 | KC_PGDN,KC_DELETE, KC_ENT |
| @@ -398,7 +399,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 398 | VRSN, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_DVORAK, | 399 | VRSN, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_DVORAK, |
| 399 | KC_MAKEQMK, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRAVE, | 400 | KC_MAKEQMK, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRAVE, |
| 400 | TD(TD_FLSH), KC_PERC, KC_CIRC, KC_LBRACKET,KC_RBRACKET,KC_TILD, KC_COLEMAK, | 401 | TD(TD_FLSH), KC_PERC, KC_CIRC, KC_LBRACKET,KC_RBRACKET,KC_TILD, KC_COLEMAK, |
| 401 | KC_NO, KC_AMPR, KC_ASTR, KC_COLN, KC_SCOLON, | 402 | KC_TRNS, KC_AMPR, KC_ASTR, KC_COLN, KC_SCOLON, |
| 402 | KC_TRNS, KC_TRNS, | 403 | KC_TRNS, KC_TRNS, |
| 403 | KC_TRNS, | 404 | KC_TRNS, |
| 404 | KC_TRNS, KC_TRNS, KC_TRNS, | 405 | KC_TRNS, KC_TRNS, KC_TRNS, |
| @@ -540,16 +541,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 540 | 541 | ||
| 541 | }; | 542 | }; |
| 542 | 543 | ||
| 543 | const uint16_t PROGMEM fn_actions[] = { | ||
| 544 | [1] = ACTION_LAYER_TAP_TOGGLE(SYMB), | ||
| 545 | // FN1 - Momentary Layer 1 (Symbols) | ||
| 546 | }; | ||
| 547 | |||
| 548 | void action_function(keyrecord_t *event, uint8_t id, uint8_t opt) | ||
| 549 | { | ||
| 550 | |||
| 551 | } | ||
| 552 | |||
| 553 | 544 | ||
| 554 | void persistent_default_layer_set(uint16_t default_layer) { | 545 | void persistent_default_layer_set(uint16_t default_layer) { |
| 555 | eeconfig_update_default_layer(default_layer); | 546 | eeconfig_update_default_layer(default_layer); |
| @@ -558,6 +549,9 @@ void persistent_default_layer_set(uint16_t default_layer) { | |||
| 558 | 549 | ||
| 559 | 550 | ||
| 560 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | 551 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { |
| 552 | #ifdef CONSOLE_ENABLE | ||
| 553 | xprintf("KL: row: %u, column: %u, pressed: %u\n", record->event.key.col, record->event.key.row, record->event.pressed); | ||
| 554 | #endif | ||
| 561 | switch (keycode) { | 555 | switch (keycode) { |
| 562 | // dynamically generate these. | 556 | // dynamically generate these. |
| 563 | case EPRM: | 557 | case EPRM: |
| @@ -574,7 +568,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
| 574 | break; | 568 | break; |
| 575 | case RGB_SLD: | 569 | case RGB_SLD: |
| 576 | if (record->event.pressed) { | 570 | if (record->event.pressed) { |
| 571 | #ifdef RGBLIGHT_ENABLE | ||
| 577 | rgblight_mode(1); | 572 | rgblight_mode(1); |
| 573 | #endif | ||
| 578 | } | 574 | } |
| 579 | return false; | 575 | return false; |
| 580 | break; | 576 | break; |
| @@ -668,8 +664,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
| 668 | return false; | 664 | return false; |
| 669 | break; | 665 | break; |
| 670 | case KC_MAKEQMK: | 666 | case KC_MAKEQMK: |
| 671 | if (record->event.pressed) { | 667 | if (!record->event.pressed) { |
| 672 | SEND_STRING("make ergodox_ez:drashna-custom:teensy"SS_TAP(X_ENTER)); | 668 | SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP ":teensy"SS_TAP(X_ENTER)); |
| 673 | } | 669 | } |
| 674 | return false; | 670 | return false; |
| 675 | break; | 671 | break; |
| @@ -678,10 +674,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
| 678 | return true; | 674 | return true; |
| 679 | } | 675 | } |
| 680 | 676 | ||
| 677 | #ifdef TAP_DANCE_ENABLE | ||
| 681 | 678 | ||
| 682 | // Sends the key press to system, but only if on the Diablo layer | 679 | // Sends the key press to system, but only if on the Diablo layer |
| 683 | void send_diablo_keystroke (uint8_t diablo_key) { | 680 | void send_diablo_keystroke (uint8_t diablo_key) { |
| 684 | if (current_layer == DIABLO) { | 681 | if (biton32(layer_state) == DIABLO) { |
| 685 | switch (diablo_key) { | 682 | switch (diablo_key) { |
| 686 | case 0: | 683 | case 0: |
| 687 | SEND_STRING("1"); | 684 | SEND_STRING("1"); |
| @@ -713,16 +710,33 @@ void run_diablo_macro_check(void) { | |||
| 713 | 710 | ||
| 714 | } | 711 | } |
| 715 | 712 | ||
| 713 | #endif | ||
| 714 | |||
| 715 | |||
| 716 | void matrix_init_user(void) { // Runs boot tasks for keyboard | 716 | void matrix_init_user(void) { // Runs boot tasks for keyboard |
| 717 | #ifdef RGBLIGHT_ENABLE | ||
| 718 | uint8_t default_layer = eeconfig_read_default_layer(); | ||
| 717 | 719 | ||
| 720 | rgblight_enable(); | ||
| 721 | if (default_layer & (1UL << COLEMAK)) { | ||
| 722 | rgblight_set_magenta; | ||
| 723 | } | ||
| 724 | else if (default_layer & (1UL << DVORAK)) { | ||
| 725 | rgblight_set_green; | ||
| 726 | } | ||
| 727 | else if (default_layer & (1UL << WORKMAN)) { | ||
| 728 | rgblight_set_purple; | ||
| 729 | } | ||
| 730 | else { | ||
| 731 | rgblight_set_teal; | ||
| 732 | } | ||
| 733 | #endif | ||
| 718 | }; | 734 | }; |
| 719 | 735 | ||
| 720 | LEADER_EXTERNS(); | 736 | LEADER_EXTERNS(); |
| 721 | 737 | ||
| 722 | void matrix_scan_user(void) { // runs frequently to update info | 738 | void matrix_scan_user(void) { // runs frequently to update info |
| 723 | uint8_t modifiders = get_mods(); | 739 | uint8_t modifiders = get_mods(); |
| 724 | uint8_t layer = biton32(layer_state); | ||
| 725 | static bool has_layer_changed = true; | ||
| 726 | 740 | ||
| 727 | if (!skip_leds) { | 741 | if (!skip_leds) { |
| 728 | ergodox_board_led_off(); | 742 | ergodox_board_led_off(); |
| @@ -744,70 +758,29 @@ void matrix_scan_user(void) { // runs frequently to update info | |||
| 744 | } | 758 | } |
| 745 | 759 | ||
| 746 | } | 760 | } |
| 747 | if (layer != current_layer) { | ||
| 748 | has_layer_changed = true; | ||
| 749 | current_layer = layer; | ||
| 750 | } | ||
| 751 | // Check layer, and apply color if its changed since last check | ||
| 752 | if (has_layer_changed) { | ||
| 753 | uint8_t default_layer = 0; | ||
| 754 | default_layer = eeconfig_read_default_layer(); | ||
| 755 | |||
| 756 | switch (layer) { | ||
| 757 | case SYMB: | ||
| 758 | rgblight_set_blue; | ||
| 759 | rgblight_mode(2); | ||
| 760 | break; | ||
| 761 | case OVERWATCH: | ||
| 762 | rgblight_set_orange; | ||
| 763 | rgblight_mode(17); | ||
| 764 | break; | ||
| 765 | case DIABLO: | ||
| 766 | rgblight_set_red; | ||
| 767 | rgblight_mode(5); | ||
| 768 | break; | ||
| 769 | case MOUS: | ||
| 770 | rgblight_set_urine; | ||
| 771 | rgblight_mode(1); | ||
| 772 | break; | ||
| 773 | case 7: | ||
| 774 | rgblight_sethsv (255,255,255); | ||
| 775 | rgblight_mode(1); | ||
| 776 | break; | ||
| 777 | default: | ||
| 778 | if (default_layer & (1UL << COLEMAK)) { | ||
| 779 | rgblight_set_green; | ||
| 780 | } | ||
| 781 | else if (default_layer & (1UL << DVORAK)) { | ||
| 782 | rgblight_set_magenta; | ||
| 783 | } | ||
| 784 | else if (default_layer & (1UL << WORKMAN)) { | ||
| 785 | rgblight_set_purple; | ||
| 786 | } | ||
| 787 | else { | ||
| 788 | rgblight_set_teal; | ||
| 789 | } | ||
| 790 | rgblight_mode(1); | ||
| 791 | break; | ||
| 792 | } | ||
| 793 | has_layer_changed = false; | ||
| 794 | } | ||
| 795 | 761 | ||
| 796 | // Run Diablo 3 macro checking code. | 762 | // Run Diablo 3 macro checking code. |
| 763 | #ifdef TAP_DANCE_ENABLE | ||
| 797 | run_diablo_macro_check(); | 764 | run_diablo_macro_check(); |
| 798 | #ifdef LEADER_KEYS | 765 | #endif |
| 799 | LEADER_DICTIONARY() { | 766 | LEADER_DICTIONARY() { |
| 800 | leading = false; | 767 | leading = false; |
| 801 | leader_end(); | 768 | leader_end(); |
| 802 | SEQ_ONE_KEY(KC_C) { | 769 | SEQ_ONE_KEY(KC_C) { |
| 803 | SEND_STRING("Covecube"); | 770 | SEND_STRING("Covecube"); |
| 804 | } | 771 | } |
| 772 | SEQ_ONE_KEY(KC_D) { | ||
| 773 | SEND_STRING("StableBit CloudDrive"); | ||
| 774 | } | ||
| 775 | SEQ_ONE_KEY(KC_L) { | ||
| 776 | register_code(KC_LGUI); | ||
| 777 | register_code(KC_L); | ||
| 778 | unregister_code(KC_L); | ||
| 779 | unregister_code(KC_LGUI); | ||
| 780 | } | ||
| 805 | SEQ_TWO_KEYS(KC_S, KC_D) { | 781 | SEQ_TWO_KEYS(KC_S, KC_D) { |
| 806 | SEND_STRING("StableBit DrivePool"); | 782 | SEND_STRING("StableBit DrivePool"); |
| 807 | } | 783 | } |
| 808 | SEQ_TWO_KEYS(KC_C, KC_D) { | ||
| 809 | SEND_STRING("StableBit CloudDrive"); | ||
| 810 | } | ||
| 811 | SEQ_TWO_KEYS(KC_S, KC_C) { | 784 | SEQ_TWO_KEYS(KC_S, KC_C) { |
| 812 | SEND_STRING("StableBit Scanner"); | 785 | SEND_STRING("StableBit Scanner"); |
| 813 | } | 786 | } |
| @@ -815,6 +788,45 @@ void matrix_scan_user(void) { // runs frequently to update info | |||
| 815 | SEND_STRING("StableBit Troubleshooter"); | 788 | SEND_STRING("StableBit Troubleshooter"); |
| 816 | } | 789 | } |
| 817 | } | 790 | } |
| 818 | #endif | ||
| 819 | }; | 791 | }; |
| 820 | 792 | ||
| 793 | uint32_t layer_state_set_kb(uint32_t state) { | ||
| 794 | #ifdef RGBLIGHT_ENABLE | ||
| 795 | uint8_t default_layer = eeconfig_read_default_layer(); | ||
| 796 | |||
| 797 | switch (biton32(state)) { | ||
| 798 | case SYMB: | ||
| 799 | rgblight_set_blue; | ||
| 800 | rgblight_mode(2); | ||
| 801 | break; | ||
| 802 | case OVERWATCH: | ||
| 803 | rgblight_set_orange; | ||
| 804 | rgblight_mode(17); | ||
| 805 | break; | ||
| 806 | case DIABLO: | ||
| 807 | rgblight_set_red; | ||
| 808 | rgblight_mode(5); | ||
| 809 | break; | ||
| 810 | case MOUS: | ||
| 811 | rgblight_set_yellow; | ||
| 812 | rgblight_mode(1); | ||
| 813 | break; | ||
| 814 | default: | ||
| 815 | if (default_layer & (1UL << COLEMAK)) { | ||
| 816 | rgblight_set_green; | ||
| 817 | } | ||
| 818 | else if (default_layer & (1UL << DVORAK)) { | ||
| 819 | rgblight_set_magenta; | ||
| 820 | } | ||
| 821 | else if (default_layer & (1UL << WORKMAN)) { | ||
| 822 | rgblight_set_purple; | ||
| 823 | } | ||
| 824 | else { | ||
| 825 | rgblight_set_teal; | ||
| 826 | } | ||
| 827 | rgblight_mode(1); | ||
| 828 | break; | ||
| 829 | } | ||
| 830 | #endif | ||
| 831 | return state; | ||
| 832 | } | ||
diff --git a/keyboards/ergodox_ez/keymaps/drashna-custom/rules.mk b/keyboards/ergodox_ez/keymaps/drashna-custom/rules.mk index 5ab769c68..0fa7cd227 100644 --- a/keyboards/ergodox_ez/keymaps/drashna-custom/rules.mk +++ b/keyboards/ergodox_ez/keymaps/drashna-custom/rules.mk | |||
| @@ -1,10 +1,13 @@ | |||
| 1 | TAP_DANCE_ENABLE = yes | 1 | TAP_DANCE_ENABLE = yes |
| 2 | SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend | 2 | SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend |
| 3 | COMMAND_ENABLE = no # Commands for debug and configuration | 3 | COMMAND_ENABLE = yes # Commands for debug and configuration |
| 4 | RGBLIGHT_ENABLE = yes | 4 | RGBLIGHT_ENABLE = yes |
| 5 | MIDI_ENABLE = no | 5 | MIDI_ENABLE = no |
| 6 | CONSOLE_ENABLE = no | 6 | CONSOLE_ENABLE = no |
| 7 | LEADER_KEYS = no | 7 | LEADER_KEYS = no |
| 8 | |||
| 9 | EXTRAFLAGS = -flto | ||
| 10 | |||
| 8 | ifndef QUANTUM_DIR | 11 | ifndef QUANTUM_DIR |
| 9 | include ../../../../Makefile | 12 | include ../../../../Makefile |
| 10 | endif | 13 | endif |
diff --git a/keyboards/ergodox_ez/keymaps/drashna/keymap.c b/keyboards/ergodox_ez/keymaps/drashna/keymap.c index cef0e9c39..97ede9431 100644 --- a/keyboards/ergodox_ez/keymaps/drashna/keymap.c +++ b/keyboards/ergodox_ez/keymaps/drashna/keymap.c | |||
| @@ -17,8 +17,6 @@ | |||
| 17 | #define MOUS 2 | 17 | #define MOUS 2 |
| 18 | 18 | ||
| 19 | #ifdef LAYER_UNDERGLOW_LIGHTING | 19 | #ifdef LAYER_UNDERGLOW_LIGHTING |
| 20 | bool has_layer_changed = true; | ||
| 21 | |||
| 22 | #define rgblight_set_teal rgblight_setrgb(0x00, 0xFF, 0xFF) | 20 | #define rgblight_set_teal rgblight_setrgb(0x00, 0xFF, 0xFF) |
| 23 | #define rgblight_set_red rgblight_setrgb(0xFF, 0x00, 0x00) | 21 | #define rgblight_set_red rgblight_setrgb(0xFF, 0x00, 0x00) |
| 24 | #define rgblight_set_blue rgblight_setrgb(0x00, 0xFF, 0x00); | 22 | #define rgblight_set_blue rgblight_setrgb(0x00, 0xFF, 0x00); |
| @@ -100,20 +98,23 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
| 100 | return true; | 98 | return true; |
| 101 | } | 99 | } |
| 102 | 100 | ||
| 101 | void matrix_init_user(void) { | ||
| 102 | #ifdef LAYER_UNDERGLOW_LIGHTING | ||
| 103 | rgblight_enable(); | ||
| 104 | rgblight_set_teal; | ||
| 105 | rgblight_mode(1); | ||
| 106 | #endif | ||
| 103 | 107 | ||
| 104 | 108 | } | |
| 105 | 109 | ||
| 106 | void matrix_scan_user(void) { | 110 | void matrix_scan_user(void) { |
| 107 | 111 | ||
| 108 | uint8_t new_layer = biton32(layer_state); | ||
| 109 | |||
| 110 | ergodox_board_led_off(); | 112 | ergodox_board_led_off(); |
| 111 | ergodox_right_led_1_off(); | 113 | ergodox_right_led_1_off(); |
| 112 | ergodox_right_led_2_off(); | 114 | ergodox_right_led_2_off(); |
| 113 | ergodox_right_led_3_off(); | 115 | ergodox_right_led_3_off(); |
| 114 | 116 | ||
| 115 | #ifdef LAYER_UNDERGLOW_LIGHTING | 117 | #ifdef LAYER_UNDERGLOW_LIGHTING |
| 116 | static uint8_t old_layer = 0; | ||
| 117 | uint8_t modifiders = get_mods(); | 118 | uint8_t modifiders = get_mods(); |
| 118 | 119 | ||
| 119 | if ( modifiders & MODS_SHIFT_MASK) { | 120 | if ( modifiders & MODS_SHIFT_MASK) { |
| @@ -124,44 +125,10 @@ void matrix_scan_user(void) { | |||
| 124 | } | 125 | } |
| 125 | if ( modifiders & MODS_ALT_MASK) { | 126 | if ( modifiders & MODS_ALT_MASK) { |
| 126 | ergodox_right_led_3_on(); | 127 | ergodox_right_led_3_on(); |
| 127 | } | 128 | } |
| 128 | 129 | #else | |
| 129 | if (old_layer != new_layer) { | 130 | uint8_t layer = biton32(layer_state); |
| 130 | has_layer_changed = true; | 131 | switch (layer) { |
| 131 | old_layer = new_layer; | ||
| 132 | } | ||
| 133 | if (has_layer_changed) { | ||
| 134 | switch (new_layer) { | ||
| 135 | case 1: | ||
| 136 | rgblight_set_red; | ||
| 137 | break; | ||
| 138 | case 2: | ||
| 139 | rgblight_set_blue; | ||
| 140 | break; | ||
| 141 | case 3: | ||
| 142 | rgblight_set_green; | ||
| 143 | break; | ||
| 144 | case 4: | ||
| 145 | rgblight_set_yellow; | ||
| 146 | break; | ||
| 147 | case 5: | ||
| 148 | rgblight_setrgb(0xFF, 0xFF, 0x00); | ||
| 149 | break; | ||
| 150 | case 6: | ||
| 151 | rgblight_setrgb(0xFF, 0xFF, 0x00); | ||
| 152 | break; | ||
| 153 | case 7: | ||
| 154 | rgblight_setrgb(0xFF, 0xFF, 0xFF); | ||
| 155 | break; | ||
| 156 | default: | ||
| 157 | rgblight_set_teal; | ||
| 158 | break; | ||
| 159 | } | ||
| 160 | has_layer_changed = false; | ||
| 161 | } | ||
| 162 | |||
| 163 | #else | ||
| 164 | switch (new_layer) { | ||
| 165 | case 1: | 132 | case 1: |
| 166 | ergodox_right_led_1_on(); | 133 | ergodox_right_led_1_on(); |
| 167 | break; | 134 | break; |
| @@ -193,3 +160,35 @@ void matrix_scan_user(void) { | |||
| 193 | } | 160 | } |
| 194 | #endif | 161 | #endif |
| 195 | }; | 162 | }; |
| 163 | |||
| 164 | uint32_t layer_state_set_kb(uint32_t state) { | ||
| 165 | #ifdef LAYER_UNDERGLOW_LIGHTING | ||
| 166 | switch (biton32(state)) { | ||
| 167 | case 1: | ||
| 168 | rgblight_set_red; | ||
| 169 | break; | ||
| 170 | case 2: | ||
| 171 | rgblight_set_blue; | ||
| 172 | break; | ||
| 173 | case 3: | ||
| 174 | rgblight_set_green; | ||
| 175 | break; | ||
| 176 | case 4: | ||
| 177 | rgblight_set_yellow; | ||
| 178 | break; | ||
| 179 | case 5: | ||
| 180 | rgblight_setrgb(0xFF, 0xFF, 0x00); | ||
| 181 | break; | ||
| 182 | case 6: | ||
| 183 | rgblight_setrgb(0xFF, 0xFF, 0x00); | ||
| 184 | break; | ||
| 185 | case 7: | ||
| 186 | rgblight_setrgb(0xFF, 0xFF, 0xFF); | ||
| 187 | break; | ||
| 188 | default: | ||
| 189 | rgblight_set_teal; | ||
| 190 | break; | ||
| 191 | } | ||
| 192 | #endif | ||
| 193 | return state; | ||
| 194 | } | ||
diff --git a/keyboards/handwired/woodpad/config.h b/keyboards/handwired/woodpad/config.h index 2c8a8bef7..39a466850 100644 --- a/keyboards/handwired/woodpad/config.h +++ b/keyboards/handwired/woodpad/config.h | |||
| @@ -53,6 +53,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
| 53 | // #define BACKLIGHT_BREATHING | 53 | // #define BACKLIGHT_BREATHING |
| 54 | // #define BACKLIGHT_LEVELS 3 | 54 | // #define BACKLIGHT_LEVELS 3 |
| 55 | 55 | ||
| 56 | #define CATERINA_BOOTLOADER | ||
| 56 | 57 | ||
| 57 | /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ | 58 | /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ |
| 58 | #define DEBOUNCING_DELAY 5 | 59 | #define DEBOUNCING_DELAY 5 |
diff --git a/keyboards/handwired/woodpad/keymaps/drashna/config.h b/keyboards/handwired/woodpad/keymaps/drashna/config.h index 2b151606d..be1e4df59 100644 --- a/keyboards/handwired/woodpad/keymaps/drashna/config.h +++ b/keyboards/handwired/woodpad/keymaps/drashna/config.h | |||
| @@ -23,7 +23,7 @@ | |||
| 23 | #define TAPPING_TERM 200 | 23 | #define TAPPING_TERM 200 |
| 24 | #endif // TAP_DANCE_ENABLE | 24 | #endif // TAP_DANCE_ENABLE |
| 25 | 25 | ||
| 26 | #define CATERINA_BOOTLOADER | 26 | |
| 27 | 27 | ||
| 28 | 28 | ||
| 29 | #ifdef RGBLIGHT_ENABLE | 29 | #ifdef RGBLIGHT_ENABLE |
diff --git a/keyboards/handwired/woodpad/keymaps/drashna/keymap.c b/keyboards/handwired/woodpad/keymaps/drashna/keymap.c index f6476ef66..4a2893e4a 100644 --- a/keyboards/handwired/woodpad/keymaps/drashna/keymap.c +++ b/keyboards/handwired/woodpad/keymaps/drashna/keymap.c | |||
| @@ -29,15 +29,22 @@ | |||
| 29 | #define _______ KC_TRNS | 29 | #define _______ KC_TRNS |
| 30 | #define XXXXXXX KC_NO | 30 | #define XXXXXXX KC_NO |
| 31 | 31 | ||
| 32 | #ifdef RGBLIGHT_ENABLE | ||
| 33 | #define rgblight_set_blue rgblight_sethsv (0xFF, 0xFF, 0xFF); | ||
| 34 | #define rgblight_set_red rgblight_sethsv (0x00, 0xFF, 0xFF); | ||
| 35 | #define rgblight_set_green rgblight_sethsv (0x78, 0xFF, 0xFF); | ||
| 36 | #define rgblight_set_orange rgblight_sethsv (0x1E, 0xFF, 0xFF); | ||
| 37 | #define rgblight_set_teal rgblight_sethsv (0xC3, 0xFF, 0xFF); | ||
| 38 | #define rgblight_set_magenta rgblight_sethsv (0x12C, 0xFF, 0xFF); | ||
| 39 | #define rgblight_set_yellow rgblight_sethsv (0x3C, 0xFF, 0xFF); | ||
| 40 | #define rgblight_set_purple rgblight_sethsv (0x10E, 0xFF, 0xFF); | ||
| 41 | #endif | ||
| 32 | 42 | ||
| 33 | //define layer change stuff for underglow indicator | 43 | //define layer change stuff for underglow indicator |
| 34 | bool skip_leds = false; | 44 | bool skip_leds = false; |
| 35 | 45 | ||
| 36 | bool is_overwatch = false; | 46 | bool is_overwatch = false; |
| 37 | 47 | ||
| 38 | //This is both for underglow, and Diablo 3 macros | ||
| 39 | bool has_layer_changed = false; | ||
| 40 | static uint8_t current_layer; | ||
| 41 | 48 | ||
| 42 | #ifdef TAP_DANCE_ENABLE | 49 | #ifdef TAP_DANCE_ENABLE |
| 43 | //define diablo macro timer variables | 50 | //define diablo macro timer variables |
| @@ -65,7 +72,8 @@ enum custom_keycodes { | |||
| 65 | KC_DOOMFIST, | 72 | KC_DOOMFIST, |
| 66 | KC_JUSTGAME, | 73 | KC_JUSTGAME, |
| 67 | KC_GLHF, | 74 | KC_GLHF, |
| 68 | KC_TORB | 75 | KC_TORB, |
| 76 | KC_MAKE | ||
| 69 | }; | 77 | }; |
| 70 | 78 | ||
| 71 | #ifdef TAP_DANCE_ENABLE | 79 | #ifdef TAP_DANCE_ENABLE |
| @@ -163,7 +171,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 163 | ), | 171 | ), |
| 164 | [_MEDIA] = KEYMAP( /* Base */ | 172 | [_MEDIA] = KEYMAP( /* Base */ |
| 165 | RESET, KC_MUTE, KC_VOLD, KC_VOLU,\ | 173 | RESET, KC_MUTE, KC_VOLD, KC_VOLU,\ |
| 166 | _______, _______, RGB_HUI, RGB_HUD, \ | 174 | KC_MAKE, _______, RGB_HUI, RGB_HUD, \ |
| 167 | KC_MPLY, KC_MSTP, KC_MPRV, KC_MNXT, \ | 175 | KC_MPLY, KC_MSTP, KC_MPRV, KC_MNXT, \ |
| 168 | RGB_TOG, RGB_MOD, RGB_SAI, RGB_VAI, \ | 176 | RGB_TOG, RGB_MOD, RGB_SAI, RGB_VAI, \ |
| 169 | _______, _______, RGB_SAD, RGB_VAD \ | 177 | _______, _______, RGB_SAD, RGB_VAD \ |
| @@ -171,22 +179,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 171 | 179 | ||
| 172 | }; | 180 | }; |
| 173 | 181 | ||
| 174 | const uint16_t PROGMEM fn_actions[] = { | ||
| 175 | |||
| 176 | }; | ||
| 177 | 182 | ||
| 178 | const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) | ||
| 179 | { | ||
| 180 | switch (id) { | ||
| 181 | case 0: | ||
| 182 | if (record->event.pressed) { | ||
| 183 | // Output Keyboard Firmware info | ||
| 184 | SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP ); | ||
| 185 | return false; | ||
| 186 | } | ||
| 187 | } | ||
| 188 | return MACRO_NONE; | ||
| 189 | }; | ||
| 190 | void numlock_led_on(void) { | 183 | void numlock_led_on(void) { |
| 191 | PORTF |= (1<<7); | 184 | PORTF |= (1<<7); |
| 192 | } | 185 | } |
| @@ -216,11 +209,13 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
| 216 | return false; | 209 | return false; |
| 217 | break; | 210 | break; |
| 218 | #endif | 211 | #endif |
| 219 | case KC_OVERWATCH: // reset all Diable timers, disabling them | 212 | case KC_OVERWATCH: |
| 220 | if (record->event.pressed) { | 213 | if (record->event.pressed) { |
| 221 | is_overwatch = !is_overwatch; | 214 | is_overwatch = !is_overwatch; |
| 222 | has_layer_changed = true; | ||
| 223 | } | 215 | } |
| 216 | #ifdef RGBLIGHT_ENABLE | ||
| 217 | is_overwatch ? rgblight_mode(17) : rgblight_mode(18); | ||
| 218 | #endif | ||
| 224 | return false; | 219 | return false; |
| 225 | break; | 220 | break; |
| 226 | case KC_SALT: | 221 | case KC_SALT: |
| @@ -324,6 +319,13 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
| 324 | } | 319 | } |
| 325 | return false; | 320 | return false; |
| 326 | break; | 321 | break; |
| 322 | case KC_MAKE: | ||
| 323 | if (!record->event.pressed) { | ||
| 324 | SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP SS_TAP(X_ENTER)); | ||
| 325 | } | ||
| 326 | return false; | ||
| 327 | break; | ||
| 328 | |||
| 327 | 329 | ||
| 328 | } | 330 | } |
| 329 | return true; | 331 | return true; |
| @@ -332,7 +334,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
| 332 | 334 | ||
| 333 | // Sends the key press to system, but only if on the Diablo layer | 335 | // Sends the key press to system, but only if on the Diablo layer |
| 334 | void send_diablo_keystroke(uint8_t diablo_key) { | 336 | void send_diablo_keystroke(uint8_t diablo_key) { |
| 335 | if (current_layer == _DIABLO) { | 337 | if (biton32(layer_state) == _DIABLO) { |
| 336 | switch (diablo_key) { | 338 | switch (diablo_key) { |
| 337 | case 0: | 339 | case 0: |
| 338 | SEND_STRING("1"); | 340 | SEND_STRING("1"); |
| @@ -365,10 +367,16 @@ void run_diablo_macro_check(void) { | |||
| 365 | } | 367 | } |
| 366 | #endif | 368 | #endif |
| 367 | void matrix_init_user(void) { | 369 | void matrix_init_user(void) { |
| 368 | has_layer_changed = true; | ||
| 369 | // set Numlock LED to output and low | 370 | // set Numlock LED to output and low |
| 370 | DDRF |= (1<<7); | 371 | DDRF |= (1<<7); |
| 371 | PORTF &= ~(1<<7); | 372 | PORTF &= ~(1<<7); |
| 373 | |||
| 374 | #ifdef RGBLIGHT_ENABLE | ||
| 375 | rgblight_enable(); | ||
| 376 | rgblight_set_teal; | ||
| 377 | rgblight_mode(1); | ||
| 378 | #endif | ||
| 379 | |||
| 372 | if (!(host_keyboard_leds() & (1 << USB_LED_NUM_LOCK)) ){ | 380 | if (!(host_keyboard_leds() & (1 << USB_LED_NUM_LOCK)) ){ |
| 373 | register_code(KC_NUMLOCK); | 381 | register_code(KC_NUMLOCK); |
| 374 | unregister_code(KC_NUMLOCK); | 382 | unregister_code(KC_NUMLOCK); |
| @@ -376,69 +384,46 @@ void matrix_init_user(void) { | |||
| 376 | } | 384 | } |
| 377 | 385 | ||
| 378 | void matrix_scan_user(void) { | 386 | void matrix_scan_user(void) { |
| 379 | uint8_t layer = biton32(layer_state); | ||
| 380 | #ifdef RGBLIGHT_ENABLE | ||
| 381 | |||
| 382 | numlock_led_off(); | 387 | numlock_led_off(); |
| 383 | // Check layer, and apply color if its changed since last check | 388 | if (is_overwatch && biton32(layer_state) == _MACROS) { |
| 384 | switch (layer) { | 389 | numlock_led_on(); |
| 390 | } | ||
| 391 | |||
| 392 | // Run Diablo 3 macro checking code. | ||
| 393 | #ifdef TAP_DANCE_ENABLE | ||
| 394 | run_diablo_macro_check(); | ||
| 395 | #endif | ||
| 396 | } | ||
| 397 | |||
| 398 | uint32_t layer_state_set_kb(uint32_t state) { | ||
| 399 | #ifdef RGBLIGHT_ENABLE | ||
| 400 | // Check layer, and apply color if its changed since last check | ||
| 401 | switch (biton32(state)) { | ||
| 385 | case _NAV: | 402 | case _NAV: |
| 386 | if (has_layer_changed) { | 403 | rgblight_set_blue; |
| 387 | rgblight_sethsv(240, 255, 255); | 404 | rgblight_mode(1); |
| 388 | rgblight_mode(1); | ||
| 389 | } | ||
| 390 | break; | 405 | break; |
| 391 | case _MACROS: | 406 | case _MACROS: |
| 392 | if (has_layer_changed) { | 407 | rgblight_set_orange; |
| 393 | rgblight_sethsv(30, 255, 255); | 408 | is_overwatch ? rgblight_mode(17) : rgblight_mode(18); |
| 394 | if (is_overwatch) { | ||
| 395 | rgblight_mode(17); | ||
| 396 | } else { | ||
| 397 | rgblight_mode(18); | ||
| 398 | } | ||
| 399 | } | ||
| 400 | if (is_overwatch) { | ||
| 401 | numlock_led_on(); | ||
| 402 | } | ||
| 403 | break; | 409 | break; |
| 404 | case _DIABLO: | 410 | case _DIABLO: |
| 405 | if (has_layer_changed) { | 411 | rgblight_set_red; |
| 406 | rgblight_sethsv(0, 255, 255); | 412 | rgblight_mode(5); |
| 407 | rgblight_mode(5); | ||
| 408 | } | ||
| 409 | break; | 413 | break; |
| 410 | case _MEDIA: | 414 | case _MEDIA: |
| 411 | if (has_layer_changed) { | 415 | rgblight_set_green; |
| 412 | rgblight_sethsv(120, 255, 255); | 416 | rgblight_mode(22); |
| 413 | rgblight_mode(22); | ||
| 414 | } | ||
| 415 | break; | 417 | break; |
| 416 | default: | 418 | default: |
| 417 | if (has_layer_changed) { | 419 | rgblight_set_teal; |
| 418 | rgblight_sethsv(195, 255, 255); | 420 | rgblight_mode(1); |
| 419 | rgblight_mode(1); | ||
| 420 | } | ||
| 421 | break; | 421 | break; |
| 422 | } | 422 | } |
| 423 | 423 | ||
| 424 | #endif | ||
| 425 | // Update layer status at the end, so this sets the default color | ||
| 426 | // rather than relying on the init, which was unreliably... | ||
| 427 | // Probably due to a timing issue, but this requires no additional code | ||
| 428 | if (current_layer == layer) { | ||
| 429 | has_layer_changed = false; | ||
| 430 | } | ||
| 431 | else { | ||
| 432 | has_layer_changed = true; | ||
| 433 | current_layer = layer; | ||
| 434 | } | ||
| 435 | // Run Diablo 3 macro checking code. | ||
| 436 | #ifdef TAP_DANCE_ENABLE | ||
| 437 | run_diablo_macro_check(); | ||
| 438 | #endif | 424 | #endif |
| 425 | return state; | ||
| 439 | } | 426 | } |
| 440 | |||
| 441 | |||
| 442 | void led_set_user(uint8_t usb_led) { | 427 | void led_set_user(uint8_t usb_led) { |
| 443 | 428 | ||
| 444 | } | 429 | } |
diff --git a/keyboards/handwired/woodpad/keymaps/drashna/rules.mk b/keyboards/handwired/woodpad/keymaps/drashna/rules.mk index 0aeb409a8..b6c5ed3bd 100644 --- a/keyboards/handwired/woodpad/keymaps/drashna/rules.mk +++ b/keyboards/handwired/woodpad/keymaps/drashna/rules.mk | |||
| @@ -1,10 +1,12 @@ | |||
| 1 | TAP_DANCE_ENABLE = yes | 1 | TAP_DANCE_ENABLE = yes |
| 2 | SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend | 2 | SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend |
| 3 | COMMAND_ENABLE = no # Commands for debug and configuration | 3 | COMMAND_ENABLE = yes # Commands for debug and configuration |
| 4 | RGBLIGHT_ENABLE = yes | 4 | RGBLIGHT_ENABLE = yes |
| 5 | MIDI_ENABLE = no | 5 | MIDI_ENABLE = no |
| 6 | CONSOLE_ENABLE = no | 6 | CONSOLE_ENABLE = no |
| 7 | 7 | ||
| 8 | EXTRAFLAGS = -flto | ||
| 9 | |||
| 8 | ifndef QUANTUM_DIR | 10 | ifndef QUANTUM_DIR |
| 9 | include ../../../../Makefile | 11 | include ../../../../Makefile |
| 10 | endif | 12 | endif |
diff --git a/keyboards/orthodox/keymaps/drashna/config.h b/keyboards/orthodox/keymaps/drashna/config.h index d79fd302e..fc483b08e 100644 --- a/keyboards/orthodox/keymaps/drashna/config.h +++ b/keyboards/orthodox/keymaps/drashna/config.h | |||
| @@ -40,9 +40,18 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
| 40 | #endif | 40 | #endif |
| 41 | 41 | ||
| 42 | 42 | ||
| 43 | /* key combination for command */ | ||
| 44 | #ifdef IS_COMMAND | ||
| 45 | #undef IS_COMMAND | ||
| 46 | #endif | ||
| 47 | #define IS_COMMAND() ( \ | ||
| 48 | keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_LALT)) \ | ||
| 49 | ) | ||
| 50 | |||
| 51 | |||
| 43 | #ifdef RGBLIGHT_ENABLE | 52 | #ifdef RGBLIGHT_ENABLE |
| 44 | #define RGB_DI_PIN D3 | 53 | #define RGB_DI_PIN D3 |
| 45 | #define RGBLED_NUM 12 // Number of LEDs | 54 | #define RGBLED_NUM 16 // Number of LEDs |
| 46 | #define RGBLIGHT_ANIMATIONS | 55 | #define RGBLIGHT_ANIMATIONS |
| 47 | #define RGBLIGHT_HUE_STEP 12 | 56 | #define RGBLIGHT_HUE_STEP 12 |
| 48 | #define RGBLIGHT_SAT_STEP 12 | 57 | #define RGBLIGHT_SAT_STEP 12 |
diff --git a/keyboards/orthodox/keymaps/drashna/keymap.c b/keyboards/orthodox/keymaps/drashna/keymap.c index a15fa6f75..de7d4e108 100644 --- a/keyboards/orthodox/keymaps/drashna/keymap.c +++ b/keyboards/orthodox/keymaps/drashna/keymap.c | |||
| @@ -45,6 +45,7 @@ enum custom_keycodes { | |||
| 45 | LOWER, | 45 | LOWER, |
| 46 | RAISE, | 46 | RAISE, |
| 47 | ADJUST, | 47 | ADJUST, |
| 48 | KC_MAKE | ||
| 48 | }; | 49 | }; |
| 49 | 50 | ||
| 50 | // Fillers to make layering more clear | 51 | // Fillers to make layering more clear |
| @@ -52,21 +53,17 @@ enum custom_keycodes { | |||
| 52 | #define XXXXXXX KC_NO | 53 | #define XXXXXXX KC_NO |
| 53 | 54 | ||
| 54 | #ifdef RGBLIGHT_ENABLE | 55 | #ifdef RGBLIGHT_ENABLE |
| 55 | //define layer change stuff for underglow indicator | 56 | #define rgblight_set_blue rgblight_sethsv (0xFF, 0xFF, 0xFF); |
| 56 | #define rgblight_set_blue rgblight_sethsv (0xFF, 0xFF, 0xFF); | 57 | #define rgblight_set_red rgblight_sethsv (0x00, 0xFF, 0xFF); |
| 57 | #define rgblight_set_red rgblight_sethsv(0x00, 0xFF, 0xFF); | 58 | #define rgblight_set_green rgblight_sethsv (0x78, 0xFF, 0xFF); |
| 58 | #define rgblight_set_green rgblight_sethsv (0x78, 0xFF, 0xFF); | 59 | #define rgblight_set_orange rgblight_sethsv (0x1E, 0xFF, 0xFF); |
| 59 | #define rgblight_set_orange rgblight_sethsv (0x1E, 0xFF, 0xFF); | 60 | #define rgblight_set_teal rgblight_sethsv (0xC3, 0xFF, 0xFF); |
| 60 | #define rgblight_set_teal rgblight_sethsv (0xC3, 0xFF, 0xFF); | 61 | #define rgblight_set_magenta rgblight_sethsv (0x12C, 0xFF, 0xFF); |
| 61 | #define rgblight_set_magenta rgblight_sethsv (0x12C, 0xFF, 0xFF); | 62 | #define rgblight_set_yellow rgblight_sethsv (0x3C, 0xFF, 0xFF); |
| 62 | #define rgblight_set_urine rgblight_sethsv (0x3C, 0xFF, 0xFF); | 63 | #define rgblight_set_purple rgblight_sethsv (0x10E, 0xFF, 0xFF); |
| 63 | #define rgblight_set_purple rgblight_sethsv (0x10E, 0xFF, 0xFF); | ||
| 64 | |||
| 65 | //This is both for underglow, and Diablo 3 macros | ||
| 66 | bool has_layer_changed = true; | ||
| 67 | static uint8_t current_layer = 10; | ||
| 68 | #endif | 64 | #endif |
| 69 | 65 | ||
| 66 | |||
| 70 | #ifdef TAP_DANCE_ENABLE | 67 | #ifdef TAP_DANCE_ENABLE |
| 71 | enum { | 68 | enum { |
| 72 | TD_FLSH = 0, | 69 | TD_FLSH = 0, |
| @@ -84,8 +81,8 @@ void dance_flsh_finished(qk_tap_dance_state_t *state, void *user_data) { | |||
| 84 | rgblight_mode(1); | 81 | rgblight_mode(1); |
| 85 | rgblight_setrgb(0xff, 0x00, 0x00); | 82 | rgblight_setrgb(0xff, 0x00, 0x00); |
| 86 | #endif | 83 | #endif |
| 87 | reset_keyboard(); | ||
| 88 | reset_tap_dance(state); | 84 | reset_tap_dance(state); |
| 85 | reset_keyboard(); | ||
| 89 | } | 86 | } |
| 90 | } | 87 | } |
| 91 | 88 | ||
| @@ -137,9 +134,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 137 | ), | 134 | ), |
| 138 | 135 | ||
| 139 | [_ADJUST] = KEYMAP( \ | 136 | [_ADJUST] = KEYMAP( \ |
| 140 | _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \ | 137 | KC_MAKE, RESET, TD(TD_FLSH), _______, _______, _______, _______, _______, _______, _______, _______, _______, \ |
| 141 | _______, _______, _______, AU_ON, AU_OFF, AG_NORM, _______, XXXXXXX, _______, _______, XXXXXXX, _______, AG_SWAP, QWERTY, COLEMAK, DVORAK, WORKMAN, _______, \ | 138 | _______, _______, _______, AU_ON, AU_OFF, AG_NORM, _______, XXXXXXX, _______, _______, XXXXXXX, _______, AG_SWAP, QWERTY, COLEMAK, DVORAK, WORKMAN, _______, \ |
| 142 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MAGIC_TOGGLE_NKRO, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ | 139 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MAGIC_TOGGLE_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY \ |
| 143 | ) | 140 | ) |
| 144 | 141 | ||
| 145 | 142 | ||
| @@ -149,6 +146,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 149 | float tone_qwerty[][2] = SONG(QWERTY_SOUND); | 146 | float tone_qwerty[][2] = SONG(QWERTY_SOUND); |
| 150 | float tone_dvorak[][2] = SONG(DVORAK_SOUND); | 147 | float tone_dvorak[][2] = SONG(DVORAK_SOUND); |
| 151 | float tone_colemak[][2] = SONG(COLEMAK_SOUND); | 148 | float tone_colemak[][2] = SONG(COLEMAK_SOUND); |
| 149 | float tone_workman[][2] = SONG(PLOVER_SONG); | ||
| 152 | #endif | 150 | #endif |
| 153 | 151 | ||
| 154 | void persistent_default_layer_set(uint16_t default_layer) { | 152 | void persistent_default_layer_set(uint16_t default_layer) { |
| @@ -159,23 +157,23 @@ void persistent_default_layer_set(uint16_t default_layer) { | |||
| 159 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | 157 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { |
| 160 | switch (keycode) { | 158 | switch (keycode) { |
| 161 | case QWERTY: | 159 | case QWERTY: |
| 162 | if (record->event.pressed) { | 160 | if (record->event.pressed) { |
| 163 | #ifdef AUDIO_ENABLE | 161 | #ifdef AUDIO_ENABLE |
| 164 | PLAY_SONG(tone_qwerty); | 162 | PLAY_SONG(tone_qwerty); |
| 165 | #endif | 163 | #endif |
| 166 | persistent_default_layer_set(1UL<<_QWERTY); | 164 | persistent_default_layer_set(1UL<<_QWERTY); |
| 167 | } | 165 | } |
| 168 | return false; | 166 | return false; |
| 169 | break; | 167 | break; |
| 170 | case COLEMAK: | 168 | case COLEMAK: |
| 171 | if (record->event.pressed) { | 169 | if (record->event.pressed) { |
| 172 | #ifdef AUDIO_ENABLE | 170 | #ifdef AUDIO_ENABLE |
| 173 | PLAY_SONG(tone_colemak); | 171 | PLAY_SONG(tone_colemak); |
| 174 | #endif | 172 | #endif |
| 175 | persistent_default_layer_set(1UL<<_COLEMAK); | 173 | persistent_default_layer_set(1UL<<_COLEMAK); |
| 176 | } | 174 | } |
| 177 | return false; | 175 | return false; |
| 178 | break; | 176 | break; |
| 179 | case DVORAK: | 177 | case DVORAK: |
| 180 | if (record->event.pressed) { | 178 | if (record->event.pressed) { |
| 181 | #ifdef AUDIO_ENABLE | 179 | #ifdef AUDIO_ENABLE |
| @@ -188,102 +186,124 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
| 188 | case WORKMAN: | 186 | case WORKMAN: |
| 189 | if (record->event.pressed) { | 187 | if (record->event.pressed) { |
| 190 | #ifdef AUDIO_ENABLE | 188 | #ifdef AUDIO_ENABLE |
| 191 | PLAY_SONG(tone_dvorak); | 189 | PLAY_SONG(tone_workman); |
| 192 | #endif | 190 | #endif |
| 193 | persistent_default_layer_set(1UL << _WORKMAN); | 191 | persistent_default_layer_set(1UL << _WORKMAN); |
| 194 | } | 192 | } |
| 195 | return false; | 193 | return false; |
| 196 | break; | 194 | break; |
| 197 | case LOWER: | 195 | case LOWER: |
| 198 | if (record->event.pressed) { | 196 | if (record->event.pressed) { |
| 199 | layer_on(_LOWER); | 197 | layer_on(_LOWER); |
| 200 | update_tri_layer(_LOWER, _RAISE, _ADJUST); | 198 | update_tri_layer(_LOWER, _RAISE, _ADJUST); |
| 201 | } else { | 199 | } else { |
| 202 | layer_off(_LOWER); | 200 | layer_off(_LOWER); |
| 203 | update_tri_layer(_LOWER, _RAISE, _ADJUST); | 201 | update_tri_layer(_LOWER, _RAISE, _ADJUST); |
| 204 | } | 202 | } |
| 205 | return false; | 203 | return false; |
| 206 | break; | 204 | break; |
| 207 | case RAISE: | 205 | case RAISE: |
| 208 | if (record->event.pressed) { | 206 | if (record->event.pressed) { |
| 209 | layer_on(_RAISE); | 207 | layer_on(_RAISE); |
| 210 | update_tri_layer(_LOWER, _RAISE, _ADJUST); | 208 | update_tri_layer(_LOWER, _RAISE, _ADJUST); |
| 211 | } else { | 209 | } else { |
| 212 | layer_off(_RAISE); | 210 | layer_off(_RAISE); |
| 213 | update_tri_layer(_LOWER, _RAISE, _ADJUST); | 211 | update_tri_layer(_LOWER, _RAISE, _ADJUST); |
| 214 | } | 212 | } |
| 215 | return false; | 213 | return false; |
| 216 | break; | 214 | break; |
| 217 | case ADJUST: | 215 | case ADJUST: |
| 218 | if (record->event.pressed) { | 216 | if (record->event.pressed) { |
| 219 | layer_on(_ADJUST); | 217 | layer_on(_ADJUST); |
| 220 | } else { | 218 | } else { |
| 221 | layer_off(_ADJUST); | 219 | layer_off(_ADJUST); |
| 222 | } | 220 | } |
| 223 | return false; | 221 | return false; |
| 224 | break; | 222 | break; |
| 223 | case KC_MAKE: | ||
| 224 | if (!record->event.pressed) { | ||
| 225 | #ifdef RGBLIGHT_ENABLE | ||
| 226 | SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP SS_TAP(X_ENTER)); | ||
| 227 | #else | ||
| 228 | SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP " RGBLIGHT_ENABLE=no"SS_TAP(X_ENTER)); | ||
| 229 | #endif | ||
| 230 | } | ||
| 231 | return false; | ||
| 232 | break; | ||
| 233 | |||
| 225 | } | 234 | } |
| 226 | return true; | 235 | return true; |
| 227 | } | 236 | } |
| 228 | #ifdef RGBLIGHT_ENABLE | ||
| 229 | 237 | ||
| 238 | void matrix_init_user(void) { // Runs boot tasks for keyboard | ||
| 239 | #ifdef RGBLIGHT_ENABLE | ||
| 240 | uint8_t default_layer = eeconfig_read_default_layer(); | ||
| 230 | 241 | ||
| 242 | rgblight_enable(); | ||
| 243 | if (default_layer & (1UL << _COLEMAK)) { | ||
| 244 | rgblight_set_magenta; | ||
| 245 | } | ||
| 246 | else if (default_layer & (1UL << _DVORAK)) { | ||
| 247 | rgblight_set_green; | ||
| 248 | } | ||
| 249 | else if (default_layer & (1UL << _WORKMAN)) { | ||
| 250 | rgblight_set_purple; | ||
| 251 | } | ||
| 252 | else { | ||
| 253 | rgblight_set_teal; | ||
| 254 | } | ||
| 255 | #endif | ||
| 231 | 256 | ||
| 257 | }; | ||
| 232 | 258 | ||
| 233 | void matrix_scan_user(void) { // runs frequently to update info | 259 | void matrix_scan_user(void) { // runs frequently to update info |
| 234 | uint8_t layer = biton32(layer_state); | ||
| 235 | 260 | ||
| 236 | if (layer != current_layer) { | 261 | }; |
| 237 | has_layer_changed = true; | 262 | |
| 238 | current_layer = layer; | 263 | uint32_t layer_state_set_kb(uint32_t state) { // runs on layer switch |
| 239 | } | 264 | #ifdef RGBLIGHT_ENABLE |
| 240 | // Check layer, and apply color if its changed since last check | 265 | uint8_t default_layer = eeconfig_read_default_layer(); |
| 241 | if (has_layer_changed) { | 266 | |
| 242 | uint8_t default_layer = 0; | 267 | switch (biton32(state)) { |
| 243 | default_layer = eeconfig_read_default_layer(); | 268 | case _COLEMAK: |
| 244 | 269 | rgblight_set_magenta; | |
| 245 | switch (layer) { | 270 | rgblight_mode(1); |
| 246 | case _QWERTY: | 271 | break; |
| 247 | if (default_layer & (1UL << _COLEMAK)) { | 272 | case _DVORAK: |
| 248 | rgblight_set_magenta; | 273 | rgblight_set_green; |
| 249 | } | 274 | rgblight_mode(1); |
| 250 | else if (default_layer & (1UL << _DVORAK)) { | 275 | break; |
| 251 | rgblight_set_green; | 276 | case _RAISE: |
| 252 | } | 277 | rgblight_set_yellow; |
| 253 | else if (default_layer & (1UL << _WORKMAN)) { | 278 | rgblight_mode(5); |
| 254 | rgblight_set_purple; | 279 | break; |
| 255 | } | 280 | case _LOWER: |
| 256 | else { | 281 | rgblight_set_orange; |
| 257 | rgblight_set_teal; | 282 | rgblight_mode(5); |
| 258 | } | 283 | break; |
| 259 | rgblight_mode(1); | 284 | case _ADJUST: |
| 260 | break; | 285 | rgblight_set_red; |
| 261 | case _COLEMAK: | 286 | rgblight_mode(23); |
| 262 | rgblight_set_magenta; | 287 | break; |
| 263 | rgblight_mode(1); | 288 | case 6: |
| 264 | break; | 289 | rgblight_set_blue; |
| 265 | case _DVORAK: | 290 | break; |
| 266 | rgblight_set_green; | 291 | case _QWERTY: |
| 267 | rgblight_mode(1); | 292 | if (default_layer & (1UL << _COLEMAK)) { |
| 268 | break; | 293 | rgblight_set_magenta; |
| 269 | case _RAISE: | 294 | } |
| 270 | rgblight_set_blue; | 295 | else if (default_layer & (1UL << _DVORAK)) { |
| 271 | rgblight_mode(2); | 296 | rgblight_set_green; |
| 272 | break; | ||
| 273 | case _LOWER: | ||
| 274 | rgblight_set_orange; | ||
| 275 | rgblight_mode(3); | ||
| 276 | break; | ||
| 277 | case _ADJUST: | ||
| 278 | rgblight_set_red; | ||
| 279 | rgblight_mode(17); | ||
| 280 | break; | ||
| 281 | case 6: | ||
| 282 | rgblight_set_urine; | ||
| 283 | break; | ||
| 284 | } | 297 | } |
| 285 | has_layer_changed = false; | 298 | else if (default_layer & (1UL << _WORKMAN)) { |
| 299 | rgblight_set_purple; | ||
| 300 | } | ||
| 301 | else { | ||
| 302 | rgblight_set_teal; | ||
| 303 | } | ||
| 304 | rgblight_mode(1); | ||
| 305 | break; | ||
| 286 | } | 306 | } |
| 287 | 307 | #endif | |
| 288 | }; | 308 | return state; |
| 289 | #endif \ No newline at end of file | 309 | } |
diff --git a/keyboards/orthodox/keymaps/drashna/rules.mk b/keyboards/orthodox/keymaps/drashna/rules.mk index 4980c0315..bb4aad689 100644 --- a/keyboards/orthodox/keymaps/drashna/rules.mk +++ b/keyboards/orthodox/keymaps/drashna/rules.mk | |||
| @@ -1,8 +1,11 @@ | |||
| 1 | CONSOLE_ENABLE = no | 1 | CONSOLE_ENABLE = no |
| 2 | TAP_DANCE_ENABLE = yes | 2 | TAP_DANCE_ENABLE = no |
| 3 | RGBLIGHT_ENABLE = no | 3 | RGBLIGHT_ENABLE = yes |
| 4 | AUDIO_ENABLE = no | ||
| 4 | MOUSEKEY_ENABLE = no | 5 | MOUSEKEY_ENABLE = no |
| 5 | 6 | NKRO_ENABLE = yes | |
| 7 | FAUXCLICKY_ENABLE = no | ||
| 8 | EXTRAFLAGS = -flto | ||
| 6 | 9 | ||
| 7 | ifndef QUANTUM_DIR | 10 | ifndef QUANTUM_DIR |
| 8 | include ../../../../Makefile | 11 | include ../../../../Makefile |
diff --git a/keyboards/viterbi/keymaps/drashna/config.h b/keyboards/viterbi/keymaps/drashna/config.h index dabff8f96..13c17b7ba 100644 --- a/keyboards/viterbi/keymaps/drashna/config.h +++ b/keyboards/viterbi/keymaps/drashna/config.h | |||
| @@ -37,5 +37,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
| 37 | #define RGBLIGHT_HUE_STEP 8 | 37 | #define RGBLIGHT_HUE_STEP 8 |
| 38 | #define RGBLIGHT_SAT_STEP 8 | 38 | #define RGBLIGHT_SAT_STEP 8 |
| 39 | #define RGBLIGHT_VAL_STEP 8 | 39 | #define RGBLIGHT_VAL_STEP 8 |
| 40 | #define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2 | ||
| 41 | #define RGBLIGHT_EFFECT_SNAKE_LENGTH 2 | ||
| 42 | #define RGBLIGHT_EFFECT_BREATHE_CENTER 1 | ||
| 43 | |||
| 40 | 44 | ||
| 41 | #endif | 45 | #endif |
diff --git a/keyboards/viterbi/keymaps/drashna/keymap.c b/keyboards/viterbi/keymaps/drashna/keymap.c index e227b472f..acddcb741 100644 --- a/keyboards/viterbi/keymaps/drashna/keymap.c +++ b/keyboards/viterbi/keymaps/drashna/keymap.c | |||
| @@ -10,14 +10,16 @@ extern keymap_config_t keymap_config; | |||
| 10 | // entirely and just use numbers. | 10 | // entirely and just use numbers. |
| 11 | #define _NUMNAV 0 | 11 | #define _NUMNAV 0 |
| 12 | #define _DIABLO 1 | 12 | #define _DIABLO 1 |
| 13 | #define _MACROS 2 | 13 | #define _GAMEPAD 2 |
| 14 | #define _GAMEPAD 3 | 14 | #define _MACROS 3 |
| 15 | #define _MEDIA 4 | 15 | #define _MEDIA 4 |
| 16 | #define _COVECUBE 5 | ||
| 16 | 17 | ||
| 17 | 18 | ||
| 18 | enum custom_keycodes { | 19 | enum custom_keycodes { |
| 19 | KC_DIABLO_CLEAR = SAFE_RANGE, | 20 | KC_DIABLO_CLEAR = SAFE_RANGE, |
| 20 | KC_P00, | 21 | KC_P00, |
| 22 | KC_MAKE, | ||
| 21 | KC_OVERWATCH, | 23 | KC_OVERWATCH, |
| 22 | KC_SALT, | 24 | KC_SALT, |
| 23 | KC_MORESALT, | 25 | KC_MORESALT, |
| @@ -27,33 +29,33 @@ enum custom_keycodes { | |||
| 27 | KC_DOOMFIST, | 29 | KC_DOOMFIST, |
| 28 | KC_JUSTGAME, | 30 | KC_JUSTGAME, |
| 29 | KC_GLHF, | 31 | KC_GLHF, |
| 30 | KC_TORB | 32 | KC_TORB, |
| 33 | KC_AIM | ||
| 31 | }; | 34 | }; |
| 32 | 35 | ||
| 33 | // Fillers to make layering more clear | 36 | // Fillers to make layering more clear |
| 34 | #define _______ KC_TRNS | 37 | #define _______ KC_TRNS |
| 35 | #define XXXXXXX KC_NO | 38 | #define XXXXXXX KC_NO |
| 36 | #define MACROS TG(_MACROS) | 39 | #define MACROS TG(_MACROS) |
| 37 | #define DIABLO TG(_DIABLO) | 40 | #define DIABLO TG(_DIABLO) |
| 38 | #define GAMEPAD TG(_GAMEPAD) | 41 | #define GAMEPAD TG(_GAMEPAD) |
| 39 | #define MEDIA TG(_MEDIA) | 42 | #define MEDIA TG(_MEDIA) |
| 43 | #define COVECUBE TG(_COVECUBE) | ||
| 40 | 44 | ||
| 41 | 45 | ||
| 42 | bool is_overwatch = false; | 46 | bool is_overwatch = false; |
| 43 | 47 | ||
| 44 | //This is both for underglow, and Diablo 3 macros | ||
| 45 | static uint8_t current_layer = 0; | ||
| 46 | bool has_layer_changed = true; | ||
| 47 | 48 | ||
| 48 | 49 | #ifdef RGBLIGHT_ENABLE | |
| 49 | #define rgblight_set_blue rgblight_sethsv (0xFF, 0xFF, 0xFF); | 50 | #define rgblight_set_blue rgblight_sethsv (0xFF, 0xFF, 0xFF); |
| 50 | #define rgblight_set_red rgblight_sethsv(0x00, 0xFF, 0xFF); | 51 | #define rgblight_set_red rgblight_sethsv (0x00, 0xFF, 0xFF); |
| 51 | #define rgblight_set_green rgblight_sethsv (0x78, 0xFF, 0xFF); | 52 | #define rgblight_set_green rgblight_sethsv (0x78, 0xFF, 0xFF); |
| 52 | #define rgblight_set_orange rgblight_sethsv (0x1E, 0xFF, 0xFF); | 53 | #define rgblight_set_orange rgblight_sethsv (0x1E, 0xFF, 0xFF); |
| 53 | #define rgblight_set_teal rgblight_sethsv (0xC3, 0xFF, 0xFF); | 54 | #define rgblight_set_teal rgblight_sethsv (0xC3, 0xFF, 0xFF); |
| 54 | #define rgblight_set_magenta rgblight_sethsv (0x12C, 0xFF, 0xFF); | 55 | #define rgblight_set_magenta rgblight_sethsv (0x12C, 0xFF, 0xFF); |
| 55 | #define rgblight_set_urine rgblight_sethsv (0x3C, 0xFF, 0xFF); | 56 | #define rgblight_set_yellow rgblight_sethsv (0x3C, 0xFF, 0xFF); |
| 56 | #define rgblight_set_purple rgblight_sethsv (0x10E, 0xFF, 0xFF); | 57 | #define rgblight_set_purple rgblight_sethsv (0x10E, 0xFF, 0xFF); |
| 58 | #endif | ||
| 57 | 59 | ||
| 58 | #ifdef TAP_DANCE_ENABLE | 60 | #ifdef TAP_DANCE_ENABLE |
| 59 | //define diablo macro timer variables | 61 | //define diablo macro timer variables |
| @@ -122,77 +124,71 @@ qk_tap_dance_action_t tap_dance_actions[] = { | |||
| 122 | 124 | ||
| 123 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | 125 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |
| 124 | 126 | ||
| 125 | /* QWERTY | ||
| 126 | * ,------------------------------------------------. ,------------------------------------------------. | ||
| 127 | * | Ins | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Bksp | Del | | ||
| 128 | * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| | ||
| 129 | * | - | Tab | Q | W | E | R | T | | Y | U | I | O | P | [ | ] | | ||
| 130 | * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| | ||
| 131 | * | = | Esc | A | S | D | F | G | | H | J | K | L | ; | " |Enter | | ||
| 132 | * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| | ||
| 133 | * | Pg Up| Shift| Z | X | C | V | B | | N | M | , | . | / | Home | End | | ||
| 134 | * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| | ||
| 135 | * | Pg Dn|Adjust| Ctrl | Alt | GUI |Lower |Space | |Space |Raise | Left | Down | Up | Right| \ | | ||
| 136 | * `------------------------------------------------' `------------------------------------------------' | ||
| 137 | */ | ||
| 138 | [_NUMNAV] = KEYMAP( | 127 | [_NUMNAV] = KEYMAP( |
| 139 | MACROS, DIABLO, GAMEPAD, KC_NLCK, KC_SCLK, KC_PTSC, KC_PSLS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ | 128 | MACROS, DIABLO, GAMEPAD, KC_NLCK, KC_SLCK, KC_COLN, KC_PSLS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ |
| 140 | MEDIA, XXXXXXX, XXXXXXX, KC_P7, KC_P8, KC_P9, KC_PAST, 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, \ |
| 141 | KC_HOME, KC_DEL, KC_PGUP, KC_P4, KC_P5, KC_P6, KC_PMNS, 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, \ |
| 142 | KC_END, KC_UP, KC_PGDN, KC_P1, KC_P2, KC_P3, KC_PPLS, 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, \ |
| 143 | KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_P00, KC_PDOT, KC_PENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \ | 132 | KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_P00, KC_PDOT, KC_PENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \ |
| 144 | ), | 133 | ), |
| 145 | 134 | ||
| 146 | /* Lower | ||
| 147 | * ,------------------------------------------------. ,------------------------------------------------. | ||
| 148 | * | | ~ | F1 | F3 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | F12 | | ||
| 149 | * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| | ||
| 150 | * | _ | | ! | @ | # | $ | % | | ^ | & | * | ( | ) | { | } | | ||
| 151 | * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| | ||
| 152 | * | + | | F1 | F2 | F3 | F4 | F5 | | F6 | _ | + | { | } | | | | ||
| 153 | * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| | ||
| 154 | * | | | F7 | F8 | F9 | F10 | F11 | | F12 | | | | | | | | ||
| 155 | * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| | ||
| 156 | * | | | | | | | | | | | Next | Vol- | Vol+ | Play | | | ||
| 157 | * `------------------------------------------------' `------------------------------------------------' | ||
| 158 | */ | ||
| 159 | [_DIABLO] = KEYMAP( | 135 | [_DIABLO] = KEYMAP( |
| 160 | _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ | 136 | KC_ESC, DIABLO, KC_V, KC_D, XXXXXXX, XXXXXXX, KC_L, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ |
| 161 | _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ | 137 | KC_TAB, KC_S, KC_F, KC_I, KC_M, KC_T, KC_J, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ |
| 162 | _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ | 138 | KC_Q, KC_1, KC_2, KC_3, KC_4, KC_G, KC_F, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ |
| 163 | _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ | 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, \ |
| 164 | _______, _______, _______, _______, _______, _______, _______, 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 \ |
| 165 | ), | 141 | ), |
| 166 | |||
| 167 | 142 | ||
| 143 | [_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 | 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_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 | ), | ||
| 150 | |||
| 168 | [_MACROS] = KEYMAP( | 151 | [_MACROS] = KEYMAP( |
| 169 | _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ | 152 | MACROS, XXXXXXX, GAMEPAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ |
| 170 | _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ | 153 | XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ |
| 171 | _______, _______, _______, _______, _______, _______, _______, 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, \ |
| 172 | _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ | 155 | KC_GLHF, KC_GOODGAME, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ |
| 173 | _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \ | 156 | KC_SALT, KC_MORESALT, KC_SALTHARD, KC_JUSTGAME, KC_AIM, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \ |
| 157 | ), | ||
| 158 | |||
| 159 | [_COVECUBE] = KEYMAP( | ||
| 160 | COVECUBE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ | ||
| 161 | XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ | ||
| 162 | XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ | ||
| 163 | XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ | ||
| 164 | XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \ | ||
| 174 | ), | 165 | ), |
| 175 | 166 | ||
| 176 | [_MEDIA] = KEYMAP( | 167 | [_MEDIA] = KEYMAP( |
| 177 | _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ | 168 | RESET, KC_MAKE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ |
| 178 | _______, _______, _______, _______, _______, _______, _______, 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, \ |
| 179 | _______, _______, _______, _______, _______, _______, _______, 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, \ |
| 180 | _______, _______, _______, _______, _______, _______, _______, 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, \ |
| 181 | _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \ | 172 | KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \ |
| 182 | ) | 173 | ) |
| 183 | 174 | ||
| 175 | |||
| 184 | }; | 176 | }; |
| 185 | 177 | ||
| 186 | 178 | ||
| 187 | 179 | ||
| 188 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | 180 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { |
| 189 | uint16_t kc; | 181 | uint16_t kc; |
| 190 | if (is_overwatch) { | 182 | if (is_overwatch) { |
| 191 | kc = KC_BSPC; | 183 | kc = KC_BSPC; |
| 192 | } | 184 | } |
| 193 | else { | 185 | else { |
| 194 | kc = KC_ENTER; | 186 | kc = KC_ENTER; |
| 195 | } | 187 | } |
| 188 | // Once a delay command is added to "SEND_STRING", | ||
| 189 | // replace these with X_BSPC and X_ENTER instead. | ||
| 190 | // and add "SS_TAP(kc) SS_DELAY(50)" to all of the | ||
| 191 | // SEND_STRING commands, to compress things. | ||
| 196 | switch (keycode) { | 192 | switch (keycode) { |
| 197 | #ifdef TAP_DANCE_ENABLE | 193 | #ifdef TAP_DANCE_ENABLE |
| 198 | case KC_DIABLO_CLEAR: // reset all Diable timers, disabling them | 194 | case KC_DIABLO_CLEAR: // reset all Diable timers, disabling them |
| @@ -215,11 +211,19 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
| 215 | } | 211 | } |
| 216 | return false; | 212 | return false; |
| 217 | break; | 213 | break; |
| 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; | ||
| 218 | case KC_OVERWATCH: // reset all Diable timers, disabling them | 220 | case KC_OVERWATCH: // reset all Diable timers, disabling them |
| 219 | if (record->event.pressed) { | 221 | if (record->event.pressed) { |
| 220 | is_overwatch = !is_overwatch; | 222 | is_overwatch = !is_overwatch; |
| 221 | has_layer_changed = true; | ||
| 222 | } | 223 | } |
| 224 | #ifdef RGBLIGHT_ENABLE | ||
| 225 | is_overwatch ? rgblight_mode(17) : rgblight_mode(18); | ||
| 226 | #endif | ||
| 223 | return false; | 227 | return false; |
| 224 | break; | 228 | break; |
| 225 | case KC_SALT: | 229 | case KC_SALT: |
| @@ -227,9 +231,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
| 227 | register_code(kc); | 231 | register_code(kc); |
| 228 | unregister_code(kc); | 232 | unregister_code(kc); |
| 229 | _delay_ms(50); | 233 | _delay_ms(50); |
| 230 | SEND_STRING("Salt, salt, salt..."); | 234 | SEND_STRING("Salt, salt, salt..." SS_TAP(X_ENTER)); |
| 231 | register_code(KC_ENTER); | ||
| 232 | unregister_code(KC_ENTER); | ||
| 233 | } | 235 | } |
| 234 | return false; | 236 | return false; |
| 235 | break; | 237 | break; |
| @@ -238,9 +240,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
| 238 | register_code(kc); | 240 | register_code(kc); |
| 239 | unregister_code(kc); | 241 | unregister_code(kc); |
| 240 | _delay_ms(50); | 242 | _delay_ms(50); |
| 241 | SEND_STRING("Please sir, can I have some more salt?!"); | 243 | SEND_STRING("Please sir, can I have some more salt?!" SS_TAP(X_ENTER)); |
| 242 | register_code(KC_ENTER); | ||
| 243 | unregister_code(KC_ENTER); | ||
| 244 | } | 244 | } |
| 245 | return false; | 245 | return false; |
| 246 | break; | 246 | break; |
| @@ -249,9 +249,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
| 249 | register_code(kc); | 249 | register_code(kc); |
| 250 | unregister_code(kc); | 250 | unregister_code(kc); |
| 251 | _delay_ms(50); | 251 | _delay_ms(50); |
| 252 | SEND_STRING("Your salt only makes my penis that much harder, and even more aggressive!"); | 252 | SEND_STRING("Your salt only makes my penis that much harder, and even more aggressive!" SS_TAP(X_ENTER)); |
| 253 | register_code(KC_ENTER); | ||
| 254 | unregister_code(KC_ENTER); | ||
| 255 | } | 253 | } |
| 256 | return false; | 254 | return false; |
| 257 | break; | 255 | break; |
| @@ -260,9 +258,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
| 260 | register_code(kc); | 258 | register_code(kc); |
| 261 | unregister_code(kc); | 259 | unregister_code(kc); |
| 262 | _delay_ms(50); | 260 | _delay_ms(50); |
| 263 | SEND_STRING("Good game, everyone!"); | 261 | SEND_STRING("Good game, everyone!" SS_TAP(X_ENTER)); |
| 264 | register_code(KC_ENTER); | ||
| 265 | unregister_code(KC_ENTER); | ||
| 266 | } | 262 | } |
| 267 | return false; | 263 | return false; |
| 268 | break; | 264 | break; |
| @@ -271,9 +267,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
| 271 | register_code(kc); | 267 | register_code(kc); |
| 272 | unregister_code(kc); | 268 | unregister_code(kc); |
| 273 | _delay_ms(50); | 269 | _delay_ms(50); |
| 274 | SEND_STRING("Good luck, have fun!!!"); | 270 | SEND_STRING("Good luck, have fun!!!" SS_TAP(X_ENTER)); |
| 275 | register_code(KC_ENTER); | ||
| 276 | unregister_code(KC_ENTER); | ||
| 277 | } | 271 | } |
| 278 | return false; | 272 | return false; |
| 279 | break; | 273 | break; |
| @@ -282,48 +276,44 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
| 282 | register_code(kc); | 276 | register_code(kc); |
| 283 | unregister_code(kc); | 277 | unregister_code(kc); |
| 284 | _delay_ms(50); | 278 | _delay_ms(50); |
| 285 | SEND_STRING("Left click to win!"); | 279 | SEND_STRING("Left click to win!" SS_TAP(X_ENTER)); |
| 286 | register_code(KC_ENTER); | ||
| 287 | unregister_code(KC_ENTER); | ||
| 288 | } | 280 | } |
| 289 | return false; | 281 | return false; |
| 290 | break; | 282 | break; |
| 291 | case KC_DOOMFIST: | 283 | case KC_JUSTGAME: |
| 284 | |||
| 292 | if (!record->event.pressed) { | 285 | if (!record->event.pressed) { |
| 293 | register_code(kc); | 286 | register_code(kc); |
| 294 | unregister_code(kc); | 287 | unregister_code(kc); |
| 295 | _delay_ms(50); | 288 | _delay_ms(50); |
| 296 | SEND_STRING("Hey, look at me. I'm Doomfist, and I'm overpowered! All I do is spam punches all day! I'm DPS, tank and defense, rolled into one! All I need is team healing to be complete!"); | 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)); |
| 297 | register_code(KC_ENTER); | ||
| 298 | unregister_code(KC_ENTER); | ||
| 299 | } | 290 | } |
| 300 | return false; | 291 | return false; |
| 301 | break; | 292 | break; |
| 302 | case KC_JUSTGAME: | 293 | case KC_TORB: |
| 303 | 294 | ||
| 304 | if (!record->event.pressed) { | 295 | if (!record->event.pressed) { |
| 305 | register_code(kc); | 296 | register_code(kc); |
| 306 | unregister_code(kc); | 297 | unregister_code(kc); |
| 307 | _delay_ms(50); | 298 | _delay_ms(50); |
| 308 | 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."); | 299 | SEND_STRING("That was positively riveting! SS_TAP(X_ENTER)"); |
| 309 | register_code(KC_ENTER); | ||
| 310 | unregister_code(KC_ENTER); | ||
| 311 | } | 300 | } |
| 312 | return false; | 301 | return false; |
| 313 | break; | 302 | break; |
| 314 | case KC_TORB: | 303 | case KC_AIM: |
| 315 | 304 | ||
| 316 | if (!record->event.pressed) { | 305 | if (!record->event.pressed) { |
| 317 | register_code(kc); | 306 | register_code(kc); |
| 318 | unregister_code(kc); | 307 | unregister_code(kc); |
| 319 | _delay_ms(50); | 308 | _delay_ms(50); |
| 320 | SEND_STRING("That was positively riveting!"); | 309 | SEND_STRING("That aim is absolutely amazing. It's almost like you're a machine!" SS_TAP(X_ENTER)); |
| 321 | register_code(KC_ENTER); | 310 | _delay_ms(50); |
| 322 | unregister_code(KC_ENTER); | 311 | SEND_STRING("Wait! That aim is TOO good! You're clearly using an aim hack! CHEATER!" SS_TAP(X_ENTER)); |
| 323 | } | 312 | } |
| 324 | return false; | 313 | return false; |
| 325 | break; | 314 | break; |
| 326 | 315 | ||
| 316 | |||
| 327 | } | 317 | } |
| 328 | return true; | 318 | return true; |
| 329 | } | 319 | } |
| @@ -332,7 +322,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
| 332 | 322 | ||
| 333 | // Sends the key press to system, but only if on the Diablo layer | 323 | // Sends the key press to system, but only if on the Diablo layer |
| 334 | void send_diablo_keystroke(uint8_t diablo_key) { | 324 | void send_diablo_keystroke(uint8_t diablo_key) { |
| 335 | if (current_layer == _DIABLO) { | 325 | if (biton32(layer_state) == _DIABLO) { |
| 336 | switch (diablo_key) { | 326 | switch (diablo_key) { |
| 337 | case 0: | 327 | case 0: |
| 338 | SEND_STRING("1"); | 328 | SEND_STRING("1"); |
| @@ -366,48 +356,51 @@ void run_diablo_macro_check(void) { | |||
| 366 | #endif | 356 | #endif |
| 367 | 357 | ||
| 368 | 358 | ||
| 369 | void matrix_scan_user(void) { // runs frequently to update info | 359 | void matrix_init_user(void) { // Runs boot tasks for keyboard |
| 370 | uint8_t layer = biton32(layer_state); | 360 | #ifdef RGBLIGHT_ENABLE |
| 371 | 361 | rgblight_enable(); | |
| 372 | if (layer != current_layer) { | 362 | rgblight_set_teal; |
| 373 | has_layer_changed = true; | 363 | rgblight_mode(1); |
| 374 | current_layer = layer; | 364 | #endif |
| 375 | } | 365 | }; |
| 376 | // Check layer, and apply color if its changed since last check | ||
| 377 | if (has_layer_changed) { | ||
| 378 | 366 | ||
| 379 | switch (layer) { | ||
| 380 | case _NUMNAV: | ||
| 381 | rgblight_set_teal; | ||
| 382 | rgblight_mode(2); | ||
| 383 | break; | ||
| 384 | case _MACROS: | ||
| 385 | rgblight_set_orange; | ||
| 386 | if (is_overwatch) { | ||
| 387 | rgblight_mode(17); | ||
| 388 | } | ||
| 389 | else { | ||
| 390 | rgblight_mode(18); | ||
| 391 | } | ||
| 392 | break; | ||
| 393 | case _DIABLO: | ||
| 394 | rgblight_set_red; | ||
| 395 | rgblight_mode(5); | ||
| 396 | break; | ||
| 397 | case _GAMEPAD: | ||
| 398 | rgblight_set_urine; | ||
| 399 | rgblight_mode(1); | ||
| 400 | break; | ||
| 401 | case _MEDIA: | ||
| 402 | rgblight_set_blue; | ||
| 403 | rgblight_mode(1); | ||
| 404 | break; | ||
| 405 | } | ||
| 406 | has_layer_changed = false; | ||
| 407 | } | ||
| 408 | 367 | ||
| 368 | void matrix_scan_user(void) { // runs frequently to update info | ||
| 409 | #ifdef TAP_DANCE_ENABLE | 369 | #ifdef TAP_DANCE_ENABLE |
| 410 | // Run Diablo 3 macro checking code. | 370 | // Run Diablo 3 macro checking code. |
| 411 | run_diablo_macro_check(); | 371 | run_diablo_macro_check(); |
| 412 | #endif | 372 | #endif |
| 413 | }; \ No newline at end of file | 373 | }; |
| 374 | |||
| 375 | |||
| 376 | uint32_t layer_state_set_kb(uint32_t state) { | ||
| 377 | #ifdef RGBLIGHT_ENABLE | ||
| 378 | rgblight_enable(); | ||
| 379 | switch (biton32(state)) { | ||
| 380 | case _NUMNAV: | ||
| 381 | rgblight_set_teal; | ||
| 382 | rgblight_mode(2); | ||
| 383 | break; | ||
| 384 | case _MACROS: | ||
| 385 | rgblight_set_orange; | ||
| 386 | is_overwatch ? rgblight_mode(17) : rgblight_mode(18); | ||
| 387 | break; | ||
| 388 | case _DIABLO: | ||
| 389 | rgblight_set_red; | ||
| 390 | rgblight_mode(5); | ||
| 391 | break; | ||
| 392 | case _GAMEPAD: | ||
| 393 | rgblight_set_yellow; | ||
| 394 | rgblight_mode(1); | ||
| 395 | break; | ||
| 396 | case _MEDIA: | ||
| 397 | rgblight_set_blue; | ||
| 398 | rgblight_mode(1); | ||
| 399 | break; | ||
| 400 | case _COVECUBE: | ||
| 401 | rgblight_set_green; | ||
| 402 | rgblight_mode(2); | ||
| 403 | } | ||
| 404 | #endif | ||
| 405 | return state; | ||
| 406 | } | ||
diff --git a/keyboards/viterbi/keymaps/drashna/rules.mk b/keyboards/viterbi/keymaps/drashna/rules.mk index f1bb92837..dd5747f1d 100644 --- a/keyboards/viterbi/keymaps/drashna/rules.mk +++ b/keyboards/viterbi/keymaps/drashna/rules.mk | |||
| @@ -2,6 +2,9 @@ CONSOLE_ENABLE = no | |||
| 2 | TAP_DANCE_ENABLE = yes | 2 | TAP_DANCE_ENABLE = yes |
| 3 | RGBLIGHT_ENABLE = yes | 3 | RGBLIGHT_ENABLE = yes |
| 4 | MOUSEKEY_ENABLE = no | 4 | MOUSEKEY_ENABLE = no |
| 5 | NKRO_ENABLE = yes | ||
| 6 | |||
| 7 | EXTRAFLAGS = -flto | ||
| 5 | 8 | ||
| 6 | ifndef QUANTUM_DIR | 9 | ifndef QUANTUM_DIR |
| 7 | include ../../../../Makefile | 10 | include ../../../../Makefile |
