]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/atreus/keymaps/xk/keymap.c
QMK Configurator updates: Atom47, Atomic and Atreus (#2883)
[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 QMK_KEYBOARD_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] = LAYOUT( \
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] = LAYOUT( \
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] = LAYOUT( \
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] =  LAYOUT( \
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] =  LAYOUT( \
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] = LAYOUT( \
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] = LAYOUT( \
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] = LAYOUT( \
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
253 qk_tap_dance_action_t tap_dance_actions[] = {
254   [VOM] = ACTION_TAP_DANCE_DOUBLE(KC_VOLD, KC_MUTE),
255   [PRN] = ACTION_TAP_DANCE_DOUBLE(KC_LPRN, KC_RPRN),
256   [EGT] = ACTION_TAP_DANCE_DOUBLE(KC_LCBR, KC_RCBR),
257   [HRD] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, KC_RBRC),
258   [DSH] = ACTION_TAP_DANCE_DOUBLE(KC_NDSH, KC_MDSH),
259   [ESC] = ACTION_TAP_DANCE_DOUBLE(KC_ESC,  LALT(KC_F4)),
260   [EQE] = ACTION_TAP_DANCE_DOUBLE(KC_EQL,  KC_ENT),
261   [UND] = ACTION_TAP_DANCE_DOUBLE(KC_Z,    LCTL(KC_Z)),
262   [PGN] = ACTION_TAP_DANCE_DOUBLE(KC_PGDN, KC_PGUP),
263   [HND] = ACTION_TAP_DANCE_DOUBLE(KC_HOME, KC_END),
264   [COD] = ACTION_TAP_DANCE_DOUBLE(KC_COMM, KC_DOT),
265   [MND] = ACTION_TAP_DANCE_DOUBLE(KC_MNXT, KC_MPRV),
266   [F11] = ACTION_TAP_DANCE_DOUBLE(KC_F1,   KC_F11),
267   [F12] = ACTION_TAP_DANCE_DOUBLE(KC_F2,   KC_F12),
268   [F13] = ACTION_TAP_DANCE_DOUBLE(KC_F3,   KC_F13),
269   [F14] = ACTION_TAP_DANCE_DOUBLE(KC_F4,   KC_F14),
270   [F15] = ACTION_TAP_DANCE_DOUBLE(KC_F5,   KC_F15),
271   [F16] = ACTION_TAP_DANCE_DOUBLE(KC_F6,   KC_F16),
272   [F17] = ACTION_TAP_DANCE_DOUBLE(KC_F7,   KC_F17),
273   [F18] = ACTION_TAP_DANCE_DOUBLE(KC_F8,   KC_F18),
274   [F19] = ACTION_TAP_DANCE_DOUBLE(KC_F9,   KC_F19),
275   [F20] = ACTION_TAP_DANCE_DOUBLE(KC_F10,  KC_F20),
276 };
277
278 void matrix_init_user(){
279   set_unicode_input_mode(UC_LNX);
280 }
281
282 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
283   if (record->event.pressed) {
284     switch(id) {
285       case 0:
286         return MACRO( D(LSFT), T(9), U(LSFT), D(LSFT), T(0), U(LSFT), T(LEFT), END );
287       case 1:
288         return MACRO( D(LSFT), T(LBRC), U(LSFT), D(LSFT), T(RBRC), U(LSFT), T(LEFT), END );
289       case 2:
290         return MACRO( T(LBRC), T(RBRC), T(LEFT), END);
291       case 5:
292         return MACRO( D(LSFT), T(COMMA), U(LSFT), D(LSFT), T(DOT), U(LSFT), END );
293       case 3:
294         clear_keyboard();
295         return false;
296         break;
297       case 4:
298         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 );
299       case WINSH:
300         set_unicode_input_mode(UC_WIN);
301         return false;
302         break;
303       case WIN:
304         set_unicode_input_mode(UC_WINC);
305         return false;
306         break;
307       case OSX:
308         set_unicode_input_mode(UC_OSX);
309         return false;
310         break;
311     }
312   }
313   return MACRO_NONE;
314 };