aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDrashna Jaelre <drashna@live.com>2018-05-15 19:34:34 -0700
committerJack Humbert <jack.humb@gmail.com>2018-05-15 22:34:34 -0400
commit53a6501d71cabbe4c5c41652cf24fdc059609e5d (patch)
tree4662908d245fe7176307f99a994d1f8d8ef12158
parenta572323f94b533582edab4402867dc994cc8c75f (diff)
downloadqmk_firmware-53a6501d71cabbe4c5c41652cf24fdc059609e5d.tar.gz
qmk_firmware-53a6501d71cabbe4c5c41652cf24fdc059609e5d.zip
Yet another update to drashna keymaps and userspace (EEPROM, RGB indicators) (#2959)
* More Iris Tweaks * Mess with iris arrow keys * Massive layout overhaul to make everything more OLKB * Additional tweaks * Cleanup Userspace Remove unused layer code, and properly set userspace eeprom structure. * EEPROM stuff * Only use indicators if layer indication is enabled * Iris and Orthodox Tweaks (Status Indicators) * Additional tweaks to finish tri layer conversion * Disable ProMicro ligths globally * Add Pro Micro hacking info * Successfully get mod indication working on thumb clusters * Enable printing when console is enabled * Make Modifier Indicator lights more modular * Keymap cleanup * Tapping test changes * Cleanup and minor tweaks
-rw-r--r--keyboards/iris/keymaps/drashna/config.h2
-rw-r--r--keyboards/iris/keymaps/drashna/keymap.c130
-rw-r--r--keyboards/iris/keymaps/drashna/rules.mk1
-rw-r--r--keyboards/orthodox/keymaps/drashna/keymap.c73
-rw-r--r--keyboards/orthodox/keymaps/drashna/rules.mk1
-rw-r--r--keyboards/viterbi/keymaps/drashna/keymap.c16
-rw-r--r--layouts/community/ergodox/drashna/keymap.c114
-rw-r--r--users/drashna/config.h7
-rw-r--r--users/drashna/drashna.c132
-rw-r--r--users/drashna/drashna.h24
-rw-r--r--users/drashna/readme.md22
-rw-r--r--users/drashna/rules.mk4
12 files changed, 275 insertions, 251 deletions
diff --git a/keyboards/iris/keymaps/drashna/config.h b/keyboards/iris/keymaps/drashna/config.h
index 2a451e7c7..bfdd0022b 100644
--- a/keyboards/iris/keymaps/drashna/config.h
+++ b/keyboards/iris/keymaps/drashna/config.h
@@ -41,6 +41,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
41#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2 41#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
42#define RGBLIGHT_EFFECT_SNAKE_LENGTH 2 42#define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
43#define RGBLIGHT_EFFECT_BREATHE_CENTER 1 43#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
44
45#define RGBLIGHT_LIMIT_VAL 225
44#endif // RGBLIGHT_ENABLE 46#endif // RGBLIGHT_ENABLE
45 47
46#ifdef AUDIO_ENABLE 48#ifdef AUDIO_ENABLE
diff --git a/keyboards/iris/keymaps/drashna/keymap.c b/keyboards/iris/keymaps/drashna/keymap.c
index 64d074fc9..b24e5fe53 100644
--- a/keyboards/iris/keymaps/drashna/keymap.c
+++ b/keyboards/iris/keymaps/drashna/keymap.c
@@ -2,79 +2,94 @@
2#include QMK_KEYBOARD_H 2#include QMK_KEYBOARD_H
3#include "drashna.h" 3#include "drashna.h"
4 4
5#ifdef INDICATOR_LIGHTS
6extern userspace_config_t userspace_config;
5 7
6#define KC_ALAP ALT_T(KC_APP) 8uint8_t last_mod;
9uint8_t last_led;
10uint8_t last_osm;
11bool has_mods_changed = false;
12#endif
7 13
14#define KC_ALAP ALT_T(KC_APP)
15#define KC_OSLG OSM(MOD_LGUI)
8const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 16const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
9 17
10 [_QWERTY] = LAYOUT_wrapper( 18 [_QWERTY] = LAYOUT_wrapper(
11 KC_GESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS, 19 KC_ESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS,
12 KC_TAB , _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, KC_BSLS, 20 KC_TAB , _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, KC_BSLS,
13 KC_C1R3, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_QUOT, 21 KC_CCCV, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_QUOT,
14 KC_MLSF, _________________QWERTY_L3_________________, KC_ALAP, KC_LGUI, _________________QWERTY_R3_________________, KC_MRSF, 22 KC_MLSF, _________________QWERTY_L3_________________, KC_ALAP, KC_OSLG, _________________QWERTY_R3_________________, KC_MRSF,
15 LOWER, KC_SPC, KC_BSPC, KC_DEL, KC_ENT, RAISE 23 LT(_LOWER,KC_GRV), KC_SPC, KC_BSPC, KC_DEL, KC_ENT, RAISE
16 ), 24 ),
17 [_COLEMAK] = LAYOUT_wrapper( 25 [_COLEMAK] = LAYOUT_wrapper(
18 KC_GESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS, 26 KC_ESC , ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS,
19 KC_TAB , _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, KC_BSLS, 27 KC_TAB , _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, KC_BSLS,
20 KC_C1R3, _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, KC_QUOT, 28 KC_CCCV, _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, KC_QUOT,
21 KC_MLSF, _________________COLEMAK_L3________________, KC_ALAP, KC_LGUI, _________________COLEMAK_R3________________, KC_MRSF, 29 KC_MLSF, _________________COLEMAK_L3________________, KC_ALAP, KC_OSLG, _________________COLEMAK_R3________________, KC_MRSF,
22 LOWER, KC_SPC, KC_BSPC, KC_DEL, KC_ENT, RAISE 30 LT(_LOWER,KC_GRV), KC_SPC, KC_BSPC, KC_DEL, KC_ENT, RAISE
23 ), 31 ),
24 [_DVORAK] = LAYOUT_wrapper( 32 [_DVORAK] = LAYOUT_wrapper(
25 KC_GESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS, 33 KC_ESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS,
26 KC_TAB , _________________DVORAK_L1_________________, _________________DVORAK_R1_________________, KC_BSLS, 34 KC_TAB , _________________DVORAK_L1_________________, _________________DVORAK_R1_________________, KC_BSLS,
27 KC_C1R3, _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, KC_QUOT, 35 KC_CCCV, _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, KC_QUOT,
28 KC_MLSF, _________________DVORAK_L3_________________, KC_ALAP, KC_LGUI, _________________DVORAK_R3_________________, KC_MRSF, 36 KC_MLSF, _________________DVORAK_L3_________________, KC_ALAP, KC_OSLG, _________________DVORAK_R3_________________, KC_MRSF,
29 LOWER, KC_SPC, KC_BSPC, KC_DEL, KC_ENT, RAISE 37 LT(_LOWER,KC_GRV), KC_SPC, KC_BSPC, KC_DEL, KC_ENT, RAISE
30 ), 38 ),
31 [_WORKMAN] = LAYOUT_wrapper( 39 [_WORKMAN] = LAYOUT_wrapper(
32 KC_GESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS, 40 KC_ESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS,
33 KC_TAB , _________________WORKMAN_L1________________, _________________WORKMAN_R1________________, KC_BSLS, 41 KC_TAB , _________________WORKMAN_L1________________, _________________WORKMAN_R1________________, KC_BSLS,
34 KC_C1R3, _________________WORKMAN_L2________________, _________________WORKMAN_R2________________, KC_QUOT, 42 KC_CCCV, _________________WORKMAN_L2________________, _________________WORKMAN_R2________________, KC_QUOT,
35 KC_MLSF, _________________WORKMAN_L3________________, KC_ALAP, KC_LGUI, _________________WORKMAN_R3________________, KC_MRSF, 43 KC_MLSF, _________________WORKMAN_L3________________, KC_ALAP, KC_OSLG, _________________WORKMAN_R3________________, KC_MRSF,
36 LOWER, KC_SPC, KC_BSPC, KC_DEL, KC_ENT, RAISE 44 LT(_LOWER,KC_GRV), KC_SPC, KC_BSPC, KC_DEL, KC_ENT, RAISE
37 ), 45 ),
38 46
39 [_MODS] = LAYOUT( 47 [_MODS] = LAYOUT_wrapper(
40 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 48 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
41 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 49 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
42 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 50 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
43 KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 51 KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RSFT,
44 _______, _______, _______, _______, _______, _______ 52 _______, _______, _______, _______, _______, _______
45 ), 53 ),
46 54
47 55
48 [_LOWER] = LAYOUT( 56 [_LOWER] = LAYOUT_wrapper(
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, 57 _______, _________________FUNC_LEFT_________________, _________________FUNC_RIGHT________________, _______,
50 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 58 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
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, 59 _______, _______, _______, _______, _______, _______, _______, 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, _______, 60 _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______,
53 _______, _______, KC_DEL, _______, _______, _______ 61 _______, _______, _______, _______, _______, _______
54 ), 62 ),
55 63
56 [_RAISE] = LAYOUT( 64 [_RAISE] = LAYOUT_wrapper(
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, 65 _______, _________________FUNC_LEFT_________________, _________________FUNC_RIGHT________________, _______,
58 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 66 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
59 _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_UNDS, KC_EQL , KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, 67 _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
60 _______, _______, _______, _______, _______, _______, _______, _______, KC_PLUS, KC_END, _______, _______, _______, _______, 68 _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______,
61 _______, _______, _______, _______, _______, _______ 69 _______, _______, _______, _______, _______, _______
62 ), 70 ),
63 71
64 [_ADJUST] = LAYOUT( 72 [_ADJUST] = LAYOUT_wrapper(
65 KC_MAKE, KC_RST, EPRM, _______, _______, _______, _______, _______, _______, _______, _______, _______, 73 KC_MAKE, _______, _______, _______, _______, _______, KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5, KC_RST,
66 RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, 74 VRSN, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG, _______, _______, _______, _______, _______, EPRM,
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), 75 _______, _______, CK_TOGG, AU_ON, AU_OFF, AG_NORM, AG_SWAP, KC_QWERTY, KC_COLEMAK, KC_DVORAK, KC_WORKMAN, _______,
68 KC_RGB_T,RGB_SMOD,RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, MG_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY, 76 TG(_MODS),RGB_SMOD,RGB_HUD,RGB_SAD, RGB_VAD, KC_RGB_T,_______, _______, MG_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY,
69 _______, _______, _______, _______, _______, _______ 77 _______, _______, _______, _______, _______, _______
70 ) 78 )
71 79
72}; 80};
73 81
74 82
83void matrix_init_keymap(void) {
84#ifdef INDICATOR_LIGHTS
85 last_mod = get_mods();
86 last_led = host_keyboard_leds();
87 last_osm =get_oneshot_mods();
88#endif
89}
75 90
76#ifdef INDICATOR_LIGHT
77uint32_t layer_state_set_keymap (uint32_t state) { 91uint32_t layer_state_set_keymap (uint32_t state) {
92#ifdef INDICATOR_LIGHTS
78 uint8_t modifiders = get_mods(); 93 uint8_t modifiders = get_mods();
79 uint8_t led_usb_state = host_keyboard_leds(); 94 uint8_t led_usb_state = host_keyboard_leds();
80 uint8_t one_shot = get_oneshot_mods(); 95 uint8_t one_shot = get_oneshot_mods();
@@ -92,41 +107,49 @@ uint32_t layer_state_set_keymap (uint32_t state) {
92 rgblight_sethsv_at(120, 255, 255, 7); 107 rgblight_sethsv_at(120, 255, 255, 7);
93 rgblight_sethsv_at(120, 255, 255, 8); 108 rgblight_sethsv_at(120, 255, 255, 8);
94 } 109 }
110#endif
95 111
96 return state; 112 return state;
97} 113}
98 114
99 115
100void matrix_scan_keymap (void) { 116void matrix_scan_keymap (void) {
101 static uint8_t current_mods; 117
102 static uint8_t current_host_leds; 118#ifdef INDICATOR_LIGHTS
103 static uint8_t current_oneshot_mods; 119 uint8_t current_mod = get_mods();
104 static bool has_status_changed = true; 120 uint8_t current_led = host_keyboard_leds();
105 121 uint8_t current_osm =get_oneshot_mods();
106 if ( current_mods != get_mods() || current_host_leds != host_keyboard_leds() || current_oneshot_mods != get_oneshot_mods()) { 122
107 has_status_changed = true; 123 if (last_mod == current_mod) {
108 current_mods = get_mods(); 124 last_mod = current_mod;
109 current_host_leds = host_keyboard_leds(); 125 has_mods_changed = true;
110 current_oneshot_mods = get_oneshot_mods(); 126 }
127 if (last_led == current_led) {
128 last_led = current_led;
129 has_mods_changed = true;
111 } 130 }
112 if (has_status_changed) { 131 if (last_osm == current_osm) {
113 has_status_changed = false; 132 last_osm = current_osm;
133 has_mods_changed = true;
134 }
135
114 136
115 if (current_mods & MODS_SHIFT_MASK || current_host_leds & (1<<USB_LED_CAPS_LOCK) || current_oneshot_mods & MODS_SHIFT_MASK) { 137 if (userspace_config.rgb_layer_change && has_mods_changed && biton32(layer_state) == 0) {
138 if (current_mod & MODS_SHIFT_MASK || current_led & (1<<USB_LED_CAPS_LOCK) || current_osm & MODS_SHIFT_MASK) {
116 rgblight_sethsv_at(0, 255, 255, 5); 139 rgblight_sethsv_at(0, 255, 255, 5);
117 rgblight_sethsv_at(0, 255, 255, 10); 140 rgblight_sethsv_at(0, 255, 255, 10);
118 } else { 141 } else {
119 rgblight_sethsv_default_helper(5); 142 rgblight_sethsv_default_helper(5);
120 rgblight_sethsv_default_helper(10); 143 rgblight_sethsv_default_helper(10);
121 } 144 }
122 if (current_mods & MODS_CTRL_MASK || current_oneshot_mods & MODS_CTRL_MASK) { 145 if (current_mod & MODS_CTRL_MASK || current_osm & MODS_CTRL_MASK) {
123 rgblight_sethsv_at(51, 255, 255, 6); 146 rgblight_sethsv_at(51, 255, 255, 6);
124 rgblight_sethsv_at(51, 255, 255, 9); 147 rgblight_sethsv_at(51, 255, 255, 9);
125 } else { 148 } else {
126 rgblight_sethsv_default_helper(6); 149 rgblight_sethsv_default_helper(6);
127 rgblight_sethsv_default_helper(9); 150 rgblight_sethsv_default_helper(9);
128 } 151 }
129 if (current_mods & MODS_GUI_MASK || current_oneshot_mods & MODS_GUI_MASK) { 152 if (current_mod & MODS_GUI_MASK || current_osm & MODS_GUI_MASK) {
130 rgblight_sethsv_at(120, 255, 255, 7); 153 rgblight_sethsv_at(120, 255, 255, 7);
131 rgblight_sethsv_at(120, 255, 255, 8); 154 rgblight_sethsv_at(120, 255, 255, 8);
132 } else { 155 } else {
@@ -135,7 +158,6 @@ void matrix_scan_keymap (void) {
135 158
136 } 159 }
137 } 160 }
138}
139#endif 161#endif
140 162
141 163}
diff --git a/keyboards/iris/keymaps/drashna/rules.mk b/keyboards/iris/keymaps/drashna/rules.mk
index 8f19384f6..2608985c6 100644
--- a/keyboards/iris/keymaps/drashna/rules.mk
+++ b/keyboards/iris/keymaps/drashna/rules.mk
@@ -9,3 +9,4 @@ AUDIO_ENABLE = yes
9NKRO_ENABLE = yes 9NKRO_ENABLE = yes
10BACKLIGHT_ENABLE = no 10BACKLIGHT_ENABLE = no
11SWAP_HANDS_ENABLE = yes 11SWAP_HANDS_ENABLE = yes
12INDICATOR_LIGHTS = yes
diff --git a/keyboards/orthodox/keymaps/drashna/keymap.c b/keyboards/orthodox/keymaps/drashna/keymap.c
index 3c99e9cb8..bcc59268c 100644
--- a/keyboards/orthodox/keymaps/drashna/keymap.c
+++ b/keyboards/orthodox/keymaps/drashna/keymap.c
@@ -22,6 +22,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
22#include QMK_KEYBOARD_H 22#include QMK_KEYBOARD_H
23#include "drashna.h" 23#include "drashna.h"
24 24
25#ifdef INDICATOR_LIGHTS
26extern userspace_config_t userspace_config;
27
28uint8_t last_mod;
29uint8_t last_led;
30uint8_t last_osm;
31bool has_mods_changed = false;
32#endif
25 33
26// Each layer gets a name for readability, which is then used in the keymap matrix below. 34// Each layer gets a name for readability, which is then used in the keymap matrix below.
27// The underscores don't mean anything - you can have a layer called STUFF or any other name. 35// The underscores don't mean anything - you can have a layer called STUFF or any other name.
@@ -33,6 +41,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
33#define XXXXXXX KC_NO 41#define XXXXXXX KC_NO
34 42
35 43
44
36const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 45const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
37 46
38[_QWERTY] = LAYOUT_wrapper(\ 47[_QWERTY] = LAYOUT_wrapper(\
@@ -65,27 +74,35 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
65 74
66[_LOWER] = LAYOUT_wrapper(\ 75[_LOWER] = LAYOUT_wrapper(\
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, 76 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
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, 77 _______, _________________FUNC_LEFT_________________, KC_PGUP, KC_PGDN, KC_HOME, KC_END, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
69 KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, _______, KC_COMM, KC_DOT, _______, _______ 78 _______, _________________FUNC_RIGHT________________, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______
70), 79),
71 80
72[_RAISE] = LAYOUT_wrapper(\ 81[_RAISE] = LAYOUT_wrapper(\
73 KC_GRV, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_BSPC, 82 KC_GRV, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_BSPC,
74 _______, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, KC_HOME, KC_END, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, 83 _______, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, KC_HOME, KC_END, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
75 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_COMM, KC_DOT, _______, _______ 84 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______
76), 85),
77 86
78[_ADJUST] = LAYOUT_wrapper(\ 87[_ADJUST] = LAYOUT_wrapper(\
79 KC_MAKE,KC_RESET, EPRM, _______, _______, _______, _______, _______, _______, _______, _______, _______, 88 KC_MAKE, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG, KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5, KC_RESET,
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), 89 VRSN, _______, CK_TOGG, AU_ON, AU_OFF, AG_NORM, _______, _______, _______, _______, AG_SWAP, KC_QWERTY, KC_COLEMAK, KC_DVORAK, KC_WORKMAN, EPRM,
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 90 TG(_MODS),RGB_RMOD,RGB_HUD,RGB_SAD, RGB_VAD, KC_RGB_T,_______, _______, _______, _______, _______, _______, MG_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY
82) 91)
83 92
84 93
85}; 94};
86 95
87#ifdef RGBLIGHT_ENABLE 96void matrix_init_keymap(void) {
97#ifdef INDICATOR_LIGHTS
98 last_mod = get_mods();
99 last_led = host_keyboard_leds();
100 last_osm =get_oneshot_mods();
101#endif
102}
103
88uint32_t layer_state_set_keymap (uint32_t state) { 104uint32_t layer_state_set_keymap (uint32_t state) {
105#ifdef INDICATOR_LIGHTS
89 uint8_t modifiders = get_mods(); 106 uint8_t modifiders = get_mods();
90 uint8_t led_usb_state = host_keyboard_leds(); 107 uint8_t led_usb_state = host_keyboard_leds();
91 uint8_t one_shot = get_oneshot_mods(); 108 uint8_t one_shot = get_oneshot_mods();
@@ -103,41 +120,49 @@ uint32_t layer_state_set_keymap (uint32_t state) {
103 rgblight_sethsv_at(120, 255, 255, 7); 120 rgblight_sethsv_at(120, 255, 255, 7);
104 rgblight_sethsv_at(120, 255, 255, 8); 121 rgblight_sethsv_at(120, 255, 255, 8);
105 } 122 }
123#endif
106 124
107 return state; 125 return state;
108} 126}
109 127
110 128
111void matrix_scan_keymap (void) { 129void matrix_scan_keymap (void) {
112 static uint8_t current_mods; 130
113 static uint8_t current_host_leds; 131#ifdef INDICATOR_LIGHTS
114 static uint8_t current_oneshot_mods; 132 uint8_t current_mod = get_mods();
115 static bool has_status_changed = true; 133 uint8_t current_led = host_keyboard_leds();
116 134 uint8_t current_osm =get_oneshot_mods();
117 if ( current_mods != get_mods() || current_host_leds != host_keyboard_leds() || current_oneshot_mods != get_oneshot_mods()) { 135
118 has_status_changed = true; 136 if (last_mod == current_mod) {
119 current_mods = get_mods(); 137 last_mod = current_mod;
120 current_host_leds = host_keyboard_leds(); 138 has_mods_changed = true;
121 current_oneshot_mods = get_oneshot_mods(); 139 }
140 if (last_led == current_led) {
141 last_led = current_led;
142 has_mods_changed = true;
122 } 143 }
123 if (has_status_changed) { 144 if (last_osm == current_osm) {
124 has_status_changed = false; 145 last_osm = current_osm;
146 has_mods_changed = true;
147 }
148
125 149
126 if (current_mods & MODS_SHIFT_MASK || current_host_leds & (1<<USB_LED_CAPS_LOCK) || current_oneshot_mods & MODS_SHIFT_MASK) { 150 if (userspace_config.rgb_layer_change && has_mods_changed && biton32(layer_state) == 0) {
151 if (current_mod & MODS_SHIFT_MASK || current_led & (1<<USB_LED_CAPS_LOCK) || current_osm & MODS_SHIFT_MASK) {
127 rgblight_sethsv_at(0, 255, 255, 5); 152 rgblight_sethsv_at(0, 255, 255, 5);
128 rgblight_sethsv_at(0, 255, 255, 10); 153 rgblight_sethsv_at(0, 255, 255, 10);
129 } else { 154 } else {
130 rgblight_sethsv_default_helper(5); 155 rgblight_sethsv_default_helper(5);
131 rgblight_sethsv_default_helper(10); 156 rgblight_sethsv_default_helper(10);
132 } 157 }
133 if (current_mods & MODS_CTRL_MASK || current_oneshot_mods & MODS_CTRL_MASK) { 158 if (current_mod & MODS_CTRL_MASK || current_osm & MODS_CTRL_MASK) {
134 rgblight_sethsv_at(51, 255, 255, 6); 159 rgblight_sethsv_at(51, 255, 255, 6);
135 rgblight_sethsv_at(51, 255, 255, 9); 160 rgblight_sethsv_at(51, 255, 255, 9);
136 } else { 161 } else {
137 rgblight_sethsv_default_helper(6); 162 rgblight_sethsv_default_helper(6);
138 rgblight_sethsv_default_helper(9); 163 rgblight_sethsv_default_helper(9);
139 } 164 }
140 if (current_mods & MODS_GUI_MASK || current_oneshot_mods & MODS_GUI_MASK) { 165 if (current_mod & MODS_GUI_MASK || current_osm & MODS_GUI_MASK) {
141 rgblight_sethsv_at(120, 255, 255, 7); 166 rgblight_sethsv_at(120, 255, 255, 7);
142 rgblight_sethsv_at(120, 255, 255, 8); 167 rgblight_sethsv_at(120, 255, 255, 8);
143 } else { 168 } else {
@@ -146,5 +171,7 @@ void matrix_scan_keymap (void) {
146 171
147 } 172 }
148 } 173 }
149}
150#endif 174#endif
175
176}
177
diff --git a/keyboards/orthodox/keymaps/drashna/rules.mk b/keyboards/orthodox/keymaps/drashna/rules.mk
index 222a43640..7ea609ede 100644
--- a/keyboards/orthodox/keymaps/drashna/rules.mk
+++ b/keyboards/orthodox/keymaps/drashna/rules.mk
@@ -7,3 +7,4 @@ TAP_DANCE_ENABLE = no
7RGBLIGHT_ENABLE = yes 7RGBLIGHT_ENABLE = yes
8AUDIO_ENABLE = yes 8AUDIO_ENABLE = yes
9NKRO_ENABLE = yes 9NKRO_ENABLE = yes
10INDICATOR_LIGHTS = yes
diff --git a/keyboards/viterbi/keymaps/drashna/keymap.c b/keyboards/viterbi/keymaps/drashna/keymap.c
index 09e8bc599..11ffe6ebd 100644
--- a/keyboards/viterbi/keymaps/drashna/keymap.c
+++ b/keyboards/viterbi/keymaps/drashna/keymap.c
@@ -17,7 +17,6 @@ extern keymap_config_t keymap_config;
17#define DIABLO TG(_DIABLO) 17#define DIABLO TG(_DIABLO)
18#define GAMEPAD TG(_GAMEPAD) 18#define GAMEPAD TG(_GAMEPAD)
19#define MEDIA TT(_MEDIA) 19#define MEDIA TT(_MEDIA)
20#define COVECUBE TG(_COVECUBE)
21 20
22 21
23//enum more_custom_keycodes { 22//enum more_custom_keycodes {
@@ -28,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
28 27
29 [_NUMLOCK] = LAYOUT_ortho_5x7( 28 [_NUMLOCK] = LAYOUT_ortho_5x7(
30 LMACRO, DIABLO, GAMEPAD, KC_NLCK, KC_SLCK, KC_COLN, KC_PSLS, 29 LMACRO, DIABLO, GAMEPAD, KC_NLCK, KC_SLCK, KC_COLN, KC_PSLS,
31 MEDIA, KC_CALC, COVECUBE,KC_P7, KC_P8, KC_P9, KC_PAST, 30 MEDIA, KC_CALC, XXXXXXX, KC_P7, KC_P8, KC_P9, KC_PAST,
32 KC_HOME, KC_DEL, KC_PGUP, KC_P4, KC_P5, KC_P6, KC_PMNS, 31 KC_HOME, KC_DEL, KC_PGUP, KC_P4, KC_P5, KC_P6, KC_PMNS,
33 KC_END, KC_UP, KC_PGDN, KC_P1, KC_P2, KC_P3, KC_PPLS, 32 KC_END, KC_UP, KC_PGDN, KC_P1, KC_P2, KC_P3, KC_PPLS,
34 KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_COLN, KC_PENT 33 KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_COLN, KC_PENT
@@ -58,13 +57,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
58 KC_SALT, KC_MORESALT, KC_SALTHARD, KC_JUSTGAME, KC_AIM, XXXXXXX, KC_PENT 57 KC_SALT, KC_MORESALT, KC_SALTHARD, KC_JUSTGAME, KC_AIM, XXXXXXX, KC_PENT
59 ), 58 ),
60 59
61 [_COVECUBE] = LAYOUT_ortho_5x7(
62 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
63 XXXXXXX, XXXXXXX, COVECUBE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
64 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
65 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
66 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
67 ),
68 60
69 [_MEDIA] = LAYOUT_ortho_5x7( 61 [_MEDIA] = LAYOUT_ortho_5x7(
70 KC_MAKE, KC_RESET,MU_TOG, AU_ON, AU_OFF, CK_TOGG, RGB_SAD, 62 KC_MAKE, KC_RESET,MU_TOG, AU_ON, AU_OFF, CK_TOGG, RGB_SAD,
@@ -77,13 +69,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
77 69
78}; 70};
79 71
80void matrix_init_keymap(void) {
81 DDRD &= ~(1<<5);
82 PORTD &= ~(1<<5);
83 72
84 DDRB &= ~(1<<0);
85 PORTB &= ~(1<<0);
86}
87 73
88bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { 74bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
89 75
diff --git a/layouts/community/ergodox/drashna/keymap.c b/layouts/community/ergodox/drashna/keymap.c
index 03fa67a7d..b3fe274a5 100644
--- a/layouts/community/ergodox/drashna/keymap.c
+++ b/layouts/community/ergodox/drashna/keymap.c
@@ -57,11 +57,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
57 */ 57 */
58 [_QWERTY] = LAYOUT_ergodox_pretty_wrapper( 58 [_QWERTY] = LAYOUT_ergodox_pretty_wrapper(
59 // left hand // right hand 59 // left hand // right hand
60 KC_EQL, ________________NUMBER_LEFT________________, OSL(_MOUS), OSL(_MOUS), ________________NUMBER_RIGHT_______________, KC_MINS, 60 KC_EQL, ________________NUMBER_LEFT________________, _______, _______, ________________NUMBER_RIGHT_______________, KC_MINS,
61 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,
62 KC_C1R3, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_QUOT, 62 KC_C1R3, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_QUOT,
63 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,
64 LT(_SYMB,KC_GRV), ___________ERGODOX_BOTTOM_LEFT_____________, ___________ERGODOX_BOTTOM_RIGHT____________, TT(_SYMB), 64 KC_GRV, ___________ERGODOX_BOTTOM_LEFT_____________, ___________ERGODOX_BOTTOM_RIGHT____________, KC_CCCV,
65 __________________ERGODOX_THUMB_CLUSTER_____________________ 65 __________________ERGODOX_THUMB_CLUSTER_____________________
66 ), 66 ),
67/* Keymap 0: COLEMAK layer 67/* Keymap 0: COLEMAK layer
@@ -89,11 +89,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
89// Otherwise, it needs KC_* 89// Otherwise, it needs KC_*
90 [_COLEMAK] = LAYOUT_ergodox_pretty_wrapper( 90 [_COLEMAK] = LAYOUT_ergodox_pretty_wrapper(
91 // left hand // right hand 91 // left hand // right hand
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, 92 KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
93 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,
94 KC_C1R3, _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, KC_QUOT, 94 KC_C1R3, _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, KC_QUOT,
95 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,
96 LT(_SYMB,KC_GRV), ___________ERGODOX_BOTTOM_LEFT_____________, ___________ERGODOX_BOTTOM_RIGHT____________, TT(_SYMB), 96 KC_GRV, ___________ERGODOX_BOTTOM_LEFT_____________, ___________ERGODOX_BOTTOM_RIGHT____________, KC_CCCV,
97 __________________ERGODOX_THUMB_CLUSTER_____________________ 97 __________________ERGODOX_THUMB_CLUSTER_____________________
98 ), 98 ),
99/* Keymap 0: DVORAK Layout 99/* Keymap 0: DVORAK Layout
@@ -121,11 +121,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
121// Otherwise, it needs KC_* 121// Otherwise, it needs KC_*
122 [_DVORAK] = LAYOUT_ergodox_pretty_wrapper( 122 [_DVORAK] = LAYOUT_ergodox_pretty_wrapper(
123 // left hand // right hand 123 // left hand // right hand
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, 124 KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS,
125 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,
126 KC_C1R3, _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, KC_MINS, 126 KC_C1R3, _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, KC_MINS,
127 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,
128 LT(_SYMB,KC_GRV), ___________ERGODOX_BOTTOM_LEFT_____________, ___________ERGODOX_BOTTOM_RIGHT____________, TT(_SYMB), 128 KC_GRV, ___________ERGODOX_BOTTOM_LEFT_____________, ___________ERGODOX_BOTTOM_RIGHT____________, KC_CCCV,
129 __________________ERGODOX_THUMB_CLUSTER_____________________ 129 __________________ERGODOX_THUMB_CLUSTER_____________________
130 ), 130 ),
131/* Keymap 0: WORKMAN layer 131/* Keymap 0: WORKMAN layer
@@ -153,16 +153,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
153// Otherwise, it needs KC_* 153// Otherwise, it needs KC_*
154 [_WORKMAN] = LAYOUT_ergodox_pretty_wrapper( 154 [_WORKMAN] = LAYOUT_ergodox_pretty_wrapper(
155 // left hand 155 // left hand
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, 156 KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
157 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,
158 KC_C1R3, _________________WORKMAN_L2________________, _________________WORKMAN_R2________________, KC_QUOT, 158 KC_C1R3, _________________WORKMAN_L2________________, _________________WORKMAN_R2________________, KC_QUOT,
159 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,
160 LT(_SYMB,KC_GRV), ___________ERGODOX_BOTTOM_LEFT_____________, ___________ERGODOX_BOTTOM_RIGHT____________, TT(_SYMB), 160 KC_GRV, ___________ERGODOX_BOTTOM_LEFT_____________, ___________ERGODOX_BOTTOM_RIGHT____________, KC_CCCV,
161 __________________ERGODOX_THUMB_CLUSTER_____________________ 161 __________________ERGODOX_THUMB_CLUSTER_____________________
162 ), 162 ),
163 163
164// Reverts OSM(Shift) to normal Shifts. However, may not need since we fixed the issue with RDP (LOCAL RESOURCES) 164// Reverts OSM(Shift) to normal Shifts. However, may not need since we fixed the issue with RDP (LOCAL RESOURCES)
165 [_MODS] = LAYOUT_ergodox_pretty( 165 [_MODS] = LAYOUT_ergodox_pretty_wrapper(
166 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 166 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
167 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 167 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
168 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 168 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -173,37 +173,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
173 _______, _______, _______, _______, _______, _______ 173 _______, _______, _______, _______, _______, _______
174 ), 174 ),
175 175
176 /* Keymap 3: Symbol Layer
177*
178* ,--------------------------------------------------. ,--------------------------------------------------.
179* | ESC | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
180* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
181* | RESET | ! | @ | { | } | | | | | | + | 7 | 8 | 9 | * | F12 |
182* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
183* | MAKE | # | $ | ( | ) | ` |------| |------| - | 4 | 5 | 6 | / | PrtSc |
184* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
185* | VRSN | % | ^ | [ | ] | ~ | | | | NUM | 1 | 2 | 3 | = | PAUSE |
186* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
187* | LT0 | & | * | : | ; | | | 0 | NUM. | ENT | ENT |
188* `----------------------------------' `----------------------------------'
189* ,-------------. ,-------------.
190* | RGBM | RED | | OFF | SOLID|
191* ,------|------|------| |------+------+------.
192* | | | GREEN| | | | |
193* | RGB | RGB |------| |------| NUM0 | NUME |
194* | DARK |BRITE | BLUE | | | | |
195* `--------------------' `--------------------'
196*/
197 [_SYMB] = LAYOUT_ergodox_pretty(
198 EPRM, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_QWERTY, KC_QWERTY, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
199 KC_RST, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_COLEMAK, KC_WORKMAN, KC_PPLS, KC_KP_7, KC_KP_8, KC_KP_9, KC_PAST, KC_F12,
200 KC_MAKE, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRAVE, KC_PMNS, KC_KP_4, KC_KP_5, KC_KP_6, KC_PSLS, KC_PSCREEN,
201 VRSN, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_DVORAK, TG(_MODS), KC_NLCK, KC_KP_1, KC_KP_2, KC_KP_3, KC_PEQL, KC_PAUSE,
202 KC_TRNS, KC_AMPR, KC_ASTR, KC_COLN, KC_SCLN, KC_KP_0, KC_KP_0, KC_PDOT, KC_PENT, KC_TRNS,
203 RGB_SMOD, KC_RGB_T, KC_TRNS, KC_TRNS,
204 RGB_HUI, KC_TRNS,
205 RGB_M_R, RGB_M_SW, RGB_HUD, KC_PDOT, KC_KP_0, KC_PENT
206 ),
207 176
208/* Keymap 4: Customized Overwatch Layout 177/* Keymap 4: Customized Overwatch Layout
209 * 178 *
@@ -226,7 +195,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
226 * | | | H | | | | | 195 * | | | H | | | | |
227 * `--------------------' `--------------------' 196 * `--------------------' `--------------------'
228 */ 197 */
229 [_GAMEPAD] = LAYOUT_ergodox_pretty( 198 [_GAMEPAD] = LAYOUT_ergodox_pretty_wrapper(
230 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, 199 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,
231 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, 200 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,
232 KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, KC_I, KC_O, KC_NO, KC_NO, KC_NO, KC_NO, 201 KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, KC_I, KC_O, KC_NO, KC_NO, KC_NO, KC_NO,
@@ -258,7 +227,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
258 * | SHIFT| ALT | 0MAC | | | | | 227 * | SHIFT| ALT | 0MAC | | | | |
259 * `--------------------' `--------------------' 228 * `--------------------' `--------------------'
260 */ 229 */
261 [_DIABLO] = LAYOUT_ergodox_pretty( 230 [_DIABLO] = LAYOUT_ergodox_pretty_wrapper(
262 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, 231 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,
263 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, 232 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,
264 KC_Q, KC_1, KC_2, KC_3, KC_4, KC_G, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 233 KC_Q, KC_1, KC_2, KC_3, KC_4, KC_G, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
@@ -269,36 +238,37 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
269 SFT_T(KC_SPACE), ALT_T(KC_Q), KC_DIABLO_CLEAR, KC_PGDN, KC_DEL, KC_ENT 238 SFT_T(KC_SPACE), ALT_T(KC_Q), KC_DIABLO_CLEAR, KC_PGDN, KC_DEL, KC_ENT
270 ), 239 ),
271 240
272/* Keymap 4: Media and mouse keys 241 [_LOWER] = LAYOUT_ergodox_pretty_wrapper(
273 * 242 _______, _________________FUNC_LEFT_________________, _______, _______, _________________FUNC_RIGHT________________, KC_F11,
274 * ,--------------------------------------------------. ,--------------------------------------------------. 243 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
275 * | | | | | | | | | | | | | | | | 244 _______, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
276 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| 245 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
277 * | | | MsUp | | | | | | | | | | | | | 246 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
278 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| 247 _______, _______, _______, _______,
279 * | |MsLeft|MsDown|MsRght| | |------| |------| | | Acc0 | Acc1 | Acc2 | | 248 _______, _______,
280 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| 249 _______, _______, _______, _______, _______, _______
281 * | | Acc0 | Acc1 | Acc2 | | | | | | | Mute |VolDn |VolUp | | | 250 ),
282 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' 251
283 * | | | | | | | Play | Stop | | | | 252 [_RAISE] = LAYOUT_ergodox_pretty_wrapper(
284 * `----------------------------------' `----------------------------------' 253 _______, _________________FUNC_LEFT_________________, _______, _______, _________________FUNC_RIGHT________________, _______,
285 * ,-------------. ,-------------. 254 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
286 * | | | | | | 255 _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
287 * ,------|------|------| |------+------+------. 256 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RSFT,
288 * | | | MWUp | | | | | 257 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
289 * | Lclk | Rclk |------| |------| MBn4 | MBn5 | 258 _______, _______, _______, _______,
290 * | | | MWDn | | Mclk | | | 259 _______, _______,
291 * `--------------------' `--------------------' 260 _______, _______, _______, _______, _______, _______
292 */ 261 ),
293 [_MOUS] = LAYOUT_ergodox_pretty( 262
294 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, 263 [_ADJUST] = LAYOUT_ergodox_pretty_wrapper(
295 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, 264 KC_MAKE, _______, _______, _______, _______, _______, _______, _______, KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5, KC_RST,
296 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, 265 VRSN, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, EPRM,
297 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, 266 RGB_SMOD,RGB_HUI, CK_TOGG, AU_ON, AU_OFF, AG_NORM, AG_SWAP, KC_QWERTY, KC_COLEMAK, KC_DVORAK, KC_WORKMAN, TG(_MODS),
298 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 267 TG(_MODS),RGB_SMOD,RGB_HUD,RGB_SAD, RGB_VAD, KC_RGB_T,_______, _______, MG_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY,
299 KC_NO, KC_NO, KC_NO, KC_NO, 268 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
300 KC_WH_U, KC_NO, 269 _______, _______, _______, _______,
301 KC_BTN1, KC_BTN2, KC_WH_D, KC_BTN3, KC_BTN4, KC_BTN5 270 _______, _______,
271 _______, _______, _______, _______, _______, _______
302 ), 272 ),
303 273
304}; 274};
diff --git a/users/drashna/config.h b/users/drashna/config.h
index 0a59ad026..ef1860778 100644
--- a/users/drashna/config.h
+++ b/users/drashna/config.h
@@ -4,7 +4,6 @@
4 4
5#ifdef AUDIO_ENABLE 5#ifdef AUDIO_ENABLE
6#define AUDIO_CLICKY 6#define AUDIO_CLICKY
7#define AUDIO_CLICKY_ON
8#define STARTUP_SONG SONG(E1M1_DOOM) 7#define STARTUP_SONG SONG(E1M1_DOOM)
9#define GOODBYE_SONG SONG(SONIC_RING) 8#define GOODBYE_SONG SONG(SONIC_RING)
10#define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \ 9#define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
@@ -43,6 +42,8 @@
43#define IGNORE_MOD_TAP_INTERRUPT 42#define IGNORE_MOD_TAP_INTERRUPT
44#undef PERMISSIVE_HOLD 43#undef PERMISSIVE_HOLD
45#undef PREVENT_STUCK_MODIFIERS 44#undef PREVENT_STUCK_MODIFIERS
45#define TAPPING_FORCE_HOLD
46//#define RETRO_TAPPING
46 47
47#define FORCE_NKRO 48#define FORCE_NKRO
48 49
@@ -53,7 +54,7 @@
53#ifdef TAPPING_TERM 54#ifdef TAPPING_TERM
54#undef TAPPING_TERM 55#undef TAPPING_TERM
55#endif // TAPPING_TERM 56#endif // TAPPING_TERM
56#define TAPPING_TERM 176 57#define TAPPING_TERM 200
57 58
58 59
59// Disable action_get_macro and fn_actions, since we don't use these 60// Disable action_get_macro and fn_actions, since we don't use these
@@ -61,7 +62,7 @@
61#ifndef NO_DEBUG 62#ifndef NO_DEBUG
62#define NO_DEBUG 63#define NO_DEBUG
63#endif // !NO_DEBUG 64#endif // !NO_DEBUG
64#ifndef NO_PRINT 65#if !defined(NO_PRINT) && !defined(CONSOLE_ENABLE)
65#define NO_PRINT 66#define NO_PRINT
66#endif // !NO_PRINT 67#endif // !NO_PRINT
67#define NO_ACTION_MACRO 68#define NO_ACTION_MACRO
diff --git a/users/drashna/drashna.c b/users/drashna/drashna.c
index 86c16b826..6ce541bfb 100644
--- a/users/drashna/drashna.c
+++ b/users/drashna/drashna.c
@@ -38,10 +38,6 @@ float tone_paste[][2] = SONG(SCROLL_LOCK_OFF_SOUND);
38 38
39 39
40static uint16_t copy_paste_timer; 40static uint16_t copy_paste_timer;
41#ifdef RGBLIGHT_ENABLE
42bool rgb_layer_change = true;
43#endif
44
45userspace_config_t userspace_config; 41userspace_config_t userspace_config;
46 42
47// Helper Functions 43// Helper Functions
@@ -164,31 +160,42 @@ void led_set_keymap(uint8_t usb_led) {}
164// call the keymap's init function 160// call the keymap's init function
165void matrix_init_user(void) { 161void matrix_init_user(void) {
166 uint8_t default_layer = eeconfig_read_default_layer(); 162 uint8_t default_layer = eeconfig_read_default_layer();
163 userspace_config.raw = eeprom_read_byte(EECONFIG_USERSPACE);
167 164
168#ifdef RGBLIGHT_ENABLE 165#ifdef BOOTLOADER_CATERINA
169 rgblight_enable(); 166 DDRD &= ~(1<<5);
170#endif // RGBLIGHT_ENABLE 167 PORTD &= ~(1<<5);
171 168
172 if (default_layer & (1UL << _COLEMAK)) { 169 DDRB &= ~(1<<0);
173#ifdef RGBLIGHT_ENABLE 170 PORTB &= ~(1<<0);
174 rgblight_sethsv_magenta(); 171#endif
175#endif // RGBLIGHT_ENABLE 172
176 } else if (default_layer & (1UL << _DVORAK)) { 173 if (userspace_config.rgb_layer_change) {
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 174#ifdef RGBLIGHT_ENABLE
186 rgblight_sethsv_teal(); 175 rgblight_enable();
187#endif // RGBLIGHT_ENABLE 176#endif // RGBLIGHT_ENABLE
177 if (default_layer & (1UL << _COLEMAK)) {
178 #ifdef RGBLIGHT_ENABLE
179 rgblight_sethsv_magenta();
180 #endif // RGBLIGHT_ENABLE
181 } else if (default_layer & (1UL << _DVORAK)) {
182 #ifdef RGBLIGHT_ENABLE
183 rgblight_sethsv_green();
184 #endif // RGBLIGHT_ENABLE
185 } else if (default_layer & (1UL << _WORKMAN)) {
186 #ifdef RGBLIGHT_ENABLE
187 rgblight_sethsv_goldenrod();
188 #endif // RGBLIGHT_ENABLE
189 } else {
190 #ifdef RGBLIGHT_ENABLE
191 rgblight_sethsv_teal();
192 #endif // RGBLIGHT_ENABLE
193 }
188 } 194 }
189 195
190 userspace_config.raw = eeprom_read_byte(EECONFIG_USERSPACE); 196#ifdef AUDIO_CLICKY
191 clicky_enable = userspace_config.clicky_enable; 197 clicky_enable = userspace_config.clicky_enable;
198#endif
192 199
193#if ( defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE) ) 200#if ( defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE) )
194 set_unicode_input_mode(UC_WINC); 201 set_unicode_input_mode(UC_WINC);
@@ -364,8 +371,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
364 case KC_RGB_T: // This allows me to use underglow as layer indication, or as normal 371 case KC_RGB_T: // This allows me to use underglow as layer indication, or as normal
365#ifdef RGBLIGHT_ENABLE 372#ifdef RGBLIGHT_ENABLE
366 if (record->event.pressed) { 373 if (record->event.pressed) {
367 rgb_layer_change = !rgb_layer_change; 374 userspace_config.rgb_layer_change ^= 1;
368 if (rgb_layer_change) { 375 eeprom_update_byte(EECONFIG_USERSPACE, userspace_config.raw);
376 if (userspace_config.rgb_layer_change) {
369 layer_state_set(layer_state); // This is needed to immediately set the layer color (looks better) 377 layer_state_set(layer_state); // This is needed to immediately set the layer color (looks better)
370 } 378 }
371 } 379 }
@@ -374,7 +382,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
374#ifdef RGBLIGHT_ENABLE 382#ifdef RGBLIGHT_ENABLE
375 case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // quantum_keycodes.h L400 for definitions 383 case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // quantum_keycodes.h L400 for definitions
376 if (record->event.pressed) { //This disables layer indication, as it's assumed that if you're changing this ... you want that disabled 384 if (record->event.pressed) { //This disables layer indication, as it's assumed that if you're changing this ... you want that disabled
377 rgb_layer_change = false; 385 userspace_config.rgb_layer_change = false;
386 eeprom_update_byte(EECONFIG_USERSPACE, userspace_config.raw);
378 } 387 }
379 return true; break; 388 return true; break;
380#endif // RGBLIGHT_ENABLE 389#endif // RGBLIGHT_ENABLE
@@ -403,8 +412,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
403 return false; 412 return false;
404 break; 413 break;
405 case CLICKY_TOGGLE: 414 case CLICKY_TOGGLE:
415#ifdef AUDIO_CLICKY
406 userspace_config.clicky_enable = clicky_enable; 416 userspace_config.clicky_enable = clicky_enable;
407 eeprom_update_byte(EECONFIG_USERSPACE, userspace_config.raw); 417 eeprom_update_byte(EECONFIG_USERSPACE, userspace_config.raw);
418#endif
408 break; 419 break;
409#ifdef UNICODE_ENABLE 420#ifdef UNICODE_ENABLE
410 case UC_FLIP: // (╯°□°)╯ ︵ ┻━┻ 421 case UC_FLIP: // (╯°□°)╯ ︵ ┻━┻
@@ -445,123 +456,104 @@ uint32_t layer_state_set_user(uint32_t state) {
445 state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST); 456 state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
446 457
447 switch (biton32(state)) { 458 switch (biton32(state)) {
448 case _NAV:
449#ifdef RGBLIGHT_ENABLE
450 if (rgb_layer_change) {
451 rgblight_sethsv_blue();
452 rgblight_mode(1);
453 }
454#endif // RGBLIGHT_ENABLE
455 break;
456 case _SYMB:
457#ifdef RGBLIGHT_ENABLE
458 if (rgb_layer_change) {
459 rgblight_sethsv_blue();
460 rgblight_mode(2);
461 }
462#endif // RGBLIGHT_ENABLE
463 break;
464 case _MOUS:
465#ifdef RGBLIGHT_ENABLE
466 if (rgb_layer_change) {
467 rgblight_sethsv_yellow();
468 rgblight_mode(1);
469 }
470#endif // RGBLIGHT_ENABLE
471 break;
472 case _MACROS: 459 case _MACROS:
473#ifdef RGBLIGHT_ENABLE 460#ifdef RGBLIGHT_ENABLE
474 if (rgb_layer_change) { 461 if (userspace_config.rgb_layer_change) {
475 rgblight_sethsv_orange(); 462 rgblight_sethsv_orange();
476 userspace_config.is_overwatch ? rgblight_mode(17) : rgblight_mode(18); 463 userspace_config.is_overwatch ? rgblight_mode(17) : rgblight_mode(18);
477 } 464 }
478#endif // RGBLIGHT_ENABLE 465#endif // RGBLIGHT_ENABLE
466
479 break; 467 break;
480 case _MEDIA: 468 case _MEDIA:
481#ifdef RGBLIGHT_ENABLE 469#ifdef RGBLIGHT_ENABLE
482 if (rgb_layer_change) { 470 if (userspace_config.rgb_layer_change) {
483 rgblight_sethsv_chartreuse(); 471 rgblight_sethsv_chartreuse();
484 rgblight_mode(22); 472 rgblight_mode(22);
485 } 473 }
486#endif // RGBLIGHT_ENABLE 474#endif // RGBLIGHT_ENABLE
475
487 break; 476 break;
488 case _GAMEPAD: 477 case _GAMEPAD:
489#ifdef RGBLIGHT_ENABLE 478#ifdef RGBLIGHT_ENABLE
490 if (rgb_layer_change) { 479 if (userspace_config.rgb_layer_change) {
491 rgblight_sethsv_orange(); 480 rgblight_sethsv_orange();
492 rgblight_mode(17); 481 rgblight_mode(17);
493 } 482 }
494#endif // RGBLIGHT_ENABLE 483#endif // RGBLIGHT_ENABLE
484
495 break; 485 break;
496 case _DIABLO: 486 case _DIABLO:
497#ifdef RGBLIGHT_ENABLE 487#ifdef RGBLIGHT_ENABLE
498 if (rgb_layer_change) { 488 if (userspace_config.rgb_layer_change) {
499 rgblight_sethsv_red(); 489 rgblight_sethsv_red();
500 rgblight_mode(5); 490 rgblight_mode(5);
501 } 491 }
502#endif // RGBLIGHT_ENABLE 492#endif // RGBLIGHT_ENABLE
493
503 break; 494 break;
504 case _RAISE: 495 case _RAISE:
505#ifdef RGBLIGHT_ENABLE 496#ifdef RGBLIGHT_ENABLE
506 if (rgb_layer_change) { 497 if (userspace_config.rgb_layer_change) {
507 rgblight_sethsv_yellow(); 498 rgblight_sethsv_yellow();
508 rgblight_mode(5); 499 rgblight_mode(5);
509 } 500 }
510#endif // RGBLIGHT_ENABLE 501#endif // RGBLIGHT_ENABLE
502
511 break; 503 break;
512 case _LOWER: 504 case _LOWER:
513#ifdef RGBLIGHT_ENABLE 505#ifdef RGBLIGHT_ENABLE
514 if (rgb_layer_change) { 506 if (userspace_config.rgb_layer_change) {
515 rgblight_sethsv_orange(); 507 rgblight_sethsv_orange();
516 rgblight_mode(5); 508 rgblight_mode(5);
517 } 509 }
518#endif // RGBLIGHT_ENABLE 510#endif // RGBLIGHT_ENABLE
511
519 break; 512 break;
520 case _ADJUST: 513 case _ADJUST:
521#ifdef RGBLIGHT_ENABLE 514#ifdef RGBLIGHT_ENABLE
522 if (rgb_layer_change) { 515 if (userspace_config.rgb_layer_change) {
523 rgblight_sethsv_red(); 516 rgblight_sethsv_red();
524 rgblight_mode(23); 517 rgblight_mode(23);
525 } 518 }
526#endif // RGBLIGHT_ENABLE 519#endif // RGBLIGHT_ENABLE
527 break; 520
528 case _COVECUBE:
529#ifdef RGBLIGHT_ENABLE
530 if (rgb_layer_change) {
531 rgblight_sethsv_green();
532 rgblight_mode(2);
533 }
534#endif // RGBLIGHT_ENABLE
535 break; 521 break;
536 default: // for any other layers, or the default layer 522 default: // for any other layers, or the default layer
537 if (default_layer & (1UL << _COLEMAK)) { 523 if (default_layer & (1UL << _COLEMAK)) {
538#ifdef RGBLIGHT_ENABLE 524#ifdef RGBLIGHT_ENABLE
539 if (rgb_layer_change) { rgblight_sethsv_magenta(); } 525 if (userspace_config.rgb_layer_change) { rgblight_sethsv_magenta(); }
540#endif // RGBLIGHT_ENABLE 526#endif // RGBLIGHT_ENABLE
527
541 } 528 }
542 else if (default_layer & (1UL << _DVORAK)) { 529 else if (default_layer & (1UL << _DVORAK)) {
543#ifdef RGBLIGHT_ENABLE 530#ifdef RGBLIGHT_ENABLE
544 if (rgb_layer_change) { rgblight_sethsv_green(); } 531 if (userspace_config.rgb_layer_change) { rgblight_sethsv_green(); }
545#endif // RGBLIGHT_ENABLE 532#endif // RGBLIGHT_ENABLE
533
546 } 534 }
547 else if (default_layer & (1UL << _WORKMAN)) { 535 else if (default_layer & (1UL << _WORKMAN)) {
548#ifdef RGBLIGHT_ENABLE 536#ifdef RGBLIGHT_ENABLE
549 if (rgb_layer_change) { rgblight_sethsv_goldenrod(); } 537 if (userspace_config.rgb_layer_change) { rgblight_sethsv_goldenrod(); }
550#endif // RGBLIGHT_ENABLE 538#endif // RGBLIGHT_ENABLE
539
551 } 540 }
552 else { 541 else {
553#ifdef RGBLIGHT_ENABLE 542#ifdef RGBLIGHT_ENABLE
554 if (rgb_layer_change) { rgblight_sethsv_teal(); } 543 if (userspace_config.rgb_layer_change) { rgblight_sethsv_teal(); }
555#endif // RGBLIGHT_ENABLE 544#endif // RGBLIGHT_ENABLE
545
556 } 546 }
557 if (biton32(state) == _MODS) { // If the non-OSM layer is enabled, then breathe 547 if (biton32(state) == _MODS) { // If the non-OSM layer is enabled, then breathe
558#ifdef RGBLIGHT_ENABLE 548#ifdef RGBLIGHT_ENABLE
559 if (rgb_layer_change) { rgblight_mode(2); } 549 if (userspace_config.rgb_layer_change) { rgblight_mode(2); }
560#endif // RGBLIGHT_ENABLE 550#endif // RGBLIGHT_ENABLE
551
561 } else { // otherwise, stay solid 552 } else { // otherwise, stay solid
562#ifdef RGBLIGHT_ENABLE 553#ifdef RGBLIGHT_ENABLE
563 if (rgb_layer_change) { rgblight_mode(1); } 554 if (userspace_config.rgb_layer_change) { rgblight_mode(1); }
564#endif // RGBLIGHT_ENABLE 555#endif // RGBLIGHT_ENABLE
556
565 } 557 }
566 break; 558 break;
567 } 559 }
diff --git a/users/drashna/drashna.h b/users/drashna/drashna.h
index 5ef25333b..87a72f528 100644
--- a/users/drashna/drashna.h
+++ b/users/drashna/drashna.h
@@ -27,12 +27,8 @@ enum userspace_layers {
27 _DVORAK, 27 _DVORAK,
28 _WORKMAN, 28 _WORKMAN,
29 _MODS, 29 _MODS,
30 _NAV,
31 _COVECUBE,
32 _SYMB,
33 _GAMEPAD, 30 _GAMEPAD,
34 _DIABLO, 31 _DIABLO,
35 _MOUS,
36 _MACROS, 32 _MACROS,
37 _MEDIA, 33 _MEDIA,
38 _LOWER, 34 _LOWER,
@@ -49,7 +45,6 @@ enum userspace_layers {
49// RGB color codes are no longer located here anymore. Instead, you will want to 45// 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 46// head to https://github.com/qmk/qmk_firmware/blob/master/quantum/rgblight_list.h
51 47
52extern bool rgb_layer_change;
53extern bool clicky_enable; 48extern bool clicky_enable;
54 49
55#ifdef RGBLIGHT_ENABLE 50#ifdef RGBLIGHT_ENABLE
@@ -59,10 +54,11 @@ void rgblight_sethsv_default_helper(uint8_t index);
59#define EECONFIG_USERSPACE (uint8_t *)20 54#define EECONFIG_USERSPACE (uint8_t *)20
60 55
61typedef union { 56typedef union {
62 uint32_t raw; 57 uint8_t raw;
63 struct { 58 struct {
64 bool clicky_enable :1; 59 bool clicky_enable :1;
65 bool is_overwatch :1; 60 bool rgb_layer_change :1;
61 bool is_overwatch :1;
66 }; 62 };
67} userspace_config_t; 63} userspace_config_t;
68 64
@@ -166,10 +162,10 @@ enum {
166#define LAYOUT KEYMAP 162#define LAYOUT KEYMAP
167#endif 163#endif
168 164
169#define LAYOUT_ergodox_wrapper(...) LAYOUT_ergodox(__VA_ARGS__) 165#define LAYOUT_ergodox_wrapper(...) LAYOUT_ergodox(__VA_ARGS__)
170#define LAYOUT_ergodox_pretty_wrapper(...) LAYOUT_ergodox_pretty(__VA_ARGS__) 166#define LAYOUT_ergodox_pretty_wrapper(...) LAYOUT_ergodox_pretty(__VA_ARGS__)
171#define KEYMAP_wrapper(...) LAYOUT(__VA_ARGS__) 167#define KEYMAP_wrapper(...) LAYOUT(__VA_ARGS__)
172#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) 168#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
173 169
174 170
175// Blocks for each of the four major keyboard layouts 171// Blocks for each of the four major keyboard layouts
@@ -236,6 +232,8 @@ enum {
236 232
237#define ________________NUMBER_LEFT________________ KC_1, KC_2, KC_3, KC_4, KC_5 233#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 234#define ________________NUMBER_RIGHT_______________ KC_6, KC_7, KC_8, KC_9, KC_0
235#define _________________FUNC_LEFT_________________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5
236#define _________________FUNC_RIGHT________________ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10
239 237
240// Since we have 4 default layouts (QWERTY, DVORAK, COLEMAK and WORKMAN), 238// Since we have 4 default layouts (QWERTY, DVORAK, COLEMAK and WORKMAN),
241// this allows us to quickly modify the bottom row for all of the layouts 239// this allows us to quickly modify the bottom row for all of the layouts
@@ -245,9 +243,9 @@ enum {
245#define ___________ERGODOX_BOTTOM_RIGHT____________ KC_LEFT, KC_DOWN, KC_UP, KC_RGHT 243#define ___________ERGODOX_BOTTOM_RIGHT____________ KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
246 244
247 245
248#define __________________ERGODOX_THUMB_CLUSTER_____________________ ALT_T(KC_APP), KC_LGUI, KC_RGUI, CTL_T(KC_ESCAPE), \ 246#define __________________ERGODOX_THUMB_CLUSTER_____________________ ALT_T(KC_APP), KC_LGUI, KC_RGUI, CTL_T(KC_ESCAPE), \
249 KC_HOME, KC_PGUP, \ 247 KC_HOME, KC_PGUP, \
250 KC_SPACE,KC_BSPC, KC_END, KC_PGDN, KC_DEL, KC_ENTER 248 LT(_LOWER, KC_SPACE),KC_BSPC, KC_END, KC_PGDN, KC_DEL, LT(_RAISE, KC_ENTER)
251 249
252 250
253#endif // !USERSPACE 251#endif // !USERSPACE
diff --git a/users/drashna/readme.md b/users/drashna/readme.md
index 79758e7e5..ddf24b24f 100644
--- a/users/drashna/readme.md
+++ b/users/drashna/readme.md
@@ -162,7 +162,7 @@ This tells us where in the EEPROM that the data structure is located, and this s
162 162
163```c 163```c
164typedef union { 164typedef union {
165 uint32_t raw; 165 uint8_t raw;
166 struct { 166 struct {
167 bool clicky_enable :1; 167 bool clicky_enable :1;
168 bool is_overwatch :1; 168 bool is_overwatch :1;
@@ -174,3 +174,23 @@ Then, in your C file, you want to add: `userspace_config_t userspace_config;`, a
174From there, you'd want to use the data structure (such as `userspace_config.is_overwatch`) when you want to check this value. 174From there, you'd want to use the data structure (such as `userspace_config.is_overwatch`) when you want to check this value.
175 175
176And 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. 176And 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.
177
178
179Pro Micro Hacking
180-----------------
181
182Well, you can get the QMK DFU bootloader working on the ProMicro. But you need to change fuses.
183
184What worked to get into the firmware properly was:
185
186```
187Low: 0x5E High: 0x99 Extended: 0xF3 Lock: 0xFF
188```
189
190But some of the columns and rows didn't work, like the pin mapping was wrong. Even when setting the bootloader settings.
191
192 This is here for future reference. And the default fuse settings I believe were:
193
194```
195Low: 0xFF High: 0xD8 Extended: 0xC3 Lock: 0x3F
196```
diff --git a/users/drashna/rules.mk b/users/drashna/rules.mk
index 123c0cc70..e2c5a2995 100644
--- a/users/drashna/rules.mk
+++ b/users/drashna/rules.mk
@@ -5,3 +5,7 @@ EXTRAFLAGS += -flto
5ifeq ($(strip $(NO_SECRETS)), yes) 5ifeq ($(strip $(NO_SECRETS)), yes)
6 OPT_DEFS += -DNO_SECRETS 6 OPT_DEFS += -DNO_SECRETS
7endif 7endif
8
9ifeq ($(strip $(INDICATOR_LIGHTS)), yes)
10 OPT_DEFS += -DINDICATOR_LIGHTS
11endif