]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/ergodox_ez/keymaps/osx_de_experimental/keymap.c
Merge pull request #584 from algernon/ergodox-ez/algernon
[qmk_firmware.git] / keyboards / ergodox_ez / keymaps / osx_de_experimental / keymap.c
1 #include "ergodox_ez.h"
2 #include "debug.h"
3 #include "action_layer.h"
4 #include "keymap_neo2.h"
5 #include "keymap_uk.h"
6 #include "keymap_colemak.h"
7 #include "keymap_nordic.h"
8 #include "keymap_dvorak.h"
9 #include "keymap_german.h"
10 #include "keymap_norwegian.h"
11 #include "keymap_fr_ch.h"
12 #include "keymap_german_osx.h"
13 #include "keymap_spanish.h"
14 #include "keymap_bepo.h"
15
16
17 /**
18 * This layout was generated using the ErgodoxLayoutGenerator (ELG). You can download it from https://github.com/sboesebeck/ErgodoxLayoutGenerator/releases
19 * documentation about it can be found here https://boesebeck.name/2016/04/16/ergodoxlayoutgenerator-documentation/
20 * Thanks to the team of Erez Zukerman for building the great Ergodox-EZ!
21 *
22 * use at own risk!
23 **/
24
25 #define BASE 0
26 #define SYMB 1
27 #define MDIA 2
28 #define SMLY 3
29 #define NUMB 4
30 #define EGOS 5
31
32 #define SMLY_TOG_QUOT 0
33
34 #define M_TOGGLE_5 1
35
36 #define TGH_NUM 2
37
38 #define M_DE_OSX_PLUS_CTRLALT 3
39
40 #define SM_KISS 4
41
42 #define SM_FROWN 5
43
44 #define SM_CRY 6
45
46 #define SM_SMILE 7
47
48 #define SM_SMIRK 8
49
50 #define M_LGUI_SHFT 9
51
52 #define SM_HEART 10
53
54 #define TOG_HLD_MDIA 11
55
56 #define SM_LAUGH 12
57
58 #define SM_SAD 13
59
60 #define M_DE_OSX_CIRC_CTRLCMD 14
61
62 #define M_MEH_SH_ACUT 15
63
64
65 //Layout keymap.c generated with ErgodoxLayoutGenerator V1.0BETA1
66 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
67 /**
68 * Layer: BASE
69 * /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/                        /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/                       
70 * | ESC                | 1                  | 2                  | 3                  | 4                  | 5                  | Hold or toggle     |                       | Hold or toggle     | 6                  | 7                  | 8                  | 9                  | 0                  | ß                  |                      
71 * |                    |                    |                    |                    |                    |                    | Layer NUMB         |                       | Layer MDIA         |                    |                    |                    |                    |                    |                    |                      
72 * /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/                        /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/                       
73 * | TAB                | Q                  | W                  | E                  | R                  | T                  | Cmd                |                       | Cmd                | Z                  | U                  | I                  | O                  | P                  | Ü                  |                      
74 * |                    |                    |                    |                    |                    |                    |                    |                       |                    |                    |                    |                    |                    |                    |                    |                      
75 * /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/\-------------------\                        \-------------------\/-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/                       
76 * | Alt                | A                  | S                  | D                  | F                  | G                  |                                                                 | H                  | J                  | K                  | L                  | Ö                  | Ä                  |                      
77 * |                    |                    |                    |                    |                    |                    |                                                                 |                    |                    |                    |                    |                    | ALT                |                      
78 * /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/                        /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/                       
79 * | Shift              | Y                  | X                  | C                  | V                  | B                  | Alt                |                       | Alt                | N                  | M                  | ,                  | .                  | -                  | Shift              |                      
80 * |                    | Ctrl               |                    |                    |                    |                    |                    |                       |                    |                    |                    |                    |                    | Ctrl               |                    |                      
81 * \-------------------\\-------------------\\-------------------\\-------------------\\-------------------\\-------------------\\-------------------\                        \-------------------\\-------------------\\-------------------\\-------------------\\-------------------\\-------------------\\-------------------\                       
82 *                                                                                                                                                                                                                                                                                                                                                      
83 *                                                                                                                                                                                                                                                                                                                                                      
84 *                                           /-------------------//-------------------//-------------------//-------------------//-------------------/                                                                                       /-------------------//-------------------//-------------------//-------------------//-------------------/  
85 *                                           | <                  | LongPress / Type   | LongPress / Type   | Shift+Ctrl         | Type               |                                                                                      | #                  | ACUT               | CMD+Shift          | ALT+Shift          | +                  | 
86 *                                           | SYMB               | DE_OSX_CIRC_CTRLCMD| DE_OSX_PLUS_CTRAlt |                    | Toggle SMLY        |                                                                                      | Meh                | Hyper              |                    |                    | SYMB               | 
87 *                                           \-------------------\\-------------------\\-------------------\\-------------------\/-------------------//-------------------/   /-------------------//-------------------/                     \-------------------\\-------------------\\-------------------\\-------------------\\-------------------\  
88 *                                                                                                                               | HOME               | END                |  | LEFT               | RIGHT              |                                                                                                                               
89 *                                                                                                                               |                    |                    |  |                    |                    |                                                                                                                               
90 *                                                                                                                               \-------------------\/-------------------/   /-------------------/\-------------------\                                                                                                                                
91 *                                                                                                                                                    | PGUP               |  | UP                 |                                                                                                                                                    
92 *                                                                                                                                                    |                    |  |                    |                                                                                                                                                    
93 *                                                                                                          /-------------------//-------------------//-------------------/   /-------------------//-------------------//-------------------/                                                                                                           
94 *                                                                                                          | BSPC               | DEL                | PGDN               |  | DOWN               | ENT                | SPC                |                                                                                                          
95 *                                                                                                          |                    |                    |                    |  |                    |                    |                    |                                                                                                          
96 *                                                                                                          \-------------------\\-------------------\\-------------------\   \-------------------\\-------------------\\-------------------\                                                                                                           
97 *                                                                                                                                                                                                                                                                                                                                                      
98
99 **/
100 [BASE]=KEYMAP(
101 //left half
102     KC_ESC, DE_OSX_1, DE_OSX_2, DE_OSX_3, DE_OSX_4, DE_OSX_5, M(TGH_NUM), 
103     KC_TAB, DE_OSX_Q, DE_OSX_W, DE_OSX_E, DE_OSX_R, DE_OSX_T, KC_LGUI, 
104     KC_LALT, DE_OSX_A, DE_OSX_S, DE_OSX_D, DE_OSX_F, DE_OSX_G, 
105     KC_LSFT, CTL_T(DE_OSX_Y), DE_OSX_X, DE_OSX_C, DE_OSX_V, DE_OSX_B, KC_LALT, 
106                   LT(SYMB,DE_OSX_LESS), M(M_DE_OSX_CIRC_CTRLCMD), M(M_DE_OSX_PLUS_CTRLALT), LSFT(KC_LCTRL), M(SMLY_TOG_QUOT), 
107                                               KC_HOME, KC_END, 
108                                                      KC_PGUP, 
109                                        KC_BSPC, KC_DEL, KC_PGDN, 
110     //right half
111     M(TOG_HLD_MDIA), DE_OSX_6, DE_OSX_7, DE_OSX_8, DE_OSX_9, DE_OSX_0, DE_OSX_SS, 
112     KC_RGUI, DE_OSX_Z, DE_OSX_U, DE_OSX_I, DE_OSX_O, DE_OSX_P, DE_OSX_UE, 
113            DE_OSX_H, DE_OSX_J, DE_OSX_K, DE_OSX_L, DE_OSX_OE, ALT_T(DE_OSX_AE), 
114     KC_RALT, DE_OSX_N, DE_OSX_M, DE_OSX_COMM, DE_OSX_DOT, CTL_T(DE_OSX_MINS), KC_RSFT, 
115                          MEH_T(DE_OSX_HASH), ALL_T(DE_OSX_ACUT), LGUI(KC_LSFT), LALT(KC_LSFT), LT(SYMB,DE_OSX_PLUS), 
116     KC_LEFT, KC_RIGHT, 
117     KC_UP, 
118     KC_DOWN, KC_ENT, KC_SPC),
119 /**
120 * Layer: SYMB
121 * /-----------//-----------//-----------//-----------//-----------//-----------//-----------/                /-----------//-----------//-----------//-----------//-----------//-----------//-----------/               
122 * | APPLICATION| F1         | F2         | F3         | F4         | F5         | F5         |               | F6         | F6         | F7         | F8         | F9         | F10        | F11        |              
123 * |            |            |            |            |            |            |            |               |            |            |            |            |            |            |            |              
124 * /-----------//-----------//-----------//-----------//-----------//-----------//-----------/                /-----------//-----------//-----------//-----------//-----------//-----------//-----------/               
125 * |            | <          | >          | !          | ?          |            |            |               |            | \          | [          | ]          | <          | >          | !          |              
126 * |            |            |            |            |            |            |            |               |            |            |            |            |            |            |            |              
127 * /-----------//-----------//-----------//-----------//-----------//-----------/\-----------\                \-----------\/-----------//-----------//-----------//-----------//-----------//-----------/               
128 * |            | #          | $          | \          | /          | .          |                                         | /          | (          | )          | {          | }          | #          |              
129 * |            |            |            |            |            |            |                                         |            |            |            |            |            |            |              
130 * /-----------//-----------//-----------//-----------//-----------//-----------//-----------/                /-----------//-----------//-----------//-----------//-----------//-----------//-----------/               
131 * |            |            | <          | %          | |          | ~          |            |               |            | |          | ~          |            |            |            |            |              
132 * |            |            |            |            |            |            |            |               |            |            |            |            |            |            |            |              
133 * \-----------\\-----------\\-----------\\-----------\\-----------\\-----------\\-----------\                \-----------\\-----------\\-----------\\-----------\\-----------\\-----------\\-----------\               
134 *                                                                                                                                                                                                                      
135 *                                                                                                                                                                                                                      
136 *                           /-----------//-----------//-----------//-----------//-----------/                                                       /-----------//-----------//-----------//-----------//-----------/  
137 *                           |            |            |            |            |            |                                                      | '          | DQOT       |            | Toggle 5   |            | 
138 *                           |            |            |            |            |            |                                                      |            |            |            |            |            | 
139 *                           \-----------\\-----------\\-----------\\-----------\/-----------//-----------/   /-----------//-----------/             \-----------\\-----------\\-----------\\-----------\\-----------\  
140 *                                                                               |            |            |  | F13        | F12        |                                                                               
141 *                                                                               |            |            |  |            |            |                                                                               
142 *                                                                               \-----------\/-----------/   /-----------/\-----------\                                                                                
143 *                                                                                            |            |  | F14        |                                                                                            
144 *                                                                                            |            |  |            |                                                                                            
145 *                                                                  /-----------//-----------//-----------/   /-----------//-----------//-----------/                                                                   
146 *                                                                  |            | DEL        |            |  | F15        |            |            |                                                                  
147 *                                                                  |            |            |            |  |            |            |            |                                                                  
148 *                                                                  \-----------\\-----------\\-----------\   \-----------\\-----------\\-----------\                                                                   
149 *                                                                                                                                                                                                                      
150
151 **/
152 [SYMB]=KEYMAP(
153 //left half
154     KC_APPLICATION, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F5, 
155     KC_TRNS, DE_OSX_LESS, DE_OSX_MORE, DE_OSX_EXLM, DE_OSX_QST, KC_TRNS, KC_TRNS, 
156     KC_TRNS, DE_OSX_HASH, DE_OSX_DLR, DE_OSX_BSLS, DE_OSX_SLSH, KC_DOT, 
157     KC_TRNS, KC_TRNS, DE_OSX_LESS, DE_OSX_PERC, DE_OSX_PIPE, DE_OSX_TILD, KC_TRNS, 
158                   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
159                                               KC_TRNS, KC_TRNS, 
160                                                      KC_TRNS, 
161                                        KC_TRNS, KC_DEL, KC_TRNS, 
162     //right half
163     KC_F6, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, 
164     KC_TRNS, DE_OSX_BSLS, DE_OSX_LBRC, DE_OSX_RBRC, DE_OSX_LESS, DE_OSX_MORE, DE_OSX_EXLM, 
165            DE_OSX_SLSH, DE_OSX_LPRN, DE_OSX_RPRN, DE_OSX_LCBR, DE_OSX_RCBR, DE_OSX_HASH, 
166     KC_TRNS, DE_OSX_PIPE, DE_OSX_TILD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
167                          DE_OSX_QUOT, DE_OSX_DQOT, KC_TRNS, M(M_TOGGLE_5), KC_TRNS, 
168     KC_F13, KC_F12, 
169     KC_F14, 
170     KC_F15, KC_TRNS, KC_TRNS),
171 /**
172 * Layer: MDIA
173 * /-----//-----//-----//-----//-----//-----//-----/          /-----//-----//-----//-----//-----//-----//-----/         
174 * |      |      |      |      |      |      |      |         |      |      |      |      |      |      |      |        
175 * |      |      |      |      |      |      |      |         |      |      |      |      |      |      |      |        
176 * /-----//-----//-----//-----//-----//-----//-----/          /-----//-----//-----//-----//-----//-----//-----/         
177 * |      |      | BTN1 | U    | BTN2 | U    |      |         |      |      |      |      |      |      |      |        
178 * |      |      |      |      |      |      |      |         |      |      |      |      |      |      |      |        
179 * /-----//-----//-----//-----//-----//-----/\-----\          \-----\/-----//-----//-----//-----//-----//-----/         
180 * |      |      | L    | D    | R    | D    |                       |      |      |      |      |      |      |        
181 * |      |      |      |      |      |      |                       |      |      |      |      |      |      |        
182 * /-----//-----//-----//-----//-----//-----//-----/          /-----//-----//-----//-----//-----//-----//-----/         
183 * |      |      | L    | D    | R    | BTN3 |      |         |      |      |      |      |      | UP   |      |        
184 * |      |      |      |      |      |      |      |         |      |      |      |      |      |      |      |        
185 * \-----\\-----\\-----\\-----\\-----\\-----\\-----\          \-----\\-----\\-----\\-----\\-----\\-----\\-----\         
186 *                                                                                                                      
187 *                                                                                                                      
188 *               /-----//-----//-----//-----//-----/                               /-----//-----//-----//-----//-----/  
189 *               |      |      |      |      |      |                              |      |      | LEFT | DOWN | RIGHT| 
190 *               |      |      |      |      |      |                              |      |      |      |      |      | 
191 *               \-----\\-----\\-----\\-----\/-----//-----/   /-----//-----/       \-----\\-----\\-----\\-----\\-----\  
192 *                                           |      |      |  | MPRV | MNXT |                                           
193 *                                           |      |      |  |      |      |                                           
194 *                                           \-----\/-----/   /-----/\-----\                                            
195 *                                                  |      |  | VOLU |                                                  
196 *                                                  |      |  |      |                                                  
197 *                                    /-----//-----//-----/   /-----//-----//-----/                                     
198 *                                    |      |      |      |  | VOLD | MUTE | MPLY |                                    
199 *                                    |      |      |      |  |      |      |      |                                    
200 *                                    \-----\\-----\\-----\   \-----\\-----\\-----\                                     
201 *                                                                                                                      
202
203 **/
204 [MDIA]=KEYMAP(
205 //left half
206     KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
207     KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, KC_TRNS, 
208     KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, 
209     KC_TRNS, KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_R, KC_BTN3, KC_TRNS, 
210                   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
211                                               KC_TRNS, KC_TRNS, 
212                                                      KC_TRNS, 
213                                        KC_TRNS, KC_TRNS, KC_TRNS, 
214     //right half
215     KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
216     KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
217            KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
218     KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, 
219                          KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, 
220     KC_MPRV, KC_MNXT, 
221     KC_VOLU, 
222     KC_VOLD, KC_MUTE, KC_MPLY),
223 /**
224 * Layer: SMLY
225 * /--------//--------//--------//--------//--------//--------//--------/             /--------//--------//--------//--------//--------//--------//--------/            
226 * |         |         |         |         |         |         |         |            | Typing  | Typing  | Typing  |         |         |         |         |           
227 * |         |         |         |         |         |         |         |            | SM_SMILE| SM_SMIRK| SM_LAUGH|         |         |         |         |           
228 * /--------//--------//--------//--------//--------//--------//--------/             /--------//--------//--------//--------//--------//--------//--------/            
229 * |         |         |         |         |         |         |         |            |         | Typing  | Typing  | Typing  |         |         |         |           
230 * |         |         |         |         |         |         |         |            |         | SM_FROWN| SM_SAD  | SM_CRY  |         |         |         |           
231 * /--------//--------//--------//--------//--------//--------/\--------\             \--------\/--------//--------//--------//--------//--------//--------/            
232 * |         |         |         |         |         |         |                                | Typing  | Typing  |         |         |         |         |           
233 * |         |         |         |         |         |         |                                | SM_HEART| SM_KISS |         |         |         |         |           
234 * /--------//--------//--------//--------//--------//--------//--------/             /--------//--------//--------//--------//--------//--------//--------/            
235 * |         |         |         |         |         |         |         |            |         |         |         |         |         |         |         |           
236 * |         |         |         |         |         |         |         |            |         |         |         |         |         |         |         |           
237 * \--------\\--------\\--------\\--------\\--------\\--------\\--------\             \--------\\--------\\--------\\--------\\--------\\--------\\--------\            
238 *                                                                                                                                                                      
239 *                                                                                                                                                                      
240 *                     /--------//--------//--------//--------//--------/                                           /--------//--------//--------//--------//--------/  
241 *                     |         |         |         |         |         |                                          |         |         |         |         |         | 
242 *                     |         |         |         |         |         |                                          |         |         |         |         |         | 
243 *                     \--------\\--------\\--------\\--------\/--------//--------/   /--------//--------/          \--------\\--------\\--------\\--------\\--------\  
244 *                                                             |         |         |  |         |         |                                                             
245 *                                                             |         |         |  |         |         |                                                             
246 *                                                             \--------\/--------/   /--------/\--------\                                                              
247 *                                                                       |         |  |         |                                                                       
248 *                                                                       |         |  |         |                                                                       
249 *                                                   /--------//--------//--------/   /--------//--------//--------/                                                    
250 *                                                   |         |         |         |  |         |         |         |                                                   
251 *                                                   |         |         |         |  |         |         |         |                                                   
252 *                                                   \--------\\--------\\--------\   \--------\\--------\\--------\                                                    
253 *                                                                                                                                                                      
254
255 **/
256 [SMLY]=KEYMAP(
257 //left half
258     KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
259     KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
260     KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
261     KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
262                   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
263                                               KC_TRNS, KC_TRNS, 
264                                                      KC_TRNS, 
265                                        KC_TRNS, KC_TRNS, KC_TRNS, 
266     //right half
267     M(SM_SMILE), M(SM_SMIRK), M(SM_LAUGH), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
268     KC_TRNS, M(SM_FROWN), M(SM_SAD), M(SM_CRY), KC_TRNS, KC_TRNS, KC_TRNS, 
269            M(SM_HEART), M(SM_KISS), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
270     KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
271                          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
272     KC_TRNS, KC_TRNS, 
273     KC_TRNS, 
274     KC_TRNS, KC_TRNS, KC_TRNS),
275 /**
276 * Layer: NUMB
277 * /----//----//----//----//----//----//----/         /----//----//----//----//----//----//----/        
278 * |     |     |     |     |     |     |     |        |     | F6  | F7  | F8  | F9  | F10 | F11 |       
279 * |     |     |     |     |     |     |     |        |     |     |     |     |     |     |     |       
280 * /----//----//----//----//----//----//----/         /----//----//----//----//----//----//----/        
281 * |     |     |     | UP  |     |     |     |        |     | /   | 7   | 8   | 9   | *   | F12 |       
282 * |     |     |     |     |     |     |     |        |     |     |     |     |     |     |     |       
283 * /----//----//----//----//----//----/\----\         \----\/----//----//----//----//----//----/        
284 * |     |     | LEFT| DOWN| RGHT|     |                    | /   | 4   | 5   | 6   | +   | -   |       
285 * |     |     |     |     |     |     |                    |     |     |     |     |     |     |       
286 * /----//----//----//----//----//----//----/         /----//----//----//----//----//----//----/        
287 * |     |     |     |     |     |     |     |        |     | %   | 1   | 2   | 3   |     |     |       
288 * |     |     |     |     |     |     |     |        |     |     |     |     |     |     |     |       
289 * \----\\----\\----\\----\\----\\----\\----\         \----\\----\\----\\----\\----\\----\\----\        
290 *                                                                                                      
291 *                                                                                                      
292 *             /----//----//----//----//----/                           /----//----//----//----//----/  
293 *             |     |     |     |     |     |                          | 0   | .   | ,   | =   |     | 
294 *             |     |     |     |     |     |                          |     |     |     |     |     | 
295 *             \----\\----\\----\\----\/----//----/   /----//----/      \----\\----\\----\\----\\----\  
296 *                                     |     |     |  |     |     |                                     
297 *                                     |     |     |  |     |     |                                     
298 *                                     \----\/----/   /----/\----\                                      
299 *                                           |     |  |     |                                           
300 *                                           |     |  |     |                                           
301 *                               /----//----//----/   /----//----//----/                                
302 *                               |     |     |     |  |     |     |     |                               
303 *                               |     |     |     |  |     |     |     |                               
304 *                               \----\\----\\----\   \----\\----\\----\                                
305 *                                                                                                      
306
307 **/
308 [NUMB]=KEYMAP(
309 //left half
310     KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
311     KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, 
312     KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, 
313     KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
314                   KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
315                                               KC_TRNS, KC_TRNS, 
316                                                      KC_TRNS, 
317                                        KC_TRNS, KC_TRNS, KC_TRNS, 
318     //right half
319     KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, 
320     KC_TRNS, DE_OSX_SLSH, KC_7, KC_8, KC_9, DE_OSX_ASTR, KC_F12, 
321            DE_OSX_SLSH, KC_4, KC_5, KC_6, DE_OSX_PLUS, DE_OSX_MINS, 
322     KC_TRNS, DE_OSX_PERC, KC_1, KC_2, KC_3, KC_TRNS, KC_TRNS, 
323                          KC_0, KC_DOT, KC_COMM, DE_OSX_EQL, KC_TRNS, 
324     KC_TRNS, KC_TRNS, 
325     KC_TRNS, 
326     KC_TRNS, KC_TRNS, KC_TRNS),
327 /**
328 * Layer: EGOS
329 * /--------//--------//--------//--------//--------//--------//--------/             /--------//--------//--------//--------//--------//--------//--------/            
330 * |         |         |         |         |         |         |         |            |         |         |         |         |         |         |         |           
331 * |         |         |         |         |         |         |         |            |         |         |         |         |         |         |         |           
332 * /--------//--------//--------//--------//--------//--------//--------/             /--------//--------//--------//--------//--------//--------//--------/            
333 * |         |         |         |         |         |         |         |            |         |         |         |         |         |         |         |           
334 * |         |         |         |         |         |         |         |            |         |         |         |         |         |         |         |           
335 * /--------//--------//--------//--------//--------//--------/\--------\             \--------\/--------//--------//--------//--------//--------//--------/            
336 * | Shift   |         |         |         |         |         |                                |         |         |         |         |         |         |           
337 * |         |         |         |         |         |         |                                |         |         |         |         |         |         |           
338 * /--------//--------//--------//--------//--------//--------//--------/             /--------//--------//--------//--------//--------//--------//--------/            
339 * |         |         |         |         |         |         |         |            |         |         |         |         |         |         |         |           
340 * |         |         |         |         |         |         |         |            |         |         |         |         |         |         |         |           
341 * \--------\\--------\\--------\\--------\\--------\\--------\\--------\             \--------\\--------\\--------\\--------\\--------\\--------\\--------\            
342 *                                                                                                                                                                      
343 *                                                                                                                                                                      
344 *                     /--------//--------//--------//--------//--------/                                           /--------//--------//--------//--------//--------/  
345 *                     | Ctrl    |         |         |         |         |                                          |         |         |         | Toggle 5|         | 
346 *                     |         |         |         |         |         |                                          |         |         |         |         |         | 
347 *                     \--------\\--------\\--------\\--------\/--------//--------/   /--------//--------/          \--------\\--------\\--------\\--------\\--------\  
348 *                                                             | F1      | F2      |  |         |         |                                                             
349 *                                                             |         |         |  |         |         |                                                             
350 *                                                             \--------\/--------/   /--------/\--------\                                                              
351 *                                                                       | F3      |  |         |                                                                       
352 *                                                                       |         |  |         |                                                                       
353 *                                                   /--------//--------//--------/   /--------//--------//--------/                                                    
354 *                                                   | SPC     | Ctrl    | F4      |  |         |         |         |                                                   
355 *                                                   |         |         |         |  |         |         |         |                                                   
356 *                                                   \--------\\--------\\--------\   \--------\\--------\\--------\                                                    
357 *                                                                                                                                                                      
358
359 **/
360 [EGOS]=KEYMAP(
361 //left half
362     KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
363     KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
364     KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
365     KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
366                   KC_LCTL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
367                                               KC_F1, KC_F2, 
368                                                      KC_F3, 
369                                        KC_SPC, KC_LCTL, KC_F4, 
370     //right half
371     KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
372     KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
373            KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
374     KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 
375                          KC_TRNS, KC_TRNS, KC_TRNS, M(M_TOGGLE_5), KC_TRNS, 
376     KC_TRNS, KC_TRNS, 
377     KC_TRNS, 
378     KC_TRNS, KC_TRNS, KC_TRNS),
379 };
380
381 const uint16_t PROGMEM fn_actions[] = {
382
383 };
384
385 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
386 {
387 static uint16_t start;
388 switch(id) {
389 case SMLY_TOG_QUOT:
390 //Macro: SMLY_TOG_QUOT//-----------------------
391 if (record->event.pressed) {
392                         start = timer_read();
393            layer_state ^= (1<<SMLY);
394            layer_state &= (1<<SMLY);
395                         return MACRO_NONE;              } else {
396            layer_state ^= (1<<SMLY);
397            layer_state &= (1<<SMLY);
398                         if (timer_elapsed(start) >150) {
399                                 return MACRO_NONE;
400                         } else {
401                                 return MACRO(DOWN(KC_LSFT),TYPE(DE_OSX_HASH),UP(KC_LSFT),END);
402                         }
403                 }
404
405 break;
406 case M_TOGGLE_5:
407 //Macro: M_TOGGLE_5//-----------------------
408  if (record->event.pressed){
409            layer_state ^= (1<<5);
410            layer_state &= (1<<5);
411         }
412
413 break;
414 case TGH_NUM:
415 //Macro: TGH_NUM//-----------------------
416 if (record->event.pressed){
417          start = timer_read();
418          layer_state ^=(1<<NUMB);
419          layer_state &=(1<<NUMB);
420  } else {
421          if (timer_elapsed(start) > 150) {
422                  layer_state^=(1<<NUMB);
423                  layer_state&=(1<<NUMB);
424          }
425  }
426 return MACRO_NONE;
427
428 break;
429 case M_DE_OSX_PLUS_CTRLALT:
430 //Macro: M_DE_OSX_PLUS_CTRLALT//-----------------------
431 if (record->event.pressed) {
432                         start = timer_read();
433                         return MACRO(DOWN(KC_LCTRL),DOWN(KC_LALT),END);
434                 } else {
435                         if (timer_elapsed(start) >150) {
436                                 return MACRO(U(LCTRL),U(LALT),END);
437                         } else {
438                                 return MACRO(UP(KC_LCTRL),UP(KC_LALT),TYPE(KC_RBRC),END);
439                         }
440                 }
441
442 break;
443 case SM_KISS:
444 //Macro: SM_KISS//-----------------------
445 if (record->event.pressed) {
446                         return MACRO(DOWN(KC_LSFT),TYPE(KC_DOT),UP(KC_LSFT),TYPE(KC_SLSH),DOWN(KC_LSFT),TYPE(KC_RBRC),UP(KC_LSFT),END);
447                 }
448
449 break;
450 case SM_FROWN:
451 //Macro: SM_FROWN//-----------------------
452 if (record->event.pressed) {
453                         return MACRO(DOWN(KC_LSFT),TYPE(KC_DOT),UP(KC_LSFT),TYPE(KC_SLSH),DOWN(KC_LALT),TYPE(KC_8),UP(KC_LALT),END);
454                 }
455
456 break;
457 case SM_CRY:
458 //Macro: SM_CRY//-----------------------
459 if (record->event.pressed) {
460                         return MACRO(DOWN(KC_LSFT),TYPE(KC_COMM),UP(KC_LSFT),TYPE(KC_SLSH),DOWN(KC_LSFT),TYPE(KC_8),UP(KC_LSFT),END);
461                 }
462
463 break;
464 case SM_SMILE:
465 //Macro: SM_SMILE//-----------------------
466 if (record->event.pressed) {
467                         return MACRO(DOWN(KC_LSFT),TYPE(KC_DOT),UP(KC_LSFT),TYPE(KC_SLSH),DOWN(KC_LSFT),TYPE(KC_9),UP(KC_LSFT),END);
468                 }
469
470 break;
471 case SM_SMIRK:
472 //Macro: SM_SMIRK//-----------------------
473 if (record->event.pressed) {
474                         return MACRO(DOWN(KC_LSFT),TYPE(KC_COMM),UP(KC_LSFT),TYPE(KC_SLSH),DOWN(KC_LSFT),TYPE(KC_9),UP(KC_LSFT),END);
475                 }
476
477 break;
478 case M_LGUI_SHFT:
479 //Macro: M_LGUI_SHFT//-----------------------
480 if (record->event.pressed){
481                         return MACRO(DOWN(KC_LGUI),DOWN(KC_LSFT),END);
482                 }else{
483                         return MACRO(UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),UP(KC_LGUI),UP(KC_LSFT),U(LGUI),U(LSFT),END);
484                 }
485
486 break;
487 case SM_HEART:
488 //Macro: SM_HEART//-----------------------
489 if (record->event.pressed) {
490                         return MACRO(TYPE(KC_GRV),TYPE(KC_3),END);
491                 }
492
493 break;
494 case TOG_HLD_MDIA:
495 //Macro: TOG_HLD_MDIA//-----------------------
496 if (record->event.pressed){
497          start = timer_read();
498          layer_state ^=(1<<MDIA);
499          layer_state &=(1<<MDIA);
500  } else {
501          if (timer_elapsed(start) > 150) {
502                  layer_state^=(1<<MDIA);
503                  layer_state&=(1<<MDIA);
504          }
505  }
506 return MACRO_NONE;
507
508 break;
509 case SM_LAUGH:
510 //Macro: SM_LAUGH//-----------------------
511 if (record->event.pressed) {
512                         return MACRO(DOWN(KC_LSFT),TYPE(KC_DOT),UP(KC_LSFT),TYPE(KC_SLSH),DOWN(KC_LSFT),TYPE(KC_D),UP(KC_LSFT),END);
513                 }
514
515 break;
516 case SM_SAD:
517 //Macro: SM_SAD//-----------------------
518 if (record->event.pressed) {
519                         return MACRO(DOWN(KC_LSFT),TYPE(KC_DOT),UP(KC_LSFT),TYPE(KC_SLSH),DOWN(KC_LSFT),TYPE(KC_8),UP(KC_LSFT),END);
520                 }
521
522 break;
523 case M_DE_OSX_CIRC_CTRLCMD:
524 //Macro: M_DE_OSX_CIRC_CTRLCMD//-----------------------
525 if (record->event.pressed) {
526                         start = timer_read();
527                         return MACRO(DOWN(KC_LCTRL),DOWN(KC_LGUI),END);
528                 } else {
529                         if (timer_elapsed(start) >150) {
530                                 return MACRO(U(LCTRL),U(LGUI),END);
531                         } else {
532                                 return MACRO(UP(KC_LCTRL),UP(KC_LGUI),TYPE(KC_NUBS),END);
533                         }
534                 }
535
536 break;
537 case M_MEH_SH_ACUT:
538 //Macro: M_MEH_SH_ACUT//-----------------------
539 if (record->event.pressed) {
540                         start = timer_read();
541                         return MACRO(DOWN(KC_LCTRL),DOWN(KC_LSFT),DOWN(KC_LALT),END);
542                 } else {
543                         if (timer_elapsed(start) >150) {
544                                 return MACRO(U(LCTRL),U(LSFT),U(LALT),END);
545                         } else {
546                                 return MACRO(UP(KC_LCTRL),UP(KC_LALT),TYPE(DE_OSX_ACUT),UP(KC_LSFT),END);
547                         }
548                 }
549
550 break;
551 }
552 return MACRO_NONE;
553 };
554
555 // Runs just one time when the keyboard initializes.
556 void matrix_init_user(void) {
557
558 };
559
560 // Runs constantly in the background, in a loop.
561 void matrix_scan_user(void) {
562
563 uint8_t layer = biton32(layer_state);
564
565 ergodox_board_led_off();
566 ergodox_right_led_1_off();
567 ergodox_right_led_2_off();
568 ergodox_right_led_3_off();
569 switch (layer) {
570
571     case SYMB:
572         ergodox_right_led_1_on();
573         
574         
575     break;
576     case MDIA:
577         
578         ergodox_right_led_2_on();
579         
580     break;
581     case NUMB:
582         
583         
584         ergodox_right_led_3_on();
585     break;
586     case EGOS:
587         ergodox_right_led_1_on();
588         ergodox_right_led_2_on();
589         ergodox_right_led_3_on();
590     break;
591 default:
592 // none
593 break;
594 }
595
596 };
597