aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPriyadi Iman Nurcahyo <priyadi@priyadi.net>2017-02-14 03:58:12 +0700
committerPriyadi Iman Nurcahyo <priyadi@priyadi.net>2017-02-14 03:58:12 +0700
commit6c692fca7df7178c2abe673b6d5b1db686e22190 (patch)
tree54b4348332956205277217cec852c068be030ef9
parent7ae677dcb7f54960a6f58c85f3e3430bfc2797fc (diff)
downloadqmk_firmware-6c692fca7df7178c2abe673b6d5b1db686e22190.tar.gz
qmk_firmware-6c692fca7df7178c2abe673b6d5b1db686e22190.zip
Alt-tab handling in GUI layer
-rw-r--r--keyboards/handwired/promethium/keymaps/priyadi/keymap.c16
-rw-r--r--keyboards/planck/keymaps/priyadi/keymap.c14
2 files changed, 25 insertions, 5 deletions
diff --git a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
index 907da21cb..5829d2e43 100644
--- a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
+++ b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
@@ -720,14 +720,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
720 * |------+------+------+------+------+-------------+------+------+------+------+------| 720 * |------+------+------+------+------+-------------+------+------+------+------+------|
721 * | | | Vol- | Mute | Vol+ | | | Prev | | Next | | | 721 * | | | Vol- | Mute | Vol+ | | | Prev | | Next | | |
722 * |------+------+------+------+------+------+------+------+------+------+------+------| 722 * |------+------+------+------+------+------+------+------+------+------+------+------|
723 * | | | Prev | Play | Next | | | | | | | | 723 * | | | Prev | Play | Next | BTab | Tab | | | | | |
724 * |------+------+------+------+------+------+------+------+------+------+------+------| 724 * |------+------+------+------+------+------+------+------+------+------+------+------|
725 * | | | | | | | | | | | | | 725 * | | | | | | | | | | | | |
726 * `-----------------------------------------------------------------------------------' 726 * `-----------------------------------------------------------------------------------'
727 */ 727 */
728[_GUI] = KEYMAP( 728[_GUI] = KEYMAP(
729 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, 729 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,
730 XXXXXXX, XXXXXXX, KC_VOLD, KC_MUTE, KC_VOLU, XXXXXXX, XXXXXXX, KC_WWWB, XXXXXXX, KC_WWWF, XXXXXXX, XXXXXXX, 730 KC_ESC, XXXXXXX, KC_VOLD, KC_MUTE, KC_VOLU,S(KC_TAB),KC_TAB, KC_WWWB, XXXXXXX, KC_WWWF, XXXXXXX, XXXXXXX,
731 XXXXXXX, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, KC_SPC, KC_SPC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, 731 XXXXXXX, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, KC_SPC, KC_SPC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
732 XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX 732 XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX
733), 733),
@@ -763,11 +763,13 @@ void process_doublespace(bool pressed, bool *isactive, bool *otheractive, bool *
763 *isactive = true; 763 *isactive = true;
764 if (*otheractive) { 764 if (*otheractive) {
765 layer_on(_SPACE); 765 layer_on(_SPACE);
766 register_code(KC_LALT); // sends alt and enter layer
766 space_layer_entered = true; 767 space_layer_entered = true;
767 } 768 }
768 } else { 769 } else {
769 *isactive = false; 770 *isactive = false;
770 if (space_layer_entered) { 771 if (space_layer_entered) {
772 unregister_code(KC_LALT); // release alt and exit layer
771 layer_off(_SPACE); 773 layer_off(_SPACE);
772 if (!*otheractive) { 774 if (!*otheractive) {
773 space_layer_entered = false; 775 space_layer_entered = false;
@@ -786,6 +788,7 @@ void process_doublespace(bool pressed, bool *isactive, bool *otheractive, bool *
786bool process_record_user(uint16_t keycode, keyrecord_t *record) { 788bool process_record_user(uint16_t keycode, keyrecord_t *record) {
787 bool lshift = keyboard_report->mods & MOD_BIT(KC_LSFT); 789 bool lshift = keyboard_report->mods & MOD_BIT(KC_LSFT);
788 bool rshift = keyboard_report->mods & MOD_BIT(KC_RSFT); 790 bool rshift = keyboard_report->mods & MOD_BIT(KC_RSFT);
791 uint8_t layer = biton32(layer_state);
789 792
790#ifdef DOUBLESPACE_LAYER_ENABLE 793#ifdef DOUBLESPACE_LAYER_ENABLE
791 // double-space: send space immediately if any other key depressed before space is released 794 // double-space: send space immediately if any other key depressed before space is released
@@ -809,6 +812,14 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
809 rspace_emitted = true; 812 rspace_emitted = true;
810 } 813 }
811 } 814 }
815
816 if (layer == _SPACE && keycode != S(KC_TAB) && keycode != KC_TAB && keycode != KC_ESC) {
817 if (record->event.pressed) {
818 unregister_code(KC_LALT);
819 } else {
820 register_code(KC_LALT);
821 }
822 }
812#endif 823#endif
813 824
814 switch (keycode) { 825 switch (keycode) {
@@ -830,7 +841,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
830 case KC_LSFT: 841 case KC_LSFT:
831 case KC_RSFT: 842 case KC_RSFT:
832 ; 843 ;
833 uint8_t layer = biton32(layer_state);
834 if (layer == _GREEKU || layer == _GREEKL) { 844 if (layer == _GREEKU || layer == _GREEKL) {
835 if (record->event.pressed) { 845 if (record->event.pressed) {
836 layer_on(_GREEKU); 846 layer_on(_GREEKU);
diff --git a/keyboards/planck/keymaps/priyadi/keymap.c b/keyboards/planck/keymaps/priyadi/keymap.c
index 7a6305112..c279bfcd0 100644
--- a/keyboards/planck/keymaps/priyadi/keymap.c
+++ b/keyboards/planck/keymaps/priyadi/keymap.c
@@ -537,14 +537,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
537 * |------+------+------+------+------+-------------+------+------+------+------+------| 537 * |------+------+------+------+------+-------------+------+------+------+------+------|
538 * | | | Vol- | Mute | Vol+ | | | Prev | | Next | | | 538 * | | | Vol- | Mute | Vol+ | | | Prev | | Next | | |
539 * |------+------+------+------+------+------+------+------+------+------+------+------| 539 * |------+------+------+------+------+------+------+------+------+------+------+------|
540 * | | | Prev | Play | Next | | | | | | | | 540 * | | | Prev | Play | Next | BTab | Tab | | | | | |
541 * |------+------+------+------+------+------+------+------+------+------+------+------| 541 * |------+------+------+------+------+------+------+------+------+------+------+------|
542 * | | | | | | | | | | | | | 542 * | | | | | | | | | | | | |
543 * `-----------------------------------------------------------------------------------' 543 * `-----------------------------------------------------------------------------------'
544 */ 544 */
545[_GUI] = KEYMAP( 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, 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, XXXXXXX, XXXXXXX, KC_WWWB, XXXXXXX, KC_WWWF, XXXXXXX, 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, 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 549 XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX
550), 550),
@@ -594,11 +594,13 @@ void process_doublespace(bool pressed, bool *isactive, bool *otheractive, bool *
594 *isactive = true; 594 *isactive = true;
595 if (*otheractive) { 595 if (*otheractive) {
596 layer_on(_SPACE); 596 layer_on(_SPACE);
597 register_code(KC_LALT); // sends alt and enter layer
597 space_layer_entered = true; 598 space_layer_entered = true;
598 } 599 }
599 } else { 600 } else {
600 *isactive = false; 601 *isactive = false;
601 if (space_layer_entered) { 602 if (space_layer_entered) {
603 unregister_code(KC_LALT); // release alt and exit layer
602 layer_off(_SPACE); 604 layer_off(_SPACE);
603 if (!*otheractive) { 605 if (!*otheractive) {
604 space_layer_entered = false; 606 space_layer_entered = false;
@@ -656,6 +658,14 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
656 rspace_emitted = true; 658 rspace_emitted = true;
657 } 659 }
658 } 660 }
661
662 if (layer == _SPACE && keycode != S(KC_TAB) && keycode != KC_TAB && keycode != KC_ESC) {
663 if (record->event.pressed) {
664 unregister_code(KC_LALT);
665 } else {
666 register_code(KC_LALT);
667 }
668 }
659#endif 669#endif
660 670
661 switch (keycode) { 671 switch (keycode) {