]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/knops/mini/keymaps/default-gsm-newbs/keymap.c
Remove/migrate action_get_macro()s from default keymaps (#5625)
[qmk_firmware.git] / keyboards / knops / mini / keymaps / default-gsm-newbs / keymap.c
1 #include QMK_KEYBOARD_H
2
3 enum custom_keycodes {
4         M_TGLHF = SAFE_RANGE,
5         M_TGG
6 };
7
8 /*
9 *  Copy of knopps mini default May 16,2018
10 *  Added comments in code to more easilly understand it.
11 *
12 *   Key Layout
13 *        _____   _____   _____
14 *       |         | |     | |     |
15 *       |  1  | |  2  | |  3  |
16 *       |_____| |_____| |_____|
17 *        _____   _____   _____
18 *       |         | |     | |     |
19 *       |  4  | |  5  | |  6  |
20 *       |_____| |_____| |_____|
21 *
22 *  Each Layout row below keys. 1,2,3,4,5,6
23 *
24 *  Hold 3 when powering on for DFU Program Mode
25 */
26
27 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
28
29 /*
30 *   Layer 0 (Default)
31 *        _____   _____   _____
32 *       |         | |     | |     |
33 *        Stop    VolUp   Play
34 *       |_____| |_____| |_____|
35 *        _____   _____   _____
36 *       |         | |     | |     |
37 *        Prev    VolDwn  Next
38 *       |_____| |_____| |_____|
39 *
40 * Button 1 (stop) is Held to activate Layer 3 only while held, User then selects the keymap to change to
41 */
42         LAYOUT(
43                 LT(3, KC_MSTP), KC_VOLU, KC_MPLY, KC_MPRV, KC_VOLD, KC_MNXT),
44
45 /*
46 *   Layer 1
47 *        _____   _____   _____
48 *       |         | |     | |     |
49 *         ESC    Ctl+Z   CSf+Z
50 *       |_____| |_____| |_____|
51 *        _____   _____   _____
52 *       |         | |     | |     |
53 *        Ctl+X   Ctl+C   Ctl+V
54 *       |_____| |_____| |_____|
55 *
56 */
57         LAYOUT(
58                 LT(3, KC_ESC), C(KC_Z), C(S(KC_Z)), C(KC_X), C(KC_C), C(KC_V)),
59
60 /*
61 *   Layer 2
62 *        _____   _____   _____
63 *       |         | |     | |     |
64 *       |  1  | |  2  | |  3  |
65 *       |_____| |_____| |_____|
66 *        _____   _____   _____
67 *       |         | |     | |     |
68 *       |  4  | |Macro0  Macro1
69 *       |_____| |_____| |_____|
70 *
71 */
72         LAYOUT(
73                 LT(3, KC_1), KC_2, KC_3, KC_4, M_TGLHF, M_TGG),
74
75 /*
76 *  Layer 3 Key Layout
77 *  This Layer does the Layer Selection
78 *        _____   _____   _____
79 *       |         | |     | | DFU
80 *       |None | |None | | FLash
81 *       |_____| |_____| |_____|
82 *        _____   _____   _____
83 *       |         | |     | |     |
84 *        Layer   Layer  Layer
85 *    0       1       2
86 *       |_____| |_____| |_____|
87 *
88 * Layers 0,1,2 have Button 1 held to activate this layer. Then press the specific layer to switch to it.
89 *
90 */
91         LAYOUT(
92                 KC_TRNS, KC_TRNS, RESET, TO(0), TO(1), TO(2)),
93
94 // More Layers that can be used, but are not by default
95
96         LAYOUT(
97                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
98
99         LAYOUT(
100                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
101
102         LAYOUT(
103                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
104
105         LAYOUT(
106                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
107
108         LAYOUT(
109                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
110
111         LAYOUT(
112                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
113
114         LAYOUT(
115                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
116
117         LAYOUT(
118                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
119
120         LAYOUT(
121                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
122
123         LAYOUT(
124                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
125
126         LAYOUT(
127                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
128
129         LAYOUT(
130                 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
131
132 };
133
134 void set_switch_led(int ledId, bool state) {
135         if(state) {
136                 switch(ledId) {
137                         case 1:
138                                 PORTD |= (1<<7);
139                                 break;
140                         case 2:
141                                 if((PINB & (1 << 7)) != 0) {
142                                         PORTC |= (1<<6);
143                                 } else {
144                                         PORTC |= (1<<7);
145                                 }
146                                 break;
147                         case 3:
148                                 PORTD |= (1<<4);
149                                 break;
150                         case 4:
151                                 PORTE |= (1<<6);
152                                 break;
153                         case 5:
154                                 PORTB |= (1<<4);
155                                 break;
156                         case 6:
157                                 PORTD |= (1<<6);
158                                 break;
159                 }
160         } else {
161                 switch(ledId) {
162                         case 1:
163                                 PORTD &= ~(1<<7);
164                                 break;
165                         case 2:
166                                 if((PINB & (1 << 7)) != 0) {
167                                         PORTC &= ~(1<<6);
168                                 } else {
169                                         PORTC &= ~(1<<7);
170                                 }
171                                 break;
172                         case 3:
173                                 PORTD &= ~(1<<4);
174                                 break;
175                         case 4:
176                                 PORTE &= ~(1<<6);
177                                 break;
178                         case 5:
179                                 PORTB &= ~(1<<4);
180                                 break;
181                         case 6:
182                                 PORTD &= ~(1<<6);
183                                 break;
184                 }
185         }
186 }
187
188
189 void set_layer_led(int layerId) {
190         PORTD |= (1<<5);
191         PORTB &= ~(1<<6);
192         PORTB |= (1<<0);
193         switch(layerId) {
194                 case 0:
195                         PORTD &= ~(1<<5);
196                         break;
197                 case 1:
198                         PORTB |= (1<<6);
199                         break;
200                 case 2:
201                         PORTB &= ~(1<<0);
202                         break;
203         }
204 }
205
206 void matrix_init_user(void) {
207         led_init_ports();
208
209         PORTB |= (1 << 7);
210         DDRB &= ~(1<<7);
211
212         PORTD |= (1<<7);
213         PORTC |= (1<<6);
214         PORTC |= (1<<7);
215         PORTD |= (1<<4);
216         PORTE |= (1<<6);
217         PORTB |= (1<<4);
218         PORTD |= (1<<6);
219
220         set_layer_led(0);
221 }
222
223 void matrix_scan_user(void) {
224 }
225
226 void led_init_ports() {
227   // led voor switch #1
228         DDRD |= (1<<7);
229         PORTD &= ~(1<<7);
230
231   // led voor switch #2
232         DDRC |= (1<<6);
233         DDRC |= (1<<7);
234         PORTC &= ~(1<<6);
235         PORTC &= ~(1<<7);
236
237   // led voor switch #3
238         DDRD |= (1<<4);
239         PORTD &= ~(1<<4);
240
241   // led voor switch #4
242         DDRE |= (1<<6);
243         PORTE &= ~(1<<6);
244
245   // led voor switch #5
246         DDRB |= (1<<4);
247         PORTB &= ~(1<<4);
248
249   // led voor switch #6
250         DDRD |= (1<<6);
251         PORTD &= ~(1<<6);
252
253         /*
254         DDRD |= (1<<7);
255         PORTD |= (1<<7);
256
257         DDRC |= (1<<6);
258         PORTC |= (1<<6);
259
260         DDRD |= (1<<4);
261         PORTD |= (1<<4);
262
263         DDRE |= (1<<6);
264         PORTE |= (1<<6);
265
266         DDRB |= (1<<4);
267         PORTB |= (1<<4);
268
269         DDRD |= (1<<6);
270         PORTD |= (1<<6);
271         // */
272
273         DDRD |= (1<<5);
274         DDRB |= (1<<6);
275         DDRB |= (1<<0);
276         //led_set_layer(0);
277 }
278
279 void led_set_user(uint8_t usb_led) {
280
281         if (usb_led & (1 << USB_LED_NUM_LOCK)) {
282
283         } else {
284
285         }
286
287         if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
288
289         } else {
290
291         }
292
293         if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
294
295         } else {
296
297         }
298
299         if (usb_led & (1 << USB_LED_COMPOSE)) {
300
301         } else {
302
303         }
304
305         if (usb_led & (1 << USB_LED_KANA)) {
306
307         } else {
308
309         }
310
311 }
312
313
314 /*
315 *   NOTE:
316 *
317 *   In case you don't understand this coding stuff, please
318 *   feel free to mail me or post something
319 *   at the /r/knops subreddit and I will configure the code as
320 *   you wish for your needs to make the LEDs do what you want :-).
321 *
322 *   Contact me at:    support@knops.io
323 *
324 *
325 *       Knops Mini LED Numbers:
326 *        _____   _____   _____
327 *       |         | |     | |     |
328 *       |  1  | |  2  | |  3  |    <---
329 *       |_____| |_____| |_____|       |      These LEDs are called 'Switch LEDs'
330 *        _____   _____   _____        |----- To turn on/off these leds, use:
331 *       |         | |     | |     |       |       set_switch_led( [1-6], [true/false]);
332 *       |  4  | |  5  | |  6  |    <---
333 *       |_____| |_____| |_____|
334 *
335 *        < 0 >   < 1 >   < 2 >     <---      These front-LEDs are called 'Layer LEDs'
336 *                                                                    To turn one of them on, use:
337 *                                                                                set_layer_led( [0-2] );
338 *
339 */
340
341 /*
342 * This function led_set_layer gets called when you switch between layers.
343 * It allows you to turn on and off leds for each different layer and do
344 * other cool stuff. Currently the GUI does not have LED support. I am working
345 * on that, but takes time.
346 */
347 void led_set_layer(int layer) {
348         switch(layer) {
349
350                         /**
351                         *   Here is an example to turn LEDs on and of. By default:
352                         *   - the LEDs are turned on in layer 0
353                         *   - the LEDs are turned off in layer 1
354                         *   - the LEDs don't change from state for layer 2
355                         */
356
357                 case 0:
358                         set_layer_led(0); // Turn on only the first/left layer indicator
359                         set_switch_led(1, true);
360                         set_switch_led(2, true);
361                         set_switch_led(3, true);
362                         set_switch_led(4, true);
363                         set_switch_led(5, true);
364                         set_switch_led(6, true);
365                         break;
366
367                 case 1:
368                         set_layer_led(1); // Turn on only the second/middle layer indicator
369                         set_switch_led(1, false);
370                         set_switch_led(2, false);
371                         set_switch_led(3, false);
372                         set_switch_led(4, false);
373                         set_switch_led(5, false);
374                         set_switch_led(6, false);
375                         break;
376
377                 case 2:
378                         set_layer_led(2); // Turn on only the third/right layer indicator
379
380                         // Keep leds for layer two in their current state, since we don't use set_switch_led(SWITCH_ID, TRUE_OR_FALSE)
381
382                         break;
383         }
384 }
385
386 bool process_record_user (uint16_t keycode, keyrecord_t *record) {
387   switch(keycode) {
388   case TO(0):
389       if (record->event.pressed) {
390         led_set_layer(0);
391      }
392      break;
393   case TO(1):
394       if (record->event.pressed) {
395         led_set_layer(1);
396      }
397      break;
398   case TO(2):
399       if (record->event.pressed) {
400         led_set_layer(2);
401      }
402      break;
403   case M_TGLHF:
404     if (record->event.pressed) {
405       SEND_STRING("tglhf");
406       tap_code(KC_ENT);
407     }
408   case M_TGG:
409     if (record->event.pressed) {
410       SEND_STRING("tgg");
411       tap_code(KC_ENT);
412     }
413     return false;
414   }
415   return true;
416 }