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