Migrated most code from keymaps to userspace (#1980) * Add woodpad * Cleanup * Remove misc layouts for woodpad * Move woodpad to handwired * Updated RGB Underglow info * Cleanup macros * Tweaked RGB lighting stuff * Start to merge orthodox/ergodox keymaps (persistant layers) * Add woodpad * Add forced NKRO * 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 makefile toggle code in ez keymap Finish adding RGB code to orthodox * Updated RGB Underglow layer indication code due to discovery of the layer_state_set_kb function * Remove unnecessary planck layout * Fixed Workman song * update make command and added lit reset * Fixed formatting to fall in line with official standards * Minor tweaks * Removed Leader Keys from Ergodox EZ Keymap Added KC_RESET that resets board and sets underglow to red * Tweak reset code * Cleanup * Remove misc layouts for woodpad * Move woodpad to handwired * Updated RGB Underglow info * Cleanup macros * Tweaked RGB lighting stuff * Start to merge orthodox/ergodox keymaps (persistant layers) * Add forced NKRO * 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 makefile toggle code in ez keymap Finish adding RGB code to orthodox * Updated RGB Underglow layer indication code due to discovery of the layer_state_set_kb function * Remove unnecessary planck layout * Fixed Workman song * update make command and added lit reset * Fixed formatting to fall in line with official standards * Minor tweaks * Removed Leader Keys from Ergodox EZ Keymap Added KC_RESET that resets board and sets underglow to red * Tweak reset code * Fix rebasing issues * remove head files * Fix "macro" issue * Rename ez keymaps for userspace * Revert "Rename ez keymaps for userspace" This reverts commit c25425911852e41711a5f0273b5741adb16e5bd4. * Renamed Ergodox EZ layouts so that all of my personal layouts are on the same name, in prep for using userspaces * Fix ergodox code * Remove "drashna-ez" keymap as it's no longer needed * Migrate majority of code to Userspace
9 files changed, 541 insertions(+), 938 deletions(-) M keyboards/ergodox_ez/keymaps/drashna/config.h M keyboards/ergodox_ez/keymaps/drashna/keymap.c M keyboards/handwired/woodpad/keymaps/drashna/keymap.c M keyboards/orthodox/keymaps/drashna/keymap.c M keyboards/viterbi/keymaps/drashna/keymap.c A users/drashna/drashna.c A users/drashna/drashna.h A users/drashna/readme.md A users/drashna/rules.mk
M keyboards/ergodox_ez/keymaps/drashna/config.h => keyboards/ergodox_ez/keymaps/drashna/config.h +0 -2
@@ 13,7 13,5 @@ #define RGBLIGHT_EFFECT_BREATHE_CENTER 1 #endif // RGBLIGHT_ENABLE #undef DEBOUNCE #define DEBOUNCE 5 #endif
M keyboards/ergodox_ez/keymaps/drashna/keymap.c => keyboards/ergodox_ez/keymaps/drashna/keymap.c +51 -291
@@ 18,41 18,20 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #include "debug.h" #include "action_layer.h" #include "version.h" #include "drashna.h" #include "keymap_german.h" #include "keymap_nordic.h" // Define layer names #define QWERTY 0 #define COLEMAK 1 #define DVORAK 2 #define WORKMAN 3 #define SYMB 8 #define OVERWATCH 9 #define DIABLO 10 #define MOUS 12 //define modifiers #define MODS_SHIFT_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) #define MODS_CTRL_MASK (MOD_BIT(KC_LCTL)|MOD_BIT(KC_RCTRL)) #define MODS_ALT_MASK (MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT)) //define layer change stuff for underglow indicator bool skip_leds = false; #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 @@ static uint16_t diablo_timer[4]; 64,27 43,6 @@ bool check_dtimer(uint8_t dtimer) { return (timer_elapsed(diablo_timer[dtimer]) < (diablo_key_time[dtimer] * 1000)) ? false : true; }; enum custom_keycodes { PLACEHOLDER = SAFE_RANGE, // can always be here EPRM, VRSN, RGB_SLD, RGB_0000FF, RGB_008000, RGB_FF0000, RGB_800080, RGB_00FF90, KC_DIABLO_CLEAR, KC_QWERTY, KC_COLEMAK, KC_DVORAK, KC_WORKMAN, KC_MAKEQMK, KC_RESET }; #ifdef TAP_DANCE_ENABLE enum { TD_FLSH = 0, @@ TD_DIABLO_1, 93,9 51,6 @@ enum { TD_DIABLO_4 }; // on each tap, light up one led, from right to left // on the forth tap, turn them off from right to left @@ 220,22 175,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | End | | PgDn | | | * `---------------------' `---------------------' */ [QWERTY] = LAYOUT_ergodox( KC_EQUAL, KC_1, KC_2, KC_3, KC_4, KC_5, TG(MOUS), KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(DIABLO), [_QWERTY] = LAYOUT_ergodox( KC_EQUAL, KC_1, KC_2, KC_3, KC_4, KC_5, TG(_MOUS), KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(_DIABLO), KC_BSPACE, KC_A, KC_S, KC_D, KC_F, KC_G, 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, 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_LGUI, KC_HOME, KC_SPACE, KC_BSPACE, KC_END, TG(MOUS), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, TG(DIABLO), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLASH, TG(_MOUS), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, 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, TT(SYMB), TG(_OVERWATCH), KC_N, KC_M, KC_COMMA, KC_DOT, RCTL_T(KC_SLASH),KC_RSHIFT, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, TT(_SYMB), KC_RGUI, CTL_T(KC_ESCAPE), KC_PGUP, @@ KC_PGDOWN, KC_DELETE, KC_ENTER 263,22 218,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ // If it accepts an argument (i.e, is a function), it doesn't need KC_. // Otherwise, it needs KC_* [COLEMAK] = LAYOUT_ergodox( [_COLEMAK] = LAYOUT_ergodox( // left hand KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, TG(MOUS), KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, TG(DIABLO), KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, TG(_MOUS), KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, TG(_DIABLO), KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_LSFT, LCTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, TG(OVERWATCH), LT(SYMB,KC_GRV),KC_QUOT, KC_LGUI, KC_LBRACKET,KC_RBRACKET, KC_LSFT, LCTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, TG(_OVERWATCH), LT(_SYMB,KC_GRV),KC_QUOT, KC_LGUI, KC_LBRACKET,KC_RBRACKET, ALT_T(KC_APP), KC_LEAD, KC_HOME, KC_SPC,KC_BSPC,KC_END, // right hand TG(MOUS), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, TG(DIABLO), KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS, TG(_MOUS), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, 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, TT(SYMB), TG(_OVERWATCH),KC_K, KC_M, KC_COMM,KC_DOT, RCTL_T(KC_SLASH), KC_RSHIFT, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, TT(_SYMB), KC_LALT, CTL_T(KC_ESC), KC_PGUP, @@ KC_PGDN,KC_DELETE, KC_ENT 306,22 261,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ // If it accepts an argument (i.e, is a function), it doesn't need KC_. // Otherwise, it needs KC_* [DVORAK] = LAYOUT_ergodox( [_DVORAK] = LAYOUT_ergodox( // left hand KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, TG(MOUS), KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, TG(DIABLO), KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, TG(_MOUS), KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, TG(_DIABLO), KC_BSPC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_LSFT, LCTL_T(KC_SCLN), KC_Q, KC_J, KC_K, KC_X, TG(OVERWATCH), LT(SYMB,KC_GRV),KC_QUOT, KC_LGUI, KC_LBRACKET, KC_RBRACKET, KC_LSFT, LCTL_T(KC_SCLN), KC_Q, KC_J, KC_K, KC_X, TG(_OVERWATCH), LT(_SYMB,KC_GRV),KC_QUOT, KC_LGUI, KC_LBRACKET, KC_RBRACKET, ALT_T(KC_APP), KC_LEAD, KC_HOME, KC_SPC,KC_BSPC,KC_END, // right hand TG(MOUS), KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, TG(DIABLO), KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, TG(_MOUS), KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, 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, TT(SYMB), TG(_OVERWATCH),KC_B, KC_M, KC_W, KC_V, RCTL_T(KC_Z), KC_RSHIFT, KC_LEFT,KC_DOWN,KC_UP, KC_RIGHT, TT(_SYMB), KC_LALT, CTL_T(KC_ESC), KC_PGUP, @@ KC_PGDN,KC_DELETE, KC_ENT 349,22 304,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ // If it accepts an argument (i.e, is a function), it doesn't need KC_. // Otherwise, it needs KC_* [WORKMAN] = LAYOUT_ergodox( [_WORKMAN] = LAYOUT_ergodox( // left hand KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, TG(MOUS), KC_TAB, KC_Q, KC_D, KC_R, KC_W, KC_B, TG(DIABLO), KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, TG(_MOUS), KC_TAB, KC_Q, KC_D, KC_R, KC_W, KC_B, TG(_DIABLO), KC_BSPC, KC_A, KC_S, KC_H, KC_T, KC_G, KC_LSFT, LCTL_T(KC_Z), KC_X, KC_M, KC_C, KC_V, TG(OVERWATCH), LT(SYMB,KC_GRV),KC_QUOT, KC_LGUI, KC_LBRACKET,KC_RBRACKET, KC_LSFT, LCTL_T(KC_Z), KC_X, KC_M, KC_C, KC_V, TG(_OVERWATCH), LT(_SYMB,KC_GRV),KC_QUOT, KC_LGUI, KC_LBRACKET,KC_RBRACKET, ALT_T(KC_APP), KC_LEAD, KC_HOME, KC_SPC,KC_BSPC,KC_END, // right hand TG(MOUS), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, TG(DIABLO), KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_BSLS, TG(_MOUS), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, 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, TT(SYMB), TG(_OVERWATCH),KC_K, KC_L, KC_COMM,KC_DOT, RCTL_T(KC_SLASH), KC_RSHIFT, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, TT(_SYMB), KC_LALT, CTL_T(KC_ESC), KC_PGUP, @@ KC_PGDN,KC_DELETE, KC_ENT 391,10 346,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | DARK |BRITE | BLUE | | | | | * `--------------------' `--------------------' */ [SYMB] = LAYOUT_ergodox( [_SYMB] = LAYOUT_ergodox( KC_ESCAPE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_WORKMAN, 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_MAKE, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRAVE, KC_RESET, KC_PERC, KC_CIRC, KC_LBRACKET,KC_RBRACKET,KC_TILD, KC_COLEMAK, KC_TRNS, KC_AMPR, KC_ASTR, KC_COLN, KC_SCOLON, @@ KC_TRNS, KC_TRNS, 406,8 361,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_KP_MINUS,KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_SLASH, KC_PSCREEN, KC_COLEMAK, KC_NUMLOCK, KC_KP_1, KC_KP_2, KC_KP_3, KC_EQUAL, KC_PAUSE, KC_KP_0, KC_KP_0, KC_KP_DOT, KC_KP_ENTER, KC_TRNS, RGB_TOG, RGB_SLD, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_DOT, KC_KP_0, KC_KP_ENTER ), @@ 432,7 387,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | H | | | | | * `--------------------' `--------------------' */ [OVERWATCH] = LAYOUT_ergodox( [_OVERWATCH] = LAYOUT_ergodox( KC_ESCAPE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F1, KC_K, KC_Q, KC_W, KC_E, KC_R, KC_T, @@ KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, 445,7 400,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TG(OVERWATCH), KC_N, KC_M, KC_NO, KC_NO, KC_NO, KC_NO, TG(_OVERWATCH), KC_N, KC_M, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, @@ KC_NO, 473,7 428,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | SHIFT| ALT | 0MAC | | | | | * `--------------------' `--------------------' */ [DIABLO] = LAYOUT_ergodox( [_DIABLO] = LAYOUT_ergodox( KC_ESCAPE, KC_V, KC_D, KC_LALT, KC_NO, KC_NO, KC_NO, KC_TAB, KC_S, KC_F, KC_I, KC_M, KC_T, KC_TRNS, @@ KC_Q, KC_1, KC_2, KC_3, KC_4, KC_G, 516,7 471,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | MWDn | | Mclk | | | * `--------------------' `--------------------' */ [MOUS] = LAYOUT_ergodox( [_MOUS] = LAYOUT_ergodox( KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_MS_U, KC_NO, KC_NO, KC_NO, KC_TRNS, @@ KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_NO, 539,146 494,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; void persistent_default_layer_set(uint16_t default_layer) { eeconfig_update_default_layer(default_layer); default_layer_set(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: if (record->event.pressed) { eeconfig_init(); } return false; break; case VRSN: if (record->event.pressed) { SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); } return false; break; case RGB_SLD: if (record->event.pressed) { #ifdef RGBLIGHT_ENABLE rgblight_mode(1); #endif } return false; break; case RGB_0000FF: if (record->event.pressed) { #ifdef RGBLIGHT_ENABLE rgblight_enable(); rgblight_mode(1); rgblight_setrgb(0x00, 0x00, 0xff); #endif } return false; break; case RGB_008000: if (record->event.pressed) { #ifdef RGBLIGHT_ENABLE rgblight_enable(); rgblight_mode(1); rgblight_setrgb(0x00, 0x80, 0x00); #endif } return false; break; case RGB_FF0000: if (record->event.pressed) { #ifdef RGBLIGHT_ENABLE rgblight_enable(); rgblight_mode(1); rgblight_setrgb(0xff, 0x00, 0x00); #endif } return false; break; case RGB_800080: if (record->event.pressed) { #ifdef RGBLIGHT_ENABLE rgblight_enable(); rgblight_mode(1); rgblight_setrgb(0x80, 0x00, 0x80); #endif } return false; break; case RGB_00FF90: if (record->event.pressed) { #ifdef RGBLIGHT_ENABLE rgblight_enable(); rgblight_mode(1); rgblight_setrgb(0x00, 0xff, 0x90); #endif } return false; break; case KC_DIABLO_CLEAR: // reset all Diable timers, disabling them if (record->event.pressed) { uint8_t dtime; for (dtime = 0; dtime < 4; dtime++) { diablo_key_time[dtime] = diablo_times[0]; } } return false; break; case KC_QWERTY: if (record->event.pressed) { persistent_default_layer_set(1UL << QWERTY); } return false; break; case KC_COLEMAK: if (record->event.pressed) { persistent_default_layer_set(1UL << COLEMAK); } return false; break; case KC_DVORAK: if (record->event.pressed) { persistent_default_layer_set(1UL << DVORAK); } return false; break; case KC_WORKMAN: if (record->event.pressed) { persistent_default_layer_set(1UL << WORKMAN); } return false; break; case KC_MAKEQMK: if (!record->event.pressed) { SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP ":teensy"SS_TAP(X_ENTER)); } return false; break; case KC_RESET: if (!record->event.pressed) { #ifdef RGBLIGHT_ENABLE rgblight_enable(); rgblight_mode(1); rgblight_setrgb(0xff, 0x00, 0x00); #endif reset_keyboard(); } return false; break; } bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; } @@ 686,7 503,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 (biton32(layer_state) == DIABLO) { if (biton32(layer_state) == _DIABLO) { switch (diablo_key) { case 0: @@ SEND_STRING("1"); 721,28 538,11 @@ 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 void matrix_init_keymap(void) { // Runs boot tasks for keyboard }; void matrix_scan_user(void) { // runs frequently to update info void matrix_scan_keymap(void) { // runs frequently to update info uint8_t modifiders = get_mods(); @@ if (!skip_leds) { 772,43 572,3 @@ void matrix_scan_user(void) { // runs frequently to update info #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_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; } #endif return state; }
M keyboards/handwired/woodpad/keymaps/drashna/keymap.c => keyboards/handwired/woodpad/keymaps/drashna/keymap.c +5 -209
@@ 14,37 14,21 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ #include "woodpad.h" #include "drashna.h" // Each layer gets a name for readability, which is then used in the keymap matrix below. // The underscores don't mean anything - you can have a layer called STUFF or any other name. // Layer names don't all need to be of the same length, obviously, and you can also skip them // entirely and just use numbers. #define _NUMLOCK 0 #define _NAV 1 #define _DIABLO 2 #define _MACROS 3 #define _MEDIA 4 // Fillers to make layering more clear #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; #ifdef TAP_DANCE_ENABLE @@ //define diablo macro timer variables 60,22 44,6 @@ bool check_dtimer(uint8_t dtimer) { #endif enum custom_keycodes { PLACEHOLDER = SAFE_RANGE, // can always be here KC_DIABLO_CLEAR, KC_OVERWATCH, KC_SALT, KC_MORESALT, KC_SALTHARD, KC_GOODGAME, KC_SYMM, KC_DOOMFIST, KC_JUSTGAME, KC_GLHF, KC_TORB, KC_MAKE, KC_RESET }; #ifdef TAP_DANCE_ENABLE @@ enum { 190,14 158,7 @@ void numlock_led_off(void) { } bool process_record_user(uint16_t keycode, keyrecord_t *record) { uint16_t kc; if (is_overwatch) { kc = KC_BSPC; } else { kc = KC_ENTER; } bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { switch (keycode) { #ifdef TAP_DANCE_ENABLE @@ case KC_DIABLO_CLEAR: // reset all Diable timers, disabling them 211,138 172,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return false; break; #endif case KC_OVERWATCH: if (record->event.pressed) { is_overwatch = !is_overwatch; } #ifdef RGBLIGHT_ENABLE is_overwatch ? rgblight_mode(17) : rgblight_mode(18); #endif return false; break; case KC_SALT: if (!record->event.pressed) { register_code(kc); unregister_code(kc); _delay_ms(50); SEND_STRING("Salt, salt, salt..."); register_code(KC_ENTER); unregister_code(KC_ENTER); } return false; break; case KC_MORESALT: if (!record->event.pressed) { 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); } return false; break; case KC_SALTHARD: if (!record->event.pressed) { 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); } return false; break; case KC_GOODGAME: if (!record->event.pressed) { register_code(kc); unregister_code(kc); _delay_ms(50); SEND_STRING("Good game, everyone!"); register_code(KC_ENTER); unregister_code(KC_ENTER); } return false; break; case KC_GLHF: if (!record->event.pressed) { register_code(kc); unregister_code(kc); _delay_ms(50); SEND_STRING("Good luck, have fun!!!"); register_code(KC_ENTER); unregister_code(KC_ENTER); } return false; break; case KC_SYMM: if (!record->event.pressed) { 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); } return false; break; case KC_JUSTGAME: if (!record->event.pressed) { 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); } return false; break; case KC_TORB: if (!record->event.pressed) { register_code(kc); unregister_code(kc); _delay_ms(50); SEND_STRING("That was positively riveting!"); register_code(KC_ENTER); unregister_code(KC_ENTER); } 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_RESET: if (!record->event.pressed) { #ifdef RGBLIGHT_ENABLE rgblight_enable(); rgblight_mode(1); rgblight_setrgb(0xff, 0x00, 0x00); #endif reset_keyboard(); } return false; break; } return true; } #ifdef TAP_DANCE_ENABLE @@ // Sends the key press to system, but only if on the Diablo layer 379,16 212,11 @@ void run_diablo_macro_check(void) { } #endif void matrix_init_user(void) { void matrix_init_keymap(void) { // 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); 396,7 224,7 @@ void matrix_init_user(void) { } } void matrix_scan_user(void) { void matrix_scan_keymap(void) { numlock_led_off(); if (is_overwatch && biton32(layer_state) == _MACROS) { @@ numlock_led_on(); 408,35 236,3 @@ void matrix_scan_user(void) { #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) { }
M keyboards/orthodox/keymaps/drashna/keymap.c => keyboards/orthodox/keymaps/drashna/keymap.c +3 -213
@@ 22,6 22,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #include "orthodox.h" #include "action_layer.h" #include "eeconfig.h" #include "drashna.h" extern keymap_config_t keymap_config; @@ 29,41 30,11 @@ extern keymap_config_t keymap_config; // The underscores don't mean anything - you can have a layer called STUFF or any other name. // Layer names don't all need to be of the same length, obviously, and you can also skip them // entirely and just use numbers. #define _QWERTY 0 #define _COLEMAK 1 #define _DVORAK 2 #define _WORKMAN 3 #define _LOWER 8 #define _RAISE 9 #define _ADJUST 16 enum custom_keycodes { QWERTY = SAFE_RANGE, COLEMAK, DVORAK, WORKMAN, LOWER, RAISE, ADJUST, KC_MAKE, KC_RESET }; // Fillers to make layering more clear #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 #ifdef TAP_DANCE_ENABLE @@ enum { 136,196 107,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_ADJUST] = KEYMAP(\ KC_MAKE, KC_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, KC_QWERTY, KC_COLEMAK, KC_DVORAK, KC_WORKMAN, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MAGIC_TOGGLE_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY \ ) }; #ifdef AUDIO_ENABLE 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_SOUND); #endif void persistent_default_layer_set(uint16_t default_layer) { eeconfig_update_default_layer(default_layer); default_layer_set(default_layer); } bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case QWERTY: if (record->event.pressed) { #ifdef AUDIO_ENABLE PLAY_SONG(tone_qwerty); #endif persistent_default_layer_set(1UL << _QWERTY); } return false; break; case COLEMAK: if (record->event.pressed) { #ifdef AUDIO_ENABLE PLAY_SONG(tone_colemak); #endif persistent_default_layer_set(1UL << _COLEMAK); } return false; break; case DVORAK: if (record->event.pressed) { #ifdef AUDIO_ENABLE PLAY_SONG(tone_dvorak); #endif persistent_default_layer_set(1UL << _DVORAK); } return false; break; case WORKMAN: if (record->event.pressed) { #ifdef AUDIO_ENABLE 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; 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; case ADJUST: 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 " RGBLIGHT_ENABLE=yes AUDIO_ENABLE=yes" SS_TAP(X_ENTER)); #else SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP " RGBLIGHT_ENABLE=no AUDIO_ENABLE=yes"SS_TAP(X_ENTER)); #endif } return false; break; case KC_RESET: if (!record->event.pressed) { #ifdef RGBLIGHT_ENABLE rgblight_enable(); rgblight_mode(1); rgblight_setrgb(0xff, 0x00, 0x00); #endif reset_keyboard(); } return false; break; } bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { 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 (true) { 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; } } else { rgblight_set_red; rgblight_mode(5); } #endif }; void matrix_scan_user(void) { // runs frequently to update info }; 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; } 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 return state; }
M keyboards/viterbi/keymaps/drashna/keymap.c => keyboards/viterbi/keymaps/drashna/keymap.c +14 -223
@@ 1,6 1,7 @@ #include "viterbi.h" #include "action_layer.h" #include "eeconfig.h" #include "drashna.h" extern keymap_config_t keymap_config; @@ 8,56 9,21 @@ extern keymap_config_t keymap_config; // The underscores don't mean anything - you can have a layer called STUFF or any other name. // Layer names don't all need to be of the same length, obviously, and you can also skip them // entirely and just use numbers. #define _NUMNAV 0 #define _DIABLO 1 #define _GAMEPAD 2 #define _GMACRO 3 #define _MEDIA 4 #define _COVECUBE 5 enum custom_keycodes { KC_DIABLO_CLEAR = SAFE_RANGE, KC_P00, KC_MAKE, KC_RESET, KC_OVERWATCH, KC_SALT, KC_MORESALT, KC_SALTHARD, KC_GOODGAME, KC_SYMM, KC_DOOMFIST, KC_JUSTGAME, KC_GLHF, KC_TORB, KC_AIM }; // Fillers to make layering more clear #define _______ KC_TRNS #define XXXXXXX KC_NO #define GMACRO TG(_GMACRO) #define LMACRO TG(_MACROS) #define DIABLO TG(_DIABLO) #define GAMEPAD TG(_GAMEPAD) #define GAMEPAD TG(_OVERWATCH) #define MEDIA TG(_MEDIA) #define COVECUBE TG(_COVECUBE) bool is_overwatch = false; #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 @@ static uint16_t diablo_timer[4]; 125,8 91,8 @@ qk_tap_dance_action_t tap_dance_actions[] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_NUMNAV] = KEYMAP( GMACRO, DIABLO, GAMEPAD, KC_NLCK, KC_SLCK, KC_COLN, KC_PSLS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ [_NUMLOCK] = KEYMAP( LMACRO, 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, \ 137,20 103,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 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_LCTL, TD(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 GMACRO, KC_ESC, GAMEPAD, KC_1, KC_2, KC_3, KC_4, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ [_OVERWATCH] = KEYMAP( // Game pad layout designed primarily for Overwatch LMACRO, 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 \ ), [_GMACRO] = KEYMAP( GMACRO, XXXXXXX, GAMEPAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ [_MACROS] = KEYMAP( LMACRO, 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, \ 178,18 144,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { bool process_record_user(uint16_t keycode, keyrecord_t *record) { uint16_t kc; 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. bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { switch (keycode) { #ifdef TAP_DANCE_ENABLE @@ case KC_DIABLO_CLEAR: // reset all Diable timers, disabling them 203,130 158,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return false; break; #endif case KC_P00: if (!record->event.pressed) { register_code(KC_P0); unregister_code(KC_P0); register_code(KC_P0); unregister_code(KC_P0); } 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_RESET: if (!record->event.pressed) { #ifdef RGBLIGHT_ENABLE rgblight_enable(); rgblight_mode(1); rgblight_setrgb(0xff, 0x00, 0x00); #endif reset_keyboard(); } return false; break; case KC_OVERWATCH: // reset all Diable timers, disabling them if (record->event.pressed) { is_overwatch = !is_overwatch; } #ifdef RGBLIGHT_ENABLE is_overwatch ? rgblight_mode(17) : rgblight_mode(18); #endif return false; break; case KC_SALT: if (!record->event.pressed) { register_code(kc); unregister_code(kc); _delay_ms(50); SEND_STRING("Salt, salt, salt..." SS_TAP(X_ENTER)); } return false; break; case KC_MORESALT: if (!record->event.pressed) { register_code(kc); unregister_code(kc); _delay_ms(50); SEND_STRING("Please sir, can I have some more salt?!" SS_TAP(X_ENTER)); } return false; break; case KC_SALTHARD: if (!record->event.pressed) { register_code(kc); unregister_code(kc); _delay_ms(50); SEND_STRING("Your salt only makes my penis that much harder, and even more aggressive!" SS_TAP(X_ENTER)); } return false; break; case KC_GOODGAME: if (!record->event.pressed) { register_code(kc); unregister_code(kc); _delay_ms(50); SEND_STRING("Good game, everyone!" SS_TAP(X_ENTER)); } return false; break; case KC_GLHF: if (!record->event.pressed) { register_code(kc); unregister_code(kc); _delay_ms(50); SEND_STRING("Good luck, have fun!!!" SS_TAP(X_ENTER)); } return false; break; case KC_SYMM: if (!record->event.pressed) { register_code(kc); unregister_code(kc); _delay_ms(50); SEND_STRING("Left click to win!" SS_TAP(X_ENTER)); } return false; break; case KC_JUSTGAME: if (!record->event.pressed) { 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." SS_TAP(X_ENTER)); } return false; break; case KC_TORB: if (!record->event.pressed) { register_code(kc); unregister_code(kc); _delay_ms(50); 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; @@ } 369,51 200,11 @@ 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 void matrix_scan_keymap(void) { // runs frequently to update info #ifdef TAP_DANCE_ENABLE // Run Diablo 3 macro checking code. run_diablo_macro_check(); #endif }; 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 _GMACRO: 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; }
A users/drashna/drashna.c => users/drashna/drashna.c +379 -0
@@ 0,0 1,379 @@ #include "drashna.h" #include "quantum.h" #include "action.h" #include "version.h" __attribute__ ((weak)) void matrix_init_keymap(void) {} __attribute__ ((weak)) void matrix_scan_keymap(void) {} __attribute__ ((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; } void matrix_init_user(void) { #ifdef RGBLIGHT_ENABLE uint8_t default_layer = eeconfig_read_default_layer(); rgblight_enable(); if (true) { 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; } } else { rgblight_set_red; rgblight_mode(5); } #endif matrix_init_keymap(); } void matrix_scan_user(void) { matrix_scan_keymap(); } #ifdef AUDIO_ENABLE 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_SOUND); #endif void persistent_default_layer_set(uint16_t default_layer) { eeconfig_update_default_layer(default_layer); default_layer_set(default_layer); } bool process_record_user(uint16_t keycode, keyrecord_t *record) { uint16_t kc; if (is_overwatch) { kc = KC_BSPC; } else { kc = KC_ENTER; } #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) { case KC_QWERTY: if (record->event.pressed) { #ifdef AUDIO_ENABLE PLAY_SONG(tone_qwerty); #endif persistent_default_layer_set(1UL << _QWERTY); } return false; break; case KC_COLEMAK: if (record->event.pressed) { #ifdef AUDIO_ENABLE PLAY_SONG(tone_colemak); #endif persistent_default_layer_set(1UL << _COLEMAK); } return false; break; case KC_DVORAK: if (record->event.pressed) { #ifdef AUDIO_ENABLE PLAY_SONG(tone_dvorak); #endif persistent_default_layer_set(1UL << _DVORAK); } return false; break; case KC_WORKMAN: if (record->event.pressed) { #ifdef AUDIO_ENABLE 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; 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; case ADJUST: if (record->event.pressed) { layer_on(_ADJUST); } else { layer_off(_ADJUST); } return false; break; case KC_OVERWATCH: if (record->event.pressed) { is_overwatch = !is_overwatch; } #ifdef RGBLIGHT_ENABLE is_overwatch ? rgblight_mode(17) : rgblight_mode(18); #endif return false; break; case KC_SALT: if (!record->event.pressed) { register_code(kc); unregister_code(kc); _delay_ms(50); SEND_STRING("Salt, salt, salt..."); register_code(KC_ENTER); unregister_code(KC_ENTER); } return false; break; case KC_MORESALT: if (!record->event.pressed) { 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); } return false; break; case KC_SALTHARD: if (!record->event.pressed) { 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); } return false; break; case KC_GOODGAME: if (!record->event.pressed) { register_code(kc); unregister_code(kc); _delay_ms(50); SEND_STRING("Good game, everyone!"); register_code(KC_ENTER); unregister_code(KC_ENTER); } return false; break; case KC_GLHF: if (!record->event.pressed) { register_code(kc); unregister_code(kc); _delay_ms(50); SEND_STRING("Good luck, have fun!!!"); register_code(KC_ENTER); unregister_code(KC_ENTER); } return false; break; case KC_SYMM: if (!record->event.pressed) { 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); } return false; break; case KC_JUSTGAME: if (!record->event.pressed) { 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); } return false; break; case KC_TORB: if (!record->event.pressed) { register_code(kc); unregister_code(kc); _delay_ms(50); SEND_STRING("That was positively riveting!"); register_code(KC_ENTER); unregister_code(KC_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; case KC_MAKE: if (!record->event.pressed) { #ifdef RGBLIGHT_ENABLE SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP " RGBLIGHT_ENABLE=yes" SS_TAP(X_ENTER)); #else SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP " RGBLIGHT_ENABLE=no"SS_TAP(X_ENTER)); #endif } return false; break; case KC_RESET: if (!record->event.pressed) { #ifdef RGBLIGHT_ENABLE rgblight_enable(); rgblight_mode(1); rgblight_setrgb(0xff, 0x00, 0x00); #endif reset_keyboard(); } return false; break; case EPRM: if (record->event.pressed) { eeconfig_init(); } return false; break; case VRSN: if (record->event.pressed) { SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); } return false; break; case KC_P00: if (!record->event.pressed) { register_code(KC_P0); unregister_code(KC_P0); register_code(KC_P0); unregister_code(KC_P0); } return false; break; } return process_record_keymap(keycode, record); } uint32_t layer_state_set_kb(uint32_t state) { #ifdef RGBLIGHT_ENABLE uint8_t default_layer = eeconfig_read_default_layer(); switch (biton32(state)) { case _NAV: rgblight_set_blue; rgblight_mode(1); break; case _SYMB: rgblight_set_blue; rgblight_mode(2); break; case _MOUS: rgblight_set_yellow; rgblight_mode(1); break; case _MACROS: rgblight_set_orange; is_overwatch ? rgblight_mode(17) : rgblight_mode(18); rgblight_mode(18); break; case _MEDIA: rgblight_set_green; rgblight_mode(22); break; case _OVERWATCH: rgblight_set_orange; rgblight_mode(17); break; case _DIABLO: rgblight_set_red; rgblight_mode(5); 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 _COVECUBE: rgblight_set_green; rgblight_mode(2); default: 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; } #endif return state; }
A users/drashna/drashna.h => users/drashna/drashna.h +73 -0
@@ 0,0 1,73 @@ #ifndef USERSPACE #define USERSPACE #include "quantum.h" // Define layer names #define _QWERTY 0 #define _NUMLOCK 0 #define _COLEMAK 1 #define _DVORAK 2 #define _WORKMAN 3 #define _NAV 5 #define _COVECUBE 6 #define _SYMB 8 #define _OVERWATCH 9 #define _DIABLO 10 #define _MOUS 11 #define _MACROS 12 #define _MEDIA 13 #define _LOWER 14 #define _RAISE 15 #define _ADJUST 16 //define modifiers #define MODS_SHIFT_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) #define MODS_CTRL_MASK (MOD_BIT(KC_LCTL)|MOD_BIT(KC_RCTRL)) #define MODS_ALT_MASK (MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT)) #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 __attribute__ ((weak)) bool is_overwatch = false; enum custom_keycodes { PLACEHOLDER = SAFE_RANGE, // can always be here EPRM, VRSN, KC_QWERTY, KC_COLEMAK, KC_DVORAK, KC_WORKMAN, LOWER, RAISE, ADJUST, KC_DIABLO_CLEAR, KC_OVERWATCH, KC_SALT, KC_MORESALT, KC_SALTHARD, KC_GOODGAME, KC_SYMM, KC_DOOMFIST, KC_JUSTGAME, KC_GLHF, KC_TORB, KC_AIM, KC_MAKE, KC_RESET, KC_P00, NEWPLACEHOLDER }; #endif
A users/drashna/readme.md => users/drashna/readme.md +14 -0
@@ 0,0 1,14 @@ Copyright 2017 Christopher Courtney <drashna@live.com> @drashna This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
A users/drashna/rules.mk => users/drashna/rules.mk +2 -0