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
This commit is contained in:
drashna 2017-11-01 00:13:20 -07:00 committed by skullydazed
parent 44d9ad95b7
commit b79a4cfeba
14 changed files with 502 additions and 470 deletions

View file

@ -13,6 +13,4 @@
#define RGBLIGHT_EFFECT_BREATHE_CENTER 1 #define RGBLIGHT_EFFECT_BREATHE_CENTER 1
#endif // RGBLIGHT_ENABLE #endif // RGBLIGHT_ENABLE
#define FORCE_NKRO
#endif #endif

View file

@ -48,17 +48,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//define layer change stuff for underglow indicator //define layer change stuff for underglow indicator
bool skip_leds = false; bool skip_leds = false;
#ifdef RGBLIGHT_ENABLE
#define rgblight_set_blue rgblight_sethsv (0xFF, 0xFF, 0xFF); #define rgblight_set_blue rgblight_sethsv (0xFF, 0xFF, 0xFF);
#define rgblight_set_red rgblight_sethsv (0x00, 0xFF, 0xFF); #define rgblight_set_red rgblight_sethsv (0x00, 0xFF, 0xFF);
#define rgblight_set_green rgblight_sethsv (0x78, 0xFF, 0xFF); #define rgblight_set_green rgblight_sethsv (0x78, 0xFF, 0xFF);
#define rgblight_set_orange rgblight_sethsv (0x1E, 0xFF, 0xFF); #define rgblight_set_orange rgblight_sethsv (0x1E, 0xFF, 0xFF);
#define rgblight_set_teal rgblight_sethsv (0xC3, 0xFF, 0xFF); #define rgblight_set_teal rgblight_sethsv (0xC3, 0xFF, 0xFF);
#define rgblight_set_magenta rgblight_sethsv (0x12C, 0xFF, 0xFF); #define rgblight_set_magenta rgblight_sethsv (0x12C, 0xFF, 0xFF);
#define rgblight_set_urine rgblight_sethsv (0x3C, 0xFF, 0xFF); #define rgblight_set_yellow rgblight_sethsv (0x3C, 0xFF, 0xFF);
#define rgblight_set_purple rgblight_sethsv (0x10E, 0xFF, 0xFF); #define rgblight_set_purple rgblight_sethsv (0x10E, 0xFF, 0xFF);
//This is both for underglow, and Diablo 3 macros #endif
static uint8_t current_layer = 0;
//define diablo macro timer variables //define diablo macro timer variables
static uint16_t diablo_timer[4]; 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 // and set the underglow to red, because red == bad
void dance_flsh_finished(qk_tap_dance_state_t *state, void *user_data) { void dance_flsh_finished(qk_tap_dance_state_t *state, void *user_data) {
if (state->count >= 4) { if (state->count >= 4) {
#ifdef RGBLIGHT_ENABLE
rgblight_enable(); rgblight_enable();
rgblight_mode(1); rgblight_mode(1);
rgblight_setrgb(0xff,0x00,0x00); rgblight_setrgb(0xff,0x00,0x00);
reset_keyboard(); #endif
reset_tap_dance(state); 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), 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, 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_HOME,
KC_SPACE, KC_BSPACE, KC_END, 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, 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), 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, 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_LEFT, KC_DOWN, KC_UP, KC_RIGHT, TT(SYMB),
KC_LALT, CTL_T(KC_ESCAPE), KC_LEAD, CTL_T(KC_ESCAPE),
KC_PGUP, KC_PGUP,
KC_PGDOWN, KC_DELETE, KC_ENTER 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, 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), 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, 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_LALT, CTL_T(KC_ESC),
KC_PGUP, KC_PGUP,
KC_PGDN,KC_DELETE, KC_ENT 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, 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, 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, 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_LALT, CTL_T(KC_ESC),
KC_PGUP, KC_PGUP,
KC_PGDN,KC_DELETE, KC_ENT 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, 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, 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, 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_LALT, CTL_T(KC_ESC),
KC_PGUP, KC_PGUP,
KC_PGDN,KC_DELETE, KC_ENT 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, 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, 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, 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,
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) { void persistent_default_layer_set(uint16_t default_layer) {
eeconfig_update_default_layer(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) { 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) { switch (keycode) {
// dynamically generate these. // dynamically generate these.
case EPRM: case EPRM:
@ -574,7 +568,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
break; break;
case RGB_SLD: case RGB_SLD:
if (record->event.pressed) { if (record->event.pressed) {
#ifdef RGBLIGHT_ENABLE
rgblight_mode(1); rgblight_mode(1);
#endif
} }
return false; return false;
break; break;
@ -668,8 +664,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return false; return false;
break; break;
case KC_MAKEQMK: case KC_MAKEQMK:
if (record->event.pressed) { if (!record->event.pressed) {
SEND_STRING("make ergodox_ez:drashna-custom:teensy"SS_TAP(X_ENTER)); SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP ":teensy"SS_TAP(X_ENTER));
} }
return false; return false;
break; break;
@ -678,10 +674,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return true; return true;
} }
#ifdef TAP_DANCE_ENABLE
// Sends the key press to system, but only if on the Diablo layer // Sends the key press to system, but only if on the Diablo layer
void send_diablo_keystroke (uint8_t diablo_key) { void send_diablo_keystroke (uint8_t diablo_key) {
if (current_layer == DIABLO) { if (biton32(layer_state) == DIABLO) {
switch (diablo_key) { switch (diablo_key) {
case 0: case 0:
SEND_STRING("1"); 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(); LEADER_EXTERNS();
void matrix_scan_user(void) { // runs frequently to update info void matrix_scan_user(void) { // runs frequently to update info
uint8_t modifiders = get_mods(); uint8_t modifiders = get_mods();
uint8_t layer = biton32(layer_state);
static bool has_layer_changed = true;
if (!skip_leds) { if (!skip_leds) {
ergodox_board_led_off(); ergodox_board_led_off();
@ -744,16 +758,43 @@ 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) { // Run Diablo 3 macro checking code.
#ifdef TAP_DANCE_ENABLE
run_diablo_macro_check();
#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_S, KC_C) {
SEND_STRING("StableBit Scanner");
}
SEQ_TWO_KEYS(KC_S, KC_T) {
SEND_STRING("StableBit Troubleshooter");
}
}
};
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: case SYMB:
rgblight_set_blue; rgblight_set_blue;
rgblight_mode(2); rgblight_mode(2);
@ -767,11 +808,7 @@ void matrix_scan_user(void) { // runs frequently to update info
rgblight_mode(5); rgblight_mode(5);
break; break;
case MOUS: case MOUS:
rgblight_set_urine; rgblight_set_yellow;
rgblight_mode(1);
break;
case 7:
rgblight_sethsv (255,255,255);
rgblight_mode(1); rgblight_mode(1);
break; break;
default: default:
@ -790,31 +827,6 @@ void matrix_scan_user(void) { // runs frequently to update info
rgblight_mode(1); rgblight_mode(1);
break; break;
} }
has_layer_changed = false;
}
// Run Diablo 3 macro checking code.
run_diablo_macro_check();
#ifdef LEADER_KEYS
LEADER_DICTIONARY() {
leading = false;
leader_end();
SEQ_ONE_KEY(KC_C) {
SEND_STRING("Covecube");
}
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");
}
SEQ_TWO_KEYS(KC_S, KC_T) {
SEND_STRING("StableBit Troubleshooter");
}
}
#endif #endif
}; return state;
}

View file

@ -1,10 +1,13 @@
TAP_DANCE_ENABLE = yes TAP_DANCE_ENABLE = yes
SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend 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 RGBLIGHT_ENABLE = yes
MIDI_ENABLE = no MIDI_ENABLE = no
CONSOLE_ENABLE = no CONSOLE_ENABLE = no
LEADER_KEYS = no LEADER_KEYS = no
EXTRAFLAGS = -flto
ifndef QUANTUM_DIR ifndef QUANTUM_DIR
include ../../../../Makefile include ../../../../Makefile
endif endif

View file

@ -17,8 +17,6 @@
#define MOUS 2 #define MOUS 2
#ifdef LAYER_UNDERGLOW_LIGHTING #ifdef LAYER_UNDERGLOW_LIGHTING
bool has_layer_changed = true;
#define rgblight_set_teal rgblight_setrgb(0x00, 0xFF, 0xFF) #define rgblight_set_teal rgblight_setrgb(0x00, 0xFF, 0xFF)
#define rgblight_set_red rgblight_setrgb(0xFF, 0x00, 0x00) #define rgblight_set_red rgblight_setrgb(0xFF, 0x00, 0x00)
#define rgblight_set_blue rgblight_setrgb(0x00, 0xFF, 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; 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) { void matrix_scan_user(void) {
uint8_t new_layer = biton32(layer_state);
ergodox_board_led_off(); ergodox_board_led_off();
ergodox_right_led_1_off(); ergodox_right_led_1_off();
ergodox_right_led_2_off(); ergodox_right_led_2_off();
ergodox_right_led_3_off(); ergodox_right_led_3_off();
#ifdef LAYER_UNDERGLOW_LIGHTING #ifdef LAYER_UNDERGLOW_LIGHTING
static uint8_t old_layer = 0;
uint8_t modifiders = get_mods(); uint8_t modifiders = get_mods();
if ( modifiders & MODS_SHIFT_MASK) { if ( modifiders & MODS_SHIFT_MASK) {
@ -125,43 +126,9 @@ void matrix_scan_user(void) {
if ( modifiders & MODS_ALT_MASK) { if ( modifiders & MODS_ALT_MASK) {
ergodox_right_led_3_on(); 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 #else
switch (new_layer) { uint8_t layer = biton32(layer_state);
switch (layer) {
case 1: case 1:
ergodox_right_led_1_on(); ergodox_right_led_1_on();
break; break;
@ -193,3 +160,35 @@ void matrix_scan_user(void) {
} }
#endif #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;
}

View file

@ -53,6 +53,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// #define BACKLIGHT_BREATHING // #define BACKLIGHT_BREATHING
// #define BACKLIGHT_LEVELS 3 // #define BACKLIGHT_LEVELS 3
#define CATERINA_BOOTLOADER
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCING_DELAY 5 #define DEBOUNCING_DELAY 5

View file

@ -23,7 +23,7 @@
#define TAPPING_TERM 200 #define TAPPING_TERM 200
#endif // TAP_DANCE_ENABLE #endif // TAP_DANCE_ENABLE
#define CATERINA_BOOTLOADER
#ifdef RGBLIGHT_ENABLE #ifdef RGBLIGHT_ENABLE

View file

@ -29,15 +29,22 @@
#define _______ KC_TRNS #define _______ KC_TRNS
#define XXXXXXX KC_NO #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 //define layer change stuff for underglow indicator
bool skip_leds = false; bool skip_leds = false;
bool is_overwatch = 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 #ifdef TAP_DANCE_ENABLE
//define diablo macro timer variables //define diablo macro timer variables
@ -65,7 +72,8 @@ enum custom_keycodes {
KC_DOOMFIST, KC_DOOMFIST,
KC_JUSTGAME, KC_JUSTGAME,
KC_GLHF, KC_GLHF,
KC_TORB KC_TORB,
KC_MAKE
}; };
#ifdef TAP_DANCE_ENABLE #ifdef TAP_DANCE_ENABLE
@ -163,7 +171,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
), ),
[_MEDIA] = KEYMAP( /* Base */ [_MEDIA] = KEYMAP( /* Base */
RESET, KC_MUTE, KC_VOLD, KC_VOLU,\ 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, \ KC_MPLY, KC_MSTP, KC_MPRV, KC_MNXT, \
RGB_TOG, RGB_MOD, RGB_SAI, RGB_VAI, \ RGB_TOG, RGB_MOD, RGB_SAI, RGB_VAI, \
_______, _______, RGB_SAD, RGB_VAD \ _______, _______, 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) { void numlock_led_on(void) {
PORTF |= (1<<7); PORTF |= (1<<7);
} }
@ -216,11 +209,13 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return false; return false;
break; break;
#endif #endif
case KC_OVERWATCH: // reset all Diable timers, disabling them case KC_OVERWATCH:
if (record->event.pressed) { if (record->event.pressed) {
is_overwatch = !is_overwatch; is_overwatch = !is_overwatch;
has_layer_changed = true;
} }
#ifdef RGBLIGHT_ENABLE
is_overwatch ? rgblight_mode(17) : rgblight_mode(18);
#endif
return false; return false;
break; break;
case KC_SALT: case KC_SALT:
@ -324,6 +319,13 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
} }
return false; return false;
break; break;
case KC_MAKE:
if (!record->event.pressed) {
SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP SS_TAP(X_ENTER));
}
return false;
break;
} }
return true; 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 // Sends the key press to system, but only if on the Diablo layer
void send_diablo_keystroke(uint8_t diablo_key) { void send_diablo_keystroke(uint8_t diablo_key) {
if (current_layer == _DIABLO) { if (biton32(layer_state) == _DIABLO) {
switch (diablo_key) { switch (diablo_key) {
case 0: case 0:
SEND_STRING("1"); SEND_STRING("1");
@ -365,10 +367,16 @@ void run_diablo_macro_check(void) {
} }
#endif #endif
void matrix_init_user(void) { void matrix_init_user(void) {
has_layer_changed = true;
// set Numlock LED to output and low // set Numlock LED to output and low
DDRF |= (1<<7); DDRF |= (1<<7);
PORTF &= ~(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)) ){ if (!(host_keyboard_leds() & (1 << USB_LED_NUM_LOCK)) ){
register_code(KC_NUMLOCK); register_code(KC_NUMLOCK);
unregister_code(KC_NUMLOCK); unregister_code(KC_NUMLOCK);
@ -376,69 +384,46 @@ void matrix_init_user(void) {
} }
void matrix_scan_user(void) { void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state);
#ifdef RGBLIGHT_ENABLE
numlock_led_off(); numlock_led_off();
// Check layer, and apply color if its changed since last check if (is_overwatch && biton32(layer_state) == _MACROS) {
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(); 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;
}
#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. // Run Diablo 3 macro checking code.
#ifdef TAP_DANCE_ENABLE #ifdef TAP_DANCE_ENABLE
run_diablo_macro_check(); run_diablo_macro_check();
#endif #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;
}
#endif
return state;
}
void led_set_user(uint8_t usb_led) { void led_set_user(uint8_t usb_led) {
} }

View file

@ -1,10 +1,12 @@
TAP_DANCE_ENABLE = yes TAP_DANCE_ENABLE = yes
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend 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 RGBLIGHT_ENABLE = yes
MIDI_ENABLE = no MIDI_ENABLE = no
CONSOLE_ENABLE = no CONSOLE_ENABLE = no
EXTRAFLAGS = -flto
ifndef QUANTUM_DIR ifndef QUANTUM_DIR
include ../../../../Makefile include ../../../../Makefile
endif endif

View file

@ -40,9 +40,18 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#endif #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 #ifdef RGBLIGHT_ENABLE
#define RGB_DI_PIN D3 #define RGB_DI_PIN D3
#define RGBLED_NUM 12 // Number of LEDs #define RGBLED_NUM 16 // Number of LEDs
#define RGBLIGHT_ANIMATIONS #define RGBLIGHT_ANIMATIONS
#define RGBLIGHT_HUE_STEP 12 #define RGBLIGHT_HUE_STEP 12
#define RGBLIGHT_SAT_STEP 12 #define RGBLIGHT_SAT_STEP 12

View file

@ -45,6 +45,7 @@ enum custom_keycodes {
LOWER, LOWER,
RAISE, RAISE,
ADJUST, ADJUST,
KC_MAKE
}; };
// Fillers to make layering more clear // Fillers to make layering more clear
@ -52,21 +53,17 @@ enum custom_keycodes {
#define XXXXXXX KC_NO #define XXXXXXX KC_NO
#ifdef RGBLIGHT_ENABLE #ifdef RGBLIGHT_ENABLE
//define layer change stuff for underglow indicator
#define rgblight_set_blue rgblight_sethsv (0xFF, 0xFF, 0xFF); #define rgblight_set_blue rgblight_sethsv (0xFF, 0xFF, 0xFF);
#define rgblight_set_red rgblight_sethsv (0x00, 0xFF, 0xFF); #define rgblight_set_red rgblight_sethsv (0x00, 0xFF, 0xFF);
#define rgblight_set_green rgblight_sethsv (0x78, 0xFF, 0xFF); #define rgblight_set_green rgblight_sethsv (0x78, 0xFF, 0xFF);
#define rgblight_set_orange rgblight_sethsv (0x1E, 0xFF, 0xFF); #define rgblight_set_orange rgblight_sethsv (0x1E, 0xFF, 0xFF);
#define rgblight_set_teal rgblight_sethsv (0xC3, 0xFF, 0xFF); #define rgblight_set_teal rgblight_sethsv (0xC3, 0xFF, 0xFF);
#define rgblight_set_magenta rgblight_sethsv (0x12C, 0xFF, 0xFF); #define rgblight_set_magenta rgblight_sethsv (0x12C, 0xFF, 0xFF);
#define rgblight_set_urine rgblight_sethsv (0x3C, 0xFF, 0xFF); #define rgblight_set_yellow rgblight_sethsv (0x3C, 0xFF, 0xFF);
#define rgblight_set_purple rgblight_sethsv (0x10E, 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;
#endif #endif
#ifdef TAP_DANCE_ENABLE #ifdef TAP_DANCE_ENABLE
enum { enum {
TD_FLSH = 0, TD_FLSH = 0,
@ -84,8 +81,8 @@ void dance_flsh_finished(qk_tap_dance_state_t *state, void *user_data) {
rgblight_mode(1); rgblight_mode(1);
rgblight_setrgb(0xff, 0x00, 0x00); rgblight_setrgb(0xff, 0x00, 0x00);
#endif #endif
reset_keyboard();
reset_tap_dance(state); reset_tap_dance(state);
reset_keyboard();
} }
} }
@ -137,9 +134,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
), ),
[_ADJUST] = KEYMAP( \ [_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, _______, \ _______, _______, _______, 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_qwerty[][2] = SONG(QWERTY_SOUND);
float tone_dvorak[][2] = SONG(DVORAK_SOUND); float tone_dvorak[][2] = SONG(DVORAK_SOUND);
float tone_colemak[][2] = SONG(COLEMAK_SOUND); float tone_colemak[][2] = SONG(COLEMAK_SOUND);
float tone_workman[][2] = SONG(PLOVER_SONG);
#endif #endif
void persistent_default_layer_set(uint16_t default_layer) { void persistent_default_layer_set(uint16_t default_layer) {
@ -188,7 +186,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
case WORKMAN: case WORKMAN:
if (record->event.pressed) { if (record->event.pressed) {
#ifdef AUDIO_ENABLE #ifdef AUDIO_ENABLE
PLAY_SONG(tone_dvorak); PLAY_SONG(tone_workman);
#endif #endif
persistent_default_layer_set(1UL << _WORKMAN); persistent_default_layer_set(1UL << _WORKMAN);
} }
@ -222,27 +220,74 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
} }
return false; return false;
break; 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; return true;
} }
void matrix_init_user(void) { // Runs boot tasks for keyboard
#ifdef RGBLIGHT_ENABLE #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 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) { 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: case _QWERTY:
if (default_layer & (1UL << _COLEMAK)) { if (default_layer & (1UL << _COLEMAK)) {
rgblight_set_magenta; rgblight_set_magenta;
@ -258,32 +303,7 @@ void matrix_scan_user(void) { // runs frequently to update info
} }
rgblight_mode(1); rgblight_mode(1);
break; 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;
} }
has_layer_changed = false;
}
};
#endif #endif
return state;
}

