]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/atreus/keymaps/xk/keymap.c
newkb-atreus-xk
[qmk_firmware.git] / keyboards / atreus / keymaps / xk / keymap.c
1 // this is the style you want to emulate.
2 // This is the canonical layout file for the Quantum project. If you want to add another keyboard,
3
4 #include "atreus.h"
5
6 #define _COLEMAK  0
7 #define _KAMELOC  1
8 #define _IKAPILA  2
9 #define _IKASHFT  3
10 #define _FNCTION  5
11 #define _NINEKEY  6
12 #define _GAMEQWERTY   7
13 #define _MLAYER   8
14 #define _GRVTABL  9
15
16 enum custom_keycodes {
17   COLEMAK = SAFE_RANGE,
18   KAMELOC,
19   IKAPILA,
20   IKASHFT,
21   FNCTION,
22   NINEKEY,
23   GAMEQWERTY,
24   MLAYER,
25   GRVTABL,
26 };
27
28 //TD Declarations
29 enum {
30 VOM = 0,
31 PRN,
32 EGT,
33 HRD,
34 XRD,
35 DSH,
36 ESC,
37 EQE,
38 PGN,
39 HND,
40 COD,
41 UND,
42 MND,
43 F11,
44 F12,
45 F13,
46 F14,
47 F15,
48 F16,
49 F17,
50 F18,
51 F19,
52 F20,
53 //unicode_inputctl
54 LINUX,
55 WIN,
56 WINSH,
57 OSX,
58 };
59
60 #define _______     KC_TRNS
61 #define XXXXXXX     KC_NO
62
63 // action-TAP for key/mod behavior LT(layer, KC)
64 #define XK_TAB      LT(_KAMELOC, KC_TAB)
65 #define XK_BSP      LT(_KAMELOC, KC_BSPC)
66
67 #define XK_SPC      LT(_IKAPILA, KC_SPC)
68 #define XK_ENT      LT(_IKAPILA, KC_ENT)
69 #define XK_PGDN     LT(_IKASHFT, KC_PGDN)
70 #define XK_APO      LT(_IKASHFT, KC_QUOT)
71 #define XK_PGUP     LT(_IKASHFT, KC_PGUP)
72 #define PIPBOY      LT(_FNCTION, KC_BSLS)
73
74 #define XK_DEL      LT(_IKASHFT, KC_DEL)
75 #define XK_ESC      LT(_GRVTABL, KC_ESC)
76
77 // mod-TAP for mod/key behavior MT(modkey, KC)
78 #define ALT_IT      MT(MOD_RALT, KC_SCLN)
79 #define SFT_IT      MT(MOD_RSFT, KC_DOT)
80 #define CTL_IT      MT(MOD_RCTL, KC_SLSH)
81 #define SFT_ENT     MT(MOD_RSFT, KC_ENT)
82
83 //sticky modifiers
84 #define KYCTL       OSM(MOD_LCTL)
85 #define KYSFT       OSM(MOD_LSFT)
86 #define KYALT       OSM(MOD_LALT)
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   │ Q  │ W  │ F  │ P  │ B  │              │ J  │ L  │ U  │ Y  │ ;  │
116   ├────┼────┼────┼────┼────┤              ├────┼────┼────┼────┼────┤
117   │ A  │ R  │ S  │ T  │ G  │              │ M  │ N  │ E  │ I  │ O  │
118   ├────┼────┼────┼────┼────┤              ├────┼────┼────┼────┼────┤
119   │ X  │ C  │ D  │ V  │ Z  ├────┐    ┌────┤ K  │ H  │ ,  │ .  │ /  │
120   ├────┼────┼────┼────┼────┤    │    │    ├────┼────┼────┼────┼────┤
121   │SFTn│CTLn│ALTn│ROUS│SPC │BKSP│    │TAB │ENT │PGDN│ '  │ \  │ESC │
122   └────┴────┴────┴────┴────┴────┘    └────┴────┴────┴────┴────┴────┘
123    HOLD
124   ┌────┬────┬────┬────┬────┐              ┌────┬────┬────┬────┬────┐
125   │    │    │    │    │    │              │    │    │    │    │ALT │
126   ├────┼────┼────┼────┼────┤              ├────┼────┼────┼────┼────┤
127   │    │    │    │    │    │              │    │    │    │    │    │
128   ├────┼────┼────┼────┼────┤              ├────┼────┼────┼────┼────┤
129   │    │    │    │    │    ├────┐    ┌────┤    │    │    │    │CTL │
130   ├────┼────┼────┼────┼────┤    │    │    ├────┼────┼────┼────┼────┤
131   │SFT │CTL │ALT │ROUS│L123│L OH│    │L OH│L123│L!@#│    │L FN│LESC│
132   └────┴────┴────┴────┴────┴────┘    └────┴────┴────┴────┴────┴────┘
133    DOUBLETAP
134   ┌────┬────┬────┬────┬────┐              ┌────┬────┬────┬────┬────┐
135   │    │    │    │    │    │              │    │    │    │    │    │
136   ├────┼────┼────┼────┼────┤              ├────┼────┼────┼────┼────┤
137   │    │    │    │    │    │              │    │    │    │    │    │
138   ├────┼────┼────┼────┼────┤              ├────┼────┼────┼────┼────┤
139   │    │    │    │    │    ├────┐    ┌────┤    │    │    │    │    │
140   ├────┼────┼────┼────┼────┤    │    │    ├────┼────┼────┼────┼────┤
141   │OSML│OSML│OSML│NADA│    │    │    │    │    │    │    │    │    │
142   └────┴────┴────┴────┴────┴────┘    └────┴────┴────┴────┴────┴────┘
143 */
144
145 // Colemak PB&J (Mod-DH)
146 [_COLEMAK] = KEYMAP( \
147      KC_Q,   KC_W,   KC_F,    KC_P,    KC_B,                      KC_J,     KC_L,        KC_U,    KC_Y,  ALT_IT,  \
148      KC_A,   KC_R,   KC_S,    KC_T,    KC_G,                      KC_M,     KC_N,        KC_E,    KC_I,    KC_O,  \
149      KC_X,   KC_C,   KC_D,    KC_V,    KC_Z,                      KC_K,     KC_H,     KC_COMM,  SFT_IT,  CTL_IT,  \
150     KYCTL,  KYSFT,  KYALT,  TT(_MLAYER),  XK_SPC,  XK_TAB,  XK_BSP,  XK_ENT,  XK_PGDN, XK_APO,  PIPBOY,  XK_ESC  \
151 ),
152
153 // useful for one-handed typing
154 [_KAMELOC] = KEYMAP( \
155   KC_SCLN,    KC_Y,        KC_U,         KC_L,   KC_J,                       KC_B,         KC_P,    KC_F,    KC_W,    KC_Q,  \
156      KC_O,    KC_I,        KC_E,         KC_N,   KC_M,                       KC_G,         KC_T,    KC_S,    KC_R,    KC_A,  \
157   KC_SLSH,  KC_DOT,     KC_COMM,         KC_H,   KC_K,                       KC_Z,         KC_V,    KC_D,    KC_C,    KC_X,  \
158    XK_ESC,  PIPBOY, TT(_MLAYER),     KC_PGDN, KC_ENT,  _______, _______,  XK_SPC,       KC_PGUP,   KYALT,   KYCTL,   KYSFT  \
159 ),
160
161 /*
162   ┌────┬────┬────┬────┬────┐              ┌────┬────┬────┬────┬────┐
163   │ 1  │ 2  │ 3  │ 4  │ 5  │              │ 6  │ 7  │ 8  │ 9  │ 0  │
164   ├────┼────┼────┼────┼────┤              ├────┼────┼────┼────┼────┤
165   │ M  │ V- │ V+ │NEXT│PLAY│              │ ←  │ ↓  │ ↑  │ →  │DASH│
166   ├────┼────┼────┼────┼────┤              ├────┼────┼────┼────┼────┤
167   │ -  │ =  │ `  │GUI │UNDO├────┐    ┌────┤HOME│END │HOME│INS │ \  │
168   ├────┼────┼────┼────┼────┤    │    │    ├────┼────┼────┼────┼────┤
169   │    │    │    │    │    │    │    │    │    │GUI │    │    │    │
170   └────┴────┴────┴────┴────┴────┘    └────┴────┴────┴────┴────┴────┘
171 */
172
173 [_IKAPILA] = KEYMAP( \
174      KC_1,    KC_2,    KC_3,    KC_4,       KC_5,                        KC_6,    KC_7,    KC_8,    KC_9,    KC_0,  \
175   KC_MUTE, KC_VOLD, KC_VOLU, TD(MND),    KC_MPLY,                     KC_LEFT, KC_DOWN,   KC_UP, KC_RGHT, TD(DSH),  \
176   KC_MINS,  KC_EQL,  KC_GRV, KC_LGUI, LCTL(KC_Z),                     TD(HND), KC_HOME, TD(HND),  KC_INS, KC_BSLS,  \
177   _______, _______, _______, _______,    _______,  _______, _______,  _______, KC_LGUI, _______, _______,   KYSFT  \
178 ),
179
180 /*
181   ┌────┬────┬────┬────┬────┐              ┌────┬────┬────┬────┬────┐
182   │ !  │ @  │ #  │ $  │ %  │              │ ^  │ &  │ *  │ (  │ )  │
183   ├────┼────┼────┼────┼────┤              ├────┼────┼────┼────┼────┤
184   │PSCR│ ←  │ ↓  │ ↑  │ →  │              │NEXT│PGUP│ V+ │ V- │DASH│
185   ├────┼────┼────┼────┼────┤              ├────┼────┼────┼────┼────┤
186   │ _  │ +  │ ~  │HOME│END ├────┐    ┌────┤ {} │ () │ <> │ [  │ ]  │
187   ├────┼────┼────┼────┼────┤    │    │    ├────┼────┼────┼────┼────┤
188   │    │    │    │    │    │DEL │    │BKSP│    │    │    │    │    │
189   └────┴────┴────┴────┴────┴────┘    └────┴────┴────┴────┴────┴────┘
190 */
191
192 [_IKASHFT] =  KEYMAP( \
193   KC_EXLM,   KC_AT, KC_HASH,  KC_DLR, KC_PERC,                  KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,  \
194   KC_PSCR, KC_LEFT, KC_DOWN,   KC_UP, KC_RGHT,                  TD(MND), KC_PGUP, KC_VOLU, TD(VOM), KC_MDSH,  \
195   KC_UNDS, KC_PLUS, KC_TILD, KC_HOME,  KC_END,                     M(1),    M(0),    M(5), KC_LBRC, KC_RBRC,  \
196   _______, _______, _______, _______, _______, KC_BSPC, KC_DEL, _______, _______, _______, _______, _______  \
197 ),
198
199 /*
200   ┌────┬────┬────┬────┬────┐              ┌────┬────┬────┬────┬────┐
201   │ F1 │ F2 │ F3 │ F4 │ F5 │              │ F6 │ F7 │ F8 │ F9 │ F10│
202   ├────┼────┼────┼────┼────┤              ├────┼────┼────┼────┼────┤
203   │ F21│ F22│ F23│ F24│PAUS│              │    │SCLK│BOOT│    │NKRO│
204   ├────┼────┼────┼────┼────┤              ├────┼────┼────┼────┼────┤
205   │    │    │    │    │    ├────┐    ┌────┤    │    │    │    │CAPS│
206   ├────┼────┼────┼────┼────┤    │    │    ├────┼────┼────┼────┼────┤
207   │    │    │    │    │    │    │    │    │    │    │    │    │    │
208   └────┴────┴────┴────┴────┴────┘    └────┴────┴────┴────┴────┴────┘
209 */
210
211 [_FNCTION] =  KEYMAP( \
212   TD(F11), TD(F12), TD(F13), TD(F14), TD(F15),                     TD(F16), TD(F17), TD(F18), TD(F19), TD(F20),  \
213    KC_F21,  KC_F22,  KC_F23,  KC_F24, XXXXXXX,                     XXXXXXX, KC_SLCK, XXXXXXX, XXXXXXX,  TGNKRO,  \
214   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                     XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_CAPS,  \
215   _______, _______, _______, _______, _______,  _______, _______,  _______, _______, _______, _______, _______  \
216 ),
217
218 [_GAMEQWERTY] = KEYMAP( \
219      KC_P,    KC_Q,    KC_W,    KC_E,    KC_R,                        KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,  \
220   KC_SCLN,    KC_A,    KC_S,    KC_D,    KC_F,                        KC_G,    KC_H,    KC_J,    KC_K,    KC_L,  \
221   KC_SLSH,    KC_Z,    KC_X,    KC_C,    KC_V,                        KC_B,    KC_N,    KC_M, KC_COMM, TD(COD),  \
222   _______, _______, _______, _______, _______,  _______, _______,  _______, _______, _______, _______, _______  \
223 ),
224
225 /*
226   ┌────┬────┬────┬────┬────┐              ┌────┬────┬────┬────┬────┐
227   │^HOM│^PGD│^UP │^PGU│^PGU│              │    │MW_L│ MU │MW_R│ AC2│
228   ├────┼────┼────┼────┼────┤              ├────┼────┼────┼────┼────┤
229   │^END│^LFT│^DWN│^RGT│^PGD│              │    │ ML │ MD │ MR │ AC1│
230   ├────┼────┼────┼────┼────┤              ├────┼────┼────┼────┼────┤
231   │ M5 │ M2 │ M4 │ M3 │ M1 ├────┐    ┌────┤    │MW_D│MW_U│    │ AC0│
232   ├────┼────┼────┼────┼────┤    │    │    ├────┼────┼────┼────┼────┤
233   │    │    │    │    │    │    │    │    │    │    │    │    │    │
234   └────┴────┴────┴────┴────┴────┘    └────┴────┴────┴────┴────┴────┘ 
235 */
236
237 [_MLAYER] =  KEYMAP( \
238   LALT(KC_ESC), KC_9,    KC_8,    KC_7,    KC_6,                  M(1),    M(0), KC_MS_U,    M(0),    M(2),  \
239      KC_0,    KC_2,    KC_3,    KC_4,    KC_5,                        M(5), KC_MS_L, KC_MS_D, KC_MS_R, KC_ACL2,  \
240      KC_1,    KC_0, XXXXXXX, XXXXXXX, KC_BTN5,                     KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R,    M(5),  \
241   _______, _______, _______, _______, KC_BTN1,  KC_BTN2, KC_BTN2,  KC_BTN1, KC_BTN2, _______, KC_ACL0, _______ \
242 ),
243
244 //one_ring=2__rule__them-all
245 [_GRVTABL] =  KEYMAP( \
246     LALT(KC_PSCR),         M(4),      KC_PWR,     KC_POWER,        RESET,                            RESET,         KC_R,    KC_E,     KC_I,       LALT(KC_PSCR),  \
247      TG(_NINEKEY), TG(_FNCTION), TG(_MLAYER), TG(_IKASHFT), TG(_IKAPILA),                     TG(_IKAPILA),         KC_S,    KC_U,     KC_B,        TG(_NINEKEY),  \
248              M(3), TG(_GAMEQWERTY),  XXXXXXX,      XXXXXXX,      XXXXXXX,                          KC_MYCM,      KC_CALC, XXXXXXX, TG(_GAMEQWERTY),         M(3),  \
249      TT(_GRVTABL), TG(_FNCTION), TG(_MLAYER), TG(_IKASHFT), TG(_IKAPILA),  _______, _______,  TG(_IKAPILA), TG(_IKASHFT), TG(_MLAYER), TG(_MLAYER), TG(_NINEKEY)  \
250 )};
251
252 qk_tap_dance_action_t tap_dance_actions[] = {
253  [VOM] = ACTION_TAP_DANCE_DOUBLE(KC_VOLD, KC_MUTE),
254  [PRN] = ACTION_TAP_DANCE_DOUBLE(KC_LPRN, KC_RPRN),
255  [EGT] = ACTION_TAP_DANCE_DOUBLE(KC_LCBR, KC_RCBR),
256  [HRD] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, KC_RBRC),
257  [DSH] = ACTION_TAP_DANCE_DOUBLE(KC_NDSH, KC_MDSH),
258  [ESC] = ACTION_TAP_DANCE_DOUBLE(KC_ESC,  LALT(KC_F4)),
259  [EQE] = ACTION_TAP_DANCE_DOUBLE(KC_EQL,  KC_ENT),
260  [UND] = ACTION_TAP_DANCE_DOUBLE(KC_Z,    LCTL(KC_Z)),
261  [PGN] = ACTION_TAP_DANCE_DOUBLE(KC_PGDN, KC_PGUP),
262  [HND] = ACTION_TAP_DANCE_DOUBLE(KC_HOME, KC_END),
263  [COD] = ACTION_TAP_DANCE_DOUBLE(KC_COMM, KC_DOT),
264  [MND] = ACTION_TAP_DANCE_DOUBLE(KC_MNXT, KC_MPRV),
265  [F11] = ACTION_TAP_DANCE_DOUBLE(KC_F1,   KC_F11),
266  [F12] = ACTION_TAP_DANCE_DOUBLE(KC_F2,   KC_F12),
267  [F13] = ACTION_TAP_DANCE_DOUBLE(KC_F3,   KC_F13),
268  [F14] = ACTION_TAP_DANCE_DOUBLE(KC_F4,   KC_F14),
269  [F15] = ACTION_TAP_DANCE_DOUBLE(KC_F5,   KC_F15),
270  [F16] = ACTION_TAP_DANCE_DOUBLE(KC_F6,   KC_F16),
271  [F17] = ACTION_TAP_DANCE_DOUBLE(KC_F7,   KC_F17),
272  [F18] = ACTION_TAP_DANCE_DOUBLE(KC_F8,   KC_F18),
273  [F19] = ACTION_TAP_DANCE_DOUBLE(KC_F9,   KC_F19),
274  [F20] = ACTION_TAP_DANCE_DOUBLE(KC_F10,  KC_F20),
275 };
276
277 void matrix_init_user(){
278   set_unicode_input_mode(UC_LNX);
279 }
280
281 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
282   if (record->event.pressed) {
283     switch(id) {
284   case 0:
285     return MACRO( D(LSFT), T(9), U(LSFT), D(LSFT), T(0), U(LSFT), T(LEFT), END );
286   case 1:
287     return MACRO( D(LSFT), T(LBRC), U(LSFT), D(LSFT), T(RBRC), U(LSFT), T(LEFT), END );
288   case 2:
289     return MACRO( T(LBRC), T(RBRC), T(LEFT), END);
290   case 5:
291     return MACRO( D(LSFT), T(COMMA), U(LSFT), D(LSFT), T(DOT), U(LSFT), END );
292   case 3:
293     clear_keyboard();
294     return false;
295     break;
296   case 4:
297     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 );
298   case WINSH:
299     set_unicode_input_mode(UC_WIN);
300     return false;
301     break;
302   case WIN:
303     set_unicode_input_mode(UC_WINC);
304     return false;
305     break;
306   case OSX:
307     set_unicode_input_mode(UC_OSX);
308     return false;
309     break;
310    }
311   }
312  return MACRO_NONE;
313 };