]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/ergodox/keymaps/neo2_on_qwertz_hardware/keymap.c
ab2464c42457b4d0532c9350e12b48aef3435d56
[qmk_firmware.git] / keyboards / ergodox / keymaps / neo2_on_qwertz_hardware / keymap.c
1 #include "ergodox.h"
2 #include "action_layer.h"
3 #include "keymap_extras/keymap_german.h"
4
5 #define UM 0
6
7 #define L0   0      // layer_0
8 #define L1   1      // layer_1  
9 #define L2   2      // layer_2
10 #define L3   3      // layer_3
11 #define L4   4      // layer_4
12 #define L5   5      // layer_5
13 #define L6   6      // layer_6
14
15 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
16 /*
17     .------------------------------------.------------------------------------.
18     |ESC  | 1  | 2  | 3  | 4  | 5  | ´   | `   | 6  | 7  | 8  | 9  | 0  | ^   |
19     !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
20     |TAB  | X  | V  | L  | C  | W  |Print|     | K  | H  | G  | F  | Q  |  ß  |
21     !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
22     |MO(1)| U  | I  | A  | E  | O  |-----!-----! S  | N  | R  | T  | D  | Y   |
23     !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
24     |LSFT | ü  | ö  |  ä | P  | Z  |SPACE|     | B  | M  | ,  | .  | J  |RSFT |
25     '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
26      |LCTL|LGUI|LALT|MO(3)|MO(2)|                   !MO(2)|MO(3)|APP |RALT|RCTL|
27      '------------------------'                     '------------------------'
28                             .-----------. .-----------.
29                             |VOL- |VOL+ | !MUTE |PLAY |
30                       .-----+-----+-----! !-----+-----+-----.
31                       !     !     |     | !     |     !     !
32                       !     !     |-----| !-----|     !     !
33                       ! CTL !     ! ALT ! ! CTL !     ! ALT !
34                       |ENTER|MO(1)| TAB | !ESC  |MO(1)|SPACE|
35                       '-----------------' '-----------------'
36  */
37 [L0] = KEYMAP(
38  KC_ESC,  DE_1,    DE_2,     DE_3,    DE_4,     DE_5,    DE_ACUT,
39  KC_TAB,  DE_X,    DE_V,     DE_L,    DE_C,     DE_W,    KC_PSCR,
40  MO(1),   DE_U,    DE_I,     DE_A,    DE_E,     DE_O,
41  KC_LSFT, DE_UE,   DE_OE,    DE_AE,   DE_P,     DE_Z,    KC_SPACE,
42  KC_LCTL, KC_LGUI, KC_LALT,  MO(3),   MO(2),
43  /*-*/    /*-*/    /*-*/     /*-*/    /*-*/     KC_VOLD, KC_VOLU,
44  /*-*/    /*-*/    /*-*/     /*-*/    /*-*/     /*-*/    KC_TRNS,
45  /*-*/    /*-*/    /*-*/     /*-*/    CTL_T(KC_ENTER), MO(1),   ALT_T(KC_TAB),
46  DE_GRV,  DE_6,    DE_7,     DE_8,    DE_9,     DE_0,    DE_CIRC,
47  KC_TRNS, DE_K,    DE_H,     DE_G,    DE_F,     DE_Q,    DE_SS,
48  /*-*/    DE_S,    DE_N,     DE_R,    DE_T,     DE_D,    DE_Y,
49  KC_TRNS, DE_B,    DE_M,     DE_COMM, DE_DOT,   DE_J,    KC_RSFT,
50  /*-*/    /*-*/    MO(2),    MO(3),   KC_APP,   KC_RALT, KC_RCTL,
51  KC_MUTE, KC_MPLY,
52  KC_TRNS,
53  CTL_T(KC_ESC), MO(1),   ALT_T(KC_SPACE)
54 ),
55 /*
56     .------------------------------------.------------------------------------.
57     |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
58     !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
59     |     | €  | _  | [  | ]  |    |     |     | !  | <  | >  | =  | &  |     |
60     !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
61     |     | \  | /  |  { | }  | *  |-----!-----! ?  | (  | )  | -  | :  | @   |
62     !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
63     |     | #  | $  | |  | ~  |    |     |     | +  | %  | "  | '  | ;  |     |
64     '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
65      |    |    |    |    |    |                     !    |    |    |    |    |
66      '------------------------'                     '------------------------'
67                             .-----------. .-----------.
68                             |     |     | !     |     |
69                       .-----+-----+-----! !-----+-----+-----.
70                       !     !     |     | !     |     !     !
71                       !     !     !-----! !-----!     !     !
72                       |     |     |     | !     |     |     |
73                       '-----------------' '-----------------'
74  */
75 [L1] = KEYMAP(
76  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
77  KC_TRNS, DE_EURO, DE_UNDS, DE_LBRC, DE_RBRC, KC_TRNS, KC_TRNS,
78  KC_TRNS, DE_BSLS, DE_SLSH, DE_LCBR, DE_RCBR, DE_ASTR,
79  KC_TRNS, DE_HASH, DE_DLR,  DE_PIPE, DE_TILD, KC_TRNS, KC_TRNS,
80  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
81  /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
82  /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
83  /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
84  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
85  KC_TRNS, DE_EXLM, DE_LESS, DE_MORE, DE_EQL,  DE_AMPR, KC_TRNS,
86  /*-*/    DE_QST,  DE_LPRN, DE_RPRN, DE_MINS, DE_COLN, DE_AT,
87  KC_TRNS, DE_PLUS, DE_PERC, DE_DQOT, DE_QUOT, DE_SCLN, KC_TRNS,
88  /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
89  KC_TRNS, KC_TRNS,
90  KC_TRNS,
91  KC_TRNS, KC_TRNS, KC_TRNS
92 ),
93 /*
94  * .------------------------------------.------------------------------------.
95  * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
96  * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
97  * |     |PGUP|BSPC| UP |DEL |PGDN|     |     |    |  7 |  8 |  9 |    |     |
98  * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
99  * |     |HOME|LEFT|DOWN|RGHT|END |-----!-----!    |  4 |  5 |  6 |    |     |
100  * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
101  * |     |    |    |PREV|NEXT|    |     |     |    |  1 |  2 |  3 |    |     |
102  * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
103  *  |    |    |    |    |    |                     !    |    |    |    |    |
104  *  '------------------------'                     '------------------------'
105  *                         .-----------. .-----------.
106  *                         |     |     | !     |     |
107  *                   .-----+-----+-----! !-----+-----+-----.
108  *                   !     !     |     | !     |     !     !
109  *                   !     !     !-----! !-----!     !     !
110  *                   |     |     |     | !     |     |  0  |
111  *                   '-----------------' '-----------------'
112  */
113 [L2] = KEYMAP(
114  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
115  KC_TRNS, KC_PGUP, KC_BSPC, KC_UP,   KC_DEL,  KC_PGDN, KC_TRNS,
116  KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END,
117  KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
118  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
119  /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
120  /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
121  /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
122  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
123  KC_TRNS, KC_TRNS, DE_7,    DE_8,    DE_9,    KC_TRNS, KC_TRNS,
124  /*-*/    KC_TRNS, DE_4,    DE_5,    DE_6,    KC_TRNS, KC_TRNS,
125  KC_TRNS, KC_TRNS, DE_1,    DE_2,    DE_3,    KC_TRNS, KC_TRNS,
126  /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
127  KC_TRNS, KC_TRNS,
128  KC_TRNS,
129  KC_TRNS, KC_TRNS, DE_0
130 ),
131 /*
132  * .------------------------------------.------------------------------------.
133  * |     | F1 | F2 | F3 | F4 | F5 | F6  |     |    |    |    |    |    |     |
134  * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
135  * |     | F7 | F8 | F9 | F10| F11| F12 |     |    |M_WU|M_CU|M_WD|    |     |
136  * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
137  * |M_B5 |M_B4|M_B3|M_B2|M_B1|    |-----!-----!    |M_CL|M_CD|M_CR|    |     |
138  * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
139  * |     |    |M_A2|M_A1|M_A0|    |     |     |    |    |    |    |    |     |
140  * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
141  *  |    |    |    |    |    |                     !    |    |    |    |    |
142  *  '------------------------'                     '------------------------'
143  *                         .-----------. .-----------.
144  *                         |     |     | !     |     |
145  *                   .-----+-----+-----! !-----+-----+-----.
146  *                   !     !     |     | !     |     !     !
147  *                   !     !     !-----! !-----!     !     !
148  *                   |     |     |     | !     |     |     |
149  *                   '-----------------' '-----------------'
150  */
151 [L3] = KEYMAP(
152  KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,
153  KC_TRNS, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,
154  KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_BTN1, KC_TRNS,
155  KC_TRNS, KC_TRNS, KC_ACL2, KC_ACL1, KC_ACL0, KC_TRNS, KC_TRNS,
156  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
157  /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
158  /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
159  /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
160  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
161  KC_TRNS, KC_TRNS, KC_WH_U, KC_MS_U, KC_WH_D, KC_TRNS, KC_TRNS,
162  /*-*/    KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS,
163  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
164  /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
165  KC_TRNS, KC_TRNS,
166  KC_TRNS,
167  KC_TRNS, KC_TRNS, KC_TRNS
168 ),
169 /*
170  * .------------------------------------.------------------------------------.
171  * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
172  * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
173  * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
174  * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
175  * |     |    |    |    |    |    |-----!-----!    |    |    |    |    |     |
176  * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
177  * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
178  * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
179  *  |    |    |    |    |    |                     !    |    |    |    |    |
180  *  '------------------------'                     '------------------------'
181  *                         .-----------. .-----------.
182  *                         |     |     | !     |     |
183  *                   .-----+-----+-----! !-----+-----+-----.
184  *                   !     !     |     | !     |     !     !
185  *                   !     !     !-----! !-----!     !     !
186  *                   |     |     |     | !     |     |     |
187  *                   '-----------------' '-----------------'
188  */
189 [L4] = KEYMAP(
190  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
191  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
192  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
193  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
194  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
195  /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
196  /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
197  /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
198  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
199  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
200  /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
201  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
202  /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
203  KC_TRNS, KC_TRNS,
204  KC_TRNS,
205  KC_TRNS, KC_TRNS, KC_TRNS
206 ),
207 /*
208  * .------------------------------------.------------------------------------.
209  * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
210  * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
211  * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
212  * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
213  * |     |    |    |    |    |    |-----!-----!    |    |    |    |    |     |
214  * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
215  * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
216  * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
217  *  |    |    |    |    |    |                     !    |    |    |    |    |
218  *  '------------------------'                     '------------------------'
219  *                         .-----------. .-----------.
220  *                         |     |     | !     |     |
221  *                   .-----+-----+-----! !-----+-----+-----.
222  *                   !     !     |     | !     |     !     !
223  *                   !     !     !-----! !-----!     !     !
224  *                   |     |     |     | !     |     |     |
225  *                   '-----------------' '-----------------'
226  */
227 [L5] = KEYMAP(
228  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
229  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
230  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
231  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
232  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
233  /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
234  /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
235  /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
236  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
237  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
238  /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
239  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
240  /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
241  KC_TRNS, KC_TRNS,
242  KC_TRNS,
243  KC_TRNS, KC_TRNS, KC_TRNS
244 ),
245 /*
246  * .------------------------------------.------------------------------------.
247  * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
248  * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
249  * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
250  * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
251  * |     |    |    |    |    |    |-----!-----!    |    |    |    |    |     |
252  * !-----+----+----+----x----x----!     !     !----x----x----+----+----+-----!
253  * |     |    |    |    |    |    |     |     |    |    |    |    |    |     |
254  * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
255  *  |    |    |    |    |    |                     !    |    |    |    |    |
256  *  '------------------------'                     '------------------------'
257  *                         .-----------. .-----------.
258  *                         |     |     | !     |     |
259  *                   .-----+-----+-----! !-----+-----+-----.
260  *                   !     !     |     | !     |     !     !
261  *                   !     !     !-----! !-----!     !     !
262  *                   |     |     |     | !     |     |     |
263  *                   '-----------------' '-----------------'
264  */
265 [L6] = KEYMAP(
266  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
267  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
268  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
269  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
270  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
271  /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS,
272  /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS,
273  /*-*/    /*-*/    /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS,
274  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
275  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
276  /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
277  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
278  /*-*/    /*-*/    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
279  KC_TRNS, KC_TRNS,
280  KC_TRNS,
281  KC_TRNS, KC_TRNS, KC_TRNS
282 ),
283 };
284
285 const uint16_t PROGMEM fn_actions[] = {};
286
287 #define UC_MODE_WIN 0
288 #define UC_MODE_LINUX 1
289 #define UC_MODE_OSX 2
290
291 // TODO: allow default mode to be configured
292 static uint16_t unicode_mode = UC_MODE_WIN;
293
294 uint16_t hextokeycode(uint8_t hex) {
295     if (hex == 0x0) {
296         return KC_P0;
297     }
298     if (hex < 0xA) {
299         return KC_P1 + (hex - 0x1);
300     }
301     return KC_A + (hex - 0xA);
302 }
303
304 void unicode_action_function(uint16_t hi, uint16_t lo) {
305     switch (unicode_mode) {
306     case UC_MODE_WIN:
307         register_code(KC_LALT);
308
309         register_code(KC_PPLS);
310         unregister_code(KC_PPLS);
311
312         register_code(hextokeycode((hi & 0xF0) >> 4));
313         unregister_code(hextokeycode((hi & 0xF0) >> 4));
314         register_code(hextokeycode((hi & 0x0F)));
315         unregister_code(hextokeycode((hi & 0x0F)));
316         register_code(hextokeycode((lo & 0xF0) >> 4));
317         unregister_code(hextokeycode((lo & 0xF0) >> 4));
318         register_code(hextokeycode((lo & 0x0F)));
319         unregister_code(hextokeycode((lo & 0x0F)));
320
321         unregister_code(KC_LALT);
322         break;
323     case UC_MODE_LINUX:
324         register_code(KC_LCTL);
325         register_code(KC_LSFT);
326
327         register_code(KC_U);
328         unregister_code(KC_U);
329
330         register_code(hextokeycode((hi & 0xF0) >> 4));
331         unregister_code(hextokeycode((hi & 0xF0) >> 4));
332         register_code(hextokeycode((hi & 0x0F)));
333         unregister_code(hextokeycode((hi & 0x0F)));
334         register_code(hextokeycode((lo & 0xF0) >> 4));
335         unregister_code(hextokeycode((lo & 0xF0) >> 4));
336         register_code(hextokeycode((lo & 0x0F)));
337         unregister_code(hextokeycode((lo & 0x0F)));
338
339         unregister_code(KC_LCTL);
340         unregister_code(KC_LSFT);
341         break;
342     case UC_MODE_OSX:
343         break;
344     }
345 }
346
347 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
348     if (!record->event.pressed) {
349         return MACRO_NONE;
350     }
351     // MACRODOWN only works in this function
352     switch(id) {
353         case UM:
354             unicode_mode = (unicode_mode + 1) % 2;
355             break;
356
357
358         default:
359             break;
360     }
361     return MACRO_NONE;
362 };
363
364 // Runs just one time when the keyboard initializes.
365 void matrix_init_user(void) {
366
367 };
368
369 // Runs constantly in the background, in a loop.
370 void matrix_scan_user(void) {
371     uint8_t layer = biton32(layer_state);
372
373     ergodox_board_led_off();
374     ergodox_right_led_1_off();
375     ergodox_right_led_2_off();
376     ergodox_right_led_3_off();
377     switch (layer) {
378         case L1:
379             ergodox_right_led_1_on();
380             break;
381         case L2:
382             ergodox_right_led_2_on();
383             break;
384         case L3:
385             ergodox_right_led_3_on();
386             break;
387         case L4:
388             ergodox_right_led_1_on();
389             ergodox_right_led_2_on();
390             break;
391         case L5:
392             ergodox_right_led_1_on();
393             ergodox_right_led_3_on();
394             break;
395         // case L6:
396         //     ergodox_right_led_2_on();
397         //     ergodox_right_led_3_on();
398         //     break;
399         // case L7:
400         //     ergodox_right_led_1_on();
401         //     ergodox_right_led_2_on();
402         //     ergodox_right_led_3_on();
403         //     break;
404         default:
405             ergodox_board_led_off();
406             break;
407     }
408 };