After Width: | Height: | Size: 93 KiB |
Before Width: | Height: | Size: 103 KiB After Width: | Height: | Size: 93 KiB |
Before Width: | Height: | Size: 103 KiB |
After Width: | Height: | Size: 135 KiB |
@ -0,0 +1,533 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"backcolor": "#ffffff",
|
||||||
|
"name": "ErgoDox - algernon's layout: Heatmap",
|
||||||
|
"author": "Gergely Nagy <kbd@gergo.csillger.hu>",
|
||||||
|
"notes": "See [here](https://github.com/algernon/ergodox-layout#readme) for the QMK keymap source.",
|
||||||
|
"switchMount": "cherry",
|
||||||
|
"switchBrand": "gateron",
|
||||||
|
"switchType": "KS-3-Tea",
|
||||||
|
"pcb": true,
|
||||||
|
"css": ".keyborder { -webkit-filter: blur(5px); filter: blur(5px); } .keytop { -webkit-filter: blur(10px); } .keylabels { border: 1px solid black; }"
|
||||||
|
},
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": 3.5,
|
||||||
|
"c": "#a7d0db",
|
||||||
|
"fa": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"#\n3\nF3",
|
||||||
|
{
|
||||||
|
"x": 10.5,
|
||||||
|
"c": "#a7d0db",
|
||||||
|
"t": "#000000",
|
||||||
|
"a": 4,
|
||||||
|
"fa": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"*\n8\nF8"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 2.5,
|
||||||
|
"c": "#bfbad1",
|
||||||
|
"t": "#0d0d0b"
|
||||||
|
},
|
||||||
|
"@\n2\nF2",
|
||||||
|
{
|
||||||
|
"x": 1,
|
||||||
|
"c": "#7adabd",
|
||||||
|
"t": "#000000"
|
||||||
|
},
|
||||||
|
"$\n4\nF4",
|
||||||
|
{
|
||||||
|
"x": 8.5
|
||||||
|
},
|
||||||
|
"&\n7\nF7",
|
||||||
|
{
|
||||||
|
"x": 1,
|
||||||
|
"c": "#bfbad1",
|
||||||
|
"t": "#0d0d0b"
|
||||||
|
},
|
||||||
|
"(\n9\nF9"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 5.5,
|
||||||
|
"c": "#7adabd",
|
||||||
|
"t": "#000000"
|
||||||
|
},
|
||||||
|
"%\n5\nF5",
|
||||||
|
{
|
||||||
|
"c": "#f9cd31",
|
||||||
|
"a": 7,
|
||||||
|
"f": 2
|
||||||
|
},
|
||||||
|
"STENO",
|
||||||
|
{
|
||||||
|
"x": 4.5,
|
||||||
|
"f": 6
|
||||||
|
},
|
||||||
|
"<i class='mss mss-Unicode-Option-3'></i>",
|
||||||
|
{
|
||||||
|
"c": "#7adabd",
|
||||||
|
"a": 4,
|
||||||
|
"f": 3,
|
||||||
|
"fa": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"^\n6\nF6"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"c": "#ffb2d2",
|
||||||
|
"f": 3,
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"\n\n~\n`",
|
||||||
|
{
|
||||||
|
"t": "#0d0d0b"
|
||||||
|
},
|
||||||
|
"!\n1\nF1",
|
||||||
|
{
|
||||||
|
"x": 14.5
|
||||||
|
},
|
||||||
|
")\n0\nF10",
|
||||||
|
{
|
||||||
|
"a": 7,
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"F11"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.375,
|
||||||
|
"x": 3.5,
|
||||||
|
"c": "#a7d0db",
|
||||||
|
"t": "#000000",
|
||||||
|
"a": 4
|
||||||
|
},
|
||||||
|
">\n.",
|
||||||
|
{
|
||||||
|
"x": 10.5,
|
||||||
|
"a": 6
|
||||||
|
},
|
||||||
|
"C"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 2.5,
|
||||||
|
"c": "#bfbad1",
|
||||||
|
"t": "#0d0d0b",
|
||||||
|
"a": 4
|
||||||
|
},
|
||||||
|
"<\n,",
|
||||||
|
{
|
||||||
|
"x": 1,
|
||||||
|
"c": "#7adabd",
|
||||||
|
"t": "#000000",
|
||||||
|
"a": 6
|
||||||
|
},
|
||||||
|
"P",
|
||||||
|
{
|
||||||
|
"x": 8.5
|
||||||
|
},
|
||||||
|
"G",
|
||||||
|
{
|
||||||
|
"x": 1,
|
||||||
|
"c": "#bfbad1",
|
||||||
|
"t": "#0d0d0b"
|
||||||
|
},
|
||||||
|
"R"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 5.5,
|
||||||
|
"c": "#7adabd",
|
||||||
|
"t": "#000000"
|
||||||
|
},
|
||||||
|
"Y",
|
||||||
|
{
|
||||||
|
"c": "#93c9b7",
|
||||||
|
"a": 4,
|
||||||
|
"h": 1.5
|
||||||
|
},
|
||||||
|
"{\n[",
|
||||||
|
{
|
||||||
|
"x": 4.5,
|
||||||
|
"h": 1.5
|
||||||
|
},
|
||||||
|
"}\n]",
|
||||||
|
{
|
||||||
|
"c": "#7adabd",
|
||||||
|
"a": 6
|
||||||
|
},
|
||||||
|
"F"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"c": "#ffb07b",
|
||||||
|
"t": "#0d0d0b",
|
||||||
|
"f": 6,
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"<i class='fa fa-fast-backward'></i>\n\n<i class='fa fa-fast-forward'></i>",
|
||||||
|
{
|
||||||
|
"c": "#ffb2d2",
|
||||||
|
"a": 4,
|
||||||
|
"f": 3
|
||||||
|
},
|
||||||
|
"\"\n'",
|
||||||
|
{
|
||||||
|
"x": 14.5,
|
||||||
|
"a": 6
|
||||||
|
},
|
||||||
|
"L",
|
||||||
|
{
|
||||||
|
"a": 4,
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"|\n\\"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.375,
|
||||||
|
"x": 3.5,
|
||||||
|
"c": "#a7d0db",
|
||||||
|
"t": "#000000",
|
||||||
|
"a": 6
|
||||||
|
},
|
||||||
|
"E",
|
||||||
|
{
|
||||||
|
"x": 10.5
|
||||||
|
},
|
||||||
|
"T"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 2.5,
|
||||||
|
"c": "#bfbad1",
|
||||||
|
"t": "#0d0d0b"
|
||||||
|
},
|
||||||
|
"O",
|
||||||
|
{
|
||||||
|
"x": 1,
|
||||||
|
"c": "#7adabd",
|
||||||
|
"t": "#000000",
|
||||||
|
"n": true
|
||||||
|
},
|
||||||
|
"U",
|
||||||
|
{
|
||||||
|
"x": 8.5,
|
||||||
|
"n": true
|
||||||
|
},
|
||||||
|
"H",
|
||||||
|
{
|
||||||
|
"x": 1,
|
||||||
|
"c": "#bfbad1",
|
||||||
|
"t": "#0d0d0b"
|
||||||
|
},
|
||||||
|
"N"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 5.5,
|
||||||
|
"c": "#7adabd",
|
||||||
|
"t": "#000000"
|
||||||
|
},
|
||||||
|
"I",
|
||||||
|
{
|
||||||
|
"x": 6.5
|
||||||
|
},
|
||||||
|
"D"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"c": "#ffb2d2",
|
||||||
|
"t": "#0d0d0b",
|
||||||
|
"fa": [
|
||||||
|
6
|
||||||
|
],
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"<i class='fa fa-arrows'></i>\n\nTab",
|
||||||
|
{
|
||||||
|
"f": 3
|
||||||
|
},
|
||||||
|
"A",
|
||||||
|
{
|
||||||
|
"x": 14.5,
|
||||||
|
"f": 3
|
||||||
|
},
|
||||||
|
"S",
|
||||||
|
{
|
||||||
|
"a": 4,
|
||||||
|
"fa": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
6
|
||||||
|
],
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"+\n="
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.625,
|
||||||
|
"x": 6.5,
|
||||||
|
"c": "#93c9b7",
|
||||||
|
"t": "#000000",
|
||||||
|
"a": 7,
|
||||||
|
"h": 1.5
|
||||||
|
},
|
||||||
|
"(",
|
||||||
|
{
|
||||||
|
"x": 4.5,
|
||||||
|
"h": 1.5
|
||||||
|
},
|
||||||
|
")"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.75,
|
||||||
|
"x": 3.5,
|
||||||
|
"c": "#a7d0db",
|
||||||
|
"a": 6
|
||||||
|
},
|
||||||
|
"J",
|
||||||
|
{
|
||||||
|
"x": 10.5
|
||||||
|
},
|
||||||
|
"W"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 2.5,
|
||||||
|
"c": "#bfbad1",
|
||||||
|
"t": "#0d0d0b"
|
||||||
|
},
|
||||||
|
"Q",
|
||||||
|
{
|
||||||
|
"x": 1,
|
||||||
|
"c": "#7adabd",
|
||||||
|
"t": "#000000"
|
||||||
|
},
|
||||||
|
"K",
|
||||||
|
{
|
||||||
|
"x": 8.5
|
||||||
|
},
|
||||||
|
"M",
|
||||||
|
{
|
||||||
|
"x": 1,
|
||||||
|
"c": "#bfbad1",
|
||||||
|
"t": "#0d0d0b"
|
||||||
|
},
|
||||||
|
"V"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 5.5,
|
||||||
|
"c": "#7adabd",
|
||||||
|
"t": "#000000"
|
||||||
|
},
|
||||||
|
"X",
|
||||||
|
{
|
||||||
|
"x": 6.5
|
||||||
|
},
|
||||||
|
"B"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"c": "#ffb07b",
|
||||||
|
"f": 9,
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"\n\n<i class='kb kb-Multimedia-Play-Pause'></i>",
|
||||||
|
{
|
||||||
|
"c": "#ffb2d2",
|
||||||
|
"t": "#0d0d0b",
|
||||||
|
"a": 4,
|
||||||
|
"f": 3
|
||||||
|
},
|
||||||
|
"?\n/",
|
||||||
|
{
|
||||||
|
"x": 14.5,
|
||||||
|
"a": 6
|
||||||
|
},
|
||||||
|
"Z",
|
||||||
|
{
|
||||||
|
"c": "#ffb07b",
|
||||||
|
"t": "#000000",
|
||||||
|
"f": 9,
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"<i class='kb kb-Multimedia-Stop'></i>"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.375,
|
||||||
|
"x": 3.5,
|
||||||
|
"c": "#d9dae0",
|
||||||
|
"g": true,
|
||||||
|
"a": 7,
|
||||||
|
"f": 3
|
||||||
|
},
|
||||||
|
"",
|
||||||
|
{
|
||||||
|
"x": 10.5
|
||||||
|
},
|
||||||
|
""
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 2.5
|
||||||
|
},
|
||||||
|
"",
|
||||||
|
{
|
||||||
|
"x": 1,
|
||||||
|
"c": "#d4872a",
|
||||||
|
"g": false,
|
||||||
|
"a": 5
|
||||||
|
},
|
||||||
|
";\n:",
|
||||||
|
{
|
||||||
|
"x": 8.5
|
||||||
|
},
|
||||||
|
"_\n-",
|
||||||
|
{
|
||||||
|
"x": 1,
|
||||||
|
"c": "#d9dae0",
|
||||||
|
"g": true,
|
||||||
|
"a": 7
|
||||||
|
},
|
||||||
|
""
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.75,
|
||||||
|
"x": 0.5
|
||||||
|
},
|
||||||
|
"",
|
||||||
|
{},
|
||||||
|
"",
|
||||||
|
{
|
||||||
|
"x": 14.5
|
||||||
|
},
|
||||||
|
"",
|
||||||
|
{},
|
||||||
|
""
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"r": 30,
|
||||||
|
"rx": 6.5,
|
||||||
|
"ry": 4.25,
|
||||||
|
"y": -1,
|
||||||
|
"x": 1,
|
||||||
|
"c": "#f9cd31",
|
||||||
|
"g": false
|
||||||
|
},
|
||||||
|
"Alt",
|
||||||
|
{
|
||||||
|
"a": 4,
|
||||||
|
"fa": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
9
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"\n\n\n<i class='kb kb-logo-linux-debian fa-large'></i>"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"c": "#d4872a",
|
||||||
|
"a": 7,
|
||||||
|
"f": 9,
|
||||||
|
"h": 2
|
||||||
|
},
|
||||||
|
"<i class='kb kb-Unicode-BackSpace-DeleteLeft-Big'></i>",
|
||||||
|
{
|
||||||
|
"h": 2
|
||||||
|
},
|
||||||
|
"<i class='fa fa-angle-double-up'></i>",
|
||||||
|
{
|
||||||
|
"c": "#f9cd31",
|
||||||
|
"f": 3
|
||||||
|
},
|
||||||
|
"Ctrl"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": 2,
|
||||||
|
"c": "#e26757"
|
||||||
|
},
|
||||||
|
"ESC"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"r": -30,
|
||||||
|
"rx": 13,
|
||||||
|
"y": -1,
|
||||||
|
"x": -3,
|
||||||
|
"c": "#f9cd31",
|
||||||
|
"f": 2
|
||||||
|
},
|
||||||
|
"MEDIA",
|
||||||
|
{},
|
||||||
|
"1HAND"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": -3
|
||||||
|
},
|
||||||
|
"LEAD",
|
||||||
|
{
|
||||||
|
"c": "#d4872a",
|
||||||
|
"f": 9,
|
||||||
|
"h": 2
|
||||||
|
},
|
||||||
|
"<i class='kb kb-Return-2'></i>",
|
||||||
|
{
|
||||||
|
"f": 3,
|
||||||
|
"h": 2
|
||||||
|
},
|
||||||
|
"SPC"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": -3,
|
||||||
|
"c": "#f9cd31",
|
||||||
|
"f": 2
|
||||||
|
},
|
||||||
|
"HUN"
|
||||||
|
]
|
||||||
|
]
|
@ -0,0 +1,145 @@
|
|||||||
|
#! /usr/bin/env python
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import re
|
||||||
|
|
||||||
|
from math import floor
|
||||||
|
|
||||||
|
cr_coord_map = [
|
||||||
|
[
|
||||||
|
# Row 0
|
||||||
|
[ 4, 0], [ 4, 2], [ 2, 0], [ 1, 0], [ 2, 2], [ 3, 0], [ 3, 2],
|
||||||
|
[ 3, 4], [ 3, 6], [ 2, 4], [ 1, 2], [ 2, 6], [ 4, 4], [ 4, 6],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
# Row 1
|
||||||
|
[ 8, 0], [ 8, 2], [ 6, 0], [ 5, 0], [ 6, 2], [ 7, 0], [ 7, 2],
|
||||||
|
[ 7, 4], [ 7, 6], [ 6, 4], [ 5, 2], [ 6, 6], [ 8, 4], [ 8, 6],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
# Row 2
|
||||||
|
[12, 0], [12, 2], [10, 0], [ 9, 0], [10, 2], [11, 0], [ ],
|
||||||
|
[ ], [11, 2], [10, 4], [ 9, 2], [10, 6], [12, 4], [12, 6],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
# Row 3
|
||||||
|
[17, 0], [17, 2], [15, 0], [14, 0], [15, 2], [16, 0], [13, 0],
|
||||||
|
[13, 2], [16, 2], [15, 4], [14, 2], [15, 6], [17, 4], [17, 6],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
# Row 4
|
||||||
|
[20, 0], [20, 2], [19, 0], [18, 0], [19, 2], [], [], [], [],
|
||||||
|
[19, 4], [18, 2], [19, 6], [20, 4], [20, 6],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
# Row 5
|
||||||
|
[ ], [23, 0], [22, 2], [22, 0], [22, 4], [21, 0], [21, 2],
|
||||||
|
[24, 0], [24, 2], [25, 0], [25, 4], [25, 2], [26, 0], [ ],
|
||||||
|
],
|
||||||
|
]
|
||||||
|
|
||||||
|
def set_attr_at(j, b, n, attr, fn, val):
|
||||||
|
blk = j[b][n]
|
||||||
|
if attr in blk:
|
||||||
|
blk[attr] = fn(blk[attr], val)
|
||||||
|
else:
|
||||||
|
blk[attr] = fn(None, val)
|
||||||
|
|
||||||
|
def coord(col, row):
|
||||||
|
return cr_coord_map[row][col]
|
||||||
|
|
||||||
|
def set_attr(orig, new):
|
||||||
|
return new
|
||||||
|
|
||||||
|
def set_bg(j, (b, n), color):
|
||||||
|
set_attr_at(j, b, n, "c", set_attr, color)
|
||||||
|
#set_attr_at(j, b, n, "g", set_attr, False)
|
||||||
|
|
||||||
|
def _set_tap_info(o, count, cap):
|
||||||
|
ns = 4 - o.count ("\n")
|
||||||
|
return o + "\n" * ns + "%.02f%%" % (float(count) / float(cap) * 100)
|
||||||
|
|
||||||
|
def set_tap_info(j, (b, n), count, cap):
|
||||||
|
j[b][n + 1] = _set_tap_info (j[b][n + 1], count, cap)
|
||||||
|
|
||||||
|
def heatmap_color (v):
|
||||||
|
colors = [ [0.3, 0.3, 1], [0.3, 1, 0.3], [1, 1, 0.3], [1, 0.3, 0.3]]
|
||||||
|
fb = 0
|
||||||
|
if v <= 0:
|
||||||
|
idx1, idx2 = 0, 0
|
||||||
|
elif v >= 1:
|
||||||
|
idx1, idx2 = len(colors) - 1, len(colors) - 1
|
||||||
|
else:
|
||||||
|
val = v * (len(colors) - 1)
|
||||||
|
idx1 = int(floor(val))
|
||||||
|
idx2 = idx1 + 1
|
||||||
|
fb = val - float(idx1)
|
||||||
|
|
||||||
|
r = (colors[idx2][0] - colors[idx1][0]) * fb + colors[idx1][0]
|
||||||
|
g = (colors[idx2][1] - colors[idx1][1]) * fb + colors[idx1][1]
|
||||||
|
b = (colors[idx2][2] - colors[idx1][2]) * fb + colors[idx1][2]
|
||||||
|
|
||||||
|
r, g, b = [x * 255 for x in r, g, b]
|
||||||
|
return "#%02x%02x%02x" % (r, g, b)
|
||||||
|
|
||||||
|
# Load the keylog
|
||||||
|
def load_keylog(fname, restrict_row):
|
||||||
|
keylog = {}
|
||||||
|
total = 0
|
||||||
|
with open(fname, "r") as f:
|
||||||
|
lines = f.readlines()
|
||||||
|
for line in lines:
|
||||||
|
m = re.search ('KL: col=(\d+), row=(\d+)', line)
|
||||||
|
if not m:
|
||||||
|
continue
|
||||||
|
(c, r) = (int(m.group (2)), int(m.group (1)))
|
||||||
|
if restrict_row != None and r != int(restrict_row):
|
||||||
|
continue
|
||||||
|
if (c, r) in keylog:
|
||||||
|
keylog[(c, r)] = keylog[(c, r)] + 1
|
||||||
|
else:
|
||||||
|
keylog[(c, r)] = 1
|
||||||
|
total = total + 1
|
||||||
|
return total / 2, keylog
|
||||||
|
|
||||||
|
def l_flat(s):
|
||||||
|
f = s.split("\n")
|
||||||
|
return ", ".join (f)
|
||||||
|
|
||||||
|
def main(base_fn, log_fn, restrict_row = None):
|
||||||
|
|
||||||
|
with open(base_fn, "r") as f:
|
||||||
|
layout = json.load (f)
|
||||||
|
|
||||||
|
## Reset colors
|
||||||
|
for row in cr_coord_map:
|
||||||
|
for col in row:
|
||||||
|
if col != []:
|
||||||
|
set_bg (layout, col, "#d9dae0")
|
||||||
|
#set_attr_at (layout, col[0], col[1], "g", set_attr, True)
|
||||||
|
|
||||||
|
total, log = load_keylog (log_fn, restrict_row)
|
||||||
|
max_cnt = 0
|
||||||
|
for (c, r) in log:
|
||||||
|
max_cnt = max(max_cnt, log[(c, r)])
|
||||||
|
|
||||||
|
# Create the heatmap
|
||||||
|
for (c, r) in log:
|
||||||
|
coords = coord(c, r)
|
||||||
|
b, n = coords
|
||||||
|
cap = max_cnt
|
||||||
|
v = float(log[(c, r)]) / cap
|
||||||
|
print >> sys.stderr, "%s => %d/%d => %f = %s" % (l_flat(layout[b][n+1]), log[(c,r)], cap, v, heatmap_color(v))
|
||||||
|
set_bg (layout, coord(c, r), heatmap_color (v))
|
||||||
|
set_tap_info (layout, coord (c, r), log[(c, r)], total)
|
||||||
|
|
||||||
|
print json.dumps(layout)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
if len(sys.argv) < 3:
|
||||||
|
print """Log to Heatmap -- creates a heatmap out of keyboard logs
|
||||||
|
|
||||||
|
Usage: log-to-heatmap.py base-layout.json logfile [row] >layout.json"""
|
||||||
|
sys.exit (1)
|
||||||
|
main(*sys.argv[1:])
|
@ -0,0 +1,455 @@
|
|||||||
|
#include "ergodox_ez.h"
|
||||||
|
#include "led.h"
|
||||||
|
#include "debug.h"
|
||||||
|
#include "action_layer.h"
|
||||||
|
#include "action_util.h"
|
||||||
|
#include "mousekey.h"
|
||||||
|
|
||||||
|
#define BASE 0 // default layer
|
||||||
|
#define SYMB 1 // symbols layer
|
||||||
|
#define MDIA 2 // media layer
|
||||||
|
#define SPEC 3 // special layer
|
||||||
|
|
||||||
|
#define LCaps 10 // left caps-shift key
|
||||||
|
#define LSymb 11 // left symbol-shift key
|
||||||
|
#define LMdia 12 // left media-shift key
|
||||||
|
#define LSpec 13 // left special-shift key
|
||||||
|
#define RCaps 14 // right caps-shift key
|
||||||
|
#define RSymb 15 // right symbol-shift key
|
||||||
|
#define RMdia 16 // right media-shift key
|
||||||
|
#define RSpec 17 // right special-shift key
|
||||||
|
|
||||||
|
#define MUL 20 // mouse up left
|
||||||
|
#define MUR 21 // mouse up right
|
||||||
|
#define MDL 22 // mouse down left
|
||||||
|
#define MDR 23 // mouse down right
|
||||||
|
|
||||||
|
/*
|
||||||
|
* teckinesis layout for ErgoDox (EZ)
|
||||||
|
*
|
||||||
|
* Modifications from The Ordinary Layout v4 by Will Wolff-Myren willwm@gmail.com
|
||||||
|
* Modifications from default by Nicholas Keene ergodoxez@nicholaskeene.com
|
||||||
|
*
|
||||||
|
* No rights reserved. This software is in the public domain.
|
||||||
|
* Credit me if you are friendly but if you're a jerk don't bother.
|
||||||
|
*
|
||||||
|
* Details: readme.md
|
||||||
|
* https://github.com/willwm/qmk_firmware/tree/master/keyboard/ergodox_ez/keymaps/teckinesis
|
||||||
|
*/
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
/******* Base Layer ********************************************************************************************************
|
||||||
|
*
|
||||||
|
* ,------------------------------------------------------. ,------------------------------------------------------.
|
||||||
|
* | Special =+ | 1 | 2 | 3 | 4 | 5 | ESC | | ` | 6 | 7 | 8 | 9 | 0 | -_ Special |
|
||||||
|
* |------------+------+------+------+------+-------------| |------+------+------+------+------+------+------------|
|
||||||
|
* | Media Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | \| Media |
|
||||||
|
* |------------+------+------+------+------+------| | | |------+------+------+------+------+------------|
|
||||||
|
* | Symbol | A | S | D | F | G |------| |------| H | J | K | L | ; | '" Symbol |
|
||||||
|
* |------------+------+------+------+------+------|Shift | | Tab |------+------+------+------+------+------------|
|
||||||
|
* | Capitals | Z | X | C | V | B | -Tab | | | N | M | , | . | / | Capitals |
|
||||||
|
* `------------+------+------+------+------+-------------' `-------------+------+------+------+------+------------'
|
||||||
|
* | LCtrl |Meh/\ |Hypr//| LAlt | LGui | | RGui | RAlt |Hypr/[|Meh/] | RCtrl |
|
||||||
|
* `-----------------------------------' `-----------------------------------'
|
||||||
|
* ,-------------. ,-------------.
|
||||||
|
* | Home | End | | Left | Right|
|
||||||
|
* ,------|------|------| |------+------+------.
|
||||||
|
* | | | PgUp | | Up | | |
|
||||||
|
* |Backsp| Del |------| |------| Enter| Space|
|
||||||
|
* | | | PgDn | | Down | | |
|
||||||
|
* `--------------------' `--------------------'
|
||||||
|
*/
|
||||||
|
[BASE] = KEYMAP(
|
||||||
|
// left hand
|
||||||
|
F(LSpec),KC_1,KC_2,KC_3 ,KC_4 ,KC_5 ,KC_ESC
|
||||||
|
,F(LMdia) ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_LBRC
|
||||||
|
,M(LSymb) ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G
|
||||||
|
,M(LCaps) ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,LSFT(KC_TAB)
|
||||||
|
,KC_LCTL,MEH_T(KC_BSLS),ALL_T(KC_SLSH),KC_LALT,KC_LGUI
|
||||||
|
,KC_HOME,KC_END
|
||||||
|
,KC_PGUP
|
||||||
|
,KC_BSPC,KC_DEL ,KC_PGDN
|
||||||
|
// right hand
|
||||||
|
,KC_GRV ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,F(RSpec)
|
||||||
|
,KC_RBRC ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,F(RMdia)
|
||||||
|
,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,F(RSymb)
|
||||||
|
,KC_TAB ,KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH ,M(RCaps)
|
||||||
|
,KC_RGUI,KC_RALT,ALL_T(KC_LBRC),MEH_T(KC_RBRC),KC_RCTL
|
||||||
|
,KC_LEFT ,KC_RGHT
|
||||||
|
,KC_UP
|
||||||
|
,KC_DOWN ,KC_ENT ,KC_SPC
|
||||||
|
),
|
||||||
|
|
||||||
|
/******* Symbols Layer *****************************************************************************************************
|
||||||
|
*
|
||||||
|
* ,-----------------------------------------------------. ,-----------------------------------------------------.
|
||||||
|
* | | F1 | F2 | F3 | F4 | F5 | Esc | | - | F6 | F7 | F8 | F9 | F10 | |
|
||||||
|
* |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
|
||||||
|
* | | ! | @ | { | } | & | < | | > | | | 7 | 8 | 9 | / | |
|
||||||
|
* |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
|
||||||
|
* | | # | $ | ( | ) | ` |------| |------| / | 4 | 5 | 6 | * | |
|
||||||
|
* |-----------+------+------+------+------+------| Tab | | Shift|------+------+------+------+------+-----------|
|
||||||
|
* | | % | ^ | [ | ] | ~ | | | -Tab| \ | 1 | 2 | 3 | - | |
|
||||||
|
* `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
|
||||||
|
* | LCtrl | Meh |Hyper | LAlt | LGui | |RGui/0|RAlt/.|Hypr/=|Meh/+ |RCtrl/Ent|
|
||||||
|
* `-----------------------------------' `-------------------------------------'
|
||||||
|
* ,-------------. ,-------------.
|
||||||
|
* | Left | Right| | Home | End |
|
||||||
|
* ,------|------|------| |------+------+------.
|
||||||
|
* | | | Up | | PgUp | | |
|
||||||
|
* |Space |Enter |------| |------|BackSp| Del |
|
||||||
|
* | | | Down | | PgDn | | |
|
||||||
|
* `--------------------' `--------------------'
|
||||||
|
*/
|
||||||
|
[SYMB] = KEYMAP(
|
||||||
|
// left hand
|
||||||
|
KC_TRNS ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_ESC
|
||||||
|
,KC_TRNS ,KC_EXLM ,KC_AT ,KC_LCBR ,KC_RCBR ,KC_AMPR ,LSFT(KC_COMM)
|
||||||
|
,KC_TRNS ,KC_HASH ,KC_DLR ,KC_LPRN ,KC_RPRN ,KC_GRV
|
||||||
|
,KC_TRNS ,KC_PERC ,KC_CIRC ,KC_LBRC ,KC_RBRC ,KC_TILD ,KC_TAB
|
||||||
|
,KC_LCTL ,KC_MEH ,KC_HYPR ,KC_LALT ,KC_LGUI
|
||||||
|
,KC_LEFT ,KC_RGHT
|
||||||
|
,KC_UP
|
||||||
|
,KC_SPC ,KC_ENT ,KC_DOWN
|
||||||
|
// right hand
|
||||||
|
,KC_MINS ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_TRNS
|
||||||
|
,LSFT(KC_DOT),KC_PIPE ,KC_7 ,KC_8 ,KC_9 ,KC_SLSH ,KC_TRNS
|
||||||
|
,KC_SLSH ,KC_4 ,KC_5 ,KC_6 ,KC_ASTR ,KC_TRNS
|
||||||
|
,LSFT(KC_TAB),KC_BSLS ,KC_1 ,KC_2 ,KC_3 ,KC_MINS ,KC_TRNS
|
||||||
|
,GUI_T(KC_0),ALT_T(KC_DOT),ALL_T(KC_EQL),MEH_T(KC_PLUS),CTL_T(KC_ENT)
|
||||||
|
,KC_HOME ,KC_END
|
||||||
|
,KC_PGUP
|
||||||
|
,KC_PGDN ,KC_BSPC ,KC_DEL
|
||||||
|
),
|
||||||
|
|
||||||
|
/******* Media Layer *******************************************************************************************************
|
||||||
|
*
|
||||||
|
* ,---------------------------------------------------------------. ,---------------------------------------------------------------.
|
||||||
|
* | | F11 | F12 | F13 | F14 | F15 | Esc | | | F16 | F17 | F18 | F19 | F20 | |
|
||||||
|
* |------+---------+---------+---------+---------+----------------| |------+---------+---------+---------+---------+---------+------|
|
||||||
|
* | | |MouseUpLf|Mouse Up |MouseUpRg|Volume Up|Scroll| |Scroll|PrintScrn| Home | Up | PgUp | | |
|
||||||
|
* |------+---------+---------+---------+---------+---------| Up | | Up |---------+---------+---------+---------+---------+------|
|
||||||
|
* | | |MouseLeft|MouseDown|MouseRght|Volume Dn|------| |------| Num Lock| Left | Down | Right | | |
|
||||||
|
* |------+---------+---------+---------+---------+---------|Scroll| |Scroll|---------+---------+---------+---------+---------+------|
|
||||||
|
* | | |MouseDnLf|MouseDown|MouseDnRg| Mute | Down | | Down | | End | Down | PgDn | | |
|
||||||
|
* `------+---------+---------+---------+---------+----------------' `----------------+---------+---------+---------+---------+------'
|
||||||
|
* |LCtrl| Meh | MClick | LClick | R Click| |Cmd/Insrt|Optn/Del | Hyper | Meh |RCtrl|
|
||||||
|
* `---------------------------------------------' `---------------------------------------------'
|
||||||
|
* ,-------------. ,-------------.
|
||||||
|
* | Stop |Refrsh| | Prev | Next |
|
||||||
|
* ,------|------|------| |------+------+------.
|
||||||
|
* |Brwser|Brwser|Search| |VolUp | | |
|
||||||
|
* |Back | Fwd |------| |------| Stop | Play-|
|
||||||
|
* | | | Home | |VolDn | | Pause|
|
||||||
|
* `--------------------' `--------------------'
|
||||||
|
*/
|
||||||
|
[MDIA] = KEYMAP(
|
||||||
|
// left hand
|
||||||
|
KC_TRNS ,KC_F11 ,KC_F12 ,KC_F13 ,KC_F14 ,KC_F15 ,KC_ESC
|
||||||
|
,KC_TRNS ,KC_NO ,M(MUL) ,KC_MS_U ,M(MUR) ,KC_VOLU ,KC_WH_U
|
||||||
|
,KC_TRNS ,KC_NO ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_VOLD
|
||||||
|
,KC_TRNS ,KC_NO ,M(MDL) ,KC_MS_D ,M(MDR) ,KC_MUTE ,KC_WH_D
|
||||||
|
,KC_LCTL ,KC_MEH ,KC_BTN3 ,KC_BTN1 ,KC_BTN2
|
||||||
|
,KC_WSTP ,KC_WREF
|
||||||
|
,KC_WSCH
|
||||||
|
,KC_WBAK ,KC_NO ,KC_WHOM
|
||||||
|
// right hand
|
||||||
|
,KC_NO ,KC_F16 ,KC_F17 ,KC_F18 ,KC_F19 ,KC_F20 ,KC_TRNS
|
||||||
|
,KC_WH_U ,KC_PSCR ,KC_HOME ,KC_UP ,KC_PGUP ,KC_NO ,KC_TRNS
|
||||||
|
,KC_NLCK ,KC_LEFT ,KC_DOWN ,KC_RIGHT,KC_NO ,KC_TRNS
|
||||||
|
,KC_WH_D ,KC_NO ,KC_END ,KC_DOWN ,KC_PGDN ,KC_NO ,KC_TRNS
|
||||||
|
,GUI_T(KC_INS),ALT_T(KC_DEL),KC_HYPR ,KC_MEH ,KC_RCTL
|
||||||
|
,KC_MPRV ,KC_MNXT
|
||||||
|
,KC_VOLU
|
||||||
|
,KC_VOLD ,KC_MSTP ,KC_MPLY
|
||||||
|
),
|
||||||
|
|
||||||
|
/******* Special Layer *****************************************************************************************************
|
||||||
|
*
|
||||||
|
* ,-----------------------------------------------------. ,-----------------------------------------------------.
|
||||||
|
* | | Esc | | | | | | | | | | | | Bspc | |
|
||||||
|
* |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
|
||||||
|
* | | | | | | | | | | | | | | | |
|
||||||
|
* |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
|
||||||
|
* | | | | | | |------| |------| | | | | | |
|
||||||
|
* |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
|
||||||
|
* | | | | | | | | | | | | | | | RShift |
|
||||||
|
* `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
|
||||||
|
* | | | | | | | | | | | |
|
||||||
|
* `----------------------------------' `----------------------------------'
|
||||||
|
* ,-------------. ,-------------.
|
||||||
|
* | | | | | |
|
||||||
|
* ,------|------|------| |------+------+------.
|
||||||
|
* | | | | | | | |
|
||||||
|
* | | |------| |------| | |
|
||||||
|
* | | | | | | | |
|
||||||
|
* `--------------------' `--------------------'
|
||||||
|
*/
|
||||||
|
[SPEC] = KEYMAP(
|
||||||
|
// left hand
|
||||||
|
KC_TRNS ,KC_ESC ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
|
||||||
|
,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
|
||||||
|
,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
|
||||||
|
,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
|
||||||
|
,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
|
||||||
|
|
||||||
|
,KC_TRNS ,KC_TRNS
|
||||||
|
,KC_TRNS
|
||||||
|
,KC_TRNS,KC_TRNS ,KC_TRNS
|
||||||
|
// right hand
|
||||||
|
,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_BSPC ,KC_TRNS
|
||||||
|
,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
|
||||||
|
,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
|
||||||
|
,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_RSFT
|
||||||
|
,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
|
||||||
|
|
||||||
|
,KC_TRNS ,KC_TRNS
|
||||||
|
,KC_TRNS
|
||||||
|
,KC_TRNS ,KC_TRNS ,KC_TRNS
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM fn_actions[] = {
|
||||||
|
// the faux shift keys are implemented as macro taps
|
||||||
|
[LCaps] = ACTION_MACRO_TAP(LCaps)
|
||||||
|
,[LSymb] = ACTION_MACRO_TAP(LSymb)
|
||||||
|
,[LMdia] = ACTION_MACRO_TAP(LMdia)
|
||||||
|
,[LSpec] = ACTION_MACRO_TAP(LSpec)
|
||||||
|
,[RCaps] = ACTION_MACRO_TAP(RCaps)
|
||||||
|
,[RSymb] = ACTION_MACRO_TAP(RSymb)
|
||||||
|
,[RMdia] = ACTION_MACRO_TAP(RMdia)
|
||||||
|
,[RSpec] = ACTION_MACRO_TAP(RSpec)
|
||||||
|
};
|
||||||
|
|
||||||
|
uint16_t caps_shift = 0;
|
||||||
|
uint16_t symb_shift = 0;
|
||||||
|
uint16_t mdia_shift = 0;
|
||||||
|
|
||||||
|
bool symb_lock = false;
|
||||||
|
bool mdia_lock = false;
|
||||||
|
|
||||||
|
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||||
|
{
|
||||||
|
switch(id) {
|
||||||
|
// There are two shift keys for each layer so we increment a layer_shift var when one
|
||||||
|
// is pressed and decrement when one is released. If both are pressed at the same time
|
||||||
|
// then the layer is locked (or unlocked). The shift counts are bound between 0 and 2
|
||||||
|
// only because sometimes rapid pressing led to irregular events; this way the states
|
||||||
|
// are self healing during use.
|
||||||
|
|
||||||
|
case LCaps: // both caps-shift keys trigger Left Shift
|
||||||
|
case RCaps: // so they don't interfere with the magic combo
|
||||||
|
if (record->event.pressed && !record->tap.count) {
|
||||||
|
if(++caps_shift > 2) caps_shift = 2;
|
||||||
|
if(caps_shift == 2) {
|
||||||
|
register_code(KC_CAPS);
|
||||||
|
unregister_code(KC_CAPS);
|
||||||
|
} else if(caps_shift == 1) {
|
||||||
|
register_code(KC_LSFT);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if(--caps_shift < 0) caps_shift = 0;
|
||||||
|
if(caps_shift == 0) unregister_code(KC_LSFT);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LSymb:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
if(++symb_shift > 2) symb_shift = 2;
|
||||||
|
if(symb_shift == 2) {
|
||||||
|
symb_lock = !symb_lock;
|
||||||
|
} else if(symb_shift == 1) {
|
||||||
|
layer_on(SYMB);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if(--symb_shift < 0) symb_shift = 0;
|
||||||
|
if((symb_shift == 0) && (!symb_lock)) layer_off(SYMB);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LMdia:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
if (record->tap.count && (!mdia_shift) && (!mdia_lock)) {
|
||||||
|
register_code(KC_TAB);
|
||||||
|
} else {
|
||||||
|
if(++mdia_shift > 2) mdia_shift = 2;
|
||||||
|
if(mdia_shift == 2) {
|
||||||
|
mdia_lock = !mdia_lock;
|
||||||
|
} else if(mdia_shift == 1) {
|
||||||
|
layer_on(MDIA);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if(record->tap.count && (!mdia_shift) && (!mdia_lock)) {
|
||||||
|
unregister_code(KC_TAB);
|
||||||
|
} else {
|
||||||
|
if(--mdia_shift < 0) mdia_shift = 0;
|
||||||
|
if((!mdia_shift) && (!mdia_lock)) layer_off(MDIA);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LSpec:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
if (record->tap.count && !record->tap.interrupted) {
|
||||||
|
register_code(KC_EQL);
|
||||||
|
} else {
|
||||||
|
layer_on(SPEC);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if(record->tap.count && !record->tap.interrupted) {
|
||||||
|
unregister_code(KC_EQL);
|
||||||
|
} else {
|
||||||
|
layer_off(SPEC);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case RSymb:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
if (record->tap.count && (!symb_shift) && (!symb_lock)) {
|
||||||
|
register_code(KC_QUOT);
|
||||||
|
} else {
|
||||||
|
if(++symb_shift > 2) symb_shift = 2;
|
||||||
|
if(symb_shift == 2) {
|
||||||
|
symb_lock = !symb_lock;
|
||||||
|
} else if(symb_shift == 1) {
|
||||||
|
layer_on(SYMB);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if(record->tap.count && symb_shift == 0) {
|
||||||
|
unregister_code(KC_QUOT);
|
||||||
|
} else {
|
||||||
|
if(--symb_shift < 0) symb_shift = 0;
|
||||||
|
if((!symb_shift) && (!symb_lock)) layer_off(SYMB);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case RMdia:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
if (record->tap.count && (!mdia_shift) && (!mdia_lock)) {
|
||||||
|
register_code(KC_BSLS);
|
||||||
|
} else {
|
||||||
|
if(++mdia_shift > 2) mdia_shift = 2;
|
||||||
|
if(mdia_shift == 2) {
|
||||||
|
mdia_lock = !mdia_lock;
|
||||||
|
} else if(mdia_shift == 1) {
|
||||||
|
layer_on(MDIA);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if(record->tap.count && (!mdia_shift) && (!mdia_lock)) {
|
||||||
|
unregister_code(KC_BSLS);
|
||||||
|
} else {
|
||||||
|
if(--mdia_shift < 0) mdia_shift = 0;
|
||||||
|
if((!mdia_shift) && (!mdia_lock)) layer_off(MDIA);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case RSpec:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
if (record->tap.count && !record->tap.interrupted) {
|
||||||
|
register_code(KC_MINS);
|
||||||
|
} else {
|
||||||
|
layer_on(SPEC);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if(record->tap.count && !record->tap.interrupted) {
|
||||||
|
unregister_code(KC_MINS);
|
||||||
|
} else {
|
||||||
|
layer_off(SPEC);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
// mouse diagonals
|
||||||
|
|
||||||
|
case MUL: // mouse up left
|
||||||
|
if (record->event.pressed) {
|
||||||
|
mousekey_on(KC_MS_UP);
|
||||||
|
mousekey_on(KC_MS_LEFT);
|
||||||
|
mousekey_send();
|
||||||
|
} else {
|
||||||
|
mousekey_off(KC_MS_UP);
|
||||||
|
mousekey_off(KC_MS_LEFT);
|
||||||
|
mousekey_send();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MUR: // mouse up right
|
||||||
|
if (record->event.pressed) {
|
||||||
|
mousekey_on(KC_MS_UP);
|
||||||
|
mousekey_on(KC_MS_RIGHT);
|
||||||
|
mousekey_send();
|
||||||
|
} else {
|
||||||
|
mousekey_off(KC_MS_UP);
|
||||||
|
mousekey_off(KC_MS_RIGHT);
|
||||||
|
mousekey_send();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MDL: // mouse down left
|
||||||
|
if (record->event.pressed) {
|
||||||
|
mousekey_on(KC_MS_DOWN);
|
||||||
|
mousekey_on(KC_MS_LEFT);
|
||||||
|
mousekey_send();
|
||||||
|
} else {
|
||||||
|
mousekey_off(KC_MS_DOWN);
|
||||||
|
mousekey_off(KC_MS_LEFT);
|
||||||
|
mousekey_send();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MDR: // mouse down right
|
||||||
|
if (record->event.pressed) {
|
||||||
|
mousekey_on(KC_MS_DOWN);
|
||||||
|
mousekey_on(KC_MS_RIGHT);
|
||||||
|
mousekey_send();
|
||||||
|
} else {
|
||||||
|
mousekey_off(KC_MS_DOWN);
|
||||||
|
mousekey_off(KC_MS_RIGHT);
|
||||||
|
mousekey_send();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
// none
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return MACRO_NONE;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Runs just one time when the keyboard initializes.
|
||||||
|
void matrix_init_user(void) {
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
// Runs constantly in the background, in a loop.
|
||||||
|
void matrix_scan_user(void) {
|
||||||
|
// shift or caps lock turns on red light
|
||||||
|
if(caps_shift || (keyboard_report->mods & MOD_BIT(KC_RSFT)) || (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK))) {
|
||||||
|
ergodox_right_led_1_on();
|
||||||
|
} else {
|
||||||
|
ergodox_right_led_1_off();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Symbol layer turns on green light
|
||||||
|
if(layer_state & (1UL<<SYMB)) {
|
||||||
|
ergodox_right_led_2_on();
|
||||||
|
} else {
|
||||||
|
ergodox_right_led_2_off();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Media layer turns on blue light
|
||||||
|
if(layer_state & (1UL<<MDIA)) {
|
||||||
|
ergodox_right_led_3_on();
|
||||||
|
} else {
|
||||||
|
ergodox_right_led_3_off();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
After Width: | Height: | Size: 62 KiB |
@ -0,0 +1,27 @@
|
|||||||
|
[{x:3.5,a:7},"",{x:10.5},""],
|
||||||
|
[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
|
||||||
|
[{y:-0.875,x:5.5},"",{c:"#ff4444",a:4},"Esc",{x:4.5,c:"#cccccc",a:7},"",""],
|
||||||
|
[{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"],
|
||||||
|
[{y:-0.375,x:3.5,c:"#cccccc",t:"#000000",a:7},"",{x:10.5},""],
|
||||||
|
[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
|
||||||
|
[{y:-0.875,x:5.5},"",{h:1.5},"",{x:4.5,h:1.5},"",""],
|
||||||
|
[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""],
|
||||||
|
[{y:-0.375,x:3.5},"",{x:10.5},""],
|
||||||
|
[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
|
||||||
|
[{y:-0.875,x:5.5},"",{x:6.5},""],
|
||||||
|
[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""],
|
||||||
|
[{y:-0.625,x:6.5,h:1.5},"",{x:4.5,h:1.5},""],
|
||||||
|
[{y:-0.75,x:3.5},"",{x:10.5},""],
|
||||||
|
[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
|
||||||
|
[{y:-0.875,x:5.5},"",{x:6.5},""],
|
||||||
|
[{y:-0.875,w:1.5},"","",{x:14.5},"",{c:"#2277ff",w:1.5},"RShift"],
|
||||||
|
[{y:-0.375,x:3.5,c:"#cccccc"},"",{x:10.5},""],
|
||||||
|
[{y:-0.875,x:2.5},"",{x:1},"",{x:8.5},"",{x:1},""],
|
||||||
|
[{y:-0.75,x:0.5},"","",{x:14.5},"",""],
|
||||||
|
[{r:30,rx:6.5,ry:4.25,y:-1,x:1},"",""],
|
||||||
|
[{h:2},"",{h:2},"",""],
|
||||||
|
[{x:2},""],
|
||||||
|
[{r:-30,rx:13,y:-1,x:-3},"",""],
|
||||||
|
[{x:-3},"",{h:2},"",{h:2},""],
|
||||||
|
[{x:-3},""]
|
||||||
|
|
@ -0,0 +1,45 @@
|
|||||||
|
# teckinesis Layout
|
||||||
|
|
||||||
|
*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)*
|
||||||
|
|
||||||
|
I love "The Ordinary Layout", but I still use a [TECK](https://www.trulyergonomic.com/store/index.php)
|
||||||
|
at the office, and I found the transition back and forth to be a bit more difficult than I expected.
|
||||||
|
|
||||||
|
This layout consists of only slight changes to "The Ordinary Layout" based on the layouts of the
|
||||||
|
[(original) TECK Model 209](https://www.trulyergonomic.com/store/layout-designer--configurator--reprogrammable--truly-ergonomic-mechanical-keyboard/#KTo7PD0+P0BBQkNERUw5394rNR4fICEi4yMkJSYnLS4xOBQaCBUXTBwYDBITLzDhBBYHCQorCw0ODzPl4B0bBhkFKhEQNjc05OPiSktOTSwoLFBSUU/mZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX2BhAFZXAAAAAAAAAAAAXF1eVAAAAAAAAAAAAABZWltVAAAAAAAAAAAAYgBjAAAAAAAAAAAAWFcAAAAAAACTAQAMAiMBAAwBigEADAIhAQAMAZQBAAwBkgEADAGDAQAMALYBAAwAzQEADAC1AQAMAOIBAAwA6gEADADpAQAMALhJAEYAAAAAAEitR64AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACk6Ozw9Pj9AQUJDREVMOd/eKzUeHyAhIuMjJCUmJy0uMTgUGggVF0wcGAwSEy8w4QQWBwkKKwsNDg8z5eMdGwYZBSoREDY3NOfg4kpLTk0sKCxQUlFP5uQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF9gYQBWVwAAAAAAAAAAAFxdXlQAAAAAAAAAAAAAWVpbVQAAAAAAAAAAAGIAYwAAAAAAAAAAAFhXAAAAAAAAkwEADAIjAQAMAYoBAAwCIQEADAGUAQAMAZIBAAwBgwEADAC2AQAMAM0BAAwAtQEADADiAQAMAOoBAAwA6QEADAC4SQBGAAAAAABIrUeuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=) and
|
||||||
|
the [Kinesis Advantage](http://www.kinesis-ergo.com/wp-content/uploads/2013/06/advantage_layout_win.pdf)
|
||||||
|
|
||||||
|
## The Base Layout ##
|
||||||
|
|
||||||
|
[teckinesis (Base Layer)](http://www.keyboard-layout-editor.com/#/gists/befd4c5800d92114aa9e50d4f7c0dfb0)
|
||||||
|
![teckinesis base layout](teckinesis-base.png)
|
||||||
|
|
||||||
|
### Changes from The Ordinary Layout ###
|
||||||
|
|
||||||
|
* Moved KC_MINS from the key left of the 6 to the RSpec key.
|
||||||
|
* Moved KC_EQL from RSpec to LSpec.
|
||||||
|
* Moved KC_GRV from LSpec to the key left of the 6.
|
||||||
|
* Mdded KC_BSLS to the left Meh key.
|
||||||
|
* Added KC_SLSH to the left Hyper key.
|
||||||
|
* Added KC_LBRC to the right Hyper key.
|
||||||
|
* Added KC_RBRC to the right Meh key.
|
||||||
|
|
||||||
|
## The Symbols Layer ##
|
||||||
|
|
||||||
|
[teckinesis (Symbols Layer)](http://www.keyboard-layout-editor.com/#/gists/e6ddc4e9e0d194b3e52ac0616238ab61)
|
||||||
|
![teckinesis symbols layout](teckinesis-symbol.png)
|
||||||
|
|
||||||
|
### Changes from The Ordinary Layout ###
|
||||||
|
|
||||||
|
* None.
|
||||||
|
|
||||||
|
## The Media Layer ##
|
||||||
|
|
||||||
|
[teckinesis (Media Layer)](http://www.keyboard-layout-editor.com/#/gists/41ff65e6a7c490211fd6702fb34d9908)
|
||||||
|
![teckinesis media layout](teckinesis-media.png)
|
||||||
|
|
||||||
|
### Changes from The Ordinary Layout ###
|
||||||
|
|
||||||
|
* Removed Power, Sleep, Mail, My Computer keys.
|
||||||
|
(I kept hitting these while using the mouse/cursor. =P)
|
||||||
|
|
@ -0,0 +1,434 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "teckinesis (Base Layer)",
|
||||||
|
"author": "Will Wolff-Myren",
|
||||||
|
"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",
|
||||||
|
"switchMount": "cherry",
|
||||||
|
"switchBrand": "gateron",
|
||||||
|
"switchType": "KS-3-Tea"
|
||||||
|
},
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": 3.5
|
||||||
|
},
|
||||||
|
"#\n3",
|
||||||
|
{
|
||||||
|
"x": 10.5
|
||||||
|
},
|
||||||
|
"*\n8"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 2.5
|
||||||
|
},
|
||||||
|
"@\n2",
|
||||||
|
{
|
||||||
|
"x": 1
|
||||||
|
},
|
||||||
|
"$\n4",
|
||||||
|
{
|
||||||
|
"x": 8.5
|
||||||
|
},
|
||||||
|
"&\n7",
|
||||||
|
{
|
||||||
|
"x": 1
|
||||||
|
},
|
||||||
|
"(\n9"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 5.5
|
||||||
|
},
|
||||||
|
"%\n5",
|
||||||
|
{
|
||||||
|
"c": "#ff4444"
|
||||||
|
},
|
||||||
|
"Esc",
|
||||||
|
{
|
||||||
|
"x": 4.5,
|
||||||
|
"c": "#cccccc"
|
||||||
|
},
|
||||||
|
"~\n`",
|
||||||
|
"^\n6"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"c": "#2277ff",
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"Special\n\n+\n\n\n\nShift\n=",
|
||||||
|
{
|
||||||
|
"c": "#cccccc"
|
||||||
|
},
|
||||||
|
"!\n1",
|
||||||
|
{
|
||||||
|
"x": 14.5
|
||||||
|
},
|
||||||
|
")\n0",
|
||||||
|
{
|
||||||
|
"c": "#2277ff",
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"_\n\nSpecial\n\n\n\n-\nShift"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.375,
|
||||||
|
"x": 3.5,
|
||||||
|
"c": "#cccccc"
|
||||||
|
},
|
||||||
|
"E",
|
||||||
|
{
|
||||||
|
"x": 10.5
|
||||||
|
},
|
||||||
|
"I"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 2.5
|
||||||
|
},
|
||||||
|
"W",
|
||||||
|
{
|
||||||
|
"x": 1
|
||||||
|
},
|
||||||
|
"R",
|
||||||
|
{
|
||||||
|
"x": 8.5
|
||||||
|
},
|
||||||
|
"U",
|
||||||
|
{
|
||||||
|
"x": 1
|
||||||
|
},
|
||||||
|
"O"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 5.5
|
||||||
|
},
|
||||||
|
"T",
|
||||||
|
{
|
||||||
|
"h": 1.5
|
||||||
|
},
|
||||||
|
"{\n\n\n\n\n\n[",
|
||||||
|
{
|
||||||
|
"x": 4.5,
|
||||||
|
"h": 1.5
|
||||||
|
},
|
||||||
|
"}\n\n\n\n\n\n]",
|
||||||
|
"Y"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"c": "#2277ff",
|
||||||
|
"fa": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
4
|
||||||
|
],
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"Media\n\n<i class='kb kb-Line-Start-End'></i>\n\n\n\nShift",
|
||||||
|
{
|
||||||
|
"c": "#cccccc"
|
||||||
|
},
|
||||||
|
"Q",
|
||||||
|
{
|
||||||
|
"x": 14.5
|
||||||
|
},
|
||||||
|
"P",
|
||||||
|
{
|
||||||
|
"c": "#2277ff",
|
||||||
|
"f": 3,
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"|\n\\\nMedia\n\n\n\n\nShift"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.375,
|
||||||
|
"x": 3.5,
|
||||||
|
"c": "#cccccc"
|
||||||
|
},
|
||||||
|
"D",
|
||||||
|
{
|
||||||
|
"x": 10.5
|
||||||
|
},
|
||||||
|
"K"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 2.5
|
||||||
|
},
|
||||||
|
"S",
|
||||||
|
{
|
||||||
|
"x": 1
|
||||||
|
},
|
||||||
|
"F",
|
||||||
|
{
|
||||||
|
"x": 8.5
|
||||||
|
},
|
||||||
|
"J",
|
||||||
|
{
|
||||||
|
"x": 1
|
||||||
|
},
|
||||||
|
"L"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 5.5
|
||||||
|
},
|
||||||
|
"G",
|
||||||
|
{
|
||||||
|
"x": 6.5
|
||||||
|
},
|
||||||
|
"H"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"c": "#2277ff",
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"Symbols\n\n\n\n\n\nShift",
|
||||||
|
{
|
||||||
|
"c": "#cccccc"
|
||||||
|
},
|
||||||
|
"A",
|
||||||
|
{
|
||||||
|
"x": 14.5
|
||||||
|
},
|
||||||
|
":\n;",
|
||||||
|
{
|
||||||
|
"c": "#2277ff",
|
||||||
|
"f": 3,
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"\"\n'\nSymbols\n\n\n\n\nShift"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.625,
|
||||||
|
"x": 6.5,
|
||||||
|
"c": "#54d6de",
|
||||||
|
"fa": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"h": 1.5
|
||||||
|
},
|
||||||
|
"< Tab\n\n\nShift Tab",
|
||||||
|
{
|
||||||
|
"x": 4.5,
|
||||||
|
"h": 1.5
|
||||||
|
},
|
||||||
|
"Tab >\n\n\nTab"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.75,
|
||||||
|
"x": 3.5,
|
||||||
|
"c": "#cccccc"
|
||||||
|
},
|
||||||
|
"C",
|
||||||
|
{
|
||||||
|
"x": 10.5
|
||||||
|
},
|
||||||
|
"<\n,"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 2.5
|
||||||
|
},
|
||||||
|
"X",
|
||||||
|
{
|
||||||
|
"x": 1
|
||||||
|
},
|
||||||
|
"V",
|
||||||
|
{
|
||||||
|
"x": 8.5
|
||||||
|
},
|
||||||
|
"M",
|
||||||
|
{
|
||||||
|
"x": 1
|
||||||
|
},
|
||||||
|
">\n."
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 5.5
|
||||||
|
},
|
||||||
|
"B",
|
||||||
|
{
|
||||||
|
"x": 6.5
|
||||||
|
},
|
||||||
|
"N"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"c": "#2277ff",
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"Capitals\n\n\n\n\n\nShift",
|
||||||
|
{
|
||||||
|
"c": "#cccccc"
|
||||||
|
},
|
||||||
|
"Z",
|
||||||
|
{
|
||||||
|
"x": 14.5
|
||||||
|
},
|
||||||
|
"?\n/",
|
||||||
|
{
|
||||||
|
"c": "#2277ff",
|
||||||
|
"f": 3,
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"\n\nCapitals\n\n\n\n\nShift"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.375,
|
||||||
|
"x": 3.5,
|
||||||
|
"c": "#77aaff",
|
||||||
|
"fa": [
|
||||||
|
5,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"<i class='mss mss-Unicode-Option-3'></i>\n\n\nLAlt",
|
||||||
|
{
|
||||||
|
"x": 10.5
|
||||||
|
},
|
||||||
|
"<i class='mss mss-Unicode-Option-3'></i>\n\n\nRAlt"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 2.5,
|
||||||
|
"fa": [
|
||||||
|
5,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"\nHyper\n?\n/",
|
||||||
|
{
|
||||||
|
"x": 1,
|
||||||
|
"fa": [
|
||||||
|
5,
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"<i class='mss mss-Unicode-Command-3'></i>\n\n\nSuper",
|
||||||
|
{
|
||||||
|
"x": 8.5
|
||||||
|
},
|
||||||
|
"<i class='mss mss-Unicode-Command-3'></i>\n\n\nSuper",
|
||||||
|
{
|
||||||
|
"x": 1,
|
||||||
|
"fa": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"{\n[\n\nHyper"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.75,
|
||||||
|
"x": 0.5
|
||||||
|
},
|
||||||
|
"Ctrl\n\n\nLCtrl",
|
||||||
|
{
|
||||||
|
"f2": 1
|
||||||
|
},
|
||||||
|
"\nMeh\n|\n\\",
|
||||||
|
{
|
||||||
|
"x": 14.5,
|
||||||
|
"fa": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"}\n]\n\nMeh",
|
||||||
|
"Ctrl\n\n\nRCtrl"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"r": 30,
|
||||||
|
"rx": 6.5,
|
||||||
|
"ry": 4.25,
|
||||||
|
"y": -1,
|
||||||
|
"x": 1,
|
||||||
|
"c": "#54d6de"
|
||||||
|
},
|
||||||
|
"Home",
|
||||||
|
"End"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"h": 2
|
||||||
|
},
|
||||||
|
"< Del\n\n\nBackspace",
|
||||||
|
{
|
||||||
|
"h": 2
|
||||||
|
},
|
||||||
|
"Del >\n\n\nDelete",
|
||||||
|
"Page\n\n\n\n\n\nUp"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": 2
|
||||||
|
},
|
||||||
|
"Page\n\n\n\n\n\nDown"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"r": -30,
|
||||||
|
"rx": 13,
|
||||||
|
"y": -1,
|
||||||
|
"x": -3
|
||||||
|
},
|
||||||
|
"Left",
|
||||||
|
"Right"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": -3
|
||||||
|
},
|
||||||
|
"Up",
|
||||||
|
{
|
||||||
|
"h": 2
|
||||||
|
},
|
||||||
|
"Enter",
|
||||||
|
{
|
||||||
|
"h": 2
|
||||||
|
},
|
||||||
|
"Space"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": -3
|
||||||
|
},
|
||||||
|
"Down"
|
||||||
|
]
|
||||||
|
]
|
After Width: | Height: | Size: 92 KiB |
@ -0,0 +1,436 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "teckinesis (MediaLayer)",
|
||||||
|
"author": "Will Wolff-Myren",
|
||||||
|
"switchMount": "cherry",
|
||||||
|
"switchBrand": "gateron",
|
||||||
|
"switchType": "KS-3-Tea"
|
||||||
|
},
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": 3.5,
|
||||||
|
"c": "#99de2a"
|
||||||
|
},
|
||||||
|
"F13",
|
||||||
|
{
|
||||||
|
"x": 10.5
|
||||||
|
},
|
||||||
|
"F18"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 2.5
|
||||||
|
},
|
||||||
|
"F12",
|
||||||
|
{
|
||||||
|
"x": 1
|
||||||
|
},
|
||||||
|
"F14",
|
||||||
|
{
|
||||||
|
"x": 8.5
|
||||||
|
},
|
||||||
|
"F17",
|
||||||
|
{
|
||||||
|
"x": 1
|
||||||
|
},
|
||||||
|
"F19"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 5.5
|
||||||
|
},
|
||||||
|
"F15",
|
||||||
|
{
|
||||||
|
"c": "#ff4444"
|
||||||
|
},
|
||||||
|
"Esc",
|
||||||
|
{
|
||||||
|
"x": 4.5
|
||||||
|
},
|
||||||
|
"Esc",
|
||||||
|
{
|
||||||
|
"c": "#99de2a"
|
||||||
|
},
|
||||||
|
"F16"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 1.5
|
||||||
|
},
|
||||||
|
"F11",
|
||||||
|
{
|
||||||
|
"x": 14.5
|
||||||
|
},
|
||||||
|
"F20"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.995,
|
||||||
|
"c": "#000000",
|
||||||
|
"t": "#ff0000",
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"Media\n\n\n\n\n\nShift",
|
||||||
|
{
|
||||||
|
"x": 16.5,
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"\n\nMedia\n\n\n\n\nShift"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.3799999999999999,
|
||||||
|
"x": 3.5,
|
||||||
|
"c": "#ff8500",
|
||||||
|
"t": "#000000"
|
||||||
|
},
|
||||||
|
"Mouse\n\n\n\n\n\nUp",
|
||||||
|
{
|
||||||
|
"x": 10.5
|
||||||
|
},
|
||||||
|
"Cursor\n\n\n\n\n\nUp"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 2.5
|
||||||
|
},
|
||||||
|
"Mouse\n\n\n\n\n\nUpLeft",
|
||||||
|
{
|
||||||
|
"x": 1
|
||||||
|
},
|
||||||
|
"Mouse\n\n\n\n\n\nUpRgt",
|
||||||
|
{
|
||||||
|
"x": 8.5,
|
||||||
|
"c": "#ffb063"
|
||||||
|
},
|
||||||
|
"Home",
|
||||||
|
{
|
||||||
|
"x": 1
|
||||||
|
},
|
||||||
|
"Page\n\n\n\n\n\nUp"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 5.5,
|
||||||
|
"c": "#e6e067"
|
||||||
|
},
|
||||||
|
"Vol\n\n\n\n\n\nUp",
|
||||||
|
{
|
||||||
|
"c": "#ffb063",
|
||||||
|
"h": 1.5
|
||||||
|
},
|
||||||
|
"Scroll\n\n\n\n\n\nUp",
|
||||||
|
{
|
||||||
|
"x": 4.5,
|
||||||
|
"h": 1.5
|
||||||
|
},
|
||||||
|
"Scroll\n\n\n\n\n\nUp",
|
||||||
|
{
|
||||||
|
"c": "#e6e067"
|
||||||
|
},
|
||||||
|
"Print\n\n\n\n\n\nScreen"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 1.5,
|
||||||
|
"c": "#737373",
|
||||||
|
"a": 7
|
||||||
|
},
|
||||||
|
"",
|
||||||
|
{
|
||||||
|
"x": 14.5
|
||||||
|
},
|
||||||
|
""
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.9950000000000001,
|
||||||
|
"c": "#2277ff",
|
||||||
|
"a": 4,
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"Symbols\n\n\n\n\n\nShift",
|
||||||
|
{
|
||||||
|
"x": 16.5,
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"\n\nSymbols\n\n\n\n\nShift"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.3799999999999999,
|
||||||
|
"x": 3.5,
|
||||||
|
"c": "#ff8500"
|
||||||
|
},
|
||||||
|
"Mouse\n\n\n\n\n\nDown",
|
||||||
|
{
|
||||||
|
"x": 10.5
|
||||||
|
},
|
||||||
|
"Cursor\n\n\n\n\n\nDown"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 2.5
|
||||||
|
},
|
||||||
|
"Mouse\n\n\n\n\n\nLeft",
|
||||||
|
{
|
||||||
|
"x": 1
|
||||||
|
},
|
||||||
|
"Mouse\n\n\n\n\n\nRight",
|
||||||
|
{
|
||||||
|
"x": 8.5
|
||||||
|
},
|
||||||
|
"Cursor\n\n\n\n\n\nLeft",
|
||||||
|
{
|
||||||
|
"x": 1
|
||||||
|
},
|
||||||
|
"Cursor\n\n\n\n\n\nRight"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 5.5,
|
||||||
|
"c": "#e6e067"
|
||||||
|
},
|
||||||
|
"Vol\n\n\n\n\n\nDown",
|
||||||
|
{
|
||||||
|
"x": 6.5
|
||||||
|
},
|
||||||
|
"Num\n\n\n\n\n\nLock"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 1.5,
|
||||||
|
"c": "#737373",
|
||||||
|
"a": 7
|
||||||
|
},
|
||||||
|
"",
|
||||||
|
{
|
||||||
|
"x": 14.5
|
||||||
|
},
|
||||||
|
""
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.9950000000000001,
|
||||||
|
"c": "#2277ff",
|
||||||
|
"a": 4,
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"Capitals\n\n\n\n\n\nShift",
|
||||||
|
{
|
||||||
|
"x": 16.5,
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"\n\nCapitals\n\n\n\n\nShift"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.6299999999999999,
|
||||||
|
"x": 6.5,
|
||||||
|
"c": "#ffb063",
|
||||||
|
"h": 1.5
|
||||||
|
},
|
||||||
|
"Scroll\n\n\n\n\n\nDown",
|
||||||
|
{
|
||||||
|
"x": 4.5,
|
||||||
|
"h": 1.5
|
||||||
|
},
|
||||||
|
"Scroll\n\n\n\n\n\nDown"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.75,
|
||||||
|
"x": 3.5,
|
||||||
|
"c": "#ff8500"
|
||||||
|
},
|
||||||
|
"Mouse\n\n\n\n\n\nDown",
|
||||||
|
{
|
||||||
|
"x": 10.5
|
||||||
|
},
|
||||||
|
"Cursor\n\n\n\n\n\nDown"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 2.5
|
||||||
|
},
|
||||||
|
"Mouse\n\n\n\n\n\nDnLeft",
|
||||||
|
{
|
||||||
|
"x": 1
|
||||||
|
},
|
||||||
|
"Mouse\n\n\n\n\n\nDnRgt",
|
||||||
|
{
|
||||||
|
"x": 8.5,
|
||||||
|
"c": "#ffb063"
|
||||||
|
},
|
||||||
|
"End",
|
||||||
|
{
|
||||||
|
"x": 1
|
||||||
|
},
|
||||||
|
"Page\n\n\n\n\n\nDown"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 5.5,
|
||||||
|
"c": "#e6e067"
|
||||||
|
},
|
||||||
|
"Mute",
|
||||||
|
{
|
||||||
|
"x": 6.5,
|
||||||
|
"c": "#737373",
|
||||||
|
"a": 7
|
||||||
|
},
|
||||||
|
""
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 1.5
|
||||||
|
},
|
||||||
|
"",
|
||||||
|
{
|
||||||
|
"x": 14.5
|
||||||
|
},
|
||||||
|
""
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.9950000000000001,
|
||||||
|
"c": "#2277ff",
|
||||||
|
"a": 4,
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"Ctrl",
|
||||||
|
{
|
||||||
|
"x": 16.5,
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"Ctrl"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.3799999999999999,
|
||||||
|
"x": 3.5,
|
||||||
|
"c": "#ff8500"
|
||||||
|
},
|
||||||
|
"Middle\n\n\n\n\n\nClick",
|
||||||
|
{
|
||||||
|
"x": 10.5,
|
||||||
|
"c": "#ffb063",
|
||||||
|
"fa": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Delete\n\n\nOption"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 2.5,
|
||||||
|
"c": "#ff8500"
|
||||||
|
},
|
||||||
|
"Left\n\n\n\n\n\nClick",
|
||||||
|
{
|
||||||
|
"x": 1
|
||||||
|
},
|
||||||
|
"Right\n\n\n\n\n\nClick",
|
||||||
|
{
|
||||||
|
"x": 8.5,
|
||||||
|
"c": "#ffb063"
|
||||||
|
},
|
||||||
|
"Insert\n\n\nCmd",
|
||||||
|
{
|
||||||
|
"x": 1,
|
||||||
|
"c": "#77aaff"
|
||||||
|
},
|
||||||
|
"Hyper"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.75,
|
||||||
|
"x": 0.5
|
||||||
|
},
|
||||||
|
"Alt\n\n\nLAlt",
|
||||||
|
"Meh",
|
||||||
|
{
|
||||||
|
"x": 14.5
|
||||||
|
},
|
||||||
|
"Meh",
|
||||||
|
"Alt\n\n\nRAlt"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"r": 30,
|
||||||
|
"rx": 6.5,
|
||||||
|
"ry": 4.25,
|
||||||
|
"y": -1,
|
||||||
|
"x": 1,
|
||||||
|
"c": "#ccbb00"
|
||||||
|
},
|
||||||
|
"Stop\n\n\nBrowser",
|
||||||
|
"Reload\n\n\nBrowser"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"h": 2
|
||||||
|
},
|
||||||
|
"< Web\n\n\nBrowser",
|
||||||
|
{
|
||||||
|
"h": 2
|
||||||
|
},
|
||||||
|
"Web >\n\n\nBrowser",
|
||||||
|
"Search\n\n\nBrowser"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": 2
|
||||||
|
},
|
||||||
|
"Home\n\n\nBrowser"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"r": -30,
|
||||||
|
"rx": 13,
|
||||||
|
"y": -1,
|
||||||
|
"x": -3
|
||||||
|
},
|
||||||
|
"Prev\n\n\nAudio\n\n\nTrack",
|
||||||
|
"Next\n\n\nAudio\n\n\nTrack"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": -3,
|
||||||
|
"c": "#e6e067"
|
||||||
|
},
|
||||||
|
"Vol\n\n\n\n\n\nUp",
|
||||||
|
{
|
||||||
|
"c": "#ccbb00",
|
||||||
|
"h": 2
|
||||||
|
},
|
||||||
|
"Stop\n\n\nAudio",
|
||||||
|
{
|
||||||
|
"h": 2
|
||||||
|
},
|
||||||
|
"Play\n\n\nAudio\n\n\nPause"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": -3,
|
||||||
|
"c": "#e6e067"
|
||||||
|
},
|
||||||
|
"Vol\n\n\n\n\n\nDown"
|
||||||
|
]
|
||||||
|
]
|
After Width: | Height: | Size: 110 KiB |
@ -0,0 +1,422 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "teckinesis (Symbol Layer)",
|
||||||
|
"author": "Will Wolff-Myren",
|
||||||
|
"switchMount": "cherry",
|
||||||
|
"switchBrand": "gateron",
|
||||||
|
"switchType": "KS-3-Tea"
|
||||||
|
},
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": 3.5,
|
||||||
|
"c": "#99de2a"
|
||||||
|
},
|
||||||
|
"F3",
|
||||||
|
{
|
||||||
|
"x": 10.5
|
||||||
|
},
|
||||||
|
"F8"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 2.5
|
||||||
|
},
|
||||||
|
"F2",
|
||||||
|
{
|
||||||
|
"x": 1
|
||||||
|
},
|
||||||
|
"F4",
|
||||||
|
{
|
||||||
|
"x": 8.5
|
||||||
|
},
|
||||||
|
"F7",
|
||||||
|
{
|
||||||
|
"x": 1
|
||||||
|
},
|
||||||
|
"F9"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 5.5
|
||||||
|
},
|
||||||
|
"F5",
|
||||||
|
{
|
||||||
|
"c": "#ff4444"
|
||||||
|
},
|
||||||
|
"Esc",
|
||||||
|
{
|
||||||
|
"x": 4.5,
|
||||||
|
"c": "#bbddbb"
|
||||||
|
},
|
||||||
|
"_\n\n\n\n\n\n-",
|
||||||
|
{
|
||||||
|
"c": "#99de2a"
|
||||||
|
},
|
||||||
|
"F6"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"c": "#2277ff",
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"Special\n\n\n\n\n\nShift",
|
||||||
|
{
|
||||||
|
"c": "#99de2a"
|
||||||
|
},
|
||||||
|
"F1",
|
||||||
|
{
|
||||||
|
"x": 14.5
|
||||||
|
},
|
||||||
|
"F10",
|
||||||
|
{
|
||||||
|
"c": "#2277ff",
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"\n\nSpecial\n\n\n\n\nShift"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.375,
|
||||||
|
"x": 3.5,
|
||||||
|
"c": "#bbddbb"
|
||||||
|
},
|
||||||
|
"{",
|
||||||
|
{
|
||||||
|
"x": 10.5,
|
||||||
|
"c": "#89b087"
|
||||||
|
},
|
||||||
|
"8"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 2.5,
|
||||||
|
"c": "#bbddbb"
|
||||||
|
},
|
||||||
|
"@",
|
||||||
|
{
|
||||||
|
"x": 1
|
||||||
|
},
|
||||||
|
"}",
|
||||||
|
{
|
||||||
|
"x": 8.5,
|
||||||
|
"c": "#89b087"
|
||||||
|
},
|
||||||
|
"7",
|
||||||
|
{
|
||||||
|
"x": 1
|
||||||
|
},
|
||||||
|
"9"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 5.5,
|
||||||
|
"c": "#bbddbb"
|
||||||
|
},
|
||||||
|
"&",
|
||||||
|
{
|
||||||
|
"h": 1.5
|
||||||
|
},
|
||||||
|
"<",
|
||||||
|
{
|
||||||
|
"x": 4.5,
|
||||||
|
"h": 1.5
|
||||||
|
},
|
||||||
|
">",
|
||||||
|
"|"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"c": "#2277ff",
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"Media\n\n\n\n\n\nShift",
|
||||||
|
{
|
||||||
|
"c": "#bbddbb"
|
||||||
|
},
|
||||||
|
"!",
|
||||||
|
{
|
||||||
|
"x": 14.5,
|
||||||
|
"c": "#89b087"
|
||||||
|
},
|
||||||
|
"/",
|
||||||
|
{
|
||||||
|
"c": "#2277ff",
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"\n\nMedia\n\n\n\n\nShift"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.375,
|
||||||
|
"x": 3.5,
|
||||||
|
"c": "#bbddbb"
|
||||||
|
},
|
||||||
|
"(",
|
||||||
|
{
|
||||||
|
"x": 10.5,
|
||||||
|
"c": "#89b087"
|
||||||
|
},
|
||||||
|
"5"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 2.5,
|
||||||
|
"c": "#bbddbb"
|
||||||
|
},
|
||||||
|
"$",
|
||||||
|
{
|
||||||
|
"x": 1
|
||||||
|
},
|
||||||
|
")",
|
||||||
|
{
|
||||||
|
"x": 8.5,
|
||||||
|
"c": "#89b087"
|
||||||
|
},
|
||||||
|
"4",
|
||||||
|
{
|
||||||
|
"x": 1
|
||||||
|
},
|
||||||
|
"6"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 5.5,
|
||||||
|
"c": "#bbddbb"
|
||||||
|
},
|
||||||
|
"`",
|
||||||
|
{
|
||||||
|
"x": 6.5
|
||||||
|
},
|
||||||
|
"/"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"c": "#000000",
|
||||||
|
"t": "#ff0000",
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"Symbols\n\n\n\n\n\nShift",
|
||||||
|
{
|
||||||
|
"c": "#bbddbb",
|
||||||
|
"t": "#000000"
|
||||||
|
},
|
||||||
|
"#",
|
||||||
|
{
|
||||||
|
"x": 14.5,
|
||||||
|
"c": "#89b087"
|
||||||
|
},
|
||||||
|
"*",
|
||||||
|
{
|
||||||
|
"c": "#000000",
|
||||||
|
"t": "#ff0000",
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"\n\nSymbols\n\n\n\n\nShift"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.625,
|
||||||
|
"x": 6.5,
|
||||||
|
"c": "#54d6de",
|
||||||
|
"t": "#000000",
|
||||||
|
"fa": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"h": 1.5
|
||||||
|
},
|
||||||
|
"Tab >\n\n\nTab",
|
||||||
|
{
|
||||||
|
"x": 4.5,
|
||||||
|
"h": 1.5
|
||||||
|
},
|
||||||
|
"< Tab\n\n\nShift Tab"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.75,
|
||||||
|
"x": 3.5,
|
||||||
|
"c": "#bbddbb"
|
||||||
|
},
|
||||||
|
"[",
|
||||||
|
{
|
||||||
|
"x": 10.5,
|
||||||
|
"c": "#89b087"
|
||||||
|
},
|
||||||
|
"2"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 2.5,
|
||||||
|
"c": "#bbddbb"
|
||||||
|
},
|
||||||
|
"^",
|
||||||
|
{
|
||||||
|
"x": 1
|
||||||
|
},
|
||||||
|
"]",
|
||||||
|
{
|
||||||
|
"x": 8.5,
|
||||||
|
"c": "#89b087"
|
||||||
|
},
|
||||||
|
"1",
|
||||||
|
{
|
||||||
|
"x": 1
|
||||||
|
},
|
||||||
|
"3"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 5.5,
|
||||||
|
"c": "#bbddbb"
|
||||||
|
},
|
||||||
|
"~",
|
||||||
|
{
|
||||||
|
"x": 6.5
|
||||||
|
},
|
||||||
|
"\\"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"c": "#2277ff",
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"Capitals\n\n\n\n\n\nShift",
|
||||||
|
{
|
||||||
|
"c": "#bbddbb"
|
||||||
|
},
|
||||||
|
"%",
|
||||||
|
{
|
||||||
|
"x": 14.5,
|
||||||
|
"c": "#89b087"
|
||||||
|
},
|
||||||
|
"-",
|
||||||
|
{
|
||||||
|
"c": "#2277ff",
|
||||||
|
"w": 1.5
|
||||||
|
},
|
||||||
|
"\n\nCapitals\n\n\n\n\nShift"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.375,
|
||||||
|
"x": 3.5,
|
||||||
|
"c": "#77aaff"
|
||||||
|
},
|
||||||
|
"<i class='mss mss-Unicode-Option-3'></i>\n\n\nLAlt",
|
||||||
|
{
|
||||||
|
"x": 10.5,
|
||||||
|
"c": "#89b087"
|
||||||
|
},
|
||||||
|
".\n\n\nOption"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.875,
|
||||||
|
"x": 2.5,
|
||||||
|
"c": "#77aaff"
|
||||||
|
},
|
||||||
|
"Hyper",
|
||||||
|
{
|
||||||
|
"x": 1
|
||||||
|
},
|
||||||
|
"<i class='mss mss-Unicode-Command-3'></i>\n\n\nSuper",
|
||||||
|
{
|
||||||
|
"x": 8.5,
|
||||||
|
"c": "#89b087"
|
||||||
|
},
|
||||||
|
"0\n\n\nCmd",
|
||||||
|
{
|
||||||
|
"x": 1
|
||||||
|
},
|
||||||
|
"=\n\n\nHyper"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"y": -0.75,
|
||||||
|
"x": 0.5,
|
||||||
|
"c": "#77aaff"
|
||||||
|
},
|
||||||
|
"Ctrl\n\n\nLCtrl",
|
||||||
|
"Meh",
|
||||||
|
{
|
||||||
|
"x": 14.5,
|
||||||
|
"c": "#89b087"
|
||||||
|
},
|
||||||
|
"+\n\n\nMeh",
|
||||||
|
"Enter\n\n\nCtrl"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"r": 30,
|
||||||
|
"rx": 6.5,
|
||||||
|
"ry": 4.25,
|
||||||
|
"y": -1,
|
||||||
|
"x": 1,
|
||||||
|
"c": "#54d6de"
|
||||||
|
},
|
||||||
|
"Left",
|
||||||
|
"Right"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"h": 2
|
||||||
|
},
|
||||||
|
"Space",
|
||||||
|
{
|
||||||
|
"h": 2
|
||||||
|
},
|
||||||
|
"Enter",
|
||||||
|
"Up"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": 2
|
||||||
|
},
|
||||||
|
"Down"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"r": -30,
|
||||||
|
"rx": 13,
|
||||||
|
"y": -1,
|
||||||
|
"x": -3
|
||||||
|
},
|
||||||
|
"Home",
|
||||||
|
"End"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": -3
|
||||||
|
},
|
||||||
|
"Page\n\n\n\n\n\nUp",
|
||||||
|
{
|
||||||
|
"h": 2
|
||||||
|
},
|
||||||
|
"< Del\n\n\nBackspace",
|
||||||
|
{
|
||||||
|
"h": 2
|
||||||
|
},
|
||||||
|
"Del >\n\n\nDelete"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"x": -3
|
||||||
|
},
|
||||||
|
"Page\n\n\n\n\n\nDown"
|
||||||
|
]
|
||||||
|
]
|
After Width: | Height: | Size: 95 KiB |
@ -0,0 +1,77 @@
|
|||||||
|
CMD-Preonic
|
||||||
|
===================
|
||||||
|
The CMD project seeks to improve productivity by optimizing usage of the left hand via clever use of the function layers.
|
||||||
|
|
||||||
|
>Note: This project is currently optimized for grid layout, and has not been confirmed to work 100% on MIT layout, although it is expected to work correctly.
|
||||||
|
|
||||||
|
----------
|
||||||
|
|
||||||
|
Modes
|
||||||
|
-------------
|
||||||
|
|
||||||
|
#### QWERTY
|
||||||
|
|
||||||
|
>CMD-Qwerty is very similar to the default Preonic with a few key differences:
|
||||||
|
|
||||||
|
- Dual-role Raise/Enter Key at Caps Lock position. -Don't need to take your hand off the mouse to submit URLs
|
||||||
|
- Space_Function under left space (Grid layout) -Don't need to take your thumb off of the spacebar to use lower.
|
||||||
|
- Dedicated arrow keys replaced with ( - , = , [ , and ] ) - big improvement for programmers who are used to fn layer.
|
||||||
|
|
||||||
|
----------
|
||||||
|
|
||||||
|
#### Game
|
||||||
|
|
||||||
|
> Disables extra features to facilitate easier usage of the Preonic while gaming. this mode is toggled in the adjust layer.
|
||||||
|
|
||||||
|
- Dual Role Function key becomes Caps Lock.
|
||||||
|
- Space_Function disabled and replaced with normal spacebar.
|
||||||
|
- Windows Key disabled.
|
||||||
|
|
||||||
|
----------
|
||||||
|
|
||||||
|
#### Numpad
|
||||||
|
|
||||||
|
> Enables left-hand numpad
|
||||||
|
|
||||||
|
- Left-side numpad
|
||||||
|
- Can be toggled on in Adjust layer (under . key)
|
||||||
|
|
||||||
|
----------
|
||||||
|
|
||||||
|
#### Arrow - (Lower)
|
||||||
|
|
||||||
|
> Makes arrow keys easily accessible to Left Hand, and much more.
|
||||||
|
|
||||||
|
- Arrow keys at WASD, Backspace at Q, Delete at E.
|
||||||
|
- Media Keys near arrow cluster, mute at A.
|
||||||
|
- Web Nav keys.
|
||||||
|
- Mouse cluster at YGHJ.
|
||||||
|
- Numpad in right side of board.
|
||||||
|
- Can be toggled on in Adjust layer (Under , key)
|
||||||
|
|
||||||
|
----------
|
||||||
|
|
||||||
|
#### Function- (Raise)
|
||||||
|
|
||||||
|
> Basic Functions. Open Keys for customization.
|
||||||
|
|
||||||
|
- Turns WASD into Navigation cluster (Home, End, Page up and Page Down)
|
||||||
|
- Pok3r style right hand arrow cluster for accessibility (familiar for many users.)
|
||||||
|
- Doubles as shift key for top row numbers.
|
||||||
|
- Print Screen, Insert, etc.
|
||||||
|
|
||||||
|
----------
|
||||||
|
|
||||||
|
#### Adjust- (Raise + Lower)
|
||||||
|
|
||||||
|
> Switch Modes
|
||||||
|
|
||||||
|
- Default modes moved to the left and new layer toggle modes located to the right.
|
||||||
|
- Sleep and Wake keys added.
|
||||||
|
- Reset button moved under Spacebar(s).
|
||||||
|
|
||||||
|
Notes:
|
||||||
|
-------------
|
||||||
|
|
||||||
|
Please feel free to reach out to Commandlinedesign@gmail.com with suggestions.
|
||||||
|
Special Thanks to Jack for QMK firmware and the Preonic!
|
@ -0,0 +1,332 @@
|
|||||||
|
#include "preonic.h"
|
||||||
|
#include "action_layer.h"
|
||||||
|
#include "eeconfig.h"
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
#include "audio.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||||
|
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||||
|
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||||
|
// entirely and just use numbers.
|
||||||
|
#define _QWERTY 0
|
||||||
|
#define _COLEMAK 1
|
||||||
|
#define _DVORAK 2
|
||||||
|
#define _GAME 3
|
||||||
|
#define _ARROW 12
|
||||||
|
#define _NUMPAD 13
|
||||||
|
#define _LOWER 14
|
||||||
|
#define _RAISE 15
|
||||||
|
#define _ADJUST 16
|
||||||
|
|
||||||
|
// Macro name shortcuts
|
||||||
|
#define QWERTY M(_QWERTY)
|
||||||
|
#define COLEMAK M(_COLEMAK)
|
||||||
|
#define DVORAK M(_DVORAK)
|
||||||
|
#define GAME M(_GAME)
|
||||||
|
#define ARROW M(_ARROW)
|
||||||
|
#define NUMPAD M(_NUMPAD)
|
||||||
|
#define LOWER M(_LOWER)
|
||||||
|
#define RAISE M(_RAISE)
|
||||||
|
#define M_BL 5
|
||||||
|
|
||||||
|
// Fillers to make layering more clear
|
||||||
|
#define _______ KC_TRNS
|
||||||
|
#define XXXXXXX KC_NO
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
/* Qwerty
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | Tab | Q | W | E | R | T | Y | U | I | O | P | \ |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | Esc | A | S | D | F | G | H | J | K | L | ; | " |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | Brite| Ctrl | Alt | GUI |Lower | Space | Raise| - | = | [ | ] |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_QWERTY] = {
|
||||||
|
{KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
|
||||||
|
{KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLASH},
|
||||||
|
{LT(_RAISE, KC_ENT), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
|
||||||
|
{KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
|
||||||
|
{M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, LT(_LOWER, KC_SPC), KC_SPC, RAISE, KC_MINUS, KC_EQUAL, KC_LBRC, KC_RBRC}
|
||||||
|
},
|
||||||
|
|
||||||
|
/* Colemak
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | Tab | Q | W | F | P | G | J | L | U | Y | ; | Del |
|
||||||
|
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||||
|
* | Esc | A | R | S | T | D | H | N | E | I | O | " |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | Brite| Ctrl | Alt | GUI |Lower | Space | Raise| - | = | [ | ] |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_COLEMAK] = {
|
||||||
|
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
|
||||||
|
{_______, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, _______},
|
||||||
|
{_______, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT},
|
||||||
|
{_______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______},
|
||||||
|
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
|
||||||
|
},
|
||||||
|
|
||||||
|
/* Dvorak
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | Tab | " | , | . | P | Y | F | G | C | R | L | Del |
|
||||||
|
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||||
|
* | Esc | A | O | E | U | I | D | H | T | N | S | / |
|
||||||
|
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||||
|
* | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | Brite| Ctrl | Alt | GUI |Lower | Space | Raise| - | = | [ | ] |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_DVORAK] = {
|
||||||
|
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
|
||||||
|
{_______, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, _______},
|
||||||
|
{_______, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, _______},
|
||||||
|
{_______, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, _______},
|
||||||
|
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
|
||||||
|
},
|
||||||
|
|
||||||
|
/* GAME
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | Tab | Q | W | E | R | T | Y | U | I | O | P | \ |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | CAPS | A | S | D | F | G | H | J | K | L | ; | " |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | Brite| Ctrl | Alt | XXX | Lower | Space | Raise| - | = | [ | ] |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_GAME] = {
|
||||||
|
{KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
|
||||||
|
{KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLASH},
|
||||||
|
{KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
|
||||||
|
{KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
|
||||||
|
{_______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______}
|
||||||
|
},
|
||||||
|
|
||||||
|
/* NUMPAD
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | Esc | / | * | - | 4 | 5 | 6 | 7 | 8 | 9 | | |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | 7 | 8 | 9 | + | R | T | Y | U | I | O | P | \ |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | 4 | 5 | 6 | + | F | G | H | J | K | L | ; | " |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | 1 | 2 | 3 | Enter| V | B | N | M | , | . | / |Enter |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | 0 | 0 | . | Enter| Lower| Space | Raise| - | = | [ | ] |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_NUMPAD] = {
|
||||||
|
{KC_ESC, KC_PSLS, KC_PAST, KC_PMNS, _______, _______, _______, _______, _______, _______, _______, _______},
|
||||||
|
{KC_P7, KC_P8, KC_P9, KC_PPLS, _______, _______, _______, _______, _______, _______, _______, _______},
|
||||||
|
{KC_P4, KC_P5, KC_P6, KC_PPLS, _______, _______, _______, _______, _______, _______, _______, _______},
|
||||||
|
{KC_P1, KC_P2, KC_P3, KC_PENT, _______, _______, _______, _______, _______, _______, _______, _______},
|
||||||
|
{KC_P0, KC_P0, KC_PDOT, KC_PENT, _______, _______, _______, _______, _______, _______, _______, _______},
|
||||||
|
},
|
||||||
|
/* Lower
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | ` | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | Del |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | Mute | BkSpc| Up | Del | Forwd| MBtn1| MUp| MBtn2| / | 7 | 8 | 9 |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | Left | Down | Right| Refr MLeft| MDn |MRight| * | 4 | 5 | 6 |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | Vol+| Prev | Play | Next | Back | MWDn| MBtn3| MWUp | - | 1 | 2 | 3 |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | Vol- | | | | | | | + | Enter| 0 | . |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_LOWER] = {
|
||||||
|
{KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL},
|
||||||
|
{KC_MUTE, KC_BSPC, KC_UP, KC_DEL, KC_WWW_FORWARD, KC_BTN1, KC_MS_U, KC_BTN2, KC_PSLS, KC_P7, KC_P8, KC_P9},
|
||||||
|
{_______, KC_LEFT, KC_DOWN, KC_RIGHT, KC_WWW_REFRESH, KC_MS_L, KC_MS_D, KC_MS_R, KC_PAST, KC_P4, KC_P5, KC_P6},
|
||||||
|
{KC_VOLU, KC_MPRV, KC_MPLY, KC_MNXT, KC_WWW_BACK, KC_WH_D, KC_BTN3, KC_WH_U, KC_PMNS, KC_P1, KC_P2, KC_P3},
|
||||||
|
{KC_VOLD, _______, _______, _______, _______, _______, _______, _______, KC_PPLS, KC_PENT, KC_P0, KC_PDOT}
|
||||||
|
},
|
||||||
|
|
||||||
|
/* Raise
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | Bksp | PgUp | Del | | | | PgUp | Up | PgDn | | |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | Home | PgDn | End | | | Home | Left | Down | Right| ] | \ |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | Pause| Ins | | | Print|Screen| End | | | |Enter |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | | | | | | | | | | |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_RAISE] = {
|
||||||
|
{KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
|
||||||
|
{_______, KC_BSPC, KC_PGUP, KC_DEL, _______, _______, _______, KC_PGUP, KC_UP, _______, _______, _______},
|
||||||
|
{_______, KC_HOME, KC_PGDN, KC_END, _______, _______, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______},
|
||||||
|
{_______, KC_PAUSE, KC_INS, _______, KC_PSCR, KC_PSCR, _______, KC_END, _______, _______, _______, _______},
|
||||||
|
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
|
||||||
|
},
|
||||||
|
|
||||||
|
/* Adjust (Lower + Raise)
|
||||||
|
* ,-----------------------------------------------------------------------------------.
|
||||||
|
* | | |qwerty|ColMak|Dvorak| | | | | | | |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | | |AGNorm|AGSwap| | | | | | | |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | | |Aud On|AudOff|MidiOn|MdiOff| | | | | |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | |Voice-|Voice+|Mus On|MusOff| Sleep| Wake | Arrow| Game |NUMPAD| | |
|
||||||
|
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||||
|
* | | | | | | Reset | | | | | |
|
||||||
|
* `-----------------------------------------------------------------------------------'
|
||||||
|
*/
|
||||||
|
[_ADJUST] = {
|
||||||
|
{_______, _______, QWERTY, COLEMAK, DVORAK, _______, _______, _______, _______, _______, _______, _______},
|
||||||
|
{_______, RESET, _______, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______, _______, KC_DEL},
|
||||||
|
{_______, _______, _______, AU_ON, AU_OFF, MI_ON, MI_OFF, QWERTY, COLEMAK, DVORAK, _______, _______},
|
||||||
|
{_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, KC_SYSTEM_SLEEP, KC_SYSTEM_WAKE, ARROW, GAME, NUMPAD, _______, _______},
|
||||||
|
{_______, _______, _______, _______, _______, RESET, RESET, _______, _______, _______, _______, _______}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM fn_actions[] = {
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
float start_up[][2] = {
|
||||||
|
{440.0*pow(2.0,(14)/12.0), 20},
|
||||||
|
{440.0*pow(2.0,(26)/12.0), 8},
|
||||||
|
{440.0*pow(2.0,(18)/12.0), 20},
|
||||||
|
{440.0*pow(2.0,(26)/12.0), 8}
|
||||||
|
};
|
||||||
|
|
||||||
|
float tone_qwerty[][2] = SONG(QWERTY_SOUND);
|
||||||
|
float tone_dvorak[][2] = SONG(DVORAK_SOUND);
|
||||||
|
float tone_colemak[][2] = SONG(COLEMAK_SOUND);
|
||||||
|
|
||||||
|
float goodbye[][2] = SONG(GOODBYE_SOUND);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void persistant_default_layer_set(uint16_t default_layer) {
|
||||||
|
eeconfig_update_default_layer(default_layer);
|
||||||
|
default_layer_set(default_layer);
|
||||||
|
}
|
||||||
|
|
||||||
|
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||||
|
{
|
||||||
|
switch(id) {
|
||||||
|
case _QWERTY:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
|
||||||
|
#endif
|
||||||
|
persistant_default_layer_set(1UL<<_QWERTY);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _COLEMAK:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
PLAY_NOTE_ARRAY(tone_colemak, false, 0);
|
||||||
|
#endif
|
||||||
|
persistant_default_layer_set(1UL<<_COLEMAK);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _DVORAK:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
|
||||||
|
#endif
|
||||||
|
persistant_default_layer_set(1UL<<_DVORAK);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _GAME:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
PLAY_NOTE_ARRAY(tone_colemak, false, 0);
|
||||||
|
#endif
|
||||||
|
persistant_default_layer_set(1UL<<_GAME);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _NUMPAD:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
|
||||||
|
#endif
|
||||||
|
persistant_default_layer_set(1UL<<_NUMPAD);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _ARROW:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
PLAY_NOTE_ARRAY(tone_colemak, false, 0);
|
||||||
|
#endif
|
||||||
|
persistant_default_layer_set(1UL<<_LOWER);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _LOWER:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
layer_on(_LOWER);
|
||||||
|
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||||
|
} else {
|
||||||
|
layer_off(_LOWER);
|
||||||
|
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case _RAISE:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
layer_on(_RAISE);
|
||||||
|
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||||
|
} else {
|
||||||
|
layer_off(_RAISE);
|
||||||
|
update_tri_layer(_LOWER, _RAISE, _ADJUST);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case M_BL:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code(KC_RSFT);
|
||||||
|
#ifdef BACKLIGHT_ENABLE
|
||||||
|
backlight_step();
|
||||||
|
#endif
|
||||||
|
} else {
|
||||||
|
unregister_code(KC_RSFT);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return MACRO_NONE;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
void matrix_init_user(void) {
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
_delay_ms(20); // gets rid of tick
|
||||||
|
PLAY_NOTE_ARRAY(start_up, false, 0);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef AUDIO_ENABLE
|
||||||
|
|
||||||
|
void play_goodbye_tone()
|
||||||
|
{
|
||||||
|
PLAY_NOTE_ARRAY(goodbye, false, 0);
|
||||||
|
_delay_ms(150);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,23 @@
|
|||||||
|
# Build Options
|
||||||
|
# change to "no" to disable the options, or define them in the Makefile in
|
||||||
|
# the appropriate keymap folder that will get included automatically
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||||
|
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||||
|
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||||
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
|
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
MIDI_ENABLE = no # MIDI controls
|
||||||
|
AUDIO_ENABLE = yes # Audio output on port C6
|
||||||
|
UNICODE_ENABLE = no # Unicode
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
|
||||||
|
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
|
||||||
|
ifndef QUANTUM_DIR
|
||||||
|
include ../../../../Makefile
|
||||||
|
endif
|
@ -0,0 +1,21 @@
|
|||||||
|
# Build Options
|
||||||
|
# change to "no" to disable the options, or define them in the Makefile in
|
||||||
|
# the appropriate keymap folder that will get included automatically
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
|
||||||
|
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||||
|
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||||
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
|
NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||||
|
MIDI_ENABLE = no # MIDI controls
|
||||||
|
AUDIO_ENABLE = no # Audio output on port C6
|
||||||
|
UNICODE_ENABLE = no # Unicode
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
|
||||||
|
ifndef QUANTUM_DIR
|
||||||
|
include ../../../../Makefile
|
||||||
|
endif
|
@ -0,0 +1 @@
|
|||||||
|
# default Satan GH60 layout
|
@ -0,0 +1,3 @@
|
|||||||
|
# sethbc's Satan GH60 layout
|
||||||
|
|
||||||
|
HHKB style split right shift and split backspace. Largely based on the HHKB layout.
|
@ -1,4 +1,4 @@
|
|||||||
Clueboard keyboard firmware
|
Satan GH60 keyboard firmware
|
||||||
======================
|
======================
|
||||||
|
|
||||||
TODO: to be updated.
|
TODO: to be updated.
|
||||||
|