aboutsummaryrefslogtreecommitdiff
path: root/keyboards/ergodox/keymaps/algernon/keymap.c
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/ergodox/keymaps/algernon/keymap.c')
-rw-r--r--keyboards/ergodox/keymaps/algernon/keymap.c192
1 files changed, 129 insertions, 63 deletions
diff --git a/keyboards/ergodox/keymaps/algernon/keymap.c b/keyboards/ergodox/keymaps/algernon/keymap.c
index 48d63fb0b..bad240337 100644
--- a/keyboards/ergodox/keymaps/algernon/keymap.c
+++ b/keyboards/ergodox/keymaps/algernon/keymap.c
@@ -64,6 +64,9 @@ enum {
64 A_8, 64 A_8,
65 A_9, 65 A_9,
66 A_0, 66 A_0,
67
68 // Fx
69 Fx,
67}; 70};
68 71
69/* Fn keys */ 72/* Fn keys */
@@ -86,6 +89,7 @@ enum {
86 CT_RBP, 89 CT_RBP,
87 CT_TMUX, 90 CT_TMUX,
88 CT_TPS, 91 CT_TPS,
92 CT_SR,
89}; 93};
90 94
91/* States & timers */ 95/* States & timers */
@@ -103,6 +107,7 @@ bool log_enable = false;
103#endif 107#endif
104 108
105bool time_travel = false; 109bool time_travel = false;
110bool skip_leds = false;
106 111
107static uint8_t is_adore = 0; 112static uint8_t is_adore = 0;
108 113
@@ -113,13 +118,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
113/* Keymap 0: Base Layer 118/* Keymap 0: Base Layer
114 * 119 *
115 * ,-----------------------------------------------------. ,-----------------------------------------------------. 120 * ,-----------------------------------------------------. ,-----------------------------------------------------.
116 * | Next/Prev | 9 | 7 @ | 5 * | 3 ^ | 1 $ | F11 | | F12 | 0 % | 2 ! | 4 # | 6 & | 8 | Plover | 121 * | Next/Prev | 9 | 7 @ | 5 * | 3 ^ | 1 $ | F11 | | Fx | 0 % | 2 ! | 4 # | 6 & | 8 | Plover |
117 * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| 122 * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
118 * | ~ | ' | , | . | P | Y | ( | | ) | F | G | C | R | L | \ | 123 * | ~ | ' | , | . | P | Y | ( | | ) | F | G | C | R | L | \ |
119 * |-----------+------+------+------+------+------| [ | | ] |------+------+------+------+------+-----------| 124 * |-----------+------+------+------+------+------| [ | | ] |------+------+------+------+------+-----------|
120 * | Tab/ARROW | A | O | E | U | I |------| |------| D | H | T | N | S | = / Arrow | 125 * | Tab/ARROW | A | O | E | U | I |------| |------| D | H | T | N | S | = / Arrow |
121 * |-----------+------+------+------+------+------| tmux | | tmux |------+------+------+------+------+-----------| 126 * |-----------+------+------+------+------+------| tmux | | tmux |------+------+------+------+------+-----------|
122 * | Play/Pause| / | Q | J | K | X | | | Pane | B | M | W | V | Z | Stop | 127 * | Play/Pause| / | Q | J | K | X | | | Pane | B | M | W | V | Z | Stop/Reset|
123 * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' 128 * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
124 * | | | | | : | | - | | | | | 129 * | | | | | : | | - | | | | |
125 * `-----------------------------------' `-----------------------------------' 130 * `-----------------------------------' `-----------------------------------'
@@ -144,10 +149,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
144 ,KC_BSPC,F(F_SFT),KC_ESC 149 ,KC_BSPC,F(F_SFT),KC_ESC
145 150
146 // right hand 151 // right hand
147 ,KC_F12 ,M(A_0) ,M(A_2) ,M(A_4) ,M(A_6) ,M(A_8) ,M(A_PLVR) 152 ,M(Fx) ,M(A_0) ,M(A_2) ,M(A_4) ,M(A_6) ,M(A_8) ,M(A_PLVR)
148 ,TD(CT_RBP),KC_F ,KC_G ,KC_C ,KC_R ,KC_L ,KC_BSLS 153 ,TD(CT_RBP),KC_F ,KC_G ,KC_C ,KC_R ,KC_L ,KC_BSLS
149 ,KC_D ,KC_H ,KC_T ,KC_N ,KC_S ,KC_EQL 154 ,KC_D ,KC_H ,KC_T ,KC_N ,KC_S ,KC_EQL
150 ,TD(CT_TPS),KC_B ,KC_M ,KC_W ,KC_V ,KC_Z ,KC_MSTP 155 ,TD(CT_TPS),KC_B ,KC_M ,KC_W ,KC_V ,KC_Z ,TD(CT_SR)
151 ,KC_MINS ,KC_NO ,KC_NO ,KC_NO ,KC_NO 156 ,KC_MINS ,KC_NO ,KC_NO ,KC_NO ,KC_NO
152 157
153 ,OSL(NMDIA),KC_DEL 158 ,OSL(NMDIA),KC_DEL
@@ -158,7 +163,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
158/* Keymap 1: Adore layer 163/* Keymap 1: Adore layer
159 * 164 *
160 * ,-----------------------------------------------------. ,-----------------------------------------------------. 165 * ,-----------------------------------------------------. ,-----------------------------------------------------.
161 * | Play/Pause| 9 | 7 @ | 5 * | 3 ^ | 1 $ | F11 | | F12 | 0 % | 2 ! | 4 # | 6 & | 8 | Plover | 166 * | Play/Pause| 9 | 7 @ | 5 * | 3 ^ | 1 $ | F11 | | Fx | 0 % | 2 ! | 4 # | 6 & | 8 | Plover |
162 * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| 167 * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
163 * | \ | X | W | C | H | F | ( | | ) | M | G | L | P | / | `~ | 168 * | \ | X | W | C | H | F | ( | | ) | M | G | L | P | / | `~ |
164 * |-----------+------+------+------+------+------| [ | | ] |------+------+------+------+------+-----------| 169 * |-----------+------+------+------+------+------| [ | | ] |------+------+------+------+------+-----------|
@@ -189,7 +194,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
189 ,KC_BSPC,F(F_SFT),KC_ESC 194 ,KC_BSPC,F(F_SFT),KC_ESC
190 195
191 // right hand 196 // right hand
192 ,KC_F12 ,M(A_0) ,M(A_2) ,M(A_4) ,M(A_6) ,M(A_8) ,M(A_PLVR) 197 ,M(Fx) ,M(A_0) ,M(A_2) ,M(A_4) ,M(A_6) ,M(A_8) ,M(A_PLVR)
193 ,TD(CT_RBP),KC_M ,KC_G ,KC_L ,KC_P ,KC_SLSH ,KC_GRV 198 ,TD(CT_RBP),KC_M ,KC_G ,KC_L ,KC_P ,KC_SLSH ,KC_GRV
194 ,KC_D ,KC_R ,KC_T ,KC_N ,KC_S ,KC_EQL 199 ,KC_D ,KC_R ,KC_T ,KC_N ,KC_S ,KC_EQL
195 ,TD(CT_TPS),KC_B ,KC_K ,KC_V ,KC_Y ,KC_J ,KC_NO 200 ,TD(CT_TPS),KC_B ,KC_K ,KC_V ,KC_Y ,KC_J ,KC_NO
@@ -342,7 +347,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
342/* Keymap 5: Navigation & Media layer 347/* Keymap 5: Navigation & Media layer
343 * 348 *
344 * ,-----------------------------------------------------. ,-----------------------------------------------------. 349 * ,-----------------------------------------------------. ,-----------------------------------------------------.
345 * | | F9 | F7 | F5 | F3 | F1 | | |ScrLCK| F10 | F2 | F4 | F6 | F8 | | 350 * | | F9 | F7 | F5 | F3 | F1 |ScrLCK| | | F10 | F2 | F4 | F6 | F8 | |
346 * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| 351 * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
347 * | | | | | | | | | | | | | | | | 352 * | | | | | | | | | | | | | | | |
348 * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| 353 * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
@@ -362,7 +367,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
362 */ 367 */
363[NMDIA] = KEYMAP( 368[NMDIA] = KEYMAP(
364// left hand 369// left hand
365 KC_NO ,KC_F9 ,KC_F7 ,KC_F5 ,KC_F3 ,KC_F1 ,KC_NO 370 KC_NO ,KC_F9 ,KC_F7 ,KC_F5 ,KC_F3 ,KC_F1 ,LGUI(KC_L)
366,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO 371,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
367,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO 372,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
368,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO 373,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
@@ -372,7 +377,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
372 ,KC_NO ,KC_NO ,KC_TRNS 377 ,KC_NO ,KC_NO ,KC_TRNS
373 378
374 // right hand 379 // right hand
375 ,LGUI(KC_L),KC_F10 ,KC_F2 ,KC_F4 ,KC_F6 ,KC_F8 ,KC_NO 380 ,KC_TRNS ,KC_F10 ,KC_F2 ,KC_F4 ,KC_F6 ,KC_F8 ,KC_NO
376 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO 381 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
377 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO 382 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
378 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO 383 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
@@ -611,6 +616,17 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
611 toggle_steno(record->event.pressed); 616 toggle_steno(record->event.pressed);
612 break; 617 break;
613 618
619 /* Fx */
620 case Fx:
621 if (record->event.pressed) {
622 set_oneshot_mods (MOD_LALT);
623 layer_on (NMDIA);
624 set_oneshot_layer (NMDIA, ONESHOT_START);
625 } else {
626 clear_oneshot_layer_state (ONESHOT_PRESSED);
627 }
628 break;
629
614 /* GUI & AppSel */ 630 /* GUI & AppSel */
615 case A_GUI: 631 case A_GUI:
616 if (record->event.pressed) { 632 if (record->event.pressed) {
@@ -780,6 +796,56 @@ static void ang_tap_dance_tmux_pane_select (qk_tap_dance_state_t *state, void *u
780 unregister_code(kc); 796 unregister_code(kc);
781} 797}
782 798
799static void
800_td_sr_each (qk_tap_dance_state_t *state, void *user_data) {
801 skip_leds = true;
802
803 switch (state->count) {
804 case 1:
805 ergodox_right_led_3_on ();
806 break;
807 case 2:
808 ergodox_right_led_2_on ();
809 break;
810 case 3:
811 ergodox_right_led_1_on ();
812 break;
813 case 4:
814 ergodox_right_led_3_off ();
815 wait_ms (50);
816 ergodox_right_led_2_off ();
817 wait_ms (50);
818 ergodox_right_led_1_off ();
819 break;
820 }
821}
822
823static void
824_td_sr_finished (qk_tap_dance_state_t *state, void *user_data) {
825 if (state->count == 1) {
826 register_code (KC_MSTP);
827 }
828 if (state->count >= 4) {
829 uprintf("CMD:reflash\n");
830 wait_ms (1000);
831 reset_keyboard ();
832 reset_tap_dance (state);
833 }
834}
835
836static void
837_td_sr_reset (qk_tap_dance_state_t *state, void *user_data) {
838 ergodox_right_led_1_off ();
839 wait_ms (50);
840 ergodox_right_led_2_off ();
841 wait_ms (50);
842 ergodox_right_led_3_off ();
843
844 if (state->count == 1) {
845 unregister_code (KC_MSTP);
846 }
847}
848
783qk_tap_dance_action_t tap_dance_actions[] = { 849qk_tap_dance_action_t tap_dance_actions[] = {
784 [CT_CLN] = ACTION_TAP_DANCE_DOUBLE (KC_COLN, KC_SCLN) 850 [CT_CLN] = ACTION_TAP_DANCE_DOUBLE (KC_COLN, KC_SCLN)
785 ,[CT_TA] = { 851 ,[CT_TA] = {
@@ -790,77 +856,75 @@ qk_tap_dance_action_t tap_dance_actions[] = {
790 ,[CT_RBP] = ACTION_TAP_DANCE_DOUBLE (KC_RBRC, KC_RPRN) 856 ,[CT_RBP] = ACTION_TAP_DANCE_DOUBLE (KC_RBRC, KC_RPRN)
791 ,[CT_TMUX]= ACTION_TAP_DANCE_FN (ang_tap_dance_tmux_finished) 857 ,[CT_TMUX]= ACTION_TAP_DANCE_FN (ang_tap_dance_tmux_finished)
792 ,[CT_TPS] = ACTION_TAP_DANCE_FN (ang_tap_dance_tmux_pane_select) 858 ,[CT_TPS] = ACTION_TAP_DANCE_FN (ang_tap_dance_tmux_pane_select)
859 ,[CT_SR] = ACTION_TAP_DANCE_FN_ADVANCED (_td_sr_each, _td_sr_finished, _td_sr_reset)
793}; 860};
794 861
795// Runs constantly in the background, in a loop. 862// Runs constantly in the background, in a loop.
796void matrix_scan_user(void) { 863void matrix_scan_user(void) {
797 static uint32_t prev_layer_state;
798 uint8_t layer = biton32(layer_state); 864 uint8_t layer = biton32(layer_state);
799 bool is_arrow = false; 865 bool is_arrow = false;
800 static char *layer_lookup[] = {"Dvorak", "ADORE", "Arrows", "AppSel", "Hungarian", "Nav/Media", "Plover"};
801
802 if (layer_state != prev_layer_state) {
803 prev_layer_state = layer_state;
804 if (layer_lookup[layer])
805 uprintf("LAYER: %s\n", layer_lookup[layer]);
806 }
807
808 866
809 if (gui_timer && timer_elapsed (gui_timer) > TAPPING_TERM) 867 if (gui_timer && timer_elapsed (gui_timer) > TAPPING_TERM)
810 unregister_code (KC_LGUI); 868 unregister_code (KC_LGUI);
811 869
812 if (layer == HUN) { 870 if (!skip_leds) {
813 ergodox_right_led_2_on(); 871 if (layer == HUN) {
814 ergodox_right_led_3_on(); 872 ergodox_right_led_2_on();
815 } else if (layer == NMDIA) { 873 ergodox_right_led_3_on();
816 ergodox_right_led_1_on(); 874 } else if (layer == NMDIA) {
817 ergodox_right_led_2_on(); 875 ergodox_right_led_1_on();
818 } else if (layer == PLVR) { 876 ergodox_right_led_2_on();
819 ergodox_right_led_1_on (); 877 } else if (layer == PLVR) {
820 ergodox_right_led_2_on (); 878 ergodox_right_led_1_on ();
821 ergodox_right_led_3_on (); 879 ergodox_right_led_2_on ();
822 } else if (layer == ADORE) { 880 ergodox_right_led_3_on ();
823 ergodox_right_led_1_on (); 881 } else if (layer == ADORE) {
824 ergodox_right_led_2_on (); 882 ergodox_right_led_1_on ();
825 ergodox_right_led_3_on (); 883 ergodox_right_led_2_on ();
826 884 ergodox_right_led_3_on ();
827 ergodox_right_led_2_set (LED_BRIGHTNESS_HI); 885
886 ergodox_right_led_2_set (LED_BRIGHTNESS_HI);
887 }
828 } 888 }
829 889
830 if (layer_state & (1UL << ARRW)) { 890 if (layer_state & (1UL << ARRW)) {
831 ergodox_right_led_1_on (); 891 if (!skip_leds) {
832 ergodox_right_led_3_on (); 892 ergodox_right_led_1_on ();
893 ergodox_right_led_3_on ();
894 }
833 is_arrow = true; 895 is_arrow = true;
834 } 896 }
835 897
836 if (keyboard_report->mods & MOD_BIT(KC_LSFT) || 898 if (!skip_leds) {
837 ((get_oneshot_mods() & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out())) { 899 if (keyboard_report->mods & MOD_BIT(KC_LSFT) ||
838 ergodox_right_led_1_set (LED_BRIGHTNESS_HI); 900 ((get_oneshot_mods() & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out())) {
839 ergodox_right_led_1_on (); 901 ergodox_right_led_1_set (LED_BRIGHTNESS_HI);
840 } else { 902 ergodox_right_led_1_on ();
841 ergodox_right_led_1_set (LED_BRIGHTNESS_LO); 903 } else {
842 if (layer != NMDIA && layer != PLVR && layer != ADORE && !is_arrow) 904 ergodox_right_led_1_set (LED_BRIGHTNESS_LO);
843 ergodox_right_led_1_off (); 905 if (layer != NMDIA && layer != PLVR && layer != ADORE && !is_arrow)
844 } 906 ergodox_right_led_1_off ();
907 }
845 908
846 if (keyboard_report->mods & MOD_BIT(KC_LALT) || 909 if (keyboard_report->mods & MOD_BIT(KC_LALT) ||
847 ((get_oneshot_mods() & MOD_BIT(KC_LALT)) && !has_oneshot_mods_timed_out())) { 910 ((get_oneshot_mods() & MOD_BIT(KC_LALT)) && !has_oneshot_mods_timed_out())) {
848 ergodox_right_led_2_set (LED_BRIGHTNESS_HI); 911 ergodox_right_led_2_set (LED_BRIGHTNESS_HI);
849 ergodox_right_led_2_on (); 912 ergodox_right_led_2_on ();
850 } else { 913 } else {
851 ergodox_right_led_2_set (LED_BRIGHTNESS_LO); 914 ergodox_right_led_2_set (LED_BRIGHTNESS_LO);
852 if (layer != HUN && layer != NMDIA && layer != PLVR && layer != ADORE) 915 if (layer != HUN && layer != NMDIA && layer != PLVR && layer != ADORE)
853 ergodox_right_led_2_off (); 916 ergodox_right_led_2_off ();
854 } 917 }
855 918
856 if (keyboard_report->mods & MOD_BIT(KC_LCTRL) || 919 if (keyboard_report->mods & MOD_BIT(KC_LCTRL) ||
857 ((get_oneshot_mods() & MOD_BIT(KC_LCTRL)) && !has_oneshot_mods_timed_out())) { 920 ((get_oneshot_mods() & MOD_BIT(KC_LCTRL)) && !has_oneshot_mods_timed_out())) {
858 ergodox_right_led_3_set (LED_BRIGHTNESS_HI); 921 ergodox_right_led_3_set (LED_BRIGHTNESS_HI);
859 ergodox_right_led_3_on (); 922 ergodox_right_led_3_on ();
860 } else { 923 } else {
861 ergodox_right_led_3_set (LED_BRIGHTNESS_LO); 924 ergodox_right_led_3_set (LED_BRIGHTNESS_LO);
862 if (layer != HUN && layer != PLVR && layer != ADORE && !is_arrow) 925 if (layer != HUN && layer != PLVR && layer != ADORE && !is_arrow)
863 ergodox_right_led_3_off (); 926 ergodox_right_led_3_off ();
927 }
864 } 928 }
865 929
866 LEADER_DICTIONARY() { 930 LEADER_DICTIONARY() {
@@ -974,7 +1038,9 @@ const qk_ucis_symbol_t ucis_symbol_table[] = UCIS_TABLE
974 UCIS_SYM("snowman", 0x2603), 1038 UCIS_SYM("snowman", 0x2603),
975 UCIS_SYM("coffee", 0x2615), 1039 UCIS_SYM("coffee", 0x2615),
976 UCIS_SYM("heart", 0x2764), 1040 UCIS_SYM("heart", 0x2764),
977 UCIS_SYM("bolt", 0x26a1) 1041 UCIS_SYM("bolt", 0x26a1),
1042 UCIS_SYM("pi", 0x03c0),
1043 UCIS_SYM("mouse", 0x1f401)
978); 1044);
979 1045
980bool process_record_user (uint16_t keycode, keyrecord_t *record) { 1046bool process_record_user (uint16_t keycode, keyrecord_t *record) {