]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/tada68/keymaps/maartenwut/keymap.c
Remove all Makefiles from the keyboards directory. (#1660)
[qmk_firmware.git] / keyboards / tada68 / keymaps / maartenwut / keymap.c
1 #include "tada68.h"
2 #include "action_layer.h"
3 #include "timer.h"
4 #include "bootloader.h"
5 #include "command.h"
6
7 #define _MA 0
8 #define _GA 1
9 #define _FL 2
10 #define _AR 3
11 #define _LO 4
12 #define _UL 5
13
14 #define TRNS KC_TRNS
15 #define trigger_time 400
16
17 #define T1 M(1)
18 #define T2 M(2)
19 #define T3 M(3)
20 #define T4 M(4)
21 #define T5 M(5)
22 #define T6 M(6)
23 #define T7 M(7)
24 #define T8 M(8)
25 #define T9 M(9)
26 #define T10 M(10)
27 #define T11 M(11)
28 #define T12 M(12)
29 #define END_HOME M(0)
30 #define LSHIFT OSM(MOD_LSFT)
31 #define SPACE LT(_AR, KC_SPC)
32
33 static uint16_t key_timer;
34
35 enum emoticons {
36         LENNY = SAFE_RANGE,
37         DWNHRT,
38         SHRUG
39 };
40
41 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
42   /* Keymap _MA: Main Layer, Default
43    * ,----------------------------------------------------------------.
44    * |Esc | 1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Backsp |P/P |
45    * |----------------------------------------------------------------| 
46    * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|  \  |Del |
47    * |----------------------------------------------------------------|
48    * |CAPS   |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return |PgUp|
49    * |----------------------------------------------------------------|
50    * |Shft|End|  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift | Up|PgDn|
51    * |----------------------------------------------------------------|
52    * |Ctrl|Win |Alt |        Space          |Alt|Ctrl| FN|Lef|Dow|Rig |
53    * `----------------------------------------------------------------'
54    */
55 [_MA] = KEYMAP_ANSI(
56   KC_ESC,       T1,             T2,             T3,             T4,             T5,             T6,             T7,             T8,             T9,             T10,            T11,            T12,            KC_BSPC,        KC_MPLY, \
57   KC_TAB,       KC_Q,           KC_W,           KC_E,           KC_R,           KC_T,           KC_Y,           KC_U,           KC_I,           KC_O,           KC_P,           KC_LBRC,        KC_RBRC,        KC_BSLS,        KC_DEL, \
58   KC_CAPS,      KC_A,           KC_S,           KC_D,           KC_F,           KC_G,           KC_H,           KC_J,           KC_K,           KC_L,           KC_SCLN,        KC_QUOT,                                KC_ENT,         KC_PGUP, \
59   LSHIFT,       END_HOME,       KC_Z,           KC_X,           KC_C,           KC_V,           KC_B,           KC_N,           KC_M,           KC_COMM,        KC_DOT,         KC_SLSH,        KC_RSFT,    KC_UP,              KC_PGDN, \
60   KC_LCTL,      KC_LGUI,        KC_LALT,                                                        SPACE,                                                                                  KC_RALT,        KC_RCTRL,       MO(_FL),        KC_LEFT,        KC_DOWN,        KC_RGHT),
61   
62   /* Keymap _FL: Function Layer
63    * ,----------------------------------------------------------------.
64    * |~` | F1|F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|Reset  |Prsc|
65    * |----------------------------------------------------------------|
66    * |     |MbL|MsU|MbR|   |   |   |   |   |   |   |   |   |     |_LO |
67    * |----------------------------------------------------------------|
68    * |      |MsL|MsD|MsR|   |_GA|   |   |   |   |   |   |        |Hme |
69    * |----------------------------------------------------------------|
70    * |    |   |   |   |   |   |   |   |   |VoU|VoD|Mut|      |MwU|End |
71    * |----------------------------------------------------------------|
72    * |    |    |    |                       |   |   |    |MwL|MwD|MwR |  
73    * `----------------------------------------------------------------'
74    */
75 [_FL] = KEYMAP_ANSI(
76   KC_GRV,       KC_F1,          KC_F2,          KC_F3,          KC_F4,          KC_F5,          KC_F6,          KC_F7,          KC_F8,          KC_F9,          KC_F10,         KC_F11,         KC_F12,         RESET,          KC_PSCR, \
77   TRNS,         KC_BTN1,        KC_MS_U,        KC_BTN2,        TRNS,           TRNS,           TRNS,           TRNS,           TRNS,           TRNS,           TRNS,           TRNS,           TRNS,           TRNS,           TO(_LO), \
78   TRNS,         KC_MS_L,        KC_MS_D,        KC_MS_R,        TRNS,           TG(_GA),        TRNS,           TRNS,           TRNS,           TRNS,           TRNS,           TRNS,                                   TRNS,           KC_HOME, \
79   TRNS,         TRNS,           TRNS,           TRNS,           TRNS,           TRNS,           TRNS,           TRNS,           TRNS,           KC_VOLD,        KC_VOLU,        KC_MUTE,        TRNS,           KC_WH_U,        KC_END, \
80   TRNS,         TRNS,           TRNS,                                                           TRNS,                                                                                   TRNS,           TRNS,           TRNS,           KC_WH_L,        KC_WH_D,        KC_WH_R),
81
82   /* Keymap _AR: Arrow layer
83    * ,----------------------------------------------------------------.
84    * |~` | F1|F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|       |    |
85    * |----------------------------------------------------------------|
86    * |Lenny|   |   |   |   |   |   |   |   |   |   |   |   |     |    |
87    * |----------------------------------------------------------------|
88    * |Dwnhrt|   |   |   |   |   |Lft|Dwn| Up|Rgt|   |   |        |    |
89    * |----------------------------------------------------------------|
90    * |Shrg|   |   |   |   |   |   |   |   |   |   |   |      |   |    |
91    * |----------------------------------------------------------------|
92    * |    |    |    |                       |   |   |    |   |   |    |
93    * `----------------------------------------------------------------'
94    */
95 [_AR] = KEYMAP_ANSI(
96  KC_GRV,        KC_F1,          KC_F2,          KC_F3,          KC_F4,          KC_F5,          KC_F6,          KC_F7,          KC_F8,          KC_F9,          KC_F10,         KC_F11,         KC_F12,         TRNS,           TRNS, \
97   LENNY,        TRNS,           TRNS,           TRNS,           TRNS,           TRNS,           TRNS,           TRNS,           TRNS,           TRNS,           TRNS,           TRNS,           TRNS,           TRNS,           TRNS, \
98   DWNHRT,       TRNS,           TRNS,           TRNS,           TRNS,           TRNS,           KC_LEFT,        KC_DOWN,        KC_UP,          KC_RGHT,        TRNS,           TRNS,                                   TRNS,           TRNS, \
99   SHRUG,        TRNS,           TRNS,           TRNS,           TRNS,           TRNS,           TRNS,           TRNS,           TRNS,           TRNS,           TRNS,           TRNS,           TRNS,           TRNS,           TRNS, \
100   TRNS,         TRNS,           TRNS,                                                           TRNS,                                                                                   TRNS,           TRNS,           TRNS,           TRNS,           TRNS,           TRNS),
101
102   /* Keymap _GA: Game layer
103    * ,----------------------------------------------------------------.
104    * |Esc | 1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Backsp |P/P |
105    * |----------------------------------------------------------------| 
106    * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|  \  |Del |
107    * |----------------------------------------------------------------|
108    * |CAPS   |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return |PgUp|
109    * |----------------------------------------------------------------|
110    * |Shft|End|  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift | Up|PgDn|
111    * |----------------------------------------------------------------|
112    * |Ctrl|Win |Alt |        Space          |Alt|Ctrl| FN|Lef|Dow|Rig |
113    * `----------------------------------------------------------------'
114    */
115 [_GA] = KEYMAP_ANSI(
116   KC_ESC,       T1,             T2,             T3,             T4,             T5,             T6,             T7,             T8,             T9,             T10,            T11,            T12,            KC_BSPC,        KC_MPLY, \
117   KC_TAB,       KC_Q,           KC_W,           KC_E,           KC_R,           KC_T,           KC_Y,           KC_U,           KC_I,           KC_O,           KC_P,           KC_LBRC,        KC_RBRC,        KC_BSLS,        KC_DEL, \
118   KC_CAPS,      KC_A,           KC_S,           KC_D,           KC_F,           KC_G,           KC_H,           KC_J,           KC_K,           KC_L,           KC_SCLN,        KC_QUOT,                                KC_ENT,         KC_PGUP, \
119   KC_LSFT,      END_HOME,       KC_Z,           KC_X,           KC_C,           KC_V,           KC_B,           KC_N,           KC_M,           KC_COMM,        KC_DOT,         KC_SLSH,        KC_RSFT,    KC_UP,              KC_PGDN, \
120   KC_LCTL,      KC_LGUI,        KC_LALT,                                                        KC_SPC,                                                                                 KC_RALT,        KC_RCTRL,       MO(_FL),        KC_LEFT,        KC_DOWN,        KC_RGHT),
121
122   /* Keymap _UL: Unlock layer
123    * ,----------------------------------------------------------------.
124    * |   |   |   |   |   |   |   |   |   |   |   |   |   |       |    |
125    * |----------------------------------------------------------------|
126    * |     |   |   |   |   |   |   |   |   |   |   |   |   |     |_MA |
127    * |----------------------------------------------------------------|
128    * |      |   |   |   |   |   |   |   |   |   |   |   |        |    |
129    * |----------------------------------------------------------------|
130    * |    |   |   |   |   |   |   |   |   |   |   |   |      |   |    |
131    * |----------------------------------------------------------------|
132    * |    |    |    |                       |   |   |    |   |   |    |
133    * `----------------------------------------------------------------'
134    */
135 [_UL] = KEYMAP_ANSI(
136   KC_NO,        KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO, \
137   KC_NO,        KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          TO(_MA), \
138   KC_NO,        KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,                                  KC_NO,          KC_NO, \
139   KC_NO,        KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO, \
140   KC_NO,        KC_NO,          KC_NO,                                                          KC_NO,                                                                                  KC_NO,          KC_NO,          TRNS,           KC_NO,          KC_NO,          KC_NO),
141
142   /* Keymap _LO: Lock layer
143    * ,----------------------------------------------------------------.
144    * |   |   |   |   |   |   |   |   |   |   |   |   |   |       |    |
145    * |----------------------------------------------------------------|
146    * |     |   |   |   |   |   |   |   |   |   |   |   |   |     |    |
147    * |----------------------------------------------------------------|
148    * |      |   |   |   |   |   |   |   |   |   |   |   |        |    |
149    * |----------------------------------------------------------------|
150    * |    |   |   |   |   |   |   |   |   |   |   |   |      |   |    |
151    * |----------------------------------------------------------------|
152    * |    |    |    |                      |   |   | _UL |   |   |    |
153    * `----------------------------------------------------------------'
154    */
155 [_LO] = KEYMAP_ANSI(
156   KC_NO,        KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO, \
157   KC_NO,        KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO, \
158   KC_NO,        KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,                                  KC_NO,          KC_NO, \
159   KC_NO,        KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO,          KC_NO, \
160   KC_NO,        KC_NO,          KC_NO,                                                          KC_NO,                                                                                  KC_NO,          KC_NO,          MO(_UL),        KC_NO,          KC_NO,          KC_NO),
161 };
162
163 void tap(uint16_t keycode){
164     register_code(keycode);
165     unregister_code(keycode);
166 };
167
168 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
169         switch (keycode) {
170                 case LENNY:                     // ( Í¡Â° ÍœÊ– Í¡Â°)
171                         if(record->event.pressed){
172                                 set_unicode_input_mode(UC_WIN);
173                                 register_code(KC_LSFT);
174                                 tap(KC_9);                                                                              // Head
175                                 unregister_code(KC_LSFT);
176                                 tap(KC_SPC);                                                                    // Space
177                                 process_unicode((0x0361|QK_UNICODE), record);   // Eyebrow
178                                 process_unicode((0x00B0|QK_UNICODE), record);   // Eye
179                                 tap(KC_SPC);
180                                 process_unicode((0x035C|QK_UNICODE), record);   // Mouth
181                                 process_unicode((0x0296|QK_UNICODE), record);   // Nose
182                                 tap(KC_SPC);
183                                 process_unicode((0x0361|QK_UNICODE), record);   // Eyebrow
184                                 process_unicode((0x00B0|QK_UNICODE), record);   // Eye
185                                 register_code(KC_LSFT);
186                                 tap(KC_0);                                                                              // Head
187                                 unregister_code(KC_LSFT);
188                         }
189                         return false;
190                         break;
191                 case DWNHRT:            // (´・ω・`)
192                         if(record->event.pressed){
193                                 set_unicode_input_mode(UC_WIN);
194                                 register_code(KC_LSFT);
195                                 tap(KC_9);                                                                              // Head
196                                 unregister_code(KC_LSFT);
197                                 process_unicode((0x00B4|QK_UNICODE), record);   // Eyebrow
198                                 process_unicode((0x30FB|QK_UNICODE), record);   // Eye
199                                 process_unicode((0x03C9|QK_UNICODE), record);   // Mouth
200                                 process_unicode((0x30FB|QK_UNICODE), record);   // Eye
201                                 process_unicode((0x0060|QK_UNICODE), record);   // Eyebrow
202                                 register_code(KC_LSFT);
203                                 tap(KC_0);                                                                              // Head
204                                 unregister_code(KC_LSFT);
205                         }
206                         return false;
207                         break;
208                 case SHRUG:                     // Â¯\_(ツ)_/¯
209                         if(record->event.pressed){
210                                 set_unicode_input_mode(UC_WIN);
211                                 process_unicode((0x00AF|QK_UNICODE), record);   // Hand
212                                 tap(KC_BSLS);                                                                   // Arm
213                                 register_code(KC_LSFT);
214                                 tap(KC_UNDS);                                                                   // Arm
215                                 tap(KC_LPRN);                                                                   // Head
216                                 unregister_code(KC_LSFT);
217                                 process_unicode((0x30C4|QK_UNICODE), record);   // Face
218                                 register_code(KC_LSFT);
219                                 tap(KC_RPRN);                                                                   // Head
220                                 tap(KC_UNDS);                                                                   // Arm
221                                 unregister_code(KC_LSFT);
222                                 tap(KC_SLSH);                                                                   // Arm
223                                 process_unicode((0x00AF|QK_UNICODE), record);   // Hand
224                         }
225                         return false;
226                         break;
227         }
228         return true;
229 };
230
231 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
232     switch (id) {
233                 case 0:
234                         if (record->event.pressed) {
235                                 key_timer = timer_read();
236                         }
237                         else {
238                                 if (timer_elapsed(key_timer) > trigger_time) {
239                                         return MACRO( T(END), END );
240                                 }
241                                 else {
242                                         return MACRO( T(HOME), END );
243                                 }
244                         }
245                         break;
246                 case 1:
247                         if (record->event.pressed) {
248                                 key_timer = timer_read();
249                         }
250                         else { 
251                                 if (timer_elapsed(key_timer) > trigger_time) {
252                                         return MACRO( T(F1), END );
253                                 }
254                                 else {
255                                         return MACRO( T(1), END );
256                                 }
257                         }
258                         break;
259                 case 2:
260                         if (record->event.pressed) {
261                                 key_timer = timer_read();
262                         }
263                         else { 
264                                 if (timer_elapsed(key_timer) > trigger_time) {
265                                         return MACRO( T(F2), END );
266                                 }
267                                 else {
268                                         return MACRO( T(2), END );
269                                 }
270                         }
271                         break;
272                 case 3:
273                         if (record->event.pressed) {
274                                 key_timer = timer_read();
275                         }
276                         else { 
277                                 if (timer_elapsed(key_timer) > trigger_time) {
278                                         return MACRO( T(F3), END );
279                                 }
280                                 else {
281                                         return MACRO( T(3), END );
282                                 }
283                         }
284                         break;
285                 case 4:
286                         if (record->event.pressed) {
287                                 key_timer = timer_read();
288                         }
289                         else { 
290                                 if (timer_elapsed(key_timer) > trigger_time) {
291                                         return MACRO( T(F4), END );
292                                 }
293                                 else {
294                                         return MACRO( T(4), END );
295                                 }
296                         }
297                         break;
298                 case 5:
299                         if (record->event.pressed) {
300                                 key_timer = timer_read();
301                         }
302                         else { 
303                                 if (timer_elapsed(key_timer) > trigger_time) {
304                                         return MACRO( T(F5), END );
305                                 }
306                                 else {
307                                         return MACRO( T(5), END );
308                                 }
309                         }
310                         break;
311                 case 6:
312                         if (record->event.pressed) {
313                                 key_timer = timer_read();
314                         }
315                         else { 
316                                 if (timer_elapsed(key_timer) > trigger_time) {
317                                         return MACRO( T(F6), END );
318                                 }
319                                 else {
320                                         return MACRO( T(6), END );
321                                 }
322                         }
323                         break;
324                 case 7:
325                         if (record->event.pressed) {
326                                 key_timer = timer_read();
327                         }
328                         else { 
329                                 if (timer_elapsed(key_timer) > trigger_time) {
330                                         return MACRO( T(F7), END );
331                                 }
332                                 else {
333                                         return MACRO( T(7), END );
334                                 }
335                         }
336                         break;
337                 case 8:
338                         if (record->event.pressed) {
339                                 key_timer = timer_read();
340                         }
341                         else { 
342                                 if (timer_elapsed(key_timer) > trigger_time) {
343                                         return MACRO( T(F8), END );
344                                 }
345                                 else {
346                                         return MACRO( T(8), END );
347                                 }
348                         }
349                         break;
350                 case 9:
351                         if (record->event.pressed) {
352                                 key_timer = timer_read();
353                         }
354                         else { 
355                                 if (timer_elapsed(key_timer) > trigger_time) {
356                                         return MACRO( T(F9), END );
357                                 }
358                                 else {
359                                         return MACRO( T(9), END );
360                                 }
361                         }
362                         break;
363                 case 10:
364                         if (record->event.pressed) {
365                                 key_timer = timer_read();
366                         }
367                         else { 
368                                 if (timer_elapsed(key_timer) > trigger_time) {
369                                         return MACRO( T(F10), END );
370                                 }
371                                 else {
372                                         return MACRO( T(0), END );
373                                 }
374                         }
375                         break;
376                 case 11:
377                         if (record->event.pressed) {
378                                 key_timer = timer_read();
379                         }
380                         else { 
381                                 if (timer_elapsed(key_timer) > trigger_time) {
382                                         return MACRO( T(F11), END );
383                                 }
384                                 else {
385                                         return MACRO( T(MINS), END );
386                                 }
387                         }
388                         break;
389                 case 12:
390                         if (record->event.pressed) {
391                                 key_timer = timer_read();
392                         }
393                         else { 
394                                 if (timer_elapsed(key_timer) > trigger_time) {
395                                         return MACRO( T(F12), END );
396                                 }
397                                 else {
398                                         return MACRO( T(EQL), END );
399                                 }
400                         }
401                         break;
402         }
403     return MACRO_NONE;
404 };
405
406 void led_set_user(uint8_t usb_led) {
407         if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
408         // Turn capslock on
409         PORTB |= (1<<6);
410     } else {
411         // Turn capslock off
412         PORTB &= ~(1<<6);
413     }
414 }