From 1bb77c087502de19fe5e403f519be321ba2c85f5 Mon Sep 17 00:00:00 2001 From: Drashna Jaelre Date: Fri, 20 Apr 2018 17:53:19 -0700 Subject: Update to drashna keymaps and userspace (#2756) * Re-add NO_SECRETS option * Add Thumb Clusters defines for default layout * Minor tweaks * More Minor tweaks * Revert Orthodox layers and move function keys around * Fix keymap so it will compile under the Infinity Since I haven't added 'pretty' layouts to it yet * Cleanup of userspace * Cleanup keymaps * OMG fix Workman * Move mods layer key around * Reduce debounce in Ergodox EZ * Fix Infinity layers * Add list of pins used by Ergdox EZ for easy reference * Revert "Reduce debounce in Ergodox EZ" This reverts commit 8a3db2673b419ef8032c40a6d29156cef632f9cd. * Add Clicky toggle to Orthodox * Fix Audio Clicky keycode * Enable Faux Clicky by default * Add Unicode stuff --- users/drashna/config.h | 7 +-- users/drashna/drashna.c | 68 ++++++++++++++++++++++++-- users/drashna/drashna.h | 125 ++++++++++++++++++++++++++++++++++++++---------- users/drashna/rules.mk | 4 +- 4 files changed, 171 insertions(+), 33 deletions(-) (limited to 'users') diff --git a/users/drashna/config.h b/users/drashna/config.h index f9b0d4d17a..e48f72355b 100644 --- a/users/drashna/config.h +++ b/users/drashna/config.h @@ -4,6 +4,7 @@ #ifdef AUDIO_ENABLE #define AUDIO_CLICKY +#define AUDIO_CLICKY_ON #define STARTUP_SONG SONG(E1M1_DOOM) #define GOODBYE_SONG SONG(SONIC_RING) #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \ @@ -16,7 +17,7 @@ #ifdef RGBLIGHT_ENABLE #ifndef KEYBOARD_ergodox_ez #define RGBLIGHT_SLEEP - #endif + #endif // !KEYBOARD_ergodox_ez #endif // RGBLIGHT_ENABLE @@ -51,8 +52,8 @@ #ifdef TAPPING_TERM #undef TAPPING_TERM -#endif -#define TAPPING_TERM 160 +#endif // TAPPING_TERM +#define TAPPING_TERM 176 // Disable action_get_macro and fn_actions, since we don't use these diff --git a/users/drashna/drashna.c b/users/drashna/drashna.c index 73bd249e4c..d9d412b086 100644 --- a/users/drashna/drashna.c +++ b/users/drashna/drashna.c @@ -41,8 +41,13 @@ float fauxclicky_pressed[][2] = SONG(S__NOTE(_A6)); // change to you float fauxclicky_released[][2] = SONG(S__NOTE(_A6)); // change to your tastes #endif // FAUXCLICKY_ENABLE +float tone_copy[][2] = SONG(SCROLL_LOCK_ON_SOUND); +float tone_paste[][2] = SONG(SCROLL_LOCK_OFF_SOUND); + + bool faux_click_enabled = false; bool is_overwatch = false; +static uint16_t copy_paste_timer; #ifdef RGBLIGHT_ENABLE bool rgb_layer_change = true; #endif @@ -198,17 +203,21 @@ void matrix_scan_user(void) { matrix_scan_keymap(); } +void tap(uint16_t keycode){ + register_code(keycode); + unregister_code(keycode); +}; + // This block is for all of the gaming macros, as they were all doing // the same thing, but with differring text sent. bool send_game_macro(const char *str, keyrecord_t *record, bool override) { if (!record->event.pressed || override) { clear_keyboard(); - register_code(is_overwatch ? KC_BSPC : KC_ENTER); - unregister_code(is_overwatch ? KC_BSPC : KC_ENTER); + tap(is_overwatch ? KC_BSPC : KC_ENTER); wait_ms(50); send_string(str); - register_code(KC_ENTER); - unregister_code(KC_ENTER); + wait_ms(50); + tap(KC_ENTER); } if (override) wait_ms(3000); return false; @@ -402,6 +411,56 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return true; break; #endif // RGBLIGHT_ENABLE + + + case KC_CCCV: // One key copy/paste + if(record->event.pressed){ + copy_paste_timer = timer_read(); + } else { + if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { // Hold, copy + register_code(KC_LCTL); + tap(KC_C); + unregister_code(KC_LCTL); +#ifdef AUDIO_ENABLE + PLAY_SONG(tone_copy); +#endif + } else { // Tap, paste + register_code(KC_LCTL); + tap(KC_V); + unregister_code(KC_LCTL); +#ifdef AUDIO_ENABLE + PLAY_SONG(tone_paste); +#endif + } + } + return false; + break; + +#ifdef UNICODE_ENABLE + case UC_FLIP: // (╯°□°)╯ ︵ ┻━┻ + if (record->event.pressed) { + register_code(KC_RSFT); + tap(KC_9); + unregister_code(KC_RSFT); + process_unicode((0x256F | QK_UNICODE), record); // Arm + process_unicode((0x00B0 | QK_UNICODE), record); // Eye + process_unicode((0x25A1 | QK_UNICODE), record); // Mouth + process_unicode((0x00B0 | QK_UNICODE), record); // Eye + register_code(KC_RSFT); + tap(KC_0); + unregister_code(KC_RSFT); + process_unicode((0x256F | QK_UNICODE), record); // Arm + tap(KC_SPC); + process_unicode((0x0361 | QK_UNICODE), record); // Flippy + tap(KC_SPC); + process_unicode((0x253B | QK_UNICODE), record); // Table + process_unicode((0x2501 | QK_UNICODE), record); // Table + process_unicode((0x253B | QK_UNICODE), record); // Table + } + return false; + break; +#endif // UNICODE_ENABLE + } return process_record_keymap(keycode, record); } @@ -413,6 +472,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { uint32_t layer_state_set_user(uint32_t state) { #ifdef RGBLIGHT_ENABLE uint8_t default_layer = eeconfig_read_default_layer(); + if (rgb_layer_change) { switch (biton32(state)) { case _NAV: diff --git a/users/drashna/drashna.h b/users/drashna/drashna.h index b7cbaa44af..746c7e20a0 100644 --- a/users/drashna/drashna.h +++ b/users/drashna/drashna.h @@ -20,25 +20,25 @@ along with this program. If not, see . #include "quantum.h" // Define layer names -#define _QWERTY 0 -#define _NUMLOCK 0 -#define _COLEMAK 1 -#define _DVORAK 2 -#define _WORKMAN 3 -#define _MODS 4 -//#define _MISC 5 -#define _NAV 6 -#define _COVECUBE 7 -#define _SYMB 8 -#define _GAMEPAD 9 -#define _DIABLO 10 -#define _MOUS 11 -#define _MACROS 12 -#define _MEDIA 13 -#define _LOWER 14 -#define _RAISE 15 -#define _ADJUST 16 - +enum userspace_layers { + _QWERTY = 0, + _NUMLOCK = 0, + _COLEMAK, + _DVORAK, + _WORKMAN, + _MODS, + _NAV, + _COVECUBE, + _SYMB, + _GAMEPAD, + _DIABLO, + _MOUS, + _MACROS, + _MEDIA, + _LOWER, + _RAISE, + _ADJUST, +}; //define modifiers #define MODS_SHIFT_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) @@ -83,6 +83,10 @@ enum userspace_custom_keycodes { KC_SECRET_3, KC_SECRET_4, KC_SECRET_5, + KC_CCCV, +#ifdef UNICODE_ENABLE + UC_FLIP, +#endif //UNICODE_ENABLE NEW_SAFE_RANGE //use "NEWPLACEHOLDER for keymap specific codes }; @@ -107,6 +111,72 @@ enum { }; #endif // TAP_DANCE_ENABLE +#ifdef UNICODEMAP_ENABLE + +/* use X(n) to call the */ + + +enum unicode_name { + THINK, // thinking face 🤔 + GRIN, // grinning face 😊 + SMRK, // smirk 😏 + WEARY, // good shit 😩 + UNAMU, // unamused 😒 + + SNEK, // snke 🐍 + PENGUIN, // 🐧 + DRAGON, // 🐉 + MONKEY, // 🐒 + CHICK, // 🐥 + + OKOK, // 👌 + EFFU, // 🖕 + INUP, // 👆 + THUP, // 👍 + THDN, // 👎 + + BBB, // dat B 🅱 + POO, // poop 💩 + HUNDR, // 100 💯 + EGGPL, // EGGPLANT 🍆 + WATER, // wet 💦 + TUMBLER, // 🥃 + + LIT, // fire 🔥 + IRONY, // ‽ + DEGREE, // ° +}; + + +const uint32_t PROGMEM unicode_map[] = { + [THINK] = 0x1F914, + [GRIN] = 0x1F600, + [BBB] = 0x1F171, + [POO] = 0x1F4A9, + [HUNDR] = 0x1F4AF, + [SMRK] = 0x1F60F, + [WEARY] = 0x1F629, + [EGGPL] = 0x1F346, + [WATER] = 0x1F4A6, + [LIT] = 0x1F525, + [UNAMU] = 0x1F612, + [SNEK] = 0x1F40D, + [PENGUIN] = 0x1F427, + [BOAR] = 0x1F417, + [MONKEY] = 0x1F412, + [CHICK] = 0x1F425, + [DRAGON] = 0x1F409, + [OKOK] = 0x1F44C, + [EFFU] = 0x1F595, + [INUP] = 0x1F446, + [THDN] = 0x1F44E, + [THUP] = 0x1F44D, + [TUMBLER] = 0x1F943, + [IRONY] = 0x0203D, + [DEGREE] = 0x000B0, + }; + +#endif //UNICODEMAP_ENABLE // Custom Keycodes for Diablo 3 layer // But since TD() doesn't work when tap dance is disabled @@ -199,13 +269,13 @@ enum { #define _________________DVORAK_R3_________________ KC_B, KC_M, KC_W, KC_V, CTL_T(KC_Z) -#define _________________WORKMAN_L1________________ KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y -#define _________________WORKMAN_L2________________ KC_A, KC_O, KC_E, KC_U, KC_I -#define _________________WORKMAN_L3________________ CTL_T(KC_SCLN),KC_Q, KC_J, KC_K, KC_X +#define _________________WORKMAN_L1________________ KC_Q, KC_D, KC_R, KC_W, KC_B +#define _________________WORKMAN_L2________________ KC_A, KC_S, KC_H, KC_T, KC_G +#define _________________WORKMAN_L3________________ CTL_T(KC_Z), KC_X, KC_M, KC_C, KC_V -#define _________________WORKMAN_R1________________ KC_F, KC_G, KC_C, KC_R, KC_L -#define _________________WORKMAN_R2________________ KC_D, KC_H, KC_T, KC_N, KC_S -#define _________________WORKMAN_R3________________ KC_B, KC_M, KC_W, KC_V, CTL_T(KC_Z) +#define _________________WORKMAN_R1________________ KC_J, KC_F, KC_U, KC_P, KC_SCLN +#define _________________WORKMAN_R2________________ KC_Y, KC_N, KC_E, KC_O, KC_I +#define _________________WORKMAN_R3________________ KC_K, KC_L, KC_COMM, KC_DOT, CTL_T(KC_SLASH) #define _________________NORMAN_L1_________________ KC_Q, KC_W, KC_D, KC_F, KC_K @@ -226,4 +296,9 @@ enum { #define ___________ERGODOX_BOTTOM_RIGHT____________ KC_LEFT, KC_DOWN, KC_UP, KC_RGHT +#define __________________ERGODOX_THUMB_CLUSTER_____________________ ALT_T(KC_APP), KC_LGUI, KC_RGUI, CTL_T(KC_ESCAPE), \ + KC_HOME, KC_PGUP, \ + KC_SPACE,KC_BSPC, KC_END, KC_PGDN, KC_DEL, KC_ENTER + + #endif diff --git a/users/drashna/rules.mk b/users/drashna/rules.mk index 062ecd3c49..123c0cc70a 100644 --- a/users/drashna/rules.mk +++ b/users/drashna/rules.mk @@ -2,4 +2,6 @@ SRC += drashna.c EXTRAFLAGS += -flto - +ifeq ($(strip $(NO_SECRETS)), yes) + OPT_DEFS += -DNO_SECRETS +endif -- cgit v1.2.3