From b79a4cfeba32260a7d17c6e439ccd050416354f7 Mon Sep 17 00:00:00 2001 From: drashna Date: Wed, 1 Nov 2017 00:13:20 -0700 Subject: [PATCH] Updated personal keymaps (#1945) * Add woodpad * Cleanup * Remove misc layouts for woodpad * Move woodpad to handwired * Updated RGB Underglow info * Cleanup macros * Fix odd merge issue * Tweaked RGB lighting stuff * Start to merge orthodox/ergodox keymaps (persistant layers) * Add forced NKRO * Added Colemak and Dvorak layers to default orthodox keymap * Added default layer (qwerty/colemak/dvorak) detection to RGB Underglow * Updated macros and added workman keymaps * Fixed RGB lighting for Workman layout * Add leader keys * Remove force NKRO * Add Viterbi one handed layout and minor tweaks to others * Finishing up Viterbi keyboard layout, and NKRO tweaks to other layouts * Made "make" keystroke universal * Clean up and updates of drashna keymaps * Add workman layer to planck * Update to keymaps * Fix accidental commit because I don't know how to git * Fix makefile toggle code in ez keymap Finish adding RGB code to orthodox * missing underscore in init function declaration * Updated RGB Underglow layer indication code due to discovery of the layer_state_set_kb function * Remove unnecessary planck layout --- .../keymaps/drashna-custom/config.h | 2 - .../keymaps/drashna-custom/keymap.c | 188 ++++++------ .../keymaps/drashna-custom/rules.mk | 7 +- keyboards/ergodox_ez/keymaps/drashna/keymap.c | 87 +++--- keyboards/handwired/woodpad/config.h | 1 + .../woodpad/keymaps/drashna/config.h | 2 +- .../woodpad/keymaps/drashna/keymap.c | 143 ++++----- .../woodpad/keymaps/drashna/rules.mk | 4 +- keyboards/orthodox/keymaps/drashna/config.h | 11 +- keyboards/orthodox/keymaps/drashna/keymap.c | 234 ++++++++------- keyboards/orthodox/keymaps/drashna/rules.mk | 9 +- keyboards/viterbi/keymaps/drashna/config.h | 4 + keyboards/viterbi/keymaps/drashna/keymap.c | 277 +++++++++--------- keyboards/viterbi/keymaps/drashna/rules.mk | 3 + 14 files changed, 502 insertions(+), 470 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 @@ #define RGBLIGHT_EFFECT_BREATHE_CENTER 1 #endif // RGBLIGHT_ENABLE -#define FORCE_NKRO - #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 . //define layer change stuff for underglow indicator bool skip_leds = false; -#define rgblight_set_blue rgblight_sethsv (0xFF, 0xFF, 0xFF); -#define rgblight_set_red rgblight_sethsv(0x00, 0xFF, 0xFF); -#define rgblight_set_green rgblight_sethsv (0x78, 0xFF, 0xFF); -#define rgblight_set_orange rgblight_sethsv (0x1E, 0xFF, 0xFF); -#define rgblight_set_teal rgblight_sethsv (0xC3, 0xFF, 0xFF); -#define rgblight_set_magenta rgblight_sethsv (0x12C, 0xFF, 0xFF); -#define rgblight_set_urine rgblight_sethsv (0x3C, 0xFF, 0xFF); -#define rgblight_set_purple rgblight_sethsv (0x10E, 0xFF, 0xFF); -//This is both for underglow, and Diablo 3 macros - -static uint8_t current_layer = 0; +#ifdef RGBLIGHT_ENABLE +#define rgblight_set_blue rgblight_sethsv (0xFF, 0xFF, 0xFF); +#define rgblight_set_red rgblight_sethsv (0x00, 0xFF, 0xFF); +#define rgblight_set_green rgblight_sethsv (0x78, 0xFF, 0xFF); +#define rgblight_set_orange rgblight_sethsv (0x1E, 0xFF, 0xFF); +#define rgblight_set_teal rgblight_sethsv (0xC3, 0xFF, 0xFF); +#define rgblight_set_magenta rgblight_sethsv (0x12C, 0xFF, 0xFF); +#define rgblight_set_yellow rgblight_sethsv (0x3C, 0xFF, 0xFF); +#define rgblight_set_purple rgblight_sethsv (0x10E, 0xFF, 0xFF); +#endif //define diablo macro timer variables static uint16_t diablo_timer[4]; @@ -136,11 +135,13 @@ void dance_flsh_each(qk_tap_dance_state_t *state, void *user_data) { // and set the underglow to red, because red == bad void dance_flsh_finished(qk_tap_dance_state_t *state, void *user_data) { if (state->count >= 4) { +#ifdef RGBLIGHT_ENABLE rgblight_enable(); rgblight_mode(1); rgblight_setrgb(0xff,0x00,0x00); - reset_keyboard(); +#endif reset_tap_dance(state); + reset_keyboard(); } } @@ -229,7 +230,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LSHIFT, LCTL_T(KC_Z),KC_X, KC_C, KC_V, KC_B, TG(OVERWATCH), LT(SYMB,KC_GRAVE),KC_QUOTE, KC_LGUI, KC_LBRACKET,KC_RBRACKET, - ALT_T(KC_APPLICATION), KC_LEAD, + ALT_T(KC_APPLICATION), KC_LGUI, KC_HOME, KC_SPACE, KC_BSPACE, KC_END, @@ -237,8 +238,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TG(DIABLO), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLASH, KC_H, KC_J, KC_K, KC_L, KC_SCOLON, GUI_T(KC_QUOTE), TG(OVERWATCH), KC_N, KC_M, KC_COMMA, KC_DOT, RCTL_T(KC_SLASH),KC_RSHIFT, - KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_FN1, - KC_LALT, CTL_T(KC_ESCAPE), + KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, TT(SYMB), + KC_LEAD, CTL_T(KC_ESCAPE), KC_PGUP, KC_PGDOWN, KC_DELETE, KC_ENTER ), @@ -280,7 +281,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TG(DIABLO), KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS, KC_H, KC_N, KC_E, KC_I, KC_O, GUI_T(KC_QUOTE), TG(OVERWATCH),KC_K, KC_M, KC_COMM,KC_DOT, RCTL_T(KC_SLASH), KC_RSHIFT, - KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_FN1, + KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, TT(SYMB), KC_LALT, CTL_T(KC_ESC), KC_PGUP, KC_PGDN,KC_DELETE, KC_ENT @@ -323,7 +324,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TG(DIABLO), KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, TG(OVERWATCH),KC_B, KC_M, KC_W, KC_V, RCTL_T(KC_Z), KC_RSHIFT, - KC_LEFT,KC_DOWN,KC_UP, KC_RIGHT, KC_FN1, + KC_LEFT,KC_DOWN,KC_UP, KC_RIGHT, TT(SYMB), KC_LALT, CTL_T(KC_ESC), KC_PGUP, KC_PGDN,KC_DELETE, KC_ENT @@ -366,7 +367,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TG(DIABLO), KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_BSLS, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOTE, TG(OVERWATCH),KC_K, KC_L, KC_COMM,KC_DOT, RCTL_T(KC_SLASH), KC_RSHIFT, - KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_FN1, + KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, TT(SYMB), KC_LALT, CTL_T(KC_ESC), KC_PGUP, KC_PGDN,KC_DELETE, KC_ENT @@ -398,7 +399,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { VRSN, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_DVORAK, KC_MAKEQMK, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRAVE, TD(TD_FLSH), KC_PERC, KC_CIRC, KC_LBRACKET,KC_RBRACKET,KC_TILD, KC_COLEMAK, - KC_NO, KC_AMPR, KC_ASTR, KC_COLN, KC_SCOLON, + KC_TRNS, KC_AMPR, KC_ASTR, KC_COLN, KC_SCOLON, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -540,16 +541,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_TAP_TOGGLE(SYMB), - // FN1 - Momentary Layer 1 (Symbols) -}; - -void action_function(keyrecord_t *event, uint8_t id, uint8_t opt) -{ - -} - void persistent_default_layer_set(uint16_t default_layer) { eeconfig_update_default_layer(default_layer); @@ -558,6 +549,9 @@ void persistent_default_layer_set(uint16_t default_layer) { bool process_record_user(uint16_t keycode, keyrecord_t *record) { +#ifdef CONSOLE_ENABLE + xprintf("KL: row: %u, column: %u, pressed: %u\n", record->event.key.col, record->event.key.row, record->event.pressed); +#endif switch (keycode) { // dynamically generate these. case EPRM: @@ -574,7 +568,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { break; case RGB_SLD: if (record->event.pressed) { +#ifdef RGBLIGHT_ENABLE rgblight_mode(1); +#endif } return false; break; @@ -668,8 +664,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return false; break; case KC_MAKEQMK: - if (record->event.pressed) { - SEND_STRING("make ergodox_ez:drashna-custom:teensy"SS_TAP(X_ENTER)); + if (!record->event.pressed) { + SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP ":teensy"SS_TAP(X_ENTER)); } return false; break; @@ -678,10 +674,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; } +#ifdef TAP_DANCE_ENABLE // Sends the key press to system, but only if on the Diablo layer void send_diablo_keystroke (uint8_t diablo_key) { - if (current_layer == DIABLO) { + if (biton32(layer_state) == DIABLO) { switch (diablo_key) { case 0: SEND_STRING("1"); @@ -713,16 +710,33 @@ void run_diablo_macro_check(void) { } -void matrix_init_user(void) { // Runs boot tasks for keyboard +#endif + +void matrix_init_user(void) { // Runs boot tasks for keyboard +#ifdef RGBLIGHT_ENABLE + uint8_t default_layer = eeconfig_read_default_layer(); + + rgblight_enable(); + if (default_layer & (1UL << COLEMAK)) { + rgblight_set_magenta; + } + else if (default_layer & (1UL << DVORAK)) { + rgblight_set_green; + } + else if (default_layer & (1UL << WORKMAN)) { + rgblight_set_purple; + } + else { + rgblight_set_teal; + } +#endif }; LEADER_EXTERNS(); void matrix_scan_user(void) { // runs frequently to update info uint8_t modifiders = get_mods(); - uint8_t layer = biton32(layer_state); - static bool has_layer_changed = true; if (!skip_leds) { ergodox_board_led_off(); @@ -744,70 +758,29 @@ void matrix_scan_user(void) { // runs frequently to update info } } - if (layer != current_layer) { - has_layer_changed = true; - current_layer = layer; - } - // Check layer, and apply color if its changed since last check - if (has_layer_changed) { - uint8_t default_layer = 0; - default_layer = eeconfig_read_default_layer(); - - switch (layer) { - case SYMB: - rgblight_set_blue; - rgblight_mode(2); - break; - case OVERWATCH: - rgblight_set_orange; - rgblight_mode(17); - break; - case DIABLO: - rgblight_set_red; - rgblight_mode(5); - break; - case MOUS: - rgblight_set_urine; - rgblight_mode(1); - break; - case 7: - rgblight_sethsv (255,255,255); - rgblight_mode(1); - break; - default: - if (default_layer & (1UL << COLEMAK)) { - rgblight_set_green; - } - else if (default_layer & (1UL << DVORAK)) { - rgblight_set_magenta; - } - else if (default_layer & (1UL << WORKMAN)) { - rgblight_set_purple; - } - else { - rgblight_set_teal; - } - rgblight_mode(1); - break; - } - has_layer_changed = false; - } // Run Diablo 3 macro checking code. +#ifdef TAP_DANCE_ENABLE run_diablo_macro_check(); -#ifdef LEADER_KEYS +#endif LEADER_DICTIONARY() { leading = false; leader_end(); SEQ_ONE_KEY(KC_C) { SEND_STRING("Covecube"); } + SEQ_ONE_KEY(KC_D) { + SEND_STRING("StableBit CloudDrive"); + } + SEQ_ONE_KEY(KC_L) { + register_code(KC_LGUI); + register_code(KC_L); + unregister_code(KC_L); + unregister_code(KC_LGUI); + } SEQ_TWO_KEYS(KC_S, KC_D) { SEND_STRING("StableBit DrivePool"); } - SEQ_TWO_KEYS(KC_C, KC_D) { - SEND_STRING("StableBit CloudDrive"); - } SEQ_TWO_KEYS(KC_S, KC_C) { SEND_STRING("StableBit Scanner"); } @@ -815,6 +788,45 @@ void matrix_scan_user(void) { // runs frequently to update info SEND_STRING("StableBit Troubleshooter"); } } -#endif }; +uint32_t layer_state_set_kb(uint32_t state) { +#ifdef RGBLIGHT_ENABLE + uint8_t default_layer = eeconfig_read_default_layer(); + + switch (biton32(state)) { + case SYMB: + rgblight_set_blue; + rgblight_mode(2); + break; + case OVERWATCH: + rgblight_set_orange; + rgblight_mode(17); + break; + case DIABLO: + rgblight_set_red; + rgblight_mode(5); + break; + case MOUS: + rgblight_set_yellow; + rgblight_mode(1); + break; + default: + if (default_layer & (1UL << COLEMAK)) { + rgblight_set_green; + } + else if (default_layer & (1UL << DVORAK)) { + rgblight_set_magenta; + } + else if (default_layer & (1UL << WORKMAN)) { + rgblight_set_purple; + } + else { + rgblight_set_teal; + } + rgblight_mode(1); + break; + } +#endif + return state; +} 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 @@ TAP_DANCE_ENABLE = yes -SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -COMMAND_ENABLE = no # Commands for debug and configuration +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +COMMAND_ENABLE = yes # Commands for debug and configuration RGBLIGHT_ENABLE = yes MIDI_ENABLE = no CONSOLE_ENABLE = no LEADER_KEYS = no + +EXTRAFLAGS = -flto + ifndef QUANTUM_DIR include ../../../../Makefile 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 @@ #define MOUS 2 #ifdef LAYER_UNDERGLOW_LIGHTING -bool has_layer_changed = true; - #define rgblight_set_teal rgblight_setrgb(0x00, 0xFF, 0xFF) #define rgblight_set_red rgblight_setrgb(0xFF, 0x00, 0x00) #define rgblight_set_blue rgblight_setrgb(0x00, 0xFF, 0x00); @@ -100,20 +98,23 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; } +void matrix_init_user(void) { +#ifdef LAYER_UNDERGLOW_LIGHTING + rgblight_enable(); + rgblight_set_teal; + rgblight_mode(1); +#endif - +} void matrix_scan_user(void) { - uint8_t new_layer = biton32(layer_state); - ergodox_board_led_off(); ergodox_right_led_1_off(); ergodox_right_led_2_off(); ergodox_right_led_3_off(); #ifdef LAYER_UNDERGLOW_LIGHTING - static uint8_t old_layer = 0; uint8_t modifiders = get_mods(); if ( modifiders & MODS_SHIFT_MASK) { @@ -124,44 +125,10 @@ void matrix_scan_user(void) { } if ( modifiders & MODS_ALT_MASK) { ergodox_right_led_3_on(); - } - - if (old_layer != new_layer) { - has_layer_changed = true; - old_layer = new_layer; - } - if (has_layer_changed) { - switch (new_layer) { - case 1: - rgblight_set_red; - break; - case 2: - rgblight_set_blue; - break; - case 3: - rgblight_set_green; - break; - case 4: - rgblight_set_yellow; - break; - case 5: - rgblight_setrgb(0xFF, 0xFF, 0x00); - break; - case 6: - rgblight_setrgb(0xFF, 0xFF, 0x00); - break; - case 7: - rgblight_setrgb(0xFF, 0xFF, 0xFF); - break; - default: - rgblight_set_teal; - break; - } - has_layer_changed = false; - } - -#else - switch (new_layer) { + } +#else + uint8_t layer = biton32(layer_state); + switch (layer) { case 1: ergodox_right_led_1_on(); break; @@ -193,3 +160,35 @@ void matrix_scan_user(void) { } #endif }; + +uint32_t layer_state_set_kb(uint32_t state) { +#ifdef LAYER_UNDERGLOW_LIGHTING + switch (biton32(state)) { + case 1: + rgblight_set_red; + break; + case 2: + rgblight_set_blue; + break; + case 3: + rgblight_set_green; + break; + case 4: + rgblight_set_yellow; + break; + case 5: + rgblight_setrgb(0xFF, 0xFF, 0x00); + break; + case 6: + rgblight_setrgb(0xFF, 0xFF, 0x00); + break; + case 7: + rgblight_setrgb(0xFF, 0xFF, 0xFF); + break; + default: + rgblight_set_teal; + break; + } +#endif + return state; +} 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 . // #define BACKLIGHT_BREATHING // #define BACKLIGHT_LEVELS 3 +#define CATERINA_BOOTLOADER /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ #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 @@ #define TAPPING_TERM 200 #endif // TAP_DANCE_ENABLE -#define CATERINA_BOOTLOADER + #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 @@ #define _______ KC_TRNS #define XXXXXXX KC_NO +#ifdef RGBLIGHT_ENABLE +#define rgblight_set_blue rgblight_sethsv (0xFF, 0xFF, 0xFF); +#define rgblight_set_red rgblight_sethsv (0x00, 0xFF, 0xFF); +#define rgblight_set_green rgblight_sethsv (0x78, 0xFF, 0xFF); +#define rgblight_set_orange rgblight_sethsv (0x1E, 0xFF, 0xFF); +#define rgblight_set_teal rgblight_sethsv (0xC3, 0xFF, 0xFF); +#define rgblight_set_magenta rgblight_sethsv (0x12C, 0xFF, 0xFF); +#define rgblight_set_yellow rgblight_sethsv (0x3C, 0xFF, 0xFF); +#define rgblight_set_purple rgblight_sethsv (0x10E, 0xFF, 0xFF); +#endif //define layer change stuff for underglow indicator bool skip_leds = false; bool is_overwatch = false; -//This is both for underglow, and Diablo 3 macros -bool has_layer_changed = false; -static uint8_t current_layer; #ifdef TAP_DANCE_ENABLE //define diablo macro timer variables @@ -65,7 +72,8 @@ enum custom_keycodes { KC_DOOMFIST, KC_JUSTGAME, KC_GLHF, - KC_TORB + KC_TORB, + KC_MAKE }; #ifdef TAP_DANCE_ENABLE @@ -163,7 +171,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_MEDIA] = KEYMAP( /* Base */ RESET, KC_MUTE, KC_VOLD, KC_VOLU,\ - _______, _______, RGB_HUI, RGB_HUD, \ + KC_MAKE, _______, RGB_HUI, RGB_HUD, \ KC_MPLY, KC_MSTP, KC_MPRV, KC_MNXT, \ RGB_TOG, RGB_MOD, RGB_SAI, RGB_VAI, \ _______, _______, RGB_SAD, RGB_VAD \ @@ -171,22 +179,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -const uint16_t PROGMEM fn_actions[] = { -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - switch (id) { - case 0: - if (record->event.pressed) { - // Output Keyboard Firmware info - SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP ); - return false; - } - } - return MACRO_NONE; -}; void numlock_led_on(void) { PORTF |= (1<<7); } @@ -216,11 +209,13 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return false; break; #endif - case KC_OVERWATCH: // reset all Diable timers, disabling them + case KC_OVERWATCH: if (record->event.pressed) { is_overwatch = !is_overwatch; - has_layer_changed = true; } +#ifdef RGBLIGHT_ENABLE + is_overwatch ? rgblight_mode(17) : rgblight_mode(18); +#endif return false; break; case KC_SALT: @@ -324,6 +319,13 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; + case KC_MAKE: + if (!record->event.pressed) { + SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP SS_TAP(X_ENTER)); + } + return false; + break; + } return true; @@ -332,7 +334,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { // Sends the key press to system, but only if on the Diablo layer void send_diablo_keystroke(uint8_t diablo_key) { - if (current_layer == _DIABLO) { + if (biton32(layer_state) == _DIABLO) { switch (diablo_key) { case 0: SEND_STRING("1"); @@ -365,10 +367,16 @@ void run_diablo_macro_check(void) { } #endif void matrix_init_user(void) { - has_layer_changed = true; // set Numlock LED to output and low DDRF |= (1<<7); PORTF &= ~(1<<7); + +#ifdef RGBLIGHT_ENABLE + rgblight_enable(); + rgblight_set_teal; + rgblight_mode(1); +#endif + if (!(host_keyboard_leds() & (1 << USB_LED_NUM_LOCK)) ){ register_code(KC_NUMLOCK); unregister_code(KC_NUMLOCK); @@ -376,69 +384,46 @@ void matrix_init_user(void) { } void matrix_scan_user(void) { - uint8_t layer = biton32(layer_state); -#ifdef RGBLIGHT_ENABLE - numlock_led_off(); - // Check layer, and apply color if its changed since last check - switch (layer) { - case _NAV: - if (has_layer_changed) { - rgblight_sethsv(240, 255, 255); - rgblight_mode(1); - } - break; - case _MACROS: - if (has_layer_changed) { - rgblight_sethsv(30, 255, 255); - if (is_overwatch) { - rgblight_mode(17); - } else { - rgblight_mode(18); - } - } - if (is_overwatch) { - numlock_led_on(); - } - break; - case _DIABLO: - if (has_layer_changed) { - rgblight_sethsv(0, 255, 255); - rgblight_mode(5); - } - break; - case _MEDIA: - if (has_layer_changed) { - rgblight_sethsv(120, 255, 255); - rgblight_mode(22); - } - break; - default: - if (has_layer_changed) { - rgblight_sethsv(195, 255, 255); - rgblight_mode(1); - } - break; + if (is_overwatch && biton32(layer_state) == _MACROS) { + numlock_led_on(); } - #endif - // Update layer status at the end, so this sets the default color - // rather than relying on the init, which was unreliably... - // Probably due to a timing issue, but this requires no additional code - if (current_layer == layer) { - has_layer_changed = false; - } - else { - has_layer_changed = true; - current_layer = layer; - } // Run Diablo 3 macro checking code. #ifdef TAP_DANCE_ENABLE run_diablo_macro_check(); #endif } +uint32_t layer_state_set_kb(uint32_t state) { +#ifdef RGBLIGHT_ENABLE +// Check layer, and apply color if its changed since last check + switch (biton32(state)) { + case _NAV: + rgblight_set_blue; + rgblight_mode(1); + break; + case _MACROS: + rgblight_set_orange; + is_overwatch ? rgblight_mode(17) : rgblight_mode(18); + break; + case _DIABLO: + rgblight_set_red; + rgblight_mode(5); + break; + case _MEDIA: + rgblight_set_green; + rgblight_mode(22); + break; + default: + rgblight_set_teal; + rgblight_mode(1); + break; + } -void led_set_user(uint8_t usb_led) { - +#endif + return state; +} +void led_set_user(uint8_t usb_led) { + } 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 @@ TAP_DANCE_ENABLE = yes SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -COMMAND_ENABLE = no # Commands for debug and configuration +COMMAND_ENABLE = yes # Commands for debug and configuration RGBLIGHT_ENABLE = yes MIDI_ENABLE = no CONSOLE_ENABLE = no +EXTRAFLAGS = -flto + ifndef QUANTUM_DIR include ../../../../Makefile 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 . #endif +/* key combination for command */ +#ifdef IS_COMMAND +#undef IS_COMMAND +#endif +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_LALT)) \ +) + + #ifdef RGBLIGHT_ENABLE #define RGB_DI_PIN D3 -#define RGBLED_NUM 12 // Number of LEDs +#define RGBLED_NUM 16 // Number of LEDs #define RGBLIGHT_ANIMATIONS #define RGBLIGHT_HUE_STEP 12 #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 { LOWER, RAISE, ADJUST, + KC_MAKE }; // Fillers to make layering more clear @@ -52,21 +53,17 @@ enum custom_keycodes { #define XXXXXXX KC_NO #ifdef RGBLIGHT_ENABLE -//define layer change stuff for underglow indicator -#define rgblight_set_blue rgblight_sethsv (0xFF, 0xFF, 0xFF); -#define rgblight_set_red rgblight_sethsv(0x00, 0xFF, 0xFF); -#define rgblight_set_green rgblight_sethsv (0x78, 0xFF, 0xFF); -#define rgblight_set_orange rgblight_sethsv (0x1E, 0xFF, 0xFF); -#define rgblight_set_teal rgblight_sethsv (0xC3, 0xFF, 0xFF); -#define rgblight_set_magenta rgblight_sethsv (0x12C, 0xFF, 0xFF); -#define rgblight_set_urine rgblight_sethsv (0x3C, 0xFF, 0xFF); -#define rgblight_set_purple rgblight_sethsv (0x10E, 0xFF, 0xFF); - -//This is both for underglow, and Diablo 3 macros -bool has_layer_changed = true; -static uint8_t current_layer = 10; +#define rgblight_set_blue rgblight_sethsv (0xFF, 0xFF, 0xFF); +#define rgblight_set_red rgblight_sethsv (0x00, 0xFF, 0xFF); +#define rgblight_set_green rgblight_sethsv (0x78, 0xFF, 0xFF); +#define rgblight_set_orange rgblight_sethsv (0x1E, 0xFF, 0xFF); +#define rgblight_set_teal rgblight_sethsv (0xC3, 0xFF, 0xFF); +#define rgblight_set_magenta rgblight_sethsv (0x12C, 0xFF, 0xFF); +#define rgblight_set_yellow rgblight_sethsv (0x3C, 0xFF, 0xFF); +#define rgblight_set_purple rgblight_sethsv (0x10E, 0xFF, 0xFF); #endif + #ifdef TAP_DANCE_ENABLE enum { TD_FLSH = 0, @@ -84,8 +81,8 @@ void dance_flsh_finished(qk_tap_dance_state_t *state, void *user_data) { rgblight_mode(1); rgblight_setrgb(0xff, 0x00, 0x00); #endif - reset_keyboard(); reset_tap_dance(state); + reset_keyboard(); } } @@ -137,9 +134,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_ADJUST] = KEYMAP( \ - _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \ + KC_MAKE, RESET, TD(TD_FLSH), _______, _______, _______, _______, _______, _______, _______, _______, _______, \ _______, _______, _______, AU_ON, AU_OFF, AG_NORM, _______, XXXXXXX, _______, _______, XXXXXXX, _______, AG_SWAP, QWERTY, COLEMAK, DVORAK, WORKMAN, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MAGIC_TOGGLE_NKRO, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MAGIC_TOGGLE_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY \ ) @@ -149,6 +146,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { float tone_qwerty[][2] = SONG(QWERTY_SOUND); float tone_dvorak[][2] = SONG(DVORAK_SOUND); float tone_colemak[][2] = SONG(COLEMAK_SOUND); +float tone_workman[][2] = SONG(PLOVER_SONG); #endif void persistent_default_layer_set(uint16_t default_layer) { @@ -159,23 +157,23 @@ void persistent_default_layer_set(uint16_t default_layer) { bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case QWERTY: - if (record->event.pressed) { + if (record->event.pressed) { #ifdef AUDIO_ENABLE - PLAY_SONG(tone_qwerty); + PLAY_SONG(tone_qwerty); #endif - persistent_default_layer_set(1UL<<_QWERTY); - } - return false; - break; + persistent_default_layer_set(1UL<<_QWERTY); + } + return false; + break; case COLEMAK: - if (record->event.pressed) { + if (record->event.pressed) { #ifdef AUDIO_ENABLE - PLAY_SONG(tone_colemak); + PLAY_SONG(tone_colemak); #endif - persistent_default_layer_set(1UL<<_COLEMAK); - } - return false; - break; + persistent_default_layer_set(1UL<<_COLEMAK); + } + return false; + break; case DVORAK: if (record->event.pressed) { #ifdef AUDIO_ENABLE @@ -188,102 +186,124 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case WORKMAN: if (record->event.pressed) { #ifdef AUDIO_ENABLE - PLAY_SONG(tone_dvorak); + PLAY_SONG(tone_workman); #endif persistent_default_layer_set(1UL << _WORKMAN); } return false; break; case LOWER: - if (record->event.pressed) { - layer_on(_LOWER); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } else { - layer_off(_LOWER); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } - return false; - break; + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; case RAISE: - if (record->event.pressed) { - layer_on(_RAISE); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } else { - layer_off(_RAISE); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } - return false; - break; + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; case ADJUST: - if (record->event.pressed) { - layer_on(_ADJUST); - } else { - layer_off(_ADJUST); - } - return false; - break; + if (record->event.pressed) { + layer_on(_ADJUST); + } else { + layer_off(_ADJUST); + } + return false; + break; + case KC_MAKE: + if (!record->event.pressed) { +#ifdef RGBLIGHT_ENABLE + SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP SS_TAP(X_ENTER)); +#else + SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP " RGBLIGHT_ENABLE=no"SS_TAP(X_ENTER)); +#endif + } + return false; + break; + } return true; } + +void matrix_init_user(void) { // Runs boot tasks for keyboard #ifdef RGBLIGHT_ENABLE + uint8_t default_layer = eeconfig_read_default_layer(); + rgblight_enable(); + if (default_layer & (1UL << _COLEMAK)) { + rgblight_set_magenta; +} + else if (default_layer & (1UL << _DVORAK)) { + rgblight_set_green; + } + else if (default_layer & (1UL << _WORKMAN)) { + rgblight_set_purple; + } + else { + rgblight_set_teal; + } +#endif - +}; void matrix_scan_user(void) { // runs frequently to update info - uint8_t layer = biton32(layer_state); - if (layer != current_layer) { - has_layer_changed = true; - current_layer = layer; - } - // Check layer, and apply color if its changed since last check - if (has_layer_changed) { - uint8_t default_layer = 0; - default_layer = eeconfig_read_default_layer(); +}; - switch (layer) { - case _QWERTY: - if (default_layer & (1UL << _COLEMAK)) { - rgblight_set_magenta; - } - else if (default_layer & (1UL << _DVORAK)) { - rgblight_set_green; - } - else if (default_layer & (1UL << _WORKMAN)) { - rgblight_set_purple; - } - else { - rgblight_set_teal; - } - rgblight_mode(1); - break; - case _COLEMAK: - rgblight_set_magenta; - rgblight_mode(1); - break; - case _DVORAK: - rgblight_set_green; - rgblight_mode(1); - break; - case _RAISE: - rgblight_set_blue; - rgblight_mode(2); - break; - case _LOWER: - rgblight_set_orange; - rgblight_mode(3); - break; - case _ADJUST: - rgblight_set_red; - rgblight_mode(17); - break; - case 6: - rgblight_set_urine; - break; +uint32_t layer_state_set_kb(uint32_t state) { // runs on layer switch +#ifdef RGBLIGHT_ENABLE + uint8_t default_layer = eeconfig_read_default_layer(); + + switch (biton32(state)) { + case _COLEMAK: + rgblight_set_magenta; + rgblight_mode(1); + break; + case _DVORAK: + rgblight_set_green; + rgblight_mode(1); + break; + case _RAISE: + rgblight_set_yellow; + rgblight_mode(5); + break; + case _LOWER: + rgblight_set_orange; + rgblight_mode(5); + break; + case _ADJUST: + rgblight_set_red; + rgblight_mode(23); + break; + case 6: + rgblight_set_blue; + break; + case _QWERTY: + if (default_layer & (1UL << _COLEMAK)) { + rgblight_set_magenta; } - has_layer_changed = false; + else if (default_layer & (1UL << _DVORAK)) { + rgblight_set_green; + } + else if (default_layer & (1UL << _WORKMAN)) { + rgblight_set_purple; + } + else { + rgblight_set_teal; + } + rgblight_mode(1); + break; } - - }; -#endif \ No newline at end of file +#endif + return state; +} 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 @@ CONSOLE_ENABLE = no -TAP_DANCE_ENABLE = yes -RGBLIGHT_ENABLE = no +TAP_DANCE_ENABLE = no +RGBLIGHT_ENABLE = yes +AUDIO_ENABLE = no MOUSEKEY_ENABLE = no - +NKRO_ENABLE = yes +FAUXCLICKY_ENABLE = no +EXTRAFLAGS = -flto ifndef QUANTUM_DIR 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 . #define RGBLIGHT_HUE_STEP 8 #define RGBLIGHT_SAT_STEP 8 #define RGBLIGHT_VAL_STEP 8 +#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2 +#define RGBLIGHT_EFFECT_SNAKE_LENGTH 2 +#define RGBLIGHT_EFFECT_BREATHE_CENTER 1 + #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; // entirely and just use numbers. #define _NUMNAV 0 #define _DIABLO 1 -#define _MACROS 2 -#define _GAMEPAD 3 +#define _GAMEPAD 2 +#define _MACROS 3 #define _MEDIA 4 +#define _COVECUBE 5 enum custom_keycodes { KC_DIABLO_CLEAR = SAFE_RANGE, KC_P00, + KC_MAKE, KC_OVERWATCH, KC_SALT, KC_MORESALT, @@ -27,33 +29,33 @@ enum custom_keycodes { KC_DOOMFIST, KC_JUSTGAME, KC_GLHF, - KC_TORB + KC_TORB, + KC_AIM }; // Fillers to make layering more clear #define _______ KC_TRNS #define XXXXXXX KC_NO -#define MACROS TG(_MACROS) -#define DIABLO TG(_DIABLO) -#define GAMEPAD TG(_GAMEPAD) -#define MEDIA TG(_MEDIA) +#define MACROS TG(_MACROS) +#define DIABLO TG(_DIABLO) +#define GAMEPAD TG(_GAMEPAD) +#define MEDIA TG(_MEDIA) +#define COVECUBE TG(_COVECUBE) bool is_overwatch = false; -//This is both for underglow, and Diablo 3 macros -static uint8_t current_layer = 0; -bool has_layer_changed = true; - -#define rgblight_set_blue rgblight_sethsv (0xFF, 0xFF, 0xFF); -#define rgblight_set_red rgblight_sethsv(0x00, 0xFF, 0xFF); -#define rgblight_set_green rgblight_sethsv (0x78, 0xFF, 0xFF); -#define rgblight_set_orange rgblight_sethsv (0x1E, 0xFF, 0xFF); -#define rgblight_set_teal rgblight_sethsv (0xC3, 0xFF, 0xFF); -#define rgblight_set_magenta rgblight_sethsv (0x12C, 0xFF, 0xFF); -#define rgblight_set_urine rgblight_sethsv (0x3C, 0xFF, 0xFF); -#define rgblight_set_purple rgblight_sethsv (0x10E, 0xFF, 0xFF); +#ifdef RGBLIGHT_ENABLE +#define rgblight_set_blue rgblight_sethsv (0xFF, 0xFF, 0xFF); +#define rgblight_set_red rgblight_sethsv (0x00, 0xFF, 0xFF); +#define rgblight_set_green rgblight_sethsv (0x78, 0xFF, 0xFF); +#define rgblight_set_orange rgblight_sethsv (0x1E, 0xFF, 0xFF); +#define rgblight_set_teal rgblight_sethsv (0xC3, 0xFF, 0xFF); +#define rgblight_set_magenta rgblight_sethsv (0x12C, 0xFF, 0xFF); +#define rgblight_set_yellow rgblight_sethsv (0x3C, 0xFF, 0xFF); +#define rgblight_set_purple rgblight_sethsv (0x10E, 0xFF, 0xFF); +#endif #ifdef TAP_DANCE_ENABLE //define diablo macro timer variables @@ -122,77 +124,71 @@ qk_tap_dance_action_t tap_dance_actions[] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* QWERTY - * ,------------------------------------------------. ,------------------------------------------------. - * | Ins | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Bksp | Del | - * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - * | - | Tab | Q | W | E | R | T | | Y | U | I | O | P | [ | ] | - * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - * | = | Esc | A | S | D | F | G | | H | J | K | L | ; | " |Enter | - * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - * | Pg Up| Shift| Z | X | C | V | B | | N | M | , | . | / | Home | End | - * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - * | Pg Dn|Adjust| Ctrl | Alt | GUI |Lower |Space | |Space |Raise | Left | Down | Up | Right| \ | - * `------------------------------------------------' `------------------------------------------------' - */ [_NUMNAV] = KEYMAP( - MACROS, DIABLO, GAMEPAD, KC_NLCK, KC_SCLK, KC_PTSC, KC_PSLS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ - MEDIA, XXXXXXX, XXXXXXX, KC_P7, KC_P8, KC_P9, KC_PAST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + MACROS, DIABLO, GAMEPAD, KC_NLCK, KC_SLCK, KC_COLN, KC_PSLS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + MEDIA, KC_CALC, COVECUBE,KC_P7, KC_P8, KC_P9, KC_PAST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ KC_HOME, KC_DEL, KC_PGUP, KC_P4, KC_P5, KC_P6, KC_PMNS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ KC_END, KC_UP, KC_PGDN, KC_P1, KC_P2, KC_P3, KC_PPLS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_P00, KC_PDOT, KC_PENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \ ), -/* Lower - * ,------------------------------------------------. ,------------------------------------------------. - * | | ~ | F1 | F3 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | F12 | - * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - * | _ | | ! | @ | # | $ | % | | ^ | & | * | ( | ) | { | } | - * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - * | + | | F1 | F2 | F3 | F4 | F5 | | F6 | _ | + | { | } | | | - * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - * | | | F7 | F8 | F9 | F10 | F11 | | F12 | | | | | | | - * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------| - * | | | | | | | | | | | Next | Vol- | Vol+ | Play | | - * `------------------------------------------------' `------------------------------------------------' - */ [_DIABLO] = KEYMAP( - _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ - _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ - _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ - _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ - _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \ + KC_ESC, DIABLO, KC_V, KC_D, XXXXXXX, XXXXXXX, KC_L, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + KC_TAB, KC_S, KC_F, KC_I, KC_M, KC_T, KC_J, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + KC_Q, KC_1, KC_2, KC_3, KC_4, KC_G, KC_F, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + 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, \ + KC_LALT, KC_F4, KC_F5, KC_F8, KC_F9, KC_F10, SFT_T(KC_SPACE), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \ + ), + + [_GAMEPAD] = KEYMAP( // Game pad layout designed primarily for Overwatch + MACROS, KC_ESC, GAMEPAD, KC_1, KC_2, KC_3, KC_4, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + MEDIA, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + KC_Z, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + KC_Y, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + KC_F1, KC_U, KC_I, KC_Y, KC_V, KC_SPC, KC_V, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \ ), - [_MACROS] = KEYMAP( - _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ - _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ - _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ - _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ - _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \ + MACROS, XXXXXXX, GAMEPAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + KC_SYMM, KC_TORB, KC_DOOMFIST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + KC_GLHF, KC_GOODGAME, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + KC_SALT, KC_MORESALT, KC_SALTHARD, KC_JUSTGAME, KC_AIM, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \ + ), + + [_COVECUBE] = KEYMAP( + COVECUBE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \ ), [_MEDIA] = KEYMAP( - _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ - _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ - _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ - _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ - _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \ + RESET, KC_MAKE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + MEDIA, XXXXXXX, RGB_SAI, RGB_VAI, RGB_M_P, RGB_M_B, RGB_M_R, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + RGB_TOG, RGB_MOD, RGB_SAD, RGB_VAD, RGB_M_SW,RGB_M_SN,RGB_M_K, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + KC_MPLY, KC_MSTP, KC_MPRV, KC_MNXT, RGB_M_K, RGB_M_X, RGB_M_G, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ + KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \ ) + }; bool process_record_user(uint16_t keycode, keyrecord_t *record) { uint16_t kc; - if (is_overwatch) { - kc = KC_BSPC; + if (is_overwatch) { + kc = KC_BSPC; } else { kc = KC_ENTER; } + // Once a delay command is added to "SEND_STRING", + // replace these with X_BSPC and X_ENTER instead. + // and add "SS_TAP(kc) SS_DELAY(50)" to all of the + // SEND_STRING commands, to compress things. switch (keycode) { #ifdef TAP_DANCE_ENABLE case KC_DIABLO_CLEAR: // reset all Diable timers, disabling them @@ -215,11 +211,19 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; + case KC_MAKE: + if (!record->event.pressed) { + SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP SS_TAP(X_ENTER)); + } + return false; + break; case KC_OVERWATCH: // reset all Diable timers, disabling them if (record->event.pressed) { is_overwatch = !is_overwatch; - has_layer_changed = true; } +#ifdef RGBLIGHT_ENABLE + is_overwatch ? rgblight_mode(17) : rgblight_mode(18); +#endif return false; break; case KC_SALT: @@ -227,9 +231,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { register_code(kc); unregister_code(kc); _delay_ms(50); - SEND_STRING("Salt, salt, salt..."); - register_code(KC_ENTER); - unregister_code(KC_ENTER); + SEND_STRING("Salt, salt, salt..." SS_TAP(X_ENTER)); } return false; break; @@ -238,9 +240,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { register_code(kc); unregister_code(kc); _delay_ms(50); - SEND_STRING("Please sir, can I have some more salt?!"); - register_code(KC_ENTER); - unregister_code(KC_ENTER); + SEND_STRING("Please sir, can I have some more salt?!" SS_TAP(X_ENTER)); } return false; break; @@ -249,9 +249,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { register_code(kc); unregister_code(kc); _delay_ms(50); - SEND_STRING("Your salt only makes my penis that much harder, and even more aggressive!"); - register_code(KC_ENTER); - unregister_code(KC_ENTER); + SEND_STRING("Your salt only makes my penis that much harder, and even more aggressive!" SS_TAP(X_ENTER)); } return false; break; @@ -260,9 +258,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { register_code(kc); unregister_code(kc); _delay_ms(50); - SEND_STRING("Good game, everyone!"); - register_code(KC_ENTER); - unregister_code(KC_ENTER); + SEND_STRING("Good game, everyone!" SS_TAP(X_ENTER)); } return false; break; @@ -271,9 +267,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { register_code(kc); unregister_code(kc); _delay_ms(50); - SEND_STRING("Good luck, have fun!!!"); - register_code(KC_ENTER); - unregister_code(KC_ENTER); + SEND_STRING("Good luck, have fun!!!" SS_TAP(X_ENTER)); } return false; break; @@ -282,20 +276,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { register_code(kc); unregister_code(kc); _delay_ms(50); - SEND_STRING("Left click to win!"); - register_code(KC_ENTER); - unregister_code(KC_ENTER); - } - return false; - break; - case KC_DOOMFIST: - if (!record->event.pressed) { - register_code(kc); - unregister_code(kc); - _delay_ms(50); - 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!"); - register_code(KC_ENTER); - unregister_code(KC_ENTER); + SEND_STRING("Left click to win!" SS_TAP(X_ENTER)); } return false; break; @@ -305,9 +286,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { register_code(kc); unregister_code(kc); _delay_ms(50); - 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."); - register_code(KC_ENTER); - unregister_code(KC_ENTER); + 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)); } return false; break; @@ -317,12 +296,23 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { register_code(kc); unregister_code(kc); _delay_ms(50); - SEND_STRING("That was positively riveting!"); - register_code(KC_ENTER); - unregister_code(KC_ENTER); + SEND_STRING("That was positively riveting! SS_TAP(X_ENTER)"); } return false; break; + case KC_AIM: + + if (!record->event.pressed) { + register_code(kc); + unregister_code(kc); + _delay_ms(50); + SEND_STRING("That aim is absolutely amazing. It's almost like you're a machine!" SS_TAP(X_ENTER)); + _delay_ms(50); + SEND_STRING("Wait! That aim is TOO good! You're clearly using an aim hack! CHEATER!" SS_TAP(X_ENTER)); + } + return false; + break; + } return true; @@ -332,7 +322,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { // Sends the key press to system, but only if on the Diablo layer void send_diablo_keystroke(uint8_t diablo_key) { - if (current_layer == _DIABLO) { + if (biton32(layer_state) == _DIABLO) { switch (diablo_key) { case 0: SEND_STRING("1"); @@ -366,48 +356,51 @@ void run_diablo_macro_check(void) { #endif +void matrix_init_user(void) { // Runs boot tasks for keyboard +#ifdef RGBLIGHT_ENABLE + rgblight_enable(); + rgblight_set_teal; + rgblight_mode(1); +#endif +}; + + void matrix_scan_user(void) { // runs frequently to update info - uint8_t layer = biton32(layer_state); - - if (layer != current_layer) { - has_layer_changed = true; - current_layer = layer; - } - // Check layer, and apply color if its changed since last check - if (has_layer_changed) { - - switch (layer) { - case _NUMNAV: - rgblight_set_teal; - rgblight_mode(2); - break; - case _MACROS: - rgblight_set_orange; - if (is_overwatch) { - rgblight_mode(17); - } - else { - rgblight_mode(18); - } - break; - case _DIABLO: - rgblight_set_red; - rgblight_mode(5); - break; - case _GAMEPAD: - rgblight_set_urine; - rgblight_mode(1); - break; - case _MEDIA: - rgblight_set_blue; - rgblight_mode(1); - break; - } - has_layer_changed = false; - } - #ifdef TAP_DANCE_ENABLE // Run Diablo 3 macro checking code. run_diablo_macro_check(); #endif -}; \ No newline at end of file +}; + + +uint32_t layer_state_set_kb(uint32_t state) { +#ifdef RGBLIGHT_ENABLE + rgblight_enable(); + switch (biton32(state)) { + case _NUMNAV: + rgblight_set_teal; + rgblight_mode(2); + break; + case _MACROS: + rgblight_set_orange; + is_overwatch ? rgblight_mode(17) : rgblight_mode(18); + break; + case _DIABLO: + rgblight_set_red; + rgblight_mode(5); + break; + case _GAMEPAD: + rgblight_set_yellow; + rgblight_mode(1); + break; + case _MEDIA: + rgblight_set_blue; + rgblight_mode(1); + break; + case _COVECUBE: + rgblight_set_green; + rgblight_mode(2); + } +#endif + return state; +} 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 TAP_DANCE_ENABLE = yes RGBLIGHT_ENABLE = yes MOUSEKEY_ENABLE = no +NKRO_ENABLE = yes + +EXTRAFLAGS = -flto ifndef QUANTUM_DIR include ../../../../Makefile