1 #include "lets_split.h"
2 #include "action_layer.h"
5 extern keymap_config_t keymap_config;
19 enum custom_keycodes {
64 #define _______ KC_TRNS
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)
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)
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)
86 #define KYCTL OSM(MOD_LCTL)
87 #define KYSFT OSM(MOD_LSFT)
88 #define CAKY OSM(MOD_LCTL | MOD_LALT)
91 #define CADEL LALT(LCTL(KC_DEL))
92 #define CAINS LALT(LCTL(KC_INS))
93 #define TGNKRO MAGIC_TOGGLE_NKRO
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)
108 #define KC_NDSH LCTL(KC_PMNS)
109 #define KC_MDSH LALT(LCTL(KC_PMNS))
111 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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 └────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┘
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 └────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┘
135 ┌────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────┐
136 │ │ │ │ │ │ │ │ │ │ │ │ │ │
137 ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
138 │ │ │ │ │ │ │ │ │ │ │ │ │ │
139 ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
140 │OSML│ │ │ │ │ │ │ │ │ │ │ │ │
141 ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
142 │OSML│OSML│!F4 │ │ │ │ │ │ │ │ │ │ │
143 └────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┘
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 └────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┘
155 Top Row R1 (reversed?)
156 M Row1 R3 (with reversed pointer finger)
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 \
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 \
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 └────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┘
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 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
196 ┌────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────┐
197 │ │ ! │ @ │ # │ $ │ % │ │ ^ │ & │ * │ ( │ ) │BSPC│
198 ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
199 │DEL │ │ ← │ ↓ │ ↑ │ → │ │NEXT│PGUP│ V+ │ V- │DASH│PSCR│
200 ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
201 │ │ _ │ + │END │HOME│END │ │ │ │ │ [ │ ] │ │
202 ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
203 │ │ │ │ │ │ │ │ │ │ │ │ │ │
204 └────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┘
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 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
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
226 [_ARROWKY] = KEYMAP( \
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, _______ \
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 └────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┘
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 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
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 └────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┘
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, _______ \
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 └────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┘
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 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
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 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
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, _______, _______, _______, _______, _______, _______, _______, _______ \
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), _______ \
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),
339 void matrix_init_user(){
340 set_unicode_input_mode(UC_LNX);
343 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
344 if (record->event.pressed) {
347 return MACRO( D(LSFT), T(9), U(LSFT), D(LSFT), T(0), U(LSFT), T(LEFT), END );
349 return MACRO( D(LSFT), T(LBRC), U(LSFT), D(LSFT), T(RBRC), U(LSFT), T(LEFT), END );
351 return MACRO( T(LBRC), T(RBRC), T(LEFT), END);
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 );
357 set_unicode_input_mode(UC_WIN);
361 set_unicode_input_mode(UC_WINC);
365 set_unicode_input_mode(UC_OSX);