1 #include QMK_KEYBOARD_H
4 extern keymap_config_t keymap_config;
18 enum custom_keycodes {
63 #define _______ KC_TRNS
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)
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)
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)
85 #define KYCTL OSM(MOD_LCTL)
86 #define KYSFT OSM(MOD_LSFT)
87 #define CAKY OSM(MOD_LCTL | MOD_LALT)
90 #define CADEL LALT(LCTL(KC_DEL))
91 #define CAINS LALT(LCTL(KC_INS))
92 #define TGNKRO MAGIC_TOGGLE_NKRO
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)
107 #define KC_NDSH LCTL(KC_PMNS)
108 #define KC_MDSH LALT(LCTL(KC_PMNS))
110 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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 └────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┘
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 └────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┘
134 ┌────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────┐
135 │ │ │ │ │ │ │ │ │ │ │ │ │ │
136 ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
137 │ │ │ │ │ │ │ │ │ │ │ │ │ │
138 ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
139 │OSML│ │ │ │ │ │ │ │ │ │ │ │ │
140 ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
141 │OSML│OSML│!F4 │ │ │ │ │ │ │ │ │ │ │
142 └────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┘
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 └────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┘
154 Top Row R1 (reversed?)
155 M Row1 R3 (with reversed pointer finger)
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 \
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 \
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 └────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┘
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 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
195 ┌────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────┐
196 │ │ ! │ @ │ # │ $ │ % │ │ ^ │ & │ * │ ( │ ) │BSPC│
197 ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
198 │DEL │ │ ← │ ↓ │ ↑ │ → │ │NEXT│PGUP│ V+ │ V- │DASH│PSCR│
199 ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
200 │ │ _ │ + │END │HOME│END │ │ │ │ │ [ │ ] │ │
201 ├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
202 │ │ │ │ │ │ │ │ │ │ │ │ │ │
203 └────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┘
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 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
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
225 [_ARROWKY] = LAYOUT( \
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, _______ \
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 └────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┘
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 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
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 └────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┘
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, _______ \
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 └────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┘
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 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
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 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
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, _______, _______, _______, _______, _______, _______, _______, _______ \
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), _______ \
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),
338 void matrix_init_user(){
339 set_unicode_input_mode(UC_LNX);
342 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
343 if (record->event.pressed) {
346 return MACRO( D(LSFT), T(9), U(LSFT), D(LSFT), T(0), U(LSFT), T(LEFT), END );
348 return MACRO( D(LSFT), T(LBRC), U(LSFT), D(LSFT), T(RBRC), U(LSFT), T(LEFT), END );
350 return MACRO( T(LBRC), T(RBRC), T(LEFT), END);
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 );
356 set_unicode_input_mode(UC_WIN);
360 set_unicode_input_mode(UC_WINC);
364 set_unicode_input_mode(UC_OSX);