aboutsummaryrefslogtreecommitdiff
path: root/keyboards/signum/3_0/keymaps
diff options
context:
space:
mode:
authorStan Gurenkov <klausflex@gmail.com>2021-09-24 13:05:29 -0400
committerGitHub <noreply@github.com>2021-09-24 10:05:29 -0700
commit4493a05b74d8852222faa776d140233745114c53 (patch)
treea7f272534946d9f7098e57d5e022c7f74fe34ef4 /keyboards/signum/3_0/keymaps
parent60b13d04cdf4b27f387be90d830dd196c38b1362 (diff)
downloadqmk_firmware-4493a05b74d8852222faa776d140233745114c53.tar.gz
qmk_firmware-4493a05b74d8852222faa776d140233745114c53.zip
[Keyboard] refactor signum30 (#14527)
Co-authored-by: Drashna Jaelre <drashna@live.com> Co-authored-by: Ryan <fauxpark@gmail.com> Co-authored-by: Stan Gurenkov <stan.gurenkov@docusign.com>
Diffstat (limited to 'keyboards/signum/3_0/keymaps')
-rwxr-xr-xkeyboards/signum/3_0/keymaps/default/generate_km.py194
-rw-r--r--keyboards/signum/3_0/keymaps/default/keymap.c761
-rw-r--r--keyboards/signum/3_0/keymaps/default/km_template.txt20
-rw-r--r--keyboards/signum/3_0/keymaps/default/layout.py495
-rw-r--r--keyboards/signum/3_0/keymaps/default/readme.md24
-rw-r--r--keyboards/signum/3_0/keymaps/default/rules.mk1
-rw-r--r--keyboards/signum/3_0/keymaps/sgurenkov/config.h45
-rw-r--r--keyboards/signum/3_0/keymaps/sgurenkov/keymap.c128
-rw-r--r--keyboards/signum/3_0/keymaps/sgurenkov/rules.mk2
9 files changed, 1670 insertions, 0 deletions
diff --git a/keyboards/signum/3_0/keymaps/default/generate_km.py b/keyboards/signum/3_0/keymaps/default/generate_km.py
new file mode 100755
index 000000000..cfa8edf57
--- /dev/null
+++ b/keyboards/signum/3_0/keymaps/default/generate_km.py
@@ -0,0 +1,194 @@
1#!/usr/bin/env python3
2# -*- coding: utf-8 -*-
3
4import json
5import layout
6import os
7import re
8
9
10def gen_uc_iter():
11 length = len(layout.uc_dict)
12 for key, value in sorted(layout.uc_dict.items()):
13 length -= 1
14 if length:
15 yield (key, value, False)
16 else:
17 yield (key, value, True)
18
19
20def _translate(s):
21 if re.match("^[0-9]$", s):
22 return ("KC_{0}".format(s), " {0} ".format(s))
23 elif re.match("^[a-z]$", s):
24 return ("KC_{0}".format(s.upper()), " {0} ".format(s))
25 elif re.match("^[A-Z]$", s):
26 return ("S(KC_{0})".format(s), " {0} ".format(s))
27 elif re.match("^F[0-9]{1,2}$", s): # Fn, works from F0 to F99
28 return ("KC_{0}".format(s), "{0:^7}".format(s))
29 elif re.match("^DF[0-9]{1,2}$", s): # DFn, works from DF0 to DF99
30 return ("DF({0})".format(s[2:]), "{0:^7}".format(s))
31 elif re.match("^MO[0-9]{1,2}$", s): # MOn, works from MO0 to MO99
32 return ("MO({0})".format(s[2:]), "{0:^7}".format(s))
33 elif re.match("^OSL[0-9]{1,2}$", s): # OSLn, works from OSL0 to OSL99
34 return ("OSL({0})".format(s[3:]), "{0:^7}".format(s))
35 elif re.match("^TG[0-9]{1,2}$", s): # TGn, works from TG0 to TG99
36 return ("TG({0})".format(s[2:]), "{0:^7}".format(s))
37 elif re.match("^TO[0-9]{1,2}$", s): # Tn, works from TO0 to TO99
38 return ("TO({0})".format(s[2:]), "{0:^7}".format(s))
39 elif re.match("^TT[0-9]{1,2}$", s): # Tn, works from TT0 to TT99
40 return ("TT({0})".format(s[2:]), "{0:^7}".format(s))
41 elif s in layout.uc_dict:
42 return ("X("+s+")", " {0} ".format(chr(int(layout.uc_dict[s], 0))))
43 elif s in layout.qmk_dict:
44 return (layout.qmk_dict[s], "{0:^7}".format(s))
45 elif s == s.upper() and s.startswith("KC_"):
46 return (s, "{0:^7}".format(s[2:]))
47 else:
48 return ("XXXXXXX", " {0} ".format(chr(128165)))
49
50
51def toKC(s):
52 return _translate(s)[0]
53
54
55def toLgd(s):
56 return _translate(s)[1]
57
58
59def quoteC(text):
60 yield "/*"
61 for line in text:
62 yield " * " + line
63 yield " */\n"
64
65
66def getKeymapText(id, layer, columns, rows):
67 keymap = []
68 keymap.append("Layer %d" % id)
69 keymap.append("------------------------------------------------- -------------------------------------------------")
70 keymap.append("|{0}|{1}|{2}|{3}|{4}|{5}| |{6}|{7}|{8}|{9}|{10}|{11}|".format(*map(toLgd, layer[:12])))
71 keymap.append("------------------------------------------------- -------------------------------------------------")
72 keymap.append("|{0}|{1}|{2}|{3}|{4}|{5}| |{6}|{7}|{8}|{9}|{10}|{11}|".format(*map(toLgd, layer[12:24])))
73 keymap.append("------------------------------------------------- -------------------------------------------------")
74 keymap.append("|{0}|{1}|{2}|{3}|{4}|{5}| |{6}|{7}|{8}|{9}|{10}|{11}|".format(*map(toLgd, layer[24:36])))
75 keymap.append("-----------------------------------------------------------------------------------------------------------------")
76 keymap.append(" {0} {1} {2} |{3}|{4}|{5}|{6}|{7}|{8}| {9} {10} {11}".format(*map(toLgd, layer[36:48])).rstrip())
77 keymap.append(" -------------------------------------------------")
78 return keymap
79
80
81def writeKeymap(f_template, f_keymap, layers, columns, rows):
82 doCopy = False
83
84 for line in f_template:
85 doCopy = True
86 if line.startswith("//<enum/>"):
87 doCopy = False
88 # f_keymap.write(str(layout.uc_dict))
89 for k, v, isLast in gen_uc_iter():
90 if isLast:
91 f_keymap.write(k + "\n")
92 else:
93 f_keymap.write(k + ",\n")
94 elif line.startswith("//<uc_map/>"):
95 doCopy = False
96 for k, v, isLast in gen_uc_iter():
97 if isLast:
98 f_keymap.write(u"\t[{0}] = {1} // {2}\n".format(k, v, chr(int(v, 0))))
99 else:
100 f_keymap.write(u"\t[{0}] = {1}, // {2}\n".format(k, v, chr(int(v, 0))))
101 elif line.startswith("//<keymaps/>"):
102 doCopy = False
103 for layer, L in enumerate(layers):
104 r_counter = rows
105 f_keymap.write('\n'.join(quoteC(getKeymapText(layer, L, columns, rows))))
106
107 l_code = '\tLAYOUT_ortho_4x12(\n'
108 for r in range(r_counter):
109 r_counter -= 1
110 c_counter = columns
111 l_code += '\t\t'
112 for c in range(c_counter):
113 c_counter -= 1
114 if c != 0:
115 l_code += " "
116 l_code += "%s" % toKC(L[r*columns + columns-c_counter-1])
117 if r_counter or c_counter:
118 l_code += ","
119 l_code += '\n'
120 if layer + 1 != len(layout.layers):
121 l_code += "\t),\n\n"
122 else:
123 l_code += "\t)\n"
124 f_keymap.write(l_code)
125 if doCopy:
126 f_keymap.write(line)
127
128
129def getKeymapJSON(keyboard, keymap, layout, layers):
130 return json.dumps({
131 'keyboard': keyboard,
132 'keymap': keymap,
133 'layout': layout,
134 'layers': layers
135 }, sort_keys=True, indent=4)
136
137
138def getKeymapAsciidoc(title, layers, columns, rows):
139 yield '= ' + title
140 yield ''
141 for id, layer in enumerate(layers):
142 keymap = getKeymapText(id, layer, columns, rows)
143 if len(keymap):
144 yield '.' + keymap[0]
145 yield '--------------------------'
146 for line in keymap[1:]:
147 yield ' ' + line
148 yield '--------------------------'
149 yield ''
150
151
152def layersToKC(layers):
153 return [list(map(toKC, layer)) for layer in layers]
154
155
156def pathToKeymap(path):
157 head, keymap = os.path.split(path)
158 _, keymapsdir = os.path.split(head)
159 if keymapsdir == 'keymaps':
160 return keymap
161
162
163def pathToKeyboard(path):
164 head, keymap = os.path.split(path)
165 head, keymapsdir = os.path.split(head)
166 if keymapsdir == 'keymaps':
167 head, dir = os.path.split(head)
168 while dir not in ('/', 'keyboards'):
169 yield dir
170 head, dir = os.path.split(head)
171
172
173if __name__ == "__main__":
174 with open("km_template.txt", mode="r") as f_template:
175 with open("keymap.c", mode="w", encoding='utf-8') as f_keymap:
176 writeKeymap(f_template, f_keymap, layout.layers, columns=12, rows=4)
177
178 abspath = os.path.dirname(os.path.abspath(__file__))
179 keyboard = list(reversed(list(pathToKeyboard(abspath))))
180 keymap = pathToKeymap(abspath)
181 keyboard_layout = 'LAYOUT_ortho_4x12'
182 with open("%s_%s.json" % ('_'.join(keyboard), keymap), mode="w") as f_keymapjson:
183 f_keymapjson.write(
184 getKeymapJSON(
185 '/'.join(keyboard),
186 keymap,
187 keyboard_layout,
188 layersToKC(layout.layers))
189 )
190
191 with open("keymap.adoc", mode="w") as f_keymapasciidoc:
192 f_keymapasciidoc.write('\n'.join(getKeymapAsciidoc('Signum 3.0 %s_%s' % ('_'.join(keyboard), keymap), layout.layers, columns=12, rows=4)))
193 print("Run the following command to generate a PDF from the keymap")
194 print("a2x -f pdf --xsltproc-opts '--stringparam page.orientation landscape --stringparam body.font.master 12' --fop -v keymap.adoc")
diff --git a/keyboards/signum/3_0/keymaps/default/keymap.c b/keyboards/signum/3_0/keymaps/default/keymap.c
new file mode 100644
index 000000000..15cf21530
--- /dev/null
+++ b/keyboards/signum/3_0/keymaps/default/keymap.c
@@ -0,0 +1,761 @@
1/* keymap.c is auto-generated, don't edit it directly.
2 * Further instructions are provided in readme.md */
3
4#include QMK_KEYBOARD_H
5
6enum unicode_name {
7AB_ARC,
8AB_LINE,
9AB_VEC,
10ACUTE,
11AE,
12ALEPH,
13ALLA_BR,
14ALPHA,
15AND,
16AND_,
17ANGLE,
18AST_MID,
19A_SET,
20BARLINE,
21BARLINE_D,
22BARLINE_FIN,
23BETA,
24BETH,
25BICOND,
26BIG_O,
27BISHOP_B,
28BISHOP_W,
29BITCOIN,
30BOTTOM,
31BOWTIE,
32BRA,
33BULLET,
34B_SET,
35CENT,
36CHI,
37CIRCLE,
38CIRC_MID,
39CLUBS_B,
40CLUBS_W,
41CODA,
42COMMON_T,
43COPYR,
44CORRESP,
45CROSS,
46CURRENCY,
47C_CLEF,
48C_SET,
49DACAPO,
50DALSEGNO,
51DEFINE,
52DEGREE,
53DELTA,
54DIAMS_B,
55DIAMS_W,
56DIGAMMA,
57DIVISION,
58DOTS,
59DOT_OP,
60DQT1,
61DQT2,
62DQT3,
63DQT4,
64DQT5,
65EIGHTH_N,
66EIGHTH_P,
67EJECT,
68EMBED,
69EMDASH,
70EMPTYSET,
71EPSILON,
72EQUIV,
73ETA,
74EURO,
75EXISTS,
76FEMALE,
77FLAG_B,
78FLAG_W,
79FLAT,
80FORALL,
81FORWARD,
82FOURIER,
83FULL_OUTER,
84F_CLEF,
85F_SET,
86GAMMA,
87GREAT_GREAT,
88GR_EQ,
89G_CLEF,
90HALF_N,
91HALF_P,
92HAMILTON,
93HEARTS_B,
94HEARTS_W,
95HETA,
96H_SET,
97IMAG_P,
98IMPL,
99IMPL_REV,
100IN,
101INDICATOR,
102INEQUAL,
103INFO,
104INFTY,
105INTEGRAL,
106INTERS,
107INTERS_,
108INV_EXCL,
109INV_QST,
110IOTA,
111ISOMORPH,
112KAPPA,
113KET,
114KEY,
115KING_B,
116KING_W,
117KNIGHT_B,
118KNIGHT_W,
119KOPPA,
120K_SET,
121LAMBDA,
122LAPLACE,
123LEFT_CEIL,
124LEFT_FLOOR,
125LEFT_OUTER,
126LENGTH,
127LESS_LESS,
128LETTER,
129LOCK,
130LOCK_OPEN,
131LS_EQ,
132LTIMES,
133MALE,
134MAPSTO,
135MDOT,
136MICRO,
137MINUS_OP,
138MINUS_PLUS,
139MINUTE,
140MODELS,
141MY,
142M_ANGLE,
143NABLA,
144NATURAL,
145NO,
146NOT,
147NOTIN,
148NOTSUBS,
149NOT_DIV,
150NOT_PARA,
151NY,
152N_SET,
153N_TILDE,
154OE,
155OHM,
156OMEGA,
157OMIKRON,
158OR,
159OR_,
160PARALLEL,
161PARTIAL,
162PAWN_B,
163PAWN_W,
164PEDAL,
165PEDAL_UP,
166PERMIL,
167PHI,
168PHONE,
169PI,
170PLAY,
171PLUS_MINUS,
172PLUS_OP,
173POUND,
174POWERSET,
175PRED,
176PROD_,
177PROP_TO,
178PR_SUBSET,
179PSI,
180QED,
181QUART_N,
182QUART_P,
183QUEEN_B,
184QUEEN_W,
185Q_SET,
186REAL_P,
187REGTM,
188REPEAT_E,
189REPEAT_S,
190REWIND,
191RHO,
192RIGHT_CEIL,
193RIGHT_FLOOR,
194RIGHT_OUTER,
195RIGHT_TACK,
196ROOK_B,
197ROOK_W,
198ROOT,
199ROUGHLY,
200RTIMES,
201R_SET,
202SAMPI,
203SAN,
204SCHO,
205SECOND,
206SECTION,
207SEGNO,
208SETMINUS,
209SHARP,
210SHOGI_B,
211SHOGI_BD,
212SHOGI_W,
213SHOGI_WD,
214SIGMA,
215SIXT_N,
216SIXT_P,
217SNEK,
218SPADES_B,
219SPADES_W,
220SPEAKER_DN,
221SPEAKER_TG,
222SPEAKER_UP,
223SQT1,
224SQT2,
225SQT3,
226SQT4,
227SQT5,
228SQUARE,
229SQ_LS,
230SQ_LS_EQ,
231STAFF,
232STIGMA,
233STOP,
234SUBSET,
235SUBSET_REV,
236SUCC,
237SUM_,
238SUP1,
239SUP2,
240SUP3,
241SUP_A,
242SUP_MIN,
243SUP_O,
244SZ,
245TAU,
246THETA,
247TIMES,
248TIMES_OP,
249TMARK,
250TO,
251TOP,
252TRIANGLE,
253UE,
254UNION,
255UNION_,
256U_SET,
257WHOLE_N,
258WHOLE_P,
259XI,
260YEN,
261YES,
262YPSI2,
263YPSILON,
264ZETA,
265Z_SET,
266ae,
267alpha,
268beta,
269beta2,
270chi,
271delta,
272digamma,
273e_FUN,
274epsi2,
275epsilon,
276eta,
277gamma,
278heta,
279i_UNIT,
280iota,
281kappa,
282kappa2,
283koppa,
284lambda,
285my,
286n_tilde,
287ny,
288oe,
289omega,
290omikron,
291phi,
292phi2,
293pi,
294pi2,
295psi,
296rho,
297rho2,
298sampi,
299san,
300scho,
301sigma,
302sigma2,
303sigma3,
304stigma,
305sz,
306tau,
307theta,
308theta2,
309ue,
310xi,
311ypsilon,
312zeta
313};
314
315const uint32_t PROGMEM unicode_map[] = {
316 [AB_ARC] = 0x0361, // ͡
317 [AB_LINE] = 0x0305, // ̅
318 [AB_VEC] = 0x20d7, // ⃗
319 [ACUTE] = 0x00b4, // ´
320 [AE] = 0x00c4, // Ä
321 [ALEPH] = 0x2135, // ℵ
322 [ALLA_BR] = 0x1d135, // 𝄵
323 [ALPHA] = 0x0391, // Α
324 [AND] = 0x2227, // ∧
325 [AND_] = 0x22c0, // ⋀
326 [ANGLE] = 0x2220, // ∠
327 [AST_MID] = 0x2217, // ∗
328 [A_SET] = 0x1d538, // 𝔸
329 [BARLINE] = 0x1d100, // 𝄀
330 [BARLINE_D] = 0x1d101, // 𝄁
331 [BARLINE_FIN] = 0x1d102, // 𝄂
332 [BETA] = 0x0392, // Β
333 [BETH] = 0x2136, // ℶ
334 [BICOND] = 0x21d4, // ⇔
335 [BIG_O] = 0x1d4aa, // 𝒪
336 [BISHOP_B] = 0x265d, // ♝
337 [BISHOP_W] = 0x2657, // ♗
338 [BITCOIN] = 0x20bf, // ₿
339 [BOTTOM] = 0x22a5, // ⊥
340 [BOWTIE] = 0x22c8, // ⋈
341 [BRA] = 0x27e8, // ⟨
342 [BULLET] = 0x2022, // •
343 [B_SET] = 0x1d539, // 𝔹
344 [CENT] = 0x00a2, // ¢
345 [CHI] = 0x03a7, // Χ
346 [CIRCLE] = 0x25cb, // ○
347 [CIRC_MID] = 0x2218, // ∘
348 [CLUBS_B] = 0x2663, // ♣
349 [CLUBS_W] = 0x2667, // ♧
350 [CODA] = 0x1d10c, // 𝄌
351 [COMMON_T] = 0x1d134, // 𝄴
352 [COPYR] = 0x00a9, // ©
353 [CORRESP] = 0x2259, // ≙
354 [CROSS] = 0x2020, // †
355 [CURRENCY] = 0x00a4, // ¤
356 [C_CLEF] = 0x1d121, // 𝄡
357 [C_SET] = 0x2102, // ℂ
358 [DACAPO] = 0x1d10a, // 𝄊
359 [DALSEGNO] = 0x1d109, // 𝄉
360 [DEFINE] = 0x2254, // ≔
361 [DEGREE] = 0x00b0, // °
362 [DELTA] = 0x0394, // Δ
363 [DIAMS_B] = 0x2666, // ♦
364 [DIAMS_W] = 0x2662, // ♢
365 [DIGAMMA] = 0x03dc, // Ϝ
366 [DIVISION] = 0x00f7, // ÷
367 [DOTS] = 0x2026, // …
368 [DOT_OP] = 0x2299, // ⊙
369 [DQT1] = 0x00bb, // »
370 [DQT2] = 0x201e, // „
371 [DQT3] = 0x201c, // “
372 [DQT4] = 0x201d, // ”
373 [DQT5] = 0x00ab, // «
374 [EIGHTH_N] = 0x1d160, // 𝅘𝅥𝅮
375 [EIGHTH_P] = 0x1d13e, // 𝄾
376 [EJECT] = 0x23cf, // ⏏
377 [EMBED] = 0x21aa, // ↪
378 [EMDASH] = 0x2014, // —
379 [EMPTYSET] = 0x2205, // ∅
380 [EPSILON] = 0x0395, // Ε
381 [EQUIV] = 0x2261, // ≡
382 [ETA] = 0x0397, // Η
383 [EURO] = 0x20ac, // €
384 [EXISTS] = 0x2203, // ∃
385 [FEMALE] = 0x2640, // ♀
386 [FLAG_B] = 0x2691, // ⚑
387 [FLAG_W] = 0x2690, // ⚐
388 [FLAT] = 0x266d, // ♭
389 [FORALL] = 0x2200, // ∀
390 [FORWARD] = 0x23ed, // ⏭
391 [FOURIER] = 0x2131, // ℱ
392 [FULL_OUTER] = 0x27d7, // ⟗
393 [F_CLEF] = 0x1d122, // 𝄢
394 [F_SET] = 0x1d53d, // 𝔽
395 [GAMMA] = 0x0393, // Γ
396 [GREAT_GREAT] = 0x226b, // ≫
397 [GR_EQ] = 0x2265, // ≥
398 [G_CLEF] = 0x1d11e, // 𝄞
399 [HALF_N] = 0x1d15e, // 𝅗𝅥
400 [HALF_P] = 0x1d13c, // 𝄼
401 [HAMILTON] = 0x210b, // ℋ
402 [HEARTS_B] = 0x2665, // ♥
403 [HEARTS_W] = 0x2661, // ♡
404 [HETA] = 0x0370, // Ͱ
405 [H_SET] = 0x210d, // ℍ
406 [IMAG_P] = 0x2111, // ℑ
407 [IMPL] = 0x21d2, // ⇒
408 [IMPL_REV] = 0x21d0, // ⇐
409 [IN] = 0x2208, // ∈
410 [INDICATOR] = 0x1d7cf, // 𝟏
411 [INEQUAL] = 0x2260, // ≠
412 [INFO] = 0x1f6c8, // 🛈
413 [INFTY] = 0x221e, // ∞
414 [INTEGRAL] = 0x222b, // ∫
415 [INTERS] = 0x2229, // ∩
416 [INTERS_] = 0x22c2, // ⋂
417 [INV_EXCL] = 0x00a1, // ¡
418 [INV_QST] = 0x00bf, // ¿
419 [IOTA] = 0x0399, // Ι
420 [ISOMORPH] = 0x2245, // ≅
421 [KAPPA] = 0x039a, // Κ
422 [KET] = 0x27e9, // ⟩
423 [KEY] = 0x1f511, // 🔑
424 [KING_B] = 0x265a, // ♚
425 [KING_W] = 0x2654, // ♔
426 [KNIGHT_B] = 0x265e, // ♞
427 [KNIGHT_W] = 0x2658, // ♘
428 [KOPPA] = 0x03d8, // Ϙ
429 [K_SET] = 0x1d542, // 𝕂
430 [LAMBDA] = 0x039b, // Λ
431 [LAPLACE] = 0x2112, // ℒ
432 [LEFT_CEIL] = 0x2308, // ⌈
433 [LEFT_FLOOR] = 0x230a, // ⌊
434 [LEFT_OUTER] = 0x27d5, // ⟕
435 [LENGTH] = 0x2113, // ℓ
436 [LESS_LESS] = 0x226a, // ≪
437 [LETTER] = 0x2709, // ✉
438 [LOCK] = 0x1f512, // 🔒
439 [LOCK_OPEN] = 0x1f513, // 🔓
440 [LS_EQ] = 0x2264, // ≤
441 [LTIMES] = 0x22c9, // ⋉
442 [MALE] = 0x2642, // ♂
443 [MAPSTO] = 0x27fc, // ⟼
444 [MDOT] = 0x22c5, // ⋅
445 [MICRO] = 0x00b5, // µ
446 [MINUS_OP] = 0x2296, // ⊖
447 [MINUS_PLUS] = 0x2213, // ∓
448 [MINUTE] = 0x02b9, // ʹ
449 [MODELS] = 0x22a7, // ⊧
450 [MY] = 0x039c, // Μ
451 [M_ANGLE] = 0x2221, // ∡
452 [NABLA] = 0x2207, // ∇
453 [NATURAL] = 0x266e, // ♮
454 [NO] = 0x2717, // ✗
455 [NOT] = 0x00ac, // ¬
456 [NOTIN] = 0x2209, // ∉
457 [NOTSUBS] = 0x2288, // ⊈
458 [NOT_DIV] = 0x2224, // ∤
459 [NOT_PARA] = 0x2226, // ∦
460 [NY] = 0x039d, // Ν
461 [N_SET] = 0x2115, // ℕ
462 [N_TILDE] = 0x00d1, // Ñ
463 [OE] = 0x00d6, // Ö
464 [OHM] = 0x2126, // Ω
465 [OMEGA] = 0x03a9, // Ω
466 [OMIKRON] = 0x039f, // Ο
467 [OR] = 0x2228, // ∨
468 [OR_] = 0x22c1, // ⋁
469 [PARALLEL] = 0x2225, // ∥
470 [PARTIAL] = 0x2202, // ∂
471 [PAWN_B] = 0x265f, // ♟
472 [PAWN_W] = 0x2659, // ♙
473 [PEDAL] = 0x1d1ae, // 𝆮
474 [PEDAL_UP] = 0x1d1af, // 𝆯
475 [PERMIL] = 0x2030, // ‰
476 [PHI] = 0x03a6, // Φ
477 [PHONE] = 0x2706, // ✆
478 [PI] = 0x03a0, // Π
479 [PLAY] = 0x23ef, // ⏯
480 [PLUS_MINUS] = 0x00b1, // ±
481 [PLUS_OP] = 0x2295, // ⊕
482 [POUND] = 0x00a3, // £
483 [POWERSET] = 0x1d4ab, // 𝒫
484 [PRED] = 0x227a, // ≺
485 [PROD_] = 0x220f, // ∏
486 [PROP_TO] = 0x221d, // ∝
487 [PR_SUBSET] = 0x2282, // ⊂
488 [PSI] = 0x03a8, // Ψ
489 [QED] = 0x220e, // ∎
490 [QUART_N] = 0x1d15f, // 𝅘𝅥
491 [QUART_P] = 0x1d13d, // 𝄽
492 [QUEEN_B] = 0x265b, // ♛
493 [QUEEN_W] = 0x2655, // ♕
494 [Q_SET] = 0x211a, // ℚ
495 [REAL_P] = 0x211c, // ℜ
496 [REGTM] = 0x00ae, // ®
497 [REPEAT_E] = 0x1d107, // 𝄇
498 [REPEAT_S] = 0x1d106, // 𝄆
499 [REWIND] = 0x23ee, // ⏮
500 [RHO] = 0x03a1, // Ρ
501 [RIGHT_CEIL] = 0x2309, // ⌉
502 [RIGHT_FLOOR] = 0x230b, // ⌋
503 [RIGHT_OUTER] = 0x27d6, // ⟖
504 [RIGHT_TACK] = 0x22a2, // ⊢
505 [ROOK_B] = 0x265c, // ♜
506 [ROOK_W] = 0x2656, // ♖
507 [ROOT] = 0x221a, // √
508 [ROUGHLY] = 0x2248, // ≈
509 [RTIMES] = 0x22ca, // ⋊
510 [R_SET] = 0x211d, // ℝ
511 [SAMPI] = 0x0372, // Ͳ
512 [SAN] = 0x03fa, // Ϻ
513 [SCHO] = 0x03f7, // Ϸ
514 [SECOND] = 0x02ba, // ʺ
515 [SECTION] = 0x00a7, // §
516 [SEGNO] = 0x1d10b, // 𝄋
517 [SETMINUS] = 0x2216, // ∖
518 [SHARP] = 0x266f, // ♯
519 [SHOGI_B] = 0x2617, // ☗
520 [SHOGI_BD] = 0x26ca, // ⛊
521 [SHOGI_W] = 0x2616, // ☖
522 [SHOGI_WD] = 0x26c9, // ⛉
523 [SIGMA] = 0x03a3, // Σ
524 [SIXT_N] = 0x1d161, // 𝅘𝅥𝅯
525 [SIXT_P] = 0x1d13f, // 𝄿
526 [SNEK] = 0x1f40d, // 🐍
527 [SPADES_B] = 0x2660, // ♠
528 [SPADES_W] = 0x2664, // ♤
529 [SPEAKER_DN] = 0x1f509, // 🔉
530 [SPEAKER_TG] = 0x1f507, // 🔇
531 [SPEAKER_UP] = 0x1f50a, // 🔊
532 [SQT1] = 0x203a, // ›
533 [SQT2] = 0x201a, // ‚
534 [SQT3] = 0x2018, // ‘
535 [SQT4] = 0x2019, // ’
536 [SQT5] = 0x2039, // ‹
537 [SQUARE] = 0x25a1, // □
538 [SQ_LS] = 0x228f, // ⊏
539 [SQ_LS_EQ] = 0x2291, // ⊑
540 [STAFF] = 0x1d11a, // 𝄚
541 [STIGMA] = 0x03da, // Ϛ
542 [STOP] = 0x25fc, // ◼
543 [SUBSET] = 0x2286, // ⊆
544 [SUBSET_REV] = 0x2287, // ⊇
545 [SUCC] = 0x227b, // ≻
546 [SUM_] = 0x2211, // ∑
547 [SUP1] = 0x00b9, // ¹
548 [SUP2] = 0x00b2, // ²
549 [SUP3] = 0x00b3, // ³
550 [SUP_A] = 0x00aa, // ª
551 [SUP_MIN] = 0x207b, // ⁻
552 [SUP_O] = 0x00ba, // º
553 [SZ] = 0x1e9e, // ẞ
554 [TAU] = 0x03a4, // Τ
555 [THETA] = 0x0398, // Θ
556 [TIMES] = 0x00d7, // ×
557 [TIMES_OP] = 0x2297, // ⊗
558 [TMARK] = 0x2122, // ™
559 [TO] = 0x27f6, // ⟶
560 [TOP] = 0x22a4, // ⊤
561 [TRIANGLE] = 0x25b3, // △
562 [UE] = 0x00dc, // Ü
563 [UNION] = 0x222a, // ∪
564 [UNION_] = 0x22c3, // ⋃
565 [U_SET] = 0x1d54c, // 𝕌
566 [WHOLE_N] = 0x1d15d, // 𝅝
567 [WHOLE_P] = 0x1d13b, // 𝄻
568 [XI] = 0x039e, // Ξ
569 [YEN] = 0x00a5, // ¥
570 [YES] = 0x2713, // ✓
571 [YPSI2] = 0x03d2, // ϒ
572 [YPSILON] = 0x03a5, // Υ
573 [ZETA] = 0x0396, // Ζ
574 [Z_SET] = 0x2124, // ℤ
575 [ae] = 0x00e4, // ä
576 [alpha] = 0x03b1, // α
577 [beta] = 0x03b2, // β
578 [beta2] = 0x03d0, // ϐ
579 [chi] = 0x03c7, // χ
580 [delta] = 0x03b4, // δ
581 [digamma] = 0x03dd, // ϝ
582 [e_FUN] = 0x0065, // e
583 [epsi2] = 0x03f5, // ϵ
584 [epsilon] = 0x03b5, // ε
585 [eta] = 0x03b7, // η
586 [gamma] = 0x03b3, // γ
587 [heta] = 0x0371, // ͱ
588 [i_UNIT] = 0x0069, // i
589 [iota] = 0x03b9, // ι
590 [kappa] = 0x03ba, // κ
591 [kappa2] = 0x03f0, // ϰ
592 [koppa] = 0x03d9, // ϙ
593 [lambda] = 0x03bb, // λ
594 [my] = 0x03bc, // μ
595 [n_tilde] = 0x00f1, // ñ
596 [ny] = 0x03bd, // ν
597 [oe] = 0x00f6, // ö
598 [omega] = 0x03c9, // ω
599 [omikron] = 0x03bf, // ο
600 [phi] = 0x03c6, // φ
601 [phi2] = 0x03d5, // ϕ
602 [pi] = 0x03c0, // π
603 [pi2] = 0x03d6, // ϖ
604 [psi] = 0x03c8, // ψ
605 [rho] = 0x03c1, // ρ
606 [rho2] = 0x03f1, // ϱ
607 [sampi] = 0x0373, // ͳ
608 [san] = 0x03fb, // ϻ
609 [scho] = 0x03f8, // ϸ
610 [sigma] = 0x03c3, // σ
611 [sigma2] = 0x03c2, // ς
612 [sigma3] = 0x03f2, // ϲ
613 [stigma] = 0x03db, // ϛ
614 [sz] = 0x00df, // ß
615 [tau] = 0x03c4, // τ
616 [theta] = 0x03b8, // θ
617 [theta2] = 0x03d1, // ϑ
618 [ue] = 0x00fc, // ü
619 [xi] = 0x03be, // ξ
620 [ypsilon] = 0x03c5, // υ
621 [zeta] = 0x03b6 // ζ
622};
623
624const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
625
626/*
627 * Layer 0
628 * ------------------------------------------------- -------------------------------------------------
629 * | Tab | q | w | e | r | t | | y | u | i | o | p | [ |
630 * ------------------------------------------------- -------------------------------------------------
631 * |LCtTEsc| a | s | d | f | g | | h | j | k | l | ; | ' |
632 * ------------------------------------------------- -------------------------------------------------
633 * |LShift(| z | x | c | v | b | | n | m | , | . | / |RShift)|
634 * -----------------------------------------------------------------------------------------------------------------
635 * LCtrl[ LAlt LGui | TT2 |LT6_SPC|LT4_DEL|LT4_ENT| Space |LT2_BSP| RGui RLAlt RCtrl]
636 * -------------------------------------------------
637 */
638 LAYOUT_ortho_4x12(
639 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
640 LCTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
641 KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC,
642 LCTL_T(KC_LBRC), KC_LALT, KC_LGUI, TT(2), LT(6,KC_SPC), LT(4,KC_DEL), LT(4,KC_ENT), KC_SPC, LT(2,KC_BSPC), KC_RGUI, LALT_T(KC_RALT), RCTL_T(KC_RBRC)
643 ),
644
645/*
646 * Layer 1
647 * ------------------------------------------------- -------------------------------------------------
648 * | Tab | q | w | f | p | g | | j | l | u | y | ; | [ |
649 * ------------------------------------------------- -------------------------------------------------
650 * |LCtTEsc| a | r | s | t | d | | h | n | e | i | o | ' |
651 * ------------------------------------------------- -------------------------------------------------
652 * |LShift(| z | x | c | v | b | | k | m | , | . | / |RShift)|
653 * -----------------------------------------------------------------------------------------------------------------
654 * LCtrl[ LAlt LGui | TT2 |LT6_SPC|LT4_DEL|LT4_ENT| Space |LT2_BSP| RGui RLAlt RCtrl]
655 * -------------------------------------------------
656 */
657 LAYOUT_ortho_4x12(
658 KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC,
659 LCTL_T(KC_ESC), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
660 KC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC,
661 LCTL_T(KC_LBRC), KC_LALT, KC_LGUI, TT(2), LT(6,KC_SPC), LT(4,KC_DEL), LT(4,KC_ENT), KC_SPC, LT(2,KC_BSPC), KC_RGUI, LALT_T(KC_RALT), RCTL_T(KC_RBRC)
662 ),
663
664/*
665 * Layer 2
666 * ------------------------------------------------- -------------------------------------------------
667 * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ] |
668 * ------------------------------------------------- -------------------------------------------------
669 * | | DF0 | DF1 | XXX | MO3 | MO3 | | 4 | 4 | 5 | 6 | - | = |
670 * ------------------------------------------------- -------------------------------------------------
671 * | | MO5 | XXX | XXX | XXX | XXX | | 1 | 1 | 2 | 3 | \ | |
672 * -----------------------------------------------------------------------------------------------------------------
673 * TG2 | | | Del | | 0 |BSpace |
674 * -------------------------------------------------
675 */
676 LAYOUT_ortho_4x12(
677 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_RBRC,
678 KC_TRNS, DF(0), DF(1), KC_NO, MO(3), MO(3), KC_4, KC_4, KC_5, KC_6, KC_MINS, KC_EQL,
679 KC_TRNS, MO(5), KC_NO, KC_NO, KC_NO, KC_NO, KC_1, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
680 TG(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, KC_0, KC_BSPC, KC_TRNS, KC_TRNS, KC_TRNS
681 ),
682
683/*
684 * Layer 3
685 * ------------------------------------------------- -------------------------------------------------
686 * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | XXX |
687 * ------------------------------------------------- -------------------------------------------------
688 * | | XXX | XXX | XXX | MO3 | MO3 | | F4 | F4 | F5 | F6 | F11 | XXX |
689 * ------------------------------------------------- -------------------------------------------------
690 * | | XXX | XXX | XXX | XXX | XXX | | F1 | F1 | F2 | F3 | F12 | |
691 * -----------------------------------------------------------------------------------------------------------------
692 * TG3 | | | | | | |
693 * -------------------------------------------------
694 */
695 LAYOUT_ortho_4x12(
696 KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_NO,
697 KC_TRNS, KC_NO, KC_NO, KC_NO, MO(3), MO(3), KC_F4, KC_F4, KC_F5, KC_F6, KC_F11, KC_NO,
698 KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F1, KC_F1, KC_F2, KC_F3, KC_F12, KC_TRNS,
699 TG(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
700 ),
701
702/*
703 * Layer 4
704 * ------------------------------------------------- -------------------------------------------------
705 * | Esc | Esc | Tab x | Tab n |CPg Dn |CPg Dn | |Pg Down| Home |^ Arrow|Insert |SInsert| Esc |
706 * ------------------------------------------------- -------------------------------------------------
707 * | | Caps | < Gui |Gui Tab| > Gui | > Gui | |< Arrow|< Arrow|v Arrow|> Arrow| End |Pr Scr |
708 * ------------------------------------------------- -------------------------------------------------
709 * | | XXX | XXX | XXX |CPg Up |CPg Up | | Pg Up | |v Arrow| XXX | App | |
710 * -----------------------------------------------------------------------------------------------------------------
711 * TG4 | | | Del | |BSpace | |
712 * -------------------------------------------------
713 */
714 LAYOUT_ortho_4x12(
715 KC_ESC, KC_ESC, LCTL(KC_W), LCTL(KC_T), LCTL(KC_PGDN), LCTL(KC_PGDN), KC_PGDN, KC_HOME, KC_UP, KC_INS, LSFT(KC_INS), KC_ESC,
716 KC_TRNS, KC_CAPS, LGUI(KC_LEFT), LGUI(KC_TAB), LGUI(KC_RGHT), LGUI(KC_RGHT), KC_LEFT, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, KC_PSCR,
717 KC_TRNS, KC_NO, KC_NO, KC_NO, LCTL(KC_PGUP), LCTL(KC_PGUP), KC_PGUP, KC_TRNS, KC_DOWN, KC_NO, KC_APP, KC_TRNS,
718 TG(4), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, KC_BSPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
719 ),
720
721/*
722 * Layer 5
723 * ------------------------------------------------- -------------------------------------------------
724 * | | XXX |play/ps| Vol + | Vol + | XXX | | XXX | XXX | XXX | XXX |_reset | Power |
725 * ------------------------------------------------- -------------------------------------------------
726 * | | XXX | |<< | Vol 0 | >>| | XXX | | XXX | XXX | XXX | XXX | XXX | Sleep |
727 * ------------------------------------------------- -------------------------------------------------
728 * | | MO5 | XXX | Vol - | Vol - | XXX | | XXX | XXX | XXX | XXX | XXX | XXX |
729 * -----------------------------------------------------------------------------------------------------------------
730 * TG5 | | | | | | |
731 * -------------------------------------------------
732 */
733 LAYOUT_ortho_4x12(
734 KC_TRNS, KC_NO, KC_MPLY, KC_VOLU, KC_VOLU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RESET, KC_PWR,
735 KC_TRNS, KC_NO, KC_MPRV, KC_MUTE, KC_MNXT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_SLEP,
736 KC_TRNS, MO(5), KC_NO, KC_VOLD, KC_VOLD, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
737 TG(5), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
738 ),
739
740/*
741 * Layer 6
742 * ------------------------------------------------- -------------------------------------------------
743 * | | acc1 | XXX | XXX | XXX | XXX | |^ Wheel|< Wheel|^ Mouse|> Wheel| XXX | XXX |
744 * ------------------------------------------------- -------------------------------------------------
745 * | | acc2 |Mouse 2|Mouse 3|Mouse 1|Mouse 1| |< Mouse|< Mouse|v Mouse|> Mouse| XXX | XXX |
746 * ------------------------------------------------- -------------------------------------------------
747 * | | acc0 | XXX | XXX | XXX | XXX | |v Wheel| XXX |v Mouse| XXX | XXX | |
748 * -----------------------------------------------------------------------------------------------------------------
749 * TG6 | | | | | | |
750 * -------------------------------------------------
751 */
752 LAYOUT_ortho_4x12(
753 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,
754 KC_TRNS, KC_ACL2, KC_BTN2, KC_BTN3, KC_BTN1, KC_BTN1, KC_MS_L, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_NO,
755 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,
756 TG(6), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
757 )
758};
759
760/* vi: ft=c:tw=80:sw=2:ts=2:sts=2:et
761 */
diff --git a/keyboards/signum/3_0/keymaps/default/km_template.txt b/keyboards/signum/3_0/keymaps/default/km_template.txt
new file mode 100644
index 000000000..47b35ee51
--- /dev/null
+++ b/keyboards/signum/3_0/keymaps/default/km_template.txt
@@ -0,0 +1,20 @@
1/* keymap.c is auto-generated, don't edit it directly.
2 * Further instructions are provided in readme.md */
3
4#include QMK_KEYBOARD_H
5
6enum unicode_name {
7//<enum/>
8};
9
10const uint32_t PROGMEM unicode_map[] = {
11//<uc_map/>
12};
13
14const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
15
16//<keymaps/>
17};
18
19/* vi: ft=c:tw=80:sw=2:ts=2:sts=2:et
20 */
diff --git a/keyboards/signum/3_0/keymaps/default/layout.py b/keyboards/signum/3_0/keymaps/default/layout.py
new file mode 100644
index 000000000..1e43e25c5
--- /dev/null
+++ b/keyboards/signum/3_0/keymaps/default/layout.py
@@ -0,0 +1,495 @@
1# -*- coding: utf-8 -*-
2
3# Add all used Unicode symbols to this list.
4# 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.
5# The key is also used in this file to define the layout, so use recognizeable names.
6# The value (e.g. "0x1f40d") is used in keymap.c for "unicode_map" and to automatically generate the "ASCII"-art comments.
7# When adding new Unicode names, use "0x1f40d" until you looked up the correct Unicode code point.
8uc_dict = {
9 "SNEK": "0x1f40d", ## Error
10 ## qwertz
11 "ACUTE": "0x00b4",
12 ## QWERTZ
13 "INV_EXCL": "0x00a1",
14 "INV_QST": "0x00bf",
15 ## numpad
16 "SUP1": "0x00b9",
17 "SUP2": "0x00b2",
18 "SUP3": "0x00b3",
19 "SUP_MIN": "0x207b",
20 "ROOT": "0x221a",
21 "DEGREE": "0x00b0",
22 "MINUTE": "0x02b9",
23 "SECOND": "0x02ba",
24 "CURRENCY": "0x00a4",
25 "CENT": "0x00a2",
26 "YEN": "0x00a5",
27 "POUND": "0x00a3",
28 "EURO": "0x20ac",
29 "DIVISION": "0x00f7",
30 "MICRO": "0x00b5",
31 "OHM": "0x2126",
32 "BITCOIN": "0x20bf",
33 "SECTION": "0x00a7",
34 ## NAV_TYPO
35 "SQT1": "0x203a",
36 "SQT2": "0x201a",
37 "SQT3": "0x2018",
38 "SQT4": "0x2019",
39 "SQT5": "0x2039",
40 "SUP_A": "0x00aa",
41 "SUP_O": "0x00ba",
42 "TMARK": "0x2122",
43 "COPYR": "0x00a9",
44 "REGTM": "0x00ae",
45 "DOTS": "0x2026",
46 "CROSS": "0x2020",
47 "BULLET": "0x2022",
48 "EMDASH": "0x2014",
49 "PERMIL": "0x2030",
50 "DQT1": "0x00bb",
51 "DQT2": "0x201e",
52 "DQT3": "0x201c",
53 "DQT4": "0x201d",
54 "DQT5": "0x00ab",
55 ## lang
56 "ae": "0x00e4",
57 "oe": "0x00f6",
58 "ue": "0x00fc",
59 "sz": "0x00df",
60 "n_tilde": "0x00f1",
61 ## LANG
62 "AE": "0x00c4",
63 "OE": "0x00d6",
64 "UE": "0x00dc",
65 "SZ": "0x1e9e",
66 "N_TILDE": "0x00d1",
67 ## greek
68 "alpha": "0x03b1",
69 "beta": "0x03b2",
70 "gamma": "0x03b3",
71 "delta": "0x03b4",
72 "epsilon": "0x03b5",
73 "zeta": "0x03b6",
74 "eta": "0x03b7",
75 "theta": "0x03b8",
76 "iota": "0x03b9",
77 "kappa": "0x03ba",
78 "lambda": "0x03bb",
79 "my": "0x03bc",
80 "ny": "0x03bd",
81 "xi": "0x03be",
82 "omikron": "0x03bf",
83 "pi": "0x03c0",
84 "rho": "0x03c1",
85 "sigma": "0x03c3",
86 "tau": "0x03c4",
87 "ypsilon": "0x03c5",
88 "phi": "0x03c6",
89 "chi": "0x03c7",
90 "psi": "0x03c8",
91 "omega": "0x03c9",
92 # variants
93 "beta2": "0x03d0",
94 "epsi2": "0x03f5",
95 "theta2": "0x03d1",
96 "kappa2": "0x03f0",
97 "pi2": "0x03d6",
98 "rho2": "0x03f1",
99 "sigma2": "0x03c2",
100 "sigma3": "0x03f2",
101 "phi2": "0x03d5",
102 # non-standard
103 "digamma": "0x03dd",
104 "stigma": "0x03db",
105 "heta": "0x0371",
106 "san": "0x03fb",
107 "koppa": "0x03d9",
108 "sampi": "0x0373",
109 "scho": "0x03f8",
110 ## GREEK
111 "ALPHA": "0x0391",
112 "BETA": "0x0392",
113 "GAMMA": "0x0393",
114 "DELTA": "0x0394",
115 "EPSILON": "0x0395",
116 "ZETA": "0x0396",
117 "ETA": "0x0397",
118 "THETA": "0x0398",
119 "IOTA": "0x0399",
120 "KAPPA": "0x039a",
121 "LAMBDA": "0x039b",
122 "MY": "0x039c",
123 "NY": "0x039d",
124 "XI": "0x039e",
125 "OMIKRON": "0x039f",
126 "PI": "0x03a0",
127 "RHO": "0x03a1",
128 "SIGMA": "0x03a3",
129 "TAU": "0x03a4",
130 "YPSILON": "0x03a5",
131 "PHI": "0x03a6",
132 "CHI": "0x03a7",
133 "PSI": "0x03a8",
134 "OMEGA": "0x03a9",
135 # variants
136 "YPSI2": "0x03d2",
137 # non-standard
138 "DIGAMMA": "0x03dc",
139 "STIGMA": "0x03da",
140 "HETA": "0x0370",
141 "SAN": "0x03fa",
142 "KOPPA": "0x03d8",
143 "SAMPI": "0x0372",
144 "SCHO": "0x03f7",
145 ## symbol
146 "SHOGI_WD": "0x26c9",
147 "FLAG_W": "0x2690",
148 "LETTER": "0x2709",
149 "PHONE": "0x2706",
150 "INFO": "0x1f6c8",
151 "REWIND": "0x23ee",
152 "PLAY": "0x23ef",
153 "FORWARD": "0x23ed",
154 "STOP": "0x25fc",
155 "EJECT": "0x23cf",
156 "SHOGI_W": "0x2616",
157 "FEMALE": "0x2640",
158 "MALE": "0x2642",
159 "NO": "0x2717",
160 "YES": "0x2713",
161 "FLAT": "0x266d",
162 "NATURAL": "0x266e",
163 "SHARP": "0x266f",
164 "COMMON_T": "0x1d134",
165 "ALLA_BR": "0x1d135",
166 "PAWN_W": "0x2659",
167 "DIAMS_W": "0x2662",
168 "HEARTS_W": "0x2661",
169 "SPADES_W": "0x2664",
170 "CLUBS_W": "0x2667",
171 "WHOLE_N": "0x1d15d",
172 "HALF_N": "0x1d15e",
173 "QUART_N": "0x1d15f",
174 "EIGHTH_N": "0x1d160",
175 "SIXT_N": "0x1d161",
176 "ROOK_W": "0x2656",
177 "KNIGHT_W": "0x2658",
178 "BISHOP_W": "0x2657",
179 "QUEEN_W": "0x2655",
180 "KING_W": "0x2654",
181 "C_CLEF": "0x1d121",
182 "G_CLEF": "0x1d11e",
183 "F_CLEF": "0x1d122",
184 "PEDAL": "0x1d1ae",
185 "PEDAL_UP": "0x1d1af",
186 ## SYMBOL
187 "SHOGI_BD": "0x26ca",
188 "FLAG_B": "0x2691",
189 "SPEAKER_UP": "0x1f50a",
190 "SPEAKER_TG": "0x1f507",
191 "SPEAKER_DN": "0x1f509",
192 "SHOGI_B": "0x2617",
193 "KEY": "0x1f511",
194 "LOCK": "0x1f512",
195 "LOCK_OPEN": "0x1f513",
196 "STAFF": "0x1d11a",
197 "BARLINE": "0x1d100",
198 "BARLINE_D": "0x1d101",
199 "BARLINE_FIN": "0x1d102",
200 "CODA": "0x1d10c",
201 "PAWN_B": "0x265f",
202 "DIAMS_B": "0x2666",
203 "HEARTS_B": "0x2665",
204 "SPADES_B": "0x2660",
205 "CLUBS_B": "0x2663",
206 "WHOLE_P": "0x1d13b",
207 "HALF_P": "0x1d13c",
208 "QUART_P": "0x1d13d",
209 "EIGHTH_P": "0x1d13e",
210 "SIXT_P": "0x1d13f",
211 "ROOK_B": "0x265c",
212 "KNIGHT_B": "0x265e",
213 "BISHOP_B": "0x265d",
214 "QUEEN_B": "0x265b",
215 "KING_B": "0x265a",
216 "REPEAT_S": "0x1d106",
217 "REPEAT_E": "0x1d107",
218 "SEGNO": "0x1d10b",
219 "DALSEGNO": "0x1d109",
220 "DACAPO": "0x1d10a",
221 ## math
222 "EXISTS": "0x2203",
223 "FORALL": "0x2200",
224 "EQUIV": "0x2261",
225 "CORRESP": "0x2259",
226 "INEQUAL": "0x2260",
227 "DEFINE": "0x2254",
228 "TO": "0x27f6",
229 "MAPSTO": "0x27fc",
230 "SETMINUS": "0x2216",
231 "QED": "0x220e",
232 "OR_": "0x22c1",
233 "AND_": "0x22c0",
234 "OR": "0x2228",
235 "AND": "0x2227",
236 "NOT": "0x00ac",
237 "BICOND": "0x21d4",
238 "IMPL_REV": "0x21d0",
239 "IMPL": "0x21d2",
240 "TOP": "0x22a4",
241 "BOTTOM": "0x22a5",
242 "SUM_": "0x2211",
243 "PROD_": "0x220f",
244 "MDOT": "0x22c5",
245 "NOTIN": "0x2209",
246 "IN": "0x2208",
247 "LS_EQ": "0x2264",
248 "GR_EQ": "0x2265",
249 "INFTY": "0x221e",
250 "UNION_": "0x22c3",
251 "INTERS_": "0x22c2",
252 "UNION": "0x222a",
253 "INTERS": "0x2229",
254 "NOTSUBS": "0x2288",
255 "PR_SUBSET": "0x2282",
256 "SUBSET": "0x2286",
257 "SUBSET_REV": "0x2287",
258 "EMPTYSET": "0x2205",
259 ## MATHSCRIPT
260 "LEFT_CEIL": "0x2308",
261 "REAL_P": "0x211c",
262 "NABLA": "0x2207",
263 "RIGHT_CEIL": "0x2309",
264 "LEFT_FLOOR": "0x230a",
265 "BRA": "0x27e8",
266 "IMAG_P": "0x2111",
267 "KET": "0x27e9",
268 "RIGHT_FLOOR": "0x230b",
269 "Q_SET": "0x211a",
270 "e_FUN": "0x0065",
271 "R_SET": "0x211d",
272 "Z_SET": "0x2124",
273 "U_SET": "0x1d54c",
274 "i_UNIT": "0x0069",
275 "BIG_O": "0x1d4aa",
276 "POWERSET": "0x1d4ab",
277 "A_SET": "0x1d538",
278 "INTEGRAL": "0x222b",
279 "PARTIAL": "0x2202",
280 "F_SET": "0x1d53d",
281 "H_SET": "0x210d",
282 "K_SET": "0x1d542",
283 "LENGTH": "0x2113",
284 "ALEPH": "0x2135",
285 "BETH": "0x2136",
286 "C_SET": "0x2102",
287 "B_SET": "0x1d539",
288 "N_SET": "0x2115",
289 "INDICATOR": "0x1d7cf",
290 "FOURIER": "0x2131",
291 "HAMILTON": "0x210b",
292 "LAPLACE": "0x2112",
293 ## MATHEXT
294 "RIGHT_TACK": "0x22a2",
295 "MODELS": "0x22a7",
296 "AB_VEC": "0x20d7",
297 "AB_LINE": "0x0305",
298 "AB_ARC": "0x0361",
299 "LESS_LESS": "0x226a",
300 "PRED": "0x227a",
301 "EMBED": "0x21aa",
302 "SUCC": "0x227b",
303 "GREAT_GREAT": "0x226b",
304 "TRIANGLE": "0x25b3",
305 "SQUARE": "0x25a1",
306 "CIRCLE": "0x25cb",
307 "DOT_OP": "0x2299",
308 "PLUS_OP": "0x2295",
309 "MINUS_OP": "0x2296",
310 "ROUGHLY": "0x2248",
311 "ISOMORPH": "0x2245",
312 "LTIMES": "0x22c9",
313 "RTIMES": "0x22ca",
314 "BOWTIE": "0x22c8",
315 "M_ANGLE": "0x2221",
316 "ANGLE": "0x2220",
317 "CIRC_MID": "0x2218",
318 "AST_MID": "0x2217",
319 "TIMES": "0x00d7",
320 "PLUS_MINUS": "0x00b1",
321 "MINUS_PLUS": "0x2213",
322 "LEFT_OUTER": "0x27d5",
323 "RIGHT_OUTER": "0x27d6",
324 "FULL_OUTER": "0x27d7",
325 "SQ_LS": "0x228f",
326 "SQ_LS_EQ": "0x2291",
327 "PROP_TO": "0x221d",
328 "PARALLEL": "0x2225",
329 "NOT_PARA": "0x2226",
330 "TIMES_OP": "0x2297",
331 "NOT_DIV": "0x2224"
332}
333
334# Add all used Keycodes to this list.
335# The key (e.g. "a") is used in keymap.c to automatically generate the comments. The first 7 chars will show as a keycap legend.
336qmk_dict = {
337 # test cases (These are handled in generate_km.py within toKC() and toLgd(), so these definitions will be ignored.
338 # If you find "BAD" in your keymaps, then something went wrong.)
339 "a": "BAD", "A": "BAD", "0": "BAD",
340 # Basic Keycodes
341 "XXX": "KC_NO", "": "KC_TRNS",
342 "!": "S(KC_1)", "@": "S(KC_2)", "#": "S(KC_3)", "$": "S(KC_4)", "%": "S(KC_5)",
343 "^": "S(KC_6)", "&": "S(KC_7)", "*": "S(KC_8)", "(": "S(KC_9)", ")": "S(KC_0)",
344 "Enter": "KC_ENT", "Esc": "KC_ESC", "BSpace": "KC_BSPC", "Tab": "KC_TAB",
345 "Space": "KC_SPC", "-": "KC_MINS", "_": "S(KC_MINS)", "=": "KC_EQL",
346 "+": "S(KC_EQL)", "[": "KC_LBRC", "{": "S(KC_LBRC)", "]": "KC_RBRC",
347 "}": "S(KC_RBRC)", "\\": "KC_BSLS", "|": "S(KC_BSLS)", ";": "KC_SCLN",
348 ":": "S(KC_SCLN)", "'": "KC_QUOT", "\"": "S(KC_QUOT)", "`": "KC_GRV",
349 "~": "S(KC_GRV)", ",": "KC_COMM", "<": "S(KC_COMM)", ".": "KC_DOT",
350 ">": "S(KC_DOT)", "/": "KC_SLSH", "?": "S(KC_SLSH)", "Caps": "KC_CAPS",
351 "Pr Scr": "KC_PSCR", "Scr Lck": "KC_SLCK", "Pause": "KC_BRK", "Insert": "KC_INS", "SInsert": "LSFT(KC_INS)",
352 "Home": "KC_HOME", "Pg Up": "KC_PGUP", "Del": "KC_DEL", "End": "KC_END",
353 "Pg Down": "KC_PGDN", "> Arrow": "KC_RGHT", "< Arrow": "KC_LEFT",
354 "v Arrow": "KC_DOWN", "^ Arrow": "KC_UP",
355 # Keypad keycodes missing
356 "App": "KC_APP", "Menu": "KC_MENU",
357 # Command keycodes missing (Execute, Help, ..., Find)
358 # Basic Keycodes missing from Print Screen onwards, included as fallback
359 # random Keycodes
360 "RGui": "KC_RGUI", "LGui": "KC_LGUI", "LAlt": "KC_LALT", "RLAlt": "LALT_T(KC_RALT)", "RAlt": "KC_RALT", "LShift": "KC_LSFT", "LCtrl": "KC_LCTL", "LCtTBsp": "LCTL_T(KC_BSPC)", "LCtTEsc": "LCTL_T(KC_ESC)", "RCtrl": "KC_RCTL",
361 "LShift(": "KC_LSPO", "RShift)": "KC_RSPC",
362 # "LShift(": "LSFT_T(KC_9)", "RShift)": "RSFT_T(RSFT(KC_0))",
363 "LCtrl[": "LCTL_T(KC_LBRC)", "RCtrl]": "RCTL_T(KC_RBRC)",
364 "L1_ENT": "LT(1, KC_ENT)", "LT2_BSP": "LT(2,KC_BSPC)", "LT4_DEL": "LT(4,KC_DEL)", "LT4_ENT": "LT(4,KC_ENT)", "LT6_SPC": "LT(6,KC_SPC)",
365 "CPg Dn": "LCTL(KC_PGDN)", "CPg Up": "LCTL(KC_PGUP)",
366 "S_Enter": "S(KC_ENT)", "S_Tab": "S(KC_TAB)", "Compose": "KC_ALGR",
367 "RShift": "KC_RSFT",
368 "Vol 0": "KC_MUTE", "Vol +": "KC_VOLU", "Vol -": "KC_VOLD",
369 ">>|": "KC_MNXT", "|<<": "KC_MPRV", "play/ps": "KC_MPLY",
370 "Bri +": "KC_BRIU", "Bri -": "KC_BRID",
371 # Quantum Keycodes
372 "_reset": "RESET", "_debug": "DEBUG", "_eep_re": "EEP_RST",
373 # Audio Keys missing
374 # Backlighting
375 "Led 0": "BL_TOGG", "Led +": "BL_INC", "Led -": "BL_DEC", "Led ~": "BL_BRTG",
376 # Bootmagic missing
377 # Bluetooth
378 "OUT_AUTO": "OUT_AUTO", "OUT_USB": "OUT_USB", "OUT_BT": "OUT_BT",
379 # Layer Switching missing, Lx -> MO(x), Tx -> TG(x)
380 "qwertz": "DF(0)", "neo": "DF(2)",
381 # Mouse Keys
382 "^ Mouse": "KC_MS_U", "v Mouse": "KC_MS_D", "< Mouse": "KC_MS_L",
383 "> Mouse": "KC_MS_R", "Mouse 1": "KC_BTN1", "Mouse 2": "KC_BTN2",
384 "Mouse 3": "KC_BTN3", "Mouse 4": "KC_BTN4", "Mouse 5": "KC_BTN5",
385 "^ Wheel": "KC_WH_U", "v Wheel": "KC_WH_D", "< Wheel": "KC_WH_L",
386 "> Wheel": "KC_WH_R", "acc0": "KC_ACL0", "acc1": "KC_ACL1",
387 "acc2": "KC_ACL2",
388 # Modifiers missinng, add entry for each specific application
389 # Mod-Tap Keys missing, add entry for each specific application
390 "_Sh_swp": "LSFT_T(SH_TG)",
391 # RGB Lighting missing
392 # RGB Matrix Lighting missing
393 # Thermal Printer missing
394 # US ANSI Shifted Symbols done via S(), don't add KC_entries
395 # One Shot Keys missing
396 # Swap Hands
397 "_sp_swp": "SHT(KC_SPC)",
398 # Unicode support (via X()) included implicitly
399 # Switching Unicode Input Modes
400 "UC_win": "UC_M_WC", "UC_lnx": "UC_M_LN", "UC_mac": "UC_M_MA",
401
402 # custom keys
403 "altF4": "LALT(KC_F4)",
404 "Undo": "LCTL(KC_Z)", "Cut": "LCTL(KC_X)", "Copy": "LCTL(KC_C)", "Paste": "LCTL(KC_V)",
405 "< Tab": "LCTL(S(KC_TAB))", "> Tab": "LCTL(KC_TAB)",
406 "Tab x": "LCTL(KC_W)", "Tab n": "LCTL(KC_T)",
407 "Gui Tab": "LGUI(KC_TAB)", "< Gui": "LGUI(KC_LEFT)", "> Gui": "LGUI(KC_RGHT)",
408 "C+A+Del": "LCTL(LALT(KC_DEL))", "Mic 0": "LCTL(KC_M)",
409 "Power": "KC_PWR", "Sleep": "KC_SLEP",
410
411 # macros
412 "Macro 1": "KC_1", "Macro 2": "KC_2", "Macro 3": "KC_3", "Macro 4": "KC_4", "Macro 5": "KC_5",
413
414 # custom layers
415 "GREEK": "GREEK",
416 "SYMBOL": "SYMBOL",
417 "MATH": "MATH",
418 "GAME": "GAME",
419 "MOUSE": "MOUSE",
420 "NEO": "TG(2)"
421}
422
423# These keys are repeated in all layers.
424# Generate a keymap.c with the python script and refer to the "ASCII"-art comments, to see which positions this concerns.
425# If you want to put different keycodes in these positions for different layers, you need to modify the python script by yourself.
426static = ["NEO", "GREEK", "GREEK", "GREEK", "GREEK", "MOUSE"]
427
428# mutex_layers = {"GREEK": 8, "GAME": 10, "MOUSE": 11}
429# layer_graph = ...
430
431# 0
432qwerty = [
433 "Tab", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[",
434 "LCtTEsc", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'",
435 "LShift(", "z", "x", "c", "v", "b", "n", "m", ",", ".", "/", "RShift)",
436 "LCtrl[", "LAlt", "LGui", "TT2", "LT6_SPC", "LT4_DEL", "LT4_ENT", "Space", "LT2_BSP", "RGui", "RLAlt", "RCtrl]",
437 ]
438
439# 1
440colemak = [
441 "Tab", "q", "w", "f", "p", "g", "j", "l", "u", "y", ";", "[",
442 "LCtTEsc", "a", "r", "s", "t", "d", "h", "n", "e", "i", "o", "'",
443 "LShift(", "z", "x", "c", "v", "b", "k", "m", ",", ".", "/", "RShift)",
444 "LCtrl[", "LAlt", "LGui", "TT2", "LT6_SPC", "LT4_DEL", "LT4_ENT", "Space", "LT2_BSP", "RGui", "RLAlt", "RCtrl]",
445 ]
446
447# 2
448numpad = [
449 "`", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "]",
450 "", "DF0", "DF1", "XXX", "MO3", "MO3", "4", "4", "5", "6", "-", "=",
451 "", "MO5", "XXX", "XXX", "XXX", "XXX", "1", "1", "2", "3", "\\", "",
452 "TG2", "", "", "", "", "Del", "", "0", "BSpace", "", "", "",
453 ]
454
455# 3
456fpad = [
457 "", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "XXX",
458 "", "XXX", "XXX", "XXX", "MO3", "MO3", "F4", "F4", "F5", "F6", "F11", "XXX",
459 "", "XXX", "XXX", "XXX", "XXX", "XXX", "F1", "F1", "F2", "F3", "F12", "",
460 "TG3", "", "", "", "", "", "", "", "", "", "", "",
461 ]
462
463# 4
464movement = [
465 "Esc", "Esc", "Tab x", "Tab n", "CPg Dn", "CPg Dn", "Pg Down", "Home", "^ Arrow", "Insert", "SInsert", "Esc",
466 "", "Caps", "< Gui", "Gui Tab", "> Gui", "> Gui", "< Arrow", "< Arrow", "v Arrow", "> Arrow", "End", "Pr Scr",
467 "", "XXX", "XXX", "XXX", "CPg Up", "CPg Up", "Pg Up", "", "v Arrow", "XXX", "App", "",
468 "TG4", "", "", "", "", "Del", "", "BSpace", "", "", "", "",
469 ]
470
471# 5
472media = [
473 "", "XXX", "play/ps", "Vol +", "Vol +", "XXX", "XXX", "XXX", "XXX", "XXX", "_reset", "Power",
474 "", "XXX", "|<<", "Vol 0", ">>|", "XXX", "XXX", "XXX", "XXX", "XXX", "XXX", "Sleep",
475 "", "MO5", "XXX", "Vol -", "Vol -", "XXX", "XXX", "XXX", "XXX", "XXX", "XXX", "XXX",
476 "TG5", "", "", "", "", "", "", "", "", "", "", "",
477 ]
478
479# 6
480mouse = [
481 "", "acc1", "XXX", "XXX", "XXX", "XXX", "^ Wheel", "< Wheel", "^ Mouse", "> Wheel", "XXX", "XXX",
482 "", "acc2", "Mouse 2", "Mouse 3", "Mouse 1", "Mouse 1", "< Mouse", "< Mouse", "v Mouse", "> Mouse", "XXX", "XXX",
483 "", "acc0", "XXX", "XXX", "XXX", "XXX", "v Wheel", "XXX", "v Mouse", "XXX", "XXX", "",
484 "TG6", "", "", "", "", "", "", "", "", "", "", "",
485 ]
486
487layers = [
488 qwerty,
489 colemak,
490 numpad,
491 fpad,
492 movement,
493 media,
494 mouse
495 ]
diff --git a/keyboards/signum/3_0/keymaps/default/readme.md b/keyboards/signum/3_0/keymaps/default/readme.md
new file mode 100644
index 000000000..be8cc30e8
--- /dev/null
+++ b/keyboards/signum/3_0/keymaps/default/readme.md
@@ -0,0 +1,24 @@
1# Default layout
2
3Layout created by: [Jan Christoph Ebersbach](https://github.com/jceb)
4
5The `generate_km.py` file automatically generates `keymap.c` with
6additional comments that visually represent the layout.
7
8This layout is maintained as I am using it. You can also use it as a
9starting point to create your own layouts for the Signum 3.0 with
10`km_template.txt` and `generate_km.py`.
11
12# Customization
13
14- Customize `layout.py` to your liking.
15 - Attention 1: keycodes are either translated into symbols and
16 function calls via the `translate()` function in `generate_km.py`
17 or via user-defined mappings in the dictionary `qmk_dict` in
18 `layout.py`. Especially the latter might require adjustment for
19 uncommon qmk features
20 - Attention 2: additional C functions need to be put into
21 `km_template.txt`
22
23Run `./generate_km.py` to regenerate `keymap.c` and the JSON keymap
24definition that should be copied to `qmk_configurator/public/keymaps`.
diff --git a/keyboards/signum/3_0/keymaps/default/rules.mk b/keyboards/signum/3_0/keymaps/default/rules.mk
new file mode 100644
index 000000000..502b2def7
--- /dev/null
+++ b/keyboards/signum/3_0/keymaps/default/rules.mk
@@ -0,0 +1 @@
UNICODEMAP_ENABLE = yes
diff --git a/keyboards/signum/3_0/keymaps/sgurenkov/config.h b/keyboards/signum/3_0/keymaps/sgurenkov/config.h
new file mode 100644
index 000000000..5f8d0d02b
--- /dev/null
+++ b/keyboards/signum/3_0/keymaps/sgurenkov/config.h
@@ -0,0 +1,45 @@
1/* Copyright 2021 Stan Gurenkov <rococo04_fox@icloud.com>
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#pragma once
17
18#define ONESHOT_TAP_TOGGLE 2
19#define ONESHOT_TIMEOUT 5000
20#define LEADER_TIMEOUT 600
21#define LEADER_PER_KEY_TIMING 300
22
23// default but used in macros
24#define TAPPING_TERM 300
25
26// Prevent normal rollover on alphas from accidentally triggering mods.
27#define IGNORE_MOD_TAP_INTERRUPT
28
29// Auto Shift and Retro Shift (Auto Shift for Tap Hold).
30#define AUTO_SHIFT_TIMEOUT TAPPING_TERM
31
32// Recommended for heavy chording.
33#define QMK_KEYS_PER_SCAN 4
34
35// Mouse key speed and acceleration.
36#undef MOUSEKEY_DELAY
37#define MOUSEKEY_DELAY 0
38#undef MOUSEKEY_INTERVAL
39#define MOUSEKEY_INTERVAL 16
40#undef MOUSEKEY_WHEEL_DELAY
41#define MOUSEKEY_WHEEL_DELAY 0
42#undef MOUSEKEY_MAX_SPEED
43#define MOUSEKEY_MAX_SPEED 6
44#undef MOUSEKEY_TIME_TO_MAX
45#define MOUSEKEY_TIME_TO_MAX 64
diff --git a/keyboards/signum/3_0/keymaps/sgurenkov/keymap.c b/keyboards/signum/3_0/keymaps/sgurenkov/keymap.c
new file mode 100644
index 000000000..f6cdcfd24
--- /dev/null
+++ b/keyboards/signum/3_0/keymaps/sgurenkov/keymap.c
@@ -0,0 +1,128 @@
1/* Copyright 2021 Stan Gurenkov <rococo04_fox@icloud.com>
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#include QMK_KEYBOARD_H
17
18#define M0(kc) MT(MOD_HYPR, kc)
19#define M1(kc) MT(MOD_LGUI, kc)
20#define M2(kc) MT(MOD_LCTL, kc)
21#define M3(kc) MT(MOD_LALT, kc)
22#define M4(kc) MT(MOD_LSFT, kc)
23#define LTH1 LT(L_LEFT, KC_SPC)
24#define LTH2 LT(L_NUM, KC_BSPC)
25#define RTH1 LT(L_RIGHT, KC_SPC)
26#define RTH2 LT(L_NUM, KC_ENT)
27#define COPY LCMD(KC_C)
28#define PASTE LCMD(KC_V)
29// Layers
30#define L_BASE 0
31#define L_LEFT 1
32#define L_RIGHT 2
33#define L_NUM 3
34
35bool is_cmd_tab_active = false;
36
37enum custom_keycodes {
38 CMD_TAB = SAFE_RANGE,
39};
40// clang-format off
41const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
42// L_BASE
43 LAYOUT(
44 KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
45 KC_TAB, M4(KC_A), M3(KC_S), M2(KC_D), M1(KC_F), M0(KC_G), M0(KC_H), M1(KC_J), M2(KC_K), M3(KC_L), M4(KC_COLN), KC_QUOT,
46 KC_GRV, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS,
47 OSM(MOD_LSFT), KC_LEAD, KC_LGUI, LTH1, XXXXXXX, LTH2, RTH2, XXXXXXX, RTH1, KC_RGUI, KC_LEAD, OSM(MOD_HYPR)),
48
49// L_LEFT
50 LAYOUT(
51 _______, XXXXXXX, XXXXXXX, KC_EQL, KC_PERC, KC_AT, COPY, KC_UNDS, KC_HASH, RALT(KC_SPC), KC_PLUS, _______,
52 _______, KC_LSHIFT, KC_LALT, KC_LCTL, KC_LGUI, KC_HYPR, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_LBRC, KC_RBRC,
53 _______, XXXXXXX, KC_EXLM, KC_CIRC, XXXXXXX, KC_HOME, KC_END, KC_MINS, KC_LPRN, KC_RPRN, PASTE, XXXXXXX,
54 _______, KC_BRID, KC_BRIU, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, _______),
55
56// L_RIGHT
57 LAYOUT(
58 _______, XXXXXXX, XXXXXXX, KC_EQL, KC_PERC, KC_AT, COPY, KC_UNDS, KC_HASH, RALT(KC_SPC), KC_PLUS, _______,
59 _______, KC_AMPR, KC_ASTR, KC_DLR, LGUI(KC_GRV), XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_RSFT, KC_RBRC,
60 _______, XXXXXXX, KC_EXLM, KC_CIRC, XXXXXXX, KC_HOME, KC_END, KC_MINS, KC_LPRN, KC_RPRN, PASTE, XXXXXXX,
61 _______, KC_BRID, KC_BRIU, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, _______),
62
63// L_NUM
64 LAYOUT(
65 _______, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F12, KC_MINS, KC_7, KC_8, KC_9, KC_COMM, _______,
66 _______, M4(KC_LSFT), M3(KC_F4), M2(KC_F5), M1(KC_F6), M0(KC_F11), M0(KC_DOT), M1(KC_4), M2(KC_5), M3(KC_6), M4(KC_0), _______,
67 _______, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F10, KC_PLUS, KC_1, KC_2, KC_3, KC_DOT, _______,
68 _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MEDIA_PREV_TRACK , KC_MEDIA_NEXT_TRACK, KC_MEDIA_PLAY_PAUSE),
69
70 LAYOUT(
71 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
72 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
73 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
74 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
75};
76// clang-format on
77bool process_record_user(uint16_t keycode, keyrecord_t *record) {
78 switch (keycode) {
79 case CMD_TAB:
80 if (record->event.pressed) {
81 register_code(KC_LCMD);
82 tap_code(KC_TAB);
83 layer_on(2);
84 } else {
85 unregister_code(KC_LCMD);
86 layer_off(2);
87 }
88 break;
89 case KC_ESC:
90 layer_clear();
91 }
92 return true;
93}
94
95LEADER_EXTERNS();
96
97void matrix_scan_user(void) {
98 LEADER_DICTIONARY() {
99 leading = false;
100 leader_end();
101
102 // Cancel task CTRL+C
103 SEQ_ONE_KEY(KC_C) { tap_code16(C(KC_C)); }
104 // copy
105 SEQ_ONE_KEY(KC_Y) { tap_code16(G(KC_C)); }
106 // cut
107 SEQ_ONE_KEY(KC_X) { tap_code16(G(KC_X)); }
108 // paste
109 SEQ_ONE_KEY(KC_P) { tap_code16(G(KC_V)); }
110 // undo
111 SEQ_ONE_KEY(KC_U) { tap_code16(G(KC_Z)); }
112 // redo
113 SEQ_ONE_KEY(KC_R) { tap_code16(S(G(KC_Z))); }
114 // delete line
115 SEQ_TWO_KEYS(KC_D, KC_D) {
116 register_code(KC_LGUI);
117
118 tap_code(KC_RIGHT);
119
120 tap_code(KC_BSPACE);
121
122 unregister_code(KC_LGUI);
123 }
124 // go to the beginning of the string
125 SEQ_ONE_KEY(KC_H) { tap_code16(G(KC_LEFT)); }
126 // go to the end of the string
127 SEQ_ONE_KEY(KC_L) { tap_code16(G(KC_RIGHT)); }
128 }
diff --git a/keyboards/signum/3_0/keymaps/sgurenkov/rules.mk b/keyboards/signum/3_0/keymaps/sgurenkov/rules.mk
new file mode 100644
index 000000000..5c9a4b49b
--- /dev/null
+++ b/keyboards/signum/3_0/keymaps/sgurenkov/rules.mk
@@ -0,0 +1,2 @@
1LEADER_ENABLE = yes
2AUTO_SHIFT_ENABLE = no