diff options
Diffstat (limited to 'keyboards')
-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 5fef1e0d8c..c1ebf174a3 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 5440c33460..bdc4eed486 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/>. //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) { } +#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 5ab769c688..0fa7cd2277 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 cef0e9c39f..97ede94318 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 2c8a8bef7d..39a466850e 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/>. // #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 2b151606da..be1e4df598 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 f6476ef66a..4a2893e4aa 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) { + if (is_overwatch && biton32(layer_state) == _MACROS) { + numlock_led_on(); + } + + // 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: - if (has_layer_changed) { - rgblight_sethsv(240, 255, 255); - rgblight_mode(1); - } + rgblight_set_blue; + 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(); - } + rgblight_set_orange; + is_overwatch ? rgblight_mode(17) : rgblight_mode(18); break; case _DIABLO: - if (has_layer_changed) { - rgblight_sethsv(0, 255, 255); - rgblight_mode(5); - } + rgblight_set_red; + rgblight_mode(5); break; case _MEDIA: - if (has_layer_changed) { - rgblight_sethsv(120, 255, 255); - rgblight_mode(22); - } + rgblight_set_green; + rgblight_mode(22); break; default: - if (has_layer_changed) { - rgblight_sethsv(195, 255, 255); - rgblight_mode(1); - } + rgblight_set_teal; + rgblight_mode(1); break; } - #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 + 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 0aeb409a8d..b6c5ed3bd5 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 d79fd302e8..fc483b08e6 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/>. #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 a15fa6f753..de7d4e1080 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) { - |