]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/satan/keymaps/admiralStrokers/keymap.c
Remove all Makefiles from the keyboards directory. (#1660)
[qmk_firmware.git] / keyboards / satan / keymaps / admiralStrokers / keymap.c
1 #include "satan.h"
2
3 static uint16_t key_timer;
4
5 bool checktime(void){
6                 return (timer_elapsed(key_timer) < 150) ? true : false;
7         };
8
9 // general keydefs
10 #define norm 0          // Default layer
11 #define elev 1          // Layer directional keys
12 #define supr 2          // F-keys and mediakeys
13 #define spac 3          //
14 #define FNO1 4          //
15 #define FNO2 5          //
16 #define FNO3 6          //
17 #define MAC0 M(0)       //
18 #define MAC1 M(1)       //
19 #define MAC2 M(2)       //
20 #define MAC3 M(3)       //
21 #define MAC4 M(4)       //
22 #define MAC5 M(5)       //
23 #define MAC6 M(6)       //
24 #define MAC7 M(7)       //
25 #define MAC8 M(8)       //
26 #define MAC9 M(9)       //
27 #define GRAV KC_GRV //
28 #define MEDI F(FNO1)//
29
30 // General shortenings
31 #define ESCA KC_ESC
32 #define MINS KC_MINS
33 #define EQUL KC_EQL
34 #define BSPC KC_BSPC
35 #define DELE KC_DEL
36 #define LBRC KC_LBRC
37 #define RBRC KC_RBRC
38 #define ALTR KC_RALT
39 #define SCLN KC_SCLN
40 #define QUOT KC_QUOT
41 #define NUHS KC_NUHS
42 #define ENTE KC_ENT
43 #define NUBS KC_NUBS    // Less/ greater sign
44 #define COMM KC_COMM    // Comma
45 #define FSTO KC_DOT             // Full stop
46 #define SLSH KC_SLSH
47 #define ALTL KC_LALT
48 #define GUIL KC_LGUI
49 #define GUIR KC_RGUI
50 #define MENO KC_MENU
51 // The F-row/layer:
52 #define FK01 KC_F1
53 #define FK02 KC_F2
54 #define FK03 KC_F3
55 #define FK04 KC_F4
56 #define FK05 KC_F5
57 #define FK06 KC_F6
58 #define FK07 KC_F7
59 #define FK08 KC_F8
60 #define FK09 KC_F9
61 #define FK10 KC_F10
62 #define FK11 KC_F11
63 #define FK12 KC_F12
64 #define FK13 KC_F13
65 #define FK14 KC_F14
66 // Special Actions and Media Keys
67 #define INSE KC_INS     // Insert here
68 #define HOME KC_HOME    // Go to beginning of line
69 #define ENDI  KC_END    // go to end of line
70 #define PSCR  KC_PSCR   // Print Screen
71 #define SLCK  KC_SLCK   // go to end of line
72 #define PGDN  KC_PGDN   // go to end of line
73 #define PGUP  KC_PGUP   // go to end of line
74 #define PLPS KC_MPLY    // Play/Pause
75 #define PAUS KC_PAUS    // Pause button
76 #define MUTE KC_MUTE    // Mute sound
77 #define VOLU KC_VOLU    // Volume increase
78 #define VOLD KC_VOLD    // Volume decrease
79 #define MNXT KC_MNXT    // next track
80 #define MPRV KC_MPRV    // prev track
81 #define MSTP KC_MSTP    // stop playing
82 #define MSEL KC_MSEL    // Select media (Start playing it)
83 #define MAIL KC_MAIL    // Open default mail app
84 #define CALC KC_CALC    // Open default calculator app
85 #define MYCM KC_MYCM    // Open default file manager
86 //#define LILO KC_XXXXXX        // Reserved for later
87 //#define LIHI KC_XXXXXX        // Reserved for later
88
89
90 // dual-role shortcuts
91 #define DUTB LT(elev, KC_TAB)   // `tabs` layer on hold and tab on tap
92 #define DUSP LT(spac, KC_SPACE) // `spce` layer on hold and space on tap
93 #define LOCK LGUI(KC_L)                 // lock computer (win)
94
95 // Space Admiral Strokers
96 #define SADL MAC0                               // Hold for lshift and { on tap
97 #define SADR MAC1                               // Hold for rshift and } on tap
98 #define CADL MAC2                               // Hold for lctrl and [ on tap
99 #define CADR MAC3                               // Hold for rctrl and ] on tap
100
101 // arrow cluster duality bottom right corner
102 #define ARLF ALT_T(KC_LEFT) // Left arrow
103 #define ARRT CTL_T(KC_RIGHT)// Right arrow
104 #define ARUP SFT_T(KC_UP)       // Up arrow
105 #define ARDN GUI_T(KC_DOWN) // Down arrow
106
107 // brackets
108 #define NOCL RALT(KC_7)    // [
109 #define NOCR RALT(KC_0)    // ]
110 #define NOPL LSFT(KC_8)    // (
111 #define NOPR LSFT(KC_9)    // )
112 #define NOAL KC_NUBS       // <
113 #define NOAR LSFT(KC_NUBS) // >
114 #define NOBL RALT(KC_8)    // [
115 #define NOBR RALT(KC_9)    // ]
116
117 // increase readability
118 #define XXXX    KC_TRNS
119 #define DEAD    KC_NO
120 #define SCAN    KC_TRNS // Scandinavian keys, the Row 5 key 5 is actually Row 1 key 15 on the PCB
121
122 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
123 [ norm ] = KEYMAP( // Normal scandinavian mapping (danish has QUOT and SCLN wapped)
124         GRAV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, MINS, EQUL, BSPC, DELE,\
125         DUTB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, LBRC, RBRC, DEAD,\
126         ALTR, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, SCLN, QUOT, NUHS, ENTE,\
127                                 SADL, NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, COMM, FSTO, SLSH, SADR, DEAD,\
128                                 CADL, ALTL, GUIL,                       DUSP,                       GUIR, MEDI, MENO, CADR),
129
130 [ elev ] = KEYMAP( // The f-Row (with f13-14), Special keys and media keys
131                                 LOCK, FK01, FK02, FK03, FK04, FK05, FK06, FK07, FK08, FK09, FK10, FK11, FK12, FK13, FK14,\
132                                 XXXX, XXXX, XXXX, XXXX, MAIL, XXXX, XXXX, HOME, INSE, PSCR, SLCK, PAUS, PGUP, XXXX,\
133                             XXXX, XXXX, XXXX, XXXX, MYCM, XXXX, XXXX, MPRV, PAUS, MNXT, XXXX, XXXX, PGDN, ENDI,\
134                                 XXXX, XXXX, XXXX, XXXX, CALC, XXXX, XXXX, XXXX, MUTE, VOLD, VOLU, XXXX, ARUP, DEAD,\
135                                 XXXX, XXXX, XXXX,                                       PLPS,                                   XXXX, ARLF, ARDN, ARRT),
136
137 [ spac ] = KEYMAP( // The space controls (by pressing space)
138                                 XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX,\
139                                 XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX,\
140                             XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX,\
141                                 XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, DEAD,\
142                                 XXXX, XXXX, XXXX,                                       XXXX,                           XXXX, XXXX, XXXX, XXXX),
143
144 [ supr ] = KEYMAP( // Additional layer for later use.
145                                 XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX,\
146                                 XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX,\
147                             XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX,\
148                                 XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, XXXX, DEAD,\
149                                 XXXX, XXXX, XXXX,                                       XXXX,                                   XXXX, XXXX, XXXX, XXXX),
150 };
151
152 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function
153     switch(id) {
154         case 0: //MAC0 - Hold for lshift and { on tap
155                                         if (record->event.pressed) {
156                                                 key_timer = timer_read();
157                                                 return MACRO(D(LSFT), END );
158                                         } else {
159                                                 return checktime() ? MACRO(U(LSFT),D(RALT),T(7),U(RALT),END): MACRO(U(LSFT),END);
160                                         }; break;
161                           case 1:       //MAC1 - Hold for rshift and } on tap
162                                         if (record->event.pressed) {
163                                                 key_timer = timer_read();
164                                                 return MACRO(D(RSFT), END );
165                                         } else {
166                                                 return checktime()  ? MACRO(U(RSFT),D(RALT),T(0),U(RALT),END): MACRO(U(RSFT),END);
167                                         }; break;
168         case 2: //MAC2 - Hold for lctrl and [ on tap
169                                                 if (record->event.pressed) {
170                                                         key_timer = timer_read();
171                                                         return MACRO(D(LCTL), END );
172                                                 } else {return checktime() ? MACRO(U(LCTL),D(RALT),T(8),U(RALT),END):MACRO(U(LCTL),END);
173                                                 }; break;
174         case 3: //MAC3 - Hold for rctrl and ] on tap
175                                                 if (record->event.pressed) {
176                                                         key_timer = timer_read();
177                                                         return MACRO(D(RCTL), END );
178                                                 } else {
179                                                         return checktime() ? MACRO(U(RCTL),D(RALT),T(9),U(RALT),END):MACRO(U(RCTL),END);
180                                                 }; break;
181         case 4: //MAC4 reserved for later.
182                                                 if (record->event.pressed) { } else { }; break;
183         case 5: //MAC5 reserved for later.
184                                                 if (record->event.pressed) { } else { }; break;
185         case 6: //MAC6 reserved for later.
186                                                 if (record->event.pressed) { } else { }; break;
187     } return MACRO_NONE;
188 };
189 /*
190                 Later use:
191                 void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { }
192                 enum function_id { };
193                 const uint16_t PROGMEM fn_actions[] = { };
194
195 */