diff options
| -rw-r--r-- | keyboards/iris/keymaps/drashna/config.h | 59 | ||||
| -rw-r--r-- | keyboards/iris/keymaps/drashna/keymap.c | 141 | ||||
| -rw-r--r-- | keyboards/iris/keymaps/drashna/rules.mk | 11 | ||||
| -rw-r--r-- | keyboards/orthodox/keymaps/drashna/README.md | 4 | ||||
| -rw-r--r-- | keyboards/orthodox/keymaps/drashna/config.h | 9 | ||||
| -rw-r--r-- | keyboards/orthodox/keymaps/drashna/keymap.c | 71 | ||||
| -rw-r--r-- | keyboards/viterbi/keymaps/drashna/keymap.c | 2 | ||||
| -rw-r--r-- | keyboards/viterbi/keymaps/drashna/rules.mk | 9 | ||||
| -rw-r--r-- | layouts/community/ergodox/drashna/keymap.c | 30 | ||||
| -rw-r--r-- | layouts/community/ergodox/drashna/rules.mk | 2 | ||||
| -rw-r--r-- | quantum/process_keycode/process_clicky.c | 1 | ||||
| -rw-r--r-- | users/drashna/config.h | 8 | ||||
| -rw-r--r-- | users/drashna/drashna.c | 318 | ||||
| -rw-r--r-- | users/drashna/drashna.h | 125 | ||||
| -rw-r--r-- | users/drashna/drashna_unicode.h | 71 | ||||
| -rw-r--r-- | users/drashna/readme.md | 28 |
16 files changed, 622 insertions, 267 deletions
diff --git a/keyboards/iris/keymaps/drashna/config.h b/keyboards/iris/keymaps/drashna/config.h new file mode 100644 index 000000000..2a451e7c7 --- /dev/null +++ b/keyboards/iris/keymaps/drashna/config.h | |||
| @@ -0,0 +1,59 @@ | |||
| 1 | /* | ||
| 2 | Copyright 2017 Danny Nguyen <danny@keeb.io> | ||
| 3 | |||
| 4 | This program is free software: you can redistribute it and/or modify | ||
| 5 | it under the terms of the GNU General Public License as published by | ||
| 6 | the Free Software Foundation, either version 2 of the License, or | ||
| 7 | (at your option) any later version. | ||
| 8 | |||
| 9 | This program is distributed in the hope that it will be useful, | ||
| 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 12 | GNU General Public License for more details. | ||
| 13 | |||
| 14 | You should have received a copy of the GNU General Public License | ||
| 15 | along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 16 | */ | ||
| 17 | |||
| 18 | #ifndef CONFIG_USER_H | ||
| 19 | #define CONFIG_USER_H | ||
| 20 | |||
| 21 | #include "config_common.h" | ||
| 22 | |||
| 23 | /* Use I2C or Serial, not both */ | ||
| 24 | |||
| 25 | #define USE_SERIAL | ||
| 26 | #undef USE_I2C | ||
| 27 | |||
| 28 | /* Select hand configuration */ | ||
| 29 | |||
| 30 | // #define MASTER_LEFT | ||
| 31 | // #define MASTER_RIGHT | ||
| 32 | #define EE_HANDS | ||
| 33 | |||
| 34 | #ifdef RGBLIGHT_ENABLE | ||
| 35 | #undef RGBLED_NUM | ||
| 36 | #define RGBLED_NUM 16 // Number of LEDs | ||
| 37 | #define RGBLIGHT_ANIMATIONS | ||
| 38 | #define RGBLIGHT_HUE_STEP 12 | ||
| 39 | #define RGBLIGHT_SAT_STEP 12 | ||
| 40 | #define RGBLIGHT_VAL_STEP 12 | ||
| 41 | #define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2 | ||
| 42 | #define RGBLIGHT_EFFECT_SNAKE_LENGTH 2 | ||
| 43 | #define RGBLIGHT_EFFECT_BREATHE_CENTER 1 | ||
| 44 | #endif // RGBLIGHT_ENABLE | ||
| 45 | |||
| 46 | #ifdef AUDIO_ENABLE | ||
| 47 | #define C6_AUDIO | ||
| 48 | #ifdef RGBLIGHT_ENABLE | ||
| 49 | #define NO_MUSIC_MODE | ||
| 50 | #endif //RGBLIGHT_ENABLE | ||
| 51 | #endif //AUDIO_ENABLE | ||
| 52 | |||
| 53 | |||
| 54 | #undef PRODUCT | ||
| 55 | #ifdef KEYBOARD_iris_rev2 | ||
| 56 | #define PRODUCT Drashna Hacked Iris Rev.2 | ||
| 57 | #endif | ||
| 58 | |||
| 59 | #endif | ||
diff --git a/keyboards/iris/keymaps/drashna/keymap.c b/keyboards/iris/keymaps/drashna/keymap.c new file mode 100644 index 000000000..64d074fc9 --- /dev/null +++ b/keyboards/iris/keymaps/drashna/keymap.c | |||
| @@ -0,0 +1,141 @@ | |||
| 1 | |||
| 2 | #include QMK_KEYBOARD_H | ||
| 3 | #include "drashna.h" | ||
| 4 | |||
| 5 | |||
| 6 | #define KC_ALAP ALT_T(KC_APP) | ||
| 7 | |||
| 8 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
| 9 | |||
| 10 | [_QWERTY] = LAYOUT_wrapper( | ||
| 11 | KC_GESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS, | ||
| 12 | KC_TAB , _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, KC_BSLS, | ||
| 13 | KC_C1R3, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_QUOT, | ||
| 14 | KC_MLSF, _________________QWERTY_L3_________________, KC_ALAP, KC_LGUI, _________________QWERTY_R3_________________, KC_MRSF, | ||
| 15 | LOWER, KC_SPC, KC_BSPC, KC_DEL, KC_ENT, RAISE | ||
| 16 | ), | ||
| 17 | [_COLEMAK] = LAYOUT_wrapper( | ||
| 18 | KC_GESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS, | ||
| 19 | KC_TAB , _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, KC_BSLS, | ||
| 20 | KC_C1R3, _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, KC_QUOT, | ||
| 21 | KC_MLSF, _________________COLEMAK_L3________________, KC_ALAP, KC_LGUI, _________________COLEMAK_R3________________, KC_MRSF, | ||
| 22 | LOWER, KC_SPC, KC_BSPC, KC_DEL, KC_ENT, RAISE | ||
| 23 | ), | ||
| 24 | [_DVORAK] = LAYOUT_wrapper( | ||
| 25 | KC_GESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS, | ||
| 26 | KC_TAB , _________________DVORAK_L1_________________, _________________DVORAK_R1_________________, KC_BSLS, | ||
| 27 | KC_C1R3, _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, KC_QUOT, | ||
| 28 | KC_MLSF, _________________DVORAK_L3_________________, KC_ALAP, KC_LGUI, _________________DVORAK_R3_________________, KC_MRSF, | ||
| 29 | LOWER, KC_SPC, KC_BSPC, KC_DEL, KC_ENT, RAISE | ||
| 30 | ), | ||
| 31 | [_WORKMAN] = LAYOUT_wrapper( | ||
| 32 | KC_GESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS, | ||
| 33 | KC_TAB , _________________WORKMAN_L1________________, _________________WORKMAN_R1________________, KC_BSLS, | ||
| 34 | KC_C1R3, _________________WORKMAN_L2________________, _________________WORKMAN_R2________________, KC_QUOT, | ||
| 35 | KC_MLSF, _________________WORKMAN_L3________________, KC_ALAP, KC_LGUI, _________________WORKMAN_R3________________, KC_MRSF, | ||
| 36 | LOWER, KC_SPC, KC_BSPC, KC_DEL, KC_ENT, RAISE | ||
| 37 | ), | ||
| 38 | |||
| 39 | [_MODS] = LAYOUT( | ||
| 40 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
| 41 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
| 42 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
| 43 | KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
| 44 | _______, _______, _______, _______, _______, _______ | ||
| 45 | ), | ||
| 46 | |||
| 47 | |||
| 48 | [_LOWER] = LAYOUT( | ||
| 49 | KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, | ||
| 50 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
| 51 | KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_RBRC, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, | ||
| 52 | KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_LPRN, KC_RPRN, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, | ||
| 53 | _______, _______, KC_DEL, _______, _______, _______ | ||
| 54 | ), | ||
| 55 | |||
| 56 | [_RAISE] = LAYOUT( | ||
| 57 | KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, | ||
| 58 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
| 59 | _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_UNDS, KC_EQL , KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, | ||
| 60 | _______, _______, _______, _______, _______, _______, _______, _______, KC_PLUS, KC_END, _______, _______, _______, _______, | ||
| 61 | _______, _______, _______, _______, _______, _______ | ||
| 62 | ), | ||
| 63 | |||
| 64 | [_ADJUST] = LAYOUT( | ||
| 65 | KC_MAKE, KC_RST, EPRM, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
| 66 | RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, | ||
| 67 | RGB_SMOD,RGB_HUI, CK_TOGG, AU_ON, AU_OFF, AG_NORM, AG_SWAP, KC_QWERTY, KC_COLEMAK, KC_DVORAK, KC_WORKMAN, TG(_MODS), | ||
| 68 | KC_RGB_T,RGB_SMOD,RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, MG_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY, | ||
| 69 | _______, _______, _______, _______, _______, _______ | ||
| 70 | ) | ||
| 71 | |||
| 72 | }; | ||
| 73 | |||
| 74 | |||
| 75 | |||
| 76 | #ifdef INDICATOR_LIGHT | ||
| 77 | uint32_t layer_state_set_keymap (uint32_t state) { | ||
| 78 | uint8_t modifiders = get_mods(); | ||
| 79 | uint8_t led_usb_state = host_keyboard_leds(); | ||
| 80 | uint8_t one_shot = get_oneshot_mods(); | ||
| 81 | |||
| 82 | |||
| 83 | if (modifiders & MODS_SHIFT_MASK || led_usb_state & (1<<USB_LED_CAPS_LOCK) || one_shot & MODS_SHIFT_MASK) { | ||
| 84 | rgblight_sethsv_at(0, 255, 255, 5); | ||
| 85 | rgblight_sethsv_at(0, 255, 255, 10); | ||
| 86 | } | ||
| 87 | if (modifiders & MODS_CTRL_MASK || one_shot & MODS_CTRL_MASK) { | ||
| 88 | rgblight_sethsv_at(51, 255, 255, 6); | ||
| 89 | rgblight_sethsv_at(51, 255, 255, 9); | ||
| 90 | } | ||
| 91 | if (modifiders & MODS_ALT_MASK || one_shot & MODS_ALT_MASK) { | ||
| 92 | rgblight_sethsv_at(120, 255, 255, 7); | ||
| 93 | rgblight_sethsv_at(120, 255, 255, 8); | ||
| 94 | } | ||
| 95 | |||
| 96 | return state; | ||
| 97 | } | ||
| 98 | |||
| 99 | |||
| 100 | void matrix_scan_keymap (void) { | ||
| 101 | static uint8_t current_mods; | ||
| 102 | static uint8_t current_host_leds; | ||
| 103 | static uint8_t current_oneshot_mods; | ||
| 104 | static bool has_status_changed = true; | ||
| 105 | |||
| 106 | if ( current_mods != get_mods() || current_host_leds != host_keyboard_leds() || current_oneshot_mods != get_oneshot_mods()) { | ||
| 107 | has_status_changed = true; | ||
| 108 | current_mods = get_mods(); | ||
| 109 | current_host_leds = host_keyboard_leds(); | ||
| 110 | current_oneshot_mods = get_oneshot_mods(); | ||
| 111 | } | ||
| 112 | if (has_status_changed) { | ||
| 113 | has_status_changed = false; | ||
| 114 | |||
| 115 | if (current_mods & MODS_SHIFT_MASK || current_host_leds & (1<<USB_LED_CAPS_LOCK) || current_oneshot_mods & MODS_SHIFT_MASK) { | ||
| 116 | rgblight_sethsv_at(0, 255, 255, 5); | ||
| 117 | rgblight_sethsv_at(0, 255, 255, 10); | ||
| 118 | } else { | ||
| 119 | rgblight_sethsv_default_helper(5); | ||
| 120 | rgblight_sethsv_default_helper(10); | ||
| 121 | } | ||
| 122 | if (current_mods & MODS_CTRL_MASK || current_oneshot_mods & MODS_CTRL_MASK) { | ||
| 123 | rgblight_sethsv_at(51, 255, 255, 6); | ||
| 124 | rgblight_sethsv_at(51, 255, 255, 9); | ||
| 125 | } else { | ||
| 126 | rgblight_sethsv_default_helper(6); | ||
| 127 | rgblight_sethsv_default_helper(9); | ||
| 128 | } | ||
| 129 | if (current_mods & MODS_GUI_MASK || current_oneshot_mods & MODS_GUI_MASK) { | ||
| 130 | rgblight_sethsv_at(120, 255, 255, 7); | ||
| 131 | rgblight_sethsv_at(120, 255, 255, 8); | ||
| 132 | } else { | ||
| 133 | rgblight_sethsv_default_helper(7); | ||
| 134 | rgblight_sethsv_default_helper(8); | ||
| 135 | |||
| 136 | } | ||
| 137 | } | ||
| 138 | } | ||
| 139 | #endif | ||
| 140 | |||
| 141 | |||
diff --git a/keyboards/iris/keymaps/drashna/rules.mk b/keyboards/iris/keymaps/drashna/rules.mk new file mode 100644 index 000000000..0e49adf4a --- /dev/null +++ b/keyboards/iris/keymaps/drashna/rules.mk | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) | ||
| 2 | MOUSEKEY_ENABLE = no # Mouse keys(+4700) | ||
| 3 | EXTRAKEY_ENABLE = yes # Audio control and System control(+450) | ||
| 4 | CONSOLE_ENABLE = no # Console for debug(+400) | ||
| 5 | COMMAND_ENABLE = no # Commands for debug and configuration | ||
| 6 | TAP_DANCE_ENABLE = no | ||
| 7 | RGBLIGHT_ENABLE = yes | ||
| 8 | AUDIO_ENABLE = yes | ||
| 9 | NKRO_ENABLE = yes | ||
| 10 | BACKLIGHT_ENABLE = no | ||
| 11 | |||
diff --git a/keyboards/orthodox/keymaps/drashna/README.md b/keyboards/orthodox/keymaps/drashna/README.md index c61161774..6c208d2c8 100644 --- a/keyboards/orthodox/keymaps/drashna/README.md +++ b/keyboards/orthodox/keymaps/drashna/README.md | |||
| @@ -21,6 +21,4 @@ All layers have RGB specific indicators, so you can see what layer you're on by | |||
| 21 | Orthodox Specific Code | 21 | Orthodox Specific Code |
| 22 | ---------------------- | 22 | ---------------------- |
| 23 | 23 | ||
| 24 | Left side is designed to have RGB underglow and Faux Clicking enabled, while the right has Audio enabled. | 24 | Shift, Control and Alt all light up a specific RGB LED for a certain color, based on it's status, adding a visual indicator of OSMs or regular mods are held down. |
| 25 | |||
| 26 | The make commend ensures that the correct settings are retained. | ||
diff --git a/keyboards/orthodox/keymaps/drashna/config.h b/keyboards/orthodox/keymaps/drashna/config.h index f8a850394..1c3620616 100644 --- a/keyboards/orthodox/keymaps/drashna/config.h +++ b/keyboards/orthodox/keymaps/drashna/config.h | |||
| @@ -59,8 +59,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
| 59 | 59 | ||
| 60 | #ifdef AUDIO_ENABLE | 60 | #ifdef AUDIO_ENABLE |
| 61 | #define C6_AUDIO | 61 | #define C6_AUDIO |
| 62 | #ifdef RGBLIGHT_ENABLE | ||
| 62 | #define NO_MUSIC_MODE | 63 | #define NO_MUSIC_MODE |
| 63 | #endif | 64 | #endif //RGBLIGHT_ENABLE |
| 65 | #endif //AUDIO_ENABLE | ||
| 64 | 66 | ||
| 65 | #undef PRODUCT | 67 | #undef PRODUCT |
| 66 | #ifdef KEYBOARD_orthodox_rev1 | 68 | #ifdef KEYBOARD_orthodox_rev1 |
| @@ -69,4 +71,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
| 69 | #define PRODUCT Drashna Hacked Orthodox Rev.3 | 71 | #define PRODUCT Drashna Hacked Orthodox Rev.3 |
| 70 | #endif | 72 | #endif |
| 71 | 73 | ||
| 74 | #define QMK_ESC_OUTPUT D7 // usually COL | ||
| 75 | #define QMK_ESC_INPUT D4 // usually ROW | ||
| 76 | #define QMK_LED B0 | ||
| 77 | #define QMK_SPEAKER C6 | ||
| 78 | |||
| 72 | #endif | 79 | #endif |
diff --git a/keyboards/orthodox/keymaps/drashna/keymap.c b/keyboards/orthodox/keymaps/drashna/keymap.c index ed5f32b98..fd10faa5e 100644 --- a/keyboards/orthodox/keymaps/drashna/keymap.c +++ b/keyboards/orthodox/keymaps/drashna/keymap.c | |||
| @@ -32,7 +32,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
| 32 | #define _______ KC_TRNS | 32 | #define _______ KC_TRNS |
| 33 | #define XXXXXXX KC_NO | 33 | #define XXXXXXX KC_NO |
| 34 | 34 | ||
| 35 | #define MG_NKRO MAGIC_TOGGLE_NKRO | ||
| 36 | 35 | ||
| 37 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | 36 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |
| 38 | 37 | ||
| @@ -67,21 +66,85 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 67 | [_LOWER] = LAYOUT(\ | 66 | [_LOWER] = LAYOUT(\ |
| 68 | KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, | 67 | KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, |
| 69 | KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_PGUP, KC_PGDN, KC_HOME, KC_END, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, | 68 | KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_PGUP, KC_PGDN, KC_HOME, KC_END, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, |
| 70 | KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, _______, KC_COMM, KC_DOT, _______, _______ | 69 | KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, _______, KC_COMM, KC_DOT, _______, _______ |
| 71 | ), | 70 | ), |
| 72 | 71 | ||
| 73 | [_RAISE] = LAYOUT(\ | 72 | [_RAISE] = LAYOUT(\ |
| 74 | KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, | 73 | KC_GRV, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_BSPC, |
| 75 | _______, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, KC_HOME, KC_END, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, | 74 | _______, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, KC_HOME, KC_END, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, |
| 76 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_COMM, KC_DOT, _______, _______ | 75 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_COMM, KC_DOT, _______, _______ |
| 77 | ), | 76 | ), |
| 78 | 77 | ||
| 79 | [_ADJUST] = LAYOUT(\ | 78 | [_ADJUST] = LAYOUT(\ |
| 80 | KC_MAKE,KC_RESET, EPRM, _______, _______, _______, _______, _______, _______, _______, _______, _______, | 79 | KC_MAKE,KC_RESET, EPRM, _______, _______, _______, _______, _______, _______, _______, _______, _______, |
| 81 | RGB_SMOD,RGB_HUI, CK_TOGG, AUD_ON, AUD_OFF, AG_NORM, _______, _______, _______, _______, AG_SWAP, KC_QWERTY, KC_COLEMAK, KC_DVORAK, KC_WORKMAN, TG(_MODS), | 80 | RGB_SMOD,RGB_HUI, CK_TOGG, AU_ON, AU_OFF, AG_NORM, _______, _______, _______, _______, AG_SWAP, KC_QWERTY, KC_COLEMAK, KC_DVORAK, KC_WORKMAN, TG(_MODS), |
| 82 | KC_RGB_T,RGB_HUD, MU_ON, MU_OFF, MU_TOG, MU_MOD, _______, _______, _______, _______, _______, _______, MG_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY | 81 | KC_RGB_T,RGB_HUD, MU_ON, MU_OFF, MU_TOG, MU_MOD, _______, _______, _______, _______, _______, _______, MG_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY |
| 83 | ) | 82 | ) |
| 84 | 83 | ||
| 85 | 84 | ||
| 86 | }; | 85 | }; |
| 87 | 86 | ||
| 87 | #ifdef RGBLIGHT_ENABLE | ||
| 88 | uint32_t layer_state_set_keymap (uint32_t state) { | ||
| 89 | uint8_t modifiders = get_mods(); | ||
| 90 | uint8_t led_usb_state = host_keyboard_leds(); | ||
| 91 | uint8_t one_shot = get_oneshot_mods(); | ||
| 92 | |||
| 93 | |||
| 94 | if (modifiders & MODS_SHIFT_MASK || led_usb_state & (1<<USB_LED_CAPS_LOCK) || one_shot & MODS_SHIFT_MASK) { | ||
| 95 | rgblight_sethsv_at(0, 255, 255, 5); | ||
| 96 | rgblight_sethsv_at(0, 255, 255, 10); | ||
| 97 | } | ||
| 98 | if (modifiders & MODS_CTRL_MASK || one_shot & MODS_CTRL_MASK) { | ||
| 99 | rgblight_sethsv_at(51, 255, 255, 6); | ||
| 100 | rgblight_sethsv_at(51, 255, 255, 9); | ||
| 101 | } | ||
| 102 | if (modifiders & MODS_ALT_MASK || one_shot & MODS_ALT_MASK) { | ||
| 103 | rgblight_sethsv_at(120, 255, 255, 7); | ||
| 104 | rgblight_sethsv_at(120, 255, 255, 8); | ||
| 105 | } | ||
| 106 | |||
| 107 | return state; | ||
| 108 | } | ||
| 109 | |||
| 110 | |||
| 111 | void matrix_scan_keymap (void) { | ||
| 112 | static uint8_t current_mods; | ||
| 113 | static uint8_t current_host_leds; | ||
| 114 | static uint8_t current_oneshot_mods; | ||
| 115 | static bool has_status_changed = true; | ||
| 116 | |||
| 117 | if ( current_mods != get_mods() || current_host_leds != host_keyboard_leds() || current_oneshot_mods != get_oneshot_mods()) { | ||
| 118 | has_status_changed = true; | ||
| 119 | current_mods = get_mods(); | ||
| 120 | current_host_leds = host_keyboard_leds(); | ||
| 121 | current_oneshot_mods = get_oneshot_mods(); | ||
| 122 | } | ||
| 123 | if (has_status_changed) { | ||
| 124 | has_status_changed = false; | ||
| 125 | |||
| 126 | if (current_mods & MODS_SHIFT_MASK || current_host_leds & (1<<USB_LED_CAPS_LOCK) || current_oneshot_mods & MODS_SHIFT_MASK) { | ||
| 127 | rgblight_sethsv_at(0, 255, 255, 5); | ||
| 128 | rgblight_sethsv_at(0, 255, 255, 10); | ||
| 129 | } else { | ||
| 130 | rgblight_sethsv_default_helper(5); | ||
| 131 | rgblight_sethsv_default_helper(10); | ||
| 132 | } | ||
| 133 | if (current_mods & MODS_CTRL_MASK || current_oneshot_mods & MODS_CTRL_MASK) { | ||
| 134 | rgblight_sethsv_at(51, 255, 255, 6); | ||
| 135 | rgblight_sethsv_at(51, 255, 255, 9); | ||
| 136 | } else { | ||
| 137 | rgblight_sethsv_default_helper(6); | ||
| 138 | rgblight_sethsv_default_helper(9); | ||
| 139 | } | ||
| 140 | if (current_mods & MODS_GUI_MASK || current_oneshot_mods & MODS_GUI_MASK) { | ||
| 141 | rgblight_sethsv_at(120, 255, 255, 7); | ||
| 142 | rgblight_sethsv_at(120, 255, 255, 8); | ||
| 143 | } else { | ||
| 144 | rgblight_sethsv_default_helper(7); | ||
| 145 | rgblight_sethsv_default_helper(8); | ||
| 146 | |||
| 147 | } | ||
| 148 | } | ||
| 149 | } | ||
| 150 | #endif | ||
diff --git a/keyboards/viterbi/keymaps/drashna/keymap.c b/keyboards/viterbi/keymaps/drashna/keymap.c index 78c60d1a6..09e8bc599 100644 --- a/keyboards/viterbi/keymaps/drashna/keymap.c +++ b/keyboards/viterbi/keymaps/drashna/keymap.c | |||
| @@ -67,7 +67,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 67 | ), | 67 | ), |
| 68 | 68 | ||
| 69 | [_MEDIA] = LAYOUT_ortho_5x7( | 69 | [_MEDIA] = LAYOUT_ortho_5x7( |
| 70 | KC_MAKE, KC_RESET,MU_TOG, AUD_ON, AUD_OFF, CK_TOGG, RGB_SAD, | 70 | KC_MAKE, KC_RESET,MU_TOG, AU_ON, AU_OFF, CK_TOGG, RGB_SAD, |
| 71 | MEDIA, EPRM, KC_RGB_T,RGB_M_P, RGB_M_B, RGB_M_R, RGB_SAI, | 71 | MEDIA, EPRM, KC_RGB_T,RGB_M_P, RGB_M_B, RGB_M_R, RGB_SAI, |
| 72 | RGB_TOG, RGB_MOD, RGB_RMOD,RGB_M_SW,RGB_M_SN,RGB_M_K, RGB_HUD, | 72 | RGB_TOG, RGB_MOD, RGB_RMOD,RGB_M_SW,RGB_M_SN,RGB_M_K, RGB_HUD, |
| 73 | KC_MPLY, KC_MPRV, KC_MNXT, RGB_M_X, RGB_M_G, RGB_M_P, RGB_HUI, | 73 | KC_MPLY, KC_MPRV, KC_MNXT, RGB_M_X, RGB_M_G, RGB_M_P, RGB_HUI, |
diff --git a/keyboards/viterbi/keymaps/drashna/rules.mk b/keyboards/viterbi/keymaps/drashna/rules.mk index 4dc6bbdac..4b5596a53 100644 --- a/keyboards/viterbi/keymaps/drashna/rules.mk +++ b/keyboards/viterbi/keymaps/drashna/rules.mk | |||
| @@ -8,5 +8,12 @@ RGBLIGHT_ENABLE = yes | |||
| 8 | AUDIO_ENABLE = yes | 8 | AUDIO_ENABLE = yes |
| 9 | NKRO_ENABLE = yes | 9 | NKRO_ENABLE = yes |
| 10 | 10 | ||
| 11 | CUSTOM_MATRIX = no | 11 | CUSTOM_LAYOUT = no |
| 12 | LAYOUTS = ortho_5x7 | 12 | LAYOUTS = ortho_5x7 |
| 13 | |||
| 14 | # SRC := $(filter-out serial.c matrix.c i2c.c split_util.c,$(SRC)) | ||
| 15 | # SRC := $(filter-out serial.c,$(SRC)) | ||
| 16 | # SRC := $(filter-out matrix.c,$(SRC)) | ||
| 17 | # SRC := $(filter-out i2c.c,$(SRC)) | ||
| 18 | # SRC := $(filter-out split_util.c,$(SRC)) | ||
| 19 | # SRC += quantum/matrix.c | ||
diff --git a/layouts/community/ergodox/drashna/keymap.c b/layouts/community/ergodox/drashna/keymap.c index 7ff103ed6..03fa67a7d 100644 --- a/layouts/community/ergodox/drashna/keymap.c +++ b/layouts/community/ergodox/drashna/keymap.c | |||
| @@ -17,18 +17,21 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
| 17 | #include QMK_KEYBOARD_H | 17 | #include QMK_KEYBOARD_H |
| 18 | #include "drashna.h" | 18 | #include "drashna.h" |
| 19 | 19 | ||
| 20 | #ifdef UNICODEMAP_ENABLE | ||
| 21 | #include "drashna_unicode.h" | ||
| 22 | #endif // UNICODEMAP_ENABLE | ||
| 23 | |||
| 20 | 24 | ||
| 21 | 25 | ||
| 22 | //enum more_custom_keycodes { | 26 | //enum more_custom_keycodes { |
| 23 | // KC_P00 = NEW_SAFE_RANGE | 27 | // KC_P00 = NEW_SAFE_RANGE |
| 24 | //}; | 28 | //}; |
| 25 | 29 | ||
| 26 | |||
| 27 | //define layer change stuff for underglow indicator | 30 | //define layer change stuff for underglow indicator |
| 28 | bool skip_leds = false; | 31 | bool skip_leds = false; |
| 29 | 32 | ||
| 30 | 33 | ||
| 31 | #ifdef KEYBOARD_ergodox_ez | 34 | |
| 32 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | 35 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |
| 33 | /* Keymap 0: QWERTY Layer | 36 | /* Keymap 0: QWERTY Layer |
| 34 | * | 37 | * |
| @@ -54,9 +57,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 54 | */ | 57 | */ |
| 55 | [_QWERTY] = LAYOUT_ergodox_pretty_wrapper( | 58 | [_QWERTY] = LAYOUT_ergodox_pretty_wrapper( |
| 56 | // left hand // right hand | 59 | // left hand // right hand |
| 57 | KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, OSL(_MOUS), OSL(_MOUS), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, | 60 | KC_EQL, ________________NUMBER_LEFT________________, OSL(_MOUS), OSL(_MOUS), ________________NUMBER_RIGHT_______________, KC_MINS, |
| 58 | KC_TAB, _________________QWERTY_L1_________________, TG(_DIABLO), TG(_DIABLO), _________________QWERTY_R1_________________, KC_BSLS, | 61 | KC_TAB, _________________QWERTY_L1_________________, TG(_DIABLO), TG(_DIABLO), _________________QWERTY_R1_________________, KC_BSLS, |
| 59 | SH_TT, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_QUOT, | 62 | KC_C1R3, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_QUOT, |
| 60 | KC_MLSF, _________________QWERTY_L3_________________, TG(_GAMEPAD), TG(_GAMEPAD), _________________QWERTY_R3_________________, KC_MRSF, | 63 | KC_MLSF, _________________QWERTY_L3_________________, TG(_GAMEPAD), TG(_GAMEPAD), _________________QWERTY_R3_________________, KC_MRSF, |
| 61 | LT(_SYMB,KC_GRV), ___________ERGODOX_BOTTOM_LEFT_____________, ___________ERGODOX_BOTTOM_RIGHT____________, TT(_SYMB), | 64 | LT(_SYMB,KC_GRV), ___________ERGODOX_BOTTOM_LEFT_____________, ___________ERGODOX_BOTTOM_RIGHT____________, TT(_SYMB), |
| 62 | __________________ERGODOX_THUMB_CLUSTER_____________________ | 65 | __________________ERGODOX_THUMB_CLUSTER_____________________ |
| @@ -88,7 +91,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 88 | // left hand // right hand | 91 | // left hand // right hand |
| 89 | KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, OSL(_MOUS), OSL(_MOUS), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, | 92 | KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, OSL(_MOUS), OSL(_MOUS), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, |
| 90 | KC_TAB, _________________COLEMAK_L1________________, TG(_DIABLO), TG(_DIABLO), _________________COLEMAK_R1________________, KC_BSLS, | 93 | KC_TAB, _________________COLEMAK_L1________________, TG(_DIABLO), TG(_DIABLO), _________________COLEMAK_R1________________, KC_BSLS, |
| 91 | SH_TT, _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, KC_QUOT, | 94 | KC_C1R3, _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, KC_QUOT, |
| 92 | KC_MLSF, _________________COLEMAK_L3________________, TG(_GAMEPAD), TG(_GAMEPAD), _________________COLEMAK_R3________________, KC_MRSF, | 95 | KC_MLSF, _________________COLEMAK_L3________________, TG(_GAMEPAD), TG(_GAMEPAD), _________________COLEMAK_R3________________, KC_MRSF, |
| 93 | LT(_SYMB,KC_GRV), ___________ERGODOX_BOTTOM_LEFT_____________, ___________ERGODOX_BOTTOM_RIGHT____________, TT(_SYMB), | 96 | LT(_SYMB,KC_GRV), ___________ERGODOX_BOTTOM_LEFT_____________, ___________ERGODOX_BOTTOM_RIGHT____________, TT(_SYMB), |
| 94 | __________________ERGODOX_THUMB_CLUSTER_____________________ | 97 | __________________ERGODOX_THUMB_CLUSTER_____________________ |
| @@ -120,7 +123,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 120 | // left hand // right hand | 123 | // left hand // right hand |
| 121 | KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, OSL(_MOUS), OSL(_MOUS), KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, | 124 | KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, OSL(_MOUS), OSL(_MOUS), KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, |
| 122 | KC_TAB, _________________DVORAK_L1_________________, TG(_DIABLO), TG(_DIABLO), _________________DVORAK_R1_________________, KC_SLSH, | 125 | KC_TAB, _________________DVORAK_L1_________________, TG(_DIABLO), TG(_DIABLO), _________________DVORAK_R1_________________, KC_SLSH, |
| 123 | SH_TT, _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, KC_MINS, | 126 | KC_C1R3, _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, KC_MINS, |
| 124 | KC_MLSF, _________________DVORAK_L3_________________, TG(_GAMEPAD), TG(_GAMEPAD), _________________DVORAK_R3_________________, KC_MRSF, | 127 | KC_MLSF, _________________DVORAK_L3_________________, TG(_GAMEPAD), TG(_GAMEPAD), _________________DVORAK_R3_________________, KC_MRSF, |
| 125 | LT(_SYMB,KC_GRV), ___________ERGODOX_BOTTOM_LEFT_____________, ___________ERGODOX_BOTTOM_RIGHT____________, TT(_SYMB), | 128 | LT(_SYMB,KC_GRV), ___________ERGODOX_BOTTOM_LEFT_____________, ___________ERGODOX_BOTTOM_RIGHT____________, TT(_SYMB), |
| 126 | __________________ERGODOX_THUMB_CLUSTER_____________________ | 129 | __________________ERGODOX_THUMB_CLUSTER_____________________ |
| @@ -152,7 +155,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 152 | // left hand | 155 | // left hand |
| 153 | KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, OSL(_MOUS), OSL(_MOUS), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, | 156 | KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, OSL(_MOUS), OSL(_MOUS), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, |
| 154 | KC_TAB, _________________WORKMAN_L1________________, TG(_DIABLO), TG(_DIABLO), _________________WORKMAN_R1________________, KC_BSLS, | 157 | KC_TAB, _________________WORKMAN_L1________________, TG(_DIABLO), TG(_DIABLO), _________________WORKMAN_R1________________, KC_BSLS, |
| 155 | SH_TT, _________________WORKMAN_L2________________, _________________WORKMAN_R2________________, KC_QUOT, | 158 | KC_C1R3, _________________WORKMAN_L2________________, _________________WORKMAN_R2________________, KC_QUOT, |
| 156 | KC_MLSF, _________________WORKMAN_L3________________, TG(_GAMEPAD), TG(_GAMEPAD), _________________WORKMAN_R3________________, KC_MRSF, | 159 | KC_MLSF, _________________WORKMAN_L3________________, TG(_GAMEPAD), TG(_GAMEPAD), _________________WORKMAN_R3________________, KC_MRSF, |
| 157 | LT(_SYMB,KC_GRV), ___________ERGODOX_BOTTOM_LEFT_____________, ___________ERGODOX_BOTTOM_RIGHT____________, TT(_SYMB), | 160 | LT(_SYMB,KC_GRV), ___________ERGODOX_BOTTOM_LEFT_____________, ___________ERGODOX_BOTTOM_RIGHT____________, TT(_SYMB), |
| 158 | __________________ERGODOX_THUMB_CLUSTER_____________________ | 161 | __________________ERGODOX_THUMB_CLUSTER_____________________ |
| @@ -299,19 +302,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 299 | ), | 302 | ), |
| 300 | 303 | ||
| 301 | }; | 304 | }; |
| 302 | #else // KEYBOARD_ergodox_ez | ||
| 303 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
| 304 | [_QWERTY] = LAYOUT_ergodox_wrapper(KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, OSL(_MOUS), KC_TAB, _________________QWERTY_L1_________________, TG(_DIABLO), KC_BSPC, _________________QWERTY_L2_________________, KC_MLSF, _________________QWERTY_L3_________________, TG(_GAMEPAD), LT(_SYMB, KC_GRV), ___________ERGODOX_BOTTOM_LEFT_____________, ALT_T(KC_APP), KC_LGUI, KC_HOME, KC_SPACE, KC_BSPC, KC_END, OSL(_MOUS), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, TG(_DIABLO), _________________QWERTY_R1_________________, KC_BSLS, _________________QWERTY_R2_________________, GUI_T(KC_QUOT), TG(_GAMEPAD), _________________QWERTY_R3_________________, KC_MRSF, ___________ERGODOX_BOTTOM_RIGHT____________, TT(_SYMB), KC_RGUI, CTL_T(KC_ESCAPE), KC_PGUP, KC_PGDOWN, KC_DELETE, KC_ENTER), | ||
| 305 | [_COLEMAK] = LAYOUT_ergodox_wrapper(KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, OSL(_MOUS), KC_TAB, _________________COLEMAK_L1________________, TG(_DIABLO), KC_BSPC, _________________COLEMAK_L2________________, KC_MLSF, _________________COLEMAK_L3________________, TG(_GAMEPAD), LT(_SYMB, KC_GRV), ___________ERGODOX_BOTTOM_LEFT_____________, ALT_T(KC_APP), KC_LGUI, KC_HOME, KC_SPACE, KC_BSPC, KC_END, OSL(_MOUS), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, TG(_DIABLO), _________________COLEMAK_R1________________, KC_BSLS, _________________COLEMAK_R2________________, GUI_T(KC_QUOT), TG(_GAMEPAD), _________________COLEMAK_R3________________, KC_MRSF, ___________ERGODOX_BOTTOM_RIGHT____________, TT(_SYMB), KC_RGUI, CTL_T(KC_ESCAPE), KC_PGUP, KC_PGDOWN, KC_DELETE, KC_ENTER), | ||
| 306 | [_DVORAK] = LAYOUT_ergodox_wrapper(KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, OSL(_MOUS), KC_TAB, _________________DVORAK_L1_________________, TG(_DIABLO), KC_BSPC, _________________DVORAK_L2_________________, KC_MLSF, _________________DVORAK_L3_________________, TG(_GAMEPAD), LT(_SYMB, KC_GRV), ___________ERGODOX_BOTTOM_LEFT_____________, ALT_T(KC_APP), KC_LGUI, KC_HOME, KC_SPACE, KC_BSPC, KC_END, OSL(_MOUS), KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, TG(_DIABLO), _________________DVORAK_R1_________________, KC_SLSH, _________________DVORAK_R2_________________, GUI_T(KC_MINS), TG(_GAMEPAD), _________________DVORAK_R3_________________, KC_MRSF, ___________ERGODOX_BOTTOM_RIGHT____________, TT(_SYMB), KC_RGUI, CTL_T(KC_ESCAPE), KC_PGUP, KC_PGDOWN, KC_DELETE, KC_ENTER), | ||
| 307 | [_WORKMAN] = LAYOUT_ergodox_wrapper(KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, OSL(_MOUS), KC_TAB, _________________WORKMAN_L1________________, TG(_DIABLO), KC_BSPC, _________________WORKMAN_L2________________, KC_MLSF, _________________WORKMAN_L3________________, TG(_GAMEPAD), LT(_SYMB, KC_GRV), ___________ERGODOX_BOTTOM_LEFT_____________, ALT_T(KC_APP), KC_LGUI, KC_HOME, KC_SPACE, KC_BSPC, KC_END, OSL(_MOUS), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, TG(_DIABLO), _________________WORKMAN_R1________________, KC_BSLS, _________________WORKMAN_R2________________, GUI_T(KC_QUOT), TG(_GAMEPAD), _________________WORKMAN_R3________________, KC_MRSF, ___________ERGODOX_BOTTOM_RIGHT____________, TT(_SYMB), KC_RGUI, CTL_T(KC_ESCAPE), KC_PGUP, KC_PGDOWN, KC_DELETE, KC_ENTER), | ||
| 308 | [_MODS] = LAYOUT_ergodox(KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), | ||
| 309 | [_SYMB] = LAYOUT_ergodox(EPRM, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, TG(_MODS), KC_RESET, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_WORKMAN, KC_MAKE, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRAVE, VRSN, KC_PERC, KC_CIRC, KC_LBRACKET, KC_RBRACKET, KC_TILD, KC_COLEMAK, KC_TRNS, KC_AMPR, KC_ASTR, KC_COLN, KC_SCOLON, RGB_SMOD, KC_RGB_T, RGB_HUI, RGB_M_R, RGB_M_SW, RGB_HUD, KC_QWERTY, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_DVORAK, KC_KP_PLUS, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_ASTERISK, KC_F12, 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_DOT, KC_KP_0, KC_KP_ENTER), | ||
| 310 | [_GAMEPAD] = LAYOUT_ergodox(KC_ESC, KC_TRNS, KC_TRNS, KC_TRNS, HYPR(KC_D), HYPR(KC_Q), HYPR(KC_GRV), KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_F1, KC_K, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, KC_I, KC_O, KC_NO, KC_NO, KC_NO, KC_NO, KC_LCTL, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_TRNS, TG(_GAMEPAD), KC_N, KC_M, KC_NO, KC_NO, KC_NO, KC_NO, KC_GRV, KC_U, KC_I, KC_Y, KC_T, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, KC_O, KC_P, KC_HYPR, MAGIC_TOGGLE_NKRO, KC_LGUI, KC_NO, KC_V, KC_SPC, KC_H, KC_PGDN, KC_DEL, KC_ENTER), | ||
| 311 | [_DIABLO] = LAYOUT_ergodox(KC_ESC, KC_V, KC_D, KC_LALT, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_TAB, KC_S, KC_I, KC_F, KC_M, KC_T, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_Q, KC_1, KC_2, KC_3, KC_4, KC_G, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_LCTL, KC_D3_1, KC_D3_2, KC_D3_3, KC_D3_4, KC_Z, KC_NO, KC_NO, 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, KC_NO, KC_NO, KC_L, KC_J, KC_NO, KC_NO, KC_F, KC_NO, SFT_T(KC_SPACE), ALT_T(KC_Q), KC_DIABLO_CLEAR, KC_PGDN, KC_DEL, KC_ENT), | ||
| 312 | [_MOUS] = LAYOUT_ergodox(KC_NO, KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MS_U, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_NO, KC_NO, KC_ACL0, KC_ACL1, KC_ACL2, KC_NO, KC_NO, KC_NO, KC_ACL0, KC_ACL1, KC_ACL2, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, 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, KC_NO, KC_WH_U, KC_NO, KC_BTN1, KC_BTN2, KC_WH_D, KC_BTN3, KC_BTN4, KC_BTN5), | ||
| 313 | }; | ||
| 314 | #endif // KEYBOARD_ergodox_ez | ||
| 315 | 305 | ||
| 316 | bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { | 306 | bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { |
| 317 | 307 | ||
diff --git a/layouts/community/ergodox/drashna/rules.mk b/layouts/community/ergodox/drashna/rules.mk index 536d5308a..e5bf2d4b3 100644 --- a/layouts/community/ergodox/drashna/rules.mk +++ b/layouts/community/ergodox/drashna/rules.mk | |||
| @@ -7,3 +7,5 @@ endif | |||
| 7 | CONSOLE_ENABLE = no | 7 | CONSOLE_ENABLE = no |
| 8 | BOOTMAGIC_ENABLE = yes | 8 | BOOTMAGIC_ENABLE = yes |
| 9 | 9 | ||
| 10 | UNICODE_ENABLE = no | ||
| 11 | UNICDOEMAP_ENABLE = yes | ||
diff --git a/quantum/process_keycode/process_clicky.c b/quantum/process_keycode/process_clicky.c index f445751e0..1e950d111 100644 --- a/quantum/process_keycode/process_clicky.c +++ b/quantum/process_keycode/process_clicky.c | |||
| @@ -62,7 +62,6 @@ bool process_clicky(uint16_t keycode, keyrecord_t *record) { | |||
| 62 | 62 | ||
| 63 | if ( clicky_enable ) { | 63 | if ( clicky_enable ) { |
| 64 | if (record->event.pressed) { | 64 | if (record->event.pressed) { |
| 65 | stop_all_notes(); | ||
| 66 | clicky_play();; | 65 | clicky_play();; |
| 67 | } | 66 | } |
| 68 | } | 67 | } |
diff --git a/users/drashna/config.h b/users/drashna/config.h index e48f72355..0a59ad026 100644 --- a/users/drashna/config.h +++ b/users/drashna/config.h | |||
| @@ -58,10 +58,16 @@ | |||
| 58 | 58 | ||
| 59 | // Disable action_get_macro and fn_actions, since we don't use these | 59 | // Disable action_get_macro and fn_actions, since we don't use these |
| 60 | // and it saves on space in the firmware. | 60 | // and it saves on space in the firmware. |
| 61 | #ifndef NO_DEBUG | ||
| 62 | #define NO_DEBUG | ||
| 63 | #endif // !NO_DEBUG | ||
| 64 | #ifndef NO_PRINT | ||
| 65 | #define NO_PRINT | ||
| 66 | #endif // !NO_PRINT | ||
| 61 | #define NO_ACTION_MACRO | 67 | #define NO_ACTION_MACRO |
| 62 | #define NO_ACTION_FUNCTION | 68 | #define NO_ACTION_FUNCTION |
| 63 | 69 | ||
| 64 | 70 | #define DISABLE_LEADER | |
| 65 | 71 | ||
| 66 | #endif // !USERSPACE_CONFIG_H | 72 | #endif // !USERSPACE_CONFIG_H |
| 67 | 73 | ||
diff --git a/users/drashna/drashna.c b/users/drashna/drashna.c index d9d412b08..86c16b826 100644 --- a/users/drashna/drashna.c +++ b/users/drashna/drashna.c | |||
| @@ -33,35 +33,52 @@ PROGMEM const char secret[][64] = { | |||
| 33 | #endif | 33 | #endif |
| 34 | 34 | ||
| 35 | 35 | ||
| 36 | #ifdef FAUXCLICKY_ENABLE | ||
| 37 | float fauxclicky_pressed_note[2] = MUSICAL_NOTE(_A6, 2); // (_D4, 0.25); | ||
| 38 | float fauxclicky_released_note[2] = MUSICAL_NOTE(_A6, 2); // (_C4, 0.125); | ||
| 39 | #else // FAUXCLICKY_ENABLE | ||
| 40 | float fauxclicky_pressed[][2] = SONG(S__NOTE(_A6)); // change to your tastes | ||
| 41 | float fauxclicky_released[][2] = SONG(S__NOTE(_A6)); // change to your tastes | ||
| 42 | #endif // FAUXCLICKY_ENABLE | ||
| 43 | |||
| 44 | float tone_copy[][2] = SONG(SCROLL_LOCK_ON_SOUND); | 36 | float tone_copy[][2] = SONG(SCROLL_LOCK_ON_SOUND); |
| 45 | float tone_paste[][2] = SONG(SCROLL_LOCK_OFF_SOUND); | 37 | float tone_paste[][2] = SONG(SCROLL_LOCK_OFF_SOUND); |
| 46 | 38 | ||
| 47 | 39 | ||
| 48 | bool faux_click_enabled = false; | ||
| 49 | bool is_overwatch = false; | ||
| 50 | static uint16_t copy_paste_timer; | 40 | static uint16_t copy_paste_timer; |
| 51 | #ifdef RGBLIGHT_ENABLE | 41 | #ifdef RGBLIGHT_ENABLE |
| 52 | bool rgb_layer_change = true; | 42 | bool rgb_layer_change = true; |
| 53 | #endif | 43 | #endif |
| 54 | 44 | ||
| 45 | userspace_config_t userspace_config; | ||
| 46 | |||
| 47 | // Helper Functions | ||
| 48 | void tap(uint16_t keycode){ register_code(keycode); unregister_code(keycode); }; | ||
| 49 | |||
| 50 | #ifdef RGBLIGHT_ENABLE | ||
| 51 | void rgblight_sethsv_default_helper(uint8_t index) { | ||
| 52 | uint8_t default_layer = eeconfig_read_default_layer(); | ||
| 53 | if (default_layer & (1UL << _COLEMAK)) { | ||
| 54 | rgblight_sethsv_at(300, 255, 255, index); | ||
| 55 | rgblight_sethsv_at(300, 255, 255, index); | ||
| 56 | } | ||
| 57 | else if (default_layer & (1UL << _DVORAK)) { | ||
| 58 | rgblight_sethsv_at(120, 255, 255, index); | ||
| 59 | rgblight_sethsv_at(120, 255, 255, index); | ||
| 60 | } | ||
| 61 | else if (default_layer & (1UL << _WORKMAN)) { | ||
| 62 | rgblight_sethsv_at(43, 255, 255, index); | ||
| 63 | rgblight_sethsv_at(43, 255, 255, index); | ||
| 64 | } | ||
| 65 | else { | ||
| 66 | rgblight_sethsv_at(180, 255, 255, index); | ||
| 67 | rgblight_sethsv_at(180, 255, 255, index); | ||
| 68 | } | ||
| 69 | } | ||
| 70 | #endif // RGBLIGHT_ENABLE | ||
| 71 | |||
| 72 | |||
| 73 | // ========================================= TAP DANCE ========================================= | ||
| 55 | #ifdef TAP_DANCE_ENABLE | 74 | #ifdef TAP_DANCE_ENABLE |
| 56 | //define diablo macro timer variables | 75 | //define diablo macro timer variables |
| 57 | static uint16_t diablo_timer[4]; | 76 | static uint16_t diablo_timer[4]; |
| 58 | static uint8_t diablo_times[] = { 0, 1, 3, 5, 10, 30 }; | 77 | static uint8_t diablo_times[] = { 0, 1, 3, 5, 10, 30 }; |
| 59 | static uint8_t diablo_key_time[4]; | 78 | static uint8_t diablo_key_time[4]; |
| 60 | 79 | ||
| 61 | bool check_dtimer(uint8_t dtimer) { | 80 | // has the correct number of seconds elapsed (as defined by diablo_times) |
| 62 | // has the correct number of seconds elapsed (as defined by diablo_times) | 81 | bool check_dtimer(uint8_t dtimer) { return (timer_elapsed(diablo_timer[dtimer]) < (diablo_key_time[dtimer] * 1000)) ? false : true; }; |
| 63 | return (timer_elapsed(diablo_timer[dtimer]) < (diablo_key_time[dtimer] * 1000)) ? false : true; | ||
| 64 | }; | ||
| 65 | 82 | ||
| 66 | // Cycle through the times for the macro, starting at 0, for disabled. | 83 | // Cycle through the times for the macro, starting at 0, for disabled. |
| 67 | // Max of six values, so don't exceed | 84 | // Max of six values, so don't exceed |
| @@ -69,25 +86,16 @@ void diablo_tapdance_master(qk_tap_dance_state_t *state, void *user_data, uint8_ | |||
| 69 | if (state->count >= 7) { | 86 | if (state->count >= 7) { |
| 70 | diablo_key_time[diablo_key] = diablo_times[0]; | 87 | diablo_key_time[diablo_key] = diablo_times[0]; |
| 71 | reset_tap_dance(state); | 88 | reset_tap_dance(state); |
| 72 | } | 89 | } else { |
| 73 | else { | ||
| 74 | diablo_key_time[diablo_key] = diablo_times[state->count - 1]; | 90 | diablo_key_time[diablo_key] = diablo_times[state->count - 1]; |
| 75 | } | 91 | } |
| 76 | } | 92 | } |
| 77 | 93 | ||
| 78 | // Would rather have one function for all of this, but no idea how to do that... | 94 | // Would rather have one function for all of this, but no idea how to do that... |
| 79 | void diablo_tapdance1(qk_tap_dance_state_t *state, void *user_data) { | 95 | void diablo_tapdance1(qk_tap_dance_state_t *state, void *user_data) { diablo_tapdance_master(state, user_data, 0); } |
| 80 | diablo_tapdance_master(state, user_data, 0); | 96 | void diablo_tapdance2(qk_tap_dance_state_t *state, void *user_data) { diablo_tapdance_master(state, user_data, 1); } |
| 81 | } | 97 | void diablo_tapdance3(qk_tap_dance_state_t *state, void *user_data) { diablo_tapdance_master(state, user_data, 2); } |
| 82 | void diablo_tapdance2(qk_tap_dance_state_t *state, void *user_data) { | 98 | void diablo_tapdance4(qk_tap_dance_state_t *state, void *user_data) { diablo_tapdance_master(state, user_data, 3); } |
| 83 | diablo_tapdance_master(state, user_data, 1); | ||
| 84 | } | ||
| 85 | void diablo_tapdance3(qk_tap_dance_state_t *state, void *user_data) { | ||
| 86 | diablo_tapdance_master(state, user_data, 2); | ||
| 87 | } | ||
| 88 | void diablo_tapdance4(qk_tap_dance_state_t *state, void *user_data) { | ||
| 89 | diablo_tapdance_master(state, user_data, 3); | ||
| 90 | } | ||
| 91 | 99 | ||
| 92 | //Tap Dance Definitions | 100 | //Tap Dance Definitions |
| 93 | qk_tap_dance_action_t tap_dance_actions[] = { | 101 | qk_tap_dance_action_t tap_dance_actions[] = { |
| @@ -96,7 +104,6 @@ qk_tap_dance_action_t tap_dance_actions[] = { | |||
| 96 | [TD_D3_2] = ACTION_TAP_DANCE_FN(diablo_tapdance2), | 104 | [TD_D3_2] = ACTION_TAP_DANCE_FN(diablo_tapdance2), |
| 97 | [TD_D3_3] = ACTION_TAP_DANCE_FN(diablo_tapdance3), | 105 | [TD_D3_3] = ACTION_TAP_DANCE_FN(diablo_tapdance3), |
| 98 | [TD_D3_4] = ACTION_TAP_DANCE_FN(diablo_tapdance4), | 106 | [TD_D3_4] = ACTION_TAP_DANCE_FN(diablo_tapdance4), |
| 99 | |||
| 100 | }; | 107 | }; |
| 101 | 108 | ||
| 102 | // Sends the key press to system, but only if on the Diablo layer | 109 | // Sends the key press to system, but only if on the Diablo layer |
| @@ -104,17 +111,13 @@ void send_diablo_keystroke(uint8_t diablo_key) { | |||
| 104 | if (biton32(layer_state) == _DIABLO) { | 111 | if (biton32(layer_state) == _DIABLO) { |
| 105 | switch (diablo_key) { | 112 | switch (diablo_key) { |
| 106 | case 0: | 113 | case 0: |
| 107 | SEND_STRING("1"); | 114 | tap(KC_1); break; |
| 108 | break; | ||
| 109 | case 1: | 115 | case 1: |
| 110 | SEND_STRING("2"); | 116 | tap(KC_2); break; |
| 111 | break; | ||
| 112 | case 2: | 117 | case 2: |
| 113 | SEND_STRING("3"); | 118 | tap(KC_3); break; |
| 114 | break; | ||
| 115 | case 3: | 119 | case 3: |
| 116 | SEND_STRING("4"); | 120 | tap(KC_4); break; |
| 117 | break; | ||
| 118 | } | 121 | } |
| 119 | } | 122 | } |
| 120 | } | 123 | } |
| @@ -123,7 +126,6 @@ void send_diablo_keystroke(uint8_t diablo_key) { | |||
| 123 | // Runs the "send string" command if enough time has passed, and resets the timer. | 126 | // Runs the "send string" command if enough time has passed, and resets the timer. |
| 124 | void run_diablo_macro_check(void) { | 127 | void run_diablo_macro_check(void) { |
| 125 | uint8_t dtime; | 128 | uint8_t dtime; |
| 126 | |||
| 127 | for (dtime = 0; dtime < 4; dtime++) { | 129 | for (dtime = 0; dtime < 4; dtime++) { |
| 128 | if (check_dtimer(dtime) && diablo_key_time[dtime]) { | 130 | if (check_dtimer(dtime) && diablo_key_time[dtime]) { |
| 129 | diablo_timer[dtime] = timer_read(); | 131 | diablo_timer[dtime] = timer_read(); |
| @@ -131,7 +133,6 @@ void run_diablo_macro_check(void) { | |||
| 131 | } | 133 | } |
| 132 | } | 134 | } |
| 133 | } | 135 | } |
| 134 | |||
| 135 | #endif // TAP_DANCE_ENABLE | 136 | #endif // TAP_DANCE_ENABLE |
| 136 | 137 | ||
| 137 | 138 | ||
| @@ -162,31 +163,32 @@ void led_set_keymap(uint8_t usb_led) {} | |||
| 162 | // Call user matrix init, set default RGB colors and then | 163 | // Call user matrix init, set default RGB colors and then |
| 163 | // call the keymap's init function | 164 | // call the keymap's init function |
| 164 | void matrix_init_user(void) { | 165 | void matrix_init_user(void) { |
| 165 | #ifdef RGBLIGHT_ENABLE | ||
| 166 | uint8_t default_layer = eeconfig_read_default_layer(); | 166 | uint8_t default_layer = eeconfig_read_default_layer(); |
| 167 | 167 | ||
| 168 | #ifdef RGBLIGHT_ENABLE | ||
| 168 | rgblight_enable(); | 169 | rgblight_enable(); |
| 170 | #endif // RGBLIGHT_ENABLE | ||
| 169 | 171 | ||
| 170 | if (true) { | 172 | if (default_layer & (1UL << _COLEMAK)) { |
| 171 | if (default_layer & (1UL << _COLEMAK)) { | 173 | #ifdef RGBLIGHT_ENABLE |
| 172 | rgblight_sethsv_magenta(); | 174 | rgblight_sethsv_magenta(); |
| 173 | } | ||
| 174 | else if (default_layer & (1UL << _DVORAK)) { | ||
| 175 | rgblight_sethsv_green(); | ||
| 176 | } | ||
| 177 | else if (default_layer & (1UL << _WORKMAN)) { | ||
| 178 | rgblight_sethsv_goldenrod(); | ||
| 179 | } | ||
| 180 | else { | ||
| 181 | rgblight_sethsv_teal(); | ||
| 182 | } | ||
| 183 | } | ||
| 184 | else | ||
| 185 | { | ||
| 186 | rgblight_setrgb_red(); | ||
| 187 | rgblight_mode(5); | ||
| 188 | } | ||
| 189 | #endif // RGBLIGHT_ENABLE | 175 | #endif // RGBLIGHT_ENABLE |
| 176 | } else if (default_layer & (1UL << _DVORAK)) { | ||
| 177 | #ifdef RGBLIGHT_ENABLE | ||
| 178 | rgblight_sethsv_green(); | ||
| 179 | #endif // RGBLIGHT_ENABLE | ||
| 180 | } else if (default_layer & (1UL << _WORKMAN)) { | ||
| 181 | #ifdef RGBLIGHT_ENABLE | ||
| 182 | rgblight_sethsv_goldenrod(); | ||
| 183 | #endif // RGBLIGHT_ENABLE | ||
| 184 | } else { | ||
| 185 | #ifdef RGBLIGHT_ENABLE | ||
| 186 | rgblight_sethsv_teal(); | ||
| 187 | #endif // RGBLIGHT_ENABLE | ||
| 188 | } | ||
| 189 | |||
| 190 | userspace_config.raw = eeprom_read_byte(EECONFIG_USERSPACE); | ||
| 191 | clicky_enable = userspace_config.clicky_enable; | ||
| 190 | 192 | ||
| 191 | #if ( defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE) ) | 193 | #if ( defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE) ) |
| 192 | set_unicode_input_mode(UC_WINC); | 194 | set_unicode_input_mode(UC_WINC); |
| @@ -197,23 +199,21 @@ void matrix_init_user(void) { | |||
| 197 | // No global matrix scan code, so just run keymap's matrix | 199 | // No global matrix scan code, so just run keymap's matrix |
| 198 | // scan function | 200 | // scan function |
| 199 | void matrix_scan_user(void) { | 201 | void matrix_scan_user(void) { |
| 202 | |||
| 200 | #ifdef TAP_DANCE_ENABLE // Run Diablo 3 macro checking code. | 203 | #ifdef TAP_DANCE_ENABLE // Run Diablo 3 macro checking code. |
| 201 | run_diablo_macro_check(); | 204 | run_diablo_macro_check(); |
| 202 | #endif // TAP_DANCE_ENABLE | 205 | #endif // TAP_DANCE_ENABLE |
| 206 | |||
| 203 | matrix_scan_keymap(); | 207 | matrix_scan_keymap(); |
| 204 | } | 208 | } |
| 205 | 209 | ||
| 206 | void tap(uint16_t keycode){ | ||
| 207 | register_code(keycode); | ||
| 208 | unregister_code(keycode); | ||
| 209 | }; | ||
| 210 | 210 | ||
| 211 | // This block is for all of the gaming macros, as they were all doing | 211 | // This block is for all of the gaming macros, as they were all doing |
| 212 | // the same thing, but with differring text sent. | 212 | // the same thing, but with differring text sent. |
| 213 | bool send_game_macro(const char *str, keyrecord_t *record, bool override) { | 213 | bool send_game_macro(const char *str, keyrecord_t *record, bool override) { |
| 214 | if (!record->event.pressed || override) { | 214 | if (!record->event.pressed || override) { |
| 215 | clear_keyboard(); | 215 | clear_keyboard(); |
| 216 | tap(is_overwatch ? KC_BSPC : KC_ENTER); | 216 | tap(userspace_config.is_overwatch ? KC_BSPC : KC_ENTER); |
| 217 | wait_ms(50); | 217 | wait_ms(50); |
| 218 | send_string(str); | 218 | send_string(str); |
| 219 | wait_ms(50); | 219 | wait_ms(50); |
| @@ -261,39 +261,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
| 261 | break; | 261 | break; |
| 262 | 262 | ||
| 263 | 263 | ||
| 264 | case LOWER: | ||
| 265 | if (record->event.pressed) { | ||
| 266 | layer_on(_LOWER); | ||
| 267 | update_tri_layer(_LOWER, _RAISE, _ADJUST); | ||
| 268 | } | ||
| 269 | else { | ||
| 270 | layer_off(_LOWER); | ||
| 271 | update_tri_layer(_LOWER, _RAISE, _ADJUST); | ||
| 272 | } | ||
| 273 | return false; | ||
| 274 | break; | ||
| 275 | case RAISE: | ||
| 276 | if (record->event.pressed) { | ||
| 277 | layer_on(_RAISE); | ||
| 278 | update_tri_layer(_LOWER, _RAISE, _ADJUST); | ||
| 279 | } | ||
| 280 | else { | ||
| 281 | layer_off(_RAISE); | ||
| 282 | update_tri_layer(_LOWER, _RAISE, _ADJUST); | ||
| 283 | } | ||
| 284 | return false; | ||
| 285 | break; | ||
| 286 | case ADJUST: | ||
| 287 | if (record->event.pressed) { | ||
| 288 | layer_on(_ADJUST); | ||
| 289 | } | ||
| 290 | else { | ||
| 291 | layer_off(_ADJUST); | ||
| 292 | } | ||
| 293 | return false; | ||
| 294 | break; | ||
| 295 | |||
| 296 | |||
| 297 | case KC_MAKE: // Compiles the firmware, and adds the flash command based on keyboard bootloader | 264 | case KC_MAKE: // Compiles the firmware, and adds the flash command based on keyboard bootloader |
| 298 | if (!record->event.pressed) { | 265 | if (!record->event.pressed) { |
| 299 | SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP | 266 | SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP |
| @@ -349,11 +316,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
| 349 | // These are a serious of gaming macros. | 316 | // These are a serious of gaming macros. |
| 350 | // Only enables for the viterbi, basically, | 317 | // Only enables for the viterbi, basically, |
| 351 | // to save on firmware space, since it's limited. | 318 | // to save on firmware space, since it's limited. |
| 352 | #if !(defined(KEYBOARD_orthodox_rev1) || defined(KEYBOARD_orthodox_rev3) || defined(KEYBOARD_ergodox_ez)) | 319 | #if !(defined(KEYBOARD_orthodox_rev1) || defined(KEYBOARD_orthodox_rev3) || defined(KEYBOARD_ergodox_ez) || defined(KEYBOARD_iris_rev2)) |
| 353 | case KC_OVERWATCH: // Toggle's if we hit "ENTER" or "BACKSPACE" to input macros | 320 | case KC_OVERWATCH: // Toggle's if we hit "ENTER" or "BACKSPACE" to input macros |
| 354 | if (record->event.pressed) { is_overwatch = !is_overwatch; } | 321 | if (record->event.pressed) { userspace_config.is_overwatch ^= 1; eeprom_update_byte(EECONFIG_USERSPACE, userspace_config.raw); } |
| 355 | #ifdef RGBLIGHT_ENABLE | 322 | #ifdef RGBLIGHT_ENABLE |
| 356 | is_overwatch ? rgblight_mode(17) : rgblight_mode(18); | 323 | userspace_config.is_overwatch ? rgblight_mode(17) : rgblight_mode(18); |
| 357 | #endif //RGBLIGHT_ENABLE | 324 | #endif //RGBLIGHT_ENABLE |
| 358 | return false; break; | 325 | return false; break; |
| 359 | case KC_SALT: | 326 | case KC_SALT: |
| @@ -435,7 +402,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
| 435 | } | 402 | } |
| 436 | return false; | 403 | return false; |
| 437 | break; | 404 | break; |
| 438 | 405 | case CLICKY_TOGGLE: | |
| 406 | userspace_config.clicky_enable = clicky_enable; | ||
| 407 | eeprom_update_byte(EECONFIG_USERSPACE, userspace_config.raw); | ||
| 408 | break; | ||
| 439 | #ifdef UNICODE_ENABLE | 409 | #ifdef UNICODE_ENABLE |
| 440 | case UC_FLIP: // (╯°□°)╯ ︵ ┻━┻ | 410 | case UC_FLIP: // (╯°□°)╯ ︵ ┻━┻ |
| 441 | if (record->event.pressed) { | 411 | if (record->event.pressed) { |
| @@ -466,81 +436,135 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
| 466 | } | 436 | } |
| 467 | 437 | ||
| 468 | 438 | ||
| 439 | |||
| 469 | // Runs state check and changes underglow color and animation | 440 | // Runs state check and changes underglow color and animation |
| 470 | // on layer change, no matter where the change was initiated | 441 | // on layer change, no matter where the change was initiated |
| 471 | // Then runs keymap's layer change check | 442 | // Then runs keymap's layer change check |
| 472 | uint32_t layer_state_set_user(uint32_t state) { | 443 | uint32_t layer_state_set_user(uint32_t state) { |
| 473 | #ifdef RGBLIGHT_ENABLE | ||
| 474 | uint8_t default_layer = eeconfig_read_default_layer(); | 444 | uint8_t default_layer = eeconfig_read_default_layer(); |
| 445 | state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST); | ||
| 475 | 446 | ||
| 476 | if (rgb_layer_change) { | 447 | switch (biton32(state)) { |
| 477 | switch (biton32(state)) { | 448 | case _NAV: |
| 478 | case _NAV: | 449 | #ifdef RGBLIGHT_ENABLE |
| 450 | if (rgb_layer_change) { | ||
| 479 | rgblight_sethsv_blue(); | 451 | rgblight_sethsv_blue(); |
| 480 | rgblight_mode(1); | 452 | rgblight_mode(1); |
| 481 | break; | 453 | } |
| 482 | case _SYMB: | 454 | #endif // RGBLIGHT_ENABLE |
| 455 | break; | ||
| 456 | case _SYMB: | ||
| 457 | #ifdef RGBLIGHT_ENABLE | ||
| 458 | if (rgb_layer_change) { | ||
| 483 | rgblight_sethsv_blue(); | 459 | rgblight_sethsv_blue(); |
| 484 | rgblight_mode(2); | 460 | rgblight_mode(2); |
| 485 | break; | 461 | } |
| 486 | case _MOUS: | 462 | #endif // RGBLIGHT_ENABLE |
| 463 | break; | ||
| 464 | case _MOUS: | ||
| 465 | #ifdef RGBLIGHT_ENABLE | ||
| 466 | if (rgb_layer_change) { | ||
| 487 | rgblight_sethsv_yellow(); | 467 | rgblight_sethsv_yellow(); |
| 488 | rgblight_mode(1); | 468 | rgblight_mode(1); |
| 489 | break; | 469 | } |
| 490 | case _MACROS: | 470 | #endif // RGBLIGHT_ENABLE |
| 471 | break; | ||
| 472 | case _MACROS: | ||
| 473 | #ifdef RGBLIGHT_ENABLE | ||
| 474 | if (rgb_layer_change) { | ||
| 491 | rgblight_sethsv_orange(); | 475 | rgblight_sethsv_orange(); |
| 492 | is_overwatch ? rgblight_mode(17) : rgblight_mode(18); | 476 | userspace_config.is_overwatch ? rgblight_mode(17) : rgblight_mode(18); |
| 493 | break; | 477 | } |
| 494 | case _MEDIA: | 478 | #endif // RGBLIGHT_ENABLE |
| 479 | break; | ||
| 480 | case _MEDIA: | ||
| 481 | #ifdef RGBLIGHT_ENABLE | ||
| 482 | if (rgb_layer_change) { | ||
| 495 | rgblight_sethsv_chartreuse(); | 483 | rgblight_sethsv_chartreuse(); |
| 496 | rgblight_mode(22); | 484 | rgblight_mode(22); |
| 497 | break; | 485 | } |
| 498 | case _GAMEPAD: | 486 | #endif // RGBLIGHT_ENABLE |
| 487 | break; | ||
| 488 | case _GAMEPAD: | ||
| 489 | #ifdef RGBLIGHT_ENABLE | ||
| 490 | if (rgb_layer_change) { | ||
| 499 | rgblight_sethsv_orange(); | 491 | rgblight_sethsv_orange(); |
| 500 | rgblight_mode(17); | 492 | rgblight_mode(17); |
| 501 | break; | 493 | } |
| 502 | case _DIABLO: | 494 | #endif // RGBLIGHT_ENABLE |
| 495 | break; | ||
| 496 | case _DIABLO: | ||
| 497 | #ifdef RGBLIGHT_ENABLE | ||
| 498 | if (rgb_layer_change) { | ||
| 503 | rgblight_sethsv_red(); | 499 | rgblight_sethsv_red(); |
| 504 | rgblight_mode(5); | 500 | rgblight_mode(5); |
| 505 | break; | 501 | } |
| 506 | case _RAISE: | 502 | #endif // RGBLIGHT_ENABLE |
| 503 | break; | ||
| 504 | case _RAISE: | ||
| 505 | #ifdef RGBLIGHT_ENABLE | ||
| 506 | if (rgb_layer_change) { | ||
| 507 | rgblight_sethsv_yellow(); | 507 | rgblight_sethsv_yellow(); |
| 508 | rgblight_mode(5); | 508 | rgblight_mode(5); |
| 509 | break; | 509 | } |
| 510 | case _LOWER: | 510 | #endif // RGBLIGHT_ENABLE |
| 511 | break; | ||
| 512 | case _LOWER: | ||
| 513 | #ifdef RGBLIGHT_ENABLE | ||
| 514 | if (rgb_layer_change) { | ||
| 511 | rgblight_sethsv_orange(); | 515 | rgblight_sethsv_orange(); |
| 512 | rgblight_mode(5); | 516 | rgblight_mode(5); |
| 513 | break; | 517 | } |
| 514 | case _ADJUST: | 518 | #endif // RGBLIGHT_ENABLE |
| 519 | break; | ||
| 520 | case _ADJUST: | ||
| 521 | #ifdef RGBLIGHT_ENABLE | ||
| 522 | if (rgb_layer_change) { | ||
| 515 | rgblight_sethsv_red(); | 523 | rgblight_sethsv_red(); |
| 516 | rgblight_mode(23); | 524 | rgblight_mode(23); |
| 517 | break; | 525 | } |
| 518 | case _COVECUBE: | 526 | #endif // RGBLIGHT_ENABLE |
| 527 | break; | ||
| 528 | case _COVECUBE: | ||
| 529 | #ifdef RGBLIGHT_ENABLE | ||
| 530 | if (rgb_layer_change) { | ||
| 519 | rgblight_sethsv_green(); | 531 | rgblight_sethsv_green(); |
| 520 | rgblight_mode(2); | 532 | rgblight_mode(2); |
| 521 | break; | ||
| 522 | default: // for any other layers, or the default layer | ||
| 523 | if (default_layer & (1UL << _COLEMAK)) { | ||
| 524 | rgblight_sethsv_magenta(); | ||
| 525 | } | ||
| 526 | else if (default_layer & (1UL << _DVORAK)) { | ||
| 527 | rgblight_sethsv_green(); | ||
| 528 | } | ||
| 529 | else if (default_layer & (1UL << _WORKMAN)) { | ||
| 530 | rgblight_sethsv_goldenrod(); | ||
| 531 | } | ||
| 532 | else { | ||
| 533 | rgblight_sethsv_teal(); | ||
| 534 | } | ||
| 535 | if (biton32(state) == _MODS) { // If the non-OSM layer is enabled, then breathe | ||
| 536 | rgblight_mode(2); | ||
| 537 | } else { // otherwise, stay solid | ||
| 538 | rgblight_mode(1); | ||
| 539 | } | ||
| 540 | break; | ||
| 541 | } | 533 | } |
| 542 | } | ||
| 543 | #endif // RGBLIGHT_ENABLE | 534 | #endif // RGBLIGHT_ENABLE |
| 535 | break; | ||
| 536 | default: // for any other layers, or the default layer | ||
| 537 | if (default_layer & (1UL << _COLEMAK)) { | ||
| 538 | #ifdef RGBLIGHT_ENABLE | ||
| 539 | if (rgb_layer_change) { rgblight_sethsv_magenta(); } | ||
| 540 | #endif // RGBLIGHT_ENABLE | ||
| 541 | } | ||
| 542 | else if (default_layer & (1UL << _DVORAK)) { | ||
| 543 | #ifdef RGBLIGHT_ENABLE | ||
| 544 | if (rgb_layer_change) { rgblight_sethsv_green(); } | ||
| 545 | #endif // RGBLIGHT_ENABLE | ||
| 546 | } | ||
| 547 | else if (default_layer & (1UL << _WORKMAN)) { | ||
| 548 | #ifdef RGBLIGHT_ENABLE | ||
| 549 | if (rgb_layer_change) { rgblight_sethsv_goldenrod(); } | ||
| 550 | #endif // RGBLIGHT_ENABLE | ||
| 551 | } | ||
| 552 | else { | ||
| 553 | #ifdef RGBLIGHT_ENABLE | ||
| 554 | if (rgb_layer_change) { rgblight_sethsv_teal(); } | ||
| 555 | #endif // RGBLIGHT_ENABLE | ||
| 556 | } | ||
| 557 | if (biton32(state) == _MODS) { // If the non-OSM layer is enabled, then breathe | ||
| 558 | #ifdef RGBLIGHT_ENABLE | ||
| 559 | if (rgb_layer_change) { rgblight_mode(2); } | ||
| 560 | #endif // RGBLIGHT_ENABLE | ||
| 561 | } else { // otherwise, stay solid | ||
| 562 | #ifdef RGBLIGHT_ENABLE | ||
| 563 | if (rgb_layer_change) { rgblight_mode(1); } | ||
| 564 | #endif // RGBLIGHT_ENABLE | ||
| 565 | } | ||
| 566 | break; | ||
| 567 | } | ||
| 544 | return layer_state_set_keymap (state); | 568 | return layer_state_set_keymap (state); |
| 545 | } | 569 | } |
| 546 | 570 | ||
diff --git a/users/drashna/drashna.h b/users/drashna/drashna.h index 746c7e20a..5ef25333b 100644 --- a/users/drashna/drashna.h +++ b/users/drashna/drashna.h | |||
| @@ -49,8 +49,22 @@ enum userspace_layers { | |||
| 49 | // RGB color codes are no longer located here anymore. Instead, you will want to | 49 | // RGB color codes are no longer located here anymore. Instead, you will want to |
| 50 | // head to https://github.com/qmk/qmk_firmware/blob/master/quantum/rgblight_list.h | 50 | // head to https://github.com/qmk/qmk_firmware/blob/master/quantum/rgblight_list.h |
| 51 | 51 | ||
| 52 | extern bool is_overwatch; | ||
| 53 | extern bool rgb_layer_change; | 52 | extern bool rgb_layer_change; |
| 53 | extern bool clicky_enable; | ||
| 54 | |||
| 55 | #ifdef RGBLIGHT_ENABLE | ||
| 56 | void rgblight_sethsv_default_helper(uint8_t index); | ||
| 57 | #endif // RGBLIGHT_ENABLE | ||
| 58 | |||
| 59 | #define EECONFIG_USERSPACE (uint8_t *)20 | ||
| 60 | |||
| 61 | typedef union { | ||
| 62 | uint32_t raw; | ||
| 63 | struct { | ||
| 64 | bool clicky_enable :1; | ||
| 65 | bool is_overwatch :1; | ||
| 66 | }; | ||
| 67 | } userspace_config_t; | ||
| 54 | 68 | ||
| 55 | enum userspace_custom_keycodes { | 69 | enum userspace_custom_keycodes { |
| 56 | EPRM = SAFE_RANGE, // can always be here | 70 | EPRM = SAFE_RANGE, // can always be here |
| @@ -59,9 +73,6 @@ enum userspace_custom_keycodes { | |||
| 59 | KC_COLEMAK, | 73 | KC_COLEMAK, |
| 60 | KC_DVORAK, | 74 | KC_DVORAK, |
| 61 | KC_WORKMAN, | 75 | KC_WORKMAN, |
| 62 | LOWER, | ||
| 63 | RAISE, | ||
| 64 | ADJUST, | ||
| 65 | KC_DIABLO_CLEAR, | 76 | KC_DIABLO_CLEAR, |
| 66 | KC_OVERWATCH, | 77 | KC_OVERWATCH, |
| 67 | KC_SALT, | 78 | KC_SALT, |
| @@ -90,6 +101,11 @@ enum userspace_custom_keycodes { | |||
| 90 | NEW_SAFE_RANGE //use "NEWPLACEHOLDER for keymap specific codes | 101 | NEW_SAFE_RANGE //use "NEWPLACEHOLDER for keymap specific codes |
| 91 | }; | 102 | }; |
| 92 | 103 | ||
| 104 | #define LOWER MO(_LOWER) | ||
| 105 | #define RAISE MO(_RAISE) | ||
| 106 | #define ADJUST MO(_ADJUST) | ||
| 107 | |||
| 108 | |||
| 93 | #define KC_SEC1 KC_SECRET_1 | 109 | #define KC_SEC1 KC_SECRET_1 |
| 94 | #define KC_SEC2 KC_SECRET_2 | 110 | #define KC_SEC2 KC_SECRET_2 |
| 95 | #define KC_SEC3 KC_SECRET_3 | 111 | #define KC_SEC3 KC_SECRET_3 |
| @@ -102,6 +118,20 @@ enum userspace_custom_keycodes { | |||
| 102 | #define WORKMAN KC_WORKMAN | 118 | #define WORKMAN KC_WORKMAN |
| 103 | #define KC_RST KC_RESET | 119 | #define KC_RST KC_RESET |
| 104 | 120 | ||
| 121 | |||
| 122 | #ifdef SWAP_HANDS_ENABLE | ||
| 123 | #define KC_C1R3 SH_TT | ||
| 124 | #else // SWAP_HANDS_ENABLE | ||
| 125 | #define KC_C1R3 KC_BSPC | ||
| 126 | #endif // SWAP_HANDS_ENABLE | ||
| 127 | |||
| 128 | // OSM keycodes, to keep things clean and easy to change | ||
| 129 | #define KC_MLSF OSM(MOD_LSFT) | ||
| 130 | #define KC_MRSF OSM(MOD_RSFT) | ||
| 131 | |||
| 132 | #define MG_NKRO MAGIC_TOGGLE_NKRO | ||
| 133 | |||
| 134 | |||
| 105 | #ifdef TAP_DANCE_ENABLE | 135 | #ifdef TAP_DANCE_ENABLE |
| 106 | enum { | 136 | enum { |
| 107 | TD_D3_1 = 0, | 137 | TD_D3_1 = 0, |
| @@ -111,72 +141,6 @@ enum { | |||
| 111 | }; | 141 | }; |
| 112 | #endif // TAP_DANCE_ENABLE | 142 | #endif // TAP_DANCE_ENABLE |
| 113 | 143 | ||
| 114 | #ifdef UNICODEMAP_ENABLE | ||
| 115 | |||
| 116 | /* use X(n) to call the */ | ||
| 117 | |||
| 118 | |||
| 119 | enum unicode_name { | ||
| 120 | THINK, // thinking face 🤔 | ||
| 121 | GRIN, // grinning face 😊 | ||
| 122 | SMRK, // smirk 😏 | ||
| 123 | WEARY, // good shit 😩 | ||
| 124 | UNAMU, // unamused 😒 | ||
| 125 | |||
| 126 | SNEK, // snke 🐍 | ||
| 127 | PENGUIN, // 🐧 | ||
| 128 | DRAGON, // 🐉 | ||
| 129 | MONKEY, // 🐒 | ||
| 130 | CHICK, // 🐥 | ||
| 131 | |||
| 132 | OKOK, // 👌 | ||
| 133 | EFFU, // 🖕 | ||
| 134 | INUP, // 👆 | ||
| 135 | THUP, // 👍 | ||
| 136 | THDN, // 👎 | ||
| 137 | |||
| 138 | BBB, // dat B 🅱 | ||
| 139 | POO, // poop 💩 | ||
| 140 | HUNDR, // 100 💯 | ||
| 141 | EGGPL, // EGGPLANT 🍆 | ||
| 142 | WATER, // wet 💦 | ||
| 143 | TUMBLER, // 🥃 | ||
| 144 | |||
| 145 | LIT, // fire 🔥 | ||
| 146 | IRONY, // ‽ | ||
| 147 | DEGREE, // ° | ||
| 148 | }; | ||
| 149 | |||
| 150 | |||
| 151 | const uint32_t PROGMEM unicode_map[] = { | ||
| 152 | [THINK] = 0x1F914, | ||
| 153 | [GRIN] = 0x1F600, | ||
| 154 | [BBB] = 0x1F171, | ||
| 155 | [POO] = 0x1F4A9, | ||
| 156 | [HUNDR] = 0x1F4AF, | ||
| 157 | [SMRK] = 0x1F60F, | ||
| 158 | [WEARY] = 0x1F629, | ||
| 159 | [EGGPL] = 0x1F346, | ||
| 160 | [WATER] = 0x1F4A6, | ||
| 161 | [LIT] = 0x1F525, | ||
| 162 | [UNAMU] = 0x1F612, | ||
| 163 | [SNEK] = 0x1F40D, | ||
| 164 | [PENGUIN] = 0x1F427, | ||
| 165 | [BOAR] = 0x1F417, | ||
| 166 | [MONKEY] = 0x1F412, | ||
| 167 | [CHICK] = 0x1F425, | ||
| 168 | [DRAGON] = 0x1F409, | ||
| 169 | [OKOK] = 0x1F44C, | ||
| 170 | [EFFU] = 0x1F595, | ||
| 171 | [INUP] = 0x1F446, | ||
| 172 | [THDN] = 0x1F44E, | ||
| 173 | [THUP] = 0x1F44D, | ||
| 174 | [TUMBLER] = 0x1F943, | ||
| 175 | [IRONY] = 0x0203D, | ||
| 176 | [DEGREE] = 0x000B0, | ||
| 177 | }; | ||
| 178 | |||
| 179 | #endif //UNICODEMAP_ENABLE | ||
| 180 | 144 | ||
| 181 | // Custom Keycodes for Diablo 3 layer | 145 | // Custom Keycodes for Diablo 3 layer |
| 182 | // But since TD() doesn't work when tap dance is disabled | 146 | // But since TD() doesn't work when tap dance is disabled |
| @@ -193,22 +157,6 @@ const uint32_t PROGMEM unicode_map[] = { | |||
| 193 | #define KC_D3_4 KC_4 | 157 | #define KC_D3_4 KC_4 |
| 194 | #endif // TAP_DANCE_ENABLE | 158 | #endif // TAP_DANCE_ENABLE |
| 195 | 159 | ||
| 196 | // OSM keycodes, to keep things clean and easy to change | ||
| 197 | #define KC_MLSF OSM(MOD_LSFT) | ||
| 198 | #define KC_MRSF OSM(MOD_RSFT) | ||
| 199 | |||
| 200 | |||
| 201 | |||
| 202 | // If we're still using the official Faux Clicky feature, substitute codes | ||
| 203 | // so that we don't have any unused/blank keys. | ||
| 204 | #ifdef FAUXCLICKY_ENABLE | ||
| 205 | #define AUD_ON FC_ON | ||
| 206 | #define AUD_OFF FC_OFF | ||
| 207 | #else // FAUXCLICKY_ENABLE | ||
| 208 | #define AUD_ON AU_ON | ||
| 209 | #define AUD_OFF AU_OFF | ||
| 210 | #endif // FAUXCLICKY_ENABLE | ||
| 211 | |||
| 212 | 160 | ||
| 213 | 161 | ||
| 214 | // Since our quirky block definitions are basically a list of comma separated | 162 | // Since our quirky block definitions are basically a list of comma separated |
| @@ -286,7 +234,8 @@ const uint32_t PROGMEM unicode_map[] = { | |||
| 286 | #define _________________NORMAN_R2_________________ KC_J, KC_N, KC_I, KC_O, KC_U | 234 | #define _________________NORMAN_R2_________________ KC_J, KC_N, KC_I, KC_O, KC_U |
| 287 | #define _________________NORMAN_R3_________________ KC_P, KC_M, KC_COMM, KC_DOT, CTL_T(KC_SLASH) | 235 | #define _________________NORMAN_R3_________________ KC_P, KC_M, KC_COMM, KC_DOT, CTL_T(KC_SLASH) |
| 288 | 236 | ||
| 289 | 237 | #define ________________NUMBER_LEFT________________ KC_1, KC_2, KC_3, KC_4, KC_5 | |
| 238 | #define ________________NUMBER_RIGHT_______________ KC_6, KC_7, KC_8, KC_9, KC_0 | ||
| 290 | 239 | ||
| 291 | // Since we have 4 default layouts (QWERTY, DVORAK, COLEMAK and WORKMAN), | 240 | // Since we have 4 default layouts (QWERTY, DVORAK, COLEMAK and WORKMAN), |
| 292 | // this allows us to quickly modify the bottom row for all of the layouts | 241 | // this allows us to quickly modify the bottom row for all of the layouts |
| @@ -301,4 +250,4 @@ const uint32_t PROGMEM unicode_map[] = { | |||
| 301 | KC_SPACE,KC_BSPC, KC_END, KC_PGDN, KC_DEL, KC_ENTER | 250 | KC_SPACE,KC_BSPC, KC_END, KC_PGDN, KC_DEL, KC_ENTER |
| 302 | 251 | ||
| 303 | 252 | ||
| 304 | #endif | 253 | #endif // !USERSPACE |
diff --git a/users/drashna/drashna_unicode.h b/users/drashna/drashna_unicode.h new file mode 100644 index 000000000..3d1bc03f9 --- /dev/null +++ b/users/drashna/drashna_unicode.h | |||
| @@ -0,0 +1,71 @@ | |||
| 1 | #ifndef UNICODE_USERSPACE_H | ||
| 2 | #define UNICODE_USERSPACE_H | ||
| 3 | |||
| 4 | |||
| 5 | |||
| 6 | /* use X(n) to call the */ | ||
| 7 | |||
| 8 | enum unicode_name { | ||
| 9 | THINK, // thinking face 🤔 | ||
| 10 | GRIN, // grinning face 😊 | ||
| 11 | SMRK, // smirk 😏 | ||
| 12 | WEARY, // good shit 😩 | ||
| 13 | UNAMU, // unamused 😒 | ||
| 14 | |||
| 15 | SNEK, // snke 🐍 | ||
| 16 | PENGUIN, // 🐧 | ||
| 17 | DRAGON, // 🐉 | ||
| 18 | MONKEY, // 🐒 | ||
| 19 | CHICK, // 🐥 | ||
| 20 | BOAR, // 🐗 | ||
| 21 | |||
| 22 | OKOK, // 👌 | ||
| 23 | EFFU, // 🖕 | ||
| 24 | INUP, // 👆 | ||
| 25 | THUP, // 👍 | ||
| 26 | THDN, // 👎 | ||
| 27 | |||
| 28 | BBB, // dat B 🅱 | ||
| 29 | POO, // poop 💩 | ||
| 30 | HUNDR, // 100 💯 | ||
| 31 | EGGPL, // EGGPLANT 🍆 | ||
| 32 | WATER, // wet 💦 | ||
| 33 | TUMBLER, // 🥃 | ||
| 34 | |||
| 35 | LIT, // fire 🔥 | ||
| 36 | BANG, // ‽ | ||
| 37 | IRONY, // ⸮ | ||
| 38 | DEGREE // ° | ||
| 39 | }; | ||
| 40 | |||
| 41 | |||
| 42 | const uint32_t PROGMEM unicode_map[] = { | ||
| 43 | [THINK] = 0x1F914, | ||
| 44 | [GRIN] = 0x1F600, | ||
| 45 | [BBB] = 0x1F171, | ||
| 46 | [POO] = 0x1F4A9, | ||
| 47 | [HUNDR] = 0x1F4AF, | ||
| 48 | [SMRK] = 0x1F60F, | ||
| 49 | [WEARY] = 0x1F629, | ||
| 50 | [EGGPL] = 0x1F346, | ||
| 51 | [WATER] = 0x1F4A6, | ||
| 52 | [LIT] = 0x1F525, | ||
| 53 | [UNAMU] = 0x1F612, | ||
| 54 | [SNEK] = 0x1F40D, | ||
| 55 | [PENGUIN] = 0x1F427, | ||
| 56 | [BOAR] = 0x1F417, | ||
| 57 | [MONKEY] = 0x1F412, | ||
| 58 | [CHICK] = 0x1F425, | ||
| 59 | [DRAGON] = 0x1F409, | ||
| 60 | [OKOK] = 0x1F44C, | ||
| 61 | [EFFU] = 0x1F595, | ||
| 62 | [INUP] = 0x1F446, | ||
| 63 | [THDN] = 0x1F44E, | ||
| 64 | [THUP] = 0x1F44D, | ||
| 65 | [TUMBLER] = 0x1F943, | ||
| 66 | [BANG] = 0x0203D, | ||
| 67 | [IRONY] = 0x02E2E, | ||
| 68 | [DEGREE] = 0x000B0 | ||
| 69 | }; | ||
| 70 | |||
| 71 | #endif | ||
diff --git a/users/drashna/readme.md b/users/drashna/readme.md index c4e305e15..79758e7e5 100644 --- a/users/drashna/readme.md +++ b/users/drashna/readme.md | |||
| @@ -146,3 +146,31 @@ endif | |||
| 146 | ``` | 146 | ``` |
| 147 | 147 | ||
| 148 | Then, if you run `make keyboard:name NO_SECRETS=yes`, it will default to the test strings in your `<name>.c` file, rather than reading from your file. | 148 | Then, if you run `make keyboard:name NO_SECRETS=yes`, it will default to the test strings in your `<name>.c` file, rather than reading from your file. |
| 149 | |||
| 150 | |||
| 151 | Userspace EEPROM config | ||
| 152 | ----------------------- | ||
| 153 | |||
| 154 | This adds EEPROM support fo the userspace, so that certain values are configurable in such a way that persists when power is lost. Namely, just the clicky feature and the Overwatch macro option ("is_overwatch"). This is done by reading and saving the structure from EEPROM. | ||
| 155 | |||
| 156 | To implement this, first you need to specify the location: | ||
| 157 | |||
| 158 | ```c | ||
| 159 | #define EECONFIG_USERSPACE (uint8_t *)20 | ||
| 160 | ``` | ||
| 161 | This tells us where in the EEPROM that the data structure is located, and this specifies that it's a byte (8 bits). However, to maximize it's usage, we want to specify a data structure here, so that we can use multiple settings. To do that: | ||
| 162 | |||
| 163 | ```c | ||
| 164 | typedef union { | ||
| 165 | uint32_t raw; | ||
| 166 | struct { | ||
| 167 | bool clicky_enable :1; | ||
| 168 | bool is_overwatch :1; | ||
| 169 | }; | ||
| 170 | } userspace_config_t; | ||
| 171 | ``` | ||
| 172 | Then, in your C file, you want to add: `userspace_config_t userspace_config;`, and in your `matrix_init_*` function, you want to add `userspace_config.raw = eeprom_read_byte(EECONFIG_USERSPACE);` | ||
| 173 | |||
| 174 | From there, you'd want to use the data structure (such as `userspace_config.is_overwatch`) when you want to check this value. | ||
| 175 | |||
| 176 | And if you want to update it, update directly and then use `eeprom_update_byte(EECONFIG_USERSPACE, userspace_config.raw);` to write the value back to the EEPROM. | ||
