aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPriyadi Iman Nurcahyo <priyadi@priyadi.net>2017-02-15 05:01:03 +0700
committerPriyadi Iman Nurcahyo <priyadi@priyadi.net>2017-02-15 05:01:03 +0700
commitdf311c7b40cb6e611a522331dca9836f6eef9dce (patch)
tree8fff78f001ae40368a5ab8c6a997227c7423efea
parent3758cfd95fe25d6928cf6650b8be3301335dada9 (diff)
downloadqmk_firmware-df311c7b40cb6e611a522331dca9836f6eef9dce.tar.gz
qmk_firmware-df311c7b40cb6e611a522331dca9836f6eef9dce.zip
num, func, punc 3state layer done right
-rw-r--r--keyboards/handwired/promethium/keymaps/priyadi/keymap.c99
-rw-r--r--keyboards/handwired/promethium/promethium.h4
2 files changed, 46 insertions, 57 deletions
diff --git a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
index 08a425823..9f07a7d08 100644
--- a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
+++ b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
@@ -56,7 +56,7 @@ enum layers {
56 _GREEKL, 56 _GREEKL,
57 57
58 _NUM, 58 _NUM,
59 _FUNC, 59 _FUN,
60 _PUNC, 60 _PUNC,
61 61
62 _EMOJI, 62 _EMOJI,
@@ -76,9 +76,9 @@ enum planck_keycodes {
76 NORMAN, 76 NORMAN,
77 77
78 // layer switchers 78 // layer switchers
79 PUNC, 79 // PUNC,
80 NUM, 80 // NUM,
81 FUNC, 81 // FUN,
82 EMOJI, 82 EMOJI,
83 GUI, 83 GUI,
84 GREEK, 84 GREEK,
@@ -92,11 +92,16 @@ enum planck_keycodes {
92 LSPACE, 92 LSPACE,
93 RSPACE, 93 RSPACE,
94 GLOW, 94 GLOW,
95 FOR0,
95 96
96 // stub 97 // stub
97 AUDIO 98 AUDIO
98}; 99};
99 100
101#define NUM MO(_NUM)
102#define FUN MO(_FUN)
103#define FUN0 LT(_FUN, KC_0)
104
100// unicode map 105// unicode map
101 106
102enum unicode_name { 107enum unicode_name {
@@ -369,14 +374,14 @@ const uint8_t PROGMEM LED_MODS[] = {
369const uint8_t PROGMEM LED_FN[] = { 374const uint8_t PROGMEM LED_FN[] = {
370 LED_PUNC, 375 LED_PUNC,
371 LED_NUM, 376 LED_NUM,
372 LED_FUNC, 377 LED_FUN,
373 LED_EMOJI 378 LED_EMOJI
374}; 379};
375 380
376const uint8_t PROGMEM LED_INDICATORS[] = { 381const uint8_t PROGMEM LED_INDICATORS[] = {
377 LED_IND_EMOJI, 382 LED_IND_EMOJI,
378 LED_IND_NUM, 383 LED_IND_NUM,
379 LED_IND_FUNC, 384 LED_IND_FUN,
380 LED_IND_BATTERY, 385 LED_IND_BATTERY,
381 LED_IND_USB, 386 LED_IND_USB,
382 LED_IND_BLUETOOTH, 387 LED_IND_BLUETOOTH,
@@ -435,7 +440,7 @@ void led_reset(void) {
435void led_set_layer_indicator(void) { 440void led_set_layer_indicator(void) {
436 static uint8_t oldlayer = 255; 441 static uint8_t oldlayer = 255;
437 442
438 rgbsps_set(LED_IND_FUNC, 0, 0, 0); 443 rgbsps_set(LED_IND_FUN, 0, 0, 0);
439 // rgbsps_set(LED_IND_NUM, 0, 0, 0); 444 // rgbsps_set(LED_IND_NUM, 0, 0, 0);
440 rgbsps_set(LED_IND_EMOJI, 0, 0, 0); 445 rgbsps_set(LED_IND_EMOJI, 0, 0, 0);
441 446
@@ -454,8 +459,8 @@ void led_set_layer_indicator(void) {
454 } 459 }
455 460
456 switch(layer) { 461 switch(layer) {
457 case _FUNC: 462 case _FUN:
458 rgbsps_set(LED_IND_FUNC, 15, 0, 0); 463 rgbsps_set(LED_IND_FUN, 15, 0, 0);
459 break; 464 break;
460 // case _NUM: 465 // case _NUM:
461 // rgbsps_set(LED_IND_NUM, 0, 0, 15); 466 // rgbsps_set(LED_IND_NUM, 0, 0, 15);
@@ -464,7 +469,7 @@ void led_set_layer_indicator(void) {
464 rgbsps_set(LED_IND_EMOJI, 15, 15, 0); 469 rgbsps_set(LED_IND_EMOJI, 15, 15, 0);
465 break; 470 break;
466 default: 471 default:
467 rgbsps_set(LED_IND_FUNC, 3, 3, 3); 472 rgbsps_set(LED_IND_FUN, 3, 3, 3);
468 // rgbsps_set(LED_IND_NUM, 3, 3, 3); 473 // rgbsps_set(LED_IND_NUM, 3, 3, 3);
469 rgbsps_set(LED_IND_EMOJI, 3, 3, 3); 474 rgbsps_set(LED_IND_EMOJI, 3, 3, 3);
470 } 475 }
@@ -520,7 +525,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
520 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,
521 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 ,
522 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,
523 KC_LCTL, KC_LALT, KC_LGUI, XXXXXXX, 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
524), 529),
525 530
526/* Dvorak 531/* Dvorak
@@ -636,10 +641,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
636 * `-----------------------------------------------------------------------------------' 641 * `-----------------------------------------------------------------------------------'
637 */ 642 */
638[_NUM] = KEYMAP( 643[_NUM] = KEYMAP(
639 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, S(KC_A), KC_7, KC_8, KC_9, S(KC_D), _______, 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), _______,
640 KC_GRV, 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), _______,
641 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,
642 _______, _______, _______, _______, _______, _______, _______, LT(_PUNC, KC_0), KC_COMM, KC_DOT, KC_X, _______ 647 _______, _______, _______, _______, _______, _______, _______, FUN0 , KC_COMM, KC_DOT, KC_X, _______
643), 648),
644 649
645/* Func 650/* Func
@@ -653,11 +658,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
653 * | | | | | | | | | | | | 658 * | | | | | | | | | | | |
654 * `-----------------------------------------------------------------------------------' 659 * `-----------------------------------------------------------------------------------'
655 */ 660 */
656[_FUNC] = KEYMAP( 661[_FUN] = KEYMAP(
657 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,
658 XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8, KC_PSCR, 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,
659 _______, 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, _______,
660 _______, _______, _______, _______, PUNC, _______, _______, _______, _______, _______, _______, _______ 665 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
661), 666),
662 667
663/* Uppercase Greek 668/* Uppercase Greek
@@ -785,10 +790,25 @@ void process_doublespace(bool pressed, bool *isactive, bool *otheractive, bool *
785} 790}
786#endif 791#endif
787 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
788bool process_record_user(uint16_t keycode, keyrecord_t *record) { 804bool process_record_user(uint16_t keycode, keyrecord_t *record) {
789 bool lshift = keyboard_report->mods & MOD_BIT(KC_LSFT); 805 static bool lshift = false;
790 bool rshift = keyboard_report->mods & MOD_BIT(KC_RSFT); 806 static bool rshift = false;
791 uint8_t layer = biton32(layer_state); 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);
792 812
793#ifdef DOUBLESPACE_LAYER_ENABLE 813#ifdef DOUBLESPACE_LAYER_ENABLE
794 // 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
@@ -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;
diff --git a/keyboards/handwired/promethium/promethium.h b/keyboards/handwired/promethium/promethium.h
index d6fea76ce..caad5258e 100644
--- a/keyboards/handwired/promethium/promethium.h
+++ b/keyboards/handwired/promethium/promethium.h
@@ -33,7 +33,7 @@ enum led_sequence {
33 LED_IND_USB, 33 LED_IND_USB,
34 LED_IND_BATTERY, 34 LED_IND_BATTERY,
35 35
36 LED_IND_FUNC, 36 LED_IND_FUN,
37 LED_IND_NUM, 37 LED_IND_NUM,
38 LED_IND_EMOJI, 38 LED_IND_EMOJI,
39 39
@@ -60,7 +60,7 @@ enum led_sequence {
60 LED_U, 60 LED_U,
61 LED_J, 61 LED_J,
62 LED_M, 62 LED_M,
63 LED_FUNC, 63 LED_FUN,
64 64
65 LED_RSPC, 65 LED_RSPC,
66 LED_N, 66 LED_N,