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