aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordrashna <drashna@live.com>2017-10-10 10:11:05 -0700
committerJack Humbert <jack.humb@gmail.com>2017-10-10 07:11:05 -1000
commite0e80c0dc1be961999617a9eb0e1ae0f7988fae9 (patch)
tree021baf7d1950e4ccbc2d29cbb82d1e399645b2e5
parent34084b4ee63458789a3b84a956024291e404275b (diff)
downloadqmk_firmware-e0e80c0dc1be961999617a9eb0e1ae0f7988fae9.tar.gz
qmk_firmware-e0e80c0dc1be961999617a9eb0e1ae0f7988fae9.zip
Cleanup of my keymaps (#1802)
* Add woodpad * Cleanup * Remove misc layouts for woodpad * Move woodpad to handwired * Updated RGB Underglow info * Cleanup macros * Fix odd merge issue * Tweaked RGB lighting stuff * Start to merge orthodox/ergodox keymaps (persistant layers) * Add forced NKRO * Added Colemak and Dvorak layers to default orthodox keymap * Added default layer (qwerty/colemak/dvorak) detection to RGB Underglow
-rw-r--r--keyboards/ergodox_ez/keymaps/drashna-custom/config.h15
-rw-r--r--keyboards/ergodox_ez/keymaps/drashna-custom/keymap.c127
-rw-r--r--keyboards/handwired/woodpad/keymaps/drashna/keymap.c4
-rw-r--r--keyboards/orthodox/keymaps/default/keymap.c12
-rw-r--r--keyboards/orthodox/keymaps/drashna/config.h20
-rw-r--r--keyboards/orthodox/keymaps/drashna/keymap.c78
6 files changed, 215 insertions, 41 deletions
diff --git a/keyboards/ergodox_ez/keymaps/drashna-custom/config.h b/keyboards/ergodox_ez/keymaps/drashna-custom/config.h
index d2878547d..f4775eeac 100644
--- a/keyboards/ergodox_ez/keymaps/drashna-custom/config.h
+++ b/keyboards/ergodox_ez/keymaps/drashna-custom/config.h
@@ -1,4 +1,5 @@
1 1#ifndef CONFIG_USER_H
2#define CONFIG_USER_H
2#include "../../config.h" 3#include "../../config.h"
3 4
4 5
@@ -7,8 +8,16 @@
7#ifdef RGBLIGHT_ENABLE 8#ifdef RGBLIGHT_ENABLE
8#undef RGBLIGHT_SAT_STEP 9#undef RGBLIGHT_SAT_STEP
9#define RGBLIGHT_SAT_STEP 12 10#define RGBLIGHT_SAT_STEP 12
10#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 3 11#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 7
11#define RGBLIGHT_EFFECT_SNAKE_LENGTH 3 12#define RGBLIGHT_EFFECT_SNAKE_LENGTH 7
12#define RGBLIGHT_EFFECT_BREATHE_CENTER 1 13#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
13#endif // RGBLIGHT_ENABLE 14#endif // RGBLIGHT_ENABLE
15
14#define FORCE_NKRO 16#define FORCE_NKRO
17#ifdef FORCE_NKRO
18#define NKRO_EPSIZE 32
19#endif
20
21#define PERMISSIVE_HOLD
22
23#endif \ No newline at end of file
diff --git a/keyboards/ergodox_ez/keymaps/drashna-custom/keymap.c b/keyboards/ergodox_ez/keymaps/drashna-custom/keymap.c
index 2df8cbf22..4223bc2d1 100644
--- a/keyboards/ergodox_ez/keymaps/drashna-custom/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/drashna-custom/keymap.c
@@ -25,7 +25,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
25#include "keymap_nordic.h" 25#include "keymap_nordic.h"
26 26
27// Define layer names 27// Define layer names
28#define BASE 0 28#define QWERTY 0
29#define COLEMAK 1 29#define COLEMAK 1
30#define DVORAK 2 30#define DVORAK 2
31#define SYMB 3 31#define SYMB 3
@@ -33,6 +33,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
33#define DIABLO 5 33#define DIABLO 5
34#define MOUS 6 34#define MOUS 6
35 35
36
37
36//define modifiers 38//define modifiers
37#define MODS_SHIFT_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) 39#define MODS_SHIFT_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
38#define MODS_CTRL_MASK (MOD_BIT(KC_LCTL)|MOD_BIT(KC_RCTRL)) 40#define MODS_CTRL_MASK (MOD_BIT(KC_LCTL)|MOD_BIT(KC_RCTRL))
@@ -45,9 +47,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
45//define layer change stuff for underglow indicator 47//define layer change stuff for underglow indicator
46bool skip_leds = false; 48bool skip_leds = false;
47 49
50#define rgblight_set_blue rgblight_sethsv (0xFF, 0xFF, 0xFF);
51#define rgblight_set_red rgblight_sethsv(0x00, 0xFF, 0xFF);
52#define rgblight_set_green rgblight_sethsv (0x78, 0xFF, 0xFF);
53#define rgblight_set_orange rgblight_sethsv (0x1E, 0xFF, 0xFF);
54#define rgblight_set_teal rgblight_sethsv (0xC3, 0xFF, 0xFF);
55#define rgblight_set_magenta rgblight_sethsv (0x12C, 0xFF, 0xFF);
56#define rgblight_set_urine rgblight_sethsv (0x3C, 0xFF, 0xFF);
48//This is both for underglow, and Diablo 3 macros 57//This is both for underglow, and Diablo 3 macros
49bool has_layer_changed = false; 58
50static uint8_t current_layer; 59static uint8_t current_layer = 0;
51 60
52//define diablo macro timer variables 61//define diablo macro timer variables
53static uint16_t diablo_timer[4]; 62static uint16_t diablo_timer[4];
@@ -70,7 +79,10 @@ enum custom_keycodes {
70 RGB_FF0000, 79 RGB_FF0000,
71 RGB_800080, 80 RGB_800080,
72 RGB_00FF90, 81 RGB_00FF90,
73 KC_DIABLO_CLEAR 82 KC_DIABLO_CLEAR,
83 KC_QWERTY,
84 KC_COLEMAK,
85 KC_DVORAK
74}; 86};
75 87
76#ifdef TAP_DANCE_ENABLE 88#ifdef TAP_DANCE_ENABLE
@@ -206,7 +218,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
206 * | | | End | | PgDn | | | 218 * | | | End | | PgDn | | |
207 * `---------------------' `---------------------' 219 * `---------------------' `---------------------'
208 */ 220 */
209 [BASE] = KEYMAP( 221 [QWERTY] = KEYMAP(
210 KC_EQUAL, KC_1, KC_2, KC_3, KC_4, KC_5, TG(MOUS), 222 KC_EQUAL, KC_1, KC_2, KC_3, KC_4, KC_5, TG(MOUS),
211 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(DIABLO), 223 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(DIABLO),
212 KC_BSPACE, KC_A, KC_S, KC_D, KC_F, KC_G, 224 KC_BSPACE, KC_A, KC_S, KC_D, KC_F, KC_G,
@@ -261,9 +273,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
261 KC_SPC,KC_BSPC,KC_END, 273 KC_SPC,KC_BSPC,KC_END,
262 // right hand 274 // right hand
263 KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, 275 KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
264 KC_NO, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS, 276 TG(DVORAK), KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS,
265 KC_H, KC_N, KC_E, KC_I, LT(MOUS, KC_O), KC_QUOTE, 277 KC_H, KC_N, KC_E, KC_I, LT(MOUS, KC_O), KC_QUOTE,
266 KC_TRNS,KC_K,KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLASH),KC_RSHIFT, 278 TG(COLEMAK), KC_K, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLASH),KC_RSHIFT,
267 KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_FN1, 279 KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_FN1,
268 KC_LALT, CTL_T(KC_ESC), 280 KC_LALT, CTL_T(KC_ESC),
269 KC_PGUP, 281 KC_PGUP,
@@ -304,9 +316,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
304 KC_SPC,KC_BSPC,KC_END, 316 KC_SPC,KC_BSPC,KC_END,
305 // right hand 317 // right hand
306 KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, 318 KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS,
307 KC_TRNS, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, 319 TG(DVORAK), KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH,
308 KC_D, KC_H, KC_T, KC_N, LT(MOUS, KC_S), KC_MINS, 320 KC_D, KC_H, KC_T, KC_N, LT(MOUS, KC_S), KC_MINS,
309 KC_NO,KC_B, KC_M, KC_W, KC_V, CTL_T(KC_Z), KC_RSHIFT, 321 TG(COLEMAK), KC_B, KC_M, KC_W, KC_V, CTL_T(KC_Z), KC_RSHIFT,
310 KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_FN1, 322 KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_FN1,
311 KC_LALT, CTL_T(KC_ESC), 323 KC_LALT, CTL_T(KC_ESC),
312 KC_PGUP, 324 KC_PGUP,
@@ -344,10 +356,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
344 KC_TRNS, 356 KC_TRNS,
345 KC_TRNS, KC_TRNS, KC_TRNS, 357 KC_TRNS, KC_TRNS, KC_TRNS,
346 358
347 KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, 359 KC_QWERTY, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
348 KC_TRNS, KC_KP_PLUS, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_ASTERISK, KC_F12, 360 KC_DVORAK, KC_KP_PLUS, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_ASTERISK, KC_F12,
349 KC_KP_MINUS, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_SLASH,KC_PSCREEN, 361 KC_KP_MINUS, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_SLASH,KC_PSCREEN,
350 KC_TRNS, KC_NUMLOCK, KC_KP_1, KC_KP_2, KC_KP_3, KC_EQUAL, KC_PAUSE, 362 KC_COLEMAK, KC_NUMLOCK, KC_KP_1, KC_KP_2, KC_KP_3, KC_EQUAL, KC_PAUSE,
351 KC_KP_0, KC_KP_0, KC_KP_DOT, KC_KP_ENTER, KC_TRNS, 363 KC_KP_0, KC_KP_0, KC_KP_DOT, KC_KP_ENTER, KC_TRNS,
352 RGB_TOG, RGB_SLD, 364 RGB_TOG, RGB_SLD,
353 KC_NO, 365 KC_NO,
@@ -357,13 +369,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
357/* Keymap 4: Customized Overwatch Layout 369/* Keymap 4: Customized Overwatch Layout
358 * 370 *
359 * ,--------------------------------------------------. ,--------------------------------------------------. 371 * ,--------------------------------------------------. ,--------------------------------------------------.
360 * | ESC | SALT | MORE | GG | SYMM | DOOM | HARD | | | F9 | F10 | F11 | F12 | | | 372 * | ESC | | | | | | | | | F9 | F10 | F11 | F12 | | |
361 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| 373 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
362 * | F1 | K | Q | W | E | R | T | | | | | | | | | 374 * | F1 | K | Q | W | E | R | T | | | | | | | | |
363 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| 375 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
364 * | TAB | G | A | S | D | F |------| |------| | | | | | | 376 * | TAB | G | A | S | D | F |------| |------| | | | | | |
365 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| 377 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
366 * | LCTR | LSHFT| Z | X | C | M | | | | | | | | | | 378 * | LCTR | LSHFT| Z | X | C | V | | | | N | M | | | | |
367 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' 379 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
368 * | J | U | I | Y | T | | | | | | | 380 * | J | U | I | Y | T | | | | | | |
369 * `----------------------------------' `----------------------------------' 381 * `----------------------------------' `----------------------------------'
@@ -379,7 +391,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
379 KC_ESCAPE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 391 KC_ESCAPE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
380 KC_F1, KC_K, KC_Q, KC_W, KC_E, KC_R, KC_T, 392 KC_F1, KC_K, KC_Q, KC_W, KC_E, KC_R, KC_T,
381 KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, 393 KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F,
382 KC_LCTL, KC_LSHIFT, KC_Z, KC_X, KC_C, KC_M, KC_TRNS, 394 KC_LCTL, KC_LSHIFT, KC_Z, KC_X, KC_C, KC_V, KC_TRNS,
383 KC_G, KC_U, KC_I, KC_Y, KC_T, 395 KC_G, KC_U, KC_I, KC_Y, KC_T,
384 KC_O, KC_P, 396 KC_O, KC_P,
385 KC_LGUI, 397 KC_LGUI,
@@ -388,11 +400,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
388 KC_NO, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, 400 KC_NO, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO,
389 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 401 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
390 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 402 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
391 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 403 KC_NO, KC_N, KC_M, KC_NO, KC_NO, KC_NO, KC_NO,
392 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 404 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
393 KC_NO, KC_NO, 405 KC_NO, KC_NO,
394 KC_NO, 406 KC_NO,
395 KC_NO, KC_NO, KC_ENTER 407 KC_PGDOWN, KC_DELETE, KC_ENTER
396 ), 408 ),
397 409
398/* Keymap 3: 410/* Keymap 3:
@@ -508,6 +520,11 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
508 return MACRO_NONE; 520 return MACRO_NONE;
509}; 521};
510 522
523void persistent_default_layer_set(uint16_t default_layer) {
524 eeconfig_update_default_layer(default_layer);
525 default_layer_set(default_layer);
526}
527
511 528
512bool process_record_user(uint16_t keycode, keyrecord_t *record) { 529bool process_record_user(uint16_t keycode, keyrecord_t *record) {
513 switch (keycode) { 530 switch (keycode) {
@@ -595,7 +612,25 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
595 } 612 }
596 return false; 613 return false;
597 break; 614 break;
598 615 case KC_QWERTY:
616 if (record->event.pressed) {
617 persistent_default_layer_set(1UL << QWERTY);
618 }
619 return false;
620 break;
621 case KC_COLEMAK:
622 if (record->event.pressed) {
623 persistent_default_layer_set(1UL << COLEMAK);
624 }
625 return false;
626 break;
627 case KC_DVORAK:
628 if (record->event.pressed) {
629 persistent_default_layer_set(1UL << DVORAK);
630 }
631 return false;
632 break;
633
599 } 634 }
600 return true; 635 return true;
601} 636}
@@ -636,7 +671,7 @@ void run_diablo_macro_check(void) {
636} 671}
637 672
638void matrix_init_user(void) { // Runs boot tasks for keyboard 673void matrix_init_user(void) { // Runs boot tasks for keyboard
639 has_layer_changed = true; 674
640}; 675};
641 676
642 677
@@ -644,7 +679,11 @@ void matrix_init_user(void) { // Runs boot tasks for keyboard
644void matrix_scan_user(void) { // runs frequently to update info 679void matrix_scan_user(void) { // runs frequently to update info
645 uint8_t modifiders = get_mods(); 680 uint8_t modifiders = get_mods();
646 uint8_t layer = biton32(layer_state); 681 uint8_t layer = biton32(layer_state);
647 682 bool l_dvorak = false;
683 bool l_colemak = false;
684 static bool has_layer_changed = true;
685
686
648 if (!skip_leds) { 687 if (!skip_leds) {
649 ergodox_board_led_off(); 688 ergodox_board_led_off();
650 ergodox_right_led_1_off(); 689 ergodox_right_led_1_off();
@@ -665,48 +704,60 @@ void matrix_scan_user(void) { // runs frequently to update info
665 } 704 }
666 705
667 } 706 }
707 if (layer != current_layer) {
708 has_layer_changed = true;
709 current_layer = layer;
710 }
668 // Check layer, and apply color if its changed since last check 711 // Check layer, and apply color if its changed since last check
669 if (has_layer_changed) { 712 if (has_layer_changed) {
713 uint8_t default_layer = 0;
714 default_layer = eeconfig_read_default_layer();
715
716 if (default_layer & (1UL << DVORAK)) {
717 l_dvorak = true;
718 }
719 else if (default_layer & (1UL << COLEMAK)) {
720 l_colemak = true;
721 }
670 switch (layer) { 722 switch (layer) {
671 case SYMB: 723 case SYMB:
672 rgblight_sethsv (255,255,255); 724 rgblight_set_blue;
673 rgblight_mode(23); 725 rgblight_mode(2);
674 break; 726 break;
675 case OVERWATCH: 727 case OVERWATCH:
676 rgblight_sethsv (30,255,255); 728 rgblight_set_orange;
677 rgblight_mode(17); 729 rgblight_mode(17);
678 break; 730 break;
679 case DIABLO: 731 case DIABLO:
680 rgblight_sethsv (0,255,255); 732 rgblight_set_red;
681 rgblight_mode(5); 733 rgblight_mode(5);
682 break; 734 break;
683 case MOUS: 735 case MOUS:
684 rgblight_sethsv (60,255,255); 736 rgblight_set_urine;
685 break; 737 break;
686 case COLEMAK: 738 case COLEMAK:
687 rgblight_sethsv (300,255,255); 739 rgblight_set_magenta;
688 break; 740 break;
689 case DVORAK: 741 case DVORAK:
690 rgblight_sethsv (120,255,255); 742 rgblight_set_green;
691 break; 743 break;
692 case 7: 744 case 7:
693 rgblight_sethsv (255,255,255); 745 rgblight_sethsv (255,255,255);
694 break; 746 break;
695 default: 747 default:
696 rgblight_sethsv (195,255,255); 748 if (l_colemak) {
749 rgblight_set_magenta;
750 }
751 else if (l_dvorak) {
752 rgblight_set_green;
753 }
754 else {
755 rgblight_set_teal;
756 }
697 rgblight_mode(1); 757 rgblight_mode(1);
698 break; 758 break;
699 } 759 }
700 }
701
702 // Update layer status at the end, so this sets the default color
703 // rather than relying on the init, which was unreliably...
704 // Probably due to a timing issue, but this requires no additional code
705 if (current_layer == layer) {
706 has_layer_changed = false; 760 has_layer_changed = false;
707 } else {
708 has_layer_changed = true;
709 current_layer = layer;
710 } 761 }
711 762
712 // Run Diablo 3 macro checking code. 763 // Run Diablo 3 macro checking code.
diff --git a/keyboards/handwired/woodpad/keymaps/drashna/keymap.c b/keyboards/handwired/woodpad/keymaps/drashna/keymap.c
index a33a7ab46..f30f3623d 100644
--- a/keyboards/handwired/woodpad/keymaps/drashna/keymap.c
+++ b/keyboards/handwired/woodpad/keymaps/drashna/keymap.c
@@ -369,6 +369,10 @@ void matrix_init_user(void) {
369 // set Numlock LED to output and low 369 // set Numlock LED to output and low
370 DDRF |= (1<<7); 370 DDRF |= (1<<7);
371 PORTF &= ~(1<<7); 371 PORTF &= ~(1<<7);
372 if (!(host_keyboard_leds() & (1 << USB_LED_NUM_LOCK)) ){
373 register_code(KC_NUMLOCK);
374 unregister_code(KC_NUMLOCK);
375 }
372} 376}
373 377
374void matrix_scan_user(void) { 378void matrix_scan_user(void) {
diff --git a/keyboards/orthodox/keymaps/default/keymap.c b/keyboards/orthodox/keymaps/default/keymap.c
index b061cd7be..047249c6b 100644
--- a/keyboards/orthodox/keymaps/default/keymap.c
+++ b/keyboards/orthodox/keymaps/default/keymap.c
@@ -59,6 +59,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
59 KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, LOWER, KC_BSPC, KC_ENT, KC_RALT, LS__SPC, RAISE, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LGUI \ 59 KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, LOWER, KC_BSPC, KC_ENT, KC_RALT, LS__SPC, RAISE, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LGUI \
60), 60),
61 61
62[_COLEMAK] = KEYMAP(\
63 KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \
64 KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_UP, XXXXXXX, KC_DOWN, KC_LEFT, XXXXXXX, KC_RIGHT, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
65 KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, LOWER, KC_SPACE, KC_BSPC, KC_DEL, KC_ENT, RAISE, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLASH, KC_LGUI \
66),
67
68[_DVORAK] = KEYMAP(\
69 KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \
70 KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_UP, XXXXXXX, KC_DOWN, KC_LEFT, XXXXXXX, KC_RIGHT, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, \
71 KC_LCTL, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, LOWER, KC_SPACE, KC_BSPC, KC_DEL, KC_ENT, RAISE, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_LGUI \
72),
73
62[_LOWER] = KEYMAP( \ 74[_LOWER] = KEYMAP( \
63 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \ 75 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
64 KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_LCTL, XXXXXXX, _______, _______, XXXXXXX, KC_RCTL, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \ 76 KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_LCTL, XXXXXXX, _______, _______, XXXXXXX, KC_RCTL, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
diff --git a/keyboards/orthodox/keymaps/drashna/config.h b/keyboards/orthodox/keymaps/drashna/config.h
index 9e91753bd..7cbbf1025 100644
--- a/keyboards/orthodox/keymaps/drashna/config.h
+++ b/keyboards/orthodox/keymaps/drashna/config.h
@@ -39,4 +39,24 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
39#define TAPPING_TERM 200 39#define TAPPING_TERM 200
40#endif 40#endif
41 41
42
43#ifdef RGBLIGHT_ENABLE
44#define RGB_DI_PIN D3
45#define RGBLED_NUM 12 // Number of LEDs
46#define RGBLIGHT_ANIMATIONS
47#define RGBLIGHT_HUE_STEP 12
48#define RGBLIGHT_SAT_STEP 12
49#define RGBLIGHT_VAL_STEP 12
50#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
51#define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
52#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
53#endif // RGBLIGHT_ENABLE
54
55#define FORCE_NKRO
56#ifdef FORCE_NKRO
57#define NKRO_EPSIZE 32
58#endif
59
60#define PERMISSIVE_HOLD
61
42#endif \ No newline at end of file 62#endif \ No newline at end of file
diff --git a/keyboards/orthodox/keymaps/drashna/keymap.c b/keyboards/orthodox/keymaps/drashna/keymap.c
index 196794076..f76126527 100644
--- a/keyboards/orthodox/keymaps/drashna/keymap.c
+++ b/keyboards/orthodox/keymaps/drashna/keymap.c
@@ -49,6 +49,20 @@ enum custom_keycodes {
49#define _______ KC_TRNS 49#define _______ KC_TRNS
50#define XXXXXXX KC_NO 50#define XXXXXXX KC_NO
51 51
52#ifdef RGBLIGHT_ENABLE
53//define layer change stuff for underglow indicator
54#define rgblight_set_blue rgblight_sethsv (0xFF, 0xFF, 0xFF);
55#define rgblight_set_red rgblight_sethsv(0x00, 0xFF, 0xFF);
56#define rgblight_set_green rgblight_sethsv (0x78, 0xFF, 0xFF);
57#define rgblight_set_orange rgblight_sethsv (0x1E, 0xFF, 0xFF);
58#define rgblight_set_teal rgblight_sethsv (0xC3, 0xFF, 0xFF);
59#define rgblight_set_magenta rgblight_sethsv (0x12C, 0xFF, 0xFF);
60#define rgblight_set_urine rgblight_sethsv (0x3C, 0xFF, 0xFF);
61
62//This is both for underglow, and Diablo 3 macros
63bool has_layer_changed = true;
64static uint8_t current_layer = 10;
65#endif
52 66
53#ifdef TAP_DANCE_ENABLE 67#ifdef TAP_DANCE_ENABLE
54enum { 68enum {
@@ -194,4 +208,68 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
194 } 208 }
195 return true; 209 return true;
196} 210}
211#ifdef RGBLIGHT_ENABLE
212
213
214
215
216void matrix_scan_user(void) { // runs frequently to update info
217 uint8_t layer = biton32(layer_state);
218
219 if (layer != current_layer) {
220 has_layer_changed = true;
221 current_layer = layer;
222 }
223 // Check layer, and apply color if its changed since last check
224 if (has_layer_changed) {
225 uint8_t default_layer = 0;
226 default_layer = eeconfig_read_default_layer();
227
228 if (default_layer & (1UL << _DVORAK)) {
229 l_dvorak = true;
230 }
231 else if (default_layer & (1UL << _COLEMAK)) {
232 l_colemak = true;
233 }
234 switch (layer) {
235 case _QWERTY:
236 if (l_colemak) {
237 rgblight_set_magenta;
238 }
239 else if (l_dvorak) {
240 rgblight_set_green;
241 }
242 else {
243 rgblight_set_teal;
244 }
245 rgblight_mode(1);
246 break;
247 case _COLEMAK:
248 rgblight_set_magenta;
249 rgblight_mode(1);
250 break;
251 case _DVORAK:
252 rgblight_set_green;
253 rgblight_mode(1);
254 break;
255 case _RAISE:
256 rgblight_set_blue;
257 rgblight_mode(2);
258 break;
259 case _LOWER:
260 rgblight_set_orange;
261 rgblight_mode(3);
262 break;
263 case _ADJUST:
264 rgblight_set_red;
265 rgblight_mode(17);
266 break;
267 case 6:
268 rgblight_set_urine;
269 break;
270 }
271 has_layer_changed = false;
272 }
197 273
274 };
275#endif \ No newline at end of file