]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/lets_split/keymaps/xk/keymap.c
Merge pull request #1574 from danamlund/master
[qmk_firmware.git] / keyboards / lets_split / keymaps / xk / keymap.c
1 #include "lets_split.h"
2 #include "action_layer.h"
3 #include "eeconfig.h"
4
5 extern keymap_config_t keymap_config;
6
7 #define _COLEMAK  0
8 #define _KAMELOC  1
9 #define _IKAPILA  2
10 #define _IKASHFT  3
11 #define _ARROWKY  4
12 #define _FNCTION  5
13 #define _NINEKEY  6
14 #define _NAVIGAT  7
15 #define _QWERTY   8
16 #define _MLAYER   9
17 #define _GRVTABL  15
18
19 enum custom_keycodes {
20   COLEMAK = SAFE_RANGE,
21   KAMELOC,
22   IKAPILA,
23   IKASHFT,
24   ARROWKY,
25   FNCTION,
26   NINEKEY,
27   NAVIGAT,
28   QWERTY,
29   MLAYER,
30   GRVTABL,
31 };
32
33 //TD Declarations
34 enum {
35 VOM = 0,
36 PRN,
37 EGT,
38 HRD,
39 XRD,
40 DSH,
41 ESC,
42 EQE,
43 PGN,
44 HND,
45 COD,
46 UND,
47 F11,
48 F12,
49 F13,
50 F14,
51 F15,
52 F16,
53 F17,
54 F18,
55 F19,
56 F20,
57 //unicode_inputctl
58 LINUX,
59 WIN,
60 WINSH,
61 OSX,
62 };
63
64 #define _______     KC_TRNS
65 #define XXXXXXX     KC_NO
66
67 // action-TAP for key/mod behavior LT(layer, KC)
68 #define XK_TAB      LT(_FNCTION, KC_TAB)
69 #define XK_BSP      LT(_KAMELOC, KC_BSPC)
70 #define XK_APO      LT(_KAMELOC, KC_QUOT)
71
72 #define XK_SPC    LT(_IKAPILA, KC_SPC)
73 #define XK_ENT      LT(_IKAPILA, KC_ENT)
74 #define XK_PGDN     LT(_IKASHFT, KC_PGDN)
75 #define XK_PGUP     LT(_IKASHFT, KC_PGUP)
76 #define PIPBOY      LT(_FNCTION, KC_BSLS)
77 #define XK_DEL      LT(_IKASHFT, KC_DEL)
78 #define XK_GRV      LT(_GRVTABL, KC_GRV)
79
80 // mod-TAP for mod/key behavior MT(modkey, KC)
81 #define ALT_IT      MT(MOD_RALT, KC_SCLN)
82 #define CTL_IT      MT(MOD_RCTL, KC_DOT)
83 #define SFT_ENT     MT(MOD_RSFT, KC_ENT)
84
85 //sticky modifiers
86 #define KYCTL       OSM(MOD_LCTL)
87 #define KYSFT       OSM(MOD_LSFT)
88 #define CAKY        OSM(MOD_LCTL | MOD_LALT)
89
90 //shortcuts
91 #define CADEL       LALT(LCTL(KC_DEL))
92 #define CAINS       LALT(LCTL(KC_INS))
93 #define TGNKRO      MAGIC_TOGGLE_NKRO
94
95 #define NAVCH       LCTL(KC_HOME)
96 #define NAVCPD      LCTL(KC_PGDN)
97 #define NAVCPU      LCTL(KC_PGUP)
98 #define NAVCE       LCTL(KC_END)
99 #define NAVCU       LCTL(KC_UP)
100 #define NAVCD       LCTL(KC_DOWN)
101 #define NAVCL       LCTL(KC_LEFT)
102 #define NAVCR       LCTL(KC_RGHT)
103 #define NAVGU       LGUI(KC_UP)
104 #define NAVGD       LGUI(KC_DOWN)
105 #define NAVGL       LGUI(KC_LEFT)
106 #define NAVGR       LGUI(KC_RGHT)
107
108 #define KC_NDSH     LCTL(KC_PMNS)
109 #define KC_MDSH     LALT(LCTL(KC_PMNS))
110
111 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
112
113 /*
114   TAP
115   ┌────┬────┬────┬────┬────┬────┐    ┌────┬────┬────┬────┬────┬────┐
116   │TAB │ Q  │ W  │ F  │ P  │ B  │    │ J  │ L  │ U  │ Y  │ ;  │DEL │
117   ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
118   │BKSP│ A  │ R  │ S  │ T  │ G  │    │ M  │ N  │ E  │ I  │ O  │ '  │
119   ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
120   │OSFT│ X  │ C  │ D  │ V  │ Z  │    │ K  │ H  │ ,  │    │ .  │ /  │
121   ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
122   │OCTL│GUI │ESC │ALT │PGUP│SPC │    │ENT │PGDN│ () │ {} │ \  │ `  │
123   └────┴────┴────┴────┴────┴────┘    └────┴────┴────┴────┴────┴────┘
124    HOLD
125   ┌────┬────┬────┬────┬────┬────┐    ┌────┬────┬────┬────┬────┬────┐
126   │L FN│    │    │    │    │    │    │    │    │    │    │ALT │L!@#│
127   ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
128   │L OH│    │    │    │    │    │    │    │    │    │    │    │L OH│
129   ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
130   │SFT │    │    │    │    │    │    │    │    │    │    │CTL │SFT │
131   ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
132   │CTL │GUI │ESC │ALT │L!@#│L123│    │L123│L!@#│L  M│    │L FN│LGRV│
133   └────┴────┴────┴────┴────┴────┘    └────┴────┴────┴────┴────┴────┘
134    DOUBLETAP
135   ┌────┬────┬────┬────┬────┬────┐    ┌────┬────┬────┬────┬────┬────┐
136   │    │    │    │    │    │    │    │    │    │    │    │    │    │
137   ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
138   │    │    │    │    │    │    │    │    │    │    │    │    │    │
139   ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
140   │OSML│    │    │    │    │    │    │    │    │    │    │    │    │
141   ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
142   │OSML│OSML│!F4 │    │    │    │    │    │    │    │    │    │    │
143   └────┴────┴────┴────┴────┴────┘    └────┴────┴────┴────┴────┴────┘
144   Switch type
145   ┌────┬────┬────┬────┬────┬────┐    ┌────┬────┬────┬────┬────┬────┐
146   │Br  │mxC │Z   │Z   │Z   │Z   │    │Z   │Z   │Z   │Z   │Br  │G   │
147   ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
148   │G   │Z   │Z   │Z   │Z   │Z   │    │Z   │Z   │Z   │Z   │Z   │Z   │
149   ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
150   │Y   │Z   │Z   │Z   │Z   │Z   │    │Z   │Z   │Z   │B   │B   │Y   │
151   ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
152   │Y   │Y   │mxC │Z   │BLK │BLK │    │BLK │BLK │Z   │Z   │B   │G   │
153   └────┴────┴────┴────┴────┴────┘    └────┴────┴────┴────┴────┴────┘
154   with DCS keycaps
155   Top Row   R1 (reversed?)
156   M Row1    R3 (with reversed pointer finger)
157   M Row2    R4
158   B Row     R2 (reversed)
159 */
160
161 // Colemak PB&J (Mod-DH)
162 [_COLEMAK] = KEYMAP( \
163    XK_TAB,    KC_Q,    KC_W,    KC_F,    KC_P,    KC_B,            KC_J,    KC_L,        KC_U,         KC_Y,  ALT_IT,         XK_DEL, \
164    XK_BSP,    KC_A,    KC_R,    KC_S,    KC_T,    KC_G,            KC_M,    KC_N,        KC_E,         KC_I,    KC_O,         XK_APO, \
165     KYSFT,    KC_X,    KC_C,    KC_D,    KC_V,    KC_Z,            KC_K,    KC_H,     TD(COD),       KC_DOT,  CTL_IT, SFT_T(KC_SLSH), \
166     KYCTL, KC_LGUI, TD(ESC), KC_LALT, XK_PGUP,  XK_SPC,          XK_ENT, XK_PGDN, MO(_MLAYER), TT(_NAVIGAT),  PIPBOY,         XK_GRV \
167 ),
168
169 // useful for one-handed typing
170 [_KAMELOC] = KEYMAP( \
171    XK_DEL, KC_SCLN,    KC_Y,    KC_U,    KC_L,    KC_J,            KC_B,    KC_P,    KC_F,    KC_W,    KC_Q,  XK_TAB, \
172   _______,    KC_O,    KC_I,    KC_E,    KC_N,    KC_M,            KC_G,    KC_T,    KC_S,    KC_R,    KC_A, _______, \
173     KYSFT, KC_SLSH,  KC_DOT, KC_COMM,    KC_H,    KC_K,         TD(UND),    KC_V,    KC_D,    KC_C,    KC_X,   KYSFT, \
174    XK_GRV,  PIPBOY,    M(1), KC_BTN1, KC_HOME,  KC_ENT,          KC_ENT,  KC_END, KC_LGUI, TD(ESC), KC_LALT,   KYCTL \
175 ),
176
177 /*
178   ┌────┬────┬────┬────┬────┬────┐    ┌────┬────┬────┬────┬────┬────┐
179   │    │ 1  │ 2  │ 3  │ 4  │ 5  │    │ 6  │ 7  │ 8  │ 9  │ 0  │    │
180   ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
181   │    │ M  │ V- │ V+ │NEXT│PLAY│    │ ←  │ ↓  │ ↑  │ →  │DASH│INS │
182   ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
183   │    │ -  │ =  │TGL │    │    │    │HOME│END │HOME│    │ \  │ ~  │
184   ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
185   │    │    │    │    │    │    │    │    │    │    │    │    │    │
186   └────┴────┴────┴────┴────┴────┘    └────┴────┴────┴────┴────┴────┘
187 */
188 [_IKAPILA] = KEYMAP( \
189   _______,    KC_1,    KC_2,    KC_3,    KC_4,       KC_5,            KC_6,    KC_7,    KC_8,    KC_9,    KC_0, _______, \
190   _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT,    KC_MPLY,         KC_LEFT, KC_DOWN,   KC_UP, KC_RGHT, TD(DSH),  KC_INS, \
191   _______, KC_MINS,  KC_EQL, XXXXXXX, XXXXXXX, LCTL(KC_Z),         KC_HOME, TD(HND), KC_HOME, XXXXXXX, KC_BSLS, KC_TILD, \
192   _______, _______, _______, _______, _______,    _______,         _______, _______, _______, _______, _______, _______ \
193 ),
194
195 /*
196   ┌────┬────┬────┬────┬────┬────┐    ┌────┬────┬────┬────┬────┬────┐
197   │    │ !  │ @  │ #  │ $  │ %  │    │ ^  │ &  │ *  │ (  │ )  │BSPC│
198   ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
199   │DEL │    │ ←  │ ↓  │ ↑  │ →  │    │NEXT│PGUP│ V+ │ V- │DASH│PSCR│
200   ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
201   │    │ _  │ +  │END │HOME│END │    │    │    │    │ [  │ ]  │    │
202   ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
203   │    │    │    │    │    │    │    │    │    │    │    │    │    │
204   └────┴────┴────┴────┴────┴────┘    └────┴────┴────┴────┴────┴────┘
205 */
206
207 [_IKASHFT] =  KEYMAP( \
208   _______, KC_EXLM,   KC_AT, KC_HASH,  KC_DLR, KC_PERC,         KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
209    KC_DEL, TD(PGN), KC_LEFT, KC_DOWN,   KC_UP, KC_RGHT,         KC_MNXT, KC_PGUP, KC_VOLU, TD(VOM), KC_MDSH, KC_PSCR, \
210   _______, KC_UNDS, KC_PLUS,  KC_END, KC_HOME,  KC_END,            M(1),    M(0),    M(2), KC_LBRC, KC_RBRC, _______, \
211   _______, _______, _______, _______, _______, _______,         _______, _______, _______, _______, _______, _______ \
212 ),
213
214 /*
215   ┌────┬────┬────┬────┬────┬────┐    ┌────┬────┬────┬────┬────┬────┐
216   │    │ →  │ ↑  │ ←  │ ↓  │ →  │    │ →  │ ↓  │ ←  │ ↑  │ ↑  │    │ just in case someone hacks my IP with a 10MeG pipe, you know?
217   ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
218   │    │ ←  │ ↓  │ →  │ ↑  │ ←  │    │ ↑  │ ←  │ ↓  │ →  │ ←  │    │ hacker_evasion layer
219   ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤ >>init network SEQUENCE
220   │    │ ↑  │ ←  │ ↓  │ →  │ ↑  │    │ ↓  │ ←  │ ↑  │ →  │ ←  │    │   sleep 11; echo "DONE\n"
221   ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤   throttle INPUT 11001001 OUTPUT 010011001 ? FULL )); \
222   │    │    │    │ →  │ ←  │ ↓  │    │ →  │ ↑  │ ←  │ ↓  │ ↑  │    │ <<chKConfig cargoCode ==== "'1'"
223   └────┴────┴────┴────┴────┴────┘    └────┴────┴────┴────┴────┴────┘   up down left right KC_b KC_a GUI
224 */
225
226 [_ARROWKY] =  KEYMAP( \
227
228
229   _______, KC_RGHT,   KC_UP, KC_LEFT, KC_DOWN, KC_RGHT,           KC_UP, KC_LEFT, KC_DOWN, KC_RGHT,   KC_UP, _______, \
230   _______, KC_LEFT, KC_DOWN, KC_RGHT,   KC_UP, KC_LEFT,         KC_DOWN, KC_RGHT,   KC_UP, KC_LEFT, KC_DOWN, _______, \
231   _______,   KC_UP, KC_LEFT, KC_DOWN, KC_RGHT,   KC_UP,         KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, KC_LEFT, _______, \
232   _______, _______, KC_RGHT,   KC_UP, KC_LEFT, KC_DOWN,         KC_RGHT,   KC_UP, KC_LEFT, KC_DOWN, KC_RGHT, _______ \
233 ),
234
235 /*
236   ┌────┬────┬────┬────┬────┬────┐    ┌────┬────┬────┬────┬────┬────┐
237   │    │ F1 │ F2 │ F3 │ F4 │ F5 │    │ F6 │ F7 │ F8 │ F9 │ F10│    │
238   ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
239   │    │ F21│ F22│ F23│ F24│PAUS│    │    │SCLK│BOOT│    │NKRO│CAPS│
240   ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
241   │    │    │    │    │    │    │    │    │    │    │    │    │    │
242   ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
243   │    │    │    │    │    │    │    │    │    │    │    │    │    │
244   └────┴────┴────┴────┴────┴────┘    └────┴────┴────┴────┴────┴────┘
245 */
246
247 [_FNCTION] =  KEYMAP( \
248   _______, TD(F11), TD(F12), TD(F13), TD(F14), TD(F15),         TD(F16), TD(F17), TD(F18), TD(F19), TD(F20), _______, \
249   _______,  KC_F21,  KC_F22,  KC_F23,  KC_F24, XXXXXXX,         XXXXXXX, KC_SLCK, XXXXXXX, XXXXXXX,  TGNKRO, XXXXXXX, \
250   _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,         XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_CAPS, \
251   _______, _______, _______, _______, _______, _______,         _______, _______, _______, _______, _______, _______ \
252 ),
253
254 /*
255   ┌────┬────┬────┬────┬────┬────┐    ┌────┬────┬────┬────┬────┬────┐
256   │    │ →  │ F7 │ F8 │ F9 │ ↑  │    │ P7 │ P8 │ P9 │NLCK│ P- │BDEL│
257   ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
258   │    │ ←  │ F4 │ F5 │ F6 │ ↓  │    │ P4 │ P5 │ P6 │^INS│ P+ │ () │
259   ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
260   │    │CALT│ F1 │ F2 │ F3 │    │    │ P1 │ P2 │ P3 │    │ P* │ =  │
261   ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
262   │    │    │ F0?│    │    │    │    │ P0 │ 0  │ P. │TGL │ P/ │    │
263   └────┴────┴────┴────┴────┴────┘    └────┴────┴────┴────┴────┴────┘
264 */
265
266 [_NINEKEY] =  KEYMAP( \
267   _______, KC_RGHT,   KC_F7,   KC_F8,   KC_F9,   KC_UP,       KC_P7,   KC_P8,   KC_P9,      KC_NLCK,KC_PMNS, KC_DEL, \
268   _______, KC_LEFT,   KC_F4,   KC_F5,   KC_F6, KC_DOWN,       KC_P4,   KC_P5,   KC_P6,        CAINS,KC_PPLS, M(0), \
269   _______,    CAKY,   KC_F1,   KC_F2,   KC_F3, XXXXXXX,       KC_P1,   KC_P2,   KC_P3,      XXXXXXX,KC_PAST, TD(EQE), \
270   _______, _______, _______,  KC_F11, _______, _______,       KC_P0,    KC_0, KC_PDOT,         CAKY,KC_PSLS, _______ \
271 ),
272
273 /*
274   ┌────┬────┬────┬────┬────┬────┐    ┌────┬────┬────┬────┬────┬────┐
275   │ESC │^HOM│^PGD│^UP │^PGU│^PGU│    │    │MW_L│ MU │MW_R│ AC2│    │
276   ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
277   │    │^END│^LFT│^DWN│^RGT│^PGD│    │    │ ML │ MD │ MR │ AC1│    │
278   ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
279   │    │ M5 │ M2 │ M4 │ M3 │ M1 │    │    │MW_D│MW_U│    │ AC0│    │
280   ├────┼────┼────┼────┼────┼────┤    ├────┼────┼────┼────┼────┼────┤
281   │    │    │    │    │    │    │    │    │    │    │    │    │    │
282   └────┴────┴────┴────┴────┴────┘    └────┴────┴────┴────┴────┴────┘
283 */
284
285 [_NAVIGAT] =  KEYMAP( \
286    KC_ESC,   NAVCH,  NAVCPD,   NAVCU,  NAVCPU,  NAVCPU,         XXXXXXX, KC_WH_L, KC_MS_U, KC_WH_R, KC_ACL2, _______, \
287   _______,   NAVCE,   NAVCL,   NAVCD,   NAVCR,  NAVCPD,         XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, KC_ACL1, _______, \
288   _______, KC_BTN5, KC_BTN2, KC_BTN4, KC_BTN3, KC_BTN1,         XXXXXXX, KC_WH_D, KC_WH_U, XXXXXXX, KC_ACL0, _______, \
289   _______, _______, _______, _______, _______, _______,         _______, _______, _______, _______, _______, _______ \
290 ),
291
292 //ew. jk
293 [_QWERTY] = KEYMAP( \
294   _______,    KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,            KC_Y,    KC_U,    KC_I,    KC_O,    KC_P, KC_BSPC, \
295   _______,    KC_A,    KC_S,    KC_D,    KC_F,    KC_G,            KC_H,    KC_J,    KC_K,    KC_L, KC_SCLN, KC_QUOT, \
296   _______,    KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,            KC_N,    KC_M, KC_COMM,  KC_DOT, KC_SLSH, SFT_ENT, \
297   _______, _______, _______, _______, _______, _______,         _______, _______, _______, _______, _______, _______ \
298 ),
299
300 [_MLAYER] =  KEYMAP( \
301   _______,UC(0x250C),UC(0x252C),UC(0x2510),UC(0x2500),UC(0x2502),       _______, _______, _______, _______, _______, _______, \
302   KC_QUOT,UC(0x251C),UC(0x253C),UC(0x2524),   _______,   _______,          M(1),    M(0),    M(2), _______, _______, _______, \
303   _______,UC(0x2514),UC(0x2534),UC(0x2518),   _______,   _______,       _______, _______, _______, _______, _______, _______, \
304   _______,     WINSH,       WIN,       OSX,   _______,   _______,       _______, _______, _______, _______, _______, _______ \
305 ),
306
307 [_GRVTABL] =  KEYMAP( \
308     TG(5),LALT(KC_PSCR),    M(4),  KC_PWR,KC_POWER,   RESET,           RESET,    KC_R,    KC_E,    KC_I,LALT(KC_PSCR),TG(3), \
309     TG(1),        TG(6),   TG(7),   TG(9),   TG(3),   TG(2),           TG(2),    KC_S,    KC_U,    KC_B,   TG(6),   TG(1), \
310      M(3),        TG(8), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,         KC_MYCM, KC_CALC, XXXXXXX, XXXXXXX,   TG(8),    M(3), \
311    TT(15),        TG(6),   TG(7),   TG(9),   TG(3),   TG(2),           TG(2),   TG(3),   TG(9),   TG(7),   TG(6), _______ \
312 )};
313
314
315 qk_tap_dance_action_t tap_dance_actions[] = {
316  [VOM] = ACTION_TAP_DANCE_DOUBLE(KC_VOLD, KC_MUTE),
317  [PRN] = ACTION_TAP_DANCE_DOUBLE(KC_LPRN, KC_RPRN),
318  [EGT] = ACTION_TAP_DANCE_DOUBLE(KC_LCBR, KC_RCBR),
319  [HRD] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, KC_RBRC),
320  [DSH] = ACTION_TAP_DANCE_DOUBLE(KC_NDSH, KC_MDSH),
321  [ESC] = ACTION_TAP_DANCE_DOUBLE(KC_ESC,  LALT(KC_F4)),
322  [EQE] = ACTION_TAP_DANCE_DOUBLE(KC_EQL,  KC_ENT),
323  [UND] = ACTION_TAP_DANCE_DOUBLE(KC_Z,    LCTL(KC_Z)),
324  [PGN] = ACTION_TAP_DANCE_DOUBLE(KC_PGDN, KC_PGUP),
325  [HND] = ACTION_TAP_DANCE_DOUBLE(KC_HOME, KC_END),
326  [COD] = ACTION_TAP_DANCE_DOUBLE(KC_COMM, KC_DOT),
327  [F11] = ACTION_TAP_DANCE_DOUBLE(KC_F1,   KC_F11),
328  [F12] = ACTION_TAP_DANCE_DOUBLE(KC_F2,   KC_F12),
329  [F13] = ACTION_TAP_DANCE_DOUBLE(KC_F3,   KC_F13),
330  [F14] = ACTION_TAP_DANCE_DOUBLE(KC_F4,   KC_F14),
331  [F15] = ACTION_TAP_DANCE_DOUBLE(KC_F5,   KC_F15),
332  [F16] = ACTION_TAP_DANCE_DOUBLE(KC_F6,   KC_F16),
333  [F17] = ACTION_TAP_DANCE_DOUBLE(KC_F7,   KC_F17),
334  [F18] = ACTION_TAP_DANCE_DOUBLE(KC_F8,   KC_F18),
335  [F19] = ACTION_TAP_DANCE_DOUBLE(KC_F9,   KC_F19),
336  [F20] = ACTION_TAP_DANCE_DOUBLE(KC_F10,  KC_F20),
337 };
338
339 void matrix_init_user(){
340   set_unicode_input_mode(UC_LNX);
341 }
342
343 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
344   if (record->event.pressed) {
345     switch(id) {
346   case 0:
347     return MACRO( D(LSFT), T(9), U(LSFT), D(LSFT), T(0), U(LSFT), T(LEFT), END );
348   case 1:
349     return MACRO( D(LSFT), T(LBRC), U(LSFT), D(LSFT), T(RBRC), U(LSFT), T(LEFT), END );
350   case 2:
351     return MACRO( T(LBRC), T(RBRC), T(LEFT), END);
352   case 3:
353     clear_keyboard();
354   case 4:
355     return MACRO( D(LSFT), T(SCOLON), U(LSFT), D(LSFT), T(9), U(LSFT), D(LSFT), T(0), U(LSFT), D(LSFT), T(LBRACKET), U(LSFT), D(LSFT), T(9), U(LSFT), D(LSFT), T(SCOLON), U(LSFT), D(LSFT), T(0), U(LSFT), D(LSFT), T(BSLASH), U(LSFT), D(LSFT), T(SCOLON), U(LSFT), D(LSFT), T(7), U(LSFT), D(LSFT), T(RBRACKET), U(LSFT), T(SCOLON), D(LSFT), T(SCOLON), U(LSFT), END );
356   case WINSH:
357     set_unicode_input_mode(UC_WIN);
358     return false;
359     break;
360   case WIN:
361     set_unicode_input_mode(UC_WINC);
362     return false;
363     break;
364   case OSX:
365     set_unicode_input_mode(UC_OSX);
366     return false;
367     break;
368    }
369   }
370  return MACRO_NONE;
371 };