2020 February 29 Breaking Changes Update (#8064)
[jackhill/qmk/firmware.git] / keyboards / kinesis / keymaps / milestogo / keymap.c
1 #include QMK_KEYBOARD_H
2 #include "mousekey.h"
3
4 #define _QWERTY 0 // Base qerty
5 #define _SYMB 1// Symbol layer
6 #define _MOUSE 2//
7 #define _TRANS 3//
8 #define _SYMB2 4// old symbol level, more ergodox like
9
10 /* Macros */
11 enum {
12 NONE = 0,
13 // Diagonal mouse movement
14 A_MUL,
15 A_MUR,
16 A_MDL,
17 A_MDR,
18 };
19
20
21 // Train out of using uncomfortable esc and GUI keys.
22 /****************************************************************************************************
23 *
24 * Keymap: Default Layer in Qwerty
25 *
26 * ,-------------------------------------------------------------------------------------------------------------------.
27 * | no | F1 | F2 | F3 | F4 | F5 | F6 | F8 | F9 | F10 | F12 | FN0 | FN1 | FN2 | | bOOT |
28 * |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------|
29 * | `~ | 1! | 2@ | 3# | 4$ | 5% | | 6^ | 7& | 8* | 9( | 0) | -_ |
30 * |--------+------+------+------+------+------| +------+------+------+------+------+--------|
31 * | Tab | Q | W | E | R | T | | Y | U | I | O | P | \| |
32 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
33 * |MouseFN0| A | S | D | F | G | | H | J | K | L | ;: | '" |
34 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
35 * | Shift | Z | X | C | V | B | | N | M | ,< | .> | /? | Shift |
36 * `--------+------+------+------+------+------- `------+------+------+------+------+--------'
37 * | ~` | ESC |GUI/L |L1/RT | | L1/UP|GUI/DN| [{ | ]} |
38 * `---------------------------' `---------------------------'
39 * ,-------------. ,-------------.
40 * | CTRL | ALT | | ALT | GUI |
41 * ,------|------|------| |------+------+------.
42 * | | | Del | | PgUp | | |
43 * | BkSp | BkSp |------| |------|Return| Space|
44 * | | | FN0 | | PgDn | | |
45 * `--------------------' `--------------------'
46 */
47
48 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
49 [_QWERTY] = LAYOUT(
50 XXXXXXX, KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 ,KC_F7 ,KC_F8,
51 KC_GRAVE, KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,
52 KC_TAB, KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,
53 TT(_MOUSE) ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,
54 KC_LSFT,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,
55 KC_GRAVE, KC_ESC, KC_FN4, LT(_SYMB, KC_RIGHT),
56 KC_LCTL,KC_LALT,
57 KC_DEL,
58 KC_BSPC, KC_DEL ,TT(_MOUSE) ,
59 KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,TT(_MOUSE) ,KC_FN1 ,TT(_SYMB), KC_NO, RESET,
60 KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS,
61 KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS,
62 KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN,KC_QUOT,
63 KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_RSFT,
64 LT(_SYMB, KC_UP), KC_FN7, KC_LBRC ,KC_RBRC,
65 KC_RALT,KC_RGUI,
66 KC_PGUP,
67 KC_PGDN,KC_ENTER ,KC_SPC
68 ),
69
70
71 /* _SYMB level, more planck like. Much work to make sequences into multi-finger rolls. eg ([1,0]), !=0
72 * Also sorted by frequency / strength of finger.
73 *
74 * ,-------------------------------------------------------------------------------------------------------------------.
75 * | | | | | | | | | | | | | | | | |
76 * |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------|
77 * | | | | | | | | | | | | | |
78 * |--------+------+------+------+------+------| +------+------+------+------+------+--------|
79 * | | ^ | { | } | @ | % | | & | [ | ( | ) | _ | \ |
80 * |--------+------+------+------+------+------| +------+------+------+------+------+--------|
81 * | | ! | # | 0 | = | ~ | | * | + | 1 | - | ] | ` |
82 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
83 * | | 6 | 7 | 8 | 9 | pipe | | $ | 2 | 3 | 4 | 5 | |
84 * `--------+------+------+------+------+------- `------+------+------+------+------+--------'
85 * | | : |GUI/L |L1/RT | | L1/UP|GUI/DN| \ | |
86 * `---------------------------' `---------------------------'
87 * ,-------------. ,-------------.
88 * | CTRL | | | ALT | GUI |
89 * ,------|------|------| |------+------+------.
90 * | | | | | | | |
91 * | Cut | Paste|------| |------| | |
92 * | | |Reset | | | | |
93 * `--------------------' `--------------------'
94 */
95
96
97
98 [_SYMB] = LAYOUT(
99 _______, _______, _______, _______, _______, _______, _______, _______, _______,
100 _______, _______, _______, _______, _______, _______,
101 _______, KC_CIRC, KC_LCBR, KC_RCBR, KC_AT, KC_PERC,
102 _______, KC_EXLM, KC_HASH, KC_0, KC_EQL, KC_TILD,
103 _______, KC_6, KC_7, KC_8, KC_9, KC_PIPE,
104 _______, KC_COLON, KC_FN4, LT(_SYMB, KC_RIGHT),
105 _______, _______,
106 _______,
107 _______, _______, RESET,
108 _______, _______, _______, _______, _______, _______, _______, TT(_MOUSE), KC_2,
109 _______, _______, _______, _______, _______, _______,
110 KC_AMPR, KC_LBRC, KC_LPRN, KC_RPRN, KC_UNDS, _______,
111 KC_ASTR, KC_PLUS, KC_1, KC_MINS, KC_RBRC, KC_GRV,
112 KC_DLR, KC_2, KC_3, KC_4, KC_5, XXXXXXX,
113 LT(_SYMB, KC_UP), KC_FN7, KC_BSLS, XXXXXXX,
114 _______, _______,
115 _______,
116 _______, _______, _______
117 ),
118
119
120 /* _SYMB2ol level, more ergodox like
121 *
122 * ,-------------------------------------------------------------------------------------------------------------------.
123 * | | | | | | | | | | | | | | | | |
124 * |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------|
125 * | | | * | # | | | | | | | | | |
126 * |--------+------+------+------+------+------| +------+------+------+------+------+--------|
127 * | | / | < | > | | | | | | + | * | | |
128 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
129 * | | | { | } | | | | | | = | - | | |
130 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
131 * | | = | ( | ) | | | | | | | | | | |
132 * `--------+------+------+------+------+------- `------+------+------+------+------+--------'
133 * | | |GUI/L |L1/RT | | L1/UP|GUI/DN| { | } |
134 * `---------------------------' `---------------------------'
135 * ,-------------. ,-------------.
136 * | CTRL | | | ALT | GUI |
137 * ,------|------|------| |------+------+------.
138 * | | | | | | | |
139 * | BkSp | Del |------| |------|Mouse1|Mouse2|
140 * | | |Reset | | |LClick|Rclick|
141 * `--------------------' `--------------------'
142 */
143
144
145
146 [_SYMB2] = LAYOUT(
147 _______, _______, _______, _______, _______, _______, _______, _______, _______,
148 _______, _______, KC_ASTR, KC_HASH, _______, _______,
149 _______, KC_SLSH, RSFT(KC_COMM), RSFT(KC_DOT), _______, _______,
150 _______, _______, RSFT(KC_LBRC), RSFT(KC_RBRC), _______, _______,
151 _______, KC_EQL, RSFT(KC_9), RSFT(KC_0), _______, _______,
152 _______, _______, KC_FN4, LT(_SYMB, KC_RIGHT),
153 _______, _______,
154 _______,
155 _______, _______, RESET,
156 _______, _______, _______, _______, _______, _______, _______, TT(_MOUSE), KC_2,
157 _______, _______, _______, KC_ASTR, _______, _______,
158 _______, _______, KC_PLUS, KC_MINS, _______, _______,
159 _______, _______, KC_EQL, KC_PIPE, _______, _______,
160 _______, _______, _______, _______, _______, _______,
161 LT(_SYMB, KC_UP), KC_FN7, _______, _______,
162 _______, _______,
163 _______,
164 _______, _______, _______
165 ),
166 /* Keymap: Movement and function layer
167 *
168 * ,-------------------------------------------------------------------------------------------------------------------.
169 * | Caps | F1 | F2 | F3 | F4 | F5 | F6 | F8 | F9 | F10 | F12 | FN0 | FN1 | FN2 | Tada | bOOT |
170 * |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------|
171 * | =+ | ! | @ | # | $ | % | | ^ | & | * | ( | ) |MS Fast |
172 * |--------+------+------+------+------+------| +------+------+------+------+------+--------|
173 * | Tab | | | | |PgUp | | MwU |MS_UL | MS_U |MS_UR | | Ms Norm|
174 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
175 * |MouseFN1|GUI_V |GUI X |GUI C |GUI_V | | | | MS_L |Mouse1| MS_R | |MS Slow |
176 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
177 * | | | | | |PgDown| | MWD | MDown|MS Dwn|MS_DR | ? | |
178 * `--------+------+------+------+------+------- `------+------+------+------+------+--------'
179 * | `~ | ESC | | | | | | { | } |
180 * `---------------------------' `---------------------------'
181 * ,-------------. ,-------------.
182 * | CTRL | GUI | | ALT | GUI |
183 * ,------|------|------| |------+------+------.
184 * | | | Home | | PgUp | | |
185 * | BkSp | Del |------| |------|Mouse1|Mouse2|
186 * | | | End | | PgDn |LClick|Rclick|
187 * `--------------------' `--------------------'
188 */
189
190
191 [_MOUSE] = LAYOUT(
192 KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______,
193 _______, KC_EXLM ,KC_AT, KC_HASH, KC_DLR ,KC_PERC ,
194 _______, KC_NO, KC_NO, KC_UP, KC_NO, KC_PGUP,
195 KC_FN1, LGUI(KC_Z),LGUI(KC_X),LGUI(KC_C),LGUI(KC_V), KC_NO,
196 _______, KC_NO, KC_NO, KC_UP, KC_NO, KC_PGDN,
197 _______, _______, KC_NO, KC_NO,
198 _______, _______,
199 _______,
200 _______, _______, _______,
201 _______, _______, _______, _______, _______, _______, _______, TT(_MOUSE),RESET,
202 KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_ACL2,
203 KC_WH_U, M(A_MUL), KC_MS_U, M(A_MUR), KC_NO, KC_ACL1,
204 KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_ACL0,
205 KC_WH_D, M(A_MDL), KC_MS_D, M(A_MDR), RSFT(KC_LBRC), RSFT(KC_RBRC),
206 KC_LCBR, KC_RCBR, KC_NO, KC_NO,
207 _______, _______,
208 _______,
209 _______, KC_BTN1, KC_BTN2
210 ),
211
212
213
214 /* EMPTY
215 *
216 * ,-------------------------------------------------------------------------------------------------------------------.
217 * | | | | | | | | | | | | | | | | bOOT |
218 * |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------|
219 * | | | | | | | | | | | | | |
220 * |--------+------+------+------+------+------| +------+------+------+------+------+--------|
221 * | | | | | | | | | | | | | |
222 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
223 * | | | | | | | | | | | | | |
224 * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
225 * | | | | | | | | | | | | | |
226 * `--------+------+------+------+------+------- `------+------+------+------+------+--------'
227 * | | | | | | | | | |
228 * `---------------------------' `---------------------------'
229 * ,-------------. ,-------------.
230 * | Ctrl | Alt | | Gui | Ctrl |
231 * ,------|------|------| |------+------+------.
232 * | | | Home | | PgUp | | |
233 * | BkSp | Del |------| |------|Mouse1|Mouse2|
234 * | | | End | | PgDn |LClick|Rclick|
235 * `--------------------' `--------------------'
236 */
237
238
239
240 [_TRANS] = LAYOUT(
241 _______, _______, _______, _______, _______, _______, _______, _______, _______,
242 _______, _______, _______, _______, _______, _______,
243 _______, _______, _______, _______, _______, _______,
244 _______, _______, _______, _______, _______, _______,
245 _______, _______, _______, _______, _______, _______,
246 _______, _______, _______, _______,
247 _______, _______,
248 _______,
249 _______, _______, _______,
250 _______, _______, _______, _______, _______, _______, _______, TT(_MOUSE), KC_2,
251 _______, _______, _______, _______, _______, _______,
252 _______, _______, _______, _______, _______, _______,
253 _______, _______, _______, _______, _______, _______,
254 _______, _______, _______, _______, _______, _______,
255 _______, _______, _______, _______,
256 _______, _______,
257 _______,
258 _______, _______, _______
259 ),
260
261
262 };
263
264
265
266 const uint16_t PROGMEM fn_actions[] = {
267 [1] = ACTION_LAYER_TOGGLE(_MOUSE) ,
268 [4]= ACTION_MODS_TAP_KEY(MOD_LGUI,KC_LEFT),
269 [7]= ACTION_MODS_TAP_KEY(MOD_LGUI,KC_DOWN),
270
271
272 };
273
274 const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
275 {
276 // MACRODOWN only works in this function
277 switch(id) {
278 case 0:
279 if (record->event.pressed) {
280 register_code(KC_RSFT);
281 } else {
282 unregister_code(KC_RSFT);
283 }
284 break;
285
286 // from algernon's ErgoDox EZ layout,
287 case A_MUL:
288 if (record->event.pressed) {
289 mousekey_on(KC_MS_UP);
290 mousekey_on(KC_MS_LEFT);
291 } else {
292 mousekey_off(KC_MS_UP);
293 mousekey_off(KC_MS_LEFT);
294 }
295 mousekey_send();
296 break;
297
298 case A_MUR:
299 if (record->event.pressed) {
300 mousekey_on(KC_MS_UP);
301 mousekey_on(KC_MS_RIGHT);
302 } else {
303 mousekey_off(KC_MS_UP);
304 mousekey_off(KC_MS_RIGHT);
305 }
306 mousekey_send();
307 break;
308
309 case A_MDL:
310 if (record->event.pressed) {
311 mousekey_on(KC_MS_DOWN);
312 mousekey_on(KC_MS_LEFT);
313 } else {
314 mousekey_off(KC_MS_DOWN);
315 mousekey_off(KC_MS_LEFT);
316 }
317 mousekey_send();
318 break;
319
320 case A_MDR:
321 if (record->event.pressed) {
322 mousekey_on(KC_MS_DOWN);
323 mousekey_on(KC_MS_RIGHT);
324 } else {
325 mousekey_off(KC_MS_DOWN);
326 mousekey_off(KC_MS_RIGHT);
327 }
328 mousekey_send();
329 break;
330 }
331 return MACRO_NONE;
332 };
333
334
335 void matrix_init_user(void) {
336
337
338 }
339
340 void matrix_scan_user(void) {
341
342 #ifdef ALVICSTEP_CONFIG_H
343 int8_t layer = biton32(layer_state);
344
345 switch (layer) {
346 case 1:
347 if (!(host_keyboard_leds() & (1 << USB_LED_CAPS_LOCK))) {
348 all_led_off();
349 caps_lock_led_on();
350 }
351 break;
352
353 case 2:
354 if (!(host_keyboard_leds() & (1 << USB_LED_SCROLL_LOCK))) {
355 all_led_off();
356 scroll_lock_led_on();
357 }
358 case 0:
359 all_led_off();
360 num_lock_led_on();
361 break;
362 default:
363 break;
364 }
365 #endif
366
367 }
368
369 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
370 return true;
371 }
372
373 void led_set_user(uint8_t usb_led) {
374
375 }