aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keyboards/handwired/promethium/keymaps/priyadi/config.h2
-rw-r--r--keyboards/handwired/promethium/keymaps/priyadi/keymap.c219
-rw-r--r--keyboards/handwired/promethium/promethium.h5
-rw-r--r--keyboards/planck/keymaps/priyadi/keymap.c530
4 files changed, 489 insertions, 267 deletions
diff --git a/keyboards/handwired/promethium/keymaps/priyadi/config.h b/keyboards/handwired/promethium/keymaps/priyadi/config.h
index 53059ca7d..6c9d2195e 100644
--- a/keyboards/handwired/promethium/keymaps/priyadi/config.h
+++ b/keyboards/handwired/promethium/keymaps/priyadi/config.h
@@ -14,6 +14,8 @@
14#define RGB_DI_PIN B5 14#define RGB_DI_PIN B5
15#define RGBSPS_NUM 57 15#define RGBSPS_NUM 57
16 16
17#define UNICODE_TYPE_DELAY 0
18
17#define LAYOUT_DVORAK 19#define LAYOUT_DVORAK
18#define LAYOUT_COLEMAK 20#define LAYOUT_COLEMAK
19#define LAYOUT_NORMAN 21#define LAYOUT_NORMAN
diff --git a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
index 1ad34612e..3d25c766c 100644
--- a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
+++ b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
@@ -41,6 +41,7 @@ enum glow_modes {
41}; 41};
42uint8_t glow_mode = GLOW_MIN; 42uint8_t glow_mode = GLOW_MIN;
43 43
44void turn_off_capslock(void);
44extern keymap_config_t keymap_config; 45extern keymap_config_t keymap_config;
45 46
46enum layers { 47enum layers {
@@ -49,14 +50,15 @@ enum layers {
49 _COLEMAK, 50 _COLEMAK,
50 _WORKMAN, 51 _WORKMAN,
51 _NORMAN, 52 _NORMAN,
52 53 _DEFAULT_LAYER_MAX = _NORMAN,
53 _PUNC,
54 _NUM,
55 _FUNC,
56 54
57 _GREEKU, 55 _GREEKU,
58 _GREEKL, 56 _GREEKL,
59 57
58 _NUM,
59 _FUN,
60 _PUNC,
61
60 _EMOJI, 62 _EMOJI,
61 _GUI, 63 _GUI,
62 _SYS, 64 _SYS,
@@ -74,9 +76,9 @@ enum planck_keycodes {
74 NORMAN, 76 NORMAN,
75 77
76 // layer switchers 78 // layer switchers
77 PUNC, 79 // PUNC,
78 NUM, 80 // NUM,
79 FUNC, 81 // FUN,
80 EMOJI, 82 EMOJI,
81 GUI, 83 GUI,
82 GREEK, 84 GREEK,
@@ -90,9 +92,16 @@ enum planck_keycodes {
90 LSPACE, 92 LSPACE,
91 RSPACE, 93 RSPACE,
92 GLOW, 94 GLOW,
95 FOR0,
96
97 // stub
93 AUDIO 98 AUDIO
94}; 99};
95 100
101#define NUM MO(_NUM)
102#define FUN MO(_FUN)
103#define FUN0 LT(_FUN, KC_0)
104
96// unicode map 105// unicode map
97 106
98enum unicode_name { 107enum unicode_name {
@@ -365,14 +374,14 @@ const uint8_t PROGMEM LED_MODS[] = {
365const uint8_t PROGMEM LED_FN[] = { 374const uint8_t PROGMEM LED_FN[] = {
366 LED_PUNC, 375 LED_PUNC,
367 LED_NUM, 376 LED_NUM,
368 LED_FUNC, 377 LED_FUN,
369 LED_EMOJI 378 LED_EMOJI
370}; 379};
371 380
372const uint8_t PROGMEM LED_INDICATORS[] = { 381const uint8_t PROGMEM LED_INDICATORS[] = {
373 LED_IND_EMOJI, 382 LED_IND_EMOJI,
374 LED_IND_NUM, 383 LED_IND_NUM,
375 LED_IND_FUNC, 384 LED_IND_FUN,
376 LED_IND_BATTERY, 385 LED_IND_BATTERY,
377 LED_IND_USB, 386 LED_IND_USB,
378 LED_IND_BLUETOOTH, 387 LED_IND_BLUETOOTH,
@@ -431,7 +440,7 @@ void led_reset(void) {
431void led_set_layer_indicator(void) { 440void led_set_layer_indicator(void) {
432 static uint8_t oldlayer = 255; 441 static uint8_t oldlayer = 255;
433 442
434 rgbsps_set(LED_IND_FUNC, 0, 0, 0); 443 rgbsps_set(LED_IND_FUN, 0, 0, 0);
435 // rgbsps_set(LED_IND_NUM, 0, 0, 0); 444 // rgbsps_set(LED_IND_NUM, 0, 0, 0);
436 rgbsps_set(LED_IND_EMOJI, 0, 0, 0); 445 rgbsps_set(LED_IND_EMOJI, 0, 0, 0);
437 446
@@ -444,14 +453,14 @@ void led_set_layer_indicator(void) {
444 453
445 oldlayer = layer; 454 oldlayer = layer;
446 455
447 if (layer <= _NORMAN) { 456 if (layer <= _DEFAULT_LAYER_MAX) {
448 rgbsps_send(); 457 rgbsps_send();
449 return; 458 return;
450 } 459 }
451 460
452 switch(layer) { 461 switch(layer) {
453 case _FUNC: 462 case _FUN:
454 rgbsps_set(LED_IND_FUNC, 15, 0, 0); 463 rgbsps_set(LED_IND_FUN, 15, 0, 0);
455 break; 464 break;
456 // case _NUM: 465 // case _NUM:
457 // rgbsps_set(LED_IND_NUM, 0, 0, 15); 466 // rgbsps_set(LED_IND_NUM, 0, 0, 15);
@@ -460,8 +469,8 @@ void led_set_layer_indicator(void) {
460 rgbsps_set(LED_IND_EMOJI, 15, 15, 0); 469 rgbsps_set(LED_IND_EMOJI, 15, 15, 0);
461 break; 470 break;
462 default: 471 default:
463 rgbsps_set(LED_IND_FUNC, 3, 3, 3); 472 rgbsps_set(LED_IND_FUN, 3, 3, 3);
464 rgbsps_set(LED_IND_NUM, 3, 3, 3); 473 // rgbsps_set(LED_IND_NUM, 3, 3, 3);
465 rgbsps_set(LED_IND_EMOJI, 3, 3, 3); 474 rgbsps_set(LED_IND_EMOJI, 3, 3, 3);
466 } 475 }
467 476
@@ -516,7 +525,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
516 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, 525 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
517 KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT , 526 KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT ,
518 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, 527 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
519 KC_LCTL, KC_LALT, KC_LGUI, PUNC, NUM, LSPACE, RSPACE, FUNC, GREEK, KC_RGUI, KC_RALT, KC_RCTL 528 KC_LCTL, KC_LALT, KC_LGUI, XXXXXXX, NUM, LSPACE, RSPACE, FUN, GREEK, KC_RGUI, KC_RALT, KC_RCTL
520), 529),
521 530
522/* Dvorak 531/* Dvorak
@@ -614,8 +623,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
614 * `-----------------------------------------------------------------------------------' 623 * `-----------------------------------------------------------------------------------'
615 */ 624 */
616[_PUNC] = KEYMAP( 625[_PUNC] = KEYMAP(
617 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_GRV , 626 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
618 XXXXXXX, KC_ASTR, KC_BSLS, KC_MINS, KC_EQL, KC_SLSH, XXXXXXX, KC_LPRN, KC_RPRN, KC_LABK, KC_RABK, XXXXXXX, 627 KC_GRV, KC_ASTR, KC_BSLS, KC_MINS, KC_EQL, KC_SLSH, XXXXXXX, KC_LPRN, KC_RPRN, KC_LABK, KC_RABK, _______,
619 KC_AMPR, KC_CIRC, KC_PIPE, KC_UNDS, KC_PLUS, KC_QUES, XXXXXXX, KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, KC_COLN, 628 KC_AMPR, KC_CIRC, KC_PIPE, KC_UNDS, KC_PLUS, KC_QUES, XXXXXXX, KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, KC_COLN,
620 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ 629 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
621), 630),
@@ -632,10 +641,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
632 * `-----------------------------------------------------------------------------------' 641 * `-----------------------------------------------------------------------------------'
633 */ 642 */
634[_NUM] = KEYMAP( 643[_NUM] = KEYMAP(
635 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, S(KC_A), KC_7, KC_8, KC_9, S(KC_D), KC_GRV, 644 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, S(KC_A), KC_7, KC_8, KC_9, S(KC_D), _______,
636 XXXXXXX, KC_ASTR, KC_BSLS, KC_MINS, KC_EQL, KC_SLSH, S(KC_B), KC_4, KC_5, KC_6, S(KC_E), _______, 645 KC_GRV, KC_ASTR, KC_BSLS, KC_MINS, KC_EQL, KC_SLSH, S(KC_B), KC_4, KC_5, KC_6, S(KC_E), _______,
637 KC_AMPR, KC_CIRC, KC_PIPE, KC_UNDS, KC_PLUS, KC_QUES, S(KC_C), KC_1, KC_2, KC_3, S(KC_F), KC_COLN, 646 KC_AMPR, KC_CIRC, KC_PIPE, KC_UNDS, KC_PLUS, KC_QUES, S(KC_C), KC_1, KC_2, KC_3, S(KC_F), KC_COLN,
638 _______, _______, _______, _______, _______, _______, _______, KC_0, KC_COMM, KC_DOT, KC_X, _______ 647 _______, _______, _______, _______, _______, _______, _______, FUN0 , KC_COMM, KC_DOT, KC_X, _______
639), 648),
640 649
641/* Func 650/* Func
@@ -649,11 +658,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
649 * | | | | | | | | | | | | 658 * | | | | | | | | | | | |
650 * `-----------------------------------------------------------------------------------' 659 * `-----------------------------------------------------------------------------------'
651 */ 660 */
652[_FUNC] = KEYMAP( 661[_FUN] = KEYMAP(
653 XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, KC_PGUP, KC_UP, KC_PGDN, KC_PGUP, KC_DEL, 662 XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, KC_PGUP, KC_UP, KC_PGDN, KC_PGUP, KC_DEL,
654 XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8,KC_PSCREEN,XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_INS, 663 XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8, KC_PSCR, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_INS,
655 _______, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_END, XXXXXXX, _______, 664 _______, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_END, XXXXXXX, _______,
656 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ 665 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
657), 666),
658 667
659/* Uppercase Greek 668/* Uppercase Greek
@@ -668,9 +677,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
668 * `-----------------------------------------------------------------------------------' 677 * `-----------------------------------------------------------------------------------'
669 */ 678 */
670[_GREEKU] = KEYMAP( 679[_GREEKU] = KEYMAP(
671 _______, _______, _______,X(UEPSI), X(URHO), X(UTAU),X(UUPSI),X(UTHET),X(UIOTA),X(UOMIC), X(UPI), _______, 680 _______, XXXXXXX, XXXXXXX,X(UEPSI), X(URHO), X(UTAU),X(UUPSI),X(UTHET),X(UIOTA),X(UOMIC), X(UPI), _______,
672 _______,X(UALPH),X(USIGM),X(UDELT), X(UPHI),X(UGAMM), X(UETA), X(UXI),X(UKAPP),X(ULAMB), _______, _______, 681 _______,X(UALPH),X(USIGM),X(UDELT), X(UPHI),X(UGAMM), X(UETA), X(UXI),X(UKAPP),X(ULAMB), KC_QUOT, _______,
673 _______,X(UZETA), X(UCHI), X(UPSI),X(UOMEG),X(UBETA), X(UNU), X(UMU), _______, _______, _______, _______, 682 _______,X(UZETA), X(UCHI), X(UPSI),X(UOMEG),X(UBETA), X(UNU), X(UMU), KC_COMM, KC_DOT, KC_SLSH, _______,
674 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ 683 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
675), 684),
676 685
@@ -686,9 +695,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
686 * `-----------------------------------------------------------------------------------' 695 * `-----------------------------------------------------------------------------------'
687 */ 696 */
688[_GREEKL] = KEYMAP( 697[_GREEKL] = KEYMAP(
689 _______, _______,X(FSIGM),X(LEPSI), X(LRHO), X(LTAU),X(LUPSI),X(LTHET),X(LIOTA),X(LOMIC), X(LPI), _______, 698 _______, XXXXXXX,X(FSIGM),X(LEPSI), X(LRHO), X(LTAU),X(LUPSI),X(LTHET),X(LIOTA),X(LOMIC), X(LPI), _______,
690 _______,X(LALPH),X(LSIGM),X(LDELT), X(LPHI),X(LGAMM), X(LETA), X(LXI),X(LKAPP),X(LLAMB), _______, _______, 699 _______,X(LALPH),X(LSIGM),X(LDELT), X(LPHI),X(LGAMM), X(LETA), X(LXI),X(LKAPP),X(LLAMB), KC_QUOT, _______,
691 _______,X(LZETA), X(LCHI), X(LPSI),X(LOMEG),X(LBETA), X(LNU), X(LMU), _______, _______, _______, _______, 700 _______,X(LZETA), X(LCHI), X(LPSI),X(LOMEG),X(LBETA), X(LNU), X(LMU), KC_COMM, KC_DOT, KC_SLSH, _______,
692 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ 701 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
693), 702),
694 703
@@ -714,7 +723,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
714 * ,-----------------------------------------------------------------------------------. 723 * ,-----------------------------------------------------------------------------------.
715 * | | D1 | D2 | D3 | D4 | D5 | D6 | D7 | D8 | D9 | D10 | | 724 * | | D1 | D2 | D3 | D4 | D5 | D6 | D7 | D8 | D9 | D10 | |
716 * |------+------+------+------+------+-------------+------+------+------+------+------| 725 * |------+------+------+------+------+-------------+------+------+------+------+------|
717 * | | | Vol- | Mute | Vol+ | | | Prev | | Next | | | 726 * | Esc | | Btab | Esc | Tab | | | Prev | | Next | | |
718 * |------+------+------+------+------+------+------+------+------+------+------+------| 727 * |------+------+------+------+------+------+------+------+------+------+------+------|
719 * | | | Prev | Play | Next | | | | | | | | 728 * | | | Prev | Play | Next | | | | | | | |
720 * |------+------+------+------+------+------+------+------+------+------+------+------| 729 * |------+------+------+------+------+------+------+------+------+------+------+------|
@@ -723,9 +732,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
723 */ 732 */
724[_GUI] = KEYMAP( 733[_GUI] = KEYMAP(
725 XXXXXXX, G(KC_1), G(KC_2), G(KC_3), G(KC_4), G(KC_5), G(KC_6), G(KC_7), G(KC_8), G(KC_9), G(KC_0), XXXXXXX, 734 XXXXXXX, G(KC_1), G(KC_2), G(KC_3), G(KC_4), G(KC_5), G(KC_6), G(KC_7), G(KC_8), G(KC_9), G(KC_0), XXXXXXX,
726 XXXXXXX, XXXXXXX, KC_VOLD, KC_MUTE, KC_VOLU, XXXXXXX, XXXXXXX, KC_WWWB, XXXXXXX, KC_WWWF, XXXXXXX, XXXXXXX, 735 KC_ESC, XXXXXXX, S(KC_TAB),KC_ESC, KC_TAB, XXXXXXX, XXXXXXX, KC_WWWB, XXXXXXX, KC_WWWF, XXXXXXX, XXXXXXX,
727 XXXXXXX, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, KC_SPC, KC_SPC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, 736 XXXXXXX, XXXXXXX, KC_VOLD, KC_MUTE, KC_VOLU, KC_SPC, KC_SPC, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX,
728 XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX 737 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
729), 738),
730 739
731/* Sys 740/* Sys
@@ -753,9 +762,53 @@ void persistant_default_layer_set(uint16_t default_layer) {
753 default_layer_set(default_layer); 762 default_layer_set(default_layer);
754} 763}
755 764
765#ifdef DOUBLESPACE_LAYER_ENABLE
766void process_doublespace(bool pressed, bool *isactive, bool *otheractive, bool *isemitted) {
767 if (pressed) {
768 *isactive = true;
769 if (*otheractive) {
770 layer_on(_SPACE);
771 register_code(KC_LALT); // sends alt and enter layer
772 space_layer_entered = true;
773 }
774 } else {
775 *isactive = false;
776 if (space_layer_entered) {
777 unregister_code(KC_LALT); // release alt and exit layer
778 layer_off(_SPACE);
779 if (!*otheractive) {
780 space_layer_entered = false;
781 }
782 } else {
783 if (!*isemitted) {
784 register_code(KC_SPC);
785 unregister_code(KC_SPC);
786 }
787 *isemitted = false;
788 }
789 }
790}
791#endif
792
793uint32_t layer_state_set_kb(uint32_t state)
794{
795 // turn on punc layer if both fun & num are on
796 if ((state & ((1UL<<_NUM) | (1UL<<_FUN))) == ((1UL<<_NUM) | (1UL<<_FUN))) {
797 state |= (1UL<<_PUNC);
798 } else {
799 state &= ~(1UL<<_PUNC);
800 }
801 return state;
802}
803
756bool process_record_user(uint16_t keycode, keyrecord_t *record) { 804bool process_record_user(uint16_t keycode, keyrecord_t *record) {
757 bool lshift = keyboard_report->mods & MOD_BIT(KC_LSFT); 805 static bool lshift = false;
758 bool rshift = keyboard_report->mods & MOD_BIT(KC_RSFT); 806 static bool rshift = false;
807 static uint8_t layer = 0;
808
809 lshift = keyboard_report->mods & MOD_BIT(KC_LSFT);
810 rshift = keyboard_report->mods & MOD_BIT(KC_RSFT);
811 layer = biton32(layer_state);
759 812
760#ifdef DOUBLESPACE_LAYER_ENABLE 813#ifdef DOUBLESPACE_LAYER_ENABLE
761 // double-space: send space immediately if any other key depressed before space is released 814 // double-space: send space immediately if any other key depressed before space is released
@@ -779,6 +832,14 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
779 rspace_emitted = true; 832 rspace_emitted = true;
780 } 833 }
781 } 834 }
835
836 if (layer == _SPACE && keycode != S(KC_TAB) && keycode != KC_TAB && keycode != KC_ESC && keycode != XXXXXXX) {
837 if (record->event.pressed) {
838 unregister_code(KC_LALT);
839 } else {
840 register_code(KC_LALT);
841 }
842 }
782#endif 843#endif
783 844
784 switch (keycode) { 845 switch (keycode) {
@@ -786,51 +847,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
786#ifdef DOUBLESPACE_LAYER_ENABLE 847#ifdef DOUBLESPACE_LAYER_ENABLE
787 // double-space enter space layer 848 // double-space enter space layer
788 case LSPACE: 849 case LSPACE:
789 if (record->event.pressed) { 850 process_doublespace(record->event.pressed, &lspace_active, &rspace_active, &lspace_emitted);
790 lspace_active = true;
791 if (rspace_active) {
792 layer_on(_SPACE);
793 space_layer_entered = true;
794 }
795 } else {
796 lspace_active = false;
797 if (space_layer_entered) {
798 layer_off(_SPACE);
799 if (!rspace_active) {
800 space_layer_entered = false;
801 }
802 } else {
803 if (!lspace_emitted) {
804 register_code(KC_SPC);
805 unregister_code(KC_SPC);
806 }
807 lspace_emitted = false;
808 }
809 }
810 return false; 851 return false;
811 break; 852 break;
812 case RSPACE: 853 case RSPACE:
813 if (record->event.pressed) { 854 process_doublespace(record->event.pressed, &rspace_active, &lspace_active, &rspace_emitted);
814 rspace_active = true;
815 if (lspace_active) {
816 layer_on(_SPACE);
817 space_layer_entered = true;
818 }
819 } else {
820 rspace_active = false;
821 if (space_layer_entered) {
822 layer_off(_SPACE);
823 if (!lspace_active) {
824 space_layer_entered = false;
825 }
826 } else {
827 if (!rspace_emitted) {
828 register_code(KC_SPC);
829 unregister_code(KC_SPC);
830 }
831 rspace_emitted = false;
832 }
833 }
834 return false; 855 return false;
835 break; 856 break;
836#endif 857#endif
@@ -840,7 +861,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
840 case KC_LSFT: 861 case KC_LSFT:
841 case KC_RSFT: 862 case KC_RSFT:
842 ; 863 ;
843 uint8_t layer = biton32(layer_state);
844 if (layer == _GREEKU || layer == _GREEKL) { 864 if (layer == _GREEKU || layer == _GREEKL) {
845 if (record->event.pressed) { 865 if (record->event.pressed) {
846 layer_on(_GREEKU); 866 layer_on(_GREEKU);
@@ -949,17 +969,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
949#endif 969#endif
950 970
951 // layer switcher 971 // layer switcher
952 case PUNC: 972 //
953 if (record->event.pressed) {
954 layer_on(_PUNC);
955 update_tri_layer(_PUNC, _GREEKL, _EMOJI);
956 } else {
957 layer_off(_PUNC);
958 update_tri_layer(_PUNC, _GREEKL, _EMOJI);
959 }
960 return false;
961 break;
962
963 case GREEK: 973 case GREEK:
964 if (record->event.pressed) { 974 if (record->event.pressed) {
965 if (lshift || rshift) { 975 if (lshift || rshift) {
@@ -968,31 +978,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
968 } else { 978 } else {
969 layer_on(_GREEKL); 979 layer_on(_GREEKL);
970 layer_off(_GREEKU); 980 layer_off(_GREEKU);
971 update_tri_layer(_PUNC, _GREEKL, _EMOJI);
972 } 981 }
973 } else { 982 } else {
974 layer_off(_GREEKU); 983 layer_off(_GREEKU);
975 layer_off(_GREEKL); 984 layer_off(_GREEKL);
976 update_tri_layer(_PUNC, _GREEKL, _EMOJI);
977 }
978 return false;
979 break;
980
981 case NUM:
982 if (record->event.pressed) {
983 turn_off_capslock();
984 layer_on(_NUM);
985 } else {
986 layer_off(_NUM);
987 }
988 return false;
989 break;
990
991 case FUNC:
992 if (record->event.pressed) {
993 layer_on(_FUNC);
994 } else {
995 layer_off(_FUNC);
996 } 985 }
997 return false; 986 return false;
998 break; 987 break;
@@ -1072,7 +1061,7 @@ void battery_poll(uint8_t level) {
1072void led_set_user(uint8_t usb_led) { 1061void led_set_user(uint8_t usb_led) {
1073 bool new_capslock = usb_led & (1<<USB_LED_CAPS_LOCK); 1062 bool new_capslock = usb_led & (1<<USB_LED_CAPS_LOCK);
1074 if (new_capslock ^ capslock) { // capslock state is different 1063 if (new_capslock ^ capslock) { // capslock state is different
1075 if (capslock = new_capslock) { 1064 if ((capslock = new_capslock)) {
1076 rgbsps_set(LED_IND_NUM, 15, 0, 0); 1065 rgbsps_set(LED_IND_NUM, 15, 0, 0);
1077 } else { 1066 } else {
1078 rgbsps_set(LED_IND_NUM, 0, 0, 0); 1067 rgbsps_set(LED_IND_NUM, 0, 0, 0);
diff --git a/keyboards/handwired/promethium/promethium.h b/keyboards/handwired/promethium/promethium.h
index da37e5c56..caad5258e 100644
--- a/keyboards/handwired/promethium/promethium.h
+++ b/keyboards/handwired/promethium/promethium.h
@@ -4,7 +4,6 @@
4#include "quantum.h" 4#include "quantum.h"
5 5
6#define PS2_INIT_DELAY 2000 6#define PS2_INIT_DELAY 2000
7#define UNICODE_TYPE_DELAY 0
8#define BATTERY_PIN 9 7#define BATTERY_PIN 9
9#define BATTERY_POLL 30000 8#define BATTERY_POLL 30000
10#define MAX_VOLTAGE 4.2 9#define MAX_VOLTAGE 4.2
@@ -34,7 +33,7 @@ enum led_sequence {
34 LED_IND_USB, 33 LED_IND_USB,
35 LED_IND_BATTERY, 34 LED_IND_BATTERY,
36 35
37 LED_IND_FUNC, 36 LED_IND_FUN,
38 LED_IND_NUM, 37 LED_IND_NUM,
39 LED_IND_EMOJI, 38 LED_IND_EMOJI,
40 39
@@ -61,7 +60,7 @@ enum led_sequence {
61 LED_U, 60 LED_U,
62 LED_J, 61 LED_J,
63 LED_M, 62 LED_M,
64 LED_FUNC, 63 LED_FUN,
65 64
66 LED_RSPC, 65 LED_RSPC,
67 LED_N, 66 LED_N,
diff --git a/keyboards/planck/keymaps/priyadi/keymap.c b/keyboards/planck/keymaps/priyadi/keymap.c
index 13668fd10..20bfa3958 100644
--- a/keyboards/planck/keymaps/priyadi/keymap.c
+++ b/keyboards/planck/keymaps/priyadi/keymap.c
@@ -10,29 +10,81 @@
10#include "eeconfig.h" 10#include "eeconfig.h"
11#include "process_unicode.h" 11#include "process_unicode.h"
12#include "quantum.h" 12#include "quantum.h"
13
14// #define TOLELOT_ENABLE 13// #define TOLELOT_ENABLE
14#define DOUBLESPACE_LAYER_ENABLE
15#define LAYOUT_DVORAK
16#define LAYOUT_COLEMAK
17#define LAYOUT_WORKMAN
18#define LAYOUT_NORMAN
19
20// so i can copy & paste stuff from my other planck-like keyboards
21#define KEYMAP( \
22 k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
23 k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \
24 k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \
25 k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c \
26) \
27{ \
28 {k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c}, \
29 {k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c}, \
30 {k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c}, \
31 {k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c} \
32}
33
34// Fillers to make layering clearer
35#define _______ KC_TRNS
36#define XXXXXXX KC_NO
37#define G(x) LGUI(x)
38#define KC_WWWB KC_WWW_BACK
39#define KC_WWWF KC_WWW_FORWARD
40
41// hybrid right-alt & scroll lock (mapped to Compose in OS)
42#undef KC_RALT
43#define KC_RALT MT(MOD_RALT, KC_SLCK)
44
45bool capslock = false;
46
47#ifdef DOUBLESPACE_LAYER_ENABLE
48bool lspace_active = false;
49bool rspace_active = false;
50bool lspace_emitted = false;
51bool rspace_emitted = false;
52bool space_layer_entered = false;
53#endif
15 54
55void turn_off_capslock(void);
16extern keymap_config_t keymap_config; 56extern keymap_config_t keymap_config;
17 57
18enum layers { 58enum layers {
19 _QWERTY, 59 _QWERTY,
60 _DVORAK,
20 _COLEMAK, 61 _COLEMAK,
21 _WORKMAN, 62 _WORKMAN,
22 _PUNC, 63 _NORMAN,
64 _DEFAULT_LAYER_MAX = _NORMAN,
65
66 _GREEKU,
67 _GREEKL,
68
23 _NUM, 69 _NUM,
24 _FUNC, 70 _FUNC,
71 _PUNC,
72
25 _EMOJI, 73 _EMOJI,
26 _GREEKU,
27 _GREEKL,
28 _GUI, 74 _GUI,
75 _SYS,
29}; 76};
30 77
78// double-space layer
79#define _SPACE _GUI
80
31enum planck_keycodes { 81enum planck_keycodes {
32 // layouts 82 // layouts
33 QWERTY = SAFE_RANGE, 83 QWERTY = SAFE_RANGE,
84 DVORAK,
34 COLEMAK, 85 COLEMAK,
35 WORKMAN, 86 WORKMAN,
87 NORMAN,
36 88
37 // layer switchers 89 // layer switchers
38 PUNC, 90 PUNC,
@@ -46,12 +98,15 @@ enum planck_keycodes {
46 LINUX, 98 LINUX,
47 WIN, 99 WIN,
48 OSX, 100 OSX,
49};
50 101
51// Fillers to make layering clearer 102 // others
103 LSPACE,
104 RSPACE,
105 GLOW,
52 106
53#define _______ KC_TRNS 107 // stubs
54#define XXXXXXX KC_NO 108 OUT_BLE
109};
55 110
56// unicode map 111// unicode map
57 112
@@ -259,14 +314,6 @@ const uint32_t PROGMEM unicode_map[] = {
259 [FSIGM] = 0x03C2, 314 [FSIGM] = 0x03C2,
260}; 315};
261 316
262
263// hybrid shift - =
264// #undef KC_LSFT
265// #define KC_LSFT MT(MOD_LSFT, KC_MINS)
266// #undef KC_RSFT
267// #define KC_RSFT MT(MOD_LSFT, KC_EQL)
268
269
270// hybrid right-gui & scroll lock (mapped to Compose in OS) 317// hybrid right-gui & scroll lock (mapped to Compose in OS)
271#undef KC_RALT 318#undef KC_RALT
272#define KC_RALT MT(MOD_RALT, KC_SLCK) 319#define KC_RALT MT(MOD_RALT, KC_SLCK)
@@ -279,127 +326,138 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
279 * ,-----------------------------------------------------------------------------------. 326 * ,-----------------------------------------------------------------------------------.
280 * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | 327 * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
281 * |------+------+------+------+------+-------------+------+------+------+------+------| 328 * |------+------+------+------+------+-------------+------+------+------+------+------|
282 * | Esc | A | S | D | F | G | H | J | K | L | ; |Enter | 329 * | Esc | A | S | D | F | G | H | J | K | L | ' |Enter |
283 * |------+------+------+------+------+------|------+------+------+------+------+------| 330 * |------+------+------+------+------+------|------+------+------+------+------+------|
284 * | Shift| Z | X | C | V | B | N | M | , | . | / |Shift | 331 * | Shift| Z | X | C | V | B | N | M | , | . | / |Shift |
285 * |------+------+------+------+------+------+------+------+------+------+------+------| 332 * |------+------+------+------+------+------+------+------+------+------+------+------|
286 * | Ctrl | GUI | Alt | Punc | Num | Space | Func |Emoji |Greek |AltGr | Ctrl | 333 * | Ctrl | Alt | GUI | Punc | Num | Space | Func |Greek | GUI |AltGr | Ctrl |
287 * `-----------------------------------------------------------------------------------' 334 * `-----------------------------------------------------------------------------------'
288 */ 335 */
289[_QWERTY] = { 336[_QWERTY] = KEYMAP(
290 {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, 337 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
291 {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT }, 338 KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT ,
292 {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT}, 339 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
293 {KC_LCTL, KC_LALT, KC_LGUI, PUNC, NUM, KC_SPC, KC_SPC, FUNC, EMOJI, GREEK, KC_RALT, KC_RCTL} 340 KC_LCTL, KC_LALT, KC_LGUI, XXXXXXX, NUM, LSPACE, RSPACE, FUNC, GREEK, KC_RGUI, KC_RALT, KC_RCTL
294}, 341),
295 342
296/* Colemak 343/* Dvorak
297 * ,-----------------------------------------------------------------------------------. 344 * ,-----------------------------------------------------------------------------------.
298 * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | 345 * | Tab | ' | , | . | P | Y | F | G | C | R | L | Bksp |
299 * |------+------+------+------+------+-------------+------+------+------+------+------| 346 * |------+------+------+------+------+-------------+------+------+------+------+------|
300 * | Esc | A | R | S | T | D | H | N | E | I | O |Enter | 347 * | Esc | A | O | E | U | I | D | H | T | N | S |Enter |
301 * |------+------+------+------+------+------|------+------+------+------+------+------| 348 * |------+------+------+------+------+------|------+------+------+------+------+------|
302 * | Shift| Z | X | C | V | B | K | M | , | . | / |Shift | 349 * | Shift| / | Q | J | K | X | B | M | W | V | Z |Shift |
303 * |------+------+------+------+------+------+------+------+------+------+------+------| 350 * |------+------+------+------+------+------+------+------+------+------+------+------|
304 * | Ctrl | GUI | Alt | Punc | Num | Space | Func |Emoji |AltGr | GUI | Ctrl | 351 * | Ctrl | Alt | GUI | Punc | Num | Space | Func |Greek | GUI |AltGr | Ctrl |
305 * `-----------------------------------------------------------------------------------' 352 * `-----------------------------------------------------------------------------------'
306 */ 353 */
307[_COLEMAK] = { 354#ifdef LAYOUT_DVORAK
308 {_______, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, _______}, 355[_DVORAK] = KEYMAP(
309 {_______, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, _______}, 356 _______, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, _______,
310 {_______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______}, 357 _______, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, _______,
311 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} 358 _______, KC_SLSH, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, _______,
312}, 359 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
360),
361#endif
313 362
314/* Workman 363/* Colemak
315 * ,-----------------------------------------------------------------------------------. 364 * ,-----------------------------------------------------------------------------------.
316 * | Tab | Q | D | R | W | B | J | F | U | P | ; | Bksp | 365 * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
317 * |------+------+------+------+------+-------------+------+------+------+------+------| 366 * |------+------+------+------+------+-------------+------+------+------+------+------|
318 * | Esc | A | S | H | T | G | Y | N | E | O | I |Enter | 367 * | Esc | A | R | S | T | D | H | N | E | I | O |Enter |
319 * |------+------+------+------+------+------|------+------+------+------+------+------| 368 * |------+------+------+------+------+------|------+------+------+------+------+------|
320 * | Shift| Z | X | M | C | V | K | K | , | . | / |Shift | 369 * | Shift| Z | X | C | V | B | K | M | , | . | / |Shift |
321 * |------+------+------+------+------+------+------+------+------+------+------+------| 370 * |------+------+------+------+------+------+------+------+------+------+------+------|
322 * | Ctrl | GUI | Alt | Punc | Num | Space | Func |Emoji |AltGr | GUI | Ctrl | 371 * | Ctrl | Alt | GUI | Punc | Num | Space | Func |Greek | GUI |AltGr | Ctrl |
323 * `-----------------------------------------------------------------------------------' 372 * `-----------------------------------------------------------------------------------'
324 */ 373 */
325[_WORKMAN] = {
326 {_______, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_QUOT, _______},
327 {_______, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, _______},
328 {_______, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, _______},
329 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
330},
331 374
332/* Uppercase Greek 375#ifdef LAYOUT_COLEMAK
376[_COLEMAK] = KEYMAP(
377 _______, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, _______,
378 _______, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, _______,
379 _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______,
380 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
381),
382#endif
383
384/* Norman
333 * ,-----------------------------------------------------------------------------------. 385 * ,-----------------------------------------------------------------------------------.
334 * | | | | | | | | | | | | | 386 * | Tab | Q | W | D | F | K | J | U | R | L | ; | Bksp |
335 * |------+------+------+------+------+-------------+------+------+------+------+------| 387 * |------+------+------+------+------+-------------+------+------+------+------+------|
336 * | | | | | | | | | | | | | 388 * | Esc | A | S | E | T | G | Y | N | I | O | H |Enter |
337 * |------+------+------+------+------+------+------+------+------+------+------+------| 389 * |------+------+------+------+------+------|------+------+------+------+------+------|
338 * | | | | | | | | | | | | | 390 * | Shift| Z | X | C | V | B | P | M | , | . | / |Shift |
339 * |------+------+------+------+------+------+------+------+------+------+------+------| 391 * |------+------+------+------+------+------+------+------+------+------+------+------|
340 * | | | | | | | | | | | | | 392 * | Ctrl | Alt | GUI | Punc | Num | Space | Func |Greek | GUI |AltGr | Ctrl |
341 * `-----------------------------------------------------------------------------------' 393 * `-----------------------------------------------------------------------------------'
342 */ 394 */
343[_GREEKU] = {
344 {_______, _______, _______,X(UEPSI), X(URHO), X(UTAU),X(UUPSI),X(UTHET),X(UIOTA),X(UOMIC), X(UPI), _______},
345 {_______,X(UALPH),X(USIGM),X(UDELT), X(UPHI),X(UGAMM), X(UETA), X(UXI),X(UKAPP),X(ULAMB), _______, _______},
346 {_______,X(UZETA), X(UCHI), X(UPSI),X(UOMEG),X(UBETA), X(UNU), X(UMU), _______, _______, _______, _______},
347 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
348},
349 395
350/* Lowercase Greek 396#ifdef LAYOUT_NORMAN
397[_NORMAN] = KEYMAP(
398 _______, KC_Q, KC_W, KC_D, KC_F, KC_K, KC_J, KC_U, KC_R, KC_L, KC_QUOT, _______,
399 _______, KC_A, KC_S, KC_E, KC_T, KC_G, KC_Y, KC_N, KC_I, KC_O, KC_H, _______,
400 _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______,
401 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
402),
403#endif
404
405/* Workman
351 * ,-----------------------------------------------------------------------------------. 406 * ,-----------------------------------------------------------------------------------.
352 * | | | | | | | | | | | | | 407 * | Tab | Q | D | R | W | B | J | F | U | P | ; | Bksp |
353 * |------+------+------+------+------+-------------+------+------+------+------+------| 408 * |------+------+------+------+------+-------------+------+------+------+------+------|
354 * | | | | | | | | | | | | | 409 * | Esc | A | S | H | T | G | Y | N | E | O | I |Enter |
355 * |------+------+------+------+------+------+------+------+------+------+------+------| 410 * |------+------+------+------+------+------|------+------+------+------+------+------|
356 * | | | | | | | | | | | | | 411 * | Shift| Z | X | M | C | V | K | K | , | . | / |Shift |
357 * |------+------+------+------+------+------+------+------+------+------+------+------| 412 * |------+------+------+------+------+------+------+------+------+------+------+------|
358 * | | | | | | | | | | | | | 413 * | Ctrl | Alt | GUI | Punc | Num | Space | Func |Greek | GUI |AltGr | Ctrl |
359 * `-----------------------------------------------------------------------------------' 414 * `-----------------------------------------------------------------------------------'
360 */ 415 */
361[_GREEKL] = { 416
362 {_______, _______,X(FSIGM),X(LEPSI), X(LRHO), X(LTAU),X(LUPSI),X(LTHET),X(LIOTA),X(LOMIC), X(LPI), _______}, 417#ifdef LAYOUT_WORKMAN
363 {_______,X(LALPH),X(LSIGM),X(LDELT), X(LPHI),X(LGAMM), X(LETA), X(LXI),X(LKAPP),X(LLAMB), _______, _______}, 418[_WORKMAN] = KEYMAP(
364 {_______,X(LZETA), X(LCHI), X(LPSI),X(LOMEG),X(LBETA), X(LNU), X(LMU), _______, _______, _______, _______}, 419 _______, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_QUOT, _______,
365 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} 420 _______, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, _______,
366}, 421 _______, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, _______,
422 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
423),
424#endif
367 425
368/* Punc 426/* Punc
369 * ,-----------------------------------------------------------------------------------. 427 * ,-----------------------------------------------------------------------------------.
370 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | ` | 428 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | ` |
371 * |------+------+------+------+------+-------------+------+------+------+------+------| 429 * |------+------+------+------+------+-------------+------+------+------+------+------|
372 * | | | \ | - | = | < | > | ( | ) | ' | | | 430 * | | * | \ | - | = | / | | ( | ) | < | > | |
373 * |------+------+------+------+------+------|------+------+------+------+------+------| 431 * |------+------+------+------+------+------|------+------+------+------+------+------|
374 * | | | | | _ | + | { | } | [ | ] | " | | | 432 * | & | ^ | | | _ | + | ? | | [ | ] | { | } | : |
375 * |------+------+------+------+------+------+------+------+------+------+------+------| 433 * |------+------+------+------+------+------+------+------+------+------+------+------|
376 * | | | | | | | | | | | | 434 * | | | | | | | | | | | |
377 * `-----------------------------------------------------------------------------------' 435 * `-----------------------------------------------------------------------------------'
378 */ 436 */
379[_PUNC] = { 437[_PUNC] = KEYMAP(
380 {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_GRV }, 438 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
381 {XXXXXXX, XXXXXXX, KC_BSLS, KC_MINS, KC_EQL, KC_LABK, KC_RABK, KC_LPRN, KC_RPRN, KC_QUOT, XXXXXXX, XXXXXXX}, 439 KC_GRV, KC_ASTR, KC_BSLS, KC_MINS, KC_EQL, KC_SLSH, XXXXXXX, KC_LPRN, KC_RPRN, KC_LABK, KC_RABK, _______,
382 {XXXXXXX, XXXXXXX, KC_PIPE, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_DQUO, XXXXXXX, XXXXXXX}, 440 KC_AMPR, KC_CIRC, KC_PIPE, KC_UNDS, KC_PLUS, KC_QUES, XXXXXXX, KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, KC_COLN,
383 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} 441 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
384}, 442),
385 443
386/* Num 444/* Num
387 * ,-----------------------------------------------------------------------------------. 445 * ,-----------------------------------------------------------------------------------.
388 * | ^ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | 446 * | ~ | ! | @ | # | $ | % | A | 7 | 8 | 9 | D | ` |
389 * |------+------+------+------+------+-------------+------+------+------+------+------| 447 * |------+------+------+------+------+-------------+------+------+------+------+------|
390 * | Esc | @ | A | B | C | ( | ) | 4 | 5 | 6 | : |Enter | 448 * | | * | \ | - | = | / | B | 4 | 5 | 6 | E | |
391 * |------+------+------+------+------+------|------+------+------+------+------+------| 449 * |------+------+------+------+------+------|------+------+------+------+------+------|
392 * | & | # | D | E | F | [ | ] | 1 | 2 | 3 | / | * | 450 * | & | ^ | | | _ | + | ? | C | 1 | 2 | 3 | F | : |
393 * |------+------+------+------+------+------+------+------+------+------+------+------| 451 * |------+------+------+------+------+------+------+------+------+------+------+------|
394 * | | | | x | | | 0 | , | . | + | - | 452 * | | | | | | | x | 0 | , | . | | |
395 * `-----------------------------------------------------------------------------------' 453 * `-----------------------------------------------------------------------------------'
396 */ 454 */
397[_NUM] = { 455[_NUM] = KEYMAP(
398 {KC_CIRC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, 456 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, S(KC_A), KC_7, KC_8, KC_9, S(KC_D), _______,
399 { KC_ESC, KC_AT, S(KC_A), S(KC_B), S(KC_C), KC_LPRN, KC_RPRN, KC_4, KC_5, KC_6, KC_COLN, KC_ENT}, 457 KC_GRV, KC_ASTR, KC_BSLS, KC_MINS, KC_EQL, KC_SLSH, S(KC_B), KC_4, KC_5, KC_6, S(KC_E), _______,
400 {KC_AMPR, KC_HASH, S(KC_D), S(KC_E), S(KC_F), KC_LBRC, KC_RBRC, KC_1, KC_2, KC_3, KC_SLSH, KC_ASTR}, 458 KC_AMPR, KC_CIRC, KC_PIPE, KC_UNDS, KC_PLUS, KC_QUES, S(KC_C), KC_1, KC_2, KC_3, S(KC_F), KC_COLN,
401 {_______, _______, _______, KC_X, _______, KC_SPC, KC_SPC, KC_0, KC_COMM, KC_DOT, KC_PLUS, KC_MINS} 459 _______, _______, _______, _______, _______, _______, _______, LT(_PUNC, KC_0), KC_COMM, KC_DOT, KC_X, _______
402}, 460),
403 461
404/* Func 462/* Func
405 * ,-----------------------------------------------------------------------------------. 463 * ,-----------------------------------------------------------------------------------.
@@ -412,12 +470,48 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
412 * | | | | | | | | | | | | 470 * | | | | | | | | | | | |
413 * `-----------------------------------------------------------------------------------' 471 * `-----------------------------------------------------------------------------------'
414 */ 472 */
415[_FUNC] = { 473[_FUNC] = KEYMAP(
416 {XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, KC_PGUP, KC_UP, KC_PGDN, KC_PGUP, KC_DEL}, 474 XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, KC_PGUP, KC_UP, KC_PGDN, KC_PGUP, KC_DEL,
417 {XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8,KC_PSCREEN,XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_INS}, 475 XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8, KC_PSCR, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_INS,
418 {_______, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_END, XXXXXXX, _______}, 476 _______, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_END, XXXXXXX, _______,
419 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} 477 _______, _______, _______, _______, PUNC, _______, _______, _______, _______, _______, _______, _______
420}, 478),
479
480/* Uppercase Greek
481 * ,-----------------------------------------------------------------------------------.
482 * | | | | | | | | | | | | |
483 * |------+------+------+------+------+-------------+------+------+------+------+------|
484 * | | | | | | | | | | | | |
485 * |------+------+------+------+------+------+------+------+------+------+------+------|
486 * | | | | | | | | | | | | |
487 * |------+------+------+------+------+------+------+------+------+------+------+------|
488 * | | | | | | | | | | | | |
489 * `-----------------------------------------------------------------------------------'
490 */
491[_GREEKU] = KEYMAP(
492 _______, XXXXXXX, XXXXXXX,X(UEPSI), X(URHO), X(UTAU),X(UUPSI),X(UTHET),X(UIOTA),X(UOMIC), X(UPI), _______,
493 _______,X(UALPH),X(USIGM),X(UDELT), X(UPHI),X(UGAMM), X(UETA), X(UXI),X(UKAPP),X(ULAMB), KC_QUOT, _______,
494 _______,X(UZETA), X(UCHI), X(UPSI),X(UOMEG),X(UBETA), X(UNU), X(UMU), KC_COMM, KC_DOT, KC_SLSH, _______,
495 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
496),
497
498/* Lowercase Greek
499 * ,-----------------------------------------------------------------------------------.
500 * | | | | | | | | | | | | |
501 * |------+------+------+------+------+-------------+------+------+------+------+------|
502 * | | | | | | | | | | | | |
503 * |------+------+------+------+------+------+------+------+------+------+------+------|
504 * | | | | | | | | | | | | |
505 * |------+------+------+------+------+------+------+------+------+------+------+------|
506 * | | | | | | | | | | | | |
507 * `-----------------------------------------------------------------------------------'
508 */
509[_GREEKL] = KEYMAP(
510 _______, XXXXXXX,X(FSIGM),X(LEPSI), X(LRHO), X(LTAU),X(LUPSI),X(LTHET),X(LIOTA),X(LOMIC), X(LPI), _______,
511 _______,X(LALPH),X(LSIGM),X(LDELT), X(LPHI),X(LGAMM), X(LETA), X(LXI),X(LKAPP),X(LLAMB), KC_QUOT, _______,
512 _______,X(LZETA), X(LCHI), X(LPSI),X(LOMEG),X(LBETA), X(LNU), X(LMU), KC_COMM, KC_DOT, KC_SLSH, _______,
513 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
514),
421 515
422/* Emoji 516/* Emoji
423 * ,-----------------------------------------------------------------------------------. 517 * ,-----------------------------------------------------------------------------------.
@@ -430,30 +524,48 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
430 * | | | | | | | | | | | | | 524 * | | | | | | | | | | | | |
431 * `-----------------------------------------------------------------------------------' 525 * `-----------------------------------------------------------------------------------'
432 */ 526 */
433[_EMOJI] = { 527[_EMOJI] = KEYMAP(
434 {X(HART2), X(CRY2),X(WEARY),X(EYERT),X(SMIRK), X(TJOY),X(RECYC),X(UNAMU),X(MUSIC),X(OKHND),X(PENSV), X(PHEW)}, 528 X(HART2), X(CRY2),X(WEARY),X(EYERT),X(SMIRK), X(TJOY),X(RECYC),X(UNAMU),X(MUSIC),X(OKHND),X(PENSV), X(PHEW),
435 {X(THMUP), X(PRAY),X(SMILE),X(SMIL2),X(FLUSH), X(GRIN),X(HEART), X(BYE), X(KISS),X(CELEB), X(COOL),X(NOEVS)}, 529 X(THMUP), X(PRAY),X(SMILE),X(SMIL2),X(FLUSH), X(GRIN),X(HEART), X(BYE), X(KISS),X(CELEB), X(COOL),X(NOEVS),
436 {X(THMDN),X(SLEEP), X(CLAP), X(CRY), X(VIC),X(BHART), X(SUN),X(SMEYE), X(WINK), X(MOON),X(CONFU),X(NOEVH)}, 530 X(THMDN),X(SLEEP), X(CLAP), X(CRY), X(VIC),X(BHART), X(SUN),X(SMEYE), X(WINK), X(MOON),X(CONFU),X(NOEVH),
437 { X(POO), X(EYES),X(HUNRD), _______,X(SKULL),X(HORNS), X(HALO), X(FEAR), _______,X(YUMMY),X(DISAP),X(NOEVK)} 531 X(POO), X(EYES), _______,X(HUNRD), X(SKULL),X(HORNS), X(HALO), X(FEAR),X(YUMMY),_______,X(DISAP),X(NOEVK)
438}, 532),
439 533
440/* GUI 534/* GUI
441 * ,-----------------------------------------------------------------------------------. 535 * ,-----------------------------------------------------------------------------------.
442 * | | D1 | D2 | D3 | D4 | D5 | D6 | D7 | D8 | D9 | D10 | | 536 * | | D1 | D2 | D3 | D4 | D5 | D6 | D7 | D8 | D9 | D10 | |
443 * |------+------+------+------+------+-------------+------+------+------+------+------| 537 * |------+------+------+------+------+-------------+------+------+------+------+------|
444 * |Linux | | Vol- | Mute | Vol+ | | | D- | | D+ | |Qwerty| 538 * | | | Vol- | Mute | Vol+ | | | Prev | | Next | | |
539 * |------+------+------+------+------+------+------+------+------+------+------+------|
540 * | | | Prev | Play | Next | BTab | Tab | | | | | |
541 * |------+------+------+------+------+------+------+------+------+------+------+------|
542 * | | | | | | | | | | | | |
543 * `-----------------------------------------------------------------------------------'
544 */
545[_GUI] = KEYMAP(
546 XXXXXXX, G(KC_1), G(KC_2), G(KC_3), G(KC_4), G(KC_5), G(KC_6), G(KC_7), G(KC_8), G(KC_9), G(KC_0), XXXXXXX,
547 XXXXXXX, XXXXXXX, KC_VOLD, KC_MUTE, KC_VOLU, S(KC_TAB),KC_TAB, KC_WWWB, XXXXXXX, KC_WWWF, XXXXXXX, XXXXXXX,
548 XXXXXXX, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, KC_SPC, KC_SPC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
549 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
550),
551
552/* Sys
553 * ,-----------------------------------------------------------------------------------.
554 * | |Qwerty| Win | |Reset | | | USB | | | | |
555 * |------+------+------+------+------+-------------+------+------+------+------+------|
556 * | |Audio | |Dvorak| | Glow | | |WorkMn|Linux | | |
445 * |------+------+------+------+------+------+------+------+------+------+------+------| 557 * |------+------+------+------+------+------+------+------+------+------+------+------|
446 * | Win | | Prev | Play | Next | | | | | | |Colmak| 558 * | | | |Colmak| | BLE |Norman|MacOS | | | | |
447 * |------+------+------+------+------+------+------+------+------+------+------+------| 559 * |------+------+------+------+------+------+------+------+------+------+------+------|
448 * | OSX | | | | | BL- | BL+ | | | | |Workmn| 560 * | | | | | | | | | | | | |
449 * `-----------------------------------------------------------------------------------' 561 * `-----------------------------------------------------------------------------------'
450 */ 562 */
451[_GUI] = { 563[_SYS] = KEYMAP(
452 {_______, LGUI(KC_1),LGUI(KC_2),LGUI(KC_3),LGUI(KC_4),LGUI(KC_5),LGUI(KC_6),LGUI(KC_7),LGUI(KC_8),LGUI(KC_9),LGUI(KC_0), _______}, 564 XXXXXXX, QWERTY, WIN, XXXXXXX, RESET, XXXXXXX, XXXXXXX, OUT_USB, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
453 { LINUX, _______, KC_VOLD, KC_MUTE, KC_VOLU,_______,_______,KC_WWW_BACK,_______,KC_WWW_FORWARD,_______, QWERTY}, 565 XXXXXXX, FC_TOG, XXXXXXX, DVORAK, XXXXXXX, GLOW, XXXXXXX, XXXXXXX, WORKMAN, LINUX, XXXXXXX, XXXXXXX,
454 { WIN, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, _______, _______, _______, COLEMAK}, 566 XXXXXXX, XXXXXXX, XXXXXXX, COLEMAK, XXXXXXX, OUT_BLE, NORMAN, OSX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
455 { OSX, _______, _______, _______, _______, BL_DEC, BL_INC, _______, _______, _______, _______, WORKMAN} 567 _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______
456}, 568),
457 569
458}; 570};
459 571
@@ -476,6 +588,34 @@ void persistant_default_layer_set(uint16_t default_layer) {
476 default_layer_set(default_layer); 588 default_layer_set(default_layer);
477} 589}
478 590
591#ifdef DOUBLESPACE_LAYER_ENABLE
592void process_doublespace(bool pressed, bool *isactive, bool *otheractive, bool *isemitted) {
593 if (pressed) {
594 *isactive = true;
595 if (*otheractive) {
596 layer_on(_SPACE);
597 register_code(KC_LALT); // sends alt and enter layer
598 space_layer_entered = true;
599 }
600 } else {
601 *isactive = false;
602 if (space_layer_entered) {
603 unregister_code(KC_LALT); // release alt and exit layer
604 layer_off(_SPACE);
605 if (!*otheractive) {
606 space_layer_entered = false;
607 }
608 } else {
609 if (!*isemitted) {
610 register_code(KC_SPC);
611 unregister_code(KC_SPC);
612 }
613 *isemitted = false;
614 }
615 }
616}
617#endif
618
479bool process_record_user(uint16_t keycode, keyrecord_t *record) { 619bool process_record_user(uint16_t keycode, keyrecord_t *record) {
480 // faux clicky 620 // faux clicky
481 // if (record->event.pressed) PLAY_NOTE_ARRAY(tone_click, false, 0); 621 // if (record->event.pressed) PLAY_NOTE_ARRAY(tone_click, false, 0);
@@ -493,27 +633,57 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
493 #endif 633 #endif
494 #endif 634 #endif
495 635
496 bool lshifted = keyboard_report->mods & MOD_BIT(KC_LSFT); 636 bool lshift = keyboard_report->mods & MOD_BIT(KC_LSFT);
497 bool rshifted = keyboard_report->mods & MOD_BIT(KC_RSFT); 637 bool rshift = keyboard_report->mods & MOD_BIT(KC_RSFT);
638
639#ifdef DOUBLESPACE_LAYER_ENABLE
640 // double-space: send space immediately if any other key depressed before space is released
641 if ((lspace_active ^ rspace_active)
642 && keycode != LSPACE
643 && keycode != RSPACE
644 && record->event.pressed)
645 {
646 if (lspace_active) {
647 if (!lspace_emitted) {
648 register_code(KC_SPC);
649 unregister_code(KC_SPC);
650 }
651 lspace_emitted = true;
652 }
653 if (rspace_active) {
654 if (!rspace_emitted) {
655 register_code(KC_SPC);
656 unregister_code(KC_SPC);
657 }
658 rspace_emitted = true;
659 }
660 }
661
662 if (layer == _SPACE && keycode != S(KC_TAB) && keycode != KC_TAB && keycode != KC_ESC && keycode != XXXXXXX) {
663 if (record->event.pressed) {
664 unregister_code(KC_LALT);
665 } else {
666 register_code(KC_LALT);
667 }
668 }
669#endif
498 670
499 switch (keycode) { 671 switch (keycode) {
500 // Greek layer handling 672
501 case GREEK: 673#ifdef DOUBLESPACE_LAYER_ENABLE
502 if (record->event.pressed) { 674 // double-space enter space layer
503 if (lshifted || rshifted) { 675 case LSPACE:
504 layer_on(_GREEKU); 676 process_doublespace(record->event.pressed, &lspace_active, &rspace_active, &lspace_emitted);
505 layer_off(_GREEKL);
506 } else {
507 layer_on(_GREEKL);
508 layer_off(_GREEKU);
509 }
510 } else {
511 layer_off(_GREEKU);
512 layer_off(_GREEKL);
513 }
514 return false; 677 return false;
515 break; 678 break;
679 case RSPACE:
680 process_doublespace(record->event.pressed, &rspace_active, &lspace_active, &rspace_emitted);
681 return false;
682 break;
683#endif
516 684
685 // handle greek layer shift
686 // handle both shift = capslock
517 case KC_LSFT: 687 case KC_LSFT:
518 case KC_RSFT: 688 case KC_RSFT:
519 ; 689 ;
@@ -523,11 +693,34 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
523 layer_on(_GREEKU); 693 layer_on(_GREEKU);
524 layer_off(_GREEKL); 694 layer_off(_GREEKL);
525 } else { 695 } else {
526 if (lshifted ^ rshifted) { // if only one shift is pressed 696 if (lshift ^ rshift) { // if only one shift was pressed
527 layer_on(_GREEKL); 697 layer_on(_GREEKL);
528 layer_off(_GREEKU); 698 layer_off(_GREEKU);
529 } 699 }
530 } 700 }
701 } else {
702 if (record->event.pressed) {
703 if (lshift ^ rshift) { // if only one shift was pressed
704 register_code(KC_CAPS);
705 unregister_code(KC_CAPS);
706 }
707 }
708 }
709 return true;
710 break;
711
712 // press both ctrls to activate SYS layer
713 case KC_LCTL:
714 case KC_RCTL:
715 ;
716 bool lctrl = keyboard_report->mods & MOD_BIT(KC_LCTL);
717 bool rctrl = keyboard_report->mods & MOD_BIT(KC_RCTL);
718 if (record->event.pressed) {
719 if (lctrl ^ rctrl) { // if only one ctrl was pressed
720 layer_on(_SYS);
721 }
722 } else {
723 layer_off(_SYS);
531 } 724 }
532 return true; 725 return true;
533 break; 726 break;
@@ -535,13 +728,13 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
535 // QWERTZ style comma and dot: semicolon and colon when shifted 728 // QWERTZ style comma and dot: semicolon and colon when shifted
536 case KC_COMM: 729 case KC_COMM:
537 if (record->event.pressed) { 730 if (record->event.pressed) {
538 if (lshifted || rshifted) { 731 if (lshift || rshift) {
539 if (lshifted) unregister_code(KC_LSFT); 732 if (lshift) unregister_code(KC_LSFT);
540 if (rshifted) unregister_code(KC_RSFT); 733 if (rshift) unregister_code(KC_RSFT);
541 register_code(KC_SCLN); 734 register_code(KC_SCLN);
542 unregister_code(KC_SCLN); 735 unregister_code(KC_SCLN);
543 if (lshifted) register_code(KC_LSFT); 736 if (lshift) register_code(KC_LSFT);
544 if (rshifted) register_code(KC_RSFT); 737 if (rshift) register_code(KC_RSFT);
545 } else { 738 } else {
546 register_code(KC_COMM); 739 register_code(KC_COMM);
547 unregister_code(KC_COMM); 740 unregister_code(KC_COMM);
@@ -565,53 +758,73 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
565 // layout switcher 758 // layout switcher
566 case QWERTY: 759 case QWERTY:
567 if (record->event.pressed) { 760 if (record->event.pressed) {
568 #ifdef AUDIO_ENABLE
569 PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
570 #endif
571 persistant_default_layer_set(1UL<<_QWERTY); 761 persistant_default_layer_set(1UL<<_QWERTY);
572 } 762 }
573 return false; 763 return false;
574 break; 764 break;
765#ifdef LAYOUT_DVORAK
766 case DVORAK:
767 if (record->event.pressed) {
768 persistant_default_layer_set(1UL<<_DVORAK);
769 }
770 return false;
771 break;
772#endif
773#ifdef LAYOUT_COLEMAK
575 case COLEMAK: 774 case COLEMAK:
576 if (record->event.pressed) { 775 if (record->event.pressed) {
577 #ifdef AUDIO_ENABLE
578 PLAY_NOTE_ARRAY(tone_colemak, false, 0);
579 #endif
580 persistant_default_layer_set(1UL<<_COLEMAK); 776 persistant_default_layer_set(1UL<<_COLEMAK);
581 } 777 }
582 return false; 778 return false;
583 break; 779 break;
780#endif
781#ifdef LAYOUT_WORKMAN
584 case WORKMAN: 782 case WORKMAN:
585 if (record->event.pressed) { 783 if (record->event.pressed) {
586 #ifdef AUDIO_ENABLE
587 PLAY_NOTE_ARRAY(tone_workman, false, 0);
588 #endif
589 persistant_default_layer_set(1UL<<_WORKMAN); 784 persistant_default_layer_set(1UL<<_WORKMAN);
590 } 785 }
591 return false; 786 return false;
592 break; 787 break;
788#endif
789#ifdef LAYOUT_NORMAN
790 case NORMAN:
791 if (record->event.pressed) {
792 persistant_default_layer_set(1UL<<_NORMAN);
793 }
794 return false;
795 break;
796#endif
593 797
594 // layer switchers 798 // layer switchers
595 case PUNC: 799 case PUNC:
596 if (record->event.pressed) { 800 if (record->event.pressed) {
597 layer_on(_PUNC); 801 layer_on(_PUNC);
598 update_tri_layer(_PUNC, _EMOJI, _GUI); 802 update_tri_layer(_PUNC, _GREEKL, _EMOJI);
599 } else { 803 } else {
600 layer_off(_PUNC); 804 layer_off(_PUNC);
601 update_tri_layer(_PUNC, _EMOJI, _GUI); 805 update_tri_layer(_PUNC, _GREEKL, _EMOJI);
602 } 806 }
603 return false; 807 return false;
604 break; 808 break;
605 case EMOJI: 809
810 case GREEK:
606 if (record->event.pressed) { 811 if (record->event.pressed) {
607 layer_on(_EMOJI); 812 if (lshift || rshift) {
608 update_tri_layer(_PUNC, _EMOJI, _GUI); 813 layer_on(_GREEKU);
814 layer_off(_GREEKL);
815 } else {
816 layer_on(_GREEKL);
817 layer_off(_GREEKU);
818 update_tri_layer(_PUNC, _GREEKL, _EMOJI);
819 }
609 } else { 820 } else {
610 layer_off(_EMOJI); 821 layer_off(_GREEKU);
611 update_tri_layer(_PUNC, _EMOJI, _GUI); 822 layer_off(_GREEKL);
823 update_tri_layer(_PUNC, _GREEKL, _EMOJI);
612 } 824 }
613 return false; 825 return false;
614 break; 826 break;
827
615 case NUM: 828 case NUM:
616 if (record->event.pressed) { 829 if (record->event.pressed) {
617 layer_on(_NUM); 830 layer_on(_NUM);
@@ -651,6 +864,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
651 #endif 864 #endif
652 return false; 865 return false;
653 break; 866 break;
867
868 // faux clicky toggle, TBD
869 case FC_TOG:
870 return true;
871 break;
872
654 } 873 }
655 return true; 874 return true;
656} 875}
@@ -677,4 +896,17 @@ void shutdown_user()
677 stop_all_notes(); 896 stop_all_notes();
678} 897}
679 898
680#endif \ No newline at end of file 899#endif
900
901void matrix_scan_user(void) {
902}
903
904void led_set_user(uint8_t usb_led) {
905}
906
907void turn_off_capslock() {
908 if (capslock) {
909 register_code(KC_CAPS);
910 unregister_code(KC_CAPS);
911 }
912}