]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/ergodox_infinity/keymaps/gordon/keymap.c
a failed attempt at hot-plugging
[qmk_firmware.git] / keyboards / ergodox_infinity / keymaps / gordon / keymap.c
1 #include QMK_KEYBOARD_H
2 #include "debug.h"
3 #include "action_layer.h"
4 #include "version.h"
5 #include "process_keycode/process_tap_dance.h"
6 #include "gordon.h"
7
8 #include "keymap_german.h"
9
10 #include "keymap_nordic.h"
11
12
13 #define TLSLSH   M(TIL_SLASH)
14 #define F1_F13   TD(F1F13)
15 #define F2_F14   TD(F2F14)
16 #define F5_F15   TD(F5F15)
17 #define F4_ALTF4 TD(ALTF4)
18 #define END_ESC  TD(ENDESC)
19 #define SHF6_AF7 TD(F6F7)
20 #define F12_RUN  TD(F12ETAPS)
21 #define COMMA_TD TD(COMMA)
22
23 enum custom_keycodes {
24   PLACEHOLDER = SAFE_RANGE, // can always be here
25   EPRM,
26   VRSN,
27   RGB_SLD,
28 };
29
30 //Tap dance enums
31 enum {
32   F12TAP = 0,
33   F12ETAPS,
34   CALCCOMP,
35   REFRESH, //send R, or Control+R if double tapped.
36   ENDESC,
37   XESC, //'quad function'. x, control, escape, alt
38   ALY2, //'quad function': a, Hyper, ctrl+a, layer 2
39   PRLOCK,
40   F6F7, // Shift F6 or Alt F7
41   TABCOMBO,
42   FCTRL,
43   F3D,
44   ALTF4,
45   COMMA,
46   AT,
47   HTAB,
48   F1F13,
49   F2F14,
50   F5F15
51 };
52
53
54
55 // Custom tapping terms for each key.
56 // Requires changes to action_taping.c
57 /* uint16_t get_tapping_term(keyevent_t* event) {
58     uint16_t keycode = keymap_key_to_keycode(layer_switch_get_layer(event->key), event->key);
59     if (keycode == LT(3,KC_E) ) {
60         return TAPPING_TERM + 50;
61     }
62     return TAPPING_TERM;
63 } */
64
65             
66 // Tap Dance Definitions
67 qk_tap_dance_action_t tap_dance_actions[] = {
68   // simple tap dance
69   [F12ETAPS] = ACTION_TAP_DANCE_DOUBLE(KC_F12,LSFT(LCTL(KC_F10))),  
70   [REFRESH] = ACTION_TAP_DANCE_DOUBLE(KC_R,LCTL(KC_R)),
71   [ENDESC] = ACTION_TAP_DANCE_DOUBLE(KC_END, KC_ESC),
72   [CALCCOMP] = ACTION_TAP_DANCE_DOUBLE(KC_CALCULATOR, KC_MY_COMPUTER),
73   [ALTF4] = ACTION_TAP_DANCE_DOUBLE(KC_F4,LALT(KC_F4)),
74   [F6F7] = ACTION_TAP_DANCE_DOUBLE(LSFT(KC_F6), LALT(KC_F7)),
75   [F1F13] = ACTION_TAP_DANCE_DOUBLE(KC_F1, KC_F13),
76   [F2F14] = ACTION_TAP_DANCE_DOUBLE(KC_F2, KC_F14),
77   [F5F15] = ACTION_TAP_DANCE_DOUBLE(KC_F5, KC_F15),
78   [TABCOMBO] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, tab_finished, tab_reset),
79   [F3D] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, bt_finished, bt_reset),
80   [COMMA] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, comma_finished, comma_reset),
81   [HTAB] = ACTION_TAP_DANCE_FN_ADVANCED(NULL,h_finished, h_reset)
82 };
83
84 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
85
86
87 //**************************FIRST LAYER - LAYER ZERO ************************************** 
88   [_QWERTY] = KEYMAP(
89
90     SHF6_AF7,   F1_F13,    F2_F14,   TD(F3D), F4_ALTF4,    F5_F15,   KC_F11,
91     ________,     KC_Q,  CTR_SH_W,     NAV_E, CTR_AL_R,      KC_T, PRINTSCR,
92       KC_TAB,     KC_A,     MEH_S,  NUMPAD_D,   CTRL_F,     WIN_G,
93     ALT_SHFT,   CTRL_Z,   HYPER_X,   MOUSE_C,    ALT_V,      KC_B, TT(_MOUSE),
94     KC_MINUS, KC_GRAVE, KC_DELETE,   KC_LEFT, KC_RIGHT,
95                                     
96                                               KC_INSERT,  KC_DELETE, 
97                                                            ALT_HOME,
98                                     KC_LSHIFT, SYMB_BSP,    END_ESC,
99
100                  F12_RUN,    KC_F6,    KC_F7,    KC_F8,    KC_F9,    KC_F10, TD(CALCCOMP),
101                 ________,     KC_Y,     KC_U,     KC_I,     KC_O,      KC_P,  ________,
102                              WIN_H,   CTRL_J,     KC_K,    MEH_L,  COL_MOUS,  ________,
103                  KC_LEAD,     KC_N,    ALT_M, COMMA_TD, HYPE_DOT,  KC_SLASH, TD(TABCOMBO),
104                                        KC_UP,  KC_DOWN,   KC_ESC,    KC_TILD,    KC_UNDS,
105
106   KC_ESCAPE,  KC_DELETE,
107          ALT_T(KC_PGUP),
108   RCTL_T(KC_PGDOWN), LT(_NAV,KC_ENTER), SPAC_SYM),
109
110
111   //**************************SYMBOLS LAYER**************************
112   [_SYMBOLS] = KEYMAP(
113     ________, ________, ________, ________, ________, ________,  ________,
114     ________,   TLSLSH,    KC_AT,  KC_LCBR,  KC_RCBR,  KC_CIRC,  ________,
115     ________,  KC_EXLM,  KC_PIPE,  KC_LPRN,  KC_RPRN, M(DEREF),
116     ________,KC_DOLLAR,  KC_PERC, LSQUIGLY, RSQUIGLY, ________,  ________,
117     ________,  M(TICK3),  ________,  ________,  ________,  
118
119                                     ________,________,
120                                              ________,
121                            ________,________,________,
122
123
124                   ________, ________, ________, ________, ________, ________, NUMLOCK,
125                   ________,   TLSLSH,  KC_PIPE,  KC_PLUS,  KC_AMPR, ________, CAPLOCK,
126                           M(EQRIGHT),  KC_DQUO, KC_EQUAL, KC_QUOTE,KC_SCOLON, ________,
127                   ________,  KC_PIPE, BK_SLASH,  ASTERSK,   KC_DOT, KC_SLASH, ________,
128                   ________,________,________,M(TILD3),________,
129                                                               ________,________,
130                                                                        ________,
131                                                      ________,________,________),
132   
133   //**************************MOUSE MOVEMENT LAYER**************************
134   [_MOUSE] = KEYMAP(RESET,________,________,________,________,________,________,
135                     RESET,________,________,KC_MS_UP,________,KC_MS_WH_UP,CALTDEL,
136                     ________,________,KC_MS_LEFT,KC_MS_DOWN,KC_MS_RIGHT,KC_MS_WH_DOWN,
137                     KC_SECRET_1,________,HYPR(KC_F13),________,HYPR(KC_F14),KC_SECRET_2,________,
138                     ________,________,HYPR(KC_F15),KC_MS_WH_LEFT,KC_MS_WH_RIGHT,
139                     
140                                                        ________,________,
141                                                                 ________,
142                                           KC_MS_BTN1,KC_MS_BTN2,________,
143                                           
144                                          
145                     ________,________,________,________,________,________,________,
146                     KC_MS_WH_UP,________,________,KC_UP,________,________,________,
147                     ________,KC_LEFT,KC_DOWN,KC_RIGHT,________,________,
148                     KC_MS_WH_DOWN,________,KC_PGUP,KC_PGDOWN,KC_MEDIA_NEXT_TRACK,________,________,
149                     KC_AUDIO_VOL_UP,KC_AUDIO_VOL_DOWN,KC_AUDIO_MUTE,KC_MEDIA_PLAY_PAUSE,________,
150                     ________,________,
151                     ________,
152                     ________,________,KC_WWW_BACK),
153
154
155
156
157   //**************************WINDOWS NAVIGATION LAYER**************************
158
159   [_NAV] = KEYMAP(________,________,________,________,________,________,________,
160                   ________,________,SNAPLEFT,________,SNAPRGHT,LALT(KC_LEFT),________,
161                   ________,LCTL(KC_W),PREVTAB,LGUI(KC_D),NEXTTAB,________,
162                   ________,________,WORKLEFT,________,WORKRIGHT,________,________,
163                   ________,________,________,________,________,
164                   
165                   ________,________,
166                            ________,
167          ________,________,________, 
168          
169          
170          ________,________,________,________,________,________,________,
171          ________,________,SNAPUP  ,KC_UP   ,SNAPDOWN,________,________,
172                   ________,KC_LEFT ,KC_DOWN ,KC_RIGHT,________,________,
173          ________,________,________,________,________,________,________,
174          ________,________,________,________,________,
175          
176          
177          ________,________,
178          ________,
179          ________,________,________),
180
181   //****************************NUMPAD LAYER****************************
182   [_NUMPAD] = KEYMAP(________,________,________,________,________,________,________,
183                      ________,________,________,________,________,________,________,
184                      ________,________,________,________,________,________,
185                      ________,________,________,________,________,________,________,
186                      ________,________,________,________,________,
187                      
188                      ________,________,
189                      ________,
190                      ________,________,________,
191                      
192                      BL_TOGG ,BL_STEP ,________,________,________,________,________,
193                      ________,________,KC_7    ,KC_8    ,KC_9    ,________,________,
194                               ________,KC_4    ,KC_5    ,KC_6    ,________,________,
195                      ________,________,KC_1    ,KC_2    ,KC_3    ,________,________,
196                                        KC_0    ,KC_0 ,  KC_DOT   ,________,________,
197                                        
198                                        ________,________,
199                                        ________,
200                                        ________,________,KC_0),
201   //****************************TEXT/INTELLIJ NAVIGATION LAYER****************************
202   [_TEXTNAV] = KEYMAP(________,________,________,________,________,________,________,
203                       ________,MEH(KC_Q),LSFT(KC_ESCAPE),MEH(KC_D),MEH(KC_2),LALT(LSFT(KC_UP)),________,
204                       ________,LALT(KC_F7),LCTL(KC_LEFT),LCTL(KC_B),LCTL(KC_RIGHT),LALT(LSFT(KC_DOWN)),
205                       ________,________,________,LCTL(LSFT(KC_COMMA)),MEH(KC_DOT),LALT(KC_MS_WH_UP),________,________,________,________,________,________,________,________,________,________,LCTL(KC_DELETE),________,LALT(LSFT(KC_F9)),________,________,________,________,________,________,________,MEH(KC_5),LALT(LSFT(KC_Z)),________,LALT(KC_Z),________,________,________,LCTL(LSFT(KC_LEFT)),LALT(LCTL(KC_S)),LCTL(LSFT(KC_RIGHT)),LCTL(LSFT(KC_COMMA)),________,________,________,________,________,________,________,________,________,________,________,________,________,________,________,________,________,________,________)
206 };
207
208 const uint16_t PROGMEM fn_actions[] = {
209   [1] = ACTION_LAYER_TAP_TOGGLE(1)
210 };
211
212 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
213 {
214       switch(id) {
215         case INFOQM: {
216           if (record->event.pressed) {
217             SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
218           }
219           break;
220         }
221
222         case TIL_SLASH: {
223           if (record->event.pressed) {
224             SEND_STRING ("~/.");
225           }
226           break;
227         }
228
229         case DEREF: {
230           if (record->event.pressed) {
231             SEND_STRING ("->");
232           }
233           break;
234         }
235         
236         case EQRIGHT: {
237           if (record->event.pressed) {
238             SEND_STRING ("=>");
239           }
240           break;
241         }
242
243         case TICK3: {
244           if (record->event.pressed) {
245             SEND_STRING ("```");
246           }
247           break;
248         }
249
250         case TILD3: {
251           if (record->event.pressed) {
252             SEND_STRING ("~~~");
253           }
254           break;
255         }
256
257         case ALTTAB_START: {
258           register_code(KC_LALT);
259           layer_on(8);
260         }
261
262         case ALTTAB_END: {
263           unregister_code(KC_LALT);
264           layer_off(8);
265         }
266
267
268
269       }
270       return MACRO_NONE;
271 };
272
273 void matrix_scan_user(void) {
274
275     uint8_t layer = biton32(layer_state);
276
277     ergodox_board_led_on();
278     ergodox_led_all_on();
279
280     ergodox_board_led_off();
281     ergodox_right_led_1_off();
282     ergodox_right_led_2_off();
283     ergodox_right_led_3_off();
284     switch (layer) {
285         case _SYMBOLS:
286             ergodox_right_led_1_on();
287             break;
288         case _MOUSE:
289             ergodox_right_led_2_on();
290             break;
291         case _NUMPAD:
292             ergodox_right_led_3_on();
293             break;
294         case _NAV:
295             ergodox_right_led_1_on();
296             ergodox_right_led_2_on();
297             break;
298         case 5:
299             ergodox_right_led_1_on();
300             ergodox_right_led_3_on();
301             break;
302         case 6:
303             ergodox_right_led_2_on();
304             ergodox_right_led_3_on();
305             break;
306         case 7:
307             ergodox_right_led_1_on();
308             ergodox_right_led_2_on();
309             ergodox_right_led_3_on();
310             break;
311         default:
312             break;
313     }
314
315 };