[Keyboard] Signum3.0 generate json keymap (#5688)
* Remove dependency on sortedcontainers * Sort dictionary on output * Externalize writing of keymap.c into function - serialize layers into one flat list * Add encoding * Generate JSON keymap in addition to keymap.c * Replace XXXXXX with KC_NO
This commit is contained in:
parent
670ff2d19f
commit
074be4fe5e
4 changed files with 125 additions and 88 deletions
|
@ -1,12 +1,11 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import json
|
||||||
import layout
|
import layout
|
||||||
|
import os
|
||||||
import re
|
import re
|
||||||
|
|
||||||
# TODO: auto-generate mutex layers
|
|
||||||
# TODO: auto-generate update_tri_layer (_state)
|
|
||||||
|
|
||||||
|
|
||||||
def gen_uc_iter():
|
def gen_uc_iter():
|
||||||
length = len(layout.uc_dict)
|
length = len(layout.uc_dict)
|
||||||
|
@ -18,7 +17,7 @@ def gen_uc_iter():
|
||||||
yield (key, value, True)
|
yield (key, value, True)
|
||||||
|
|
||||||
|
|
||||||
def translate(s):
|
def _translate(s):
|
||||||
if re.match("^[0-9]$", s):
|
if re.match("^[0-9]$", s):
|
||||||
return ("KC_{0}".format(s), " {0} ".format(s))
|
return ("KC_{0}".format(s), " {0} ".format(s))
|
||||||
elif re.match("^[a-z]$", s):
|
elif re.match("^[a-z]$", s):
|
||||||
|
@ -50,80 +49,115 @@ def translate(s):
|
||||||
|
|
||||||
|
|
||||||
def toKC(s):
|
def toKC(s):
|
||||||
(kc, lgd) = translate(s)
|
return _translate(s)[0]
|
||||||
return kc
|
|
||||||
|
|
||||||
|
|
||||||
def toLgd(s):
|
def toLgd(s):
|
||||||
(kc, lgd) = translate(s)
|
return _translate(s)[1]
|
||||||
return lgd
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
def writeKeymap(f_template, f_keymap, columns, rows):
|
||||||
|
|
||||||
template = open("km_template.txt", mode="r")
|
|
||||||
output = open("keymap.c", mode="w", encoding='utf-8')
|
|
||||||
|
|
||||||
doCopy = False
|
doCopy = False
|
||||||
|
|
||||||
for line in template:
|
for line in f_template:
|
||||||
doCopy = True
|
doCopy = True
|
||||||
if line.startswith("//<enum/>"):
|
if line.startswith("//<enum/>"):
|
||||||
doCopy = False
|
doCopy = False
|
||||||
# output.write(str(layout.uc_dict))
|
# f_keymap.write(str(layout.uc_dict))
|
||||||
for k, v, isLast in gen_uc_iter():
|
for k, v, isLast in gen_uc_iter():
|
||||||
if isLast:
|
if isLast:
|
||||||
output.write(k + "\n")
|
f_keymap.write(k + "\n")
|
||||||
else:
|
else:
|
||||||
output.write(k + ",\n")
|
f_keymap.write(k + ",\n")
|
||||||
if line.startswith("//<uc_map/>"):
|
elif line.startswith("//<uc_map/>"):
|
||||||
doCopy = False
|
doCopy = False
|
||||||
for k, v, isLast in gen_uc_iter():
|
for k, v, isLast in gen_uc_iter():
|
||||||
if isLast:
|
if isLast:
|
||||||
output.write(u"\t[{0}] = {1} // {2}\n".format(k, v, chr(int(v, 0))))
|
f_keymap.write(u"\t[{0}] = {1} // {2}\n".format(k, v, chr(int(v, 0))))
|
||||||
else:
|
else:
|
||||||
output.write(u"\t[{0}] = {1}, // {2}\n".format(k, v, chr(int(v, 0))))
|
f_keymap.write(u"\t[{0}] = {1}, // {2}\n".format(k, v, chr(int(v, 0))))
|
||||||
if line.startswith("//<keymaps/>"):
|
elif line.startswith("//<keymaps/>"):
|
||||||
doCopy = False
|
doCopy = False
|
||||||
counter = len(layout.layers)
|
for layer, L in enumerate(layout.layers):
|
||||||
layer = 0
|
r_counter = rows
|
||||||
S = layout.static
|
f_keymap.write("/* Layer %d\n" % layer)
|
||||||
for L in layout.layers:
|
f_keymap.write(" * ------------------------------------------------- -------------------------------------------------\n")
|
||||||
counter -= 1
|
f_keymap.write(" * |{0}|{1}|{2}|{3}|{4}|{5}| |{6}|{7}|{8}|{9}|{10}|{11}|\n".format(*map(toLgd, L[:12])))
|
||||||
r_counter = 4
|
f_keymap.write(" * ------------------------------------------------- -------------------------------------------------\n")
|
||||||
output.write("/* Layer %d\n" % layer)
|
f_keymap.write(" * |{0}|{1}|{2}|{3}|{4}|{5}| |{6}|{7}|{8}|{9}|{10}|{11}|\n".format(*map(toLgd, L[12:24])))
|
||||||
output.write(" * ------------------------------------------------- -------------------------------------------------\n")
|
f_keymap.write(" * ------------------------------------------------- -------------------------------------------------\n")
|
||||||
output.write(" * |{0}|{1}|{2}|{3}|{4}|{5}| |{6}|{7}|{8}|{9}|{10}|{11}|\n".format(toLgd(L[0][0]), toLgd(L[0][1]), toLgd(L[0][2]), toLgd(L[0][3]), toLgd(L[0][4]), toLgd(L[0][5]), toLgd(L[0][6]), toLgd(L[0][7]), toLgd(L[0][8]), toLgd(L[0][9]), toLgd(L[0][10]), toLgd(L[0][11])))
|
f_keymap.write(" * |{0}|{1}|{2}|{3}|{4}|{5}| |{6}|{7}|{8}|{9}|{10}|{11}|\n".format(*map(toLgd, L[24:36])))
|
||||||
output.write(" * ------------------------------------------------- -------------------------------------------------\n")
|
f_keymap.write(" * -----------------------------------------------------------------------------------------------------------------\n")
|
||||||
output.write(" * |{0}|{1}|{2}|{3}|{4}|{5}| |{6}|{7}|{8}|{9}|{10}|{11}|\n".format(toLgd(L[1][0]), toLgd(L[1][1]), toLgd(L[1][2]), toLgd(L[1][3]), toLgd(L[1][4]), toLgd(L[1][5]), toLgd(L[1][6]), toLgd(L[1][7]), toLgd(L[1][8]), toLgd(L[1][9]), toLgd(L[1][10]), toLgd(L[1][11])))
|
f_keymap.write(" * {0} {1} {2} |{3}|{4}|{5}|{6}|{7}|{8}| {9} {10} {11}".format(*map(toLgd, L[36:48])).rstrip()+"\n")
|
||||||
output.write(" * ------------------------------------------------- -------------------------------------------------\n")
|
f_keymap.write(" * -------------------------------------------------\n")
|
||||||
output.write(" * |{0}|{1}|{2}|{3}|{4}|{5}| |{6}|{7}|{8}|{9}|{10}|{11}|\n".format(toLgd(L[2][0]), toLgd(L[2][1]), toLgd(L[2][2]), toLgd(L[2][3]), toLgd(L[2][4]), toLgd(L[2][5]), toLgd(L[2][6]), toLgd(L[2][7]), toLgd(L[2][8]), toLgd(L[2][9]), toLgd(L[2][10]), toLgd(L[2][11])))
|
f_keymap.write(" */\n")
|
||||||
output.write(" * -----------------------------------------------------------------------------------------------------------------\n")
|
|
||||||
output.write(" * {0} {1} {2} |{3}|{4}|{5}|{6}|{7}|{8}| {9} {10} {11}".format(toLgd(L[3][0]), toLgd(L[3][1]), toLgd(L[3][2]), toLgd(L[3][3]), toLgd(L[3][4]), toLgd(L[3][5]), toLgd(L[3][6]), toLgd(L[3][7]), toLgd(L[3][8]), toLgd(L[3][9]), toLgd(L[3][10]), toLgd(L[3][11])).rstrip()+"\n")
|
|
||||||
output.write(" * -------------------------------------------------\n")
|
|
||||||
output.write(" */\n")
|
|
||||||
|
|
||||||
l_code = '\tLAYOUT_ortho_4x12(\n'
|
l_code = '\tLAYOUT_ortho_4x12(\n'
|
||||||
for r in range(r_counter):
|
for r in range(r_counter):
|
||||||
r_counter -= 1
|
r_counter -= 1
|
||||||
c_counter = 12
|
c_counter = columns
|
||||||
l_code += '\t\t'
|
l_code += '\t\t'
|
||||||
for c in range(c_counter):
|
for c in range(c_counter):
|
||||||
c_counter -= 1
|
c_counter -= 1
|
||||||
if c != 0:
|
if c != 0:
|
||||||
l_code += " "
|
l_code += " "
|
||||||
l_code += "%s" % toKC(L[r][c])
|
l_code += "%s" % toKC(L[r*columns + columns-c_counter-1])
|
||||||
if r_counter or c_counter:
|
if r_counter or c_counter:
|
||||||
l_code += ","
|
l_code += ","
|
||||||
l_code += '\n'
|
l_code += '\n'
|
||||||
if counter:
|
if layer + 1 != len(layout.layers):
|
||||||
l_code += "\t),\n\n"
|
l_code += "\t),\n\n"
|
||||||
else:
|
else:
|
||||||
l_code += "\t)\n"
|
l_code += "\t)\n"
|
||||||
output.write(l_code)
|
f_keymap.write(l_code)
|
||||||
layer += 1
|
|
||||||
if doCopy:
|
if doCopy:
|
||||||
output.write(line)
|
f_keymap.write(line)
|
||||||
|
|
||||||
template.close()
|
|
||||||
output.close()
|
def getKeymapJSON(keyboard, keymap, layout, layers):
|
||||||
|
return json.dumps({
|
||||||
|
'keyboard': keyboard,
|
||||||
|
'keymap': keymap,
|
||||||
|
'layout': layout,
|
||||||
|
'layers': layers
|
||||||
|
}, sort_keys=True, indent=4)
|
||||||
|
|
||||||
|
|
||||||
|
def layersToKC(layers):
|
||||||
|
return [list(map(toKC, layer)) for layer in layers]
|
||||||
|
|
||||||
|
|
||||||
|
def pathToKeymap(path):
|
||||||
|
head, keymap = os.path.split(path)
|
||||||
|
_, keymapsdir = os.path.split(head)
|
||||||
|
if keymapsdir == 'keymaps':
|
||||||
|
return keymap
|
||||||
|
|
||||||
|
|
||||||
|
def pathToKeyboard(path):
|
||||||
|
head, keymap = os.path.split(path)
|
||||||
|
head, keymapsdir = os.path.split(head)
|
||||||
|
if keymapsdir == 'keymaps':
|
||||||
|
head, dir = os.path.split(head)
|
||||||
|
while dir not in ('/', 'keyboards'):
|
||||||
|
yield dir
|
||||||
|
head, dir = os.path.split(head)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
with open("km_template.txt", mode="r") as f_template:
|
||||||
|
with open("keymap.c", mode="w", encoding='utf-8') as f_keymap:
|
||||||
|
writeKeymap(f_template, f_keymap, columns=12, rows=4)
|
||||||
|
|
||||||
|
abspath = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
keyboard = list(reversed(list(pathToKeyboard(abspath))))
|
||||||
|
keymap = pathToKeymap(abspath)
|
||||||
|
keyboard_layout = 'LAYOUT_ortho_4x12'
|
||||||
|
with open("%s_%s.json" % ('_'.join(keyboard), keymap), mode="w") as f_keymapjson:
|
||||||
|
f_keymapjson.write(
|
||||||
|
getKeymapJSON(
|
||||||
|
'/'.join(keyboard),
|
||||||
|
keymap,
|
||||||
|
keyboard_layout,
|
||||||
|
layersToKC(layout.layers))
|
||||||
|
)
|
||||||
|
|
|
@ -672,8 +672,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
*/
|
*/
|
||||||
LAYOUT_ortho_4x12(
|
LAYOUT_ortho_4x12(
|
||||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_RBRC,
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_RBRC,
|
||||||
KC_TRNS, DF(0), DF(1), XXXXXXX, XXXXXXX, MO(3), KC_4, KC_4, KC_5, KC_6, KC_MINS, KC_EQL,
|
KC_TRNS, DF(0), DF(1), KC_NO, KC_NO, MO(3), KC_4, KC_4, KC_5, KC_6, KC_MINS, KC_EQL,
|
||||||
KC_TRNS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MO(5), KC_1, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
|
KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, MO(5), KC_1, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
|
||||||
TG(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, KC_TRNS, KC_BSPC, KC_0, KC_TRNS, KC_TRNS, KC_TRNS
|
TG(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, KC_TRNS, KC_BSPC, KC_0, KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
),
|
),
|
||||||
|
|
||||||
|
@ -689,9 +689,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
* -------------------------------------------------
|
* -------------------------------------------------
|
||||||
*/
|
*/
|
||||||
LAYOUT_ortho_4x12(
|
LAYOUT_ortho_4x12(
|
||||||
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX,
|
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_NO,
|
||||||
KC_TRNS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MO(3), KC_F4, KC_F4, KC_F5, KC_F6, XXXXXXX, XXXXXXX,
|
KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, MO(3), KC_F4, KC_F4, KC_F5, KC_F6, KC_NO, KC_NO,
|
||||||
KC_TRNS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F1, KC_F1, KC_F2, KC_F3, XXXXXXX, KC_TRNS,
|
KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F1, KC_F1, KC_F2, KC_F3, KC_NO, KC_TRNS,
|
||||||
TG(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS
|
TG(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
),
|
),
|
||||||
|
|
||||||
|
@ -709,7 +709,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
LAYOUT_ortho_4x12(
|
LAYOUT_ortho_4x12(
|
||||||
KC_ESC, KC_ESC, LCTL(KC_W), LCTL(KC_T), CTL_T(KC_PGDN), CTL_T(KC_PGDN), KC_PGDN, KC_HOME, KC_UP, KC_INS, LSFT(KC_INS), KC_ESC,
|
KC_ESC, KC_ESC, LCTL(KC_W), LCTL(KC_T), CTL_T(KC_PGDN), CTL_T(KC_PGDN), KC_PGDN, KC_HOME, KC_UP, KC_INS, LSFT(KC_INS), KC_ESC,
|
||||||
KC_TRNS, KC_CAPS, LGUI_T(KC_LEFT), LGUI_T(KC_TAB), LGUI_T(KC_RIGHT), LGUI_T(KC_RIGHT), KC_LEFT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_END, KC_PSCR,
|
KC_TRNS, KC_CAPS, LGUI_T(KC_LEFT), LGUI_T(KC_TAB), LGUI_T(KC_RIGHT), LGUI_T(KC_RIGHT), KC_LEFT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_END, KC_PSCR,
|
||||||
KC_TRNS, XXXXXXX, XXXXXXX, XXXXXXX, CTL_T(KC_PGUP), CTL_T(KC_PGUP), KC_PGUP, XXXXXXX, KC_DOWN, XXXXXXX, KC_APP, KC_TRNS,
|
KC_TRNS, KC_NO, KC_NO, KC_NO, CTL_T(KC_PGUP), CTL_T(KC_PGUP), KC_PGUP, KC_NO, KC_DOWN, KC_NO, KC_APP, KC_TRNS,
|
||||||
TG(4), KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, KC_TRNS, KC_BSPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
TG(4), KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, KC_TRNS, KC_BSPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
),
|
),
|
||||||
|
|
||||||
|
@ -725,9 +725,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
* -------------------------------------------------
|
* -------------------------------------------------
|
||||||
*/
|
*/
|
||||||
LAYOUT_ortho_4x12(
|
LAYOUT_ortho_4x12(
|
||||||
KC_TRNS, XXXXXXX, KC_MPLY, KC_VOLU, KC_VOLU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, KC_PWR,
|
KC_TRNS, KC_NO, KC_MPLY, KC_VOLU, KC_VOLU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RESET, KC_PWR,
|
||||||
KC_TRNS, XXXXXXX, KC_MPRV, KC_MUTE, KC_MNXT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SLEP,
|
KC_TRNS, KC_NO, KC_MPRV, KC_MUTE, KC_MNXT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_SLEP,
|
||||||
KC_TRNS, XXXXXXX, XXXXXXX, KC_VOLD, KC_VOLD, MO(5), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
KC_TRNS, KC_NO, KC_NO, KC_VOLD, KC_VOLD, MO(5), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||||
TG(5), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
TG(5), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
),
|
),
|
||||||
|
|
||||||
|
@ -743,9 +743,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
* -------------------------------------------------
|
* -------------------------------------------------
|
||||||
*/
|
*/
|
||||||
LAYOUT_ortho_4x12(
|
LAYOUT_ortho_4x12(
|
||||||
KC_TRNS, KC_ACL1, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_U, KC_WH_L, KC_MS_U, KC_WH_R, XXXXXXX, XXXXXXX,
|
KC_TRNS, KC_ACL1, KC_NO, KC_NO, KC_NO, KC_NO, KC_WH_U, KC_WH_L, KC_MS_U, KC_WH_R, KC_NO, KC_NO,
|
||||||
KC_TRNS, KC_ACL2, KC_BTN3, KC_BTN2, KC_BTN1, KC_BTN1, KC_MS_L, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, XXXXXXX,
|
KC_TRNS, KC_ACL2, KC_BTN3, KC_BTN2, KC_BTN1, KC_BTN1, KC_MS_L, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_NO,
|
||||||
KC_TRNS, KC_ACL0, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_D, XXXXXXX, KC_MS_D, XXXXXXX, XXXXXXX, KC_TRNS,
|
KC_TRNS, KC_ACL0, KC_NO, KC_NO, KC_NO, KC_NO, KC_WH_D, KC_NO, KC_MS_D, KC_NO, KC_NO, KC_TRNS,
|
||||||
TG(6), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
TG(6), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
# Add all used Unicode symbols to this list.
|
# Add all used Unicode symbols to this list.
|
||||||
# The key (e.g. "SNEK") is used in keymap.c for "enum", "unicode_map" and "keymaps", so it needs to be a valid C variable name.
|
# The key (e.g. "SNEK") is used in keymap.c for "enum", "unicode_map" and "keymaps", so it needs to be a valid C variable name.
|
||||||
# The key is also used in this file to define the layout, so use recognizeable names.
|
# The key is also used in this file to define the layout, so use recognizeable names.
|
||||||
|
@ -336,7 +338,7 @@ qmk_dict = {
|
||||||
# If you find "BAD" in your keymaps, then something went wrong.)
|
# If you find "BAD" in your keymaps, then something went wrong.)
|
||||||
"a": "BAD", "A": "BAD", "0": "BAD",
|
"a": "BAD", "A": "BAD", "0": "BAD",
|
||||||
# Basic Keycodes
|
# Basic Keycodes
|
||||||
"XXX": "XXXXXXX", "": "KC_TRNS",
|
"XXX": "KC_NO", "": "KC_TRNS",
|
||||||
"!": "S(KC_1)", "@": "S(KC_2)", "#": "S(KC_3)", "$": "S(KC_4)", "%": "S(KC_5)",
|
"!": "S(KC_1)", "@": "S(KC_2)", "#": "S(KC_3)", "$": "S(KC_4)", "%": "S(KC_5)",
|
||||||
"^": "S(KC_6)", "&": "S(KC_7)", "*": "S(KC_8)", "(": "S(KC_9)", ")": "S(KC_0)",
|
"^": "S(KC_6)", "&": "S(KC_7)", "*": "S(KC_8)", "(": "S(KC_9)", ")": "S(KC_0)",
|
||||||
"Enter": "KC_ENT", "Esc": "KC_ESC", "BSpace": "KC_BSPC", "Tab": "KC_TAB",
|
"Enter": "KC_ENT", "Esc": "KC_ESC", "BSpace": "KC_BSPC", "Tab": "KC_TAB",
|
||||||
|
@ -426,58 +428,58 @@ static = ["NEO", "GREEK", "GREEK", "GREEK", "GREEK", "MOUSE"]
|
||||||
|
|
||||||
# 0
|
# 0
|
||||||
qwerty = [
|
qwerty = [
|
||||||
["Tab", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "["],
|
"Tab", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[",
|
||||||
["LCtrl", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'"],
|
"LCtrl", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'",
|
||||||
["LShift(", "z", "x", "c", "v", "b", "n", "m", ",", ".", "/", "RShift)"],
|
"LShift(", "z", "x", "c", "v", "b", "n", "m", ",", ".", "/", "RShift)",
|
||||||
["MO2", "LGui", "LAlt", "TT2", "LT6_SPC", "TT4", "Enter", "Space", "TT2", "RAlt", "RGui", "RCtrl"],
|
"MO2", "LGui", "LAlt", "TT2", "LT6_SPC", "TT4", "Enter", "Space", "TT2", "RAlt", "RGui", "RCtrl",
|
||||||
]
|
]
|
||||||
|
|
||||||
# 1
|
# 1
|
||||||
colemak = [
|
colemak = [
|
||||||
["Tab", "q", "w", "f", "p", "g", "j", "l", "u", "y", ";", "["],
|
"Tab", "q", "w", "f", "p", "g", "j", "l", "u", "y", ";", "[",
|
||||||
["LCtrl", "a", "r", "s", "t", "d", "h", "n", "e", "i", "o", "'"],
|
"LCtrl", "a", "r", "s", "t", "d", "h", "n", "e", "i", "o", "'",
|
||||||
["LShift(", "z", "x", "c", "v", "b", "k", "m", ",", ".", "/", "RShift)"],
|
"LShift(", "z", "x", "c", "v", "b", "k", "m", ",", ".", "/", "RShift)",
|
||||||
["MO2", "LGui", "LAlt", "TT2", "LT6_SPC", "TT4", "Enter", "Space", "TT2", "RAlt", "RGui", "RCtrl"],
|
"MO2", "LGui", "LAlt", "TT2", "LT6_SPC", "TT4", "Enter", "Space", "TT2", "RAlt", "RGui", "RCtrl",
|
||||||
]
|
]
|
||||||
|
|
||||||
# 2
|
# 2
|
||||||
numpad = [
|
numpad = [
|
||||||
["`", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "]"],
|
"`", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "]",
|
||||||
["", "DF0", "DF1", "XXX", "XXX", "MO3", "4", "4", "5", "6", "-", "="],
|
"", "DF0", "DF1", "XXX", "XXX", "MO3", "4", "4", "5", "6", "-", "=",
|
||||||
["", "XXX", "XXX", "XXX", "XXX", "MO5", "1", "1", "2", "3", "\\", ""],
|
"", "XXX", "XXX", "XXX", "XXX", "MO5", "1", "1", "2", "3", "\\", "",
|
||||||
["TG2", "", "", "", "Del", "", "", "BSpace", "0", "", "", ""],
|
"TG2", "", "", "", "Del", "", "", "BSpace", "0", "", "", "",
|
||||||
]
|
]
|
||||||
|
|
||||||
# 3
|
# 3
|
||||||
fpad = [
|
fpad = [
|
||||||
["", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "XXX"],
|
"", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "XXX",
|
||||||
["", "XXX", "XXX", "XXX", "XXX", "MO3", "F4", "F4", "F5", "F6", "XXX", "XXX"],
|
"", "XXX", "XXX", "XXX", "XXX", "MO3", "F4", "F4", "F5", "F6", "XXX", "XXX",
|
||||||
["", "XXX", "XXX", "XXX", "XXX", "XXX", "F1", "F1", "F2", "F3", "XXX", ""],
|
"", "XXX", "XXX", "XXX", "XXX", "XXX", "F1", "F1", "F2", "F3", "XXX", "",
|
||||||
["TG3", "", "", "", "", "", "F10", "F11", "F12", "", "", ""],
|
"TG3", "", "", "", "", "", "F10", "F11", "F12", "", "", "",
|
||||||
]
|
]
|
||||||
|
|
||||||
# 4
|
# 4
|
||||||
movement = [
|
movement = [
|
||||||
["Esc", "Esc", "Tab x", "Tab n", "CPg Dn", "CPg Dn", "Pg Down", "Home", "^ Arrow", "Insert", "SInsert", "Esc"],
|
"Esc", "Esc", "Tab x", "Tab n", "CPg Dn", "CPg Dn", "Pg Down", "Home", "^ Arrow", "Insert", "SInsert", "Esc",
|
||||||
["", "Caps", "< Gui", "Gui Tab", "> Gui", "> Gui", "< Arrow", "< Arrow", "v Arrow", "> Arrow", "End", "Pr Scr"],
|
"", "Caps", "< Gui", "Gui Tab", "> Gui", "> Gui", "< Arrow", "< Arrow", "v Arrow", "> Arrow", "End", "Pr Scr",
|
||||||
["", "XXX", "XXX", "XXX", "CPg Up", "CPg Up", "Pg Up", "XXX", "v Arrow", "XXX", "App", ""],
|
"", "XXX", "XXX", "XXX", "CPg Up", "CPg Up", "Pg Up", "XXX", "v Arrow", "XXX", "App", "",
|
||||||
["TG4", "", "", "", "Del", "", "", "BSpace", "", "", "", ""],
|
"TG4", "", "", "", "Del", "", "", "BSpace", "", "", "", "",
|
||||||
]
|
]
|
||||||
|
|
||||||
# 5
|
# 5
|
||||||
media = [
|
media = [
|
||||||
["", "XXX", "play/ps", "Vol +", "Vol +", "XXX", "XXX", "XXX", "XXX", "XXX", "_reset", "Power"],
|
"", "XXX", "play/ps", "Vol +", "Vol +", "XXX", "XXX", "XXX", "XXX", "XXX", "_reset", "Power",
|
||||||
["", "XXX", "|<<", "Vol 0", ">>|", "XXX", "XXX", "XXX", "XXX", "XXX", "XXX", "Sleep"],
|
"", "XXX", "|<<", "Vol 0", ">>|", "XXX", "XXX", "XXX", "XXX", "XXX", "XXX", "Sleep",
|
||||||
["", "XXX", "XXX", "Vol -", "Vol -", "MO5", "XXX", "XXX", "XXX", "XXX", "XXX", "XXX"],
|
"", "XXX", "XXX", "Vol -", "Vol -", "MO5", "XXX", "XXX", "XXX", "XXX", "XXX", "XXX",
|
||||||
["TG5", "", "", "", "", "", "", "", "", "", "", ""],
|
"TG5", "", "", "", "", "", "", "", "", "", "", "",
|
||||||
]
|
]
|
||||||
|
|
||||||
# 6
|
# 6
|
||||||
mouse = [
|
mouse = [
|
||||||
["", "acc1", "XXX", "XXX", "XXX", "XXX", "^ Wheel", "< Wheel", "^ Mouse", "> Wheel", "XXX", "XXX"],
|
"", "acc1", "XXX", "XXX", "XXX", "XXX", "^ Wheel", "< Wheel", "^ Mouse", "> Wheel", "XXX", "XXX",
|
||||||
["", "acc2", "Mouse 3", "Mouse 2", "Mouse 1", "Mouse 1", "< Mouse", "< Mouse", "v Mouse", "> Mouse", "XXX", "XXX"],
|
"", "acc2", "Mouse 3", "Mouse 2", "Mouse 1", "Mouse 1", "< Mouse", "< Mouse", "v Mouse", "> Mouse", "XXX", "XXX",
|
||||||
["", "acc0", "XXX", "XXX", "XXX", "XXX", "v Wheel", "XXX", "v Mouse", "XXX", "XXX", ""],
|
"", "acc0", "XXX", "XXX", "XXX", "XXX", "v Wheel", "XXX", "v Mouse", "XXX", "XXX", "",
|
||||||
["TG6", "", "", "", "", "", "", "", "", "", "", ""],
|
"TG6", "", "", "", "", "", "", "", "", "", "", "",
|
||||||
]
|
]
|
||||||
|
|
||||||
layers = [
|
layers = [
|
||||||
|
|
|
@ -20,4 +20,5 @@ starting point to create your own layouts for the Signum 3.0 with
|
||||||
- Attention 2: additional C functions need to be put into
|
- Attention 2: additional C functions need to be put into
|
||||||
`km_template.txt`
|
`km_template.txt`
|
||||||
|
|
||||||
Run `./generate_km.py` to regenerate `keymap.c`.
|
Run `./generate_km.py` to regenerate `keymap.c` and the JSON keymap
|
||||||
|
definition that should be copied to `qmk_configurator/public/keymaps`.
|
||||||
|
|
Loading…
Reference in a new issue