aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--keyboards/ergodox_ez/keymaps/teckinesis/keymap.c455
-rw-r--r--keyboards/ergodox_ez/keymaps/teckinesis/ordinary-special.pngbin0 -> 63065 bytes
-rw-r--r--keyboards/ergodox_ez/keymaps/teckinesis/ordinary-special.txt27
-rw-r--r--keyboards/ergodox_ez/keymaps/teckinesis/readme.md45
-rw-r--r--keyboards/ergodox_ez/keymaps/teckinesis/teckinesis-base.json434
-rw-r--r--keyboards/ergodox_ez/keymaps/teckinesis/teckinesis-base.pngbin0 -> 93743 bytes
-rw-r--r--keyboards/ergodox_ez/keymaps/teckinesis/teckinesis-media.json436
-rw-r--r--keyboards/ergodox_ez/keymaps/teckinesis/teckinesis-media.pngbin0 -> 112216 bytes
-rw-r--r--keyboards/ergodox_ez/keymaps/teckinesis/teckinesis-symbol.json422
-rw-r--r--keyboards/ergodox_ez/keymaps/teckinesis/teckinesis-symbol.pngbin0 -> 97350 bytes
11 files changed, 1820 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index 7c1e434e3..849143352 100644
--- a/.gitignore
+++ b/.gitignore
@@ -26,3 +26,4 @@ CMakeLists.txt
26.project 26.project
27.settings/ 27.settings/
28.idea 28.idea
29.browse.VC.db* \ No newline at end of file
diff --git a/keyboards/ergodox_ez/keymaps/teckinesis/keymap.c b/keyboards/ergodox_ez/keymaps/teckinesis/keymap.c
new file mode 100644
index 000000000..ec6ceb96b
--- /dev/null
+++ b/keyboards/ergodox_ez/keymaps/teckinesis/keymap.c
@@ -0,0 +1,455 @@
1#include "ergodox_ez.h"
2#include "led.h"
3#include "debug.h"
4#include "action_layer.h"
5#include "action_util.h"
6#include "mousekey.h"
7
8#define BASE 0 // default layer
9#define SYMB 1 // symbols layer
10#define MDIA 2 // media layer
11#define SPEC 3 // special layer
12
13#define LCaps 10 // left caps-shift key
14#define LSymb 11 // left symbol-shift key
15#define LMdia 12 // left media-shift key
16#define LSpec 13 // left special-shift key
17#define RCaps 14 // right caps-shift key
18#define RSymb 15 // right symbol-shift key
19#define RMdia 16 // right media-shift key
20#define RSpec 17 // right special-shift key
21
22#define MUL 20 // mouse up left
23#define MUR 21 // mouse up right
24#define MDL 22 // mouse down left
25#define MDR 23 // mouse down right
26
27/*
28 * teckinesis layout for ErgoDox (EZ)
29 *
30 * Modifications from The Ordinary Layout v4 by Will Wolff-Myren willwm@gmail.com
31 * Modifications from default by Nicholas Keene ergodoxez@nicholaskeene.com
32 *
33 * No rights reserved. This software is in the public domain.
34 * Credit me if you are friendly but if you're a jerk don't bother.
35 *
36 * Details: readme.md
37 * https://github.com/willwm/qmk_firmware/tree/master/keyboard/ergodox_ez/keymaps/teckinesis
38 */
39
40const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
41
42/******* Base Layer ********************************************************************************************************
43 *
44 * ,------------------------------------------------------. ,------------------------------------------------------.
45 * | Special =+ | 1 | 2 | 3 | 4 | 5 | ESC | | ` | 6 | 7 | 8 | 9 | 0 | -_ Special |
46 * |------------+------+------+------+------+-------------| |------+------+------+------+------+------+------------|
47 * | Media Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | \| Media |
48 * |------------+------+------+------+------+------| | | |------+------+------+------+------+------------|
49 * | Symbol | A | S | D | F | G |------| |------| H | J | K | L | ; | '" Symbol |
50 * |------------+------+------+------+------+------|Shift | | Tab |------+------+------+------+------+------------|
51 * | Capitals | Z | X | C | V | B | -Tab | | | N | M | , | . | / | Capitals |
52 * `------------+------+------+------+------+-------------' `-------------+------+------+------+------+------------'
53 * | LCtrl |Meh/\ |Hypr//| LAlt | LGui | | RGui | RAlt |Hypr/[|Meh/] | RCtrl |
54 * `-----------------------------------' `-----------------------------------'
55 * ,-------------. ,-------------.
56 * | Home | End | | Left | Right|
57 * ,------|------|------| |------+------+------.
58 * | | | PgUp | | Up | | |
59 * |Backsp| Del |------| |------| Enter| Space|
60 * | | | PgDn | | Down | | |
61 * `--------------------' `--------------------'
62 */
63[BASE] = KEYMAP(
64// left hand
65 F(LSpec),KC_1,KC_2,KC_3 ,KC_4 ,KC_5 ,KC_ESC
66,F(LMdia) ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_LBRC
67,M(LSymb) ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G
68,M(LCaps) ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,LSFT(KC_TAB)
69,KC_LCTL,MEH_T(KC_BSLS),ALL_T(KC_SLSH),KC_LALT,KC_LGUI
70 ,KC_HOME,KC_END
71 ,KC_PGUP
72 ,KC_BSPC,KC_DEL ,KC_PGDN
73 // right hand
74 ,KC_GRV ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,F(RSpec)
75 ,KC_RBRC ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,F(RMdia)
76 ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,F(RSymb)
77 ,KC_TAB ,KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH ,M(RCaps)
78 ,KC_RGUI,KC_RALT,ALL_T(KC_LBRC),MEH_T(KC_RBRC),KC_RCTL
79 ,KC_LEFT ,KC_RGHT
80 ,KC_UP
81 ,KC_DOWN ,KC_ENT ,KC_SPC
82 ),
83
84/******* Symbols Layer *****************************************************************************************************
85 *
86 * ,-----------------------------------------------------. ,-----------------------------------------------------.
87 * | | F1 | F2 | F3 | F4 | F5 | Esc | | - | F6 | F7 | F8 | F9 | F10 | |
88 * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
89 * | | ! | @ | { | } | & | < | | > | | | 7 | 8 | 9 | / | |
90 * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
91 * | | # | $ | ( | ) | ` |------| |------| / | 4 | 5 | 6 | * | |
92 * |-----------+------+------+------+------+------| Tab | | Shift|------+------+------+------+------+-----------|
93 * | | % | ^ | [ | ] | ~ | | | -Tab| \ | 1 | 2 | 3 | - | |
94 * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
95 * | LCtrl | Meh |Hyper | LAlt | LGui | |RGui/0|RAlt/.|Hypr/=|Meh/+ |RCtrl/Ent|
96 * `-----------------------------------' `-------------------------------------'
97 * ,-------------. ,-------------.
98 * | Left | Right| | Home | End |
99 * ,------|------|------| |------+------+------.
100 * | | | Up | | PgUp | | |
101 * |Space |Enter |------| |------|BackSp| Del |
102 * | | | Down | | PgDn | | |
103 * `--------------------' `--------------------'
104 */
105[SYMB] = KEYMAP(
106// left hand
107 KC_TRNS ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_ESC
108,KC_TRNS ,KC_EXLM ,KC_AT ,KC_LCBR ,KC_RCBR ,KC_AMPR ,LSFT(KC_COMM)
109,KC_TRNS ,KC_HASH ,KC_DLR ,KC_LPRN ,KC_RPRN ,KC_GRV
110,KC_TRNS ,KC_PERC ,KC_CIRC ,KC_LBRC ,KC_RBRC ,KC_TILD ,KC_TAB
111,KC_LCTL ,KC_MEH ,KC_HYPR ,KC_LALT ,KC_LGUI
112 ,KC_LEFT ,KC_RGHT
113 ,KC_UP
114 ,KC_SPC ,KC_ENT ,KC_DOWN
115 // right hand
116 ,KC_MINS ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_TRNS
117 ,LSFT(KC_DOT),KC_PIPE ,KC_7 ,KC_8 ,KC_9 ,KC_SLSH ,KC_TRNS
118 ,KC_SLSH ,KC_4 ,KC_5 ,KC_6 ,KC_ASTR ,KC_TRNS
119 ,LSFT(KC_TAB),KC_BSLS ,KC_1 ,KC_2 ,KC_3 ,KC_MINS ,KC_TRNS
120 ,GUI_T(KC_0),ALT_T(KC_DOT),ALL_T(KC_EQL),MEH_T(KC_PLUS),CTL_T(KC_ENT)
121 ,KC_HOME ,KC_END
122 ,KC_PGUP
123 ,KC_PGDN ,KC_BSPC ,KC_DEL
124),
125
126/******* Media Layer *******************************************************************************************************
127 *
128 * ,---------------------------------------------------------------. ,---------------------------------------------------------------.
129 * | | F11 | F12 | F13 | F14 | F15 | Esc | | | F16 | F17 | F18 | F19 | F20 | |
130 * |------+---------+---------+---------+---------+----------------| |------+---------+---------+---------+---------+---------+------|
131 * | | |MouseUpLf|Mouse Up |MouseUpRg|Volume Up|Scroll| |Scroll|PrintScrn| Home | Up | PgUp | | |
132 * |------+---------+---------+---------+---------+---------| Up | | Up |---------+---------+---------+---------+---------+------|
133 * | | |MouseLeft|MouseDown|MouseRght|Volume Dn|------| |------| Num Lock| Left | Down | Right | | |
134 * |------+---------+---------+---------+---------+---------|Scroll| |Scroll|---------+---------+---------+---------+---------+------|
135 * | | |MouseDnLf|MouseDown|MouseDnRg| Mute | Down | | Down | | End | Down | PgDn | | |
136 * `------+---------+---------+---------+---------+----------------' `----------------+---------+---------+---------+---------+------'
137 * |LCtrl| Meh | MClick | LClick | R Click| |Cmd/Insrt|Optn/Del | Hyper | Meh |RCtrl|
138 * `---------------------------------------------' `---------------------------------------------'
139 * ,-------------. ,-------------.
140 * | Stop |Refrsh| | Prev | Next |
141 * ,------|------|------| |------+------+------.
142 * |Brwser|Brwser|Search| |VolUp | | |
143 * |Back | Fwd |------| |------| Stop | Play-|
144 * | | | Home | |VolDn | | Pause|
145 * `--------------------' `--------------------'
146 */
147[MDIA] = KEYMAP(
148// left hand
149 KC_TRNS ,KC_F11 ,KC_F12 ,KC_F13 ,KC_F14 ,KC_F15 ,KC_ESC
150,KC_TRNS ,KC_NO ,M(MUL) ,KC_MS_U ,M(MUR) ,KC_VOLU ,KC_WH_U
151,KC_TRNS ,KC_NO ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_VOLD
152,KC_TRNS ,KC_NO ,M(MDL) ,KC_MS_D ,M(MDR) ,KC_MUTE ,KC_WH_D
153,KC_LCTL ,KC_MEH ,KC_BTN3 ,KC_BTN1 ,KC_BTN2
154 ,KC_WSTP ,KC_WREF
155 ,KC_WSCH
156 ,KC_WBAK ,KC_NO ,KC_WHOM
157 // right hand
158 ,KC_NO ,KC_F16 ,KC_F17 ,KC_F18 ,KC_F19 ,KC_F20 ,KC_TRNS
159 ,KC_WH_U ,KC_PSCR ,KC_HOME ,KC_UP ,KC_PGUP ,KC_NO ,KC_TRNS
160 ,KC_NLCK ,KC_LEFT ,KC_DOWN ,KC_RIGHT,KC_NO ,KC_TRNS
161 ,KC_WH_D ,KC_NO ,KC_END ,KC_DOWN ,KC_PGDN ,KC_NO ,KC_TRNS
162 ,GUI_T(KC_INS),ALT_T(KC_DEL),KC_HYPR ,KC_MEH ,KC_RCTL
163 ,KC_MPRV ,KC_MNXT
164 ,KC_VOLU
165 ,KC_VOLD ,KC_MSTP ,KC_MPLY
166),
167
168/******* Special Layer *****************************************************************************************************
169 *
170 * ,-----------------------------------------------------. ,-----------------------------------------------------.
171 * | | Esc | | | | | | | | | | | | Bspc | |
172 * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
173 * | | | | | | | | | | | | | | | |
174 * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
175 * | | | | | | |------| |------| | | | | | |
176 * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
177 * | | | | | | | | | | | | | | | RShift |
178 * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
179 * | | | | | | | | | | | |
180 * `----------------------------------' `----------------------------------'
181 * ,-------------. ,-------------.
182 * | | | | | |
183 * ,------|------|------| |------+------+------.
184 * | | | | | | | |
185 * | | |------| |------| | |
186 * | | | | | | | |
187 * `--------------------' `--------------------'
188 */
189[SPEC] = KEYMAP(
190// left hand
191 KC_TRNS ,KC_ESC ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
192,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
193,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
194,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
195,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
196
197 ,KC_TRNS ,KC_TRNS
198 ,KC_TRNS
199 ,KC_TRNS,KC_TRNS ,KC_TRNS
200 // right hand
201 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_BSPC ,KC_TRNS
202 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
203 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
204 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_RSFT
205 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
206
207 ,KC_TRNS ,KC_TRNS
208 ,KC_TRNS
209 ,KC_TRNS ,KC_TRNS ,KC_TRNS
210 )
211};
212
213const uint16_t PROGMEM fn_actions[] = {
214 // the faux shift keys are implemented as macro taps
215 [LCaps] = ACTION_MACRO_TAP(LCaps)
216 ,[LSymb] = ACTION_MACRO_TAP(LSymb)
217 ,[LMdia] = ACTION_MACRO_TAP(LMdia)
218 ,[LSpec] = ACTION_MACRO_TAP(LSpec)
219 ,[RCaps] = ACTION_MACRO_TAP(RCaps)
220 ,[RSymb] = ACTION_MACRO_TAP(RSymb)
221 ,[RMdia] = ACTION_MACRO_TAP(RMdia)
222 ,[RSpec] = ACTION_MACRO_TAP(RSpec)
223};
224
225uint16_t caps_shift = 0;
226uint16_t symb_shift = 0;
227uint16_t mdia_shift = 0;
228
229bool symb_lock = false;
230bool mdia_lock = false;
231
232const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
233{
234 switch(id) {
235 // There are two shift keys for each layer so we increment a layer_shift var when one
236 // is pressed and decrement when one is released. If both are pressed at the same time
237 // then the layer is locked (or unlocked). The shift counts are bound between 0 and 2
238 // only because sometimes rapid pressing led to irregular events; this way the states
239 // are self healing during use.
240
241 case LCaps: // both caps-shift keys trigger Left Shift
242 case RCaps: // so they don't interfere with the magic combo
243 if (record->event.pressed && !record->tap.count) {
244 if(++caps_shift > 2) caps_shift = 2;
245 if(caps_shift == 2) {
246 register_code(KC_CAPS);
247 unregister_code(KC_CAPS);
248 } else if(caps_shift == 1) {
249 register_code(KC_LSFT);
250 }
251 } else {
252 if(--caps_shift < 0) caps_shift = 0;
253 if(caps_shift == 0) unregister_code(KC_LSFT);
254 }
255 break;
256
257 case LSymb:
258 if (record->event.pressed) {
259 if(++symb_shift > 2) symb_shift = 2;
260 if(symb_shift == 2) {
261 symb_lock = !symb_lock;
262 } else if(symb_shift == 1) {
263 layer_on(SYMB);
264 }
265 } else {
266 if(--symb_shift < 0) symb_shift = 0;
267 if((symb_shift == 0) && (!symb_lock)) layer_off(SYMB);
268 }
269 break;
270
271 case LMdia:
272 if (record->event.pressed) {
273 if (record->tap.count && (!mdia_shift) && (!mdia_lock)) {
274 register_code(KC_TAB);
275 } else {
276 if(++mdia_shift > 2) mdia_shift = 2;
277 if(mdia_shift == 2) {
278 mdia_lock = !mdia_lock;
279 } else if(mdia_shift == 1) {
280 layer_on(MDIA);
281 }
282 }
283 } else {
284 if(record->tap.count && (!mdia_shift) && (!mdia_lock)) {
285 unregister_code(KC_TAB);
286 } else {
287 if(--mdia_shift < 0) mdia_shift = 0;
288 if((!mdia_shift) && (!mdia_lock)) layer_off(MDIA);
289 }
290 }
291 break;
292
293 case LSpec:
294 if (record->event.pressed) {
295 if (record->tap.count && !record->tap.interrupted) {
296 register_code(KC_EQL);
297 } else {
298 layer_on(SPEC);
299 }
300 } else {
301 if(record->tap.count && !record->tap.interrupted) {
302 unregister_code(KC_EQL);
303 } else {
304 layer_off(SPEC);
305 }
306 }
307 break;
308
309 case RSymb:
310 if (record->event.pressed) {
311 if (record->tap.count && (!symb_shift) && (!symb_lock)) {
312 register_code(KC_QUOT);
313 } else {
314 if(++symb_shift > 2) symb_shift = 2;
315 if(symb_shift == 2) {
316 symb_lock = !symb_lock;
317 } else if(symb_shift == 1) {
318 layer_on(SYMB);
319 }
320 }
321 } else {
322 if(record->tap.count && symb_shift == 0) {
323 unregister_code(KC_QUOT);
324 } else {
325 if(--symb_shift < 0) symb_shift = 0;
326 if((!symb_shift) && (!symb_lock)) layer_off(SYMB);
327 }
328 }
329 break;
330
331 case RMdia:
332 if (record->event.pressed) {
333 if (record->tap.count && (!mdia_shift) && (!mdia_lock)) {
334 register_code(KC_BSLS);
335 } else {
336 if(++mdia_shift > 2) mdia_shift = 2;
337 if(mdia_shift == 2) {
338 mdia_lock = !mdia_lock;
339 } else if(mdia_shift == 1) {
340 layer_on(MDIA);
341 }
342 }
343 } else {
344 if(record->tap.count && (!mdia_shift) && (!mdia_lock)) {
345 unregister_code(KC_BSLS);
346 } else {
347 if(--mdia_shift < 0) mdia_shift = 0;
348 if((!mdia_shift) && (!mdia_lock)) layer_off(MDIA);
349 }
350 }
351 break;
352
353 case RSpec:
354 if (record->event.pressed) {
355 if (record->tap.count && !record->tap.interrupted) {
356 register_code(KC_MINS);
357 } else {
358 layer_on(SPEC);
359 }
360 } else {
361 if(record->tap.count && !record->tap.interrupted) {
362 unregister_code(KC_MINS);
363 } else {
364 layer_off(SPEC);
365 }
366 }
367 break;
368
369 // mouse diagonals
370
371 case MUL: // mouse up left
372 if (record->event.pressed) {
373 mousekey_on(KC_MS_UP);
374 mousekey_on(KC_MS_LEFT);
375 mousekey_send();
376 } else {
377 mousekey_off(KC_MS_UP);
378 mousekey_off(KC_MS_LEFT);
379 mousekey_send();
380 }
381 break;
382
383 case MUR: // mouse up right
384 if (record->event.pressed) {
385 mousekey_on(KC_MS_UP);
386 mousekey_on(KC_MS_RIGHT);
387 mousekey_send();
388 } else {
389 mousekey_off(KC_MS_UP);
390 mousekey_off(KC_MS_RIGHT);
391 mousekey_send();
392 }
393 break;
394
395 case MDL: // mouse down left
396 if (record->event.pressed) {
397 mousekey_on(KC_MS_DOWN);
398 mousekey_on(KC_MS_LEFT);
399 mousekey_send();
400 } else {
401 mousekey_off(KC_MS_DOWN);
402 mousekey_off(KC_MS_LEFT);
403 mousekey_send();
404 }
405 break;
406
407 case MDR: // mouse down right
408 if (record->event.pressed) {
409 mousekey_on(KC_MS_DOWN);
410 mousekey_on(KC_MS_RIGHT);
411 mousekey_send();
412 } else {
413 mousekey_off(KC_MS_DOWN);
414 mousekey_off(KC_MS_RIGHT);
415 mousekey_send();
416 }
417 break;
418
419 default:
420 // none
421 break;
422 }
423
424 return MACRO_NONE;
425};
426
427// Runs just one time when the keyboard initializes.
428void matrix_init_user(void) {
429
430};
431
432// Runs constantly in the background, in a loop.
433void matrix_scan_user(void) {
434 // shift or caps lock turns on red light
435 if(caps_shift || (keyboard_report->mods & MOD_BIT(KC_RSFT)) || (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK))) {
436 ergodox_right_led_1_on();
437 } else {
438 ergodox_right_led_1_off();
439 }
440
441 // Symbol layer turns on green light
442 if(layer_state & (1UL<<SYMB)) {
443 ergodox_right_led_2_on();
444 } else {
445 ergodox_right_led_2_off();
446 }
447
448 // Media layer turns on blue light
449 if(layer_state & (1UL<<MDIA)) {
450 ergodox_right_led_3_on();
451 } else {
452 ergodox_right_led_3_off();
453 }
454};
455
diff --git a/keyboards/ergodox_ez/keymaps/teckinesis/ordinary-special.png b/keyboards/ergodox_ez/keymaps/teckinesis/ordinary-special.png
new file mode 100644
index 000000000..6eecf447e
--- /dev/null
+++ b/keyboards/ergodox_ez/keymaps/teckinesis/ordinary-special.png
Binary files differ
diff --git a/keyboards/ergodox_ez/keymaps/teckinesis/ordinary-special.txt b/keyboards/ergodox_ez/keymaps/teckinesis/ordinary-special.txt
new file mode 100644
index 000000000..a08827c6d
--- /dev/null
+++ b/keyboards/ergodox_ez/keymaps/teckinesis/ordinary-special.txt
@@ -0,0 +1,27 @@
1[{x:3.5,a:7},"",{x:10.5},""],
2[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
3[{y:-0.875,x:5.5},"",{c:"#ff4444",a:4},"Esc",{x:4.5,c:"#cccccc",a:7},"",""],
4[{y:-0.875,c:"#000000",t:"#ff0000",a:4,w:1.5},"Special\n\n\n\n\n\nShift",{c:"#ff4444",t:"#000000"},"Esc",{x:14.5,c:"#54d6de"},"Back\n\n\n\n\n\nspace",{c:"#000000",t:"#ff0000",w:1.5},"\n\nSpecial\n\n\n\n\nShift"],
5[{y:-0.375,x:3.5,c:"#cccccc",t:"#000000",a:7},"",{x:10.5},""],
6[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
7[{y:-0.875,x:5.5},"",{h:1.5},"",{x:4.5,h:1.5},"",""],
8[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""],
9[{y:-0.375,x:3.5},"",{x:10.5},""],
10[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
11[{y:-0.875,x:5.5},"",{x:6.5},""],
12[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""],
13[{y:-0.625,x:6.5,h:1.5},"",{x:4.5,h:1.5},""],
14[{y:-0.75,x:3.5},"",{x:10.5},""],
15[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
16[{y:-0.875,x:5.5},"",{x:6.5},""],
17[{y:-0.875,w:1.5},"","",{x:14.5},"",{c:"#2277ff",w:1.5},"RShift"],
18[{y:-0.375,x:3.5,c:"#cccccc"},"",{x:10.5},""],
19[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
20[{y:-0.75,x:0.5},"","",{x:14.5},"",""],
21[{r:30,rx:6.5,ry:4.25,y:-1,x:1},"",""],
22[{h:2},"",{h:2},"",""],
23[{x:2},""],
24[{r:-30,rx:13,y:-1,x:-3},"",""],
25[{x:-3},"",{h:2},"",{h:2},""],
26[{x:-3},""]
27
diff --git a/keyboards/ergodox_ez/keymaps/teckinesis/readme.md b/keyboards/ergodox_ez/keymaps/teckinesis/readme.md
new file mode 100644
index 000000000..9494a4d4c
--- /dev/null
+++ b/keyboards/ergodox_ez/keymaps/teckinesis/readme.md
@@ -0,0 +1,45 @@
1# teckinesis Layout
2
3*A blend of TECK and Kinesis layouts, based on ["The Ordinary Layout" by Nicholas Keene](http://qmk.fm/keyboards/ergodox_ez/keymaps/ordinary/#the-ordinary-layout-a-familiar-and-powerful-layout)*
4
5I love "The Ordinary Layout", but I still use a [TECK](https://www.trulyergonomic.com/store/index.php)
6at the office, and I found the transition back and forth to be a bit more difficult than I expected.
7
8This layout consists of only slight changes to "The Ordinary Layout" based on the layouts of the
9[(original) TECK Model 209](https://www.trulyergonomic.com/store/layout-designer--configurator--reprogrammable--truly-ergonomic-mechanical-keyboard/#KTo7PD0+P0BBQkNERUw5394rNR4fICEi4yMkJSYnLS4xOBQaCBUXTBwYDBITLzDhBBYHCQorCw0ODzPl4B0bBhkFKhEQNjc05OPiSktOTSwoLFBSUU/mZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX2BhAFZXAAAAAAAAAAAAXF1eVAAAAAAAAAAAAABZWltVAAAAAAAAAAAAYgBjAAAAAAAAAAAAWFcAAAAAAACTAQAMAiMBAAwBigEADAIhAQAMAZQBAAwBkgEADAGDAQAMALYBAAwAzQEADAC1AQAMAOIBAAwA6gEADADpAQAMALhJAEYAAAAAAEitR64AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACk6Ozw9Pj9AQUJDREVMOd/eKzUeHyAhIuMjJCUmJy0uMTgUGggVF0wcGAwSEy8w4QQWBwkKKwsNDg8z5eMdGwYZBSoREDY3NOfg4kpLTk0sKCxQUlFP5uQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF9gYQBWVwAAAAAAAAAAAFxdXlQAAAAAAAAAAAAAWVpbVQAAAAAAAAAAAGIAYwAAAAAAAAAAAFhXAAAAAAAAkwEADAIjAQAMAYoBAAwCIQEADAGUAQAMAZIBAAwBgwEADAC2AQAMAM0BAAwAtQEADADiAQAMAOoBAAwA6QEADAC4SQBGAAAAAABIrUeuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=) and
10the [Kinesis Advantage](http://www.kinesis-ergo.com/wp-content/uploads/2013/06/advantage_layout_win.pdf)
11
12## The Base Layout ##
13
14[teckinesis (Base Layer)](http://www.keyboard-layout-editor.com/#/gists/befd4c5800d92114aa9e50d4f7c0dfb0)
15![teckinesis base layout](teckinesis-base.png)
16
17### Changes from The Ordinary Layout ###
18
19* Moved KC_MINS from the key left of the 6 to the RSpec key.
20* Moved KC_EQL from RSpec to LSpec.
21* Moved KC_GRV from LSpec to the key left of the 6.
22* Mdded KC_BSLS to the left Meh key.
23* Added KC_SLSH to the left Hyper key.
24* Added KC_LBRC to the right Hyper key.
25* Added KC_RBRC to the right Meh key.
26
27## The Symbols Layer ##
28
29[teckinesis (Symbols Layer)](http://www.keyboard-layout-editor.com/#/gists/e6ddc4e9e0d194b3e52ac0616238ab61)
30![teckinesis symbols layout](teckinesis-symbol.png)
31
32### Changes from The Ordinary Layout ###
33
34* None.
35
36## The Media Layer ##
37
38[teckinesis (Media Layer)](http://www.keyboard-layout-editor.com/#/gists/41ff65e6a7c490211fd6702fb34d9908)
39![teckinesis media layout](teckinesis-media.png)
40
41### Changes from The Ordinary Layout ###
42
43* Removed Power, Sleep, Mail, My Computer keys.
44(I kept hitting these while using the mouse/cursor. =P)
45
diff --git a/keyboards/ergodox_ez/keymaps/teckinesis/teckinesis-base.json b/keyboards/ergodox_ez/keymaps/teckinesis/teckinesis-base.json
new file mode 100644
index 000000000..69fe28cf7
--- /dev/null
+++ b/keyboards/ergodox_ez/keymaps/teckinesis/teckinesis-base.json
@@ -0,0 +1,434 @@
1[
2 {
3 "name": "teckinesis (Base Layer)",
4 "author": "Will Wolff-Myren",
5 "notes": "# teckinesis Layout # \r\n\r\n*A blend of TECK and Kinesis layouts, based on [\"The Ordinary Layout\" by Nicholas Keene](http://qmk.fm/keyboards/ergodox_ez/keymaps/ordinary/#the-ordinary-layout-a-familiar-and-powerful-layout)*\r\n\r\n## The Base Layout ##\r\n\r\n![teckinesis base layout](teckinesis-base.png)\r\n\r\n## The Symbols Layer ##\r\n\r\n![teckinesis symbols layout](teckinesis-symbol.png)\r\n\r\n## The Media Layer ##\r\n\r\n(placeholder)\r\n",
6 "switchMount": "cherry",
7 "switchBrand": "gateron",
8 "switchType": "KS-3-Tea"
9 },
10 [
11 {
12 "x": 3.5
13 },
14 "#\n3",
15 {
16 "x": 10.5
17 },
18 "*\n8"
19 ],
20 [
21 {
22 "y": -0.875,
23 "x": 2.5
24 },
25 "@\n2",
26 {
27 "x": 1
28 },
29 "$\n4",
30 {
31 "x": 8.5
32 },
33 "&\n7",
34 {
35 "x": 1
36 },
37 "(\n9"
38 ],
39 [
40 {
41 "y": -0.875,
42 "x": 5.5
43 },
44 "%\n5",
45 {
46 "c": "#ff4444"
47 },
48 "Esc",
49 {
50 "x": 4.5,
51 "c": "#cccccc"
52 },
53 "~\n`",
54 "^\n6"
55 ],
56 [
57 {
58 "y": -0.875,
59 "c": "#2277ff",
60 "w": 1.5
61 },
62 "Special\n\n+\n\n\n\nShift\n=",
63 {
64 "c": "#cccccc"
65 },
66 "!\n1",
67 {
68 "x": 14.5
69 },
70 ")\n0",
71 {
72 "c": "#2277ff",
73 "w": 1.5
74 },
75 "_\n\nSpecial\n\n\n\n-\nShift"
76 ],
77 [
78 {
79 "y": -0.375,
80 "x": 3.5,
81 "c": "#cccccc"
82 },
83 "E",
84 {
85 "x": 10.5
86 },
87 "I"
88 ],
89 [
90 {
91 "y": -0.875,
92 "x": 2.5
93 },
94 "W",
95 {
96 "x": 1
97 },
98 "R",
99 {
100 "x": 8.5
101 },
102 "U",
103 {
104 "x": 1
105 },
106 "O"
107 ],
108 [
109 {
110 "y": -0.875,
111 "x": 5.5
112 },
113 "T",
114 {
115 "h": 1.5
116 },
117 "{\n\n\n\n\n\n[",
118 {
119 "x": 4.5,
120 "h": 1.5
121 },
122 "}\n\n\n\n\n\n]",
123 "Y"
124 ],
125 [
126 {
127 "y": -0.875,
128 "c": "#2277ff",
129 "fa": [
130 0,
131 0,
132 4
133 ],
134 "w": 1.5
135 },
136 "Media\n\n<i class='kb kb-Line-Start-End'></i>\n\n\n\nShift",
137 {
138 "c": "#cccccc"
139 },
140 "Q",
141 {
142 "x": 14.5
143 },
144 "P",
145 {
146 "c": "#2277ff",
147 "f": 3,
148 "w": 1.5
149 },
150 "|\n\\\nMedia\n\n\n\n\nShift"
151 ],
152 [
153 {
154 "y": -0.375,
155 "x": 3.5,
156 "c": "#cccccc"
157 },
158 "D",
159 {
160 "x": 10.5
161 },
162 "K"
163 ],
164 [
165 {
166 "y": -0.875,
167 "x": 2.5
168 },
169 "S",
170 {
171 "x": 1
172 },
173 "F",
174 {
175 "x": 8.5
176 },
177 "J",
178 {
179 "x": 1
180 },
181 "L"
182 ],
183 [
184 {
185 "y": -0.875,
186 "x": 5.5
187 },
188 "G",
189 {
190 "x": 6.5
191 },
192 "H"
193 ],
194 [
195 {
196 "y": -0.875,
197 "c": "#2277ff",
198 "w": 1.5
199 },
200 "Symbols\n\n\n\n\n\nShift",
201 {
202 "c": "#cccccc"
203 },
204 "A",
205 {
206 "x": 14.5
207 },
208 ":\n;",
209 {
210 "c": "#2277ff",
211 "f": 3,
212 "w": 1.5
213 },
214 "\"\n'\nSymbols\n\n\n\n\nShift"
215 ],
216 [
217 {
218 "y": -0.625,
219 "x": 6.5,
220 "c": "#54d6de",
221 "fa": [
222 0,
223 0,
224 4,
225 1
226 ],
227 "h": 1.5
228 },
229 "< Tab\n\n\nShift Tab",
230 {
231 "x": 4.5,
232 "h": 1.5
233 },
234 "Tab >\n\n\nTab"
235 ],
236 [
237 {
238 "y": -0.75,
239 "x": 3.5,
240 "c": "#cccccc"
241 },
242 "C",
243 {
244 "x": 10.5
245 },
246 "<\n,"
247 ],
248 [
249 {
250 "y": -0.875,
251 "x": 2.5
252 },
253 "X",
254 {
255 "x": 1
256 },
257 "V",
258 {
259 "x": 8.5
260 },
261 "M",
262 {
263 "x": 1
264 },
265 ">\n."
266 ],
267 [
268 {
269 "y": -0.875,
270 "x": 5.5
271 },
272 "B",
273 {
274 "x": 6.5
275 },
276 "N"
277 ],
278 [
279 {
280 "y": -0.875,
281 "c": "#2277ff",
282 "w": 1.5
283 },
284 "Capitals\n\n\n\n\n\nShift",
285 {
286 "c": "#cccccc"
287 },
288 "Z",
289 {
290 "x": 14.5
291 },
292 "?\n/",
293 {
294 "c": "#2277ff",
295 "f": 3,
296 "w": 1.5
297 },
298 "\n\nCapitals\n\n\n\n\nShift"
299 ],
300 [
301 {
302 "y": -0.375,
303 "x": 3.5,
304 "c": "#77aaff",
305 "fa": [
306 5,
307 0,
308 4,
309 1
310 ]
311 },
312 "<i class='mss mss-Unicode-Option-3'></i>\n\n\nLAlt",
313 {
314 "x": 10.5
315 },
316 "<i class='mss mss-Unicode-Option-3'></i>\n\n\nRAlt"
317 ],
318 [
319 {
320 "y": -0.875,
321 "x": 2.5,
322 "fa": [
323 5,
324 1
325 ]
326 },
327 "\nHyper\n?\n/",
328 {
329 "x": 1,
330 "fa": [
331 5,
332 1,
333 0,
334 1
335 ]
336 },
337 "<i class='mss mss-Unicode-Command-3'></i>\n\n\nSuper",
338 {
339 "x": 8.5
340 },
341 "<i class='mss mss-Unicode-Command-3'></i>\n\n\nSuper",
342 {
343 "x": 1,
344 "fa": [
345 0,
346 0,
347 0,
348 1
349 ]
350 },
351 "{\n[\n\nHyper"
352 ],
353 [
354 {
355 "y": -0.75,
356 "x": 0.5
357 },
358 "Ctrl\n\n\nLCtrl",
359 {
360 "f2": 1
361 },
362 "\nMeh\n|\n\\",
363 {
364 "x": 14.5,
365 "fa": [
366 0,
367 0,
368 1,
369 1
370 ]
371 },
372 "}\n]\n\nMeh",
373 "Ctrl\n\n\nRCtrl"
374 ],
375 [
376 {
377 "r": 30,
378 "rx": 6.5,
379 "ry": 4.25,
380 "y": -1,
381 "x": 1,
382 "c": "#54d6de"
383 },
384 "Home",
385 "End"
386 ],
387 [
388 {
389 "h": 2
390 },
391 "< Del\n\n\nBackspace",
392 {
393 "h": 2
394 },
395 "Del >\n\n\nDelete",
396 "Page\n\n\n\n\n\nUp"
397 ],
398 [
399 {
400 "x": 2
401 },
402 "Page\n\n\n\n\n\nDown"
403 ],
404 [
405 {
406 "r": -30,
407 "rx": 13,
408 "y": -1,
409 "x": -3
410 },
411 "Left",
412 "Right"
413 ],
414 [
415 {
416 "x": -3
417 },
418 "Up",
419 {
420 "h": 2
421 },
422 "Enter",
423 {
424 "h": 2
425 },
426 "Space"
427 ],
428 [
429 {
430 "x": -3
431 },
432 "Down"
433 ]
434] \ No newline at end of file
diff --git a/keyboards/ergodox_ez/keymaps/teckinesis/teckinesis-base.png b/keyboards/ergodox_ez/keymaps/teckinesis/teckinesis-base.png
new file mode 100644
index 000000000..7c4584e9f
--- /dev/null
+++ b/keyboards/ergodox_ez/keymaps/teckinesis/teckinesis-base.png
Binary files differ
diff --git a/keyboards/ergodox_ez/keymaps/teckinesis/teckinesis-media.json b/keyboards/ergodox_ez/keymaps/teckinesis/teckinesis-media.json
new file mode 100644
index 000000000..65fe394e8
--- /dev/null
+++ b/keyboards/ergodox_ez/keymaps/teckinesis/teckinesis-media.json
@@ -0,0 +1,436 @@
1[
2 {
3 "name": "teckinesis (MediaLayer)",
4 "author": "Will Wolff-Myren",
5 "switchMount": "cherry",
6 "switchBrand": "gateron",
7 "switchType": "KS-3-Tea"
8 },
9 [
10 {
11 "x": 3.5,
12 "c": "#99de2a"
13 },
14 "F13",
15 {
16 "x": 10.5
17 },
18 "F18"
19 ],
20 [
21 {
22 "y": -0.875,
23 "x": 2.5
24 },
25 "F12",
26 {
27 "x": 1
28 },
29 "F14",
30 {
31 "x": 8.5
32 },
33 "F17",
34 {
35 "x": 1
36 },
37 "F19"
38 ],
39 [
40 {
41 "y": -0.875,
42 "x": 5.5
43 },
44 "F15",
45 {
46 "c": "#ff4444"
47 },
48 "Esc",
49 {
50 "x": 4.5
51 },
52 "Esc",
53 {
54 "c": "#99de2a"
55 },
56 "F16"
57 ],
58 [
59 {
60 "y": -0.875,
61 "x": 1.5
62 },
63 "F11",
64 {
65 "x": 14.5
66 },
67 "F20"
68 ],
69 [
70 {
71 "y": -0.995,
72 "c": "#000000",
73 "t": "#ff0000",
74 "w": 1.5
75 },
76 "Media\n\n\n\n\n\nShift",
77 {
78 "x": 16.5,
79 "w": 1.5
80 },
81 "\n\nMedia\n\n\n\n\nShift"
82 ],
83 [
84 {
85 "y": -0.3799999999999999,
86 "x": 3.5,
87 "c": "#ff8500",
88 "t": "#000000"
89 },
90 "Mouse\n\n\n\n\n\nUp",
91 {
92 "x": 10.5
93 },
94 "Cursor\n\n\n\n\n\nUp"
95 ],
96 [
97 {
98 "y": -0.875,
99 "x": 2.5
100 },
101 "Mouse\n\n\n\n\n\nUpLeft",
102 {
103 "x": 1
104 },
105 "Mouse\n\n\n\n\n\nUpRgt",
106 {
107 "x": 8.5,
108 "c": "#ffb063"
109 },
110 "Home",
111 {
112 "x": 1
113 },
114 "Page\n\n\n\n\n\nUp"
115 ],
116 [
117 {
118 "y": -0.875,
119 "x": 5.5,
120 "c": "#e6e067"
121 },
122 "Vol\n\n\n\n\n\nUp",
123 {
124 "c": "#ffb063",
125 "h": 1.5
126 },
127 "Scroll\n\n\n\n\n\nUp",
128 {
129 "x": 4.5,
130 "h": 1.5
131 },
132 "Scroll\n\n\n\n\n\nUp",
133 {
134 "c": "#e6e067"
135 },
136 "Print\n\n\n\n\n\nScreen"
137 ],
138 [
139 {
140 "y": -0.875,
141 "x": 1.5,
142 "c": "#737373",
143 "a": 7
144 },
145 "",
146 {
147 "x": 14.5
148 },
149 ""
150 ],
151 [
152 {
153 "y": -0.9950000000000001,
154 "c": "#2277ff",
155 "a": 4,
156 "w": 1.5
157 },
158 "Symbols\n\n\n\n\n\nShift",
159 {
160 "x": 16.5,
161 "w": 1.5
162 },
163 "\n\nSymbols\n\n\n\n\nShift"
164 ],
165 [
166 {
167 "y": -0.3799999999999999,
168 "x": 3.5,
169 "c": "#ff8500"
170 },
171 "Mouse\n\n\n\n\n\nDown",
172 {
173 "x": 10.5
174 },
175 "Cursor\n\n\n\n\n\nDown"
176 ],
177 [
178 {
179 "y": -0.875,
180 "x": 2.5
181 },
182 "Mouse\n\n\n\n\n\nLeft",
183 {
184 "x": 1
185 },
186 "Mouse\n\n\n\n\n\nRight",
187 {
188 "x": 8.5
189 },
190 "Cursor\n\n\n\n\n\nLeft",
191 {
192 "x": 1
193 },
194 "Cursor\n\n\n\n\n\nRight"
195 ],
196 [
197 {
198 "y": -0.875,
199 "x": 5.5,
200 "c": "#e6e067"
201 },
202 "Vol\n\n\n\n\n\nDown",
203 {
204 "x": 6.5
205 },
206 "Num\n\n\n\n\n\nLock"
207 ],
208 [
209 {
210 "y": -0.875,
211 "x": 1.5,
212 "c": "#737373",
213 "a": 7
214 },
215 "",
216 {
217 "x": 14.5
218 },
219 ""
220 ],
221 [
222 {
223 "y": -0.9950000000000001,
224 "c": "#2277ff",
225 "a": 4,
226 "w": 1.5
227 },
228 "Capitals\n\n\n\n\n\nShift",
229 {
230 "x": 16.5,
231 "w": 1.5
232 },
233 "\n\nCapitals\n\n\n\n\nShift"
234 ],
235 [
236 {
237 "y": -0.6299999999999999,
238 "x": 6.5,
239 "c": "#ffb063",
240 "h": 1.5
241 },
242 "Scroll\n\n\n\n\n\nDown",
243 {
244 "x": 4.5,
245 "h": 1.5
246 },
247 "Scroll\n\n\n\n\n\nDown"
248 ],
249 [
250 {
251 "y": -0.75,
252 "x": 3.5,
253 "c": "#ff8500"
254 },
255 "Mouse\n\n\n\n\n\nDown",
256 {
257 "x": 10.5
258 },
259 "Cursor\n\n\n\n\n\nDown"
260 ],
261 [
262 {
263 "y": -0.875,
264 "x": 2.5
265 },
266 "Mouse\n\n\n\n\n\nDnLeft",
267 {
268 "x": 1
269 },
270 "Mouse\n\n\n\n\n\nDnRgt",
271 {
272 "x": 8.5,
273 "c": "#ffb063"
274 },
275 "End",
276 {
277 "x": 1
278 },
279 "Page\n\n\n\n\n\nDown"
280 ],
281 [
282 {
283 "y": -0.875,
284 "x": 5.5,
285 "c": "#e6e067"
286 },
287 "Mute",
288 {
289 "x": 6.5,
290 "c": "#737373",
291 "a": 7
292 },
293 ""
294 ],
295 [
296 {
297 "y": -0.875,
298 "x": 1.5
299 },
300 "",
301 {
302 "x": 14.5
303 },
304 ""
305 ],
306 [
307 {
308 "y": -0.9950000000000001,
309 "c": "#2277ff",
310 "a": 4,
311 "w": 1.5
312 },
313 "Ctrl",
314 {
315 "x": 16.5,
316 "w": 1.5
317 },
318 "Ctrl"
319 ],
320 [
321 {
322 "y": -0.3799999999999999,
323 "x": 3.5,
324 "c": "#ff8500"
325 },
326 "Middle\n\n\n\n\n\nClick",
327 {
328 "x": 10.5,
329 "c": "#ffb063",
330 "fa": [
331 0,
332 0,
333 0,
334 1
335 ]
336 },
337 "Delete\n\n\nOption"
338 ],
339 [
340 {
341 "y": -0.875,
342 "x": 2.5,
343 "c": "#ff8500"
344 },
345 "Left\n\n\n\n\n\nClick",
346 {
347 "x": 1
348 },
349 "Right\n\n\n\n\n\nClick",
350 {
351 "x": 8.5,
352 "c": "#ffb063"
353 },
354 "Insert\n\n\nCmd",
355 {
356 "x": 1,
357 "c": "#77aaff"
358 },
359 "Hyper"
360 ],
361 [
362 {
363 "y": -0.75,
364 "x": 0.5
365 },
366 "Alt\n\n\nLAlt",
367 "Meh",
368 {
369 "x": 14.5
370 },
371 "Meh",
372 "Alt\n\n\nRAlt"
373 ],
374 [
375 {
376 "r": 30,
377 "rx": 6.5,
378 "ry": 4.25,
379 "y": -1,
380 "x": 1,
381 "c": "#ccbb00"
382 },
383 "Stop\n\n\nBrowser",
384 "Reload\n\n\nBrowser"
385 ],
386 [
387 {
388 "h": 2
389 },
390 "< Web\n\n\nBrowser",
391 {
392 "h": 2
393 },
394 "Web >\n\n\nBrowser",
395 "Search\n\n\nBrowser"
396 ],
397 [
398 {
399 "x": 2
400 },
401 "Home\n\n\nBrowser"
402 ],
403 [
404 {
405 "r": -30,
406 "rx": 13,
407 "y": -1,
408 "x": -3
409 },
410 "Prev\n\n\nAudio\n\n\nTrack",
411 "Next\n\n\nAudio\n\n\nTrack"
412 ],
413 [
414 {
415 "x": -3,
416 "c": "#e6e067"
417 },
418 "Vol\n\n\n\n\n\nUp",
419 {
420 "c": "#ccbb00",
421 "h": 2
422 },
423 "Stop\n\n\nAudio",
424 {
425 "h": 2
426 },
427 "Play\n\n\nAudio\n\n\nPause"
428 ],
429 [
430 {
431 "x": -3,
432 "c": "#e6e067"
433 },
434 "Vol\n\n\n\n\n\nDown"
435 ]
436] \ No newline at end of file
diff --git a/keyboards/ergodox_ez/keymaps/teckinesis/teckinesis-media.png b/keyboards/ergodox_ez/keymaps/teckinesis/teckinesis-media.png
new file mode 100644
index 000000000..cc51605f9
--- /dev/null
+++ b/keyboards/ergodox_ez/keymaps/teckinesis/teckinesis-media.png
Binary files differ
diff --git a/keyboards/ergodox_ez/keymaps/teckinesis/teckinesis-symbol.json b/keyboards/ergodox_ez/keymaps/teckinesis/teckinesis-symbol.json
new file mode 100644
index 000000000..439d0128e
--- /dev/null
+++ b/keyboards/ergodox_ez/keymaps/teckinesis/teckinesis-symbol.json
@@ -0,0 +1,422 @@
1[
2 {
3 "name": "teckinesis (Symbol Layer)",
4 "author": "Will Wolff-Myren",
5 "switchMount": "cherry",
6 "switchBrand": "gateron",
7 "switchType": "KS-3-Tea"
8 },
9 [
10 {
11 "x": 3.5,
12 "c": "#99de2a"
13 },
14 "F3",
15 {
16 "x": 10.5
17 },
18 "F8"
19 ],
20 [
21 {
22 "y": -0.875,
23 "x": 2.5
24 },
25 "F2",
26 {
27 "x": 1
28 },
29 "F4",
30 {
31 "x": 8.5
32 },
33 "F7",
34 {
35 "x": 1
36 },
37 "F9"
38 ],
39 [
40 {
41 "y": -0.875,
42 "x": 5.5
43 },
44 "F5",
45 {
46 "c": "#ff4444"
47 },
48 "Esc",
49 {
50 "x": 4.5,
51 "c": "#bbddbb"
52 },
53 "_\n\n\n\n\n\n-",
54 {
55 "c": "#99de2a"
56 },
57 "F6"
58 ],
59 [
60 {
61 "y": -0.875,
62 "c": "#2277ff",
63 "w": 1.5
64 },
65 "Special\n\n\n\n\n\nShift",
66 {
67 "c": "#99de2a"
68 },
69 "F1",
70 {
71 "x": 14.5
72 },
73 "F10",
74 {
75 "c": "#2277ff",
76 "w": 1.5
77 },
78 "\n\nSpecial\n\n\n\n\nShift"
79 ],
80 [
81 {
82 "y": -0.375,
83 "x": 3.5,
84 "c": "#bbddbb"
85 },
86 "{",
87 {
88 "x": 10.5,
89 "c": "#89b087"
90 },
91 "8"
92 ],
93 [
94 {
95 "y": -0.875,
96 "x": 2.5,
97 "c": "#bbddbb"
98 },
99 "@",
100 {
101 "x": 1
102 },
103 "}",
104 {
105 "x": 8.5,
106 "c": "#89b087"
107 },
108 "7",
109 {
110 "x": 1
111 },
112 "9"
113 ],
114 [
115 {
116 "y": -0.875,
117 "x": 5.5,
118 "c": "#bbddbb"
119 },
120 "&",
121 {
122 "h": 1.5
123 },
124 "<",
125 {
126 "x": 4.5,
127 "h": 1.5
128 },
129 ">",
130 "|"
131 ],
132 [
133 {
134 "y": -0.875,
135 "c": "#2277ff",
136 "w": 1.5
137 },
138 "Media\n\n\n\n\n\nShift",
139 {
140 "c": "#bbddbb"
141 },
142 "!",
143 {
144 "x": 14.5,
145 "c": "#89b087"
146 },
147 "/",
148 {
149 "c": "#2277ff",
150 "w": 1.5
151 },
152 "\n\nMedia\n\n\n\n\nShift"
153 ],
154 [
155 {
156 "y": -0.375,
157 "x": 3.5,
158 "c": "#bbddbb"
159 },
160 "(",
161 {
162 "x": 10.5,
163 "c": "#89b087"
164 },
165 "5"
166 ],
167 [
168 {
169 "y": -0.875,
170 "x": 2.5,
171 "c": "#bbddbb"
172 },
173 "$",
174 {
175 "x": 1
176 },
177 ")",
178 {
179 "x": 8.5,
180 "c": "#89b087"
181 },
182 "4",
183 {
184 "x": 1
185 },
186 "6"
187 ],
188 [
189 {
190 "y": -0.875,
191 "x": 5.5,
192 "c": "#bbddbb"
193 },
194 "`",
195 {
196 "x": 6.5
197 },
198 "/"
199 ],
200 [
201 {
202 "y": -0.875,
203 "c": "#000000",
204 "t": "#ff0000",
205 "w": 1.5
206 },
207 "Symbols\n\n\n\n\n\nShift",
208 {
209 "c": "#bbddbb",
210 "t": "#000000"
211 },
212 "#",
213 {
214 "x": 14.5,
215 "c": "#89b087"
216 },
217 "*",
218 {
219 "c": "#000000",
220 "t": "#ff0000",
221 "w": 1.5
222 },
223 "\n\nSymbols\n\n\n\n\nShift"
224 ],
225 [
226 {
227 "y": -0.625,
228 "x": 6.5,
229 "c": "#54d6de",
230 "t": "#000000",
231 "fa": [
232 0,
233 0,
234 0,
235 1
236 ],
237 "h": 1.5
238 },
239 "Tab >\n\n\nTab",
240 {
241 "x": 4.5,
242 "h": 1.5
243 },
244 "< Tab\n\n\nShift Tab"
245 ],
246 [
247 {
248 "y": -0.75,
249 "x": 3.5,
250 "c": "#bbddbb"
251 },
252 "[",
253 {
254 "x": 10.5,
255 "c": "#89b087"
256 },
257 "2"
258 ],
259 [
260 {
261 "y": -0.875,
262 "x": 2.5,
263 "c": "#bbddbb"
264 },
265 "^",
266 {
267 "x": 1
268 },
269 "]",
270 {
271 "x": 8.5,
272 "c": "#89b087"
273 },
274 "1",
275 {
276 "x": 1
277 },
278 "3"
279 ],
280 [
281 {
282 "y": -0.875,
283 "x": 5.5,
284 "c": "#bbddbb"
285 },
286 "~",
287 {
288 "x": 6.5
289 },
290 "\\"
291 ],
292 [
293 {
294 "y": -0.875,
295 "c": "#2277ff",
296 "w": 1.5
297 },
298 "Capitals\n\n\n\n\n\nShift",
299 {
300 "c": "#bbddbb"
301 },
302 "%",
303 {
304 "x": 14.5,
305 "c": "#89b087"
306 },
307 "-",
308 {
309 "c": "#2277ff",
310 "w": 1.5
311 },
312 "\n\nCapitals\n\n\n\n\nShift"
313 ],
314 [
315 {
316 "y": -0.375,
317 "x": 3.5,
318 "c": "#77aaff"
319 },
320 "<i class='mss mss-Unicode-Option-3'></i>\n\n\nLAlt",
321 {
322 "x": 10.5,
323 "c": "#89b087"
324 },
325 ".\n\n\nOption"
326 ],
327 [
328 {
329 "y": -0.875,
330 "x": 2.5,
331 "c": "#77aaff"
332 },
333 "Hyper",
334 {
335 "x": 1
336 },
337 "<i class='mss mss-Unicode-Command-3'></i>\n\n\nSuper",
338 {
339 "x": 8.5,
340 "c": "#89b087"
341 },
342 "0\n\n\nCmd",
343 {
344 "x": 1
345 },
346 "=\n\n\nHyper"
347 ],
348 [
349 {
350 "y": -0.75,
351 "x": 0.5,
352 "c": "#77aaff"
353 },
354 "Ctrl\n\n\nLCtrl",
355 "Meh",
356 {
357 "x": 14.5,
358 "c": "#89b087"
359 },
360 "+\n\n\nMeh",
361 "Enter\n\n\nCtrl"
362 ],
363 [
364 {
365 "r": 30,
366 "rx": 6.5,
367 "ry": 4.25,
368 "y": -1,
369 "x": 1,
370 "c": "#54d6de"
371 },
372 "Left",
373 "Right"
374 ],
375 [
376 {
377 "h": 2
378 },
379 "Space",
380 {
381 "h": 2
382 },
383 "Enter",
384 "Up"
385 ],
386 [
387 {
388 "x": 2
389 },
390 "Down"
391 ],
392 [
393 {
394 "r": -30,
395 "rx": 13,
396 "y": -1,
397 "x": -3
398 },
399 "Home",
400 "End"
401 ],
402 [
403 {
404 "x": -3
405 },
406 "Page\n\n\n\n\n\nUp",
407 {
408 "h": 2
409 },
410 "< Del\n\n\nBackspace",
411 {
412 "h": 2
413 },
414 "Del >\n\n\nDelete"
415 ],
416 [
417 {
418 "x": -3
419 },
420 "Page\n\n\n\n\n\nDown"
421 ]
422] \ No newline at end of file
diff --git a/keyboards/ergodox_ez/keymaps/teckinesis/teckinesis-symbol.png b/keyboards/ergodox_ez/keymaps/teckinesis/teckinesis-symbol.png
new file mode 100644
index 000000000..7ca86cf47
--- /dev/null
+++ b/keyboards/ergodox_ez/keymaps/teckinesis/teckinesis-symbol.png
Binary files differ