View file

@ -1,8 +1,11 @@
CONSOLE_ENABLE = no CONSOLE_ENABLE = no
TAP_DANCE_ENABLE = yes TAP_DANCE_ENABLE = no
RGBLIGHT_ENABLE = no RGBLIGHT_ENABLE = yes
AUDIO_ENABLE = no
MOUSEKEY_ENABLE = no MOUSEKEY_ENABLE = no
NKRO_ENABLE = yes
FAUXCLICKY_ENABLE = no
EXTRAFLAGS = -flto
ifndef QUANTUM_DIR ifndef QUANTUM_DIR
include ../../../../Makefile include ../../../../Makefile

View file

@ -37,5 +37,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_HUE_STEP 8 #define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8 #define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_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 #endif

View file

@ -10,14 +10,16 @@ extern keymap_config_t keymap_config;
// entirely and just use numbers. // entirely and just use numbers.
#define _NUMNAV 0 #define _NUMNAV 0
#define _DIABLO 1 #define _DIABLO 1
#define _MACROS 2 #define _GAMEPAD 2
#define _GAMEPAD 3 #define _MACROS 3
#define _MEDIA 4 #define _MEDIA 4
#define _COVECUBE 5
enum custom_keycodes { enum custom_keycodes {
KC_DIABLO_CLEAR = SAFE_RANGE, KC_DIABLO_CLEAR = SAFE_RANGE,
KC_P00, KC_P00,
KC_MAKE,
KC_OVERWATCH, KC_OVERWATCH,
KC_SALT, KC_SALT,
KC_MORESALT, KC_MORESALT,
@ -27,7 +29,8 @@ enum custom_keycodes {
KC_DOOMFIST, KC_DOOMFIST,
KC_JUSTGAME, KC_JUSTGAME,
KC_GLHF, KC_GLHF,
KC_TORB KC_TORB,
KC_AIM
}; };
// Fillers to make layering more clear // Fillers to make layering more clear
@ -37,23 +40,22 @@ enum custom_keycodes {
#define DIABLO TG(_DIABLO) #define DIABLO TG(_DIABLO)
#define GAMEPAD TG(_GAMEPAD) #define GAMEPAD TG(_GAMEPAD)
#define MEDIA TG(_MEDIA) #define MEDIA TG(_MEDIA)
#define COVECUBE TG(_COVECUBE)
bool is_overwatch = false; bool is_overwatch = false;
//This is both for underglow, and Diablo 3 macros
static uint8_t current_layer = 0;
bool has_layer_changed = true;
#ifdef RGBLIGHT_ENABLE
#define rgblight_set_blue rgblight_sethsv (0xFF, 0xFF, 0xFF); #define rgblight_set_blue rgblight_sethsv (0xFF, 0xFF, 0xFF);
#define rgblight_set_red rgblight_sethsv (0x00, 0xFF, 0xFF); #define rgblight_set_red rgblight_sethsv (0x00, 0xFF, 0xFF);
#define rgblight_set_green rgblight_sethsv (0x78, 0xFF, 0xFF); #define rgblight_set_green rgblight_sethsv (0x78, 0xFF, 0xFF);
#define rgblight_set_orange rgblight_sethsv (0x1E, 0xFF, 0xFF); #define rgblight_set_orange rgblight_sethsv (0x1E, 0xFF, 0xFF);
#define rgblight_set_teal rgblight_sethsv (0xC3, 0xFF, 0xFF); #define rgblight_set_teal rgblight_sethsv (0xC3, 0xFF, 0xFF);
#define rgblight_set_magenta rgblight_sethsv (0x12C, 0xFF, 0xFF); #define rgblight_set_magenta rgblight_sethsv (0x12C, 0xFF, 0xFF);
#define rgblight_set_urine rgblight_sethsv (0x3C, 0xFF, 0xFF); #define rgblight_set_yellow rgblight_sethsv (0x3C, 0xFF, 0xFF);
#define rgblight_set_purple rgblight_sethsv (0x10E, 0xFF, 0xFF); #define rgblight_set_purple rgblight_sethsv (0x10E, 0xFF, 0xFF);
#endif
#ifdef TAP_DANCE_ENABLE #ifdef TAP_DANCE_ENABLE
//define diablo macro timer variables //define diablo macro timer variables
@ -122,65 +124,55 @@ qk_tap_dance_action_t tap_dance_actions[] = {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 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( [_NUMNAV] = KEYMAP(
MACROS, DIABLO, GAMEPAD, KC_NLCK, KC_SCLK, KC_PTSC, KC_PSLS, 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, XXXXXXX, XXXXXXX, KC_P7, KC_P8, KC_P9, KC_PAST, 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_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_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 \ 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( [_DIABLO] = KEYMAP(
_______, _______, _______, _______, _______, _______, _______, 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, \
_______, _______, _______, _______, _______, _______, _______, 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, \
_______, _______, _______, _______, _______, _______, _______, 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, \
_______, _______, _______, _______, _______, _______, _______, 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, \
_______, _______, _______, _______, _______, _______, _______, 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( [_MACROS] = KEYMAP(
_______, _______, _______, _______, _______, _______, _______, 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, 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, \
_______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ KC_GLHF, KC_GOODGAME, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, 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( [_MEDIA] = KEYMAP(
_______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ RESET, KC_MAKE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, 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, \
_______, _______, _______, _______, _______, _______, _______, 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, \
_______, _______, _______, _______, _______, _______, _______, 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, \
_______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \ KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \
) )
}; };
@ -193,6 +185,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
else { else {
kc = KC_ENTER; 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) { switch (keycode) {
#ifdef TAP_DANCE_ENABLE #ifdef TAP_DANCE_ENABLE
case KC_DIABLO_CLEAR: // reset all Diable timers, disabling them 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; return false;
break; 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 case KC_OVERWATCH: // reset all Diable timers, disabling them
if (record->event.pressed) { if (record->event.pressed) {
is_overwatch = !is_overwatch; is_overwatch = !is_overwatch;
has_layer_changed = true;
} }
#ifdef RGBLIGHT_ENABLE
is_overwatch ? rgblight_mode(17) : rgblight_mode(18);
#endif
return false; return false;
break; break;
case KC_SALT: case KC_SALT:
@ -227,9 +231,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
register_code(kc); register_code(kc);
unregister_code(kc); unregister_code(kc);
_delay_ms(50); _delay_ms(50);
SEND_STRING("Salt, salt, salt..."); SEND_STRING("Salt, salt, salt..." SS_TAP(X_ENTER));
register_code(KC_ENTER);
unregister_code(KC_ENTER);
} }
return false; return false;
break; break;
@ -238,9 +240,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
register_code(kc); register_code(kc);
unregister_code(kc); unregister_code(kc);
_delay_ms(50); _delay_ms(50);
SEND_STRING("Please sir, can I have some more salt?!"); SEND_STRING("Please sir, can I have some more salt?!" SS_TAP(X_ENTER));
register_code(KC_ENTER);
unregister_code(KC_ENTER);
} }
return false; return false;
break; break;
@ -249,9 +249,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
register_code(kc); register_code(kc);
unregister_code(kc); unregister_code(kc);
_delay_ms(50); _delay_ms(50);
SEND_STRING("Your salt only makes my penis that much harder, and even more aggressive!"); SEND_STRING("Your salt only makes my penis that much harder, and even more aggressive!" SS_TAP(X_ENTER));
register_code(KC_ENTER);
unregister_code(KC_ENTER);
} }
return false; return false;
break; break;
@ -260,9 +258,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
register_code(kc); register_code(kc);
unregister_code(kc); unregister_code(kc);
_delay_ms(50); _delay_ms(50);
SEND_STRING("Good game, everyone!"); SEND_STRING("Good game, everyone!" SS_TAP(X_ENTER));
register_code(KC_ENTER);
unregister_code(KC_ENTER);
} }
return false; return false;
break; break;
@ -271,9 +267,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
register_code(kc); register_code(kc);
unregister_code(kc); unregister_code(kc);
_delay_ms(50); _delay_ms(50);
SEND_STRING("Good luck, have fun!!!"); SEND_STRING("Good luck, have fun!!!" SS_TAP(X_ENTER));
register_code(KC_ENTER);
unregister_code(KC_ENTER);
} }
return false; return false;
break; break;
@ -282,20 +276,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
register_code(kc); register_code(kc);
unregister_code(kc); unregister_code(kc);
_delay_ms(50); _delay_ms(50);
SEND_STRING("Left click to win!"); SEND_STRING("Left click to win!" SS_TAP(X_ENTER));
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);
} }
return false; return false;
break; break;
@ -305,9 +286,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
register_code(kc); register_code(kc);
unregister_code(kc); unregister_code(kc);
_delay_ms(50); _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."); 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));
register_code(KC_ENTER);
unregister_code(KC_ENTER);
} }
return false; return false;
break; break;
@ -317,12 +296,23 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
register_code(kc); register_code(kc);
unregister_code(kc); unregister_code(kc);
_delay_ms(50); _delay_ms(50);
SEND_STRING("That was positively riveting!"); SEND_STRING("That was positively riveting! SS_TAP(X_ENTER)");
register_code(KC_ENTER);
unregister_code(KC_ENTER);
} }
return false; return false;
break; 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; 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 // Sends the key press to system, but only if on the Diablo layer
void send_diablo_keystroke(uint8_t diablo_key) { void send_diablo_keystroke(uint8_t diablo_key) {
if (current_layer == _DIABLO) { if (biton32(layer_state) == _DIABLO) {
switch (diablo_key) { switch (diablo_key) {
case 0: case 0:
SEND_STRING("1"); SEND_STRING("1");
@ -366,48 +356,51 @@ void run_diablo_macro_check(void) {
#endif #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 void matrix_scan_user(void) { // runs frequently to update info
uint8_t layer = biton32(layer_state); #ifdef TAP_DANCE_ENABLE
// Run Diablo 3 macro checking code.
run_diablo_macro_check();
#endif
};
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) { uint32_t layer_state_set_kb(uint32_t state) {
#ifdef RGBLIGHT_ENABLE
rgblight_enable();
switch (biton32(state)) {
case _NUMNAV: case _NUMNAV:
rgblight_set_teal; rgblight_set_teal;
rgblight_mode(2); rgblight_mode(2);
break; break;
case _MACROS: case _MACROS:
rgblight_set_orange; rgblight_set_orange;
if (is_overwatch) { is_overwatch ? rgblight_mode(17) : rgblight_mode(18);
rgblight_mode(17);
}
else {
rgblight_mode(18);
}
break; break;
case _DIABLO: case _DIABLO:
rgblight_set_red; rgblight_set_red;
rgblight_mode(5); rgblight_mode(5);
break; break;
case _GAMEPAD: case _GAMEPAD:
rgblight_set_urine; rgblight_set_yellow;
rgblight_mode(1); rgblight_mode(1);
break; break;
case _MEDIA: case _MEDIA:
rgblight_set_blue; rgblight_set_blue;
rgblight_mode(1); rgblight_mode(1);
break; break;
case _COVECUBE:
rgblight_set_green;
rgblight_mode(2);
} }
has_layer_changed = false;
}
#ifdef TAP_DANCE_ENABLE
// Run Diablo 3 macro checking code.
run_diablo_macro_check();
#endif #endif
}; return state;
}

View file

@ -2,6 +2,9 @@ CONSOLE_ENABLE = no
TAP_DANCE_ENABLE = yes TAP_DANCE_ENABLE = yes
RGBLIGHT_ENABLE = yes RGBLIGHT_ENABLE = yes
MOUSEKEY_ENABLE = no MOUSEKEY_ENABLE = no
NKRO_ENABLE = yes
EXTRAFLAGS = -flto
ifndef QUANTUM_DIR ifndef QUANTUM_DIR
include ../../../../Makefile include ../../../../Makefile