aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keyboards/1upkeyboards/1up60hte/1up60hte.h40
-rw-r--r--keyboards/1upkeyboards/1up60hte/info.json151
-rw-r--r--keyboards/1upkeyboards/1up60hte/keymaps/default/keymap.c26
-rw-r--r--keyboards/1upkeyboards/1up60hte/keymaps/hhkb/keymap.c26
-rw-r--r--keyboards/1upkeyboards/1up60hte/keymaps/via/keymap.c52
-rw-r--r--keyboards/1upkeyboards/1up60hte/readme.md12
-rw-r--r--keyboards/1upkeyboards/1up60hte/rules.mk35
-rw-r--r--keyboards/4pplet/aekiso60/keymaps/default/keymap.c29
-rw-r--r--keyboards/4pplet/aekiso60/keymaps/via/keymap.c56
-rw-r--r--keyboards/4pplet/aekiso60/rev_a/rev_a.h23
-rw-r--r--keyboards/amj60/amj60.c16
-rw-r--r--keyboards/amj60/amj60.h158
-rw-r--r--keyboards/amj60/config.h82
-rw-r--r--keyboards/amj60/info.json381
-rw-r--r--keyboards/amj60/keymaps/default/keymap.c75
-rwxr-xr-xkeyboards/amj60/keymaps/iso_split_rshift/build.sh42
-rw-r--r--keyboards/amj60/keymaps/iso_split_rshift/keymap.c113
-rw-r--r--keyboards/amj60/keymaps/iso_split_rshift/readme.md30
-rw-r--r--keyboards/amj60/keymaps/iso_split_rshift/rules.mk20
-rwxr-xr-xkeyboards/amj60/keymaps/iso_split_rshift/updatemerge.sh4
-rw-r--r--keyboards/amj60/keymaps/maximized/keymap.c55
-rw-r--r--keyboards/amj60/readme.md22
-rw-r--r--keyboards/amj60/rules.mk36
-rw-r--r--keyboards/bastardkb/scylla/config.h22
-rw-r--r--keyboards/bastardkb/scylla/rules.mk4
-rw-r--r--keyboards/bastardkb/scylla/scylla.c45
-rw-r--r--keyboards/checkerboards/nop60/info.json268
-rw-r--r--keyboards/checkerboards/nop60/keymaps/7u/keymap.c6
-rw-r--r--keyboards/checkerboards/nop60/keymaps/default/config.h (renamed from keyboards/checkerboards/nop60/keymaps/2x3u/config.h)0
-rw-r--r--keyboards/checkerboards/nop60/keymaps/default/keymap.c (renamed from keyboards/checkerboards/nop60/keymaps/2x3u/keymap.c)6
-rw-r--r--keyboards/checkerboards/nop60/keymaps/via/keymap.c8
-rw-r--r--keyboards/checkerboards/nop60/nop60.h4
-rw-r--r--keyboards/ergoarrows/info.json170
-rw-r--r--keyboards/gmmk/pro/info.json103
-rw-r--r--keyboards/gmmk/pro/keymaps/iso/keymap.c65
-rw-r--r--keyboards/gmmk/pro/pro.h29
-rw-r--r--keyboards/handwired/evk/v1_3/info.json189
-rw-r--r--keyboards/handwired/marauder/config.h13
-rw-r--r--keyboards/handwired/marauder/keymaps/orvia/keymap.c198
-rw-r--r--keyboards/handwired/marauder/keymaps/orvia/rules.mk3
-rw-r--r--keyboards/handwired/marauder/keymaps/via/keymap.c52
-rw-r--r--keyboards/handwired/marauder/keymaps/via/rules.mk1
-rw-r--r--keyboards/handwired/marauder/readme.md4
-rw-r--r--keyboards/handwired/marauder/rules.mk4
-rw-r--r--keyboards/handwired/ortho5x14/info.json2
-rw-r--r--keyboards/handwired/ortho5x14/readme.md2
-rw-r--r--keyboards/handwired/symmetric70_proto/debug_config.h33
-rw-r--r--keyboards/handwired/symmetric70_proto/local_features.mk108
-rw-r--r--keyboards/handwired/symmetric70_proto/matrix_debug/gpio_extr.h10
-rw-r--r--keyboards/handwired/symmetric70_proto/matrix_debug/matrix.c (renamed from keyboards/handwired/symmetric70_proto/matrix.c)152
-rw-r--r--keyboards/handwired/symmetric70_proto/matrix_debug/readme.md200
-rw-r--r--keyboards/handwired/symmetric70_proto/matrix_fast/cpp_map.h53
-rw-r--r--keyboards/handwired/symmetric70_proto/matrix_fast/gpio_extr.h28
-rw-r--r--keyboards/handwired/symmetric70_proto/matrix_fast/matrix.c234
-rw-r--r--keyboards/handwired/symmetric70_proto/matrix_fast/matrix_config_expand.c234
-rw-r--r--keyboards/handwired/symmetric70_proto/matrix_fast/matrix_extension_74hc15x.c72
-rw-r--r--keyboards/handwired/symmetric70_proto/matrix_fast/matrix_extr.h36
-rw-r--r--keyboards/handwired/symmetric70_proto/matrix_fast/readme.md168
-rw-r--r--keyboards/handwired/symmetric70_proto/matrix_fast/test_config.h21
-rw-r--r--keyboards/handwired/symmetric70_proto/matrix_fast/test_config_74hc157.h28
-rw-r--r--keyboards/handwired/symmetric70_proto/matrix_fast/test_config_direct.h34
-rw-r--r--keyboards/handwired/symmetric70_proto/promicro/config.h157
-rw-r--r--keyboards/handwired/symmetric70_proto/promicro/fast/config.h52
-rw-r--r--keyboards/handwired/symmetric70_proto/promicro/fast/readme.md1
-rw-r--r--keyboards/handwired/symmetric70_proto/promicro/fast/rules.mk6
-rw-r--r--keyboards/handwired/symmetric70_proto/promicro/normal/config.h41
-rw-r--r--keyboards/handwired/symmetric70_proto/promicro/normal/readme.md1
-rw-r--r--keyboards/handwired/symmetric70_proto/promicro/normal/rules.mk6
-rw-r--r--keyboards/handwired/symmetric70_proto/promicro/readme.md27
-rw-r--r--keyboards/handwired/symmetric70_proto/promicro/rules.mk (renamed from keyboards/handwired/symmetric70_proto/rules.mk)5
-rw-r--r--keyboards/handwired/symmetric70_proto/proton_c/config.h165
-rw-r--r--keyboards/handwired/symmetric70_proto/proton_c/fast/config.h44
-rw-r--r--keyboards/handwired/symmetric70_proto/proton_c/fast/readme.md1
-rw-r--r--keyboards/handwired/symmetric70_proto/proton_c/fast/rules.mk6
-rw-r--r--keyboards/handwired/symmetric70_proto/proton_c/normal/config.h36
-rw-r--r--keyboards/handwired/symmetric70_proto/proton_c/normal/readme.md1
-rw-r--r--keyboards/handwired/symmetric70_proto/proton_c/normal/rules.mk6
-rw-r--r--keyboards/handwired/symmetric70_proto/proton_c/proton_c.c12
-rw-r--r--keyboards/handwired/symmetric70_proto/proton_c/readme.md26
-rw-r--r--keyboards/handwired/symmetric70_proto/proton_c/rules.mk23
-rw-r--r--keyboards/handwired/symmetric70_proto/readme.md16
-rw-r--r--keyboards/handwired/traveller/info.json90
-rw-r--r--keyboards/handwired/traveller/keymaps/default/keymap.c157
-rw-r--r--keyboards/handwired/traveller/traveller.h8
-rw-r--r--keyboards/ianklug/grooveboard/config.h (renamed from keyboards/handwired/symmetric70_proto/config.h)38
-rw-r--r--keyboards/ianklug/grooveboard/grooveboard.c17
-rw-r--r--keyboards/ianklug/grooveboard/grooveboard.h33
-rw-r--r--keyboards/ianklug/grooveboard/info.json17
-rw-r--r--keyboards/ianklug/grooveboard/keymaps/default/keymap.c28
-rw-r--r--keyboards/ianklug/grooveboard/keymaps/default/readme.md1
-rw-r--r--keyboards/ianklug/grooveboard/keymaps/via/keymap.c37
-rw-r--r--keyboards/ianklug/grooveboard/keymaps/via/readme.md1
-rw-r--r--keyboards/ianklug/grooveboard/keymaps/via/rules.mk2
-rw-r--r--keyboards/ianklug/grooveboard/readme.md21
-rw-r--r--keyboards/ianklug/grooveboard/rules.mk22
-rw-r--r--keyboards/lucid/phantom_solder/keymaps/default/keymap.c20
-rw-r--r--keyboards/lucid/phantom_solder/keymaps/via/keymap.c35
-rw-r--r--keyboards/lucid/phantom_solder/phantom_solder.h6
-rw-r--r--keyboards/massdrop/alt/matrix.c178
-rw-r--r--keyboards/massdrop/alt/rules.mk2
-rw-r--r--keyboards/massdrop/ctrl/matrix.c178
-rw-r--r--keyboards/massdrop/ctrl/rules.mk2
-rw-r--r--keyboards/mechlovin/infinity87/rev1/rogue87/info.json2
-rw-r--r--keyboards/mechlovin/infinity87/rev1/rouge87/info.json2
-rwxr-xr-xkeyboards/melgeek/mj6xy/config.h40
-rwxr-xr-xkeyboards/melgeek/mj6xy/info.json3472
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_ansi/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_ansi_7u_spc/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_ansi_7u_spc_split_bs/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_ansi_arrow/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_3u_spc/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_3u_spc_split_bs/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_6u_spc/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_6u_spc_split_bs/keymap.c36
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_split_3u_spc/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_split_bs/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_split_bs_3u_spc/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_ansi_split_bs/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_7u_spc_split_bs_rshift/keymap.c39
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_7u_spc_split_rshift/keymap.c39
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_split_bs_rshift/keymap.c39
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_split_rshift/keymap.c39
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_bs/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_bs_rshift/keymap.c39
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_rshift/keymap.c39
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso_arrow/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso_arrow_3u_spc/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso_arrow_3u_spc_split_bs/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso_arrow_6u_spc/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso_arrow_6u_spc_split_bs/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso_arrow_split_3u_spc/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso_arrow_split_bs/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso_arrow_split_bs_3u_spc/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso_split_bs/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso_split_bs_rshift/keymap.c39
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso_split_rshift/keymap.c39
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/64_ansi/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/64_ansi_3u_spc/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/64_ansi_3u_spc_split_bs/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/64_ansi_6u_spc/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/64_ansi_6u_spc_split_bs/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/64_ansi_split_3u_spc/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/64_ansi_split_bs/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/64_ansi_split_bs_3u_spc/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/64_iso/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/64_iso_3u_spc/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/64_iso_3u_spc_split_bs/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/64_iso_6u_spc/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/64_iso_6u_spc_split_bs/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/64_iso_split_3u_spc/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/64_iso_split_bs/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/64_iso_split_bs_3u_spc/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/default/keymap.c35
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/via/keymap.c35
-rw-r--r--keyboards/melgeek/mj6xy/keymaps/via/rules.mk2
-rwxr-xr-xkeyboards/melgeek/mj6xy/mj6xy.c17
-rwxr-xr-xkeyboards/melgeek/mj6xy/mj6xy.h693
-rwxr-xr-xkeyboards/melgeek/mj6xy/readme.md17
-rwxr-xr-xkeyboards/melgeek/mj6xy/rev3/config.h50
-rw-r--r--keyboards/melgeek/mj6xy/rev3/rev3.c18
-rwxr-xr-xkeyboards/melgeek/mj6xy/rev3/rules.mk26
-rw-r--r--keyboards/montex/config.h2
-rw-r--r--keyboards/montex/keymaps/via/keymap.c52
-rw-r--r--keyboards/montex/keymaps/via/rules.mk2
-rw-r--r--lib/python/qmk/cli/__init__.py1
-rw-r--r--requirements.txt2
168 files changed, 10346 insertions, 1453 deletions
diff --git a/keyboards/1upkeyboards/1up60hte/1up60hte.h b/keyboards/1upkeyboards/1up60hte/1up60hte.h
index b6d3c8e0d..c64bcb124 100644
--- a/keyboards/1upkeyboards/1up60hte/1up60hte.h
+++ b/keyboards/1upkeyboards/1up60hte/1up60hte.h
@@ -19,31 +19,31 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
19 19
20#include "quantum.h" 20#include "quantum.h"
21 21
22#define LAYOUT_tsangan( \ 22#define LAYOUT_60_tsangan_hhkb( \
23 K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K413, \ 23 K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K413, \
24 K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \ 24 K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \
25 K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \ 25 K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \
26 K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, \ 26 K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, \
27 K400, K401, K402, K406, K410, K411, K412 \ 27 K400, K401, K402, K406, K410, K411, K412 \
28) { \ 28) { \
29 { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \ 29 { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \
30 { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113 }, \ 30 { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113 }, \
31 { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO }, \ 31 { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO }, \
32 { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO }, \ 32 { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO }, \
33 { K400, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, K412, K413 } \ 33 { K400, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, K412, K413 } \
34} 34}
35 35
36/* HHKB Variant */ 36/* HHKB Variant */
37#define LAYOUT_60_hhkb( \ 37#define LAYOUT_60_hhkb( \
38 K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K413, \ 38 K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K413, \
39 K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \ 39 K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \
40 K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \ 40 K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \
41 K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, \ 41 K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, \
42 K401, K402, K406, K410, K411 \ 42 K401, K402, K406, K410, K411 \
43) { \ 43) { \
44 { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \ 44 { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \
45 { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113 }, \ 45 { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113 }, \
46 { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO }, \ 46 { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, KC_NO }, \
47 { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO }, \ 47 { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO }, \
48 { KC_NO, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, KC_NO, K413 } \ 48 { KC_NO, K401, K402, KC_NO, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, KC_NO, K413 } \
49} 49}
diff --git a/keyboards/1upkeyboards/1up60hte/info.json b/keyboards/1upkeyboards/1up60hte/info.json
index 86521d36b..bc98d875e 100644
--- a/keyboards/1upkeyboards/1up60hte/info.json
+++ b/keyboards/1upkeyboards/1up60hte/info.json
@@ -1,15 +1,150 @@
1{ 1{
2 "keyboard_name": "1up60hte", 2 "keyboard_name": "1up60hte",
3 "url": "https://www.1upkeyboards.com/shop/controllers/1up-rgb-60-pcb-hte/", 3 "url": "https://www.1upkeyboards.com/shop/controllers/1up-rgb-60-pcb-hte/",
4 "maintainer": "1upkeyboards", 4 "maintainer": "1upkeyboards",
5 "width": 15, 5 "width": 15,
6 "height": 5, 6 "height": 5,
7 "layout_aliases": {
8 "LAYOUT_tsangan": "LAYOUT_60_tsangan_hhkb"
9 },
7 "layouts": { 10 "layouts": {
8 "LAYOUT_tsangan": { 11 "LAYOUT_60_tsangan_hhkb": {
9 "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"|", "x":13, "y":0}, {"label":"~", "x":14, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Control", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Alt", "x":1.5, "y":4}, {"label":"Meta", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Meta", "x":11, "y":4, "w":1.5}, {"label":"Alt", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}] 12 "layout": [
13 {"label":"Esc", "x":0, "y":0},
14 {"label":"!", "x":1, "y":0},
15 {"label":"@", "x":2, "y":0},
16 {"label":"#", "x":3, "y":0},
17 {"label":"$", "x":4, "y":0},
18 {"label":"%", "x":5, "y":0},
19 {"label":"^", "x":6, "y":0},
20 {"label":"&", "x":7, "y":0},
21 {"label":"*", "x":8, "y":0},
22 {"label":"(", "x":9, "y":0},
23 {"label":")", "x":10, "y":0},
24 {"label":"_", "x":11, "y":0},
25 {"label":"+", "x":12, "y":0},
26 {"label":"|", "x":13, "y":0},
27 {"label":"~", "x":14, "y":0},
28
29 {"label":"Tab", "x":0, "y":1, "w":1.5},
30 {"label":"Q", "x":1.5, "y":1},
31 {"label":"W", "x":2.5, "y":1},
32 {"label":"E", "x":3.5, "y":1},
33 {"label":"R", "x":4.5, "y":1},
34 {"label":"T", "x":5.5, "y":1},
35 {"label":"Y", "x":6.5, "y":1},
36 {"label":"U", "x":7.5, "y":1},
37 {"label":"I", "x":8.5, "y":1},
38 {"label":"O", "x":9.5, "y":1},
39 {"label":"P", "x":10.5, "y":1},
40 {"label":"{", "x":11.5, "y":1},
41 {"label":"}", "x":12.5, "y":1},
42 {"label":"|", "x":13.5, "y":1, "w":1.5},
43
44 {"label":"Control", "x":0, "y":2, "w":1.75},
45 {"label":"A", "x":1.75, "y":2},
46 {"label":"S", "x":2.75, "y":2},
47 {"label":"D", "x":3.75, "y":2},
48 {"label":"F", "x":4.75, "y":2},
49 {"label":"G", "x":5.75, "y":2},
50 {"label":"H", "x":6.75, "y":2},
51 {"label":"J", "x":7.75, "y":2},
52 {"label":"K", "x":8.75, "y":2},
53 {"label":"L", "x":9.75, "y":2},
54 {"label":":", "x":10.75, "y":2},
55 {"label":"\"", "x":11.75, "y":2},
56 {"label":"Enter", "x":12.75, "y":2, "w":2.25},
57
58 {"label":"Shift", "x":0, "y":3, "w":2.25},
59 {"label":"Z", "x":2.25, "y":3},
60 {"label":"X", "x":3.25, "y":3},
61 {"label":"C", "x":4.25, "y":3},
62 {"label":"V", "x":5.25, "y":3},
63 {"label":"B", "x":6.25, "y":3},
64 {"label":"N", "x":7.25, "y":3},
65 {"label":"M", "x":8.25, "y":3},
66 {"label":"<", "x":9.25, "y":3},
67 {"label":">", "x":10.25, "y":3},
68 {"label":"?", "x":11.25, "y":3},
69 {"label":"Shift", "x":12.25, "y":3, "w":1.75},
70 {"label":"Fn", "x":14, "y":3},
71
72 {"label":"Ctrl", "x":0, "y":4, "w":1.5},
73 {"label":"Alt", "x":1.5, "y":4},
74 {"label":"Meta", "x":2.5, "y":4, "w":1.5},
75 {"x":4, "y":4, "w":7},
76 {"label":"Meta", "x":11, "y":4, "w":1.5},
77 {"label":"Alt", "x":12.5, "y":4},
78 {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}
79 ]
10 }, 80 },
11 "LAYOUT_60_hhkb": { 81 "LAYOUT_60_hhkb": {
12 "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"|", "x":13, "y":0}, {"label":"~", "x":14, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Control", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "x":14, "y":3}, {"label":"Alt", "x":1.5, "y":4}, {"label":"Meta", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Meta", "x":11, "y":4, "w":1.5}, {"label":"Alt", "x":12.5, "y":4}] 82 "layout": [
83 {"label":"Esc", "x":0, "y":0},
84 {"label":"!", "x":1, "y":0},
85 {"label":"@", "x":2, "y":0},
86 {"label":"#", "x":3, "y":0},
87 {"label":"$", "x":4, "y":0},
88 {"label":"%", "x":5, "y":0},
89 {"label":"^", "x":6, "y":0},
90 {"label":"&", "x":7, "y":0},
91 {"label":"*", "x":8, "y":0},
92 {"label":"(", "x":9, "y":0},
93 {"label":")", "x":10, "y":0},
94 {"label":"_", "x":11, "y":0},
95 {"label":"+", "x":12, "y":0},
96 {"label":"|", "x":13, "y":0},
97 {"label":"~", "x":14, "y":0},
98
99 {"label":"Tab", "x":0, "y":1, "w":1.5},
100 {"label":"Q", "x":1.5, "y":1},
101 {"label":"W", "x":2.5, "y":1},
102 {"label":"E", "x":3.5, "y":1},
103 {"label":"R", "x":4.5, "y":1},
104 {"label":"T", "x":5.5, "y":1},
105 {"label":"Y", "x":6.5, "y":1},
106 {"label":"U", "x":7.5, "y":1},
107 {"label":"I", "x":8.5, "y":1},
108 {"label":"O", "x":9.5, "y":1},
109 {"label":"P", "x":10.5, "y":1},
110 {"label":"{", "x":11.5, "y":1},
111 {"label":"}", "x":12.5, "y":1},
112 {"label":"|", "x":13.5, "y":1, "w":1.5},
113
114 {"label":"Control", "x":0, "y":2, "w":1.75},
115 {"label":"A", "x":1.75, "y":2},
116 {"label":"S", "x":2.75, "y":2},
117 {"label":"D", "x":3.75, "y":2},
118 {"label":"F", "x":4.75, "y":2},
119 {"label":"G", "x":5.75, "y":2},
120 {"label":"H", "x":6.75, "y":2},
121 {"label":"J", "x":7.75, "y":2},
122 {"label":"K", "x":8.75, "y":2},
123 {"label":"L", "x":9.75, "y":2},
124 {"label":":", "x":10.75, "y":2},
125 {"label":"\"", "x":11.75, "y":2},
126 {"label":"Enter", "x":12.75, "y":2, "w":2.25},
127
128 {"label":"Shift", "x":0, "y":3, "w":2.25},
129 {"label":"Z", "x":2.25, "y":3},
130 {"label":"X", "x":3.25, "y":3},
131 {"label":"C", "x":4.25, "y":3},
132 {"label":"V", "x":5.25, "y":3},
133 {"label":"B", "x":6.25, "y":3},
134 {"label":"N", "x":7.25, "y":3},
135 {"label":"M", "x":8.25, "y":3},
136 {"label":"<", "x":9.25, "y":3},
137 {"label":">", "x":10.25, "y":3},
138 {"label":"?", "x":11.25, "y":3},
139 {"label":"Shift", "x":12.25, "y":3, "w":1.75},
140 {"label":"Fn", "x":14, "y":3},
141
142 {"label":"Alt", "x":1.5, "y":4},
143 {"label":"Meta", "x":2.5, "y":4, "w":1.5},
144 {"x":4, "y":4, "w":7},
145 {"label":"Meta", "x":11, "y":4, "w":1.5},
146 {"label":"Alt", "x":12.5, "y":4}
147 ]
13 } 148 }
14 } 149 }
15} 150}
diff --git a/keyboards/1upkeyboards/1up60hte/keymaps/default/keymap.c b/keyboards/1upkeyboards/1up60hte/keymaps/default/keymap.c
index 2f91e1c76..79a2fa92a 100644
--- a/keyboards/1upkeyboards/1up60hte/keymaps/default/keymap.c
+++ b/keyboards/1upkeyboards/1up60hte/keymaps/default/keymap.c
@@ -17,17 +17,19 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
17#include QMK_KEYBOARD_H 17#include QMK_KEYBOARD_H
18 18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20 [0] = LAYOUT_tsangan( 20 [0] = LAYOUT_60_tsangan_hhkb(
21 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, 21 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
22 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, 22 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
23 KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, 23 KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
24 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), 24 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
25 KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_RCTL), 25 KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_RCTL
26 ),
26 27
27 [1] = LAYOUT_tsangan( 28 [1] = LAYOUT_60_tsangan_hhkb(
28 RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, 29 RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL,
29 KC_CAPS, BL_TOGG, BL_DEC, BL_INC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_CLR, 30 KC_CAPS, BL_TOGG, BL_DEC, BL_INC, BL_STEP, _______, _______, _______, _______, KC_SLCK, KC_PAUS, KC_UP, _______, KC_CLR,
30 KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_MPLY, KC_MPRV, KC_MNXT, RGB_VAD, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, 31 _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_MPLY, KC_MPRV, KC_MNXT, RGB_VAD, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______,
31 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, 32 _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, KC_END, KC_PGDN, KC_DOWN, _______, _______,
32 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) 33 _______, _______, _______, _______, _______, _______, _______
34 )
33}; 35};
diff --git a/keyboards/1upkeyboards/1up60hte/keymaps/hhkb/keymap.c b/keyboards/1upkeyboards/1up60hte/keymaps/hhkb/keymap.c
index 81e29ec19..525e02eef 100644
--- a/keyboards/1upkeyboards/1up60hte/keymaps/hhkb/keymap.c
+++ b/keyboards/1upkeyboards/1up60hte/keymaps/hhkb/keymap.c
@@ -17,17 +17,19 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
17#include QMK_KEYBOARD_H 17#include QMK_KEYBOARD_H
18 18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20 [0] = LAYOUT_tsangan( 20 [0] = LAYOUT_60_hhkb(
21 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, 21 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
22 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, 22 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
23 KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, 23 KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
24 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), 24 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
25 KC_NO, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_NO), 25 KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT
26 ),
26 27
27 [1] = LAYOUT_tsangan( 28 [1] = LAYOUT_60_hhkb(
28 RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, 29 RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL,
29 KC_CAPS, BL_TOGG, BL_DEC, BL_INC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_CLR, 30 KC_CAPS, BL_TOGG, BL_DEC, BL_INC, BL_STEP, _______, _______, _______, _______, KC_SLCK, KC_PAUS, KC_UP, _______, KC_CLR,
30 KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_MPLY, KC_MPRV, KC_MNXT, RGB_VAD, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, 31 _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_MPLY, KC_MPRV, KC_MNXT, RGB_VAD, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______,
31 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, 32 _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, KC_END, KC_PGDN, KC_DOWN, _______, _______,
32 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) 33 _______, _______, _______, _______, _______
34 )
33}; 35};
diff --git a/keyboards/1upkeyboards/1up60hte/keymaps/via/keymap.c b/keyboards/1upkeyboards/1up60hte/keymaps/via/keymap.c
index ecd5a9040..5ecea3759 100644
--- a/keyboards/1upkeyboards/1up60hte/keymaps/via/keymap.c
+++ b/keyboards/1upkeyboards/1up60hte/keymaps/via/keymap.c
@@ -17,31 +17,35 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
17#include QMK_KEYBOARD_H 17#include QMK_KEYBOARD_H
18 18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20 [0] = LAYOUT_tsangan( 20 [0] = LAYOUT_60_tsangan_hhkb(
21 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, 21 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
22 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, 22 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
23 KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, 23 KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
24 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), 24 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
25 KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_RCTL), 25 KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_RCTL
26 ),
26 27
27 [1] = LAYOUT_tsangan( 28 [1] = LAYOUT_60_tsangan_hhkb(
28 RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, 29 RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL,
29 KC_CAPS, BL_TOGG, BL_DEC, BL_INC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_CLR, 30 KC_CAPS, BL_TOGG, BL_DEC, BL_INC, BL_STEP, _______, _______, _______, _______, KC_SLCK, KC_PAUS, KC_UP, _______, KC_CLR,
30 KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_MPLY, KC_MPRV, KC_MNXT, RGB_VAD, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, 31 _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_MPLY, KC_MPRV, KC_MNXT, RGB_VAD, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______,
31 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, 32 _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, KC_END, KC_PGDN, KC_DOWN, _______, _______,
32 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), 33 _______, _______, _______, _______, _______, _______, _______
34 ),
33 35
34 [2] = LAYOUT_tsangan( 36 [2] = LAYOUT_60_tsangan_hhkb(
35 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, 37 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
36 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, 38 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
37 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, 39 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
38 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, 40 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
39 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), 41 _______, _______, _______, _______, _______, _______, _______
42 ),
40 43
41 [3] = LAYOUT_tsangan( 44 [3] = LAYOUT_60_tsangan_hhkb(
42 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, 45 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
43 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, 46 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
44 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, 47 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
45 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, 48 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
46 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), 49 _______, _______, _______, _______, _______, _______, _______
50 ),
47}; 51};
diff --git a/keyboards/1upkeyboards/1up60hte/readme.md b/keyboards/1upkeyboards/1up60hte/readme.md
index b49773fd7..d62aed399 100644
--- a/keyboards/1upkeyboards/1up60hte/readme.md
+++ b/keyboards/1upkeyboards/1up60hte/readme.md
@@ -1,17 +1,19 @@
1
2# 1up60hte (Hot Swap Tsangan Edition) 1# 1up60hte (Hot Swap Tsangan Edition)
3 2
4![1up60hte](https://www.1upkeyboards.com/wp-content/uploads/2019/01/PCB-60-HS-TSA-both.jpg) 3![1up60hte](https://www.1upkeyboards.com/wp-content/uploads/2019/01/PCB-60-HS-TSA-both.jpg)
5 4
6
7A 60% PCB with USB C, RGB underglow, backlighting, hotswappable switches, and a Tsangan layout. 5A 60% PCB with USB C, RGB underglow, backlighting, hotswappable switches, and a Tsangan layout.
8 6
9Keyboard Maintainer: [Bubnick](https://github.com/bubnick) 7* Keyboard Maintainer: [Bubnick](https://github.com/bubnick)
10Hardware Supported: 1up60hte 60% PCB 8* Hardware Supported: 1up60hte 60% PCB
11Hardware Availability: [1upkeyboards.com](https://www.1upkeyboards.com/shop/controllers/1up-rgb-60-pcb-hte/) 9* Hardware Availability: [1upkeyboards.com](https://www.1upkeyboards.com/shop/controllers/1up-rgb-60-pcb-hte/)
12 10
13Make example for this keyboard (after setting up your build environment): 11Make example for this keyboard (after setting up your build environment):
14 12
15 make 1upkeyboards/1up60hte:default 13 make 1upkeyboards/1up60hte:default
16 14
15Flashing example for this keyboard:
16
17 make 1upkeyboards/1up60hte:default:flash
18
17See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). 19See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/1upkeyboards/1up60hte/rules.mk b/keyboards/1upkeyboards/1up60hte/rules.mk
index 048407bed..33656c638 100644
--- a/keyboards/1upkeyboards/1up60hte/rules.mk
+++ b/keyboards/1upkeyboards/1up60hte/rules.mk
@@ -2,28 +2,25 @@
2MCU = atmega32u4 2MCU = atmega32u4
3 3
4# Bootloader selection 4# Bootloader selection
5# Teensy halfkay
6# Pro Micro caterina
7# Atmel DFU atmel-dfu
8# LUFA DFU lufa-dfu
9# QMK DFU qmk-dfu
10# ATmega32A bootloadHID
11# ATmega328P USBasp
12BOOTLOADER = atmel-dfu 5BOOTLOADER = atmel-dfu
13 6
14# Build Options 7# Build Options
15# comment out to disable the options. 8# change yes to no to disable
16# 9#
17BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration 10BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
18MOUSEKEY_ENABLE = yes # Mouse keys 11MOUSEKEY_ENABLE = yes # Mouse keys
19EXTRAKEY_ENABLE = yes # Audio control and System control 12EXTRAKEY_ENABLE = yes # Audio control and System control
20CONSOLE_ENABLE = no # Console for debug 13CONSOLE_ENABLE = no # Console for debug
21COMMAND_ENABLE = no # Commands for debug and configuration 14COMMAND_ENABLE = no # Commands for debug and configuration
22SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend 15# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
23NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work 16SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
24BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality 17# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
25AUDIO_ENABLE = no 18NKRO_ENABLE = yes # USB Nkey Rollover
26RGBLIGHT_ENABLE = yes 19BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
20RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
21BLUETOOTH_ENABLE = no # Enable Bluetooth
22AUDIO_ENABLE = no # Audio output
23
27LTO_ENABLE = yes 24LTO_ENABLE = yes
28 25
29LAYOUTS = 60_hhkb 26LAYOUTS = 60_hhkb 60_tsangan_hhkb
diff --git a/keyboards/4pplet/aekiso60/keymaps/default/keymap.c b/keyboards/4pplet/aekiso60/keymaps/default/keymap.c
index 4f3e895a5..e0938a5fd 100644
--- a/keyboards/4pplet/aekiso60/keymaps/default/keymap.c
+++ b/keyboards/4pplet/aekiso60/keymaps/default/keymap.c
@@ -3,19 +3,18 @@
3const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 3const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
4 4
5 5
6[0] = LAYOUT_all( 6 [0] = LAYOUT_all(
7 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, 7 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
8 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, 8 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
9 KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, 9 KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
10 KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), 10 KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
11 KC_LCTL, KC_LGUI, KC_LALT, _______, KC_SPC, _______, KC_RALT, KC_RGUI, KC_RCTL), 11 KC_LCTL, KC_LGUI, KC_LALT, _______, KC_SPC, _______, KC_RALT, KC_RGUI, KC_RCTL
12 12 ),
13[1] = LAYOUT_all( 13 [1] = LAYOUT_all(
14 KC_EXEC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, 14 KC_EXEC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
15 _______, KC_BSPC, KC_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, KC_PENT, 15 _______, KC_BSPC, KC_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______,
16 KC_CAPS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MUTE, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, KC_INS, 16 KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT, KC_MUTE, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_INS, KC_PENT,
17 _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_PPLS, KC_PMNS, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______, 17 _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_PPLS, KC_PMNS, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______,
18 RESET, _______, _______, _______, _______, _______, KC_BRID, KC_BRIU, _______) 18 RESET, _______, _______, _______, _______, _______, KC_BRID, KC_BRIU, _______
19 )
19}; 20};
20
21
diff --git a/keyboards/4pplet/aekiso60/keymaps/via/keymap.c b/keyboards/4pplet/aekiso60/keymaps/via/keymap.c
index d2036f60b..151c3bc4a 100644
--- a/keyboards/4pplet/aekiso60/keymaps/via/keymap.c
+++ b/keyboards/4pplet/aekiso60/keymaps/via/keymap.c
@@ -3,32 +3,32 @@
3const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 3const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
4 4
5 5
6[0] = LAYOUT_all( 6 [0] = LAYOUT_all(
7 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, 7 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
8 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, 8 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
9 KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, 9 KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
10 KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), 10 KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
11 KC_LCTL, KC_LGUI, KC_LALT, _______, KC_SPC, _______, KC_RALT, KC_RGUI, KC_RCTL), 11 KC_LCTL, KC_LGUI, KC_LALT, _______, KC_SPC, _______, KC_RALT, KC_RGUI, KC_RCTL
12 12 ),
13[1] = LAYOUT_all( 13 [1] = LAYOUT_all(
14 KC_EXEC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, 14 KC_EXEC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
15 _______, KC_BSPC, KC_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, KC_PENT, 15 _______, KC_BSPC, KC_UP, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______,
16 KC_CAPS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MUTE, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, KC_INS, 16 KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT, KC_MUTE, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_INS, KC_PENT,
17 _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_PPLS, KC_PMNS, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______, 17 _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_PPLS, KC_PMNS, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______,
18 RESET, _______, _______, _______, _______, _______, KC_BRID, KC_BRIU, _______), 18 RESET, _______, _______, _______, _______, _______, KC_BRID, KC_BRIU, _______
19 19 ),
20[2] = LAYOUT_all( 20 [2] = LAYOUT_all(
21 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 21 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
22 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 22 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
23 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 23 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
24 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 24 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
25 _______, _______, _______, _______, _______, _______, _______, _______, _______), 25 _______, _______, _______, _______, _______, _______, _______, _______, _______
26 26 ),
27[3] = LAYOUT_all( 27 [3] = LAYOUT_all(
28 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 28 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
29 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 29 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
30 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 30 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
31 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 31 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
32 _______, _______, _______, _______, _______, _______, _______, _______, _______) 32 _______, _______, _______, _______, _______, _______, _______, _______, _______
33 )
33}; 34};
34
diff --git a/keyboards/4pplet/aekiso60/rev_a/rev_a.h b/keyboards/4pplet/aekiso60/rev_a/rev_a.h
index f68a320b7..16acf01c2 100644
--- a/keyboards/4pplet/aekiso60/rev_a/rev_a.h
+++ b/keyboards/4pplet/aekiso60/rev_a/rev_a.h
@@ -2,12 +2,25 @@
2 2
3#include "quantum.h" 3#include "quantum.h"
4 4
5/* LAYOUT_all
6 * ┌────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬──────┐
7 * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │
8 * ├────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬────┤
9 * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │ │
10 * ├──────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐1d │
11 * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │ │
12 * ├─────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
13 * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │
14 * ├─────┼───┴┬──┴──┬┴───┴───┴─┬─┴─┬─┴───┴───┴┬──┴──┬┴───┬─┴───┤
15 * │40 │41 │43 │44 │45 │46 │48 │4a │4b │
16 * └─────┴────┴─────┴──────────┴───┴──────────┴─────┴────┴─────┘
17 */
5#define LAYOUT_all( \ 18#define LAYOUT_all( \
6 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ 19 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
7 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ 20 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
8 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \ 21 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k1d, \
9 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \ 22 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \
10 k40, k41, k43, k44, k45, k46, k48, k4a, k4b \ 23 k40, k41, k43, k44, k45, k46, k48, k4a, k4b \
11) \ 24) \
12{ \ 25{ \
13 {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \ 26 {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \
diff --git a/keyboards/amj60/amj60.c b/keyboards/amj60/amj60.c
index 02aa116d5..af0539a67 100644
--- a/keyboards/amj60/amj60.c
+++ b/keyboards/amj60/amj60.c
@@ -1 +1,17 @@
1/* Copyright 2016 Toni (@toneman77)
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
1#include "amj60.h" 17#include "amj60.h"
diff --git a/keyboards/amj60/amj60.h b/keyboards/amj60/amj60.h
index 07b406868..feda68003 100644
--- a/keyboards/amj60/amj60.h
+++ b/keyboards/amj60/amj60.h
@@ -1,5 +1,21 @@
1#ifndef AMJ60_H 1/* Copyright 2016 Toni (@toneman77)
2#define AMJ60_H 2 * 2021 James Young for QMK (@noroadsleft)
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#pragma once
3 19
4#include "quantum.h" 20#include "quantum.h"
5 21
@@ -7,23 +23,43 @@
7#define XXX KC_NO 23#define XXX KC_NO
8 24
9/* AMJ60 layout to the best of my knowledge matrix layout 25/* AMJ60 layout to the best of my knowledge matrix layout
10 * ,-----------------------------------------------------------. 26 *
11 * | 00 |01| 02| 03| 04| 05| 06| 07| 08| 09| 0a| 0b| 0c| 0d| 49| 27 * I scoured the internet researching this PCB, which near as I know was
12 * |-----------------------------------------------------------| 28 * discontinued around 2017. Fortunately, the wiring seems to be based on the
13 * | 10 | 11| 12| 13| 14| 15| 16| 17| 18| 19| 1a| 1b| 1c| 1d | 29 * GH60, and I own a KC60, which is also based on the GH60. I traced my KC60
14 * |-----------------------------------------------------------| 30 * (which I already had apart!) and worked out the right shift can be split
15 * | 20 | 21| 22| 23| 24| 25| 26| 27| 28| 29| 2a| 2b| 2d | 31 * 1.75/1 (HHKB style) or 1/1.75 (JIS/ABNT2). With either split, the 1u key
16 * |-----------------------------------------------------------| 32 * was on column C, so I used that here.
17 * | 30 | 31| 32| 33| 34| 35| 36| 37| 38| 39| 3a| 3b| 3c | 3d | 33 *
18 * |-----------------------------------------------------------| 34 * - noroadsleft
19 * | 40 | 41 | 42 | 45 | 4a | 4b | 4c | 4d | 35 *
20 * `-----------------------------------------------------------' 36 * ┌───────┐
37 * 2u Backspace │0d │
38 * └───────┘
39 * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
40 * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │49 │ ┌─────┐
41 * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ │ │
42 * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │ ┌──┴┐ │ ISO Enter
43 * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬────┤ │2c │2d │
44 * LShift │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2d │ └───┴────┘
45 * ┌────────┐ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ ┌──────────┐
46 * │30 │ │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3d │3c │ │3d │ 2.75u RShift
47 * └────────┘ ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ └──────────┘
48 * │40 │41 │42 │ 45 │4a │4b │4c │4d │ ┌───┬──────┐
49 * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ │3c │3d │ JIS RShift
50 * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ └───┴──────┘
51 * Tsangan │40 │41 │42 │ 45 │4b │4c │4d │
52 * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
53 * ┌─────┬───┬─────┬───────────────────────┬─────┬───┬───┬─────┐
54 * Topre-style │40 │41 │42 │ 45 │4a │4b │4c │4d │
55 * └─────┴───┴─────┴───────────────────────┴─────┴───┴───┴─────┘
56 *
21 */ 57 */
22#define LAYOUT( \ 58#define LAYOUT_all( \
23 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k49,\ 59 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k49,\
24 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ 60 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
25 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \ 61 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
26 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \ 62 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3c, \
27 k40, k41, k42, k45, k4a, k4b, k4c, k4d \ 63 k40, k41, k42, k45, k4a, k4b, k4c, k4d \
28) \ 64) \
29{ \ 65{ \
@@ -34,20 +70,6 @@
34 {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d} \ 70 {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d} \
35} 71}
36 72
37/*
38 * ANSI
39 * ,-----------------------------------------------------------.
40 * | 00 |01| 02| 03| 04| 05| 06| 07| 08| 09| 0a| 0b| 0c| 0d |
41 * |-----------------------------------------------------------|
42 * | 10 | 11| 12| 13| 14| 15| 16| 17| 18| 19| 1a| 1b| 1c| 1d |
43 * |-----------------------------------------------------------|
44 * | 20 | 21| 22| 23| 24| 25| 26| 27| 28| 29| 2a| 2b| 2d |
45 * |-----------------------------------------------------------|
46 * | 30 | 32| 33| 34| 35| 36| 37| 38| 39| 3a| 3b| 3d |
47 * |-----------------------------------------------------------|
48 * | 40 | 41 | 42 | 45 | 4a | 4b | 4c | 4d |
49 * `-----------------------------------------------------------'
50 */
51#define LAYOUT_60_ansi( \ 73#define LAYOUT_60_ansi( \
52 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ 74 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
53 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ 75 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
@@ -63,107 +85,47 @@
63 {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d} \ 85 {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d} \
64} 86}
65 87
66/* AMJ60 HHKB matrix layout 88#define LAYOUT_60_hhkb( \
67 * ,------------------------------------------------------------.
68 * | 00 |01| 02| 03| 04| 05| 06| 07| 08| 09| 0a| 0b| 0c| 0d| 49 |
69 * |------------------------------------------------------------|
70 * | 10 | 11| 12| 13| 14| 15| 16| 17| 18| 19| 1a| 1b| 1c| 1d |
71 * |------------------------------------------------------------|
72 * | 20 | 21| 22| 23| 24| 25| 26| 27| 28| 29| 2a| 2b| 2d |
73 * |------------------------------------------------------------|
74 * | 30 | 32| 33| 34| 35| 36| 37| 38| 39| 3a| 3b| 3d | 3c |
75 * |------------------------------------------------------------|
76 * | 40 | 41 | 42 | 45 | 4a | 4b | 4c | 4d |
77 * `------------------------------------------------------------'
78 */
79
80#define LAYOUT_hhkb( \
81 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k49, \ 89 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k49, \
82 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ 90 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
83 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \ 91 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
84 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3c, \ 92 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3c, \
85 k40, k41, k42, k45, k4a, k4b, k4c, k4d \ 93 k41, k42, k45, k4b, k4c \
86) \ 94) \
87{ \ 95{ \
88 {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \ 96 {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \
89 {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d}, \ 97 {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d}, \
90 {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d}, \ 98 {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d}, \
91 {k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d}, \ 99 {k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d}, \
92 {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d} \ 100 {XXX, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, k49, XXX, k4b, k4c, XXX} \
93} 101}
94 102
95/* ISO 103#define LAYOUT_60_iso( \
96 * ,-----------------------------------------------------------.
97 * | 00 |01| 02| 03| 04| 05| 06| 07| 08| 09| 0a| 0b| 0c| 0d |
98 * |-----------------------------------------------------------|
99 * | 10 | 11| 12| 13| 14| 15| 16| 17| 18| 19| 1a| 1b| 1c| 1d |
100 * |-----------------------------------------------------------|
101 * | 20 | 21| 22| 23| 24| 25| 26| 27| 28| 29| 2a| 2b| 2c|2d |
102 * |-----------------------------------------------------------|
103 * | 30 | 31| 32| 33| 34| 35| 36| 37| 38| 39| 3a| 3b| 3d |
104 * |-----------------------------------------------------------|
105 * | 40 | 41 | 42 | 45 | 4a | 4b | 4c | 4d |
106 * `-----------------------------------------------------------'
107 */
108#define LAYOUT_iso( \
109 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \ 104 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
110 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ 105 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
111 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \ 106 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
112 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, \ 107 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, \
113 k40, k41, k42, k45, k4a, k4b, k4c, k4d \ 108 k40, k41, k42, k45, k4a, k4b, k4c, k4d \
114) \ 109) \
115{ \ 110{ \
116 {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \ 111 {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \
117 {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d}, \ 112 {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX}, \
118 {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d}, \ 113 {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d}, \
119 {k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d}, \ 114 {k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d}, \
120 {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d} \ 115 {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d} \
121} 116}
122 117
123/* ISO w/ split right shift key matrix layout 118#define LAYOUT_60_ansi_split_bs_rshift( \
124 * ,-----------------------------------------------------------.
125 * | 00 |01| 02| 03| 04| 05| 06| 07| 08| 09| 0a| 0b| 0c| 0d |
126 * |-----------------------------------------------------------|
127 * | 10 | 11| 12| 13| 14| 15| 16| 17| 18| 19| 1a| 1b| 1c| 1d |
128 * |-----------------------------------------------------------|
129 * | 20 | 21| 22| 23| 24| 25| 26| 27| 28| 29| 2a| 2b| 2c|2d |
130 * |-----------------------------------------------------------|
131 * | 30 | 31| 32| 33| 34| 35| 36| 37| 38| 39| 3a| 3b| 3d | 3c |
132 * |-----------------------------------------------------------|
133 * | 40 | 41 | 42 | 45 | 4a | 4b | 4c | 4d |
134 * `-----------------------------------------------------------'
135 */
136#define LAYOUT_iso_splitrshift( \
137 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
138 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
139 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
140 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3c, \
141 k40, k41, k42, k45, k4a, k4b, k4c, k4d \
142) \
143{ \
144 {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \
145 {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d}, \
146 {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d}, \
147 {k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d}, \
148 {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d} \
149}
150
151#define LAYOUT_max( \
152 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k49,\ 119 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k49,\
153 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \ 120 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
154 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \ 121 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
155 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3c, \ 122 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3c, \
156 k40, k41, k42, k45, k4a, k4b, k4c, k4d \ 123 k40, k41, k42, k45, k4a, k4b, k4c, k4d \
157) \ 124) \
158{ \ 125{ \
159 {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \ 126 {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \
160 {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d}, \ 127 {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d}, \
161 {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d}, \ 128 {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d}, \
162 {k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d}, \ 129 {k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d}, \
163 {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d} \ 130 {k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d} \
164} 131}
165
166void matrix_init_user(void);
167void matrix_scan_user(void);
168
169#endif
diff --git a/keyboards/amj60/config.h b/keyboards/amj60/config.h
index 008539368..8d53efd3f 100644
--- a/keyboards/amj60/config.h
+++ b/keyboards/amj60/config.h
@@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>. 15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/ 16*/
17 17
18#ifndef CONFIG_H 18#pragma once
19#define CONFIG_H
20 19
21#include "config_common.h" 20#include "config_common.h"
22 21
@@ -31,46 +30,69 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
31#define MATRIX_ROWS 5 30#define MATRIX_ROWS 5
32#define MATRIX_COLS 14 31#define MATRIX_COLS 14
33 32
34// ROWS: Top to bottom, COLS: Left to right 33/*
35 34 * Keyboard Matrix Assignments
36#define MATRIX_ROW_PINS { F7, F6, F5, F4, D5} 35 *
37#define MATRIX_COL_PINS { F1, F0, E6, C7, C6, B0, D4, B1, B7, B5, B4, D7, D6, B3} 36 * Change this to how you wired your keyboard
37 * COLS: AVR pins used for columns, left to right
38 * ROWS: AVR pins used for rows, top to bottom
39 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
40 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
41 *
42 */
43#define MATRIX_ROW_PINS { F7, F6, F5, F4, D5 }
44#define MATRIX_COL_PINS { F1, F0, E6, C7, C6, B0, D4, B1, B7, B5, B4, D7, D6, B3 }
38#define UNUSED_PINS 45#define UNUSED_PINS
39 46
40/* COL2ROW or ROW2COL */ 47/* COL2ROW, ROW2COL */
41#define DIODE_DIRECTION COL2ROW 48#define DIODE_DIRECTION COL2ROW
42 49
43#define LED_CAPS_LOCK_PIN B2 50#define LED_CAPS_LOCK_PIN B2
44#define LED_PIN_ON_STATE 0 51#define LED_PIN_ON_STATE 0
45 52
46#define BACKLIGHT_PIN B6 53#define BACKLIGHT_PIN B6
54#define BACKLIGHT_LEVELS 4
55#define BACKLIGHT_BREATHING
47 56
57#define RGB_DI_PIN E2
58#ifdef RGB_DI_PIN
59# define RGBLED_NUM 8
60# define RGBLIGHT_HUE_STEP 10
61# define RGBLIGHT_SAT_STEP 17
62# define RGBLIGHT_VAL_STEP 17
63//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
64//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
65/*== all animations enable ==*/
66# define RGBLIGHT_ANIMATIONS
67/*== or choose animations ==*/
68//# define RGBLIGHT_EFFECT_BREATHING
69//# define RGBLIGHT_EFFECT_RAINBOW_MOOD
70//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
71//# define RGBLIGHT_EFFECT_SNAKE
72//# define RGBLIGHT_EFFECT_KNIGHT
73//# define RGBLIGHT_EFFECT_CHRISTMAS
74//# define RGBLIGHT_EFFECT_STATIC_GRADIENT
75//# define RGBLIGHT_EFFECT_RGB_TEST
76//# define RGBLIGHT_EFFECT_ALTERNATING
77/*== customize breathing effect ==*/
78/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
79//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
80/*==== use exp() and sin() ====*/
81//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
82//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
83#endif
48 84
49/* define if matrix has ghost */ 85/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
50//#define MATRIX_HAS_GHOST
51
52/* Set 0 if debouncing isn't needed */
53#define DEBOUNCE 5 86#define DEBOUNCE 5
54 87
88/* define if matrix has ghost (lacks anti-ghosting diodes) */
89//#define MATRIX_HAS_GHOST
90
55/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ 91/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
56#define LOCKING_SUPPORT_ENABLE 92#define LOCKING_SUPPORT_ENABLE
57/* Locking resynchronize hack */ 93/* Locking resynchronize hack */
58#define LOCKING_RESYNC_ENABLE 94#define LOCKING_RESYNC_ENABLE
59 95
60/* Backlight configuration
61 */
62#define BACKLIGHT_LEVELS 4
63
64/* Underlight configuration
65 */
66
67#define RGB_DI_PIN E2
68#define RGBLIGHT_ANIMATIONS
69#define RGBLED_NUM 8 // Number of LEDs
70#define RGBLIGHT_HUE_STEP 10
71#define RGBLIGHT_SAT_STEP 17
72#define RGBLIGHT_VAL_STEP 17
73
74/* 96/*
75 * Feature disable options 97 * Feature disable options
76 * These options are also useful to firmware size reduction. 98 * These options are also useful to firmware size reduction.
@@ -86,7 +108,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
86//#define NO_ACTION_LAYER 108//#define NO_ACTION_LAYER
87//#define NO_ACTION_TAPPING 109//#define NO_ACTION_TAPPING
88//#define NO_ACTION_ONESHOT 110//#define NO_ACTION_ONESHOT
89//#define NO_ACTION_MACRO
90//#define NO_ACTION_FUNCTION
91 111
92#endif 112/* disable these deprecated features by default */
113#define NO_ACTION_MACRO
114#define NO_ACTION_FUNCTION
115
116/* Bootmagic Lite key configuration */
117//#define BOOTMAGIC_LITE_ROW 0
118//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/amj60/info.json b/keyboards/amj60/info.json
index dd6a7aef0..3bef63e33 100644
--- a/keyboards/amj60/info.json
+++ b/keyboards/amj60/info.json
@@ -1,27 +1,360 @@
1{ 1{
2 "keyboard_name": "AMJ60", 2 "keyboard_name": "AMJ60",
3 "url": "", 3 "url": "",
4 "maintainer": "qmk", 4 "maintainer": "qmk",
5 "width": 15, 5 "width": 15,
6 "height": 5, 6 "height": 5,
7 "layouts": { 7 "layouts": {
8 "LAYOUT": { 8 "LAYOUT_all": {
9 "layout": [{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k03", "x":3, "y":0}, {"label":"k04", "x":4, "y":0}, {"label":"k05", "x":5, "y":0}, {"label":"k06", "x":6, "y":0}, {"label":"k07", "x":7, "y":0}, {"label":"k08", "x":8, "y":0}, {"label":"k09", "x":9, "y":0}, {"label":"k0a", "x":10, "y":0}, {"label":"k0b", "x":11, "y":0}, {"label":"k0c", "x":12, "y":0}, {"label":"k0d", "x":13, "y":0}, {"label":"k49", "x":14, "y":0}, {"label":"k10", "x":0, "y":1, "w":1.5}, {"label":"k11", "x":1.5, "y":1}, {"label":"k12", "x":2.5, "y":1}, {"label":"k13", "x":3.5, "y":1}, {"label":"k14", "x":4.5, "y":1}, {"label":"k15", "x":5.5, "y":1}, {"label":"k16", "x":6.5, "y":1}, {"label":"k17", "x":7.5, "y":1}, {"label":"k18", "x":8.5, "y":1}, {"label":"k19", "x":9.5, "y":1}, {"label":"k1a", "x":10.5, "y":1}, {"label":"k1b", "x":11.5, "y":1}, {"label":"k1c", "x":12.5, "y":1}, {"label":"k1d", "x":13.5, "y":1, "w":1.5}, {"label":"k20", "x":0, "y":2, "w":1.75}, {"label":"k21", "x":1.75, "y":2}, {"label":"k22", "x":2.75, "y":2}, {"label":"k23", "x":3.75, "y":2}, {"label":"k24", "x":4.75, "y":2}, {"label":"k25", "x":5.75, "y":2}, {"label":"k26", "x":6.75, "y":2}, {"label":"k27", "x":7.75, "y":2}, {"label":"k28", "x":8.75, "y":2}, {"label":"k29", "x":9.75, "y":2}, {"label":"k2a", "x":10.75, "y":2}, {"label":"k2b", "x":11.75, "y":2}, {"label":"k2c", "x":12.75, "y":2}, {"label":"k2d", "x":13.75, "y":2, "w":1.25}, {"label":"k30", "x":0, "y":3, "w":1.25}, {"label":"k31", "x":1.25, "y":3}, {"label":"k32", "x":2.25, "y":3}, {"label":"k33", "x":3.25, "y":3}, {"label":"k34", "x":4.25, "y":3}, {"label":"k35", "x":5.25, "y":3}, {"label":"k36", "x":6.25, "y":3}, {"label":"k37", "x":7.25, "y":3}, {"label":"k38", "x":8.25, "y":3}, {"label":"k39", "x":9.25, "y":3}, {"label":"k3a", "x":10.25, "y":3}, {"label":"k3b", "x":11.25, "y":3}, {"label":"k3c", "x":12.25, "y":3, "w":1.75}, {"label":"k3d", "x":14, "y":3}, {"label":"k40", "x":0, "y":4, "w":1.25}, {"label":"k41", "x":1.25, "y":4, "w":1.25}, {"label":"k42", "x":2.5, "y":4, "w":1.25}, {"label":"k45", "x":3.75, "y":4, "w":6.25}, {"label":"k4a", "x":10, "y":4, "w":1.25}, {"label":"k4b", "x":11.25, "y":4, "w":1.25}, {"label":"k4c", "x":12.5, "y":4, "w":1.25}, {"label":"k4d", "x":13.75, "y":4, "w":1.25}] 9 "layout": [
10 }, 10 {"label":"k00", "x":0, "y":0},
11 "LAYOUT_60_ansi": { 11 {"label":"k01", "x":1, "y":0},
12 "layout": [{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k03", "x":3, "y":0}, {"label":"k04", "x":4, "y":0}, {"label":"k05", "x":5, "y":0}, {"label":"k06", "x":6, "y":0}, {"label":"k07", "x":7, "y":0}, {"label":"k08", "x":8, "y":0}, {"label":"k09", "x":9, "y":0}, {"label":"k0a", "x":10, "y":0}, {"label":"k0b", "x":11, "y":0}, {"label":"k0c", "x":12, "y":0}, {"label":"k0d", "x":13, "y":0, "w":2}, {"label":"k10", "x":0, "y":1, "w":1.5}, {"label":"k11", "x":1.5, "y":1}, {"label":"k12", "x":2.5, "y":1}, {"label":"k13", "x":3.5, "y":1}, {"label":"k14", "x":4.5, "y":1}, {"label":"k15", "x":5.5, "y":1}, {"label":"k16", "x":6.5, "y":1}, {"label":"k17", "x":7.5, "y":1}, {"label":"k18", "x":8.5, "y":1}, {"label":"k19", "x":9.5, "y":1}, {"label":"k1a", "x":10.5, "y":1}, {"label":"k1b", "x":11.5, "y":1}, {"label":"k1c", "x":12.5, "y":1}, {"label":"k1d", "x":13.5, "y":1, "w":1.5}, {"label":"k20", "x":0, "y":2, "w":1.75}, {"label":"k21", "x":1.75, "y":2}, {"label":"k22", "x":2.75, "y":2}, {"label":"k23", "x":3.75, "y":2}, {"label":"k24", "x":4.75, "y":2}, {"label":"k25", "x":5.75, "y":2}, {"label":"k26", "x":6.75, "y":2}, {"label":"k27", "x":7.75, "y":2}, {"label":"k28", "x":8.75, "y":2}, {"label":"k29", "x":9.75, "y":2}, {"label":"k2a", "x":10.75, "y":2}, {"label":"k2b", "x":11.75, "y":2}, {"label":"k2d", "x":12.75, "y":2, "w":2.25}, {"label":"k30", "x":0, "y":3, "w":2.25}, {"label":"k32", "x":2.25, "y":3}, {"label":"k33", "x":3.25, "y":3}, {"label":"k34", "x":4.25, "y":3}, {"label":"k35", "x":5.25, "y":3}, {"label":"k36", "x":6.25, "y":3}, {"label":"k37", "x":7.25, "y":3}, {"label":"k38", "x":8.25, "y":3}, {"label":"k39", "x":9.25, "y":3}, {"label":"k3a", "x":10.25, "y":3}, {"label":"k3b", "x":11.25, "y":3}, {"label":"k3d", "x":12.25, "y":3, "w":2.75}, {"label":"k40", "x":0, "y":4, "w":1.25}, {"label":"k41", "x":1.25, "y":4, "w":1.25}, {"label":"k42", "x":2.5, "y":4, "w":1.25}, {"label":"k45", "x":3.75, "y":4, "w":6.25}, {"label":"k4a", "x":10, "y":4, "w":1.25}, {"label":"k4b", "x":11.25, "y":4, "w":1.25}, {"label":"k4c", "x":12.5, "y":4, "w":1.25}, {"label":"k4d", "x":13.75, "y":4, "w":1.25}] 12 {"label":"k02", "x":2, "y":0},
13 }, 13 {"label":"k03", "x":3, "y":0},
14 "LAYOUT_hhkb": { 14 {"label":"k04", "x":4, "y":0},
15 "layout": [{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k03", "x":3, "y":0}, {"label":"k04", "x":4, "y":0}, {"label":"k05", "x":5, "y":0}, {"label":"k06", "x":6, "y":0}, {"label":"k07", "x":7, "y":0}, {"label":"k08", "x":8, "y":0}, {"label":"k09", "x":9, "y":0}, {"label":"k0a", "x":10, "y":0}, {"label":"k0b", "x":11, "y":0}, {"label":"k0c", "x":12, "y":0}, {"label":"k0d", "x":13, "y":0}, {"label":"k49", "x":14, "y":0}, {"label":"k10", "x":0, "y":1, "w":1.5}, {"label":"k11", "x":1.5, "y":1}, {"label":"k12", "x":2.5, "y":1}, {"label":"k13", "x":3.5, "y":1}, {"label":"k14", "x":4.5, "y":1}, {"label":"k15", "x":5.5, "y":1}, {"label":"k16", "x":6.5, "y":1}, {"label":"k17", "x":7.5, "y":1}, {"label":"k18", "x":8.5, "y":1}, {"label":"k19", "x":9.5, "y":1}, {"label":"k1a", "x":10.5, "y":1}, {"label":"k1b", "x":11.5, "y":1}, {"label":"k1c", "x":12.5, "y":1}, {"label":"k1d", "x":13.5, "y":1, "w":1.5}, {"label":"k20", "x":0, "y":2, "w":1.75}, {"label":"k21", "x":1.75, "y":2}, {"label":"k22", "x":2.75, "y":2}, {"label":"k23", "x":3.75, "y":2}, {"label":"k24", "x":4.75, "y":2}, {"label":"k25", "x":5.75, "y":2}, {"label":"k26", "x":6.75, "y":2}, {"label":"k27", "x":7.75, "y":2}, {"label":"k28", "x":8.75, "y":2}, {"label":"k29", "x":9.75, "y":2}, {"label":"k2a", "x":10.75, "y":2}, {"label":"k2b", "x":11.75, "y":2}, {"label":"k2d", "x":12.75, "y":2, "w":2.25}, {"label":"k30", "x":0, "y":3, "w":2.25}, {"label":"k32", "x":2.25, "y":3}, {"label":"k33", "x":3.25, "y":3}, {"label":"k34", "x":4.25, "y":3}, {"label":"k35", "x":5.25, "y":3}, {"label":"k36", "x":6.25, "y":3}, {"label":"k37", "x":7.25, "y":3}, {"label":"k38", "x":8.25, "y":3}, {"label":"k39", "x":9.25, "y":3}, {"label":"k3a", "x":10.25, "y":3}, {"label":"k3b", "x":11.25, "y":3}, {"label":"k3d", "x":12.25, "y":3, "w":1.75}, {"label":"k3c", "x":14, "y":3}, {"label":"k40", "x":0, "y":4, "w":1.25}, {"label":"k41", "x":1.25, "y":4, "w":1.25}, {"label":"k42", "x":2.5, "y":4, "w":1.25}, {"label":"k45", "x":3.75, "y":4, "w":6.25}, {"label":"k4a", "x":10, "y":4, "w":1.25}, {"label":"k4b", "x":11.25, "y":4, "w":1.25}, {"label":"k4c", "x":12.5, "y":4, "w":1.25}, {"label":"k4d", "x":13.75, "y":4, "w":1.25}] 15 {"label":"k05", "x":5, "y":0},
16 }, 16 {"label":"k06", "x":6, "y":0},
17 "LAYOUT_iso": { 17 {"label":"k07", "x":7, "y":0},
18 "layout": [{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k03", "x":3, "y":0}, {"label":"k04", "x":4, "y":0}, {"label":"k05", "x":5, "y":0}, {"label":"k06", "x":6, "y":0}, {"label":"k07", "x":7, "y":0}, {"label":"k08", "x":8, "y":0}, {"label":"k09", "x":9, "y":0}, {"label":"k0a", "x":10, "y":0}, {"label":"k0b", "x":11, "y":0}, {"label":"k0c", "x":12, "y":0}, {"label":"k0d", "x":13, "y":0, "w":2}, {"label":"k10", "x":0, "y":1, "w":1.5}, {"label":"k11", "x":1.5, "y":1}, {"label":"k12", "x":2.5, "y":1}, {"label":"k13", "x":3.5, "y":1}, {"label":"k14", "x":4.5, "y":1}, {"label":"k15", "x":5.5, "y":1}, {"label":"k16", "x":6.5, "y":1}, {"label":"k17", "x":7.5, "y":1}, {"label":"k18", "x":8.5, "y":1}, {"label":"k19", "x":9.5, "y":1}, {"label":"k1a", "x":10.5, "y":1}, {"label":"k1b", "x":11.5, "y":1}, {"label":"k1c", "x":12.5, "y":1}, {"label":"k1d", "x":13.5, "y":1, "w":1.5}, {"label":"k20", "x":0, "y":2, "w":1.75}, {"label":"k21", "x":1.75, "y":2}, {"label":"k22", "x":2.75, "y":2}, {"label":"k23", "x":3.75, "y":2}, {"label":"k24", "x":4.75, "y":2}, {"label":"k25", "x":5.75, "y":2}, {"label":"k26", "x":6.75, "y":2}, {"label":"k27", "x":7.75, "y":2}, {"label":"k28", "x":8.75, "y":2}, {"label":"k29", "x":9.75, "y":2}, {"label":"k2a", "x":10.75, "y":2}, {"label":"k2b", "x":11.75, "y":2}, {"label":"k2c", "x":12.75, "y":2}, {"label":"k2d", "x":13.75, "y":2, "w":1.25}, {"label":"k30", "x":0, "y":3, "w":1.25}, {"label":"k31", "x":1.25, "y":3}, {"label":"k32", "x":2.25, "y":3}, {"label":"k33", "x":3.25, "y":3}, {"label":"k34", "x":4.25, "y":3}, {"label":"k35", "x":5.25, "y":3}, {"label":"k36", "x":6.25, "y":3}, {"label":"k37", "x":7.25, "y":3}, {"label":"k38", "x":8.25, "y":3}, {"label":"k39", "x":9.25, "y":3}, {"label":"k3a", "x":10.25, "y":3}, {"label":"k3b", "x":11.25, "y":3}, {"label":"k3d", "x":12.25, "y":3, "w":2.75}, {"label":"k40", "x":0, "y":4, "w":1.25}, {"label":"k41", "x":1.25, "y":4, "w":1.25}, {"label":"k42", "x":2.5, "y":4, "w":1.25}, {"label":"k45", "x":3.75, "y":4, "w":6.25}, {"label":"k4a", "x":10, "y":4, "w":1.25}, {"label":"k4b", "x":11.25, "y":4, "w":1.25}, {"label":"k4c", "x":12.5, "y":4, "w":1.25}, {"label":"k4d", "x":13.75, "y":4, "w":1.25}] 18 {"label":"k08", "x":8, "y":0},
19 }, 19 {"label":"k09", "x":9, "y":0},
20 "LAYOUT_iso_splitrshift": { 20 {"label":"k0a", "x":10, "y":0},
21 "layout": [{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k03", "x":3, "y":0}, {"label":"k04", "x":4, "y":0}, {"label":"k05", "x":5, "y":0}, {"label":"k06", "x":6, "y":0}, {"label":"k07", "x":7, "y":0}, {"label":"k08", "x":8, "y":0}, {"label":"k09", "x":9, "y":0}, {"label":"k0a", "x":10, "y":0}, {"label":"k0b", "x":11, "y":0}, {"label":"k0c", "x":12, "y":0}, {"label":"k0d", "x":13, "y":0, "w":2}, {"label":"k10", "x":0, "y":1, "w":1.5}, {"label":"k11", "x":1.5, "y":1}, {"label":"k12", "x":2.5, "y":1}, {"label":"k13", "x":3.5, "y":1}, {"label":"k14", "x":4.5, "y":1}, {"label":"k15", "x":5.5, "y":1}, {"label":"k16", "x":6.5, "y":1}, {"label":"k17", "x":7.5, "y":1}, {"label":"k18", "x":8.5, "y":1}, {"label":"k19", "x":9.5, "y":1}, {"label":"k1a", "x":10.5, "y":1}, {"label":"k1b", "x":11.5, "y":1}, {"label":"k1c", "x":12.5, "y":1}, {"label":"k1d", "x":13.5, "y":1, "w":1.5}, {"label":"k20", "x":0, "y":2, "w":1.75}, {"label":"k21", "x":1.75, "y":2}, {"label":"k22", "x":2.75, "y":2}, {"label":"k23", "x":3.75, "y":2}, {"label":"k24", "x":4.75, "y":2}, {"label":"k25", "x":5.75, "y":2}, {"label":"k26", "x":6.75, "y":2}, {"label":"k27", "x":7.75, "y":2}, {"label":"k28", "x":8.75, "y":2}, {"label":"k29", "x":9.75, "y":2}, {"label":"k2a", "x":10.75, "y":2}, {"label":"k2b", "x":11.75, "y":2}, {"label":"k2c", "x":12.75, "y":2}, {"label":"k2d", "x":13.75, "y":2, "w":1.25}, {"label":"k30", "x":0, "y":3, "w":1.25}, {"label":"k31", "x":1.25, "y":3}, {"label":"k32", "x":2.25, "y":3}, {"label":"k33", "x":3.25, "y":3}, {"label":"k34", "x":4.25, "y":3}, {"label":"k35", "x":5.25, "y":3}, {"label":"k36", "x":6.25, "y":3}, {"label":"k37", "x":7.25, "y":3}, {"label":"k38", "x":8.25, "y":3}, {"label":"k39", "x":9.25, "y":3}, {"label":"k3a", "x":10.25, "y":3}, {"label":"k3b", "x":11.25, "y":3}, {"label":"k3d", "x":12.25, "y":3, "w":1.75}, {"label":"k3c", "x":14, "y":3}, {"label":"k40", "x":0, "y":4, "w":1.25}, {"label":"k41", "x":1.25, "y":4, "w":1.25}, {"label":"k42", "x":2.5, "y":4, "w":1.25}, {"label":"k45", "x":3.75, "y":4, "w":6.25}, {"label":"k4a", "x":10, "y":4, "w":1.25}, {"label":"k4b", "x":11.25, "y":4, "w":1.25}, {"label":"k4c", "x":12.5, "y":4, "w":1.25}, {"label":"k4d", "x":13.75, "y":4, "w":1.25}] 21 {"label":"k0b", "x":11, "y":0},
22 }, 22 {"label":"k0c", "x":12, "y":0},
23 "LAYOUT_max": { 23 {"label":"k0d", "x":13, "y":0},
24 "layout": [{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k03", "x":3, "y":0}, {"label":"k04", "x":4, "y":0}, {"label":"k05", "x":5, "y":0}, {"label":"k06", "x":6, "y":0}, {"label":"k07", "x":7, "y":0}, {"label":"k08", "x":8, "y":0}, {"label":"k09", "x":9, "y":0}, {"label":"k0a", "x":10, "y":0}, {"label":"k0b", "x":11, "y":0}, {"label":"k0c", "x":12, "y":0}, {"label":"k0d", "x":13, "y":0}, {"label":"k49", "x":14, "y":0}, {"label":"k10", "x":0, "y":1, "w":1.5}, {"label":"k11", "x":1.5, "y":1}, {"label":"k12", "x":2.5, "y":1}, {"label":"k13", "x":3.5, "y":1}, {"label":"k14", "x":4.5, "y":1}, {"label":"k15", "x":5.5, "y":1}, {"label":"k16", "x":6.5, "y":1}, {"label":"k17", "x":7.5, "y":1}, {"label":"k18", "x":8.5, "y":1}, {"label":"k19", "x":9.5, "y":1}, {"label":"k1a", "x":10.5, "y":1}, {"label":"k1b", "x":11.5, "y":1}, {"label":"k1c", "x":12.5, "y":1}, {"label":"k1d", "x":13.5, "y":1, "w":1.5}, {"label":"k20", "x":0, "y":2, "w":1.75}, {"label":"k21", "x":1.75, "y":2}, {"label":"k22", "x":2.75, "y":2}, {"label":"k23", "x":3.75, "y":2}, {"label":"k24", "x":4.75, "y":2}, {"label":"k25", "x":5.75, "y":2}, {"label":"k26", "x":6.75, "y":2}, {"label":"k27", "x":7.75, "y":2}, {"label":"k28", "x":8.75, "y":2}, {"label":"k29", "x":9.75, "y":2}, {"label":"k2a", "x":10.75, "y":2}, {"label":"k2b", "x":11.75, "y":2}, {"label":"k2d", "x":12.75, "y":2, "w":2.25}, {"label":"k30", "x":0, "y":3, "w":1.25}, {"label":"k31", "x":1.25, "y":3}, {"label":"k32", "x":2.25, "y":3}, {"label":"k33", "x":3.25, "y":3}, {"label":"k34", "x":4.25, "y":3}, {"label":"k35", "x":5.25, "y":3}, {"label":"k36", "x":6.25, "y":3}, {"label":"k37", "x":7.25, "y":3}, {"label":"k38", "x":8.25, "y":3}, {"label":"k39", "x":9.25, "y":3}, {"label":"k3a", "x":10.25, "y":3}, {"label":"k3b", "x":11.25, "y":3}, {"label":"k3d", "x":12.25, "y":3, "w":1.75}, {"label":"k3c", "x":14, "y":3}, {"label":"k40", "x":0, "y":4, "w":1.25}, {"label":"k41", "x":1.25, "y":4, "w":1.25}, {"label":"k42", "x":2.5, "y":4, "w":1.25}, {"label":"k45", "x":3.75, "y":4, "w":6.25}, {"label":"k4a", "x":10, "y":4, "w":1.25}, {"label":"k4b", "x":11.25, "y":4, "w":1.25}, {"label":"k4c", "x":12.5, "y":4, "w":1.25}, {"label":"k4d", "x":13.75, "y":4, "w":1.25}] 24 {"label":"k49", "x":14, "y":0},
25
26 {"label":"k10", "x":0, "y":1, "w":1.5},
27 {"label":"k11", "x":1.5, "y":1},
28 {"label":"k12", "x":2.5, "y":1},
29 {"label":"k13", "x":3.5, "y":1},
30 {"label":"k14", "x":4.5, "y":1},
31 {"label":"k15", "x":5.5, "y":1},
32 {"label":"k16", "x":6.5, "y":1},
33 {"label":"k17", "x":7.5, "y":1},
34 {"label":"k18", "x":8.5, "y":1},
35 {"label":"k19", "x":9.5, "y":1},
36 {"label":"k1a", "x":10.5, "y":1},
37 {"label":"k1b", "x":11.5, "y":1},
38 {"label":"k1c", "x":12.5, "y":1},
39 {"label":"k1d", "x":13.5, "y":1, "w":1.5},
40
41 {"label":"k20", "x":0, "y":2, "w":1.75},
42 {"label":"k21", "x":1.75, "y":2},
43 {"label":"k22", "x":2.75, "y":2},
44 {"label":"k23", "x":3.75, "y":2},
45 {"label":"k24", "x":4.75, "y":2},
46 {"label":"k25", "x":5.75, "y":2},
47 {"label":"k26", "x":6.75, "y":2},
48 {"label":"k27", "x":7.75, "y":2},
49 {"label":"k28", "x":8.75, "y":2},
50 {"label":"k29", "x":9.75, "y":2},
51 {"label":"k2a", "x":10.75, "y":2},
52 {"label":"k2b", "x":11.75, "y":2},
53 {"label":"k2c", "x":12.75, "y":2},
54 {"label":"k2d", "x":13.75, "y":2, "w":1.25},
55
56 {"label":"k30", "x":0, "y":3, "w":1.25},
57 {"label":"k31", "x":1.25, "y":3},
58 {"label":"k32", "x":2.25, "y":3},
59 {"label":"k33", "x":3.25, "y":3},
60 {"label":"k34", "x":4.25, "y":3},
61 {"label":"k35", "x":5.25, "y":3},
62 {"label":"k36", "x":6.25, "y":3},
63 {"label":"k37", "x":7.25, "y":3},
64 {"label":"k38", "x":8.25, "y":3},
65 {"label":"k39", "x":9.25, "y":3},
66 {"label":"k3a", "x":10.25, "y":3},
67 {"label":"k3b", "x":11.25, "y":3},
68 {"label":"k3d", "x":12.25, "y":3, "w":1.75},
69 {"label":"k3c", "x":14, "y":3},
70
71 {"label":"k40", "x":0, "y":4, "w":1.25},
72 {"label":"k41", "x":1.25, "y":4, "w":1.25},
73 {"label":"k42", "x":2.5, "y":4, "w":1.25},
74 {"label":"k45", "x":3.75, "y":4, "w":6.25},
75 {"label":"k4a", "x":10, "y":4, "w":1.25},
76 {"label":"k4b", "x":11.25, "y":4, "w":1.25},
77 {"label":"k4c", "x":12.5, "y":4, "w":1.25},
78 {"label":"k4d", "x":13.75, "y":4, "w":1.25}
79 ]
80 },
81 "LAYOUT_60_ansi": {
82 "layout": [
83 {"label":"k00", "x":0, "y":0},
84 {"label":"k01", "x":1, "y":0},
85 {"label":"k02", "x":2, "y":0},
86 {"label":"k03", "x":3, "y":0},
87 {"label":"k04", "x":4, "y":0},
88 {"label":"k05", "x":5, "y":0},
89 {"label":"k06", "x":6, "y":0},
90 {"label":"k07", "x":7, "y":0},
91 {"label":"k08", "x":8, "y":0},
92 {"label":"k09", "x":9, "y":0},
93 {"label":"k0a", "x":10, "y":0},
94 {"label":"k0b", "x":11, "y":0},
95 {"label":"k0c", "x":12, "y":0},
96 {"label":"k0d", "x":13, "y":0, "w":2},
97
98 {"label":"k10", "x":0, "y":1, "w":1.5},
99 {"label":"k11", "x":1.5, "y":1},
100 {"label":"k12", "x":2.5, "y":1},
101 {"label":"k13", "x":3.5, "y":1},
102 {"label":"k14", "x":4.5, "y":1},
103 {"label":"k15", "x":5.5, "y":1},
104 {"label":"k16", "x":6.5, "y":1},
105 {"label":"k17", "x":7.5, "y":1},
106 {"label":"k18", "x":8.5, "y":1},
107 {"label":"k19", "x":9.5, "y":1},
108 {"label":"k1a", "x":10.5, "y":1},
109 {"label":"k1b", "x":11.5, "y":1},
110 {"label":"k1c", "x":12.5, "y":1},
111 {"label":"k1d", "x":13.5, "y":1, "w":1.5},
112
113 {"label":"k20", "x":0, "y":2, "w":1.75},
114 {"label":"k21", "x":1.75, "y":2},
115 {"label":"k22", "x":2.75, "y":2},
116 {"label":"k23", "x":3.75, "y":2},
117 {"label":"k24", "x":4.75, "y":2},
118 {"label":"k25", "x":5.75, "y":2},
119 {"label":"k26", "x":6.75, "y":2},
120 {"label":"k27", "x":7.75, "y":2},
121 {"label":"k28", "x":8.75, "y":2},
122 {"label":"k29", "x":9.75, "y":2},
123 {"label":"k2a", "x":10.75, "y":2},
124 {"label":"k2b", "x":11.75, "y":2},
125 {"label":"k2d", "x":12.75, "y":2, "w":2.25},
126
127 {"label":"k30", "x":0, "y":3, "w":2.25},
128 {"label":"k32", "x":2.25, "y":3},
129 {"label":"k33", "x":3.25, "y":3},
130 {"label":"k34", "x":4.25, "y":3},
131 {"label":"k35", "x":5.25, "y":3},
132 {"label":"k36", "x":6.25, "y":3},
133 {"label":"k37", "x":7.25, "y":3},
134 {"label":"k38", "x":8.25, "y":3},
135 {"label":"k39", "x":9.25, "y":3},
136 {"label":"k3a", "x":10.25, "y":3},
137 {"label":"k3b", "x":11.25, "y":3},
138 {"label":"k3d", "x":12.25, "y":3, "w":2.75},
139
140 {"label":"k40", "x":0, "y":4, "w":1.25},
141 {"label":"k41", "x":1.25, "y":4, "w":1.25},
142 {"label":"k42", "x":2.5, "y":4, "w":1.25},
143 {"label":"k45", "x":3.75, "y":4, "w":6.25},
144 {"label":"k4a", "x":10, "y":4, "w":1.25},
145 {"label":"k4b", "x":11.25, "y":4, "w":1.25},
146 {"label":"k4c", "x":12.5, "y":4, "w":1.25},
147 {"label":"k4d", "x":13.75, "y":4, "w":1.25}
148 ]
149 },
150 "LAYOUT_60_hhkb": {
151 "layout": [
152 {"label":"k00", "x":0, "y":0},
153 {"label":"k01", "x":1, "y":0},
154 {"label":"k02", "x":2, "y":0},
155 {"label":"k03", "x":3, "y":0},
156 {"label":"k04", "x":4, "y":0},
157 {"label":"k05", "x":5, "y":0},
158 {"label":"k06", "x":6, "y":0},
159 {"label":"k07", "x":7, "y":0},
160 {"label":"k08", "x":8, "y":0},
161 {"label":"k09", "x":9, "y":0},
162 {"label":"k0a", "x":10, "y":0},
163 {"label":"k0b", "x":11, "y":0},
164 {"label":"k0c", "x":12, "y":0},
165 {"label":"k0d", "x":13, "y":0},
166 {"label":"k49", "x":14, "y":0},
167
168 {"label":"k10", "x":0, "y":1, "w":1.5},
169 {"label":"k11", "x":1.5, "y":1},
170 {"label":"k12", "x":2.5, "y":1},
171 {"label":"k13", "x":3.5, "y":1},
172 {"label":"k14", "x":4.5, "y":1},
173 {"label":"k15", "x":5.5, "y":1},
174 {"label":"k16", "x":6.5, "y":1},
175 {"label":"k17", "x":7.5, "y":1},
176 {"label":"k18", "x":8.5, "y":1},
177 {"label":"k19", "x":9.5, "y":1},
178 {"label":"k1a", "x":10.5, "y":1},
179 {"label":"k1b", "x":11.5, "y":1},
180 {"label":"k1c", "x":12.5, "y":1},
181 {"label":"k1d", "x":13.5, "y":1, "w":1.5},
182
183 {"label":"k20", "x":0, "y":2, "w":1.75},
184 {"label":"k21", "x":1.75, "y":2},
185 {"label":"k22", "x":2.75, "y":2},
186 {"label":"k23", "x":3.75, "y":2},
187 {"label":"k24", "x":4.75, "y":2},
188 {"label":"k25", "x":5.75, "y":2},
189 {"label":"k26", "x":6.75, "y":2},
190 {"label":"k27", "x":7.75, "y":2},
191 {"label":"k28", "x":8.75, "y":2},
192 {"label":"k29", "x":9.75, "y":2},
193 {"label":"k2a", "x":10.75, "y":2},
194 {"label":"k2b", "x":11.75, "y":2},
195 {"label":"k2d", "x":12.75, "y":2, "w":2.25},
196
197 {"label":"k30", "x":0, "y":3, "w":2.25},
198 {"label":"k32", "x":2.25, "y":3},
199 {"label":"k33", "x":3.25, "y":3},
200 {"label":"k34", "x":4.25, "y":3},
201 {"label":"k35", "x":5.25, "y":3},
202 {"label":"k36", "x":6.25, "y":3},
203 {"label":"k37", "x":7.25, "y":3},
204 {"label":"k38", "x":8.25, "y":3},
205 {"label":"k39", "x":9.25, "y":3},
206 {"label":"k3a", "x":10.25, "y":3},
207 {"label":"k3b", "x":11.25, "y":3},
208 {"label":"k3d", "x":12.25, "y":3, "w":1.75},
209 {"label":"k3c", "x":14, "y":3},
210
211 {"label":"k41", "x":1.5, "y":4},
212 {"label":"k42", "x":2.5, "y":4, "w":1.5},
213 {"label":"k45", "x":4, "y":4, "w":7},
214 {"label":"k4b", "x":11, "y":4, "w":1.5},
215 {"label":"k4c", "x":12.5, "y":4}
216 ]
217 },
218 "LAYOUT_60_iso": {
219 "layout": [
220 {"label":"k00", "x":0, "y":0},
221 {"label":"k01", "x":1, "y":0},
222 {"label":"k02", "x":2, "y":0},
223 {"label":"k03", "x":3, "y":0},
224 {"label":"k04", "x":4, "y":0},
225 {"label":"k05", "x":5, "y":0},
226 {"label":"k06", "x":6, "y":0},
227 {"label":"k07", "x":7, "y":0},
228 {"label":"k08", "x":8, "y":0},
229 {"label":"k09", "x":9, "y":0},
230 {"label":"k0a", "x":10, "y":0},
231 {"label":"k0b", "x":11, "y":0},
232 {"label":"k0c", "x":12, "y":0},
233 {"label":"k0d", "x":13, "y":0, "w":2},
234
235 {"label":"k10", "x":0, "y":1, "w":1.5},
236 {"label":"k11", "x":1.5, "y":1},
237 {"label":"k12", "x":2.5, "y":1},
238 {"label":"k13", "x":3.5, "y":1},
239 {"label":"k14", "x":4.5, "y":1},
240 {"label":"k15", "x":5.5, "y":1},
241 {"label":"k16", "x":6.5, "y":1},
242 {"label":"k17", "x":7.5, "y":1},
243 {"label":"k18", "x":8.5, "y":1},
244 {"label":"k19", "x":9.5, "y":1},
245 {"label":"k1a", "x":10.5, "y":1},
246 {"label":"k1b", "x":11.5, "y":1},
247 {"label":"k1c", "x":12.5, "y":1},
248
249 {"label":"k20", "x":0, "y":2, "w":1.75},
250 {"label":"k21", "x":1.75, "y":2},
251 {"label":"k22", "x":2.75, "y":2},
252 {"label":"k23", "x":3.75, "y":2},
253 {"label":"k24", "x":4.75, "y":2},
254 {"label":"k25", "x":5.75, "y":2},
255 {"label":"k26", "x":6.75, "y":2},
256 {"label":"k27", "x":7.75, "y":2},
257 {"label":"k28", "x":8.75, "y":2},
258 {"label":"k29", "x":9.75, "y":2},
259 {"label":"k2a", "x":10.75, "y":2},
260 {"label":"k2b", "x":11.75, "y":2},
261 {"label":"k2c", "x":12.75, "y":2},
262 {"label":"k2d", "x":13.75, "y":1, "w":1.25, "h":2},
263
264 {"label":"k30", "x":0, "y":3, "w":1.25},
265 {"label":"k31", "x":1.25, "y":3},
266 {"label":"k32", "x":2.25, "y":3},
267 {"label":"k33", "x":3.25, "y":3},
268 {"label":"k34", "x":4.25, "y":3},
269 {"label":"k35", "x":5.25, "y":3},
270 {"label":"k36", "x":6.25, "y":3},
271 {"label":"k37", "x":7.25, "y":3},
272 {"label":"k38", "x":8.25, "y":3},
273 {"label":"k39", "x":9.25, "y":3},
274 {"label":"k3a", "x":10.25, "y":3},
275 {"label":"k3b", "x":11.25, "y":3},
276 {"label":"k3d", "x":12.25, "y":3, "w":2.75},
277
278 {"label":"k40", "x":0, "y":4, "w":1.25},
279 {"label":"k41", "x":1.25, "y":4, "w":1.25},
280 {"label":"k42", "x":2.5, "y":4, "w":1.25},
281 {"label":"k45", "x":3.75, "y":4, "w":6.25},
282 {"label":"k4a", "x":10, "y":4, "w":1.25},
283 {"label":"k4b", "x":11.25, "y":4, "w":1.25},
284 {"label":"k4c", "x":12.5, "y":4, "w":1.25},
285 {"label":"k4d", "x":13.75, "y":4, "w":1.25}
286 ]
287 },
288 "LAYOUT_60_ansi_split_bs_rshift": {
289 "layout": [
290 {"label":"k00", "x":0, "y":0},
291 {"label":"k01", "x":1, "y":0},
292 {"label":"k02", "x":2, "y":0},
293 {"label":"k03", "x":3, "y":0},
294 {"label":"k04", "x":4, "y":0},
295 {"label":"k05", "x":5, "y":0},
296 {"label":"k06", "x":6, "y":0},
297 {"label":"k07", "x":7, "y":0},
298 {"label":"k08", "x":8, "y":0},
299 {"label":"k09", "x":9, "y":0},
300 {"label":"k0a", "x":10, "y":0},
301 {"label":"k0b", "x":11, "y":0},
302 {"label":"k0c", "x":12, "y":0},
303 {"label":"k0d", "x":13, "y":0},
304 {"label":"k49", "x":14, "y":0},
305
306 {"label":"k10", "x":0, "y":1, "w":1.5},
307 {"label":"k11", "x":1.5, "y":1},
308 {"label":"k12", "x":2.5, "y":1},
309 {"label":"k13", "x":3.5, "y":1},
310 {"label":"k14", "x":4.5, "y":1},
311 {"label":"k15", "x":5.5, "y":1},
312 {"label":"k16", "x":6.5, "y":1},
313 {"label":"k17", "x":7.5, "y":1},
314 {"label":"k18", "x":8.5, "y":1},
315 {"label":"k19", "x":9.5, "y":1},
316 {"label":"k1a", "x":10.5, "y":1},
317 {"label":"k1b", "x":11.5, "y":1},
318 {"label":"k1c", "x":12.5, "y":1},
319 {"label":"k1d", "x":13.5, "y":1, "w":1.5},
320
321 {"label":"k20", "x":0, "y":2, "w":1.75},
322 {"label":"k21", "x":1.75, "y":2},
323 {"label":"k22", "x":2.75, "y":2},
324 {"label":"k23", "x":3.75, "y":2},
325 {"label":"k24", "x":4.75, "y":2},
326 {"label":"k25", "x":5.75, "y":2},
327 {"label":"k26", "x":6.75, "y":2},
328 {"label":"k27", "x":7.75, "y":2},
329 {"label":"k28", "x":8.75, "y":2},
330 {"label":"k29", "x":9.75, "y":2},
331 {"label":"k2a", "x":10.75, "y":2},
332 {"label":"k2b", "x":11.75, "y":2},
333 {"label":"k2d", "x":12.75, "y":2, "w":2.25},
334
335 {"label":"k30", "x":0, "y":3, "w":2.25},
336 {"label":"k32", "x":2.25, "y":3},
337 {"label":"k33", "x":3.25, "y":3},
338 {"label":"k34", "x":4.25, "y":3},
339 {"label":"k35", "x":5.25, "y":3},
340 {"label":"k36", "x":6.25, "y":3},
341 {"label":"k37", "x":7.25, "y":3},
342 {"label":"k38", "x":8.25, "y":3},
343 {"label":"k39", "x":9.25, "y":3},
344 {"label":"k3a", "x":10.25, "y":3},
345 {"label":"k3b", "x":11.25, "y":3},
346 {"label":"k3d", "x":12.25, "y":3, "w":1.75},
347 {"label":"k3c", "x":14, "y":3},
348
349 {"label":"k40", "x":0, "y":4, "w":1.25},
350 {"label":"k41", "x":1.25, "y":4, "w":1.25},
351 {"label":"k42", "x":2.5, "y":4, "w":1.25},
352 {"label":"k45", "x":3.75, "y":4, "w":6.25},
353 {"label":"k4a", "x":10, "y":4, "w":1.25},
354 {"label":"k4b", "x":11.25, "y":4, "w":1.25},
355 {"label":"k4c", "x":12.5, "y":4, "w":1.25},
356 {"label":"k4d", "x":13.75, "y":4, "w":1.25}
357 ]
358 }
25 } 359 }
26 }
27} 360}
diff --git a/keyboards/amj60/keymaps/default/keymap.c b/keyboards/amj60/keymaps/default/keymap.c
index c5dc25018..6a0a394f5 100644
--- a/keyboards/amj60/keymaps/default/keymap.c
+++ b/keyboards/amj60/keymaps/default/keymap.c
@@ -1,55 +1,72 @@
1/* Copyright 2016 Toni (@toneman77)
2 * 2021 James Young for QMK (@noroadsleft)
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
1 17
2#include QMK_KEYBOARD_H 18#include QMK_KEYBOARD_H
3 19
4// Each layer gets a name for readability, which is then used in the keymap matrix below. 20enum layer_names {
5// The underscores don't mean anything - you can have a layer called STUFF or any other name. 21 _DEF,
6// Layer names don't all need to be of the same length, obviously, and you can also skip them 22 _FN,
7// entirely and just use numbers. 23};
8#define _DEF 0
9#define _SPC 1
10 24
11// dual-role shortcuts 25// dual-role shortcuts
12#define SPACEDUAL LT(_SPC, KC_SPACE) 26#define FN_SPC LT(_FN, KC_SPC)
13 27
14const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 28const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
29
15 /* Keymap _DEF: Default Layer 30 /* Keymap _DEF: Default Layer
16 * ,-----------------------------------------------------------. 31 * ,-----------------------------------------------------------.
17 * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \ | ~ | 32 * |Esc| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ~ |
18 * |-----------------------------------------------------------| 33 * |-----------------------------------------------------------|
19 * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| bspc| 34 * |Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Bspc|
20 * |-----------------------------------------------------------| 35 * |-----------------------------------------------------------|
21 * |Caps | A| S| D| F| G| H| J| K| L| ;| '| Return | 36 * |Caps | A | S | D | F | G | H | J | K | L | ; | ' | Return |
22 * |-----------------------------------------------------------| 37 * |-----------------------------------------------------------|
23 * |Sft | Fn0| Z| X| C| V| B| N| M| ,| .| /| Sft |Fn2| 38 * |Sft | \ | Z | X | C | V | B | N | M | , | . | / |Shift |Fn |
24 * |-----------------------------------------------------------| 39 * |-----------------------------------------------------------|
25 * |Ctrl|Win |Alt | Space/Fn0 |Alt |Win |Menu|RCtl| 40 * |Ctrl|GUI |Alt | Space/Fn |Alt |GUI | Fn |RCtl|
26 * `-----------------------------------------------------------' 41 * `-----------------------------------------------------------'
27 */ 42 */
28 [_DEF] = LAYOUT_max( 43 [_DEF] = LAYOUT_all(
29 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, \ 44 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
30 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \ 45 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
31 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_ENT, \ 46 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_NUHS, KC_ENT,
32 KC_LSFT, F(0), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, F(1), \ 47 KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
33 KC_LCTL, KC_LALT, KC_LGUI, SPACEDUAL, KC_RGUI, KC_RALT, KC_RCTL, F(2)), 48 KC_LCTL, KC_LGUI, KC_LALT, FN_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL
49 ),
34 50
35 /* Keymap 1: F-and-vim Layer, modified with Space (by holding space) 51 /* Keymap 1: F-and-vim Layer, modified with Space (by holding space)
36 * ,-----------------------------------------------------------. 52 * ,-----------------------------------------------------------.
37 * |PrSc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| | | 53 * |PSc|F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12| | |
38 * |-----------------------------------------------------------| 54 * |-----------------------------------------------------------|
39 * | |Paus| Up| [ | ] | | | | ( | ) | | | | Del | 55 * | |Pau| Up| | | | | | ( | ) | | | | Del |
40 * |-----------------------------------------------------------| 56 * |-----------------------------------------------------------|
41 * | |Lft|Dwn|Rgt| | |Left|Down|Right|Up| | | PLAY | 57 * | |Lft|Dwn|Rgt| | |Lft|Dwn|Up |Rgh| | | Play |
42 * |-----------------------------------------------------------| 58 * |-----------------------------------------------------------|
43 * | | | | | < | > | |M0 | | | | | Vol+ | | 59 * | | | | | | |Spc| | | | | | Vol+ | |
44 * |-----------------------------------------------------------| 60 * |-----------------------------------------------------------|
45 * | | | | |Alt |Prev|Vol-|Next| 61 * | | | | | |Prev|Vol-|Next|
46 * `-----------------------------------------------------------' 62 * `-----------------------------------------------------------'
47 */ 63 */
48 [_SPC] = LAYOUT_max( 64 [_FN] = LAYOUT_all(
49 KC_PSCR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, \ 65 KC_PSCR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
50 _______, KC_PAUS, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \ 66 _______, KC_PAUS, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
51 _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, KC_MPLY, \ 67 _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, KC_MPLY,
52 _______, _______, _______, _______, _______, _______, KC_SPACE, M(0), _______, _______, _______, _______, KC_VOLU, _______, \ 68 _______, _______, _______, _______, _______, _______, KC_SPC, _______, _______, _______, _______, _______, KC_VOLU, _______,
53 _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT), 69 _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT
70 ),
54 71
55}; 72};
diff --git a/keyboards/amj60/keymaps/iso_split_rshift/build.sh b/keyboards/amj60/keymaps/iso_split_rshift/build.sh
deleted file mode 100755
index 6b4b4568f..000000000
--- a/keyboards/amj60/keymaps/iso_split_rshift/build.sh
+++ /dev/null
@@ -1,42 +0,0 @@
1#!/bin/bash
2# adjust for cpu
3# -j 16 gave best result on a hyperthreaded quad core core i7
4
5LIMIT=10
6THREADS="-j 16"
7KMAP=iso_split_rshift
8
9echo "We need sudo later"
10sudo ls 2>&1 /dev/null
11
12function wait_bootloader {
13 echo "Waiting for Bootloader..."
14 local STARTTIME=$(date +"%s")
15 local REMIND=0
16 local EXEC=dfu-programmer
17 local TARGET=atmega32u4
18 while true
19 do
20 sudo $EXEC $TARGET get > /dev/null 2>&1
21 [ $? -eq 0 ] && break
22 ENDTIME=$(date +"%s")
23 DURATION=$(($ENDTIME-$STARTTIME))
24 if [ $REMIND -eq 0 -a $DURATION -gt $LIMIT ]
25 then
26 echo "Did you forget to press the reset button?"
27 REMIND=1
28 fi
29 sleep 1
30 done
31}
32make clean
33make KEYMAP=${KMAP} ${THREADS}
34if [[ $? -eq 0 ]]
35then
36 echo "please trigger flashing!"
37 wait_bootloader
38 sudo make KEYMAP=${KMAP} dfu ${THREADS}
39else
40 echo "make failed"
41 exit 77
42fi
diff --git a/keyboards/amj60/keymaps/iso_split_rshift/keymap.c b/keyboards/amj60/keymaps/iso_split_rshift/keymap.c
deleted file mode 100644
index 4fbf87c65..000000000
--- a/keyboards/amj60/keymaps/iso_split_rshift/keymap.c
+++ /dev/null
@@ -1,113 +0,0 @@
1
2#include QMK_KEYBOARD_H
3
4// Each layer gets a name for readability, which is then used in the keymap matrix below.
5// The underscores don't mean anything - you can have a layer called STUFF or any other name.
6// Layer names don't all need to be of the same length, obviously, and you can also skip them
7// entirely and just use numbers.
8#define _DEF 0
9#define _SPC 1
10#define _TAB 2
11#define _SFX 3
12
13// dual-role shortcuts
14#define TABDUAL LT(_TAB, KC_TAB)
15#define CAPSDUAL CTL_T(KC_ESC)
16#define SPACEDUAL LT(_SPC, KC_SPACE)
17#define ENTERDUAL CTL_T(KC_ENT)
18// arrow cluster duality bottom right corner
19#define ARRLEFT ALT_T(KC_LEFT)
20#define ARRDOWN GUI_T(KC_DOWN)
21#define ARRUP SFT_T(KC_UP)
22#define ARRRIGHT CTL_T(KC_RIGHT)
23// german brackets
24#define GER_CUR_L RALT(KC_7) // [
25#define GER_CUR_R RALT(KC_0) // ]
26#define GER_PAR_L LSFT(KC_8) // (
27#define GER_PAR_R LSFT(KC_9) // )
28#define GER_ANG_L KC_NUBS // <
29#define GER_ANG_R LSFT(KC_NUBS) // >
30#define GER_BRC_L RALT(KC_8) // [
31#define GER_BRC_R RALT(KC_9) // ]
32
33const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
34 /* Keymap _DEF: Default Layer
35 * ,-----------------------------------------------------------.
36 * |Grv| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp |
37 * |-----------------------------------------------------------|
38 * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \ | Tab is Fn1
39 * |-----------------------------------------------------------|
40 * |Ctrl | A| S| D| F| G| H| J| K| L| ;| '| Return |
41 * |-----------------------------------------------------------|
42 * |Sft | < | Z| X| C| V| B| N| M| ,| .| /|Shift |Fn2| RShift is UP
43 * |-----------------------------------------------------------|
44 * |Ctrl|Win |Alt | Space/Fn0 |Alt |Win |Menu|RCtl| Gui Menu, RCtrl is
45 * `-----------------------------------------------------------' LEFT DWN RIGHT
46 */
47 [_DEF] = LAYOUT_iso_splitrshift(
48 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
49 TABDUAL, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
50 CAPSDUAL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, ENTERDUAL, \
51 KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, ARRUP, TG(_SFX), \
52 KC_LCTL, KC_LGUI, KC_LALT, SPACEDUAL, KC_RALT, ARRLEFT, ARRDOWN, ARRRIGHT),
53
54 /* Keymap 1: F-and-vim Layer, modified with Space (by holding space)
55 * ,-----------------------------------------------------------.
56 * |PrSc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete|
57 * |-----------------------------------------------------------|
58 * | |Paus| Up| [ | ] | | | | ( | ) | | | | |
59 * |-----------------------------------------------------------|
60 * | |Lft|Dwn|Rgt| | |Left|Down|Right|Up| | | PLAY |
61 * |-----------------------------------------------------------|
62 * | | | | | < | > | |M0 | | | | | Vol+ | |
63 * |-----------------------------------------------------------|
64 * | | | | |Alt |Prev|Vol-|Next|
65 * `-----------------------------------------------------------'
66 */
67 [_SPC] = LAYOUT_iso_splitrshift(
68 KC_PSCR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \
69 _______, KC_PAUS, KC_UP, GER_BRC_L, GER_BRC_R, _______, _______, GER_PAR_L, GER_PAR_R, _______, _______, _______, _______, _______, \
70 _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, KC_MPLY, \
71 _______, _______, _______, _______, GER_ANG_L, GER_ANG_R, KC_SPACE, RALT(KC_SPC),_______, _______, _______, _______, KC_VOLU, _______, \
72 _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT),
73
74 /* Keymap 2: Tab Layer w/ vim pageup, modified with Tab (by holding tab)
75 * ,-----------------------------------------------------------.
76 * |WAKE| | | | | | | | | | | | |Insert| TAB+GRC = WAKE
77 * |-----------------------------------------------------------|
78 * | | | | | | | | | { | } | | | | |
79 * |-----------------------------------------------------------|
80 * | | | | | | |Pos1|PgDn|PgUp|End| | |Retrn |
81 * |-----------------------------------------------------------|
82 * | | | | | | | |AF2| | | | | PgUp | |
83 * |-----------------------------------------------------------|
84 * | | | | |Alt |Pos1|PgDn|End |
85 * `-----------------------------------------------------------'
86 */
87 [_TAB] = LAYOUT_iso_splitrshift(
88 KC_WAKE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, \
89 _______, _______, _______, _______, _______, _______, _______, GER_CUR_L, GER_CUR_R, _______, _______, _______, _______, _______, \
90 _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______, _______, KC_ENT, \
91 _______, _______, _______, _______, _______, _______, _______, A(KC_F2), _______, _______, _______, _______, KC_PGUP, _______, \
92 _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END),
93
94 /* Keymap 3: Split right shift Numpad toggle Layer (by tapping the split rshift key)
95 * ,-----------------------------------------------------------.
96 * |RSET| | | | | | | 7| 8| 9| | | |Backsp |
97 * |-----------------------------------------------------------|
98 * | | | | | | | | 4 | 5 | 6 | | | | \ |
99 * |-----------------------------------------------------------|
100 * | | L | L | | | | | 1 | 2 | 3 | | | Return |
101 * |-----------------------------------------------------------|
102 * | | | L | L | L | L | L | L | | 0 | | /| Up | | All "L"s represent
103 * |-----------------------------------------------------------| LED controlling
104 * |Ctrl|Win |Alt | |Alt |Left|Down|Right|
105 * `-----------------------------------------------------------'
106 */
107 [_SFX] = LAYOUT_iso_splitrshift(
108 RESET, _______, _______, _______, _______, _______, _______, KC_7, KC_8, KC_9, _______, _______, _______, KC_BSPC, \
109 _______, _______, _______, _______, _______, _______, _______, KC_4, KC_5, KC_6, _______, _______, _______, KC_BSLS, \
110 _______, _______, _______, _______, _______, _______, _______, KC_1, KC_2, KC_3, _______, _______, XXXXXXX, KC_ENT, \
111 _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_0, _______, KC_SLSH, KC_UP, _______, \
112 _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT),
113};
diff --git a/keyboards/amj60/keymaps/iso_split_rshift/readme.md b/keyboards/amj60/keymaps/iso_split_rshift/readme.md
deleted file mode 100644
index 2113d93e4..000000000
--- a/keyboards/amj60/keymaps/iso_split_rshift/readme.md
+++ /dev/null
@@ -1,30 +0,0 @@
1toneman77's custom spacefn Layout
2=====================
3
4##Quantum MK Firmware
5For the full Quantum feature list, see the parent readme.md.
6
7# Features
8* heavily modified ISO (!) layout with split right shift key
9* spaceFn
10* Dual-Role keys:
11*
12 | Original key | when tapped | when held |
13 | ---------------- | ------------- | ------------- |
14 | Space | Space | layer change |
15 | Caps lock | Escape | Control |
16 | Tab | Tab | layer change |
17 | Enter | Enter | Control |
18
19* vim-style arrow keys on hjkl (spacefn layer)
20* corresponding Home/PgDn/PgUp/End on hjkl (tab layer)
21* bonus arrow keys in the bottom right corner on Alt/Win/Menu/rCtrl/Shift
22* more bonus arrow keys on wasd (spacefn layer)
23* media keys prev/next/play/vol+/vol- (spacefn layer)
24* firmware bootloader button
25* additional brackets that only work in german layout due to horrible placement
26in the default qwertz layout
27
28
29### Additional Credits
30* visualization of the layers [here](http://www.keyboard-layout-editor.com/#/gists/aba4e4396459ede85bc66a22cee88e48) (without the LED keys)
diff --git a/keyboards/amj60/keymaps/iso_split_rshift/rules.mk b/keyboards/amj60/keymaps/iso_split_rshift/rules.mk
deleted file mode 100644
index 1b34f4f60..000000000
--- a/keyboards/amj60/keymaps/iso_split_rshift/rules.mk
+++ /dev/null
@@ -1,20 +0,0 @@
1# Build Options
2# change to "no" to disable the options, or define them in the Makefile in
3# the appropriate keymap folder that will get included automatically
4#
5BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
6MOUSEKEY_ENABLE = no # Mouse keys(+4700)
7EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
8CONSOLE_ENABLE = no # Console for debug(+400)
9COMMAND_ENABLE = yes # Commands for debug and configuration
10NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
11BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
12MIDI_ENABLE = no # MIDI controls
13AUDIO_ENABLE = no # Audio output on port C6
14UNICODE_ENABLE = no # Unicode
15BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
16RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
17
18# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
19SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
20
diff --git a/keyboards/amj60/keymaps/iso_split_rshift/updatemerge.sh b/keyboards/amj60/keymaps/iso_split_rshift/updatemerge.sh
deleted file mode 100755
index da5457e19..000000000
--- a/keyboards/amj60/keymaps/iso_split_rshift/updatemerge.sh
+++ /dev/null
@@ -1,4 +0,0 @@
1#!/bin/bash
2git checkout amj60 # gets you on branch amj60
3git fetch origin # gets you up to date with origin
4git merge origin/master
diff --git a/keyboards/amj60/keymaps/maximized/keymap.c b/keyboards/amj60/keymaps/maximized/keymap.c
deleted file mode 100644
index c5dc25018..000000000
--- a/keyboards/amj60/keymaps/maximized/keymap.c
+++ /dev/null
@@ -1,55 +0,0 @@
1
2#include QMK_KEYBOARD_H
3
4// Each layer gets a name for readability, which is then used in the keymap matrix below.
5// The underscores don't mean anything - you can have a layer called STUFF or any other name.
6// Layer names don't all need to be of the same length, obviously, and you can also skip them
7// entirely and just use numbers.
8#define _DEF 0
9#define _SPC 1
10
11// dual-role shortcuts
12#define SPACEDUAL LT(_SPC, KC_SPACE)
13
14const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
15 /* Keymap _DEF: Default Layer
16 * ,-----------------------------------------------------------.
17 * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \ | ~ |
18 * |-----------------------------------------------------------|
19 * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| bspc|
20 * |-----------------------------------------------------------|
21 * |Caps | A| S| D| F| G| H| J| K| L| ;| '| Return |
22 * |-----------------------------------------------------------|
23 * |Sft | Fn0| Z| X| C| V| B| N| M| ,| .| /| Sft |Fn2|
24 * |-----------------------------------------------------------|
25 * |Ctrl|Win |Alt | Space/Fn0 |Alt |Win |Menu|RCtl|
26 * `-----------------------------------------------------------'
27 */
28 [_DEF] = LAYOUT_max(
29 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, \
30 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, \
31 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_ENT, \
32 KC_LSFT, F(0), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, F(1), \
33 KC_LCTL, KC_LALT, KC_LGUI, SPACEDUAL, KC_RGUI, KC_RALT, KC_RCTL, F(2)),
34
35 /* Keymap 1: F-and-vim Layer, modified with Space (by holding space)
36 * ,-----------------------------------------------------------.
37 * |PrSc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| | |
38 * |-----------------------------------------------------------|
39 * | |Paus| Up| [ | ] | | | | ( | ) | | | | Del |
40 * |-----------------------------------------------------------|
41 * | |Lft|Dwn|Rgt| | |Left|Down|Right|Up| | | PLAY |
42 * |-----------------------------------------------------------|
43 * | | | | | < | > | |M0 | | | | | Vol+ | |
44 * |-----------------------------------------------------------|
45 * | | | | |Alt |Prev|Vol-|Next|
46 * `-----------------------------------------------------------'
47 */
48 [_SPC] = LAYOUT_max(
49 KC_PSCR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, \
50 _______, KC_PAUS, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
51 _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, KC_MPLY, \
52 _______, _______, _______, _______, _______, _______, KC_SPACE, M(0), _______, _______, _______, _______, KC_VOLU, _______, \
53 _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT),
54
55};
diff --git a/keyboards/amj60/readme.md b/keyboards/amj60/readme.md
index 394f86456..50cf3cfcb 100644
--- a/keyboards/amj60/readme.md
+++ b/keyboards/amj60/readme.md
@@ -1,14 +1,22 @@
1AMJ60 1# AMJ60
2=== 2
3![AMJ60](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/amj60/s-l1200_640.jpg)
3 4
4A 60% keyboard. 5A 60% keyboard.
5 6
6Keyboard Maintainer: QMK Community 7* Keyboard Maintainer: [The QMK Community](https://github.com/qmk)
7Hardware Supported: AMJ60 8* Hardware Supported: AMJ60
8Hardware Availability: https://geekhack.org/index.php?topic=77636.0 9* Hardware Availability: [~~Taobao~~](http://item.taobao.com/item.htm?id=43500549469) (no longer available)
10* References: [Geekhack](https://geekhack.org/index.php?topic=77636.0)
9 11
10Make example for this keyboard (after setting up your build environment): 12Make example for this keyboard (after setting up your build environment):
11 13
12 make amj60:maximized 14 make amj60:default
15
16Flashing example for this keyboard:
17
18 make amj60:default:flash
19
20To reset the board into bootloader mode, tap the Reset switch mounted on the bottom side of the PCB.
13 21
14See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. 22See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/amj60/rules.mk b/keyboards/amj60/rules.mk
index 7bc8ffe18..ff6eea50a 100644
--- a/keyboards/amj60/rules.mk
+++ b/keyboards/amj60/rules.mk
@@ -2,29 +2,23 @@
2MCU = atmega32u4 2MCU = atmega32u4
3 3
4# Bootloader selection 4# Bootloader selection
5# Teensy halfkay
6# Pro Micro caterina
7# Atmel DFU atmel-dfu
8# LUFA DFU lufa-dfu
9# QMK DFU qmk-dfu
10# ATmega32A bootloadHID
11# ATmega328P USBasp
12BOOTLOADER = atmel-dfu 5BOOTLOADER = atmel-dfu
13 6
14# Build Options 7# Build Options
15# comment out to disable the options. 8# change yes to no to disable
16# 9#
17BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration 10BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
18MOUSEKEY_ENABLE = no # Mouse keys 11MOUSEKEY_ENABLE = no # Mouse keys
19EXTRAKEY_ENABLE = yes # Audio control and System control 12EXTRAKEY_ENABLE = yes # Audio control and System control
20CONSOLE_ENABLE = yes # Console for debug 13CONSOLE_ENABLE = yes # Console for debug
21COMMAND_ENABLE = yes # Commands for debug and configuration 14COMMAND_ENABLE = yes # Commands for debug and configuration
22NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work 15# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
23RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality 16SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
24BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality 17# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
25MIDI_ENABLE = no # MIDI controls 18NKRO_ENABLE = yes # USB Nkey Rollover
26AUDIO_ENABLE = no 19BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
27UNICODE_ENABLE = no # Unicode 20RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
28BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID 21BLUETOOTH_ENABLE = no # Enable Bluetooth
22AUDIO_ENABLE = no # Audio output
29 23
30LAYOUTS = 60_ansi 24LAYOUTS = 60_ansi 60_hhkb 60_iso 60_ansi_split_bs_rshift
diff --git a/keyboards/bastardkb/scylla/config.h b/keyboards/bastardkb/scylla/config.h
index b00e781df..2a4972ea1 100644
--- a/keyboards/bastardkb/scylla/config.h
+++ b/keyboards/bastardkb/scylla/config.h
@@ -1,4 +1,4 @@
1/* 1/*
2 * Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com> 2 * Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
3 * 3 *
4 * This program is free software: you can redistribute it and/or modify 4 * This program is free software: you can redistribute it and/or modify
@@ -37,3 +37,23 @@
37#define DEBOUNCE 5 37#define DEBOUNCE 5
38#define SOFT_SERIAL_PIN D0 38#define SOFT_SERIAL_PIN D0
39#define MASTER_RIGHT 39#define MASTER_RIGHT
40
41#ifdef RGBLIGHT_ENABLE
42# define RGBLED_NUM 58
43# define RGBLED_SPLIT { 29, 29 }
44# define RGBLIGHT_LIMIT_VAL 50
45# define RGBLIGHT_ANIMATIONS
46#endif
47
48// RGB matrix support
49#ifdef RGB_MATRIX_ENABLE
50# define SPLIT_TRANSPORT_MIRROR
51# define DRIVER_LED_TOTAL 58 // Number of LEDs
52# define RGB_MATRIX_SPLIT { 29, 29 }
53# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 50
54# define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
55# ifndef RGB_DISABLE_WHEN_USB_SUSPENDED
56# define RGB_DISABLE_WHEN_USB_SUSPENDED true
57# endif
58# define RGB_MATRIX_KEYPRESSES
59#endif
diff --git a/keyboards/bastardkb/scylla/rules.mk b/keyboards/bastardkb/scylla/rules.mk
index cc88208e3..70e6f13e0 100644
--- a/keyboards/bastardkb/scylla/rules.mk
+++ b/keyboards/bastardkb/scylla/rules.mk
@@ -17,7 +17,9 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
17# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work 17# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
18NKRO_ENABLE = no # USB Nkey Rollover 18NKRO_ENABLE = no # USB Nkey Rollover
19BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality 19BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
20RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow 20RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
21RGB_MATRIX_ENABLE = yes # Enable keyboard RGB matrix (do not use together with RGBLIGHT_ENABLE)
22RGB_MATRIX_DRIVER = WS2812 # RGB matrix driver support
21BLUETOOTH_ENABLE = no # Enable Bluetooth 23BLUETOOTH_ENABLE = no # Enable Bluetooth
22AUDIO_ENABLE = no # Audio output 24AUDIO_ENABLE = no # Audio output
23SPLIT_KEYBOARD = yes 25SPLIT_KEYBOARD = yes
diff --git a/keyboards/bastardkb/scylla/scylla.c b/keyboards/bastardkb/scylla/scylla.c
index f9e791708..b110d7ff5 100644
--- a/keyboards/bastardkb/scylla/scylla.c
+++ b/keyboards/bastardkb/scylla/scylla.c
@@ -1,4 +1,4 @@
1/* 1/*
2 * Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com> 2 * Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
3 * 3 *
4 * This program is free software: you can redistribute it and/or modify 4 * This program is free software: you can redistribute it and/or modify
@@ -16,3 +16,46 @@
16 */ 16 */
17 17
18#include "scylla.h" 18#include "scylla.h"
19
20#ifdef RGB_MATRIX_ENABLE
21led_config_t g_led_config = { {
22 // left
23 { 0, 7, 8, 15, 16, 20 },
24 { 1, 6, 9, 14, 17, 21 },
25 { 2, 5, 10, 13, 18, 22 },
26 { 3, 4, 11, 12, 19, 23 },
27 { NO_LED, 28, 24, 26, 27, 25 },
28 // right
29 { 29, 36, 37, 44, 45, 49 },
30 { 30, 35, 38, 43, 46, 50 },
31 { 31, 34, 39, 42, 47, 51 },
32 { 32, 33, 40, 41, 48, 52 },
33 { NO_LED, 57, 53, 55, 56, 54 }
34}, {
35 // left
36 { 0, 0 }, { 0, 16 }, { 0, 32 }, { 0, 48 }, // col 1
37 { 20, 48 }, { 20, 32 }, { 20, 16 }, { 20, 0 }, // col 2
38 { 41, 0 }, { 41, 16 }, { 41, 32 }, { 41, 48 },
39 { 61, 48 }, { 61, 32 }, { 61, 16 }, { 61, 0 },
40 { 81, 0 }, { 81, 16 }, { 81, 32 }, { 81, 48 },
41 { 102, 0 }, { 102, 16 }, { 102, 32 }, { 102, 48 },
42 { 102, 64 }, { 81, 64 }, { 61, 56 }, { 81, 56 }, { 102, 56 }, // left thumb cluster
43 // right
44 { 224, 0 }, { 224, 16 }, { 224, 32 }, { 224, 48 }, // col 12
45 { 204, 48 }, { 204, 32 }, { 204, 16 }, { 204, 0 }, // col 11
46 { 183, 0 }, { 183, 16 }, { 183, 32 }, { 183, 48 },
47 { 163, 48 }, { 163, 32 }, { 163, 16 }, { 163, 0 },
48 { 142, 0 }, { 142, 16 }, { 142, 32 }, { 142, 48 },
49 { 122, 0 }, { 122, 16 }, { 122, 32 }, { 122, 48 },
50 { 122, 64 }, { 142, 64 }, { 163, 56 }, { 142, 56 }, { 122, 56 } // right thumb cluster
51}, {
52 // left
53 2, 2, 2, 2, 4, 4, 4, 4, 4, 4, 4, 4,
54 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
55 2, 2, 2, 2, 2,
56 // right
57 2, 2, 2, 2, 4, 4, 4, 4, 4, 4, 4, 4,
58 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
59 2, 2, 2, 2, 2
60} };
61#endif
diff --git a/keyboards/checkerboards/nop60/info.json b/keyboards/checkerboards/nop60/info.json
index 66e770634..b8d081c26 100644
--- a/keyboards/checkerboards/nop60/info.json
+++ b/keyboards/checkerboards/nop60/info.json
@@ -4,139 +4,151 @@
4 "height": 5, 4 "height": 5,
5 "width": 15, 5 "width": 15,
6 "url": "", 6 "url": "",
7 "layout_aliases": {
8 "LAYOUT_2x3u": "LAYOUT_60_tsangan_hhkb_split_space",
9 "LAYOUT_7u": "LAYOUT_60_tsangan_hhkb"
10 },
7 "layouts": { 11 "layouts": {
8 "LAYOUT": { 12 "LAYOUT_60_tsangan_hhkb_split_space": {
9 "layout": [ 13 "layout": [
10 { "label": "Esc", "x": 0, "y": 0 }, 14 {"label":"Esc", "x":0, "y":0},
11 { "label": "!", "x": 1, "y": 0 }, 15 {"label":"!", "x":1, "y":0},
12 { "label": "@", "x": 2, "y": 0 }, 16 {"label":"@", "x":2, "y":0},
13 { "label": "#", "x": 3, "y": 0 }, 17 {"label":"#", "x":3, "y":0},
14 { "label": "$", "x": 4, "y": 0 }, 18 {"label":"$", "x":4, "y":0},
15 { "label": "%", "x": 5, "y": 0 }, 19 {"label":"%", "x":5, "y":0},
16 { "label": "^", "x": 6, "y": 0 }, 20 {"label":"^", "x":6, "y":0},
17 { "label": "&", "x": 7, "y": 0 }, 21 {"label":"&", "x":7, "y":0},
18 { "label": "*", "x": 8, "y": 0 }, 22 {"label":"*", "x":8, "y":0},
19 { "label": "(", "x": 9, "y": 0 }, 23 {"label":"(", "x":9, "y":0},
20 { "label": ")", "x": 10, "y": 0 }, 24 {"label":")", "x":10, "y":0},
21 { "label": "_", "x": 11, "y": 0 }, 25 {"label":"_", "x":11, "y":0},
22 { "label": "+", "x": 12, "y": 0 }, 26 {"label":"+", "x":12, "y":0},
23 { "label": "~", "x": 13, "y": 0 }, 27 {"label":"~", "x":13, "y":0},
24 { "label": "Bksp", "x": 14, "y": 0 }, 28 {"label":"Bksp", "x":14, "y":0},
25 { "label": "Tab", "w": 1.5, "x": 0, "y": 1 }, 29
26 { "label": "Q", "x": 1.5, "y": 1 }, 30 {"label":"Tab", "x":0, "y":1, "w":1.5},
27 { "label": "W", "x": 2.5, "y": 1 }, 31 {"label":"Q", "x":1.5, "y":1},
28 { "label": "E", "x": 3.5, "y": 1 }, 32 {"label":"W", "x":2.5, "y":1},
29 { "label": "R", "x": 4.5, "y": 1 }, 33 {"label":"E", "x":3.5, "y":1},
30 { "label": "T", "x": 5.5, "y": 1 }, 34 {"label":"R", "x":4.5, "y":1},
31 { "label": "Y", "x": 6.5, "y": 1 }, 35 {"label":"T", "x":5.5, "y":1},
32 { "label": "U", "x": 7.5, "y": 1 }, 36 {"label":"Y", "x":6.5, "y":1},
33 { "label": "I", "x": 8.5, "y": 1 }, 37 {"label":"U", "x":7.5, "y":1},
34 { "label": "O", "x": 9.5, "y": 1 }, 38 {"label":"I", "x":8.5, "y":1},
35 { "label": "P", "x": 10.5, "y": 1 }, 39 {"label":"O", "x":9.5, "y":1},
36 { "label": "{", "x": 11.5, "y": 1 }, 40 {"label":"P", "x":10.5, "y":1},
37 { "label": "}", "x": 12.5, "y": 1 }, 41 {"label":"{", "x":11.5, "y":1},
38 { "label": "|", "w": 1.5, "x": 13.5, "y": 1 }, 42 {"label":"}", "x":12.5, "y":1},
39 { "label": "Caps Lock", "w": 1.75, "x": 0, "y": 2 }, 43 {"label":"|", "x":13.5, "y":1, "w":1.5},
40 { "label": "A", "x": 1.75, "y": 2 }, 44
41 { "label": "S", "x": 2.75, "y": 2 }, 45 {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
42 { "label": "D", "x": 3.75, "y": 2 }, 46 {"label":"A", "x":1.75, "y":2},
43 { "label": "F", "x": 4.75, "y": 2 }, 47 {"label":"S", "x":2.75, "y":2},
44 { "label": "G", "x": 5.75, "y": 2 }, 48 {"label":"D", "x":3.75, "y":2},
45 { "label": "H", "x": 6.75, "y": 2 }, 49 {"label":"F", "x":4.75, "y":2},
46 { "label": "J", "x": 7.75, "y": 2 }, 50 {"label":"G", "x":5.75, "y":2},
47 { "label": "K", "x": 8.75, "y": 2 }, 51 {"label":"H", "x":6.75, "y":2},
48 { "label": "L", "x": 9.75, "y": 2 }, 52 {"label":"J", "x":7.75, "y":2},
49 { "label": ":", "x": 10.75, "y": 2 }, 53 {"label":"K", "x":8.75, "y":2},
50 { "label": "\"", "x": 11.75, "y": 2 }, 54 {"label":"L", "x":9.75, "y":2},
51 { "label": "Enter", "w": 2.25, "x": 12.75, "y": 2 }, 55 {"label":":", "x":10.75, "y":2},
52 { "label": "Shift", "w": 2.25, "x": 0, "y": 3 }, 56 {"label":"\"", "x":11.75, "y":2},
53 { "label": "Z", "x": 2.25, "y": 3 }, 57 {"label":"Enter", "x":12.75, "y":2, "w":2.25},
54 { "label": "X", "x": 3.25, "y": 3 }, 58
55 { "label": "C", "x": 4.25, "y": 3 }, 59 {"label":"Shift", "x":0, "y":3, "w":2.25},
56 { "label": "V", "x": 5.25, "y": 3 }, 60 {"label":"Z", "x":2.25, "y":3},
57 { "label": "B", "x": 6.25, "y": 3 }, 61 {"label":"X", "x":3.25, "y":3},
58 { "label": "N", "x": 7.25, "y": 3 }, 62 {"label":"C", "x":4.25, "y":3},
59 { "label": "M", "x": 8.25, "y": 3 }, 63 {"label":"V", "x":5.25, "y":3},
60 { "label": "<", "x": 9.25, "y": 3 }, 64 {"label":"B", "x":6.25, "y":3},
61 { "label": ">", "x": 10.25, "y": 3 }, 65 {"label":"N", "x":7.25, "y":3},
62 { "label": "?", "x": 11.25, "y": 3 }, 66 {"label":"M", "x":8.25, "y":3},
63 { "label": "Shift", "w": 1.75, "x": 12.25, "y": 3 }, 67 {"label":"<", "x":9.25, "y":3},
64 { "label": "Fn", "x": 14, "y": 3 }, 68 {"label":">", "x":10.25, "y":3},
65 { "label": "Ctrl", "w": 1.5, "x": 0, "y": 4 }, 69 {"label":"?", "x":11.25, "y":3},
66 { "label": "Win", "x": 1.5, "y": 4 }, 70 {"label":"Shift", "x":12.25, "y":3, "w":1.75},
67 { "label": "Alt", "w": 1.5, "x": 2.5, "y": 4 }, 71 {"label":"Fn", "x":14, "y":3},
68 { "w": 7, "x": 4, "y": 4 }, 72
69 { "label": "Alt", "w": 1.5, "x": 11, "y": 4 }, 73 {"label":"Ctrl", "x":0, "y":4, "w":1.5},
70 { "label": "Win", "x": 12.5, "y": 4 }, 74 {"label":"Win", "x":1.5, "y":4},
71 { "label": "Ctrl", "w": 1.5, "x": 13.5, "y": 4 } 75 {"label":"Alt", "x":2.5, "y":4, "w":1.5},
76 {"x":4, "y":4, "w":3},
77 {"x":7, "y":4},
78 {"x":8, "y":4, "w":3},
79 {"label":"Alt", "x":11, "y":4, "w":1.5},
80 {"label":"Win", "x":12.5, "y":4},
81 {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}
72 ] 82 ]
73 }, 83 },
74 "LAYOUT_2x3u": { 84 "LAYOUT_60_tsangan_hhkb": {
75 "layout": [ 85 "layout": [
76 { "label": "Esc", "x": 0, "y": 0 }, 86 {"label":"Esc", "x":0, "y":0},
77 { "label": "!", "x": 1, "y": 0 }, 87 {"label":"!", "x":1, "y":0},
78 { "label": "@", "x": 2, "y": 0 }, 88 {"label":"@", "x":2, "y":0},
79 { "label": "#", "x": 3, "y": 0 }, 89 {"label":"#", "x":3, "y":0},
80 { "label": "$", "x": 4, "y": 0 }, 90 {"label":"$", "x":4, "y":0},
81 { "label": "%", "x": 5, "y": 0 }, 91 {"label":"%", "x":5, "y":0},
82 { "label": "^", "x": 6, "y": 0 }, 92 {"label":"^", "x":6, "y":0},
83 { "label": "&", "x": 7, "y": 0 }, 93 {"label":"&", "x":7, "y":0},
84 { "label": "*", "x": 8, "y": 0 }, 94 {"label":"*", "x":8, "y":0},
85 { "label": "(", "x": 9, "y": 0 }, 95 {"label":"(", "x":9, "y":0},
86 { "label": ")", "x": 10, "y": 0 }, 96 {"label":")", "x":10, "y":0},
87 { "label": "_", "x": 11, "y": 0 }, 97 {"label":"_", "x":11, "y":0},
88 { "label": "+", "x": 12, "y": 0 }, 98 {"label":"+", "x":12, "y":0},
89 { "label": "~", "x": 13, "y": 0 }, 99 {"label":"~", "x":13, "y":0},
90 { "label": "Bksp", "x": 14, "y": 0 }, 100 {"label":"Bksp", "x":14, "y":0},
91 { "label": "Tab", "w": 1.5, "x": 0, "y": 1 }, 101
92 { "label": "Q", "x": 1.5, "y": 1 }, 102 {"label":"Tab", "x":0, "y":1, "w":1.5},
93 { "label": "W", "x": 2.5, "y": 1 }, 103 {"label":"Q", "x":1.5, "y":1},
94 { "label": "E", "x": 3.5, "y": 1 }, 104 {"label":"W", "x":2.5, "y":1},
95 { "label": "R", "x": 4.5, "y": 1 }, 105 {"label":"E", "x":3.5, "y":1},
96 { "label": "T", "x": 5.5, "y": 1 }, 106 {"label":"R", "x":4.5, "y":1},
97 { "label": "Y", "x": 6.5, "y": 1 }, 107 {"label":"T", "x":5.5, "y":1},
98 { "label": "U", "x": 7.5, "y": 1 }, 108 {"label":"Y", "x":6.5, "y":1},
99 { "label": "I", "x": 8.5, "y": 1 }, 109 {"label":"U", "x":7.5, "y":1},
100 { "label": "O", "x": 9.5, "y": 1 }, 110 {"label":"I", "x":8.5, "y":1},
101 { "label": "P", "x": 10.5, "y": 1 }, 111 {"label":"O", "x":9.5, "y":1},
102 { "label": "{", "x": 11.5, "y": 1 }, 112 {"label":"P", "x":10.5, "y":1},
103 { "label": "}", "x": 12.5, "y": 1 }, 113 {"label":"{", "x":11.5, "y":1},
104 { "label": "|", "w": 1.5, "x": 13.5, "y": 1 }, 114 {"label":"}", "x":12.5, "y":1},
105 { "label": "Caps Lock", "w": 1.75, "x": 0, "y": 2 }, 115 {"label":"|", "x":13.5, "y":1, "w":1.5},
106 { "label": "A", "x": 1.75, "y": 2 }, 116
107 { "label": "S", "x": 2.75, "y": 2 }, 117 {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
108 { "label": "D", "x": 3.75, "y": 2 }, 118 {"label":"A", "x":1.75, "y":2},
109 { "label": "F", "x": 4.75, "y": 2 }, 119 {"label":"S", "x":2.75, "y":2},
110 { "label": "G", "x": 5.75, "y": 2 }, 120 {"label":"D", "x":3.75, "y":2},
111 { "label": "H", "x": 6.75, "y": 2 }, 121 {"label":"F", "x":4.75, "y":2},
112 { "label": "J", "x": 7.75, "y": 2 }, 122 {"label":"G", "x":5.75, "y":2},
113 { "label": "K", "x": 8.75, "y": 2 }, 123 {"label":"H", "x":6.75, "y":2},
114 { "label": "L", "x": 9.75, "y": 2 }, 124 {"label":"J", "x":7.75, "y":2},
115 { "label": ":", "x": 10.75, "y": 2 }, 125 {"label":"K", "x":8.75, "y":2},
116 { "label": "\"", "x": 11.75, "y": 2 }, 126 {"label":"L", "x":9.75, "y":2},
117 { "label": "Enter", "w": 2.25, "x": 12.75, "y": 2 }, 127 {"label":":", "x":10.75, "y":2},
118 { "label": "Shift", "w": 2.25, "x": 0, "y": 3 }, 128 {"label":"\"", "x":11.75, "y":2},
119 { "label": "Z", "x": 2.25, "y": 3 }, 129 {"label":"Enter", "x":12.75, "y":2, "w":2.25},
120 { "label": "X", "x": 3.25, "y": 3 }, 130
121 { "label": "C", "x": 4.25, "y": 3 }, 131 {"label":"Shift", "x":0, "y":3, "w":2.25},
122 { "label": "V", "x": 5.25, "y": 3 }, 132 {"label":"Z", "x":2.25, "y":3},
123 { "label": "B", "x": 6.25, "y": 3 }, 133 {"label":"X", "x":3.25, "y":3},
124 { "label": "N", "x": 7.25, "y": 3 }, 134 {"label":"C", "x":4.25, "y":3},
125 { "label": "M", "x": 8.25, "y": 3 }, 135 {"label":"V", "x":5.25, "y":3},
126 { "label": "<", "x": 9.25, "y": 3 }, 136 {"label":"B", "x":6.25, "y":3},
127 { "label": ">", "x": 10.25, "y": 3 }, 137 {"label":"N", "x":7.25, "y":3},
128 { "label": "?", "x": 11.25, "y": 3 }, 138 {"label":"M", "x":8.25, "y":3},
129 { "label": "Shift", "w": 1.75, "x": 12.25, "y": 3 }, 139 {"label":"<", "x":9.25, "y":3},
130 { "label": "Fn", "x": 14, "y": 3 }, 140 {"label":">", "x":10.25, "y":3},
131 { "label": "Ctrl", "w": 1.5, "x": 0, "y": 4 }, 141 {"label":"?", "x":11.25, "y":3},
132 { "label": "Win", "x": 1.5, "y": 4 }, 142 {"label":"Shift", "x":12.25, "y":3, "w":1.75},
133 { "label": "Alt", "w": 1.5, "x": 2.5, "y": 4 }, 143 {"label":"Fn", "x":14, "y":3},
134 { "w": 3, "x": 4, "y": 4 }, 144
135 { "x": 7, "y": 4 }, 145 {"label":"Ctrl", "x":0, "y":4, "w":1.5},
136 { "w": 3, "x": 8, "y": 4 }, 146 {"label":"Win", "x":1.5, "y":4},
137 { "label": "Alt", "w": 1.5, "x": 11, "y": 4 }, 147 {"label":"Alt", "x":2.5, "y":4, "w":1.5},
138 { "label": "Win", "x": 12.5, "y": 4 }, 148 {"x":4, "y":4, "w":7},
139 { "label": "Ctrl", "w": 1.5, "x": 13.5, "y": 4 } 149 {"label":"Alt", "x":11, "y":4, "w":1.5},
150 {"label":"Win", "x":12.5, "y":4},
151 {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}
140 ] 152 ]
141 } 153 }
142 } 154 }
diff --git a/keyboards/checkerboards/nop60/keymaps/7u/keymap.c b/keyboards/checkerboards/nop60/keymaps/7u/keymap.c
index 1d230c363..61bca2616 100644
--- a/keyboards/checkerboards/nop60/keymaps/7u/keymap.c
+++ b/keyboards/checkerboards/nop60/keymaps/7u/keymap.c
@@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
34 * |Ctrl |GUI |Alt | Space |Alt |GUI |Ctrl | 34 * |Ctrl |GUI |Alt | Space |Alt |GUI |Ctrl |
35 * `-------------------------------------------------------------' 35 * `-------------------------------------------------------------'
36 */ 36 */
37 [0] = LAYOUT_7u( 37 [0] = LAYOUT_60_tsangan_hhkb(
38 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL, 38 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL,
39 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, 39 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
40 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_ENT, 40 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_ENT,
@@ -54,7 +54,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
54 * | | | | | | |RESET | 54 * | | | | | | |RESET |
55 * `------------------------------------------------------------------------------' 55 * `------------------------------------------------------------------------------'
56 */ 56 */
57 [1] = LAYOUT_7u( 57 [1] = LAYOUT_60_tsangan_hhkb(
58 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, 58 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______,
59 RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 59 RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
60 BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, 60 BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -75,7 +75,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
75 * | | | | | | |RESET | 75 * | | | | | | |RESET |
76 * `------------------------------------------------------------------------------' 76 * `------------------------------------------------------------------------------'
77 */ 77 */
78 [2] = LAYOUT_7u( 78 [2] = LAYOUT_60_tsangan_hhkb(
79 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, 79 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______,
80 RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 80 RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
81 BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, 81 BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/checkerboards/nop60/keymaps/2x3u/config.h b/keyboards/checkerboards/nop60/keymaps/default/config.h
index 598074ad2..598074ad2 100644
--- a/keyboards/checkerboards/nop60/keymaps/2x3u/config.h
+++ b/keyboards/checkerboards/nop60/keymaps/default/config.h
diff --git a/keyboards/checkerboards/nop60/keymaps/2x3u/keymap.c b/keyboards/checkerboards/nop60/keymaps/default/keymap.c
index eb05ab136..ef3ff4b8b 100644
--- a/keyboards/checkerboards/nop60/keymaps/2x3u/keymap.c
+++ b/keyboards/checkerboards/nop60/keymaps/default/keymap.c
@@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
32 * |Ctrl |GUI |Alt |Space |BLTOG |Space |Alt |GUI |Ctrl | 32 * |Ctrl |GUI |Alt |Space |BLTOG |Space |Alt |GUI |Ctrl |
33 * `-------------------------------------------------------------' 33 * `-------------------------------------------------------------'
34 */ 34 */
35 [0] = LAYOUT_2x3u( 35 [0] = LAYOUT_60_tsangan_hhkb_split_space(
36 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL, 36 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL,
37 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, 37 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
38 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_ENT, 38 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_ENT,
@@ -52,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
52 * | | | | | | | | |RESET | 52 * | | | | | | | | |RESET |
53 * `------------------------------------------------------------------------------' 53 * `------------------------------------------------------------------------------'
54 */ 54 */
55 [1] = LAYOUT_2x3u( 55 [1] = LAYOUT_60_tsangan_hhkb_split_space(
56 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, 56 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______,
57 RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 57 RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
58 BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, 58 BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -73,7 +73,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
73 * | | | | | | | | |RESET | 73 * | | | | | | | | |RESET |
74 * `------------------------------------------------------------------------------' 74 * `------------------------------------------------------------------------------'
75 */ 75 */
76 [2] = LAYOUT_2x3u( 76 [2] = LAYOUT_60_tsangan_hhkb_split_space(
77 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, 77 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______,
78 RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 78 RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
79 BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, 79 BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/checkerboards/nop60/keymaps/via/keymap.c b/keyboards/checkerboards/nop60/keymaps/via/keymap.c
index 06714115f..1fbed16ca 100644
--- a/keyboards/checkerboards/nop60/keymaps/via/keymap.c
+++ b/keyboards/checkerboards/nop60/keymaps/via/keymap.c
@@ -43,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
43 * └────┴───┴────┴──────────┴────────┴────┴────┘ │ ← │ ↓ │ → │ 43 * └────┴───┴────┴──────────┴────────┴────┴────┘ │ ← │ ↓ │ → │
44 * └───┴───┴───┘ 44 * └───┴───┴───┘
45 */ 45 */
46 [_BASE] = LAYOUT_2x3u( 46 [_BASE] = LAYOUT_60_tsangan_hhkb_split_space(
47 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL, 47 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL,
48 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, 48 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
49 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_ENT, 49 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_ENT,
@@ -62,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
62 * └────┴───┴────┴──────────┴────────┴────┴────┘ │ │ │ │ 62 * └────┴───┴────┴──────────┴────────┴────┴────┘ │ │ │ │
63 * └───┴───┴───┘ 63 * └───┴───┴───┘
64 */ 64 */
65 [_FN1] = LAYOUT_2x3u( 65 [_FN1] = LAYOUT_60_tsangan_hhkb_split_space(
66 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, 66 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______,
67 RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 67 RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
68 BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, 68 BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -82,7 +82,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
82 * └────┴────┴────┴──────────┴────────┴────┴────┘ │ │ │ │ 82 * └────┴────┴────┴──────────┴────────┴────┴────┘ │ │ │ │
83 * └───┴───┴───┘ 83 * └───┴───┴───┘
84 */ 84 */
85 [_FN2] = LAYOUT_2x3u( 85 [_FN2] = LAYOUT_60_tsangan_hhkb_split_space(
86 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, 86 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______,
87 RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 87 RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
88 BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, 88 BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -90,7 +90,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
90 _______, _______, _______, _______, _______, _______, _______, _______, RESET 90 _______, _______, _______, _______, _______, _______, _______, _______, RESET
91 ), 91 ),
92 92
93 [_VIA] = LAYOUT_2x3u( 93 [_VIA] = LAYOUT_60_tsangan_hhkb_split_space(
94 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, 94 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______,
95 RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 95 RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
96 BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, 96 BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/checkerboards/nop60/nop60.h b/keyboards/checkerboards/nop60/nop60.h
index 57da9d51e..6e98e854b 100644
--- a/keyboards/checkerboards/nop60/nop60.h
+++ b/keyboards/checkerboards/nop60/nop60.h
@@ -21,7 +21,7 @@
21 21
22#define xxx KC_NO 22#define xxx KC_NO
23 23
24#define LAYOUT_2x3u( \ 24#define LAYOUT_60_tsangan_hhkb_split_space( \
25 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k4D, \ 25 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k4D, \
26 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \ 26 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
27 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, \ 27 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, \
@@ -34,7 +34,7 @@
34 { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, xxx, k3D }, \ 34 { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, xxx, k3D }, \
35 { k40, k41, k42, xxx, k44, xxx, k46, xxx, k48, xxx, k4A, k4B, k4C, k4D } \ 35 { k40, k41, k42, xxx, k44, xxx, k46, xxx, k48, xxx, k4A, k4B, k4C, k4D } \
36} 36}
37#define LAYOUT_7u( \ 37#define LAYOUT_60_tsangan_hhkb( \
38 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k4D, \ 38 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k4D, \
39 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \ 39 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
40 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, \ 40 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, \
diff --git a/keyboards/ergoarrows/info.json b/keyboards/ergoarrows/info.json
index fca43fcd2..c95dd56d2 100644
--- a/keyboards/ergoarrows/info.json
+++ b/keyboards/ergoarrows/info.json
@@ -2,87 +2,99 @@
2 "keyboard_name": "ergoarrows", 2 "keyboard_name": "ergoarrows",
3 "url": "https://salicylic-acid3.hatenablog.com/", 3 "url": "https://salicylic-acid3.hatenablog.com/",
4 "maintainer": "Salicylic_acid3", 4 "maintainer": "Salicylic_acid3",
5 "width": 16.25, 5 "width": 15.8,
6 "height": 6.51, 6 "height": 6.5,
7 "layouts": { 7 "layouts": {
8 "LAYOUT": { 8 "LAYOUT": {
9 "layout": [ 9 "layout": [
10 {"label":"Esc", "x":0.5, "y":0.38}, 10 {"label":"Esc", "x":0, "y":0.375},
11 {"label":"1", "x":1.5, "y":0.375}, 11 {"label":"1", "x":1, "y":0.375},
12 {"label":"2", "x":2.5, "y":0.125}, 12 {"label":"2", "x":2, "y":0.125},
13 {"label":"3", "x":3.5, "y":0}, 13 {"label":"3", "x":3, "y":0},
14 {"label":"4", "x":4.5, "y":0.125}, 14 {"label":"4", "x":4, "y":0.125},
15 {"label":"5", "x":5.5, "y":0.25}, 15 {"label":"5", "x":5, "y":0.25},
16 {"label":"6", "x":6.5, "y":0.5}, 16 {"label":"6", "x":6, "y":0.5},
17 {"label":"5", "x":9.25, "y":0.5}, 17
18 {"label":"6", "x":10.25, "y":0.25}, 18 {"label":"5", "x":8.8, "y":0.5},
19 {"label":"7", "x":11.25, "y":0.13}, 19 {"label":"6", "x":9.8, "y":0.25},
20 {"label":"8", "x":12.25, "y":0}, 20 {"label":"7", "x":10.8, "y":0.125},
21 {"label":"9", "x":13.25, "y":0.13}, 21 {"label":"8", "x":11.8, "y":0},
22 {"label":"0", "x":14.25, "y":0.38}, 22 {"label":"9", "x":12.8, "y":0.125},
23 {"label":"PrtScr", "x":15.25, "y":0.38}, 23 {"label":"0", "x":13.8, "y":0.375},
24 {"label":"Tab", "x":0.5, "y":1.38}, 24 {"label":"PrtScr", "x":14.8, "y":0.375},
25 {"label":"Q", "x":1.5, "y":1.375}, 25
26 {"label":"W", "x":2.5, "y":1.125}, 26 {"label":"Tab", "x":0, "y":1.375},
27 {"label":"E", "x":3.5, "y":1}, 27 {"label":"Q", "x":1, "y":1.375},
28 {"label":"R", "x":4.5, "y":1.125}, 28 {"label":"W", "x":2, "y":1.125},
29 {"label":"T", "x":5.5, "y":1.25}, 29 {"label":"E", "x":3, "y":1},
30 {"label":"Y", "x":6.5, "y":1.5}, 30 {"label":"R", "x":4, "y":1.125},
31 {"label":"T", "x":9.25, "y":1.5}, 31 {"label":"T", "x":5, "y":1.25},
32 {"label":"Y", "x":10.25, "y":1.25}, 32 {"label":"Y", "x":6, "y":1.5},
33 {"label":"U", "x":11.25, "y":1.13}, 33
34 {"label":"I", "x":12.25, "y":1}, 34 {"label":"T", "x":8.8, "y":1.5},
35 {"label":"O", "x":13.25, "y":1.13}, 35 {"label":"Y", "x":9.8, "y":1.25},
36 {"label":"P", "x":14.25, "y":1.38}, 36 {"label":"U", "x":10.8, "y":1.125},
37 {"label":"[", "x":15.25, "y":1.38}, 37 {"label":"I", "x":11.8, "y":1},
38 {"label":"Caps", "x":0.5, "y":2.38}, 38 {"label":"O", "x":12.8, "y":1.125},
39 {"label":"A", "x":1.5, "y":2.375}, 39 {"label":"P", "x":13.8, "y":1.375},
40 {"label":"S", "x":2.5, "y":2.125}, 40 {"label":"[", "x":14.8, "y":1.375},
41 {"label":"D", "x":3.5, "y":2}, 41
42 {"label":"F", "x":4.5, "y":2.125}, 42 {"label":"Caps", "x":0, "y":2.375},
43 {"label":"G", "x":5.5, "y":2.25}, 43 {"label":"A", "x":1, "y":2.375},
44 {"label":"H", "x":6.5, "y":2.5}, 44 {"label":"S", "x":2, "y":2.125},
45 {"label":"G", "x":9.25, "y":2.5}, 45 {"label":"D", "x":3, "y":2},
46 {"label":"H", "x":10.25, "y":2.25}, 46 {"label":"F", "x":4, "y":2.125},
47 {"label":"J", "x":11.25, "y":2.13}, 47 {"label":"G", "x":5, "y":2.25},
48 {"label":"K", "x":12.25, "y":2}, 48 {"label":"H", "x":6, "y":2.5},
49 {"label":"L", "x":13.25, "y":2.13}, 49
50 {"label":":", "x":14.25, "y":2.38}, 50 {"label":"G", "x":8.8, "y":2.5},
51 {"label":"Ent", "x":15.25, "y":2.38}, 51 {"label":"H", "x":9.8, "y":2.25},
52 {"label":"Shift", "x":0.5, "y":3.38}, 52 {"label":"J", "x":10.8, "y":2.125},
53 {"label":"Z", "x":1.5, "y":3.375}, 53 {"label":"K", "x":11.8, "y":2},
54 {"label":"X", "x":2.5, "y":3.125}, 54 {"label":"L", "x":12.8, "y":2.125},
55 {"label":"C", "x":3.5, "y":3}, 55 {"label":":", "x":13.8, "y":2.375},
56 {"label":"V", "x":4.5, "y":3.125}, 56 {"label":"Ent", "x":14.8, "y":2.375},
57 {"label":"B", "x":5.5, "y":3.25}, 57
58 {"label":"N", "x":6.5, "y":3.5}, 58 {"label":"Shift", "x":0, "y":3.375},
59 {"label":"B", "x":9.25, "y":3.5}, 59 {"label":"Z", "x":1, "y":3.375},
60 {"label":"N", "x":10.25, "y":3.25}, 60 {"label":"X", "x":2, "y":3.125},
61 {"label":"M", "x":11.25, "y":3.13}, 61 {"label":"C", "x":3, "y":3},
62 {"label":"<", "x":12.25, "y":3}, 62 {"label":"V", "x":4, "y":3.125},
63 {"label":">", "x":13.25, "y":3.13}, 63 {"label":"B", "x":5, "y":3.25},
64 {"label":"?", "x":14.25, "y":3.38}, 64 {"label":"N", "x":6, "y":3.5},
65 {"label":"_", "x":15.25, "y":3.38}, 65
66 {"label":"Ctrl", "x":0.5, "y":4.38}, 66 {"label":"B", "x":8.8, "y":3.5},
67 {"label":"Win", "x":1.5, "y":4.38}, 67 {"label":"N", "x":9.8, "y":3.25},
68 {"label":"&uarr;", "x":2.63, "y":4.51}, 68 {"label":"M", "x":10.8, "y":3.125},
69 {"label":"Alt", "x":3.75, "y":4.38}, 69 {"label":"<", "x":11.8, "y":3},
70 {"label":"Ent", "x":4.75, "y":4.38}, 70 {"label":">", "x":12.8, "y":3.125},
71 {"label":"BS", "x":5.85, "y":4.6}, 71 {"label":"?", "x":13.8, "y":3.375},
72 {"label":"Del", "x":6.9, "y":5.15}, 72 {"label":"_", "x":14.8, "y":3.375},
73 {"label":"BS", "x":8.85, "y":5.15}, 73
74 {"label":"Del", "x":9.9, "y":4.6}, 74 {"label":"Ctrl", "x":0, "y":4.375},
75 {"label":"Spc", "x":11, "y":4.38}, 75 {"label":"Win", "x":1, "y":4.375},
76 {"label":"Alt", "x":12, "y":4.38}, 76 {"label":"&uarr;", "x":2.125, "y":4.5},
77 {"label":"&uarr;", "x":13.13, "y":4.51}, 77 {"label":"Alt", "x":3.25, "y":4.375},
78 {"label":"Alt", "x":14.25, "y":4.38}, 78 {"label":"Ent", "x":4.25, "y":4.375},
79 {"label":"App", "x":15.25, "y":4.38}, 79 {"label":"BS", "x":5.35, "y":4.625},
80 {"label":"&larr;", "x":1.63, "y":5.51}, 80 {"label":"Del", "x":6.4, "y":5.125},
81 {"label":"&dArr;", "x":2.63, "y":5.51}, 81
82 {"label":"&rarr;", "x":3.625, "y":5.51}, 82 {"label":"BS", "x":8.4, "y":5.125},
83 {"label":"&larr;", "x":12.13, "y":5.51}, 83 {"label":"Del", "x":9.45, "y":4.625},
84 {"label":"&dArr;", "x":13.13, "y":5.51}, 84 {"label":"Spc", "x":10.55, "y":4.375},
85 {"label":"&rarr;", "x":14.13, "y":5.51}] 85 {"label":"Alt", "x":11.55, "y":4.375},
86 {"label":"&uarr;", "x":12.675, "y":4.5},
87 {"label":"Alt", "x":13.8, "y":4.375},
88 {"label":"App", "x":14.8, "y":4.375},
89
90 {"label":"&larr;", "x":1.125, "y":5.5},
91 {"label":"&dArr;", "x":2.125, "y":5.5},
92 {"label":"&rarr;", "x":3.125, "y":5.5},
93
94 {"label":"&larr;", "x":11.675, "y":5.5},
95 {"label":"&dArr;", "x":12.675, "y":5.5},
96 {"label":"&rarr;", "x":13.675, "y":5.5}
97 ]
86 } 98 }
87 } 99 }
88} \ No newline at end of file 100}
diff --git a/keyboards/gmmk/pro/info.json b/keyboards/gmmk/pro/info.json
index 37ab5b43e..427e562e3 100644
--- a/keyboards/gmmk/pro/info.json
+++ b/keyboards/gmmk/pro/info.json
@@ -106,6 +106,109 @@
106 {"x":14.25, "y":5.5}, 106 {"x":14.25, "y":5.5},
107 {"x":15.25, "y":5.5} 107 {"x":15.25, "y":5.5}
108 ] 108 ]
109 },
110 "LAYOUT_iso": {
111 "layout": [
112 {"label":"Esc", "x":0, "y":0},
113
114 {"label":"F1", "x":1.25, "y":0},
115 {"label":"F2", "x":2.25, "y":0},
116 {"label":"F3", "x":3.25, "y":0},
117 {"label":"F4", "x":4.25, "y":0},
118
119 {"label":"F5", "x":5.5, "y":0},
120 {"label":"F6", "x":6.5, "y":0},
121 {"label":"F7", "x":7.5, "y":0},
122 {"label":"F8", "x":8.5, "y":0},
123
124 {"label":"F9", "x":9.75, "y":0},
125 {"label":"F10", "x":10.75, "y":0},
126 {"label":"F11", "x":11.75, "y":0},
127 {"label":"F12", "x":12.75, "y":0},
128
129 {"label":"Printscreen", "x":14, "y":0},
130 {"label":"Rotary", "x":15.5, "y":0},
131
132 {"label":"`", "x":0, "y":1.25},
133 {"label":"1", "x":1, "y":1.25},
134 {"label":"2", "x":2, "y":1.25},
135 {"label":"3", "x":3, "y":1.25},
136 {"label":"4", "x":4, "y":1.25},
137 {"label":"5", "x":5, "y":1.25},
138 {"label":"6", "x":6, "y":1.25},
139 {"label":"7", "x":7, "y":1.25},
140 {"label":"8", "x":8, "y":1.25},
141 {"label":"9", "x":9, "y":1.25},
142 {"label":"0", "x":10, "y":1.25},
143 {"label":"-", "x":11, "y":1.25},
144 {"label":"=", "x":12, "y":1.25},
145 {"label":"Backspace", "x":13, "y":1.25, "w":2},
146
147 {"label":"Delete", "x":15.5, "y":1.25},
148
149 {"label":"Tab", "x":0, "y":2.25, "w":1.5},
150 {"label":"Q", "x":1.5, "y":2.25},
151 {"label":"W", "x":2.5, "y":2.25},
152 {"label":"E", "x":3.5, "y":2.25},
153 {"label":"R", "x":4.5, "y":2.25},
154 {"label":"T", "x":5.5, "y":2.25},
155 {"label":"Y", "x":6.5, "y":2.25},
156 {"label":"U", "x":7.5, "y":2.25},
157 {"label":"I", "x":8.5, "y":2.25},
158 {"label":"O", "x":9.5, "y":2.25},
159 {"label":"P", "x":10.5, "y":2.25},
160 {"label":"[", "x":11.5, "y":2.25},
161 {"label":"]", "x":12.5, "y":2.25},
162
163 {"label":"Page Up", "x":15.5, "y":2.25},
164
165 {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
166 {"label":"A", "x":1.75, "y":3.25},
167 {"label":"S", "x":2.75, "y":3.25},
168 {"label":"D", "x":3.75, "y":3.25},
169 {"label":"F", "x":4.75, "y":3.25},
170 {"label":"G", "x":5.75, "y":3.25},
171 {"label":"H", "x":6.75, "y":3.25},
172 {"label":"J", "x":7.75, "y":3.25},
173 {"label":"K", "x":8.75, "y":3.25},
174 {"label":"L", "x":9.75, "y":3.25},
175 {"label":";", "x":10.75, "y":3.25},
176 {"label":"'", "x":11.75, "y":3.25},
177 {"label":"Iso #", "x":12.75, "y":3.25},
178 {"label":"Enter", "x":13.75, "y":2.25, "w":1.25, "h":2},
179
180 {"label":"Page Down", "x":15.5, "y":3.25},
181
182 {"label":"Shift", "x":0, "y":4.25, "w":1.25},
183 {"label":"Iso \\", "x":1.25, "y":4.25},
184 {"label":"Z", "x":2.25, "y":4.25},
185 {"label":"X", "x":3.25, "y":4.25},
186 {"label":"C", "x":4.25, "y":4.25},
187 {"label":"V", "x":5.25, "y":4.25},
188 {"label":"B", "x":6.25, "y":4.25},
189 {"label":"N", "x":7.25, "y":4.25},
190 {"label":"M", "x":8.25, "y":4.25},
191 {"label":",", "x":9.25, "y":4.25},
192 {"label":".", "x":10.25, "y":4.25},
193 {"label":"/", "x":11.25, "y":4.25},
194 {"label":"Shift", "x":12.25, "y":4.25, "w":1.75},
195
196 {"label":"Up", "x":14.25, "y":4.5},
197
198 {"label":"End", "x":15.5, "y":4.25},
199
200 {"label":"Ctrl", "x":0, "y":5.25, "w":1.25},
201 {"label":"GUI", "x":1.25, "y":5.25, "w":1.25},
202 {"label":"Alt", "x":2.5, "y":5.25, "w":1.25},
203 {"label":"Space", "x":3.75, "y":5.25, "w":6.25},
204 {"label":"Alt", "x":10, "y":5.25},
205 {"label":"Fn", "x":11, "y":5.25},
206 {"label":"Ctrl", "x":12, "y":5.25},
207
208 {"label":"Left", "x":13.25, "y":5.5},
209 {"label":"Down", "x":14.25, "y":5.5},
210 {"label":"Right", "x":15.25, "y":5.5}
211 ]
109 } 212 }
110 } 213 }
111} 214}
diff --git a/keyboards/gmmk/pro/keymaps/iso/keymap.c b/keyboards/gmmk/pro/keymaps/iso/keymap.c
new file mode 100644
index 000000000..402becbe6
--- /dev/null
+++ b/keyboards/gmmk/pro/keymaps/iso/keymap.c
@@ -0,0 +1,65 @@
1/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.com>
2
3This program is free software: you can redistribute it and/or modify
4it under the terms of the GNU General Public License as published by
5the Free Software Foundation, either version 2 of the License, or
6(at your option) any later version.
7
8This program is distributed in the hope that it will be useful,
9but WITHOUT ANY WARRANTY; without even the implied warranty of
10MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11GNU General Public License for more details.
12
13You should have received a copy of the GNU General Public License
14along with this program. If not, see <http://www.gnu.org/licenses/>.
15*/
16
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute)
22// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del
23// Tab Q W E R T Y U I O P [ ] PgUp
24// Caps A S D F G H J K L ; " # Enter PgDn
25// Sh_L / Z X C V B N M , . ? Sh_R Up End
26// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right
27
28
29 // The FN key by default maps to a momentary toggle to layer 1 to provide access to the RESET key (to put the board into bootloader mode). Without
30 // this mapping, you have to open the case to hit the button on the bottom of the PCB (near the USB cable attachment) while plugging in the USB
31 // cable to get the board into bootloader mode - definitely not fun when you're working on your QMK builds. Remove this and put it back to KC_RGUI
32 // if that's your preference.
33 //
34 // To put the keyboard in bootloader mode, use FN+backspace. If you accidentally put it into bootloader, you can just unplug the USB cable and
35 // it'll be back to normal when you plug it back in.
36 [0] = LAYOUT_iso(
37 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_MUTE,
38 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
39 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP,
40 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_NUHS, KC_ENT, KC_PGDN,
41 KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
42 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
43 ),
44
45 [1] = LAYOUT_iso(
46 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
47 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
48 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
49 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
50 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
51 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
52 ),
53
54
55};
56
57
58bool encoder_update_user(uint8_t index, bool clockwise) {
59 if (clockwise) {
60 tap_code(KC_VOLU);
61 } else {
62 tap_code(KC_VOLD);
63 }
64 return true;
65}
diff --git a/keyboards/gmmk/pro/pro.h b/keyboards/gmmk/pro/pro.h
index ddce60241..8295bb2f7 100644
--- a/keyboards/gmmk/pro/pro.h
+++ b/keyboards/gmmk/pro/pro.h
@@ -48,3 +48,32 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
48 { k90, k91, k92, k93, k94, k95, ___, k97}, \ 48 { k90, k91, k92, k93, k94, k95, ___, k97}, \
49 { ___, ka1, ka2, ka3, ka4, ka5, ka6, ka7} \ 49 { ___, ka1, ka2, ka3, ka4, ka5, ka6, ka7} \
50} 50}
51
52// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute)
53// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BSpc Del
54// Tab Q W E R T Y U I O P [ ] PgUp
55// Caps A S D F G H J K L ; " # Enter PgDn
56// Sh_L / Z X C V B N M , . ? Sh_R Up End
57// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right
58
59#define LAYOUT_iso( \
60 k13, k26, k36, k31, k33, k07, k63, k71, k76, ka6, ka7, ka3, ka5, k97, k01, \
61 k16, k17, k27, k37, k47, k46, k56, k57, k67, k77, k87, k86, k66, ka1, k65, \
62 k11, k10, k20, k30, k40, k41, k51, k50, k60, k70, k80, k81, k61, k15, \
63 k21, k12, k22, k32, k42, k43, k53, k52, k62, k72, k82, k83, k84, ka4, k25, \
64 k00, k23, k14, k24, k34, k44, k45, k55, k54, k64, k74, k85, k91, k35, k75, \
65 k06, k90, k93, k94, k95, k92, k04, k03, k73, k05 \
66) \
67{ \
68 { k00, k01, ___, k03, k04, k05, k06, k07}, \
69 { k10, k11, k12, k13, k14, k15, k16, k17}, \
70 { k20, k21, k22, k23, k24, k25, k26, k27}, \
71 { k30, k31, k32, k33, k34, k35, k36, k37}, \
72 { k40, k41, k42, k43, k44, k45, k46, k47}, \
73 { k50, k51, k52, k53, k54, k55, k56, k57}, \
74 { k60, k61, k62, k63, k64, k65, k66, k67}, \
75 { k70, k71, k72, k73, k74, k75, k76, k77}, \
76 { k80, k81, k82, k83, k84, k85, k86, k87}, \
77 { k90, k91, k92, k93, k94, k95, ___, k97}, \
78 { ___, ka1, ___, ka3, ka4, ka5, ka6, ka7} \
79}
diff --git a/keyboards/handwired/evk/v1_3/info.json b/keyboards/handwired/evk/v1_3/info.json
index 65000a97b..745a72ed3 100644
--- a/keyboards/handwired/evk/v1_3/info.json
+++ b/keyboards/handwired/evk/v1_3/info.json
@@ -2,101 +2,106 @@
2 "keyboard_name": "Ergonomic Vertical Keyboard (EVK) version 1.3 with Teensy 2.0", 2 "keyboard_name": "Ergonomic Vertical Keyboard (EVK) version 1.3 with Teensy 2.0",
3 "url": "https://github.com/YangPiCui/ErgonomicVerticalKeyboard", 3 "url": "https://github.com/YangPiCui/ErgonomicVerticalKeyboard",
4 "maintainer": "YangPiCui", 4 "maintainer": "YangPiCui",
5 "width": 22.75, 5 "width": 18.2,
6 "height": 8, 6 "height": 6.4,
7 "layouts": { 7 "layouts": {
8 "LAYOUT": { 8 "LAYOUT": {
9 "layout": [ 9 "layout": [
10 {"label":"k0A", "x":0, "y":0.5, "w":1.25, "h":1.25}, 10 {"label":"k0A", "x":0, "y":0.4},
11 {"label":"k0B", "x":1.25, "y":0.25, "w":1.25, "h":1.25}, 11 {"label":"k0B", "x":1, "y":0.2},
12 {"label":"k0C", "x":2.5, "y":0, "w":1.25, "h":1.25}, 12 {"label":"k0C", "x":2, "y":0},
13 {"label":"k0D", "x":3.75, "y":0.25, "w":1.25, "h":1.25}, 13 {"label":"k0D", "x":3, "y":0.2},
14 {"label":"k0E", "x":5, "y":0.25, "w":1.25, "h":1.25}, 14 {"label":"k0E", "x":4, "y":0.2},
15 {"label":"k0F", "x":6.25, "y":0.25, "w":1.25, "h":1.25}, 15 {"label":"k0F", "x":5, "y":0.2},
16 {"label":"k0G", "x":8.75, "y":0.25, "w":1.25, "h":1.25}, 16 {"label":"k0G", "x":7, "y":0.2},
17 {"label":"k0H", "x":10, "y":0.25, "w":1.25, "h":1.25}, 17 {"label":"k0H", "x":8, "y":0.2},
18 {"label":"k0I", "x":11.25, "y":0.25, "w":1.25, "h":1.25}, 18 {"label":"k0I", "x":9, "y":0.2},
19 {"label":"k0J", "x":12.5, "y":0.25, "w":1.25, "h":1.25}, 19 {"label":"k0J", "x":10, "y":0.2},
20 {"label":"k0K", "x":15.25, "y":0.25, "w":1.25, "h":1.25}, 20 {"label":"k0K", "x":12.2, "y":0.2},
21 {"label":"k0L", "x":16.5, "y":0.25, "w":1.25, "h":1.25}, 21 {"label":"k0L", "x":13.2, "y":0.2},
22 {"label":"k0M", "x":17.75, "y":0.25, "w":1.25, "h":1.25}, 22 {"label":"k0M", "x":14.2, "y":0.2},
23 {"label":"k0N", "x":19, "y":0, "w":1.25, "h":1.25}, 23 {"label":"k0N", "x":15.2, "y":0},
24 {"label":"k0O", "x":20.25, "y":0.25, "w":1.25, "h":1.25}, 24 {"label":"k0O", "x":16.2, "y":0.2},
25 {"label":"k0P", "x":21.5, "y":0.5, "w":1.25, "h":1.25}, 25 {"label":"k0P", "x":17.2, "y":0.4},
26 {"label":"k1A", "x":0, "y":1.75, "w":1.25, "h":1.25}, 26
27 {"label":"k1B", "x":1.25, "y":1.5, "w":1.25, "h":1.25}, 27 {"label":"k1A", "x":0, "y":1.4},
28 {"label":"k1C", "x":2.5, "y":1.25, "w":1.25, "h":1.25}, 28 {"label":"k1B", "x":1, "y":1.2},
29 {"label":"k1D", "x":3.75, "y":1.5, "w":1.25, "h":1.25}, 29 {"label":"k1C", "x":2, "y":1},
30 {"label":"k1E", "x":5, "y":1.5, "w":1.25, "h":1.25}, 30 {"label":"k1D", "x":3, "y":1.2},
31 {"label":"k1F", "x":6.25, "y":1.5, "w":1.25, "h":1.25}, 31 {"label":"k1E", "x":4, "y":1.2},
32 {"label":"k1G", "x":8.75, "y":1.5, "w":1.25, "h":1.25}, 32 {"label":"k1F", "x":5, "y":1.2},
33 {"label":"k1H", "x":10, "y":1.5, "w":1.25, "h":1.25}, 33 {"label":"k1G", "x":7, "y":1.2},
34 {"label":"k1I", "x":11.25, "y":1.5, "w":1.25, "h":1.25}, 34 {"label":"k1H", "x":8, "y":1.2},
35 {"label":"k1J", "x":12.5, "y":1.5, "w":1.25, "h":1.25}, 35 {"label":"k1I", "x":9, "y":1.2},
36 {"label":"k1K", "x":15.25, "y":1.5, "w":1.25, "h":1.25}, 36 {"label":"k1J", "x":10, "y":1.2},
37 {"label":"k1L", "x":16.5, "y":1.5, "w":1.25, "h":1.25}, 37 {"label":"k1K", "x":12.2, "y":1.2},
38 {"label":"k1M", "x":17.75, "y":1.5, "w":1.25, "h":1.25}, 38 {"label":"k1L", "x":13.2, "y":1.2},
39 {"label":"k1N", "x":19, "y":1.25, "w":1.25, "h":1.25}, 39 {"label":"k1M", "x":14.2, "y":1.2},
40 {"label":"k1O", "x":20.25, "y":1.5, "w":1.25, "h":1.25}, 40 {"label":"k1N", "x":15.2, "y":1},
41 {"label":"k1P", "x":21.5, "y":1.75, "w":1.25, "h":1.25}, 41 {"label":"k1O", "x":16.2, "y":1.2},
42 {"label":"k2A", "x":0, "y":3, "w":1.25, "h":1.25}, 42 {"label":"k1P", "x":17.2, "y":1.4},
43 {"label":"k2B", "x":1.25, "y":2.75, "w":1.25, "h":1.25}, 43
44 {"label":"k2C", "x":2.5, "y":2.5, "w":1.25, "h":1.25}, 44 {"label":"k2A", "x":0, "y":2.4},
45 {"label":"k2D", "x":3.75, "y":2.75, "w":1.25, "h":1.25}, 45 {"label":"k2B", "x":1, "y":2.2},
46 {"label":"k2E", "x":5, "y":2.75, "w":1.25, "h":1.25}, 46 {"label":"k2C", "x":2, "y":2},
47 {"label":"k2F", "x":6.25, "y":2.75, "w":1.25, "h":1.25}, 47 {"label":"k2D", "x":3, "y":2.2},
48 {"label":"k2G", "x":8.75, "y":2.75, "w":1.25, "h":1.25}, 48 {"label":"k2E", "x":4, "y":2.2},
49 {"label":"k2H", "x":10, "y":2.75, "w":1.25, "h":1.25}, 49 {"label":"k2F", "x":5, "y":2.2},
50 {"label":"k2I", "x":11.25, "y":2.75, "w":1.25, "h":1.25}, 50 {"label":"k2G", "x":7, "y":2.2},
51 {"label":"k2J", "x":12.5, "y":2.75, "w":1.25, "h":1.25}, 51 {"label":"k2H", "x":8, "y":2.2},
52 {"label":"k2K", "x":15.25, "y":2.75, "w":1.25, "h":1.25}, 52 {"label":"k2I", "x":9, "y":2.2},
53 {"label":"k2L", "x":16.5, "y":2.75, "w":1.25, "h":1.25}, 53 {"label":"k2J", "x":10, "y":2.2},
54 {"label":"k2M", "x":17.75, "y":2.75, "w":1.25, "h":1.25}, 54 {"label":"k2K", "x":12.2, "y":2.2},
55 {"label":"k2N", "x":19, "y":2.5, "w":1.25, "h":1.25}, 55 {"label":"k2L", "x":13.2, "y":2.2},
56 {"label":"k2O", "x":20.25, "y":2.75, "w":1.25, "h":1.25}, 56 {"label":"k2M", "x":14.2, "y":2.2},
57 {"label":"k2P", "x":21.5, "y":3, "w":1.25, "h":1.25}, 57 {"label":"k2N", "x":15.2, "y":2},
58 {"label":"k3A", "x":0, "y":4.25, "w":1.25, "h":1.25}, 58 {"label":"k2O", "x":16.2, "y":2.2},
59 {"label":"k3B", "x":1.25, "y":4, "w":1.25, "h":1.25}, 59 {"label":"k2P", "x":17.2, "y":2.4},
60 {"label":"k3C", "x":2.5, "y":3.75, "w":1.25, "h":1.25}, 60
61 {"label":"k3D", "x":3.75, "y":4, "w":1.25, "h":1.25}, 61 {"label":"k3A", "x":0, "y":3.4},
62 {"label":"k3E", "x":5, "y":4, "w":1.25, "h":1.25}, 62 {"label":"k3B", "x":1, "y":3.2},
63 {"label":"k3G", "x":8.75, "y":4, "w":1.25, "h":1.25}, 63 {"label":"k3C", "x":2, "y":3},
64 {"label":"k3H", "x":10, "y":4, "w":1.25, "h":1.25}, 64 {"label":"k3D", "x":3, "y":3.2},
65 {"label":"k3I", "x":11.25, "y":4, "w":1.25, "h":1.25}, 65 {"label":"k3E", "x":4, "y":3.2},
66 {"label":"k3J", "x":12.5, "y":4, "w":1.25, "h":1.25}, 66 {"label":"k3G", "x":7, "y":3.2},
67 {"label":"k3L", "x":16.5, "y":4, "w":1.25, "h":1.25}, 67 {"label":"k3H", "x":8, "y":3.2},
68 {"label":"k3M", "x":17.75, "y":4, "w":1.25, "h":1.25}, 68 {"label":"k3I", "x":9, "y":3.2},
69 {"label":"k3N", "x":19, "y":3.75, "w":1.25, "h":1.25}, 69 {"label":"k3J", "x":10, "y":3.2},
70 {"label":"k3O", "x":20.25, "y":4, "w":1.25, "h":1.25}, 70 {"label":"k3L", "x":13.2, "y":3.2},
71 {"label":"k3P", "x":21.5, "y":4.25, "w":1.25, "h":1.25}, 71 {"label":"k3M", "x":14.2, "y":3.2},
72 {"label":"k4A", "x":0, "y":5.5, "w":1.25, "h":1.25}, 72 {"label":"k3N", "x":15.2, "y":3},
73 {"label":"k4B", "x":1.25, "y":5.25, "w":1.25, "h":1.25}, 73 {"label":"k3O", "x":16.2, "y":3.2},
74 {"label":"k4C", "x":2.5, "y":5, "w":1.25, "h":1.25}, 74 {"label":"k3P", "x":17.2, "y":3.4},
75 {"label":"k4D", "x":3.75, "y":5.25, "w":1.25, "h":1.25}, 75
76 {"label":"k4E", "x":5, "y":5.25, "w":1.25, "h":1.25}, 76 {"label":"k4A", "x":0, "y":4.4},
77 {"label":"k4F", "x":6.5, "y":5.5, "w":1.25, "h":1.25}, 77 {"label":"k4B", "x":1, "y":4.2},
78 {"label":"k4G", "x":8.75, "y":5.25, "w":1.25, "h":1.25}, 78 {"label":"k4C", "x":2, "y":4},
79 {"label":"k4H", "x":10, "y":5.25, "w":1.25, "h":1.25}, 79 {"label":"k4D", "x":3, "y":4.2},
80 {"label":"k4I", "x":11.25, "y":5.25, "w":1.25, "h":1.25}, 80 {"label":"k4E", "x":4, "y":4.2},
81 {"label":"k4J", "x":12.5, "y":5.25, "w":1.25, "h":1.25}, 81 {"label":"k4F", "x":5.2, "y":4.4},
82 {"label":"k4K", "x":15, "y":5.5, "w":1.25, "h":1.25}, 82 {"label":"k4G", "x":7, "y":4.2},
83 {"label":"k4L", "x":16.5, "y":5.25, "w":1.25, "h":1.25}, 83 {"label":"k4H", "x":8, "y":4.2},
84 {"label":"k4M", "x":17.75, "y":5.25, "w":1.25, "h":1.25}, 84 {"label":"k4I", "x":9, "y":4.2},
85 {"label":"k4N", "x":19, "y":5, "w":1.25, "h":1.25}, 85 {"label":"k4J", "x":10, "y":4.2},
86 {"label":"k4O", "x":20.25, "y":5.25, "w":1.25, "h":1.25}, 86 {"label":"k4K", "x":12, "y":4.4},
87 {"label":"k4P", "x":21.5, "y":5.5, "w":1.25, "h":1.25}, 87 {"label":"k4L", "x":13.2, "y":4.2},
88 {"label":"k5B", "x":1.25, "y":6.5, "w":1.25, "h":1.25}, 88 {"label":"k4M", "x":14.2, "y":4.2},
89 {"label":"k5C", "x":2.5, "y":6.25, "w":1.25, "h":1.25}, 89 {"label":"k4N", "x":15.2, "y":4},
90 {"label":"k5E", "x":5.25, "y":6.75, "w":1.25, "h":1.25}, 90 {"label":"k4O", "x":16.2, "y":4.2},
91 {"label":"k5F", "x":6.55, "y":6.75, "w":1.25, "h":1.25}, 91 {"label":"k4P", "x":17.2, "y":4.4},
92 {"label":"k5G", "x":8.75, "y":6.5, "w":1.25, "h":1.25}, 92
93 {"label":"k5H", "x":10, "y":6.5, "w":1.25, "h":1.25}, 93 {"label":"k5B", "x":1, "y":5.2},
94 {"label":"k5I", "x":11.25, "y":6.5, "w":1.25, "h":1.25}, 94 {"label":"k5C", "x":2, "y":5},
95 {"label":"k5J", "x":12.5, "y":6.5, "w":1.25, "h":1.25}, 95 {"label":"k5E", "x":4.2, "y":5.4},
96 {"label":"k5K", "x":15, "y":6.75, "w":1.25, "h":1.25}, 96 {"label":"k5F", "x":5.24, "y":5.4},
97 {"label":"k5L", "x":16.25, "y":6.75, "w":1.25, "h":1.25}, 97 {"label":"k5G", "x":7, "y":5.2},
98 {"label":"k5N", "x":19, "y":6.25, "w":1.25, "h":1.25}, 98 {"label":"k5H", "x":8, "y":5.2},
99 {"label":"k5O", "x":20.25, "y":6.5, "w":1.25, "h":1.25} 99 {"label":"k5I", "x":9, "y":5.2},
100 {"label":"k5J", "x":10, "y":5.2},
101 {"label":"k5K", "x":12, "y":5.4},
102 {"label":"k5L", "x":13, "y":5.4},
103 {"label":"k5N", "x":15.2, "y":5},
104 {"label":"k5O", "x":16.2, "y":5.2}
100 ] 105 ]
101 } 106 }
102 } 107 }
diff --git a/keyboards/handwired/marauder/config.h b/keyboards/handwired/marauder/config.h
index d96028793..450302d4d 100644
--- a/keyboards/handwired/marauder/config.h
+++ b/keyboards/handwired/marauder/config.h
@@ -39,21 +39,22 @@
39 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) 39 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
40 * 40 *
41 */ 41 */
42#define MATRIX_ROW_PINS { D0, D4, C6, D7, E6, B4, B5, B7, D5, C7, F1, F0 } 42#define MATRIX_ROW_PINS { D2, D4, C6, D7, E6, B4, B5, B7, D5, C7, F1, F0 }
43#define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5, F4, B0 } 43#define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5, F4, B0 }
44
45#define DIODE_DIRECTION COL2ROW 44#define DIODE_DIRECTION COL2ROW
46 45#define LAYER_STATE_8BIT
47#define RGB_DI_PIN D1 46#define USB_POLLING_INTERVAL_MS 1 //1000Hz polling rate
47#define QMK_KEYS_PER_SCAN 12 // moar gaming code
48#define RGB_DI_PIN D3
48#ifdef RGB_DI_PIN 49#ifdef RGB_DI_PIN
49 #define RGBLED_NUM 20 50 #define RGBLED_NUM 7
50 #define RGBLIGHT_HUE_STEP 8 51 #define RGBLIGHT_HUE_STEP 8
51 #define RGBLIGHT_SAT_STEP 8 52 #define RGBLIGHT_SAT_STEP 8
52 #define RGBLIGHT_VAL_STEP 8 53 #define RGBLIGHT_VAL_STEP 8
53 #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ 54 #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
54 #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ 55 #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
55/*== all animations enable ==*/ 56/*== all animations enable ==*/
56 #define RGBLIGHT_ANIMATIONS 57// #define RGBLIGHT_ANIMATIONS
57// /*== or choose animations ==*/ 58// /*== or choose animations ==*/
58// #define RGBLIGHT_EFFECT_BREATHING 59// #define RGBLIGHT_EFFECT_BREATHING
59// #define RGBLIGHT_EFFECT_RAINBOW_MOOD 60// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
diff --git a/keyboards/handwired/marauder/keymaps/orvia/keymap.c b/keyboards/handwired/marauder/keymaps/orvia/keymap.c
new file mode 100644
index 000000000..ad081c868
--- /dev/null
+++ b/keyboards/handwired/marauder/keymaps/orvia/keymap.c
@@ -0,0 +1,198 @@
1/* Copyright 2021 BB-66
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
17#include QMK_KEYBOARD_H
18bool is_alt_tab_active = false;
19uint16_t alt_tab_timer = 0;
20
21char wpm_str[4];
22
23const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
24 [0] = LAYOUT(
25 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PAUS, KC_PSCR, KC_SLCK, KC_ESC,
26 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_KP_SLASH, KC_KP_ASTERISK, KC_KP_MINUS,
27 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS,
28 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_ENT, KC_KP_4, KC_KP_5, KC_KP_6,
29 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_ENTER,
30 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_KP_0, KC_KP_DOT
31 ),
32 [1] = LAYOUT(
33 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
34 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
35 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
36 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
37 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
38 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
39 ),
40 [2] = LAYOUT(
41 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
42 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
43 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
44 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
45 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
46 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
47 ),
48 [3] = LAYOUT(
49 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
50 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
51 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
52 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
53 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
54 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
55 ),
56
57};
58
59
60#ifdef OLED_DRIVER_ENABLE
61// WPM-responsive animation stuff here
62# define IDLE_FRAMES 5
63# define IDLE_SPEED 20 // below this wpm value your animation will idle
64
65// #define PREP_FRAMES 1 // uncomment if >1
66
67# define TAP_FRAMES 2
68# define TAP_SPEED 40 // above this wpm value typing animation to trigger
69
70# define ANIM_FRAME_DURATION 200 // how long each frame lasts in ms
71// #define SLEEP_TIMER 60000 // should sleep after this period of 0 wpm, needs fixing
72# define ANIM_SIZE 610 // number of bytes in array, minimize for adequate firmware size, max is 1024
73
74uint32_t anim_timer = 0;
75uint32_t anim_sleep = 0;
76uint8_t current_idle_frame = 0;
77// uint8_t current_prep_frame = 0; // uncomment if PREP_FRAMES >1
78uint8_t current_tap_frame = 0;
79
80// Code containing pixel art, contains:
81// 5 idle frames, 1 prep frame, and 2 tap frames
82
83// To make your own pixel art:
84// save a png/jpeg of an 128x32 image (resource: https://www.pixilart.com/draw )
85// follow this guide up to and including "CONVERT YOUR IMAGE" https://docs.splitkb.com/hc/en-us/articles/360013811280-How-do-I-convert-an-image-for-use-on-an-OLED-display-
86// replace numbers in brackets with your own
87// if you start getting errors when compiling make sure you didn't accedentally delete a bracket
88static void render_anim(void) {
89 static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
90 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
91 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
92 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
93 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
94 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
95 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
97 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x82, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x01, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
99 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
100 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
101 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
102 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x34, 0xc4, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
103 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
104 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
105 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
106 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0d, 0x31, 0xc1, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
107 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
108 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
109 static const char PROGMEM prep[][ANIM_SIZE] = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
110 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64, 0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
111 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
112 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
113 static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = {
114 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
115 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64, 0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
116 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
117 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x98, 0xc0, 0x88, 0x88, 0x8c, 0x9c, 0x1c, 0x1e, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
118 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
119 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
120 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
121 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x07, 0x03, 0x03, 0x61, 0xf0, 0xf8, 0xfc, 0x60, 0x01, 0x01, 0x01, 0x3c, 0x78, 0xf8, 0xf0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
122 };
123
124 // assumes 1 frame prep stage
125 void animation_phase(void) {
126 if (get_current_wpm() <= IDLE_SPEED) {
127 current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES;
128 oled_write_raw_P(idle[abs((IDLE_FRAMES - 1) - current_idle_frame)], ANIM_SIZE);
129 }
130 if (get_current_wpm() > IDLE_SPEED && get_current_wpm() < TAP_SPEED) {
131 // oled_write_raw_P(prep[abs((PREP_FRAMES-1)-current_prep_frame)], ANIM_SIZE); // uncomment if IDLE_FRAMES >1
132 oled_write_raw_P(prep[0], ANIM_SIZE); // remove if IDLE_FRAMES >1
133 }
134 if (get_current_wpm() >= TAP_SPEED) {
135 current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES;
136 oled_write_raw_P(tap[abs((TAP_FRAMES - 1) - current_tap_frame)], ANIM_SIZE);
137 }
138 }
139 if (get_current_wpm() != 000) {
140 oled_on(); // not essential but turns on animation OLED with any alpha keypress
141 if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
142 anim_timer = timer_read32();
143 animation_phase();
144 }
145 anim_sleep = timer_read32();
146 } else {
147 if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) {
148 oled_off();
149 } else {
150 if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
151 anim_timer = timer_read32();
152 animation_phase();
153 }
154 }
155 }
156}
157
158// Used to draw on to the oled screen
159void oled_task_user(void) {
160 render_anim(); // renders pixelart
161
162 oled_set_cursor(0, 0); // sets cursor to (row, column) using charactar spacing (4 rows, 21 full columns on a 128x32 screen, anything more will overflow back to the top)
163 uint8_t n = get_current_wpm();
164 wpm_str[3] = '\0';
165 wpm_str[2] = '0' + n % 10;
166 wpm_str[1] = (n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' ';
167 wpm_str[0] = n / 10 ? '0' + n / 10 : ' ';
168 oled_write_P(PSTR("WPM:"), false);
169 oled_write(wpm_str, false);
170
171 led_t led_state = host_keyboard_led_state(); // caps lock stuff, prints CAPS on new line if caps led is on
172 oled_set_cursor(0, 1);
173 oled_write_P(led_state.caps_lock ? PSTR("CAPS") : PSTR(" "), false);
174 oled_set_cursor(0, 2);
175 oled_write_P(led_state.num_lock ? PSTR("NUM") : PSTR(" "), false);
176 oled_set_cursor(4, 2);
177 oled_write_P(led_state.scroll_lock ? PSTR("SCLK") : PSTR(" "), false);
178 oled_set_cursor(0, 3);
179 switch (get_highest_layer(layer_state)) {
180 case 0:
181 oled_write_P(PSTR("Base Layer\n"), false);
182 break;
183 case 1:
184 oled_write_P(PSTR("Base Enhanced\n"), false);
185 break;
186 case 2:
187 oled_write_P(PSTR("Gaming\n"), false);
188 break;
189 case 3:
190 oled_write_P(PSTR("Gaming Enh\n"), false);
191 break;
192 default:
193 oled_write_ln_P(PSTR("Undefined"), false);
194 }
195 oled_set_cursor(17, 3);
196 oled_write_P(PSTR("NKRO"), keymap_config.nkro);
197}
198#endif
diff --git a/keyboards/handwired/marauder/keymaps/orvia/rules.mk b/keyboards/handwired/marauder/keymaps/orvia/rules.mk
new file mode 100644
index 000000000..9ce099c8f
--- /dev/null
+++ b/keyboards/handwired/marauder/keymaps/orvia/rules.mk
@@ -0,0 +1,3 @@
1VIA_ENABLE = yes
2OLED_DRIVER_ENABLE = yes # OLED Driver Enable
3WPM_ENABLE = yes # WPM counting Enable
diff --git a/keyboards/handwired/marauder/keymaps/via/keymap.c b/keyboards/handwired/marauder/keymaps/via/keymap.c
new file mode 100644
index 000000000..c0adf6bd4
--- /dev/null
+++ b/keyboards/handwired/marauder/keymaps/via/keymap.c
@@ -0,0 +1,52 @@
1/* Copyright 2021 BB-66
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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20 [0] = LAYOUT(
21 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PAUS, KC_PSCR, KC_SLCK, KC_ESC,
22 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS,
24 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_ENT, KC_P4, KC_P5, KC_P6,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_P1, KC_P2, KC_P3, KC_PENT,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_P0, KC_PDOT
27 ),
28 [1] = LAYOUT(
29 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PAUS, KC_PSCR, KC_SLCK, KC_ESC,
30 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
31 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS,
32 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_ENT, KC_P4, KC_P5, KC_P6,
33 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_P1, KC_P2, KC_P3, KC_PENT,
34 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_P0, KC_PDOT
35 ),
36 [2] = LAYOUT(
37 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PAUS, KC_PSCR, KC_SLCK, KC_ESC,
38 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
39 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS,
40 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_ENT, KC_P4, KC_P5, KC_P6,
41 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_P1, KC_P2, KC_P3, KC_PENT,
42 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_P0, KC_PDOT
43 ),
44 [3] = LAYOUT(
45 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PAUS, KC_PSCR, KC_SLCK, KC_ESC,
46 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
47 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS,
48 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_ENT, KC_P4, KC_P5, KC_P6,
49 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_P1, KC_P2, KC_P3, KC_PENT,
50 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_P0, KC_PDOT
51 ),
52};
diff --git a/keyboards/handwired/marauder/keymaps/via/rules.mk b/keyboards/handwired/marauder/keymaps/via/rules.mk
new file mode 100644
index 000000000..1e5b99807
--- /dev/null
+++ b/keyboards/handwired/marauder/keymaps/via/rules.mk
@@ -0,0 +1 @@
VIA_ENABLE = yes
diff --git a/keyboards/handwired/marauder/readme.md b/keyboards/handwired/marauder/readme.md
index 1a0150159..914aaab07 100644
--- a/keyboards/handwired/marauder/readme.md
+++ b/keyboards/handwired/marauder/readme.md
@@ -1,10 +1,10 @@
1# Marauder 1# Marauder
2 2
390% hand-wired mechanical keyboard in an old Razer case; built around an Elite-C v3.1 controller. 390% hand-wired mechanical keyboard in an old Razer case; built around an Elite-C v3.1 controller. Features a 128x32 OLED screen and RGB.
4 4
5[Build Log](https://imgur.com/a/TvsXpq5) 5[Build Log](https://imgur.com/a/TvsXpq5)
6 6
7* Keyboard Maintainer: [%YOUR_NAME%](https://github.com/BB-66) 7* Keyboard Maintainer: [BB-66](https://github.com/BB-66)
8* Hardware Supported: Elite-C, Razer Marauder 8* Hardware Supported: Elite-C, Razer Marauder
9 9
10Make example for this keyboard (after setting up your build environment): 10Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/handwired/marauder/rules.mk b/keyboards/handwired/marauder/rules.mk
index 1619f9537..a4f16938d 100644
--- a/keyboards/handwired/marauder/rules.mk
+++ b/keyboards/handwired/marauder/rules.mk
@@ -10,8 +10,8 @@ BOOTLOADER = atmel-dfu
10BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration 10BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
11MOUSEKEY_ENABLE = no # Mouse keys 11MOUSEKEY_ENABLE = no # Mouse keys
12EXTRAKEY_ENABLE = yes # Audio control and System control 12EXTRAKEY_ENABLE = yes # Audio control and System control
13CONSOLE_ENABLE = yes # Console for debug 13CONSOLE_ENABLE = no # Console for debug
14COMMAND_ENABLE = yes # Commands for debug and configuration 14COMMAND_ENABLE = no # Commands for debug and configuration
15# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE 15# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
16SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend 16SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
17# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work 17# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
diff --git a/keyboards/handwired/ortho5x14/info.json b/keyboards/handwired/ortho5x14/info.json
index 3ba4f3e7e..c39da8811 100644
--- a/keyboards/handwired/ortho5x14/info.json
+++ b/keyboards/handwired/ortho5x14/info.json
@@ -80,7 +80,7 @@
80 {"label":"Alt", "x":10, "y":4}, 80 {"label":"Alt", "x":10, "y":4},
81 {"label":"Prop", "x":11, "y":4}, 81 {"label":"Prop", "x":11, "y":4},
82 {"label":"Ctrl", "x":12, "y":4}, 82 {"label":"Ctrl", "x":12, "y":4},
83 {"label":"Esc", "x":13, "y":0} 83 {"label":"Esc", "x":13, "y":4}
84 ] 84 ]
85 } 85 }
86 } 86 }
diff --git a/keyboards/handwired/ortho5x14/readme.md b/keyboards/handwired/ortho5x14/readme.md
index b8d1daa8b..160bbb9dd 100644
--- a/keyboards/handwired/ortho5x14/readme.md
+++ b/keyboards/handwired/ortho5x14/readme.md
@@ -1,4 +1,4 @@
1# ortho5x13 handwired 1# ortho5x14 handwired
2 2
3Custom handwired ortho5x14 keyboard. 3Custom handwired ortho5x14 keyboard.
4 4
diff --git a/keyboards/handwired/symmetric70_proto/debug_config.h b/keyboards/handwired/symmetric70_proto/debug_config.h
new file mode 100644
index 000000000..cba99e402
--- /dev/null
+++ b/keyboards/handwired/symmetric70_proto/debug_config.h
@@ -0,0 +1,33 @@
1/*
2 * matrix.c testing macros
3 * MATRIX_DEBUG_SCAN: Measuring execution time of `matrix_scan()`
4 * MATRIX_DEBUG_DELAY: Observation of delay after `unselect_row()`
5 */
6#pragma once
7#ifndef __ASSEMBLER__
8#include <gpio.h>
9
10static inline void setDebugPinOutput_Low(void) {
11 setPinOutput(MATRIX_DEBUG_PIN);
12 writePinLow(MATRIX_DEBUG_PIN);
13}
14
15#define MATRIX_DEBUG_PIN_INIT() setDebugPinOutput_Low()
16
17#ifdef MATRIX_DEBUG_SCAN
18# define MATRIX_DEBUG_SCAN_START() writePinHigh(MATRIX_DEBUG_PIN)
19# define MATRIX_DEBUG_SCAN_END() writePinLow(MATRIX_DEBUG_PIN)
20#else
21# define MATRIX_DEBUG_SCAN_START()
22# define MATRIX_DEBUG_SCAN_END()
23#endif
24
25#ifdef MATRIX_DEBUG_DELAY
26# define MATRIX_DEBUG_DELAY_START() writePinHigh(MATRIX_DEBUG_PIN)
27# define MATRIX_DEBUG_DELAY_END() writePinLow(MATRIX_DEBUG_PIN)
28#else
29# define MATRIX_DEBUG_DELAY_START()
30# define MATRIX_DEBUG_DELAY_END()
31#endif
32
33#endif // __ASSEMBLER__
diff --git a/keyboards/handwired/symmetric70_proto/local_features.mk b/keyboards/handwired/symmetric70_proto/local_features.mk
new file mode 100644
index 000000000..e5cd31a61
--- /dev/null
+++ b/keyboards/handwired/symmetric70_proto/local_features.mk
@@ -0,0 +1,108 @@
1# matrix.c testing options
2# set MATRIX_IO_DELAY macro
3# make MTEST=mdelay0 symmetric70_proto/{promicro|proton_c}/{fast|normal}:default:flash
4# make MTEST=mdelay=1 symmetric70_proto/{promicro|proton_c}/{fast|normal}:default:flash
5# make MTEST=mdelay=10 symmetric70_proto/{promicro|proton_c}/{fast|normal}:default:flash
6# set DEBUG_MATRIX_SCAN_RATE_ENABLE yes
7# make MTEST=scan symmetric70_proto/{promicro|proton_c}/{fast|normal}:default:flash
8# set MATRIX_DEBUG_DELAY and MATRIX_IO_DELAY macro
9# make MTEST=matrix_debug_delay,mdelay0 symmetric70_proto/{promicro|proton_c}/{fast|normal}:default:flash
10# set MATRIX_DEBUG_SCAN
11# make MTEST=matrix_debug_scan symmetric70_proto/{promicro|proton_c}/{fast|normal}:default:flash
12
13ifneq ($(strip $(MTEST)),)
14 define KEYBOARD_OPTION_PARSE
15 # parse 'consle', 'scan', 'no-scan', 'mdelay=?', 'mdelay0',
16 # 'adaptive_delay', 'always_delay', 'matrix_debug_delay', 'matrix_debug_scan'
17 $(if $(SHOW_PARSE),$(info parse .$1.)) #for debug 'make SHOW_PARSE=y ...'
18 ifeq ($(strip $1),console)
19 CONSOLE_ENABLE = yes
20 endif
21 ifeq ($(strip $1),scan)
22 DEBUG_MATRIX_SCAN_RATE_ENABLE = yes
23 endif
24 ifeq ($(strip $1),no-scan)
25 DEBUG_MATRIX_SCAN_RATE_ENABLE = no
26 endif
27 ifneq ($(filter mdelay=%,$1),)
28 MDELAY = $(patsubst mdelay=%,%,$1)
29 endif
30 ifeq ($(strip $1),mdelay0)
31 MDELAY = 0
32 endif
33 ifeq ($(strip $1),common_delay)
34 MATRIX_COMMON_DELAY = yes
35 endif
36 ifeq ($(strip $1),adaptive_delay)
37 ADAPTIVE_DELAY = yes
38 endif
39 ifeq ($(strip $1),adaptive_delay2)
40 ADAPTIVE_DELAY2 = yes
41 endif
42 ifeq ($(strip $1),adaptive_delay_fast)
43 ADAPTIVE_DELAY_FAST = yes
44 endif
45 ifeq ($(strip $1),always_delay)
46 ALWAYS_DELAY = yes
47 endif
48 ifeq ($(strip $1),matrix_debug_delay)
49 MATRIX_DEBUG_DELAY = yes
50 MATRIX_DEBUG_SCAN = no
51 endif
52 ifeq ($(strip $1),matrix_debug_scan)
53 MATRIX_DEBUG_DELAY = no
54 MATRIX_DEBUG_SCAN = yes
55 endif
56 endef # end of KEYMAP_OPTION_PARSE
57
58 COMMA=,
59 $(eval $(foreach A_OPTION_NAME,$(subst $(COMMA), ,$(MTEST)), \
60 $(call KEYBOARD_OPTION_PARSE,$(A_OPTION_NAME))))
61endif
62
63ifneq ($(strip $(MDELAY)),)
64 OPT_DEFS += -DMATRIX_IO_DELAY=$(strip $(MDELAY))
65endif
66
67ifeq ($(strip $(ADAPTIVE_DELAY)),yes)
68 OPT_DEFS += -DMATRIX_IO_DELAY_ADAPTIVE
69endif
70
71ifeq ($(strip $(ADAPTIVE_DELAY2)),yes)
72 OPT_DEFS += -DMATRIX_IO_DELAY_ADAPTIVE2
73endif
74
75ifeq ($(strip $(ADAPTIVE_DELAY_FAST)),yes)
76 OPT_DEFS += -DMATRIX_IO_DELAY_ADAPTIVE_FAST
77endif
78
79ifeq ($(strip $(ALWAYS_DELAY)),yes)
80 OPT_DEFS += -DMATRIX_IO_DELAY_ALWAYS
81endif
82
83ifeq ($(strip $(MATRIX_DEBUG_DELAY)),yes)
84 OPT_DEFS += -DMATRIX_DEBUG_DELAY
85 DEBUG_CONFIG = yes
86endif
87
88ifeq ($(strip $(MATRIX_DEBUG_SCAN)),yes)
89 OPT_DEFS += -DMATRIX_DEBUG_SCAN
90 DEBUG_CONFIG = yes
91endif
92
93ifeq ($(strip $(DEBUG_CONFIG)),yes)
94 # include "debug_config.h" from {promicro|proton_c}/config.h
95 OPT_DEFS += -DDEBUG_CONFIG
96endif
97
98ifeq ($(strip $(MATRIX_COMMON_DELAY)),yes)
99 # use matrix_output_unselect_delay() in matrix_common.c
100 OPT_DEFS += -DMATRIX_IO_DELAY_DEFAULT
101endif
102
103$(info -)
104$(info - DEBUG_MATRIX_SCAN_RATE_ENABLE = $(DEBUG_MATRIX_SCAN_RATE_ENABLE))
105$(info - CONSOLE_ENABLE = $(CONSOLE_ENABLE))
106$(info - MDELAY = $(MDELAY))
107$(info - MATRIX_COMMON_DELAY = $(MATRIX_COMMON_DELAY))
108$(info - OPT_DEFS = $(OPT_DEFS))
diff --git a/keyboards/handwired/symmetric70_proto/matrix_debug/gpio_extr.h b/keyboards/handwired/symmetric70_proto/matrix_debug/gpio_extr.h
new file mode 100644
index 000000000..c7d08309d
--- /dev/null
+++ b/keyboards/handwired/symmetric70_proto/matrix_debug/gpio_extr.h
@@ -0,0 +1,10 @@
1#pragma once
2// clang-format off
3
4#if defined(__AVR__)
5# define readPort(port) PINx_ADDRESS(port)
6typedef uint8_t port_data_t;
7#else
8# define readPort(qmk_pin) palReadPort(PAL_PORT(qmk_pin))
9typedef uint16_t port_data_t;
10#endif
diff --git a/keyboards/handwired/symmetric70_proto/matrix.c b/keyboards/handwired/symmetric70_proto/matrix_debug/matrix.c
index c01612073..c84efe291 100644
--- a/keyboards/handwired/symmetric70_proto/matrix.c
+++ b/keyboards/handwired/symmetric70_proto/matrix_debug/matrix.c
@@ -20,6 +20,24 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
20#include "matrix.h" 20#include "matrix.h"
21#include "debounce.h" 21#include "debounce.h"
22#include "quantum.h" 22#include "quantum.h"
23#ifndef readPort
24# include "gpio_extr.h"
25#endif
26
27#ifndef MATRIX_DEBUG_PIN
28# define MATRIX_DEBUG_PIN_INIT()
29# define MATRIX_DEBUG_SCAN_START()
30# define MATRIX_DEBUG_SCAN_END()
31# define MATRIX_DEBUG_DELAY_START()
32# define MATRIX_DEBUG_DELAY_END()
33# define MATRIX_DEBUG_GAP()
34#else
35# define MATRIX_DEBUG_GAP() asm volatile("nop \n nop":::"memory")
36#endif
37
38#ifndef MATRIX_IO_DELAY_ALWAYS
39# define MATRIX_IO_DELAY_ALWAYS 0
40#endif
23 41
24#ifdef DIRECT_PINS 42#ifdef DIRECT_PINS
25static pin_t direct_pins[MATRIX_ROWS][MATRIX_COLS] = DIRECT_PINS; 43static pin_t direct_pins[MATRIX_ROWS][MATRIX_COLS] = DIRECT_PINS;
@@ -28,16 +46,32 @@ static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
28static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; 46static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
29# ifdef MATRIX_MUL_SELECT 47# ifdef MATRIX_MUL_SELECT
30static const pin_t col_sel[MATRIX_COLS] = MATRIX_MUL_SEL; 48static const pin_t col_sel[MATRIX_COLS] = MATRIX_MUL_SEL;
31# ifndef MATRIX_MUL_SELECT_DELAY
32# define MATRIX_MUL_SELECT_DELAY 1
33# endif
34# endif 49# endif
35#endif 50#endif
36 51
52#ifdef MATRIX_IO_DELAY_PORTS
53static const pin_t delay_ports[] = { MATRIX_IO_DELAY_PORTS };
54static const port_data_t delay_masks[] = { MATRIX_IO_DELAY_MASKS };
55# ifdef MATRIX_IO_DELAY_MULSEL
56static const uint8_t delay_sel[] = { MATRIX_IO_DELAY_MULSEL };
57# endif
58#endif
59
37/* matrix state(1:on, 0:off) */ 60/* matrix state(1:on, 0:off) */
38extern matrix_row_t raw_matrix[MATRIX_ROWS]; // raw values 61extern matrix_row_t raw_matrix[MATRIX_ROWS]; // raw values
39extern matrix_row_t matrix[MATRIX_ROWS]; // debounced values 62extern matrix_row_t matrix[MATRIX_ROWS]; // debounced values
40 63
64static inline void setPinOutput_writeLow(pin_t pin) {
65 ATOMIC_BLOCK_FORCEON {
66 setPinOutput(pin);
67 writePinLow(pin);
68 }
69}
70
71static inline void setPinInputHigh_atomic(pin_t pin) {
72 ATOMIC_BLOCK_FORCEON { setPinInputHigh(pin); }
73}
74
41// matrix code 75// matrix code
42 76
43#ifdef DIRECT_PINS 77#ifdef DIRECT_PINS
@@ -75,16 +109,13 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
75#elif defined(DIODE_DIRECTION) 109#elif defined(DIODE_DIRECTION)
76# if (DIODE_DIRECTION == COL2ROW) 110# if (DIODE_DIRECTION == COL2ROW)
77 111
78static void select_row(uint8_t row) { 112static void select_row(uint8_t row) { setPinOutput_writeLow(row_pins[row]); }
79 setPinOutput(row_pins[row]);
80 writePinLow(row_pins[row]);
81}
82 113
83static void unselect_row(uint8_t row) { setPinInputHigh(row_pins[row]); } 114static void unselect_row(uint8_t row) { setPinInputHigh_atomic(row_pins[row]); }
84 115
85static void unselect_rows(void) { 116static void unselect_rows(void) {
86 for (uint8_t x = 0; x < MATRIX_ROWS; x++) { 117 for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
87 setPinInputHigh(row_pins[x]); 118 setPinInputHigh_atomic(row_pins[x]);
88 } 119 }
89} 120}
90 121
@@ -95,7 +126,7 @@ static void init_pins(void) {
95#endif 126#endif
96 unselect_rows(); 127 unselect_rows();
97 for (uint8_t x = 0; x < MATRIX_COLS; x++) { 128 for (uint8_t x = 0; x < MATRIX_COLS; x++) {
98 setPinInputHigh(col_pins[x]); 129 setPinInputHigh_atomic(col_pins[x]);
99 } 130 }
100} 131}
101 132
@@ -103,16 +134,16 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
103 // Start with a clear matrix row 134 // Start with a clear matrix row
104 matrix_row_t current_row_value = 0; 135 matrix_row_t current_row_value = 0;
105 136
106 // Select row and wait for row selecton to stabilize 137 // Select row
107 select_row(current_row); 138 select_row(current_row);
108 matrix_io_delay(); 139 matrix_output_select_delay();
109 140
110 // For each col... 141 // For each col...
111 for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) { 142 for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) {
112 // Select the col pin to read (active low) 143 // Select the col pin to read (active low)
113#ifdef MATRIX_MUL_SELECT 144#ifdef MATRIX_MUL_SELECT
114 writePin(MATRIX_MUL_SELECT,col_sel[col_index]); 145 writePin(MATRIX_MUL_SELECT,col_sel[col_index]);
115 __builtin_avr_delay_cycles(MATRIX_MUL_SELECT_DELAY); 146 waitInputPinDelay();
116#endif 147#endif
117 uint8_t pin_state = readPin(col_pins[col_index]); 148 uint8_t pin_state = readPin(col_pins[col_index]);
118 149
@@ -122,6 +153,60 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
122 153
123 // Unselect row 154 // Unselect row
124 unselect_row(current_row); 155 unselect_row(current_row);
156#ifdef MATRIX_IO_DELAY_PORTS
157 if (current_row_value) { // wait for col signal to go HIGH
158 bool is_pressed;
159 do {
160 MATRIX_DEBUG_DELAY_START();
161 is_pressed = false;
162 for (uint8_t i = 0; i < sizeof(delay_ports)/sizeof(pin_t); i++ ) {
163# ifdef MATRIX_IO_DELAY_MULSEL
164 writePin(MATRIX_MUL_SELECT, delay_sel[i]);
165 waitInputPinDelay();
166# endif
167 is_pressed |= ( (readPort(delay_ports[i]) & delay_masks[i]) != delay_masks[i] );
168 }
169 MATRIX_DEBUG_DELAY_END();
170 } while (is_pressed);
171 }
172#endif
173#ifdef MATRIX_IO_DELAY_ADAPTIVE
174 if (current_row_value) { // wait for col signal to go HIGH
175 for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) {
176 MATRIX_DEBUG_DELAY_START();
177#ifdef MATRIX_MUL_SELECT
178 writePin(MATRIX_MUL_SELECT,col_sel[col_index]);
179 waitInputPinDelay();
180#endif
181 while (readPin(col_pins[col_index]) == 0) {}
182 MATRIX_DEBUG_DELAY_END();
183 }
184 }
185#endif
186#ifdef MATRIX_IO_DELAY_ADAPTIVE2
187 if (current_row_value) { // wait for col signal to go HIGH
188 pin_t state;
189 do {
190 MATRIX_DEBUG_DELAY_START();
191 state = 0;
192 for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) {
193 MATRIX_DEBUG_DELAY_END();
194 MATRIX_DEBUG_DELAY_START();
195#ifdef MATRIX_MUL_SELECT
196 writePin(MATRIX_MUL_SELECT,col_sel[col_index]);
197 waitInputPinDelay();
198#endif
199 state |= (readPin(col_pins[col_index]) == 0);
200 }
201 MATRIX_DEBUG_DELAY_END();
202 } while (state);
203 }
204#endif
205 if (MATRIX_IO_DELAY_ALWAYS || current_row + 1 < MATRIX_ROWS) {
206 MATRIX_DEBUG_DELAY_START();
207 matrix_output_unselect_delay(); // wait for col signal to go HIGH
208 MATRIX_DEBUG_DELAY_END();
209 }
125 210
126 // If the row has changed, store the row and return the changed flag. 211 // If the row has changed, store the row and return the changed flag.
127 if (current_matrix[current_row] != current_row_value) { 212 if (current_matrix[current_row] != current_row_value) {
@@ -133,32 +218,29 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)
133 218
134# elif (DIODE_DIRECTION == ROW2COL) 219# elif (DIODE_DIRECTION == ROW2COL)
135 220
136static void select_col(uint8_t col) { 221static void select_col(uint8_t col) { setPinOutput_writeLow(col_pins[col]); }
137 setPinOutput(col_pins[col]);
138 writePinLow(col_pins[col]);
139}
140 222
141static void unselect_col(uint8_t col) { setPinInputHigh(col_pins[col]); } 223static void unselect_col(uint8_t col) { setPinInputHigh_atomic(col_pins[col]); }
142 224
143static void unselect_cols(void) { 225static void unselect_cols(void) {
144 for (uint8_t x = 0; x < MATRIX_COLS; x++) { 226 for (uint8_t x = 0; x < MATRIX_COLS; x++) {
145 setPinInputHigh(col_pins[x]); 227 setPinInputHigh_atomic(col_pins[x]);
146 } 228 }
147} 229}
148 230
149static void init_pins(void) { 231static void init_pins(void) {
150 unselect_cols(); 232 unselect_cols();
151 for (uint8_t x = 0; x < MATRIX_ROWS; x++) { 233 for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
152 setPinInputHigh(row_pins[x]); 234 setPinInputHigh_atomic(row_pins[x]);
153 } 235 }
154} 236}
155 237
156static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) { 238static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) {
157 bool matrix_changed = false; 239 bool matrix_changed = false;
158 240
159 // Select col and wait for col selecton to stabilize 241 // Select col
160 select_col(current_col); 242 select_col(current_col);
161 matrix_io_delay(); 243 matrix_output_select_delay();
162 244
163 // For each row... 245 // For each row...
164 for (uint8_t row_index = 0; row_index < MATRIX_ROWS; row_index++) { 246 for (uint8_t row_index = 0; row_index < MATRIX_ROWS; row_index++) {
@@ -184,6 +266,9 @@ static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
184 266
185 // Unselect col 267 // Unselect col
186 unselect_col(current_col); 268 unselect_col(current_col);
269 if (MATRIX_IO_DELAY_ALWAYS || current_col + 1 < MATRIX_COLS) {
270 matrix_output_unselect_delay(); // wait for col signal to go HIGH
271 }
187 272
188 return matrix_changed; 273 return matrix_changed;
189} 274}
@@ -195,7 +280,7 @@ static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)
195# error DIODE_DIRECTION is not defined! 280# error DIODE_DIRECTION is not defined!
196#endif 281#endif
197 282
198void matrix_init_custom(void) { 283void matrix_init(void) {
199 // initialize key pins 284 // initialize key pins
200 init_pins(); 285 init_pins();
201 286
@@ -205,22 +290,35 @@ void matrix_init_custom(void) {
205 matrix[i] = 0; 290 matrix[i] = 0;
206 } 291 }
207 292
293 debounce_init(MATRIX_ROWS);
294
295 matrix_init_quantum();
208} 296}
209 297
210bool matrix_scan_custom(matrix_row_t current_matrix[]) { 298uint8_t matrix_scan(void) {
211 bool changed = false; 299 bool changed = false;
300 MATRIX_DEBUG_PIN_INIT();
212 301
302 MATRIX_DEBUG_SCAN_START();
213#if defined(DIRECT_PINS) || (DIODE_DIRECTION == COL2ROW) 303#if defined(DIRECT_PINS) || (DIODE_DIRECTION == COL2ROW)
214 // Set row, read cols 304 // Set row, read cols
215 for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) { 305 for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) {
216 changed |= read_cols_on_row(current_matrix, current_row); 306 changed |= read_cols_on_row(raw_matrix, current_row);
217 } 307 }
218#elif (DIODE_DIRECTION == ROW2COL) 308#elif (DIODE_DIRECTION == ROW2COL)
219 // Set col, read rows 309 // Set col, read rows
220 for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) { 310 for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) {
221 changed |= read_rows_on_col(current_matrix, current_col); 311 changed |= read_rows_on_col(raw_matrix, current_col);
222 } 312 }
223#endif 313#endif
314 MATRIX_DEBUG_SCAN_END(); MATRIX_DEBUG_GAP();
315
316 MATRIX_DEBUG_SCAN_START();
317 debounce(raw_matrix, matrix, MATRIX_ROWS, changed);
318 MATRIX_DEBUG_SCAN_END(); MATRIX_DEBUG_GAP();
224 319
225 return changed; 320 MATRIX_DEBUG_SCAN_START();
321 matrix_scan_quantum();
322 MATRIX_DEBUG_SCAN_END();
323 return (uint8_t)changed;
226} 324}
diff --git a/keyboards/handwired/symmetric70_proto/matrix_debug/readme.md b/keyboards/handwired/symmetric70_proto/matrix_debug/readme.md
new file mode 100644
index 000000000..3e45db87e
--- /dev/null
+++ b/keyboards/handwired/symmetric70_proto/matrix_debug/readme.md
@@ -0,0 +1,200 @@
1# Debug version matrix.c
2
3This matrix.c is quantum/matrix.c with the following additions:
4
5* Added the MATRIX_DEBUG_SCAN_{START/END} macro to measure the execution time of matrix_scan().
6* Added the MATRIX_DEBUG_DELAY_{START/END} macro to measure delay time.
7* Added the MATRIX_MUL_SELECT handling for symmetric70_proto.
8
9## Compile
10
11* Set MATRIX_IO_DELAY value
12 * `make MTEST=mdelay0 handwired/symmetric70_proto/promicro/normal:default:flash`
13 * `make MTEST=mdelay=1 handwired/symmetric70_proto/promicro/normal:default:flash`
14 * `make MTEST=mdelay=2 handwired/symmetric70_proto/promicro/normal:default:flash`
15 * `make MTEST=mdelay=3 handwired/symmetric70_proto/promicro/normal:default:flash`
16 * `make MTEST=mdelay=4 handwired/symmetric70_proto/promicro/normal:default:flash`
17 * `make MTEST=mdelay=5 handwired/symmetric70_proto/promicro/normal:default:flash`
18 * `make MTEST=mdelay=10 handwired/symmetric70_proto/promicro/normal:default:flash`
19 * `make MTEST=mdelay=20 handwired/symmetric70_proto/promicro/normal:default:flash`
20 * `make MTEST=mdelay=30 handwired/symmetric70_proto/promicro/normal:default:flash`
21* Measure the execution time of matrix_scan()
22 * `make MTEST=matrix_debug_scan[,<other options>..] handwired/symmetric70_proto/promicro/normal:default:flash`
23* Measure delay time.
24 * `make MTEST=matrix_debug_delay[,<other options>..] handwired/symmetric70_proto/promicro/normal:default:flash`
25* Change the behavior of delay
26 * `make MTEST=matrix_debug_delay,always_delay handwired/symmetric70_proto/promicro/normal:default:flash`
27 * `make MTEST=matrix_debug_delay,adaptive_delay,mdelay0 handwired/symmetric70_proto/promicro/normal:default:flash`
28 * `make MTEST=matrix_debug_delay,adaptive_delay_fast,mdelay0 handwired/symmetric70_proto/promicro/normal:default:flash`
29
30## Measurement result
31### Pro Micro (ATmega32u4 16Mhz)
32#### Default setting (show `matrix_scan()` time)
33 - `make MTEST=matrix_debug_scan handwired/symmetric70_proto/promicro/normal:default:flash`
34 - CH1: Row 0
35 - CH2: Row 1
36 - CH3: Row 4
37 - CH4: matrix_scan()
38 - Execution time of matrix_scan() 503us
39 - Frequency of matrix scan 1.81kHz (551.0us)
40 ![DS1Z_QuickPrint2](https://user-images.githubusercontent.com/2170248/115994477-0ba64400-a612-11eb-98ba-b8cc362f26ac.png)
41
42#### Always call `matrix_output_unselect_delay()` (show `matrix_scan()` time, default MATRIX_IO_DELAY)
43 - `make MTEST=matrix_debug_scan,always_delay handwired/symmetric70_proto/promicro/normal:default:flash`
44 - CH1: Row 0
45 - CH2: Row 1
46 - CH3: Row 4
47 - CH4: matrix_scan()
48 - Execution time of matrix_scan() 521us
49 - Frequency of matrix scan 1.76kHz (568.5us)
50 ![DS1Z_QuickPrint1](https://user-images.githubusercontent.com/2170248/115994488-1660d900-a612-11eb-83b1-cd820607db03.png)
51
52#### Adaptive delay (show `matrix_scan()` time, MATRIX_IO_DELAY = 0)
53 - `make MTEST=matrix_debug_scan,mdelay0,adaptive_delay handwired/symmetric70_proto/promicro/normal:default:flash`
54 - CH1: Row 0
55 - CH2: Row 1
56 - CH3: Row 4
57 - CH4: matrix_scan()
58 - Execution time of matrix_scan() 383us
59 - Frequency of matrix scan 2.32kHz (431us)
60 ![DS1Z_QuickPrint3](https://user-images.githubusercontent.com/2170248/115994939-034f0880-a614-11eb-861f-b83a31efa51a.png)
61
62#### Adaptive delay (show delay time, MATRIX_IO_DELAY = 0)
63 - `make MTEST=matrix_debug_delay,mdelay0,adaptive_delay handwired/symmetric70_proto/promicro/normal:default:flash`
64
65##### Press R0C1, R1C1 key
66 - CH1: Row 0
67 - CH2: Row 1
68 - CH3: Row 4
69 - CH4: delay time
70 - Delay time 68us
71 - Frequency of matrix scan 1.77kHz (565us)
72 ![DS1Z_QuickPrint55](https://user-images.githubusercontent.com/2170248/119561268-ead33900-bddf-11eb-9cc4-7e04826486cf.png)
73
74#### Fast adaptive delay (show `matrix_scan()` time, MATRIX_IO_DELAY = 0)
75 - `make MTEST=matrix_debug_scan,mdelay0,adaptive_delay_fast handwired/symmetric70_proto/promicro/normal:default:flash`
76 - CH1: Row 0
77 - CH2: Row 1
78 - CH3: Row 4
79 - CH4: matrix_scan()
80 - Execution time of matrix_scan() 382us
81 - Frequency of matrix scan 2.33kHz (428us)
82 ![DS1Z_QuickPrint56](https://user-images.githubusercontent.com/2170248/119561280-eeff5680-bddf-11eb-9576-e4cf64751955.png)
83
84#### Fast adaptive delay (show delay time, MATRIX_IO_DELAY = 0)
85 - `make MTEST=matrix_debug_delay,mdelay0,adaptive_delay_fast handwired/symmetric70_proto/promicro/normal:default:flash`
86
87##### Press R0C1, R1C1 key
88 - CH1: Row 0
89 - CH2: Row 1
90 - CH3: Row 4
91 - CH4: delay time
92 - Delay time 11us
93 - Frequency of matrix scan 2.21kHz (452us)
94 ![DS1Z_QuickPrint57](https://user-images.githubusercontent.com/2170248/119561318-faeb1880-bddf-11eb-8592-694f9ecb2248.png)
95
96### Proton C (STM32F303 72MHz)
97#### Default setting (show `matrix_scan()` time)
98 - `make MTEST=matrix_debug_scan handwired/symmetric70_proto/proton_c/normal:default:flash`
99 - CH1: Row 0
100 - CH2: Row 1
101 - CH3: Row 4
102 - CH4: matrix_scan()
103 - Execution time of matrix_scan() 210us
104 - Frequency of matrix scan 4.35kHz (230.0us)
105 ![DS1Z_QuickPrint16](https://user-images.githubusercontent.com/2170248/116131295-2ad2cd80-a707-11eb-8d0a-6f7912456e03.png)
106
107#### Always call `matrix_output_unselect_delay()` (show `matrix_scan()` time, default MATRIX_IO_DELAY)
108 - `make MTEST=matrix_debug_scan,always_delay handwired/symmetric70_proto/proton_c/normal:default:flash`
109 - CH1: Row 0
110 - CH2: Row 1
111 - CH3: Row 4
112 - CH4: matrix_scan()
113 - Execution time of matrix_scan() 242us
114 - Frequency of matrix scan 3.85kHz (260.0us)
115 ![DS1Z_QuickPrint17](https://user-images.githubusercontent.com/2170248/116131308-31f9db80-a707-11eb-8db7-d1960fa7b068.png)
116
117#### Adaptive delay (show `matrix_scan()` time, MATRIX_IO_DELAY = 0)
118 - `make MTEST=matrix_debug_scan,mdelay0,adaptive_delay handwired/symmetric70_proto/proton_c/normal:default:flash`
119 - CH1: Row 0
120 - CH2: Row 1
121 - CH3: Row 4
122 - CH4: matrix_scan()
123 - Execution time of matrix_scan() 76.4us
124 - Frequency of matrix scan 10.6kHz (94.4us)
125 ![DS1Z_QuickPrint18](https://user-images.githubusercontent.com/2170248/116131369-44741500-a707-11eb-9c74-fa39d9e80947.png)
126
127#### Adaptive delay (show delay time, MATRIX_IO_DELAY = 0)
128 - `make MTEST=matrix_debug_delay,mdelay0,adaptive_delay handwired/symmetric70_proto/proton_c/normal:default:flash`
129
130##### Press R0C1, R1C1 key
131 - CH1: Row 0
132 - CH2: Row 1
133 - CH3: Row 4
134 - CH4: delay time
135 - Delay time 7.6us
136 - Frequency of matrix scan 9.47kHz (105.6us)
137 ![DS1Z_QuickPrint58](https://user-images.githubusercontent.com/2170248/119666783-a3e15400-be70-11eb-9a58-220032117efd.png)
138
139##### Connect a 500pF capacitor between C2 line and GND, Press R0C2, R1C2, R2C2, R3C2, R4C2 keys
140 - CH1: Row 0
141 - CH2: Row 1
142 - CH3: Col 2
143 - CH4: delay time
144 - Delay time 12us + alpha
145 - Frequency of matrix scan 5.45kHz (183us)
146 - Threshold Voltage 1.9V
147 ![DS1Z_QuickPrint59](https://user-images.githubusercontent.com/2170248/119666946-cc694e00-be70-11eb-9b97-4c500416d774.png)
148
149##### Connect a 1000pF capacitor between C2 line and GND, Press R0C2, R1C2, R2C2, R3C2, R4C2 keys
150 - CH1: Row 0
151 - CH2: Row 1
152 - CH3: Col 2
153 - CH4: delay time
154 - Delay time 20us + alpha
155 - Frequency of matrix scan 4.48kHz (223us)
156 - Threshold Voltage 1.9V
157 ![DS1Z_QuickPrint60](https://user-images.githubusercontent.com/2170248/119667127-f3c01b00-be70-11eb-8e7f-6f0a81f95e97.png)
158
159#### Fast adaptive delay (show `matrix_scan()` time, MATRIX_IO_DELAY = 0)
160 - `make MTEST=matrix_debug_scan,mdelay0,adaptive_delay_fast handwired/symmetric70_proto/proton_c/normal:default:flash`
161 - CH1: Row 0
162 - CH2: Row 1
163 - CH3: Row 4
164 - CH4: matrix_scan()
165 - Execution time of matrix_scan() 75.6us
166 - Frequency of matrix scan 10.8kHz (92.2us)
167 ![DS1Z_QuickPrint62](https://user-images.githubusercontent.com/2170248/119667218-0b979f00-be71-11eb-946c-16f0a0454056.png)
168
169#### Fast adaptive delay (show delay time, MATRIX_IO_DELAY = 0)
170 - `make MTEST=matrix_debug_delay,mdelay0,adaptive_delay_fast handwired/symmetric70_proto/proton_c/normal:default:flash`
171
172##### Press R0C1, R1C1 key
173 - CH1: Row 0
174 - CH2: Row 1
175 - CH3: Row 4
176 - CH4: delay time
177 - Delay time 1.6us
178 - Frequency of matrix scan 10.6kHz (94.4us)
179 ![DS1Z_QuickPrint63](https://user-images.githubusercontent.com/2170248/119667378-33870280-be71-11eb-95aa-64213138ddac.png)
180 ![DS1Z_QuickPrint64](https://user-images.githubusercontent.com/2170248/119667504-52859480-be71-11eb-963e-eebc6e3da9dc.png)
181
182##### Connect a 500pF capacitor between C2 line and GND, Press R0C2, R1C2, R2C2, R3C2, R4C2 keys
183 - CH1: Row 0
184 - CH2: Row 1
185 - CH3: Col 2
186 - CH4: delay time
187 - Delay time 13.2us
188 - Frequency of matrix scan 6.58kHz (152.6us)
189 - Threshold Voltage 1.9V
190 ![DS1Z_QuickPrint65](https://user-images.githubusercontent.com/2170248/119667644-72b55380-be71-11eb-8030-854de1900408.png)
191
192##### Connect a 1000pF capacitor between C2 line and GND, Press R0C2, R1C2, R2C2, R3C2, R4C2 keys
193 - CH1: Row 0
194 - CH2: Row 1
195 - CH3: Col 2
196 - CH4: delay time
197 - Delay time 20us
198 - Frequency of matrix scan 5.30kHz (188.8us)
199 - Threshold Voltage 1.9V
200 ![DS1Z_QuickPrint66](https://user-images.githubusercontent.com/2170248/119667785-8f518b80-be71-11eb-8d40-fc3293aa072b.png)
diff --git a/keyboards/handwired/symmetric70_proto/matrix_fast/cpp_map.h b/keyboards/handwired/symmetric70_proto/matrix_fast/cpp_map.h
new file mode 100644
index 000000000..d197be6d9
--- /dev/null
+++ b/keyboards/handwired/symmetric70_proto/matrix_fast/cpp_map.h
@@ -0,0 +1,53 @@
1/* Copyright 2021 mtei
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// clang-format off
18
19#define _MAP1(E, _1) E(_1)
20#define _MAP2(E, _1,_2) E(_1) E(_2)
21#define _MAP3(E, _1,_2,_3) E(_1) E(_2) E(_3)
22#define _MAP4(E, _1,_2,_3,_4) E(_1) E(_2) E(_3) E(_4)
23#define _MAP5(E, _1,_2,_3,_4,_5) E(_1) E(_2) E(_3) E(_4) E(_5)
24#define _MAP6(E, _1,_2,_3,_4,_5,_6) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6)
25#define _MAP7(E, _1,_2,_3,_4,_5,_6,_7) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7)
26#define _MAP8(E, _1,_2,_3,_4,_5,_6,_7,_8) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8)
27#define _MAP9(E, _1,_2,_3,_4,_5,_6,_7,_8,_9) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9)
28#define _MAP10(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10)
29#define _MAP11(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11)
30#define _MAP12(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12)
31#define _MAP13(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13)
32#define _MAP14(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14)
33#define _MAP15(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15)
34#define _MAP16(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16)
35#define _MAP17(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17)
36#define _MAP18(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18)
37#define _MAP19(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19)
38#define _MAP20(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) E(_20)
39#define _MAP21(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) E(_20) E(_21)
40#define _MAP22(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) E(_20) E(_21) E(_22)
41#define _MAP23(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) E(_20) E(_21) E(_22) E(_23)
42#define _MAP24(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) E(_20) E(_21) E(_22) E(_23) E(_24)
43#define _MAP25(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) E(_20) E(_21) E(_22) E(_23) E(_24) E(_25)
44#define _MAP26(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) E(_20) E(_21) E(_22) E(_23) E(_24) E(_25) E(_26)
45#define _MAP27(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) E(_20) E(_21) E(_22) E(_23) E(_24) E(_25) E(_26) E(_27)
46#define _MAP28(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27,_28) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) E(_20) E(_21) E(_22) E(_23) E(_24) E(_25) E(_26) E(_27) E(_28)
47#define _MAP29(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27,_28,_29) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) E(_20) E(_21) E(_22) E(_23) E(_24) E(_25) E(_26) E(_27) E(_28) E(_29)
48#define _MAP30(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27,_28,_29,_30) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) E(_20) E(_21) E(_22) E(_23) E(_24) E(_25) E(_26) E(_27) E(_28) E(_29) E(_30)
49#define _MAP31(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27,_28,_29,_30,_31) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) E(_20) E(_21) E(_22) E(_23) E(_24) E(_25) E(_26) E(_27) E(_28) E(_29) E(_30) E(_31)
50#define _MAP32(E, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27,_28,_29,_30,_31,_32) E(_1) E(_2) E(_3) E(_4) E(_5) E(_6) E(_7) E(_8) E(_9) E(_10) E(_11) E(_12) E(_13) E(_14) E(_15) E(_16) E(_17) E(_18) E(_19) E(_20) E(_21) E(_22) E(_23) E(_24) E(_25) E(_26) E(_27) E(_28) E(_29) E(_30) E(_31) E(_32)
51
52#define SELECT_MAP(e,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27,_28,_29,_30,_31,_32,NAME,...) NAME
53#define MAP(E,...) SELECT_MAP(E,__VA_ARGS__,_MAP32,_MAP31,_MAP30,_MAP29,_MAP28,_MAP27,_MAP26,_MAP25,_MAP24,_MAP23,_MAP22,_MAP21,_MAP20,_MAP19,_MAP18,_MAP17,_MAP16,_MAP15,_MAP14,_MAP13,_MAP12,_MAP11,_MAP10,_MAP9,_MAP8,_MAP7,_MAP6,_MAP5,_MAP4,_MAP3,_MAP2,_MAP1)(E,__VA_ARGS__)
diff --git a/keyboards/handwired/symmetric70_proto/matrix_fast/gpio_extr.h b/keyboards/handwired/symmetric70_proto/matrix_fast/gpio_extr.h
new file mode 100644
index 000000000..e31cb5f3a
--- /dev/null
+++ b/keyboards/handwired/symmetric70_proto/matrix_fast/gpio_extr.h
@@ -0,0 +1,28 @@
1#pragma once
2// clang-format off
3
4#if defined(__AVR__)
5typedef uint8_t port_data_t;
6
7#define readPort(port) PINx_ADDRESS(port)
8
9#define setPortBitInput(port, bit) (DDRx_ADDRESS(port) &= ~_BV((bit)&0xF), PORTx_ADDRESS(port) &= ~_BV((bit)&0xF))
10#define setPortBitInputHigh(port, bit) (DDRx_ADDRESS(port) &= ~_BV((bit)&0xF), PORTx_ADDRESS(port) |= _BV((bit)&0xF))
11#define setPortBitOutput(port, bit) (DDRx_ADDRESS(port) |= _BV((bit)&0xF))
12
13#define writePortBitLow(port, bit) (PORTx_ADDRESS(port) &= ~_BV((bit)&0xF))
14#define writePortBitHigh(port, bit) (PORTx_ADDRESS(port) |= _BV((bit)&0xF))
15
16#else
17typedef uint16_t port_data_t;
18
19#define readPort(qmk_pin) palReadPort(PAL_PORT(qmk_pin))
20
21#define setPortBitInput(qmk_pin, bit) palSetPadMode(PAL_PORT(qmk_pin), bit, PAL_MODE_INPUT)
22#define setPortBitInputHigh(qmk_pin, bit) palSetPadMode(PAL_PORT(qmk_pin), bit, PAL_MODE_INPUT_PULLUP)
23#define setPortBitInputLow(qmk_pin, bit) palSetPadMode(PAL_PORT(qmk_pin), bit, PAL_MODE_INPUT_PULLDOWN)
24#define setPortBitOutput(qmk_pin, bit) palSetPadMode(PAL_PORT(qmk_pin), bit, PAL_MODE_OUTPUT_PUSHPULL)
25
26#define writePortBitLow(qmk_pin, bit) palClearLine(PAL_LINE(PAL_PORT(qmk_pin), bit))
27#define writePortBitHigh(qmk_pin, bit) palSetLine(PAL_LINE(PAL_PORT(qmk_pin), bit))
28#endif
diff --git a/keyboards/handwired/symmetric70_proto/matrix_fast/matrix.c b/keyboards/handwired/symmetric70_proto/matrix_fast/matrix.c
new file mode 100644
index 000000000..cb21bfcf8
--- /dev/null
+++ b/keyboards/handwired/symmetric70_proto/matrix_fast/matrix.c
@@ -0,0 +1,234 @@
1/*
2Copyright 2021 mtei
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17// clang-format off
18#include <stdint.h>
19#include <stdbool.h>
20#include <gpio.h>
21#ifndef readPort
22# include "gpio_extr.h"
23#endif
24#include "util.h"
25#include "matrix.h"
26#include "matrix_extr.h"
27#include "debounce.h"
28#include "quantum.h"
29
30#define ALWAYS_INLINE inline __attribute__((always_inline))
31#define NO_INLINE __attribute__((noinline))
32#define LOCAL_FUNC static
33#define LOCAL_DATA static
34
35#ifndef _BV
36# define _BV(bit) (1 << (bit))
37#endif
38
39#ifndef MATRIX_DEBUG_PIN
40# define MATRIX_DEBUG_PIN_INIT()
41# define MATRIX_DEBUG_SCAN_START()
42# define MATRIX_DEBUG_SCAN_END()
43# define MATRIX_DEBUG_DELAY_START()
44# define MATRIX_DEBUG_DELAY_END()
45# define MATRIX_DEBUG_GAP()
46#else
47# define MATRIX_DEBUG_GAP() asm volatile("nop \n nop":::"memory")
48#endif
49
50typedef uint16_t port_width_t;
51#if MATRIX_TYPE == DIRECT_SWITCH || MATRIX_TYPE == DIODE_COL2ROW
52# define MATRIX_LINES MATRIX_ROWS
53typedef matrix_row_t matrix_line_t;
54#endif
55#if MATRIX_TYPE == DIODE_ROW2COL
56# define MATRIX_LINES MATRIX_COLS
57typedef matrix_col_t matrix_line_t;
58#endif
59typedef struct _port_descriptor {
60 int device;
61 pin_t port;
62} port_descriptor;
63
64/* matrix state(1:on, 0:off) */
65extern matrix_row_t raw_matrix[MATRIX_ROWS]; // raw values
66extern matrix_row_t matrix[MATRIX_ROWS]; // debounced values
67
68#define setPortBitOutput_writeLow(port, bit) \
69 do { setPortBitOutput(port, bit); writePortBitLow(port, bit); } while(0)
70#define setPortBitOutput_writeLow_atomic(port, bit) \
71 do { ATOMIC_BLOCK_FORCEON { setPortBitOutput_writeLow(port, bit); } } while(0)
72#define setPortBitInputHigh_atomic(port, bit) \
73 do { ATOMIC_BLOCK_FORCEON { setPortBitInputHigh(port, bit); } } while(0)
74
75#if defined(MATRIX_IN_PORTS) && defined(MATRIX_IN_PINS)
76# include "matrix_config_expand.c"
77#else
78# error matrix.c need defined MATRIX_IN_PORTS and MATRIX_IN_PINS
79#endif
80
81LOCAL_FUNC
82void unselect_output(uint8_t out_index) {
83 unselect_output_inline(out_index);
84}
85
86LOCAL_FUNC
87void init_output_ports(void) {
88 for (int i = 0; i < END_outpin_index; i++) {
89 unselect_output(i);
90 }
91}
92
93LOCAL_FUNC
94void init_all_ports(void) {
95 init_input_ports();
96 init_output_ports();
97 init_inport_mask();
98 init_extension();
99}
100
101LOCAL_FUNC ALWAYS_INLINE void select_line_and_read_input_ports(uint8_t current_line, port_width_t port_buffer[NUM_OF_INPUT_PORTS]);
102LOCAL_FUNC void select_line_and_read_input_ports(uint8_t current_line, port_width_t port_buffer[NUM_OF_INPUT_PORTS]) {
103 // Select row (or col)
104 select_output(current_line);
105 matrix_output_select_delay();
106
107 // Read ports
108 read_all_input_ports(port_buffer, false);
109
110 // Unselect row (or col)
111 unselect_output_inline(current_line);
112}
113
114LOCAL_FUNC ALWAYS_INLINE void read_matrix_line(matrix_line_t phy_matrix[], uint8_t current_line);
115
116#if MATRIX_TYPE == DIODE_ROW2COL || MATRIX_TYPE == DIODE_COL2ROW
117LOCAL_FUNC void read_matrix_line(matrix_line_t phy_matrix[], uint8_t current_line) {
118 // Start with a clear matrix row
119 matrix_line_t current_line_value = 0;
120 port_width_t port_buffer[NUM_OF_INPUT_PORTS];
121
122#ifdef MATRIX_GPIO_NEED_SEPARATE_ATOMIC
123 select_line_and_read_input_ports(current_line, port_buffer);
124#else
125 ATOMIC_BLOCK_FORCEON {
126 select_line_and_read_input_ports(current_line, port_buffer);
127 }
128#endif
129
130 // Build row (or col)
131 current_line_value = build_matrix_line(port_buffer);
132
133 // Wait signal raise up
134 if (current_line_value) {
135 MATRIX_DEBUG_DELAY_START();
136 wait_unselect_done();
137 MATRIX_DEBUG_DELAY_END();
138 }
139 phy_matrix[current_line] = current_line_value;
140}
141#endif // MATRIX_TYPE == DIODE_ROW2COL || MATRIX_TYPE == DIODE_COL2ROW
142
143#if MATRIX_TYPE == DIRECT_SWITCH
144LOCAL_FUNC void read_matrix_line(matrix_line_t phy_matrix[], uint8_t current_line) {
145 port_width_t port_buffer[NUM_OF_INPUT_PORTS];
146
147 if (current_line != 0) {
148 return;
149 }
150
151 for (uint8_t i = 0; i < MATRIX_LINES; i++) {
152 phy_matrix[i] = 0;
153 }
154
155 read_all_input_ports(port_buffer, false);
156
157 // Build matrix
158 build_matrix_direct(port_buffer, phy_matrix);
159}
160#endif // MATRIX_TYPE == DIRECT_SWITCH
161
162void matrix_init(void) {
163 // initialize key pins
164 init_all_ports();
165
166 // initialize matrix state: all keys off
167 for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
168 raw_matrix[i] = 0;
169 matrix[i] = 0;
170 }
171
172 debounce_init(MATRIX_ROWS);
173
174 matrix_init_quantum();
175}
176
177uint8_t matrix_scan(void) {
178 matrix_line_t phy_matrix[MATRIX_LINES];
179
180 MATRIX_DEBUG_PIN_INIT();
181
182 MATRIX_DEBUG_SCAN_START();
183
184 // read I/O port to phy_matrix[] (physical matrix)
185 //select line, read inputs
186 for (uint8_t current_line = 0; current_line < MATRIX_LINES; current_line++) {
187 read_matrix_line(phy_matrix, current_line);
188 }
189 MATRIX_DEBUG_SCAN_END(); MATRIX_DEBUG_GAP(); MATRIX_DEBUG_SCAN_START();
190
191 bool changed = false;
192#if MATRIX_TYPE == DIRECT_SWITCH || MATRIX_TYPE == DIODE_COL2ROW
193 // copy phy_matrix[] to raw_matrix[]
194 for (uint8_t current_line = 0; current_line < MATRIX_ROWS; current_line++) {
195 if (raw_matrix[current_line] != phy_matrix[current_line]) {
196 changed = true;
197 raw_matrix[current_line] = phy_matrix[current_line];
198 }
199 }
200#endif
201#if MATRIX_TYPE == DIODE_ROW2COL
202 // transpose phy_matrix[] to raw_matrix[]
203 matrix_row_t trans_matrix[MATRIX_ROWS];
204 for (uint8_t i = 0; i < MATRIX_ROWS; i++ ) {
205 trans_matrix[i] = 0;
206 }
207 for (uint8_t src_line = 0; src_line < MATRIX_LINES; src_line++) {
208 matrix_line_t src_line_data = phy_matrix[src_line];
209 matrix_row_t dist_bit = MATRIX_ROW_SHIFTER << src_line;
210 for (uint8_t dist_rows = 0; dist_rows < MATRIX_ROWS; dist_rows++) {
211 if ((src_line_data & 1) == 1) {
212 trans_matrix[dist_rows] |= dist_bit;
213 }
214 src_line_data >>= 1;
215 }
216 }
217 for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) {
218 if (raw_matrix[current_row] != trans_matrix[current_row]) {
219 changed = true;
220 raw_matrix[current_row] = trans_matrix[current_row];
221 }
222 }
223#endif
224 MATRIX_DEBUG_SCAN_END(); MATRIX_DEBUG_GAP(); MATRIX_DEBUG_SCAN_START();
225
226 // debounce raw_matrix[] to matrix[]
227 debounce(raw_matrix, matrix, MATRIX_ROWS, changed);
228 MATRIX_DEBUG_SCAN_END(); MATRIX_DEBUG_GAP();
229
230 MATRIX_DEBUG_SCAN_START();
231 matrix_scan_quantum();
232 MATRIX_DEBUG_SCAN_END();
233 return (uint8_t)changed;
234}
diff --git a/keyboards/handwired/symmetric70_proto/matrix_fast/matrix_config_expand.c b/keyboards/handwired/symmetric70_proto/matrix_fast/matrix_config_expand.c
new file mode 100644
index 000000000..0df605db4
--- /dev/null
+++ b/keyboards/handwired/symmetric70_proto/matrix_fast/matrix_config_expand.c
@@ -0,0 +1,234 @@
1/*
2Copyright 2021 mtei
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17// clang-format off
18
19#include "matrix_extr.h"
20
21#ifdef DEBUG_MATRIX_CONFIG
22// config expand debug
23// avr-gcc -DDEBUG_MATRIX_CONFIG=\"test_config.h\" -E -C matrix_config_expand.c
24# include DEBUG_MATRIX_CONFIG
25#endif
26
27#undef NO_PIN /* cancel NO_PIN define in tmk_core/common/pin_defs.h */
28#define NO_PIN NO_PORT, 0
29#if MATRIX_TYPE == DIRECT_SWITCH
30# undef MATRIX_OUT_PORTS
31# define MATRIX_OUT_PINS (0, NO_PIN)
32#endif
33
34#include "cpp_map.h"
35
36#if defined(MATRIX_EXTENSION_74HC157) || defined(MATRIX_EXTENSION_74HC153)
37# define MATRIX_EXTENSION "matrix_extension_74hc15x.c"
38#endif
39
40#ifdef MATRIX_EXTENSION
41# include MATRIX_EXTENSION
42#endif
43
44#ifdef MATRIX_GPIO_NEED_SEPARATE_ATOMIC
45# ifndef setMatrixInputHigh
46# define setMatrixInputHigh(dev, port, bit) do { if ((dev) == MCU_GPIO) { setPortBitInputHigh_atomic(port, bit); }} while(0)
47# endif
48# ifndef setMatrixOutput_writeHighZ
49# define setMatrixOutput_writeHighZ(dev, port, bit) do { if ((dev) == MCU_GPIO) { setPortBitInputHigh_atomic(port, bit); }} while(0)
50# endif
51# ifndef setMatrixOutput_writeLow
52# define setMatrixOutput_writeLow(dev, port, bit) do { if ((dev) == MCU_GPIO) { setPortBitOutput_writeLow_atomic(port, bit); }} while(0)
53# endif
54#else
55# ifndef setMatrixInputHigh
56# define setMatrixInputHigh(dev, port, bit) do { if ((dev) == MCU_GPIO) { setPortBitInputHigh(port, bit); }} while(0)
57# endif
58# ifndef setMatrixOutput_writeHighZ
59# define setMatrixOutput_writeHighZ(dev, port, bit) do { if ((dev) == MCU_GPIO) { setPortBitInputHigh(port, bit); }} while(0)
60# endif
61# ifndef setMatrixOutput_writeLow
62# define setMatrixOutput_writeLow(dev, port, bit) do { if ((dev) == MCU_GPIO) { setPortBitOutput_writeLow(port, bit); }} while(0)
63# endif
64#endif
65
66#ifndef readMatrixPort
67# define readMatrixPort(dev, port) (((dev) == MCU_GPIO) ? readPort(port) : 0)
68#endif
69#ifndef getMatrixInputMaskBit
70# define getMatrixInputMaskBit(dev, bit) (((dev) != NO_DEVICE) ? _BV((bit)&0xF) : 0)
71#endif
72
73#ifndef init_extension
74# define init_extension()
75#endif
76
77enum DEVICE_NAME {
78 MCU_GPIO,
79 NO_DEVICE,
80#ifdef MATRIX_DEVICES
81 MATRIX_DEVICES
82#endif
83};
84
85#define _INPUT_PORTS_ENUM_ELEMENT(name, dev, port) inport_index_##name,
86#define INPUT_PORTS_ENUM_ELEMENT(x) _INPUT_PORTS_ENUM_ELEMENT x
87enum INPUT_PORTS {
88 INPUT_PORTS_ENUM_ELEMENT((NO_PORT, NO_DEVICE, 0))
89 MAP(INPUT_PORTS_ENUM_ELEMENT, MATRIX_IN_PORTS)
90 NUM_OF_INPUT_PORTS
91};
92
93#define _INPUT_PINS_ENUM_ELEMENT(index, port, bit) inpin_index_##index,
94#define INPUT_PINS_ENUM_ELEMENT(x) _INPUT_PINS_ENUM_ELEMENT x
95enum INPUT_PINS {
96 MAP(INPUT_PINS_ENUM_ELEMENT, MATRIX_IN_PINS)
97 END_inpin_index
98};
99
100#define _OUTPUT_PORTS_ENUM_ELEMENT(name, dev, port) outport_index_##name,
101#define OUTPUT_PORTS_ENUM_ELEMENT(x) _OUTPUT_PORTS_ENUM_ELEMENT x
102enum OUTPUT_PORTS {
103 OUTPUT_PORTS_ENUM_ELEMENT((NO_PORT, NO_DEVICE, 0))
104#ifdef MATRIX_OUT_PORTS
105 MAP(OUTPUT_PORTS_ENUM_ELEMENT, MATRIX_OUT_PORTS)
106#endif
107 NUM_OF_OUTPUT_PORTS
108};
109
110#define _OUTPUT_PINS_ENUM_ELEMENT(index, port, bit) outpin_index_##index,
111#define OUTPUT_PINS_ENUM_ELEMENT(x) _OUTPUT_PINS_ENUM_ELEMENT x
112enum OUTPUT_PINS {
113 MAP(OUTPUT_PINS_ENUM_ELEMENT, MATRIX_OUT_PINS)
114 END_outpin_index
115};
116
117port_width_t iport_mask[NUM_OF_INPUT_PORTS];
118
119#define _INPUT_PORTS_LIST_ELEMENT(name, dev, port) \
120 [inport_index_##name] = { dev, port },
121#define INPUT_PORTS_LIST_ELEMENT(x) _INPUT_PORTS_LIST_ELEMENT x
122LOCAL_DATA
123const port_descriptor inport_list[NUM_OF_INPUT_PORTS] = {
124 INPUT_PORTS_LIST_ELEMENT((NO_PORT, NO_DEVICE, 0))
125 MAP(INPUT_PORTS_LIST_ELEMENT, MATRIX_IN_PORTS)
126};
127
128#define _OUTPUT_PORTS_LIST_ELEMENT(name, dev, port) \
129 [outport_index_##name] = { dev, port },
130#define OUTPUT_PORTS_LIST_ELEMENT(x) _OUTPUT_PORTS_LIST_ELEMENT x
131LOCAL_DATA
132const port_descriptor outport_list[NUM_OF_OUTPUT_PORTS] = {
133 OUTPUT_PORTS_LIST_ELEMENT((NO_PORT, NO_DEVICE, 0))
134#ifdef MATRIX_OUT_PORTS
135 MAP(OUTPUT_PORTS_LIST_ELEMENT, MATRIX_OUT_PORTS)
136#endif
137};
138
139#define _SELECT_OUTPUT_PIN(index, pname, bit) \
140 case outpin_index_##index: \
141 setMatrixOutput_writeLow(outport_list[outport_index_##pname].device, \
142 outport_list[outport_index_##pname].port, bit); \
143 break;
144#define SELECT_OUTPUT_PIN(x) _SELECT_OUTPUT_PIN x
145LOCAL_FUNC ALWAYS_INLINE void select_output(uint8_t out_index);
146LOCAL_FUNC
147void select_output(uint8_t out_index) {
148 switch (out_index) {
149 MAP(SELECT_OUTPUT_PIN, MATRIX_OUT_PINS)
150 }
151}
152
153#define _UNSELECT_OUTPUT_PIN(index, pname, bit) \
154 case outpin_index_##index: \
155 setMatrixOutput_writeHighZ(outport_list[outport_index_##pname].device, \
156 outport_list[outport_index_##pname].port, bit); \
157 break;
158#define UNSELECT_OUTPUT_PIN(x) _UNSELECT_OUTPUT_PIN x
159LOCAL_FUNC ALWAYS_INLINE void unselect_output_inline(uint8_t out_index);
160LOCAL_FUNC
161void unselect_output_inline(uint8_t out_index) {
162 switch (out_index) {
163 MAP(UNSELECT_OUTPUT_PIN, MATRIX_OUT_PINS)
164 }
165}
166
167#define _INIT_INPUT_PIN(index, pname, bit) \
168 setMatrixInputHigh(inport_list[inport_index_##pname].device, \
169 inport_list[inport_index_##pname].port, bit);
170#define INIT_INPUT_PIN(x) _INIT_INPUT_PIN x
171LOCAL_FUNC
172void init_input_ports(void) {
173 MAP(INIT_INPUT_PIN, MATRIX_IN_PINS)
174}
175
176#define _INIT_INPORT_MASK(index, pname, bit) \
177 iport_mask[inport_index_##pname] |= getMatrixInputMaskBit(inport_list[inport_index_##pname].device, bit);
178#define INIT_INPORT_MASK(x) _INIT_INPORT_MASK x
179LOCAL_FUNC
180void init_inport_mask(void) {
181 for (int i = 0; i < NUM_OF_INPUT_PORTS; i++ ) {
182 iport_mask[i] = 0;
183 }
184 MAP(INIT_INPORT_MASK, MATRIX_IN_PINS)
185}
186
187#define _READ_INPUT_PORT(name, dev, port) \
188 buffer[inport_index_##name] = readMatrixPort(dev, port);
189#define READ_INPUT_PORT(x) _READ_INPUT_PORT x
190LOCAL_FUNC
191ALWAYS_INLINE void read_all_input_ports(port_width_t buffer[NUM_OF_INPUT_PORTS], bool wait_unselect);
192LOCAL_FUNC
193void read_all_input_ports(port_width_t buffer[NUM_OF_INPUT_PORTS], bool wait_unselect) {
194 READ_INPUT_PORT((NO_PORT, NO_DEVICE, 0))
195 MAP(READ_INPUT_PORT, MATRIX_IN_PORTS)
196}
197
198#define _MASK_INPUT(name, dev, port) \
199 mask |= ((~buffer[inport_index_##name]) & iport_mask[inport_index_##name]);
200#define MASK_INPUT(x) _MASK_INPUT x
201LOCAL_FUNC ALWAYS_INLINE void wait_unselect_done(void);
202LOCAL_FUNC
203void wait_unselect_done(void) {
204 port_width_t mask;
205 port_width_t buffer[NUM_OF_INPUT_PORTS];
206 do {
207 read_all_input_ports(buffer, true);
208 MATRIX_DEBUG_DELAY_END();
209 mask = 0;
210 MAP(MASK_INPUT, MATRIX_IN_PORTS);
211 MATRIX_DEBUG_DELAY_START();
212 } while (mask != 0);
213}
214
215#define _BUILD_INPUT_PORT(index, pname, bit) \
216 result |= (buffer[inport_index_##pname] & _BV(bit)) ? 0 : _BV(inpin_index_##index);
217#define BUILD_INPUT_PORT(x) _BUILD_INPUT_PORT x
218LOCAL_FUNC ALWAYS_INLINE matrix_line_t build_matrix_line(port_width_t buffer[NUM_OF_INPUT_PORTS]);
219LOCAL_FUNC
220matrix_line_t build_matrix_line(port_width_t buffer[NUM_OF_INPUT_PORTS]) {
221 matrix_line_t result = 0;
222 MAP(BUILD_INPUT_PORT, MATRIX_IN_PINS);
223 return result;
224}
225
226#define _BUILD_INPUT_PORT_DIRECT(index, pname, bit) \
227 matrix[(inpin_index_##index)/MATRIX_COLS] \
228 |= (buffer[inport_index_##pname] & _BV(bit)) ? 0 : _BV((inpin_index_##index)%MATRIX_COLS);
229#define BUILD_INPUT_PORT_DIRECT(x) _BUILD_INPUT_PORT_DIRECT x
230LOCAL_FUNC ALWAYS_INLINE void build_matrix_direct(port_width_t buffer[NUM_OF_INPUT_PORTS], matrix_line_t matrix[]);
231LOCAL_FUNC
232void build_matrix_direct(port_width_t buffer[NUM_OF_INPUT_PORTS], matrix_line_t matrix[]) {
233 MAP(BUILD_INPUT_PORT_DIRECT, MATRIX_IN_PINS);
234}
diff --git a/keyboards/handwired/symmetric70_proto/matrix_fast/matrix_extension_74hc15x.c b/keyboards/handwired/symmetric70_proto/matrix_fast/matrix_extension_74hc15x.c
new file mode 100644
index 000000000..bca53da24
--- /dev/null
+++ b/keyboards/handwired/symmetric70_proto/matrix_fast/matrix_extension_74hc15x.c
@@ -0,0 +1,72 @@
1/*
2Copyright 2021 mtei
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17// clang-format off
18
19#if defined(MATRIX_EXTENSION_74HC157)
20# define MATRIX_DEVICES MCU_GPIOa, MCU_GPIOb
21# define IS_74HC15x(dev) ((dev)==MCU_GPIOa || (dev)==MCU_GPIOb)
22# define MATRIX_EXT_74HC15x MATRIX_EXTENSION_74HC157
23#elif defined(MATRIX_EXTENSION_74HC153)
24# define MATRIX_DEVICES MCU_GPIOa, MCU_GPIOb, MCU_GPIOc, MCU_GPIOd
25# define IS_74HC15x(dev) ((dev)==MCU_GPIOa || (dev)==MCU_GPIOb || (dev)==MCU_GPIOc || (dev)==MCU_GPIOd)
26# define MATRIX_EXT_74HC15x MATRIX_EXTENSION_74HC153
27#endif
28
29static const pin_t sel_pins[] = { MATRIX_EXT_74HC15x };
30
31#ifdef MATRIX_GPIO_NEED_SEPARATE_ATOMIC
32# define setMatrixInputHigh(dev, port, bit) \
33 do { \
34 if ((dev) == MCU_GPIO || IS_74HC15x(dev)) { \
35 setPortBitInputHigh_atomic(port, bit); \
36 }
37 } while(0)
38#else
39# define setMatrixInputHigh(dev, port, bit) \
40 do { \
41 if ((dev) == MCU_GPIO || IS_74HC15x(dev)) { \
42 setPortBitInputHigh(port, bit); \
43 } \
44 } while(0)
45#endif
46
47LOCAL_FUNC ALWAYS_INLINE void select74HC15x(uint8_t devid);
48LOCAL_FUNC
49void select74HC15x(uint8_t devid) {
50 writePin(sel_pins[0], devid&1);
51#if defined(MATRIX_EXTENSION_74HC153)
52 writePin(sel_pins[1], devid&2);
53#endif
54}
55
56LOCAL_FUNC ALWAYS_INLINE port_width_t readPortMultiplexer(uint8_t devid, pin_t port);
57LOCAL_FUNC port_width_t readPortMultiplexer(uint8_t devid, pin_t port) {
58 select74HC15x(devid);
59 waitInputPinDelay();
60 return readPort(port);
61}
62
63#define readMatrixPort(dev, port) \
64 ((dev) == MCU_GPIO)? readPort(port): (IS_74HC15x(dev))? readPortMultiplexer((dev)-MCU_GPIOa, port):0
65
66#define INIT_74HC15X(x) setPinOutput(x); writePinLow(x);
67LOCAL_FUNC
68void init_74hc15x(void) {
69 MAP(INIT_74HC15X, MATRIX_EXT_74HC15x)
70}
71#define init_extension() init_74hc15x()
72
diff --git a/keyboards/handwired/symmetric70_proto/matrix_fast/matrix_extr.h b/keyboards/handwired/symmetric70_proto/matrix_fast/matrix_extr.h
new file mode 100644
index 000000000..e0cf52891
--- /dev/null
+++ b/keyboards/handwired/symmetric70_proto/matrix_fast/matrix_extr.h
@@ -0,0 +1,36 @@
1#pragma once
2// clang-format off
3
4#define DIRECT_SWITCH 1
5#define DIODE_ROW2COL 2
6#define DIODE_COL2ROW 3
7
8#ifndef ROW2COL
9# define COL2ROW 0
10# define ROW2COL 1
11#endif
12
13#ifdef DIRECT_PINS
14# define MATRIX_TYPE DIRECT_SWITCH
15#else
16# if DIODE_DIRECTION == ROW2COL
17# define MATRIX_TYPE DIODE_ROW2COL
18# endif
19# if DIODE_DIRECTION == COL2ROW
20# define MATRIX_TYPE DIODE_COL2ROW
21# endif
22#endif
23
24#ifndef MATRIX_TYPE
25# error "MATRIX_TYPE could not be determined."
26#endif
27
28#if (MATRIX_ROWS <= 8)
29typedef uint8_t matrix_col_t;
30#elif (MATRIX_ROWS <= 16)
31typedef uint16_t matrix_col_t;
32#elif (MATRIX_ROWS <= 32)
33typedef uint32_t matrix_col_t;
34#else
35# error "MATRIX_ROWS: invalid value"
36#endif
diff --git a/keyboards/handwired/symmetric70_proto/matrix_fast/readme.md b/keyboards/handwired/symmetric70_proto/matrix_fast/readme.md
new file mode 100644
index 000000000..dc744a4c4
--- /dev/null
+++ b/keyboards/handwired/symmetric70_proto/matrix_fast/readme.md
@@ -0,0 +1,168 @@
1# Fast and extensible matrix.c
2
3This matrix.c is faster and more extensible than the standard quantum/matrix.c.
4
5* The execution speed of the `matrix_scan()` function is several times faster than quantum/matrix.c.
6* In addition to handling MCU GPIOs, it can be extended to handle I/O extenders.
7
8## ToDo list
9- [x] support Pro Micro
10- [x] support Proton-C
11- [x] support DIRECT_PINS
12- [x] support DIODE_DIRECTION == ROW2COL
13- [x] support 74HC157: quadruple 2-line to 1-line data selectors / multiplexers
14- [x] support 74HC153: dual 4-line to 1-line data selectors / multiplexers
15- [ ] support I/O expander (MCP23018)
16- [ ] support MCU & I/O expander (MCP23018) mixture like ErgoDox
17
18## Configuration
19
20This matrix.c requires a different configuration than quantum/matrix.c.
21
22### Output pins configuration
23
24The output pins is the Row pins if `DIODE_DIRECTION == COL2ROW`, and the Col pins if `DIODE_DIRECTION == ROW2COL`. When DIRECT_PINS is defined, the output pins do not need to be set.
25
26Example:
27```c
28// list of OUTPUT(row) ports
29#define MATRIX_OUT_PORTS \
30 (Port_D, MCU_GPIO, D0), \
31 (Port_C, MCU_GPIO, C0), \
32 (Port_E, MCU_GPIO, E0), \
33 (Port_B, MCU_GPIO, B0)
34// list of OUTPUT pins
35#define MATRIX_OUT_PINS \
36 (0, Port_D, 4), \
37 (1, Port_C, 6), \
38 (2, Port_D, 7), \
39 (3, Port_E, 6), \
40 (4, Port_B, 4), \
41 (5, Port_B, 5)
42```
43
44### Input pins configuration
45
46The input pins is the Col pins if `DIODE_DIRECTION == COL2ROW`, and the Row pins if `DIODE_DIRECTION == ROW2COL`. When DIRECT_PINS is defined, the input pin settings will enumerate the connection pins of all switches.
47
48Example:
49```c
50// list of INPUT ports
51#define MATRIX_IN_PORTS (Port_F, MCU_GPIO, F0), (Port_B, MCU_GPIO, B0)
52// list of INPUT pins
53#define MATRIX_IN_PINS \
54 (0, Port_F, 4), \
55 (1, Port_F, 5), \
56 (2, Port_F, 6), \
57 (3, Port_F, 7), \
58 (4, Port_B, 1), \
59 (5, Port_B, 3)
60```
61
62### Multiplexer Extension
63
64By defining the `MATRIX_EXTENSION_74HC157` macro or `MATRIX_EXTENSION_74HC153` macro, you can connect a multiplexer to the GPIO to extend the input pins.
65
66Example:
67```c
68#define MATRIX_EXTENSION_74HC157 B2 /* or #define MATRIX_EXTENSION_74HC153 B2, B6 */
69
70// list of OUTPUT ports
71#define MATRIX_OUT_PORTS (Port_D, MCU_GPIO, D0), (Port_C, MCU_GPIO, C0), (Port_E, MCU_GPIO, E0), (Port_B, MCU_GPIO, B0)
72// list of OUTPUT pins
73#define MATRIX_OUT_PINS (0, Port_D, 4), (1, Port_C, 6), (2, Port_D, 7), (3, Port_E, 6), (4, Port_B, 4), (5, Port_B, 5)
74
75// list of INPUT ports
76#define MATRIX_IN_PORTS \
77 (Port_Fa, MCU_GPIOa, F0), \
78 (Port_Ba, MCU_GPIOa, B0), \
79 (Port_Fb, MCU_GPIOb, F0), \
80 (Port_Bb, MCU_GPIOb, B0)
81// list of INPUT pins
82#define MATRIX_IN_PINS \
83 (0, Port_Fa, 4), \
84 (1, Port_Fb, 5), \
85 (2, Port_Fb, 6), \
86 (3, Port_Fa, 7), \
87 (4, Port_Ba, 1), \
88 (5, Port_Bb, 3)
89```
90
91### I/O expander Extension
92
93I plan to provide extensions to support I/O expanders such as MCP23018 and PCA9555.
94
95## Compile
96
97* Measure the execution time of matrix_scan()
98 * `make MTEST=matrix_debug_scan[,<other options>..] handwired/symmetric70_proto/promicro/fast:default:flash`
99* Measure delay time.
100 * `make MTEST=matrix_debug_delay[,<other options>..] handwired/symmetric70_proto/promicro/fast:default:flash`
101
102## Measurement result
103### Pro Micro (ATmega32u4 16Mhz)
104#### Default setting (show `matrix_scan()` time)
105 - `make MTEST=matrix_debug_scan handwired/symmetric70_proto/promicro/fast:default:flash`
106 - CH1: Row 0
107 - CH2: Row 1
108 - CH3: Row 4
109 - CH4: matrix_scan()
110 - Execution time of matrix_scan() 75.6us
111 - Frequency of matrix scan 8.09kHz (123.6us)
112 ![DS1Z_QuickPrint7](https://user-images.githubusercontent.com/2170248/116003927-538d9100-a63b-11eb-9b36-7db47d9b1541.png)
113
114#### Default setting (show delay time)
115 - `make MTEST=matrix_debug_delay handwired/symmetric70_proto/promicro/fast:default:flash`
116##### Press R0C0 key
117 - CH1: Row 0
118 - CH2: Row 1
119 - CH3: Row 4
120 - CH4: delay time
121 - Frequency of matrix scan 7.84kHz (127.6us)
122
123![DS1Z_QuickPrint9](https://user-images.githubusercontent.com/2170248/116003974-99e2f000-a63b-11eb-9c9e-3b3b1025db66.png)
124![DS1Z_QuickPrint10](https://user-images.githubusercontent.com/2170248/116003978-a1a29480-a63b-11eb-97d8-5a6e11c0db2f.png)
125
126### Proton C
127#### Default setting (show `matrix_scan()` time)
128 - `make MTEST=matrix_debug_scan handwired/symmetric70_proto/proton_c/fast:default:flash`
129 - CH1: Row 0
130 - CH2: Row 1
131 - CH3: Row 4
132 - CH4: matrix_scan()
133 - Execution time of matrix_scan() 49.8us
134 - Frequency of matrix scan 15.1kHz (66.2.6us)
135
136![DS1Z_QuickPrint11](https://user-images.githubusercontent.com/2170248/116088141-8cca0d80-a6dc-11eb-8782-1d29c57690b8.png)
137
138#### Default setting (show delay time)
139 - `make MTEST=matrix_debug_delay handwired/symmetric70_proto/proton_c/fast:default:flash`
140##### Press R0C0 key
141 - CH1: Row 0
142 - CH2: Row 1
143 - CH3: Row 4
144 - CH4: delay time
145 - Frequency of matrix scan 13.9kHz (71.8us)
146
147![DS1Z_QuickPrint12](https://user-images.githubusercontent.com/2170248/116088247-a8cdaf00-a6dc-11eb-8a47-104694a40117.png)
148![DS1Z_QuickPrint13](https://user-images.githubusercontent.com/2170248/116088262-ac613600-a6dc-11eb-804c-7dcbd71c83d5.png)
149
150##### Connect a 500pF capacitor between C0 line and GND, Press R0C0, R1C0, R2C0, R3C0, R4C0 keys
151 - CH1: Row 0
152 - CH2: Row 1
153 - CH3: Col 0
154 - CH4: delay time
155 - Delay time 11.6us
156 - Threshold Voltage 1.9V
157
158![DS1Z_QuickPrint14](https://user-images.githubusercontent.com/2170248/116089205-90aa5f80-a6dd-11eb-89c4-72315c80ba0e.png)
159
160##### Connect a 1000pF capacitor between C0 line and GND, Press R0C0, R1C0, R2C0, R3C0, R4C0 keys
161 - CH1: Row 0
162 - CH2: Row 1
163 - CH3: Col 0
164 - CH4: delay time
165 - Delay time 18.6us
166 - Threshold Voltage 1.9V
167
168![DS1Z_QuickPrint15](https://user-images.githubusercontent.com/2170248/116089229-96a04080-a6dd-11eb-8b63-f91b03a9db0c.png)
diff --git a/keyboards/handwired/symmetric70_proto/matrix_fast/test_config.h b/keyboards/handwired/symmetric70_proto/matrix_fast/test_config.h
new file mode 100644
index 000000000..25b5d4e01
--- /dev/null
+++ b/keyboards/handwired/symmetric70_proto/matrix_fast/test_config.h
@@ -0,0 +1,21 @@
1// list of OUTPUT(row) ports
2#define MATRIX_OUT_PORTS (Port_D, MCU_GPIO, D0), (Port_C, MCU_GPIO, C0), (Port_E, MCU_GPIO, E0), (Port_B, MCU_GPIO, B0)
3// list of OUTPUT(row) pins
4#define MATRIX_OUT_PINS \
5 (0, Port_D, 4), \
6 (1, Port_C, 6), \
7 (2, Port_D, 7), \
8 (3, Port_E, 6), \
9 (4, Port_B, 4), \
10 (5, Port_B, 5)
11
12// list of INPUT(col) ports
13#define MATRIX_IN_PORTS (Port_F, MCU_GPIO, F0), (Port_B, MCU_GPIO, B0)
14// list of INPUT(col) pins
15#define MATRIX_IN_PINS \
16 (0, Port_F, 4), \
17 (1, Port_F, 5), \
18 (2, Port_F, 6), \
19 (3, Port_F, 7), \
20 (4, Port_B, 1), \
21 (5, Port_B, 3)
diff --git a/keyboards/handwired/symmetric70_proto/matrix_fast/test_config_74hc157.h b/keyboards/handwired/symmetric70_proto/matrix_fast/test_config_74hc157.h
new file mode 100644
index 000000000..6abc25b86
--- /dev/null
+++ b/keyboards/handwired/symmetric70_proto/matrix_fast/test_config_74hc157.h
@@ -0,0 +1,28 @@
1#define MATRIX_EXTENSION_74HC157 B2
2// #define MATRIX_EXTENSION_74HC153 B2, B6
3
4// list of OUTPUT(row) ports
5#define MATRIX_OUT_PORTS (Port_D, MCU_GPIO, D0), (Port_C, MCU_GPIO, C0), (Port_E, MCU_GPIO, E0), (Port_B, MCU_GPIO, B0)
6// list of OUTPUT(row) pins
7#define MATRIX_OUT_PINS \
8 (0, Port_D, 4), \
9 (1, Port_C, 6), \
10 (2, Port_D, 7), \
11 (3, Port_E, 6), \
12 (4, Port_B, 4), \
13 (5, Port_B, 5)
14
15// list of INPUT(col) ports
16#define MATRIX_IN_PORTS \
17 (Port_Fa, MCU_GPIOa, F0), \
18 (Port_Ba, MCU_GPIOa, B0), \
19 (Port_Fb, MCU_GPIOb, F0), \
20 (Port_Bb, MCU_GPIOb, B0)
21// list of INPUT(col) pins
22#define MATRIX_IN_PINS \
23 (0, Port_Fa, 4), \
24 (1, Port_Fb, 5), \
25 (2, Port_Fb, 6), \
26 (3, Port_Fa, 7), \
27 (4, Port_Ba, 1), \
28 (5, Port_Bb, 3)
diff --git a/keyboards/handwired/symmetric70_proto/matrix_fast/test_config_direct.h b/keyboards/handwired/symmetric70_proto/matrix_fast/test_config_direct.h
new file mode 100644
index 000000000..aeea12950
--- /dev/null
+++ b/keyboards/handwired/symmetric70_proto/matrix_fast/test_config_direct.h
@@ -0,0 +1,34 @@
1#if defined(__AVR__)
2/* -------------------- AVR (Pro Micro) ----------------------- */
3
4// old style
5#define DIRECT_PINS { { F4, NO_PIN, F5 }, { NO_PIN, F6, F7 }, { B1, B3, NO_PIN } }
6
7// new style
8// #define DIRECT_PINS
9#define MATRIX_IN_PORTS \
10 (Port_F, MCU_GPIO, F0), \
11 (Port_B, MCU_GPIO, B0)
12#define MATRIX_IN_PINS \
13 (0, Port_F, 4), (1, NO_PIN ), (2, Port_F, 5), \
14 (3, NO_PIN ), (4, Port_F, 6), (5, Port_F, 7), \
15 (6, Port_B, 1), (7, Port_B, 3), (8, NO_PIN )
16
17#else
18/* -------------------- ARM (PROTON-C) ----------------------- */
19
20// old style
21#define DIRECT_PINS { { A2, NO_PIN, A1 }, { NO_PIN, A0, B8 }, { B13, B14, NO_PIN } }
22
23// new style
24// #define DIRECT_PINS
25#define MATRIX_IN_PORTS \
26 (Port_A, MCU_GPIO, A0), \
27 (Port_B, MCU_GPIO, B0)
28#define MATRIX_IN_PINS \
29 (0, Port_A, 2), (1, NO_PIN ), (2, Port_A, 1), \
30 (3, NO_PIN ), (4, Port_A, 0), (5, Port_B, 8), \
31 (6, Port_B, 13), (7, Port_B, 14), (8, NO_PIN )
32
33#endif
34
diff --git a/keyboards/handwired/symmetric70_proto/promicro/config.h b/keyboards/handwired/symmetric70_proto/promicro/config.h
new file mode 100644
index 000000000..2060c6260
--- /dev/null
+++ b/keyboards/handwired/symmetric70_proto/promicro/config.h
@@ -0,0 +1,157 @@
1/*
2Copyright 2020-2021 mtei
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#pragma once
19
20#include "config_common.h"
21
22/* USB Device descriptor parameter */
23#define VENDOR_ID 0xFEED
24#define PRODUCT_ID 0x2BE5
25#define DEVICE_VER 0x0001
26#define MANUFACTURER mtei
27#define PRODUCT Symmetric70 prototype promicro
28
29/* key matrix size */
30#define MATRIX_ROWS 5
31#define MATRIX_COLS 16
32
33/* Pro Micro **************************
34 ====
35 +-------====------+
36 MDEBUG | D3/TXO RAW |
37 | D2/RXI GND |
38 | GND RST |
39 | GND Vcc |
40 | D1/SDA F4 | COL_0_1_L
41 | D0/SCL F5 | COL_2_3_L
42 ROW_0 | D4 F6 | COL_4_5_L
43 ROW_1 | C6 F7 | COL_6_7_L
44 ROW_2 | D7 SCK/B1 | COL_6_7_R
45 ROW_3 | E6 MISO/B3 | COL_4_5_R
46 ROW_4 | B4 MOSI/B2 | COL_2_3_R
47 SEL_AB | B5 B6 | COL_0_1_R
48 +-----------------+
49***************************************/
50
51#define UNUSED_PINS
52
53/* COL2ROW, ROW2COL */
54#define DIODE_DIRECTION COL2ROW
55
56/*
57 * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
58 */
59#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
60
61//#define BACKLIGHT_PIN B7
62//#define BACKLIGHT_LEVELS 3
63//#define BACKLIGHT_BREATHING
64
65//#define RGB_DI_PIN E2
66//#ifdef RGB_DI_PIN
67//# define RGBLED_NUM 16
68//# define RGBLIGHT_HUE_STEP 8
69//# define RGBLIGHT_SAT_STEP 8
70//# define RGBLIGHT_VAL_STEP 8
71//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
72//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
73/*== all animations enable ==*/
74//# define RGBLIGHT_ANIMATIONS
75/*== or choose animations ==*/
76//# define RGBLIGHT_EFFECT_BREATHING
77//# define RGBLIGHT_EFFECT_RAINBOW_MOOD
78//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
79//# define RGBLIGHT_EFFECT_SNAKE
80//# define RGBLIGHT_EFFECT_KNIGHT
81//# define RGBLIGHT_EFFECT_CHRISTMAS
82//# define RGBLIGHT_EFFECT_STATIC_GRADIENT
83//# define RGBLIGHT_EFFECT_RGB_TEST
84//# define RGBLIGHT_EFFECT_ALTERNATING
85/*== customize breathing effect ==*/
86/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
87//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
88/*==== use exp() and sin() ====*/
89//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
90//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
91//#endif
92
93/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
94#define DEBOUNCE 5
95
96/* define if matrix has ghost (lacks anti-ghosting diodes) */
97//#define MATRIX_HAS_GHOST
98
99/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
100#define LOCKING_SUPPORT_ENABLE
101/* Locking resynchronize hack */
102#define LOCKING_RESYNC_ENABLE
103
104/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
105 * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
106 */
107//#define GRAVE_ESC_CTRL_OVERRIDE
108
109/*
110 * Force NKRO
111 *
112 * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
113 * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
114 * makefile for this to work.)
115 *
116 * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
117 * until the next keyboard reset.
118 *
119 * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
120 * fully operational during normal computer usage.
121 *
122 * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
123 * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
124 * bootmagic, NKRO mode will always be enabled until it is toggled again during a
125 * power-up.
126 *
127 */
128//#define FORCE_NKRO
129
130/*
131 * Feature disable options
132 * These options are also useful to firmware size reduction.
133 */
134
135/* disable debug print */
136//#define NO_DEBUG
137
138/* disable print */
139//#define NO_PRINT
140
141/* disable action features */
142//#define NO_ACTION_LAYER
143//#define NO_ACTION_TAPPING
144//#define NO_ACTION_ONESHOT
145
146/* disable these deprecated features by default */
147#define NO_ACTION_MACRO
148#define NO_ACTION_FUNCTION
149
150/* Bootmagic Lite key configuration */
151//#define BOOTMAGIC_LITE_ROW 0
152//#define BOOTMAGIC_LITE_COLUMN 0
153
154#ifdef DEBUG_CONFIG
155# define MATRIX_DEBUG_PIN D3
156# include "../debug_config.h"
157#endif
diff --git a/keyboards/handwired/symmetric70_proto/promicro/fast/config.h b/keyboards/handwired/symmetric70_proto/promicro/fast/config.h
new file mode 100644
index 000000000..2553de1ab
--- /dev/null
+++ b/keyboards/handwired/symmetric70_proto/promicro/fast/config.h
@@ -0,0 +1,52 @@
1/*
2Copyright 2021 mtei
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17#pragma once
18
19#define MATRIX_OUT_PORTS \
20 (Port_D, MCU_GPIO, D0), \
21 (Port_C, MCU_GPIO, C0), \
22 (Port_E, MCU_GPIO, E0), \
23 (Port_B, MCU_GPIO, B0)
24#define MATRIX_OUT_PINS \
25 (0, Port_D, 4), \
26 (1, Port_C, 6), \
27 (2, Port_D, 7), \
28 (3, Port_E, 6), \
29 (4, Port_B, 4)
30#define MATRIX_EXTENSION_74HC157 B5
31#define MATRIX_IN_PORTS \
32 (Port_Fa, MCU_GPIOa, F0), \
33 (Port_Fb, MCU_GPIOb, F0), \
34 (Port_Ba, MCU_GPIOa, B0), \
35 (Port_Bb, MCU_GPIOb, B0)
36#define MATRIX_IN_PINS \
37 (0, Port_Fa, 4), \
38 (1, Port_Fb, 4), \
39 (2, Port_Fa, 5), \
40 (3, Port_Fb, 5), \
41 (4, Port_Fa, 6), \
42 (5, Port_Fb, 6), \
43 (6, Port_Fa, 7), \
44 (7, Port_Fb, 7), \
45 (8, Port_Bb, 6), \
46 (9, Port_Ba, 6), \
47 (10, Port_Bb, 2), \
48 (11, Port_Ba, 2), \
49 (12, Port_Bb, 3), \
50 (13, Port_Ba, 3), \
51 (14, Port_Bb, 1), \
52 (15, Port_Ba, 1)
diff --git a/keyboards/handwired/symmetric70_proto/promicro/fast/readme.md b/keyboards/handwired/symmetric70_proto/promicro/fast/readme.md
new file mode 100644
index 000000000..9d1a8d8eb
--- /dev/null
+++ b/keyboards/handwired/symmetric70_proto/promicro/fast/readme.md
@@ -0,0 +1 @@
[Look here](../readme.md)
diff --git a/keyboards/handwired/symmetric70_proto/promicro/fast/rules.mk b/keyboards/handwired/symmetric70_proto/promicro/fast/rules.mk
new file mode 100644
index 000000000..de489fcab
--- /dev/null
+++ b/keyboards/handwired/symmetric70_proto/promicro/fast/rules.mk
@@ -0,0 +1,6 @@
1CUSTOM_MATRIX = yes
2SRC += matrix_common.c
3SRC += matrix_fast/matrix.c
4
5KEYBOARD_LOCAL_FEATURES_MK := $(dir $(lastword $(MAKEFILE_LIST)))../../local_features.mk
6include $(KEYBOARD_LOCAL_FEATURES_MK)
diff --git a/keyboards/handwired/symmetric70_proto/promicro/normal/config.h b/keyboards/handwired/symmetric70_proto/promicro/normal/config.h
new file mode 100644
index 000000000..e03f68584
--- /dev/null
+++ b/keyboards/handwired/symmetric70_proto/promicro/normal/config.h
@@ -0,0 +1,41 @@
1/*
2Copyright 2021 mtei
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17#pragma once
18
19/*
20 * Keyboard Matrix Assignments
21 *
22 * Change this to how you wired your keyboard
23 * COLS: AVR pins used for columns, left to right
24 * ROWS: AVR pins used for rows, top to bottom
25 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
26 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
27 *
28 */
29#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4 }
30#define MATRIX_COL_PINS { F4,F4,F5,F5, F6,F6,F7,F7, B6,B6,B2,B2, B3,B3,B1,B1 }
31
32#define MATRIX_MUL_SEL { 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0 }
33/* use 74HC157: quadruple 2-line to 1-line data selectors / multiplexers */
34#define MATRIX_MUL_SELECT B5 /* 74HC157 pin1:~A/B */
35
36#ifdef MATRIX_IO_DELAY_ADAPTIVE_FAST
37# define MATRIX_IO_DELAY_PORTS B0, B0, F0, F0
38# define MATRIX_IO_DELAY_MULSEL 0, 1, 0, 1
39// 76543210 76543210 76543210 76543210
40# define MATRIX_IO_DELAY_MASKS 0b01001110, 0b01001110, 0b11110000, 0b11110000
41#endif
diff --git a/keyboards/handwired/symmetric70_proto/promicro/normal/readme.md b/keyboards/handwired/symmetric70_proto/promicro/normal/readme.md
new file mode 100644
index 000000000..9d1a8d8eb
--- /dev/null
+++ b/keyboards/handwired/symmetric70_proto/promicro/normal/readme.md
@@ -0,0 +1 @@
[Look here](../readme.md)
diff --git a/keyboards/handwired/symmetric70_proto/promicro/normal/rules.mk b/keyboards/handwired/symmetric70_proto/promicro/normal/rules.mk
new file mode 100644
index 000000000..0b2b707ef
--- /dev/null
+++ b/keyboards/handwired/symmetric70_proto/promicro/normal/rules.mk
@@ -0,0 +1,6 @@
1CUSTOM_MATRIX = yes
2SRC += matrix_common.c
3SRC += matrix_debug/matrix.c
4
5KEYBOARD_LOCAL_FEATURES_MK := $(dir $(lastword $(MAKEFILE_LIST)))../../local_features.mk
6include $(KEYBOARD_LOCAL_FEATURES_MK)
diff --git a/keyboards/handwired/symmetric70_proto/promicro/readme.md b/keyboards/handwired/symmetric70_proto/promicro/readme.md
new file mode 100644
index 000000000..c74063b99
--- /dev/null
+++ b/keyboards/handwired/symmetric70_proto/promicro/readme.md
@@ -0,0 +1,27 @@
1# Pro Micro version of symmetric70_proto
2
3![symmetric70_proto](https://i.imgur.com/Br4pH9ol.jpg)
4<img width="80%" alt="matrix_74HC157d" src="https://user-images.githubusercontent.com/2170248/115988014-a3943580-a5f2-11eb-9a0a-038f7ea6a8d9.png">
5
6A compact 70keys keyboard (prototype) designed by mtei
7
8* Keyboard Maintainer: [mtei](https://github.com/mtei)
9* Hardware Supported: Pro Micro (ATmega32U4) & 74HC157
10* Hardware Availability: This is just prototype
11
12Make example for this keyboard (after setting up your build environment):
13
14 make handwired/symmetric70_proto/promicro/normal:default
15 make handwired/symmetric70_proto/promicro/fast:default
16
17Flashing example for this keyboard:
18
19 make handwired/symmetric70_proto/promicro/normal:default:flash
20 make handwired/symmetric70_proto/promicro/fast:default:flash
21
22Testing options: (see more options: [local_features.mk](../local_features.mk), [matrix_debug](../matrix_debug/readme.md) and [matrix_fast](../matrix_fast/readme.md) )
23
24 make MTEST=mdelay0 handwired/symmetric70_proto/promicro/normal:default:flash
25 make MTEST=mdelay0 handwired/symmetric70_proto/promicro/fast:default:flash
26
27See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/handwired/symmetric70_proto/rules.mk b/keyboards/handwired/symmetric70_proto/promicro/rules.mk
index 494dc6fba..822b1a84d 100644
--- a/keyboards/handwired/symmetric70_proto/rules.mk
+++ b/keyboards/handwired/symmetric70_proto/promicro/rules.mk
@@ -20,8 +20,3 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
20RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow 20RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
21BLUETOOTH_ENABLE = no # Enable Bluetooth 21BLUETOOTH_ENABLE = no # Enable Bluetooth
22AUDIO_ENABLE = no # Audio output 22AUDIO_ENABLE = no # Audio output
23
24CUSTOM_MATRIX = lite
25SRC += matrix.c
26
27## CONSOLE_ENABLE = yes # matrix dump
diff --git a/keyboards/handwired/symmetric70_proto/proton_c/config.h b/keyboards/handwired/symmetric70_proto/proton_c/config.h
new file mode 100644
index 000000000..84586854f
--- /dev/null
+++ b/keyboards/handwired/symmetric70_proto/proton_c/config.h
@@ -0,0 +1,165 @@
1/*
2Copyright 2021 mtei
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#pragma once
19
20#include "config_common.h"
21
22/* USB Device descriptor parameter */
23#define VENDOR_ID 0xFEED
24#define PRODUCT_ID 0x2BE5
25#define DEVICE_VER 0x0001
26#define MANUFACTURER mtei
27#define PRODUCT Symmetric70 prototype proton-c
28
29/* key matrix size */
30#define MATRIX_ROWS 5
31#define MATRIX_COLS 16
32
33/* Proton-C **************************
34 ====
35 +-------====------+
36 DEBUG | A9/TX/SCL2 5V | (VUSB)
37 | A10/RX/SDA2 GND |
38 | GND FLASH |
39 | GND 3.3V | (VCC)
40 C15 | B7/SDA1 A2 | C0
41 C14 | B6/SCL1 A1 | C1
42 C13 | B5 A0 | C2
43 C12 | B4 SCL1/B8 | C3
44 C11 | B3 SCLK/B13 | C4
45 C10 | B2 MISO/B14 | C5
46 C9 | B1 MOSI/B15 | C6
47 C8 | B0 SDA1/B9 | C7
48 +---+ +---+
49 +---+ +---+
50 R0 | A4 B10 |
51 R1 | A5 B11 |
52 R2 | A6 B12 |
53 R3 | A7 A14 |
54 R4 | A8 A13 |
55 | A15 RST |
56 +-----------------+
57***************************************/
58
59#define UNUSED_PINS
60
61/* COL2ROW, ROW2COL */
62#define DIODE_DIRECTION COL2ROW
63
64/*
65 * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
66 */
67//#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
68
69//#define BACKLIGHT_PIN B7
70//#define BACKLIGHT_LEVELS 3
71//#define BACKLIGHT_BREATHING
72
73//#define RGB_DI_PIN E2
74//#ifdef RGB_DI_PIN
75//# define RGBLED_NUM 16
76//# define RGBLIGHT_HUE_STEP 8
77//# define RGBLIGHT_SAT_STEP 8
78//# define RGBLIGHT_VAL_STEP 8
79//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
80//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
81/*== all animations enable ==*/
82//# define RGBLIGHT_ANIMATIONS
83/*== or choose animations ==*/
84//# define RGBLIGHT_EFFECT_BREATHING
85//# define RGBLIGHT_EFFECT_RAINBOW_MOOD
86//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
87//# define RGBLIGHT_EFFECT_SNAKE
88//# define RGBLIGHT_EFFECT_KNIGHT
89//# define RGBLIGHT_EFFECT_CHRISTMAS
90//# define RGBLIGHT_EFFECT_STATIC_GRADIENT
91//# define RGBLIGHT_EFFECT_RGB_TEST
92//# define RGBLIGHT_EFFECT_ALTERNATING
93/*== customize breathing effect ==*/
94/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
95//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
96/*==== use exp() and sin() ====*/
97//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
98//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
99//#endif
100
101/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
102#define DEBOUNCE 5
103
104/* define if matrix has ghost (lacks anti-ghosting diodes) */
105//#define MATRIX_HAS_GHOST
106
107/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
108#define LOCKING_SUPPORT_ENABLE
109/* Locking resynchronize hack */
110#define LOCKING_RESYNC_ENABLE
111
112/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
113 * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
114 */
115//#define GRAVE_ESC_CTRL_OVERRIDE
116
117/*
118 * Force NKRO
119 *
120 * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
121 * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
122 * makefile for this to work.)
123 *
124 * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
125 * until the next keyboard reset.
126 *
127 * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
128 * fully operational during normal computer usage.
129 *
130 * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
131 * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
132 * bootmagic, NKRO mode will always be enabled until it is toggled again during a
133 * power-up.
134 *
135 */
136//#define FORCE_NKRO
137
138/*
139 * Feature disable options
140 * These options are also useful to firmware size reduction.
141 */
142
143/* disable debug print */
144//#define NO_DEBUG
145
146/* disable print */
147//#define NO_PRINT
148
149/* disable action features */
150//#define NO_ACTION_LAYER
151//#define NO_ACTION_TAPPING
152//#define NO_ACTION_ONESHOT
153
154/* disable these deprecated features by default */
155#define NO_ACTION_MACRO
156#define NO_ACTION_FUNCTION
157
158/* Bootmagic Lite key configuration */
159//#define BOOTMAGIC_LITE_ROW 0
160//#define BOOTMAGIC_LITE_COLUMN 0
161
162#ifdef DEBUG_CONFIG
163# define MATRIX_DEBUG_PIN A9
164# include "../debug_config.h"
165#endif
diff --git a/keyboards/handwired/symmetric70_proto/proton_c/fast/config.h b/keyboards/handwired/symmetric70_proto/proton_c/fast/config.h
new file mode 100644
index 000000000..48c3ec1c0
--- /dev/null
+++ b/keyboards/handwired/symmetric70_proto/proton_c/fast/config.h
@@ -0,0 +1,44 @@
1/*
2Copyright 2021 mtei
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17#pragma once
18
19#define MATRIX_OUT_PORTS (Port_A, MCU_GPIO, A0)
20#define MATRIX_OUT_PINS \
21 (0, Port_A, 4), \
22 (1, Port_A, 5), \
23 (2, Port_A, 6), \
24 (3, Port_A, 7), \
25 (4, Port_A, 8)
26#define MATRIX_IN_PORTS \
27 (Port_A, MCU_GPIO, A0), (Port_B, MCU_GPIO, B0)
28#define MATRIX_IN_PINS \
29 (0, Port_A, 2), \
30 (1, Port_A, 1), \
31 (2, Port_A, 0), \
32 (3, Port_B, 8), \
33 (4, Port_B, 13), \
34 (5, Port_B, 14), \
35 (6, Port_B, 15), \
36 (7, Port_B, 9), \
37 (8, Port_B, 0), \
38 (9, Port_B, 1), \
39 (10, Port_B, 2), \
40 (11, Port_B, 3), \
41 (12, Port_B, 4), \
42 (13, Port_B, 5), \
43 (14, Port_B, 6), \
44 (15, Port_B, 7)
diff --git a/keyboards/handwired/symmetric70_proto/proton_c/fast/readme.md b/keyboards/handwired/symmetric70_proto/proton_c/fast/readme.md
new file mode 100644
index 000000000..9d1a8d8eb
--- /dev/null
+++ b/keyboards/handwired/symmetric70_proto/proton_c/fast/readme.md
@@ -0,0 +1 @@
[Look here](../readme.md)
diff --git a/keyboards/handwired/symmetric70_proto/proton_c/fast/rules.mk b/keyboards/handwired/symmetric70_proto/proton_c/fast/rules.mk
new file mode 100644
index 000000000..de489fcab
--- /dev/null
+++ b/keyboards/handwired/symmetric70_proto/proton_c/fast/rules.mk
@@ -0,0 +1,6 @@
1CUSTOM_MATRIX = yes
2SRC += matrix_common.c
3SRC += matrix_fast/matrix.c
4
5KEYBOARD_LOCAL_FEATURES_MK := $(dir $(lastword $(MAKEFILE_LIST)))../../local_features.mk
6include $(KEYBOARD_LOCAL_FEATURES_MK)
diff --git a/keyboards/handwired/symmetric70_proto/proton_c/normal/config.h b/keyboards/handwired/symmetric70_proto/proton_c/normal/config.h
new file mode 100644
index 000000000..942e54c79
--- /dev/null
+++ b/keyboards/handwired/symmetric70_proto/proton_c/normal/config.h
@@ -0,0 +1,36 @@
1/*
2Copyright 2021 mtei
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17#pragma once
18
19/*
20 * Keyboard Matrix Assignments
21 *
22 * Change this to how you wired your keyboard
23 * COLS: AVR pins used for columns, left to right
24 * ROWS: AVR pins used for rows, top to bottom
25 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
26 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
27 *
28 */
29#define MATRIX_ROW_PINS { A4, A5, A6, A7, A8 }
30#define MATRIX_COL_PINS { A2, A1, A0, B8, B13, B14, B15, B9, B0, B1, B2, B3, B4, B5, B6, B7 }
31
32#ifdef MATRIX_IO_DELAY_ADAPTIVE_FAST
33# define MATRIX_IO_DELAY_PORTS A0, B0
34// fedcba9876543210 fedcba9876543210
35# define MATRIX_IO_DELAY_MASKS 0b0000000000000111, 0b1110001111111111
36#endif
diff --git a/keyboards/handwired/symmetric70_proto/proton_c/normal/readme.md b/keyboards/handwired/symmetric70_proto/proton_c/normal/readme.md
new file mode 100644
index 000000000..9d1a8d8eb
--- /dev/null
+++ b/keyboards/handwired/symmetric70_proto/proton_c/normal/readme.md
@@ -0,0 +1 @@
[Look here](../readme.md)
diff --git a/keyboards/handwired/symmetric70_proto/proton_c/normal/rules.mk b/keyboards/handwired/symmetric70_proto/proton_c/normal/rules.mk
new file mode 100644
index 000000000..0b2b707ef
--- /dev/null
+++ b/keyboards/handwired/symmetric70_proto/proton_c/normal/rules.mk
@@ -0,0 +1,6 @@
1CUSTOM_MATRIX = yes
2SRC += matrix_common.c
3SRC += matrix_debug/matrix.c
4
5KEYBOARD_LOCAL_FEATURES_MK := $(dir $(lastword $(MAKEFILE_LIST)))../../local_features.mk
6include $(KEYBOARD_LOCAL_FEATURES_MK)
diff --git a/keyboards/handwired/symmetric70_proto/proton_c/proton_c.c b/keyboards/handwired/symmetric70_proto/proton_c/proton_c.c
new file mode 100644
index 000000000..3fe5bc297
--- /dev/null
+++ b/keyboards/handwired/symmetric70_proto/proton_c/proton_c.c
@@ -0,0 +1,12 @@
1#include "quantum.h"
2
3#ifndef MATRIX_IO_DELAY_DEFAULT
4/* In tmk_core/common/wait.h, the implementation for PROTOCOL_CHIBIOS
5 * calls 'chThdSleepMicroseconds(1)' when 'wait_us(0)'.
6 * However, 'wait_us(0)' should do nothing. */
7void matrix_output_unselect_delay(void) {
8# if !defined(MATRIX_IO_DELAY) || MATRIX_IO_DELAY > 0
9 matrix_io_delay();
10# endif
11}
12#endif
diff --git a/keyboards/handwired/symmetric70_proto/proton_c/readme.md b/keyboards/handwired/symmetric70_proto/proton_c/readme.md
new file mode 100644
index 000000000..fc10a2e63
--- /dev/null
+++ b/keyboards/handwired/symmetric70_proto/proton_c/readme.md
@@ -0,0 +1,26 @@
1# Proton C version of symmetric70_proto
2
3![symmetric70_proto](https://i.imgur.com/SCtlXOS.jpg)
4
5A compact 70keys keyboard (prototype) designed by mtei
6
7* Keyboard Maintainer: [mtei](https://github.com/mtei)
8* Hardware Supported: Proton C (STM32F303CCT6)
9* Hardware Availability: This is just prototype
10
11Make example for this keyboard (after setting up your build environment):
12
13 make handwired/symmetric70_proto/proton_c/normal:default
14 make handwired/symmetric70_proto/proton_c/fast:default
15
16Flashing example for this keyboard:
17
18 make handwired/symmetric70_proto/proton_c/normal:default:flash
19 make handwired/symmetric70_proto/proton_c/fast:default:flash
20
21Testing options: (see more options: [local_features.mk](../local_features.mk), [matrix_debug](../matrix_debug/readme.md) and [matrix_fast](../matrix_fast/readme.md) )
22
23 make MTEST=mdelay0 handwired/symmetric70_proto/proton_c/normal:default:flash
24 make MTEST=mdelay0 handwired/symmetric70_proto/proton_c/fast:default:flash
25
26See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/handwired/symmetric70_proto/proton_c/rules.mk b/keyboards/handwired/symmetric70_proto/proton_c/rules.mk
new file mode 100644
index 000000000..e8b094846
--- /dev/null
+++ b/keyboards/handwired/symmetric70_proto/proton_c/rules.mk
@@ -0,0 +1,23 @@
1# MCU name
2MCU = STM32F303
3BOARD = QMK_PROTON_C
4
5# Bootloader selection
6BOOTLOADER = stm32-dfu
7
8# Build Options
9# change yes to no to disable
10#
11BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
12MOUSEKEY_ENABLE = no # Mouse keys
13EXTRAKEY_ENABLE = no # Audio control and System control
14CONSOLE_ENABLE = no # Console for debug
15COMMAND_ENABLE = no # Commands for debug and configuration
16# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
17SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
18# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
19NKRO_ENABLE = no # USB Nkey Rollover
20BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
21RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
22BLUETOOTH_ENABLE = no # Enable Bluetooth
23AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/symmetric70_proto/readme.md b/keyboards/handwired/symmetric70_proto/readme.md
index 01c2889c2..1bb56cf4f 100644
--- a/keyboards/handwired/symmetric70_proto/readme.md
+++ b/keyboards/handwired/symmetric70_proto/readme.md
@@ -1,20 +1,8 @@
1# symmetric70_proto 1# symmetric70_proto
2 2
3![symmetric70_proto](https://i.imgur.com/Br4pH9ol.jpg) 3![symmetric70_proto](https://i.imgur.com/Br4pH9ol.jpg)
4![74HC157_schematic](https://i.imgur.com/8IU8Jgcl.jpg)
5 4
6A compact 70keys keyboard (prototype) designed by mtei 5A compact 70keys keyboard (prototype) designed by mtei
7 6
8* Keyboard Maintainer: [mtei](https://github.com/mtei) 7* [Pro Micro version of symmetric70_proto](promicro/readme.md)
9* Hardware Supported: Pro Micro (ATmega32U4) & 74HC157 8* [Proton-C version of symmetric70_proto](proton_c/readme.md)
10* Hardware Availability: This is just prototype
11
12Make example for this keyboard (after setting up your build environment):
13
14 make symmetric70_proto:default
15
16Flashing example for this keyboard:
17
18 make symmetric70_proto:default:flash
19
20See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/handwired/traveller/info.json b/keyboards/handwired/traveller/info.json
index 019250eb6..4de448d22 100644
--- a/keyboards/handwired/traveller/info.json
+++ b/keyboards/handwired/traveller/info.json
@@ -2,66 +2,68 @@
2 "keyboard_name": "Traveller", 2 "keyboard_name": "Traveller",
3 "url": "", 3 "url": "",
4 "maintainer": "qmk", 4 "maintainer": "qmk",
5 "width": 13, 5 "width": 15,
6 "height": 4, 6 "height": 5.2,
7 "layouts": { 7 "layouts": {
8 "LAYOUT": { 8 "LAYOUT": {
9 "layout": [ 9 "layout": [
10 {"x": 0, "y": 0}, 10 {"x": 0, "y": 1.2},
11 {"x": 1, "y": 0}, 11 {"x": 1, "y": 0.8},
12 {"x": 2, "y": 0}, 12 {"x": 2, "y": 0.4},
13 {"x": 3, "y": 0}, 13 {"x": 3, "y": 0},
14 {"x": 4, "y": 0}, 14 {"x": 4, "y": 0.4},
15 {"x": 5, "y": 0}, 15 {"x": 5, "y": 0.8},
16 16
17 {"x": 7, "y": 0}, 17 {"x": 9, "y": 0.8},
18 {"x": 8, "y": 0}, 18 {"x": 10, "y": 0.4},
19 {"x": 9, "y": 0},
20 {"x": 10, "y": 0},
21 {"x": 11, "y": 0}, 19 {"x": 11, "y": 0},
22 {"x": 12, "y": 0}, 20 {"x": 12, "y": 0.4},
21 {"x": 13, "y": 0.8},
22 {"x": 14, "y": 1.2},
23 23
24 {"x": 0, "y": 1}, 24 {"x": 0, "y": 2.2},
25 {"x": 1, "y": 1}, 25 {"x": 1, "y": 1.8},
26 {"x": 2, "y": 1}, 26 {"x": 2, "y": 1.4},
27 {"x": 3, "y": 1}, 27 {"x": 3, "y": 1},
28 {"x": 4, "y": 1}, 28 {"x": 4, "y": 1.4},
29 {"x": 5, "y": 1}, 29 {"x": 5, "y": 1.8},
30 30
31 {"x": 7, "y": 1}, 31 {"x": 9, "y": 1.8},
32 {"x": 8, "y": 1}, 32 {"x": 10, "y": 1.4},
33 {"x": 9, "y": 1},
34 {"x": 10, "y": 1},
35 {"x": 11, "y": 1}, 33 {"x": 11, "y": 1},
36 {"x": 12, "y": 1}, 34 {"x": 12, "y": 1.4},
35 {"x": 13, "y": 1.8},
36 {"x": 14, "y": 2.2},
37 37
38 {"x": 0, "y": 2}, 38 {"x": 0, "y": 3.2},
39 {"x": 1, "y": 2}, 39 {"x": 1, "y": 2.8},
40 {"x": 2, "y": 2}, 40 {"x": 2, "y": 2.4},
41 {"x": 3, "y": 2}, 41 {"x": 3, "y": 2},
42 {"x": 4, "y": 2}, 42 {"x": 4, "y": 2.4},
43 {"x": 5, "y": 2}, 43 {"x": 5, "y": 2.8},
44 {"x": 6, "y": 2}, 44
45 {"x": 7, "y": 2}, 45 {"x": 9, "y": 2.8},
46 {"x": 8, "y": 2}, 46 {"x": 10, "y": 2.4},
47 {"x": 9, "y": 2},
48 {"x": 10, "y": 2},
49 {"x": 11, "y": 2}, 47 {"x": 11, "y": 2},
50 {"x": 12, "y": 2}, 48 {"x": 12, "y": 2.4},
49 {"x": 13, "y": 2.8},
50 {"x": 14, "y": 3.2},
51 51
52 {"x": 0, "y": 3}, 52 {"x": 0, "y": 4.2},
53 {"x": 1, "y": 3}, 53 {"x": 1, "y": 3.8},
54 {"x": 2, "y": 3}, 54 {"x": 2, "y": 3.4},
55 {"x": 3, "y": 3}, 55 {"x": 3, "y": 3},
56 {"x": 4, "y": 3}, 56 {"x": 4, "y": 3.4},
57 {"x": 5, "y": 3}, 57 {"x": 5, "y": 3.8},
58 {"x": 6, "y": 3}, 58 {"x": 6, "y": 3.05, "h": 1.5},
59 {"x": 7, "y": 3}, 59
60 {"x": 8, "y": 3}, 60 {"x": 8, "y": 3.05, "h": 1.5},
61 {"x": 9, "y": 3}, 61 {"x": 9, "y": 3.8},
62 {"x": 10, "y": 3}, 62 {"x": 10, "y": 3.4},
63 {"x": 11, "y": 3}, 63 {"x": 11, "y": 3},
64 {"x": 12, "y": 3} 64 {"x": 12, "y": 3.4},
65 {"x": 13, "y": 3.8},
66 {"x": 14, "y": 4.2}
65 ] 67 ]
66 } 68 }
67 } 69 }
diff --git a/keyboards/handwired/traveller/keymaps/default/keymap.c b/keyboards/handwired/traveller/keymaps/default/keymap.c
index 661385d5d..288acbe10 100644
--- a/keyboards/handwired/traveller/keymaps/default/keymap.c
+++ b/keyboards/handwired/traveller/keymaps/default/keymap.c
@@ -1,4 +1,5 @@
1#include QMK_KEYBOARD_H 1#include QMK_KEYBOARD_H
2#include "mousekey.h"
2 3
3enum layer_names { 4enum layer_names {
4 _QW, 5 _QW,
@@ -19,117 +20,117 @@ enum custom_keycodes {
19 20
20const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 21const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
21 /* Qwerty 22 /* Qwerty
22 * ,-----------------------------------------. .-----------------------------------------. 23 * ,-----------------------------------------. .-----------------------------------------.
23 * | NAV | ` ~ | W | E | R | T | | Y | U | I | O | - | = | 24 * | NAV | ` ~ | W | E | R | T | | Y | U | I | O | - | = |
24 * |------+------+------+------+------+------| |------+------+------+------+------+------| 25 * |------+------+------+------+------+------| |------+------+------+------+------+------|
25 * | Tab | Q | S | D | F | G | | H | J | K | L | P | \ | 26 * | Tab | Q | S | D | F | G | | H | J | K | L | P | \ |
26 * |------+------+------+------+------+------|------+------+------+------+------+------+------| 27 * |------+------+------+------+------+------| |------+------+------+------+------+------|
27 * |ctrl/esc| A | X | C | V | B |Ctrl /| N | M | , | . | ; | ' | 28 * |ctrl/esc| A | X | C | V | B | | N | M | , | . | ; | ' |
28 * |------+------+------+------+------+------+ // +------+------+------+------+------+------| 29 * |------+------+------+------+------+------+-------------+------+------+------+------+------+------|
29 * | Shift| Z | Del | GUI | Low | Bspc |/Enter| Spc | Hi | GUI | Alt | / |Shift | 30 * | Shift| Z | Del | GUI | Low | Bspc | Ctrl | Enter| Spc | Hi | GUI | Alt | / |Shift |
30 * `------------------------------------------------------------------------------------------' 31 * `-------------------------------------------------------------------------------------------------'
31 */ 32 */
32 [_QW] = LAYOUT( 33 [_QW] = LAYOUT(
33 TG(_NAV), KC_GRV, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_MINS, KC_EQL, 34 TG(_NAV), KC_GRV, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_MINS, KC_EQL,
34 KC_TAB, KC_Q, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_P, KC_BSLS, 35 KC_TAB, KC_Q, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_P, KC_BSLS,
35 CTL_T(KC_ESC), KC_A, KC_X, KC_C, KC_V, KC_B, KC_RCTL, KC_N, KC_M, KC_COMM, KC_DOT, KC_SCLN, KC_QUOT, 36 CTL_T(KC_ESC), KC_A, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SCLN, KC_QUOT,
36 KC_LSFT, KC_Z, KC_DEL, KC_LGUI, MO(_LW), KC_BSPC, KC_ENT, KC_SPC, MO(_HI), KC_RGUI, KC_RALT, KC_SLSH, KC_RSFT 37 KC_LSFT, KC_Z, KC_DEL, KC_LGUI, MO(_LW), KC_BSPC, KC_RCTL, KC_ENT, KC_SPC, MO(_HI), KC_RGUI, KC_RALT, KC_SLSH, KC_RSFT
37 ), 38 ),
38 39
39 /* LOW - numbers, missing or awkward programming keys 40 /* LOW - numbers, missing or awkward programming keys
40 Doubled 1 key allows lazy reach with ring finger. 41 Doubled 1 key allows lazy reach with ring finger.
41 * ,-----------------------------------------. .-----------------------------------------. 42 * ,-----------------------------------------. .-----------------------------------------.
42 * | FKeys| 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 |Ctrl-alt-del| 43 * | FKeys| 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 |Ctrl-alt-del|
43 * |------+------+------+------+------+------| +------+------+------+------+------+------| 44 * |------+------+------+------+------+------| |------+------+------+------+------+------|
44 * | Tab | 1 | ] | ( | ) | | | * | ( | ) | [ | | | 45 * | Tab | 1 | ] | ( | ) | | | * | ( | ) | [ | | |
45 * |------+------+------+------+------+------|------+------+------+------+------+------+------| 46 * |------+------+------+------+------+------| |------+------+------+------+------+------|
46 * | Caps | [ | | { | } | ` | /| # | { | } | | ] | | 47 * | Caps | [ | | { | } | ` | | # | { | } | | ] | |
47 * |------+------+------+------+------+------+ // +------+------+------+------+------+------| 48 * |------+------+------+------+------+------+-------------+------+------+------+------+------+------|
48 * | Shift| | | | Low | |/ | | Hi | | | |Shift | 49 * | Shift| | | | Low | | | | | Hi | | | |Shift |
49 * `------------------------------------------------------------------------------------------' 50 * `-------------------------------------------------------------------------------------------------'
50 */ 51 */
51 [_LW] = LAYOUT( 52 [_LW] = LAYOUT(
52 TG(_FKEYS), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, LCTL(LALT(KC_DEL)), 53 TG(_FKEYS), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, LCTL(LALT(KC_DEL)),
53 _______, KC_1, KC_RBRC, KC_LPRN, KC_RPRN, XXXXXXX, KC_ASTR, KC_LPRN, KC_RPRN, KC_LBRC, XXXXXXX, XXXXXXX, 54 _______, KC_1, KC_RBRC, KC_LPRN, KC_RPRN, XXXXXXX, KC_ASTR, KC_LPRN, KC_RPRN, KC_LBRC, XXXXXXX, XXXXXXX,
54 KC_CAPS, KC_LBRC, XXXXXXX, KC_LCBR, KC_RCBR, KC_TILD, _______, KC_HASH, KC_LCBR, KC_RCBR, XXXXXXX, KC_RBRC, XXXXXXX, 55 KC_CAPS, KC_LBRC, XXXXXXX, KC_LCBR, KC_RCBR, KC_TILD, KC_HASH, KC_LCBR, KC_RCBR, XXXXXXX, KC_RBRC, XXXXXXX,
55 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ 56 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
56 ), 57 ),
57 58
58 /* HI - Punctuation, shell and 59 /* HI - Punctuation, shell and
59 * url ://@.com row on bottom, && is opposite || ^$ are in regex order: ^.*$ 60 * url ://@.com row on bottom, && is opposite || ^$ are in regex order: ^.*$
60 * Right hand nav keys work pretty well chorded with the Right hand Hi Key 61 * Right hand nav keys work pretty well chorded with the Right hand Hi Key
61 * ,-----------------------------------------. .-----------------------------------------. 62 * ,-----------------------------------------. .-----------------------------------------.
62 * |FKEYS | ! | @ | # | $ | % | | ^ | & | * | ( | ) | + | 63 * |FKEYS | ! | @ | # | $ | % | | ^ | & | * | ( | ) | + |
63 * |------+------+------+------+------+------| |------+------+------+------+------+------| 64 * |------+------+------+------+------+------| |------+------+------+------+------+------|
64 * | | ! | & | "|" | $ | % | | Vol+| Mute| | | | | 65 * | | ! | & | "|" | $ | % | | Vol+| Mute| | | | |
65 * |------+------+------+------+------+------|------+------+------+------+------+------+------| 66 * |------+------+------+------+------+------| |------+------+------+------+------+------|
66 * | CAPS | ^ | : | . | * | - | /| Vol-| Play | PgUp | Home | Up | End | 67 * | CAPS | ^ | : | . | * | - | | Vol-| Play | PgUp | Home | Up | End |
67 * |------+------+------+------+------+------+ // +------+------+------+------+------+------| 68 * |------+------+------+------+------+------+-------------+------+------+------+------+------+------|
68 * | | / | | | Low | |/ | | Hi | PgDn | Left| Down | Right | 69 * | | / | | | Low | | | | | Hi | PgDn | Left | Down |Right |
69 * `------------------------------------------------------------------------------------------' 70 * `-------------------------------------------------------------------------------------------------'
70 */ 71 */
71 [_HI] = LAYOUT( 72 [_HI] = LAYOUT(
72 TG(_FKEYS), KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PLUS, 73 TG(_FKEYS), KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PLUS,
73 _______, KC_EXLM, KC_AMPR, KC_PIPE, KC_DLR, KC_PERC, KC_VOLU, KC_MUTE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, 74 _______, KC_EXLM, KC_AMPR, KC_PIPE, KC_DLR, KC_PERC, KC_VOLU, KC_MUTE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
74 KC_CAPS, KC_CIRC, KC_COLN, KC_DOT, KC_ASTR, KC_MINS, _______, KC_VOLD, KC_PPLS, KC_PGUP, KC_HOME, KC_UP, KC_END, 75 KC_CAPS, KC_CIRC, KC_COLN, KC_DOT, KC_ASTR, KC_MINS, KC_VOLD, KC_PPLS, KC_PGUP, KC_HOME, KC_UP, KC_END,
75 _______, KC_SLSH, _______, _______, TT(_LW), _______, _______, _______, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT 76 _______, KC_SLSH, _______, _______, TT(_LW), _______, _______, _______, _______, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT
76 ), 77 ),
77 78
78 /* NAV - mouse & navigation 79 /* NAV - mouse & navigation
79 * gui left and right are line home/end, or fore & back in browser 80 * gui left and right are line home/end, or fore & back in browser
80 * Mouse buttons are reversed for comfort - bigger stretch is to the right button. 81 * Mouse buttons are reversed for comfort - bigger stretch is to the right button.
81 * 82 *
82 * ,-----------------------------------------. .-----------------------------------------. 83 * ,-----------------------------------------. .-----------------------------------------.
83 * | NAV | | | Up | |Gui-> | | MwU | MS_UL| MS_U |MS_UR | |Ms Norm| 84 * | NAV | | | Up | |Gui-> | | MwU | MS_UL| MS_U |MS_UR | |MsNorm|
84 * |------+------+------+------+------+------| |------+------+------+------+------+--------| 85 * |------+------+------+------+------+------| |------+------+------+------+------+------|
85 * | |Gui<- | Left | Down |Right | C^E | | BTN3 | MS_L |MS Up | MS_R | |Ms Fast | 86 * | |Gui<- | Left | Down |Right | C^E | | BTN3 | MS_L |MS Up | MS_R | |MsFast|
86 * |------+------+------+------+------+------|------|------+------+------+------+------+--------| 87 * |------+------+------+------+------+------| |------+------+------+------+------+------|
87 * | | C^A | GUI X| GUI C| GUI_V| |Enter/| MWD | M_DL |MS Dwn|MS_DR | Up |Ms Slow | 88 * | | C^A | GUI X| GUI C| GUI_V| | | MWD | M_DL |MS Dwn|MS_DR | Up |MsSlow|
88 * |------+------+------+------+------+------+ // +------+------+------+------+------+------| 89 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
89 * | | GuiZ | | | Low | |/ButnR|ButnL | Hi | | Left | Down | Right | 90 * | | GuiZ | | | Low | |Enter | ButnR|ButnL | Hi | | Left | Down | Right|
90 * `------------------------------------------------------------------------------------------' 91 * `-------------------------------------------------------------------------------------------------'
91 */ 92 */
92 [_NAV] = LAYOUT( 93 [_NAV] = LAYOUT(
93 TG(_NAV), XXXXXXX, XXXXXXX, KC_UP, XXXXXXX, RGUI(KC_RGHT), KC_WH_U, M_MUL, KC_MS_U, M_MUR, XXXXXXX, KC_ACL2, 94 TG(_NAV), XXXXXXX, XXXXXXX, KC_UP, XXXXXXX, RGUI(KC_RGHT), KC_WH_U, M_MUL, KC_MS_U, M_MUR, XXXXXXX, KC_ACL2,
94 _______, RGUI(KC_LEFT), KC_LEFT, KC_DOWN, KC_RGHT, LCTL(KC_E), KC_BTN3, KC_MS_L, KC_MS_U, KC_MS_R, XXXXXXX, KC_ACL1, 95 _______, RGUI(KC_LEFT), KC_LEFT, KC_DOWN, KC_RGHT, LCTL(KC_E), KC_BTN3, KC_MS_L, KC_MS_U, KC_MS_R, XXXXXXX, KC_ACL1,
95 _______, LCTL(KC_A), LGUI(KC_X), RGUI(KC_C), RGUI(KC_V), XXXXXXX, KC_ENT, KC_WH_D, M_MDL, KC_MS_D, M_MDR, KC_UP, KC_ACL0, 96 _______, LCTL(KC_A), LGUI(KC_X), RGUI(KC_C), RGUI(KC_V), XXXXXXX, KC_WH_D, M_MDL, KC_MS_D, M_MDR, KC_UP, KC_ACL0,
96 _______, RGUI(KC_Z), _______, _______, _______, _______, KC_BTN2, KC_BTN1, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT 97 _______, RGUI(KC_Z), _______, _______, _______, _______, KC_ENT, KC_BTN2, KC_BTN1, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT
97 ), 98 ),
98 99
99 /* FKEYS - Funtion keys & mac stuff 100 /* FKEYS - Funtion keys & mac stuff
100 * ,-----------------------------------------. .-----------------------------------------. 101 * ,-----------------------------------------. .-----------------------------------------.
101 * | FKEYS| F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | Ctrl | 102 * | FKEYS| F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | Ctrl |
102 * |------+------+------+------+------+------| |------+------+------+------+------+------| 103 * |------+------+------+------+------+------| |------+------+------+------+------+------|
103 * | | | | | | | | F11 | F12 | F13 | F14 | F15 | Alt | 104 * | | | | | | | | F11 | F12 | F13 | F14 | F15 | Alt |
104 * |------+------+------+------+------+------|------+------+------+------+------+------+------| 105 * |------+------+------+------+------+------| |------+------+------+------+------+------|
105 * |Qwerty| | | | | | /| | | | | | Del | 106 * |Qwerty| | | | | | | | | | | | Del |
106 * |------+------+------+------+------+------+ // +------+------+------+------+------+------| 107 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
107 * | . |RGBTog| . | | LO | Bspc |/ | | HI | | | | | 108 * | . |RGBTog| . | | LO | Bspc | | | | HI | | | | |
108 * `------------------------------------------------------------------------------------------' 109 * `-------------------------------------------------------------------------------------------------'
109 */ 110 */
110 [_FKEYS] = LAYOUT( 111 [_FKEYS] = LAYOUT(
111 TG(_FKEYS), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_RCTL, 112 TG(_FKEYS), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_RCTL,
112 _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_LALT, 113 _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_LALT,
113 TO(_QW), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DEL, 114 TO(_QW), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DEL,
114 _______, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ 115 _______, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
115 ), 116 ),
116 117
117 /* TRNS - skeleton for laters 118 /* TRNS - skeleton for laters
118 * ,-----------------------------------------. .-----------------------------------------. 119 * ,-----------------------------------------. .-----------------------------------------.
119 * | . | . | . | . | . | . | | ^ | & | * | ( | ) | | 120 * | . | . | . | . | . | . | | ^ | & | * | ( | ) | |
120 * |------+------+------+------+------+------| |------+------+------+------+------+------| 121 * |------+------+------+------+------+------| |------+------+------+------+------+------|
121 * | . | . | . | . | . | . | | 6 | 7 | 8 | 9 | 0 | | 122 * | . | . | . | . | . | . | | 6 | 7 | 8 | 9 | 0 | |
122 * |------+------+------+------+------+------|------+------+------+------+------+------+------| 123 * |------+------+------+------+------+------| |------+------+------+------+------+------|
123 * | . | . | . | . | . | . | /| | | | . | ; | " | 124 * | . | . | . | . | . | . | | | | | . | ; | " |
124 * |------+------+------+------+------+------+ // +------+------+------+------+------+------| 125 * |------+------+------+------+------+------+-------------+------+------+------+------+------+------|
125 * | . | . | . | GUI | LO | . |/ | Spc | HI | GUI | M0 | / |LSFT | 126 * | . | . | . | GUI | LO | . | | | Spc | HI | GUI | M0 | / | LSFT |
126 * `------------------------------------------------------------------------------------------' 127 * `-------------------------------------------------------------------------------------------------'
127 */ 128 */
128 [_TRNS] = LAYOUT( 129 [_TRNS] = LAYOUT(
129 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 130 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
130 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 131 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
131 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 132 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
132 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ 133 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
133 ) 134 )
134}; 135};
135 136
diff --git a/keyboards/handwired/traveller/traveller.h b/keyboards/handwired/traveller/traveller.h
index e3c096e4e..f78abe46a 100644
--- a/keyboards/handwired/traveller/traveller.h
+++ b/keyboards/handwired/traveller/traveller.h
@@ -5,10 +5,10 @@
5#define XXX KC_NO 5#define XXX KC_NO
6 6
7#define LAYOUT( \ 7#define LAYOUT( \
8 k00, k01, k02, k03, k04, k05, k07, k08, k09, k0A, k0B, k0C, \ 8 k00, k01, k02, k03, k04, k05, k07, k08, k09, k0A, k0B, k0C, \
9 k10, k11, k12, k13, k14, k15, k17, k18, k19, k1A, k1B, k1C, \ 9 k10, k11, k12, k13, k14, k15, k17, k18, k19, k1A, k1B, k1C, \
10 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, \ 10 k20, k21, k22, k23, k24, k25, k27, k28, k29, k2A, k2B, k2C, \
11 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C \ 11 k30, k31, k32, k33, k34, k35, k26, k36, k37, k38, k39, k3A, k3B, k3C \
12) { \ 12) { \
13 { k00, k01, k02, k03, k04, k05, XXX, k07, k08, k09, k0A, k0B, k0C }, \ 13 { k00, k01, k02, k03, k04, k05, XXX, k07, k08, k09, k0A, k0B, k0C }, \
14 { k10, k11, k12, k13, k14, k15, XXX, k17, k18, k19, k1A, k1B, k1C }, \ 14 { k10, k11, k12, k13, k14, k15, XXX, k17, k18, k19, k1A, k1B, k1C }, \
diff --git a/keyboards/handwired/symmetric70_proto/config.h b/keyboards/ianklug/grooveboard/config.h
index 2cdce5802..e42c5f14e 100644
--- a/keyboards/handwired/symmetric70_proto/config.h
+++ b/keyboards/ianklug/grooveboard/config.h
@@ -1,5 +1,5 @@
1/* 1/*
2Copyright 2020 mtei 2Copyright 2021 ianklug
3 3
4This program is free software: you can redistribute it and/or modify 4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by 5it under the terms of the GNU General Public License as published by
@@ -20,15 +20,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
20#include "config_common.h" 20#include "config_common.h"
21 21
22/* USB Device descriptor parameter */ 22/* USB Device descriptor parameter */
23#define VENDOR_ID 0xFEED 23#define VENDOR_ID 0x4B4C // "KL" = klug
24#define PRODUCT_ID 0x2BE5 24#define PRODUCT_ID 0x4742 // "GB" = grooveboard
25#define DEVICE_VER 0x0001 25#define DEVICE_VER 0x0001
26#define MANUFACTURER mtei 26#define MANUFACTURER ianklug
27#define PRODUCT Symmetric70 prototype 27#define PRODUCT grooveboard
28 28
29/* key matrix size */ 29/* key matrix size */
30#define MATRIX_ROWS 5 30#define MATRIX_ROWS 1
31#define MATRIX_COLS 16 31#define MATRIX_COLS 4
32 32
33/* 33/*
34 * Keyboard Matrix Assignments 34 * Keyboard Matrix Assignments
@@ -40,21 +40,26 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
40 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) 40 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
41 * 41 *
42 */ 42 */
43#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4 } 43//#define MATRIX_ROW_PINS { D0, D5 }
44#define MATRIX_COL_PINS { F4,F4,F5,F5, F6,F6,F7,F7, B6,B6,B2,B2, B3,B3,B1,B1 } 44//#define MATRIX_COL_PINS { F1, F0, B0 }
45#define DIRECT_PINS { \
46 { F7, F6, D1, D2 } \
47}
45#define UNUSED_PINS 48#define UNUSED_PINS
46 49
47#define MATRIX_MUL_SEL { 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0 }
48/* use 74HC157: quadruple 2-line to 1-line data selectors / multiplexers */
49#define MATRIX_MUL_SELECT B5 /* 74HC157 pin1:~A/B */
50
51/* COL2ROW, ROW2COL */ 50/* COL2ROW, ROW2COL */
52#define DIODE_DIRECTION COL2ROW 51//#define DIODE_DIRECTION COL2ROW
53 52
54/* 53/*
55 * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. 54 * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
56 */ 55 */
57#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6 56//#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
57
58//#define LED_NUM_LOCK_PIN B0
59//#define LED_CAPS_LOCK_PIN B1
60//#define LED_SCROLL_LOCK_PIN B2
61//#define LED_COMPOSE_PIN B3
62//#define LED_KANA_PIN B4
58 63
59//#define BACKLIGHT_PIN B7 64//#define BACKLIGHT_PIN B7
60//#define BACKLIGHT_LEVELS 3 65//#define BACKLIGHT_LEVELS 3
@@ -148,3 +153,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
148/* Bootmagic Lite key configuration */ 153/* Bootmagic Lite key configuration */
149//#define BOOTMAGIC_LITE_ROW 0 154//#define BOOTMAGIC_LITE_ROW 0
150//#define BOOTMAGIC_LITE_COLUMN 0 155//#define BOOTMAGIC_LITE_COLUMN 0
156
157#define USB_POLLING_INTERVAL_MS 1
158#define QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/ianklug/grooveboard/grooveboard.c b/keyboards/ianklug/grooveboard/grooveboard.c
new file mode 100644
index 000000000..711e9f301
--- /dev/null
+++ b/keyboards/ianklug/grooveboard/grooveboard.c
@@ -0,0 +1,17 @@
1/* Copyright 2021 ianklug
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
17#include "grooveboard.h"
diff --git a/keyboards/ianklug/grooveboard/grooveboard.h b/keyboards/ianklug/grooveboard/grooveboard.h
new file mode 100644
index 000000000..51f519e8a
--- /dev/null
+++ b/keyboards/ianklug/grooveboard/grooveboard.h
@@ -0,0 +1,33 @@
1/* Copyright 2021 ianklug
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
17#pragma once
18
19#include "quantum.h"
20
21/* This is a shortcut to help you visually see your layout.
22 *
23 * The first section contains all of the arguments representing the physical
24 * layout of the board and position of the keys.
25 *
26 * The second converts the arguments into a two-dimensional array which
27 * represents the switch matrix.
28 */
29#define LAYOUT( \
30 k00, k01, k02, k03 \
31) { \
32 { k00, k01, k02, k03 } \
33}
diff --git a/keyboards/ianklug/grooveboard/info.json b/keyboards/ianklug/grooveboard/info.json
new file mode 100644
index 000000000..925e3ddbb
--- /dev/null
+++ b/keyboards/ianklug/grooveboard/info.json
@@ -0,0 +1,17 @@
1{
2 "keyboard_name": "grooveboard",
3 "url": "https://github.com/ianklug/grooveboard",
4 "maintainer": "ianklug",
5 "width": 6,
6 "height": 1,
7 "layouts": {
8 "LAYOUT": {
9 "layout": [
10 {"label": "k00", "x": 0, "y": 0, "w": 1, "h": 1},
11 {"label": "k01", "x": 1, "y": 0, "w": 1, "h": 1},
12 {"label": "k02", "x": 4, "y": 0, "w": 1, "h": 1},
13 {"label": "k03", "x": 5, "y": 0, "w": 1, "h": 1}
14 ]
15 }
16 }
17}
diff --git a/keyboards/ianklug/grooveboard/keymaps/default/keymap.c b/keyboards/ianklug/grooveboard/keymaps/default/keymap.c
new file mode 100644
index 000000000..643d9f1d1
--- /dev/null
+++ b/keyboards/ianklug/grooveboard/keymaps/default/keymap.c
@@ -0,0 +1,28 @@
1/* Copyright 2021 ianklug
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// Defines names for use in layer keycodes and the keymap
19enum layer_names {
20 _BASE
21};
22
23const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
24 /* Base */
25 [_BASE] = LAYOUT(
26 KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
27 )
28}; \ No newline at end of file
diff --git a/keyboards/ianklug/grooveboard/keymaps/default/readme.md b/keyboards/ianklug/grooveboard/keymaps/default/readme.md
new file mode 100644
index 000000000..95ec856a5
--- /dev/null
+++ b/keyboards/ianklug/grooveboard/keymaps/default/readme.md
@@ -0,0 +1 @@
# The default keymap for grooveboard
diff --git a/keyboards/ianklug/grooveboard/keymaps/via/keymap.c b/keyboards/ianklug/grooveboard/keymaps/via/keymap.c
new file mode 100644
index 000000000..40546c131
--- /dev/null
+++ b/keyboards/ianklug/grooveboard/keymaps/via/keymap.c
@@ -0,0 +1,37 @@
1/* Copyright 2021 ianklug
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// Defines names for use in layer keycodes and the keymap
19enum layer_names {
20 _BASE
21};
22
23const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
24 /* Base */
25 [_BASE] = LAYOUT(
26 KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
27 ),
28 [1] = LAYOUT(
29 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
30 ),
31 [2] = LAYOUT(
32 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
33 ),
34 [3] = LAYOUT(
35 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
36 )
37};
diff --git a/keyboards/ianklug/grooveboard/keymaps/via/readme.md b/keyboards/ianklug/grooveboard/keymaps/via/readme.md
new file mode 100644
index 000000000..0963f48e6
--- /dev/null
+++ b/keyboards/ianklug/grooveboard/keymaps/via/readme.md
@@ -0,0 +1 @@
# The via keymap for grooveboard
diff --git a/keyboards/ianklug/grooveboard/keymaps/via/rules.mk b/keyboards/ianklug/grooveboard/keymaps/via/rules.mk
new file mode 100644
index 000000000..36b7ba9cb
--- /dev/null
+++ b/keyboards/ianklug/grooveboard/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
1VIA_ENABLE = yes
2LTO_ENABLE = yes
diff --git a/keyboards/ianklug/grooveboard/readme.md b/keyboards/ianklug/grooveboard/readme.md
new file mode 100644
index 000000000..7ea6456e3
--- /dev/null
+++ b/keyboards/ianklug/grooveboard/readme.md
@@ -0,0 +1,21 @@
1# Grooveboard
2
3A four-key mechanical keyboard for rhythm games.
4
5![Grooveboard Choc PCB](https://i.imgur.com/wbMkbHX.jpg)
6
7* Keyboard Maintainer: [ianklug](https://github.com/ianklug)
8* Hardware Supported: grooveboard, grooveboard mx, grooveboard choc
9* Hardware Availability: https://github.com/ianklug/grooveboard
10
11Press the button on the back of the keyboard to enter bootloader mode.
12
13Make example for this keyboard (after setting up your build environment):
14
15 make ianklug/grooveboard:default
16
17Flashing example for this keyboard:
18
19 make ianklug/grooveboard:default:flash
20
21See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/ianklug/grooveboard/rules.mk b/keyboards/ianklug/grooveboard/rules.mk
new file mode 100644
index 000000000..5c0d8f307
--- /dev/null
+++ b/keyboards/ianklug/grooveboard/rules.mk
@@ -0,0 +1,22 @@
1# MCU name
2MCU = atmega32u4
3
4# Bootloader selection
5BOOTLOADER = atmel-dfu
6
7# Build Options
8# change yes to no to disable
9#
10BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
11MOUSEKEY_ENABLE = yes # Mouse keys
12EXTRAKEY_ENABLE = yes # Audio control and System control
13CONSOLE_ENABLE = no # Console for debug
14COMMAND_ENABLE = no # Commands for debug and configuration
15# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
16SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
17# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
18NKRO_ENABLE = no # USB Nkey Rollover
19BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
20RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
21BLUETOOTH_ENABLE = no # Enable Bluetooth
22AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/lucid/phantom_solder/keymaps/default/keymap.c b/keyboards/lucid/phantom_solder/keymaps/default/keymap.c
index 2647d1a1b..6c8606393 100644
--- a/keyboards/lucid/phantom_solder/keymaps/default/keymap.c
+++ b/keyboards/lucid/phantom_solder/keymaps/default/keymap.c
@@ -22,18 +22,18 @@ enum layers {
22const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 22const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
23 23
24 [_LAYER0] = LAYOUT_all( 24 [_LAYER0] = LAYOUT_all(
25 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, 25 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_GRV,
26 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, 26 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
27 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_ENT, KC_DEL, KC_PGDN, 27 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_ENT, KC_PGDN,
28 KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, 28 KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
29 KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT 29 KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
30 ), 30 ),
31 31
32 [_LAYER1] = LAYOUT_all( 32 [_LAYER1] = LAYOUT_all(
33 KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, KC_DEL, 33 KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, KC_DEL, KC_TRNS,
34 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUSE, RESET, KC_PGUP, 34 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_PGUP, KC_TRNS,
35 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_PGDN, 35 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_PGDN,
36 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_AUDIO_VOL_UP, KC_AUDIO_MUTE, 36 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MUTE,
37 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK 37 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT
38 ) 38 )
39}; 39};
diff --git a/keyboards/lucid/phantom_solder/keymaps/via/keymap.c b/keyboards/lucid/phantom_solder/keymaps/via/keymap.c
index ca288fa0b..afc8ae550 100644
--- a/keyboards/lucid/phantom_solder/keymaps/via/keymap.c
+++ b/keyboards/lucid/phantom_solder/keymaps/via/keymap.c
@@ -24,35 +24,34 @@ enum layers {
24const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 24const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
25 25
26 [_LAYER0] = LAYOUT_all( 26 [_LAYER0] = LAYOUT_all(
27 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, 27 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_GRV,
28 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, 28 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
29 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_ENT, KC_DEL, KC_PGDN, 29 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_ENT, KC_PGDN,
30 KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, 30 KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
31 KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT 31 KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
32 ), 32 ),
33 33
34 [_LAYER1] = LAYOUT_all( 34 [_LAYER1] = LAYOUT_all(
35 KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, KC_DEL, 35 KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, KC_TRNS, KC_DEL,
36 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUSE, RESET, KC_PGUP, 36 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUSE,RESET, KC_PGUP,
37 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_PGDN, 37 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_PGDN,
38 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_AUDIO_VOL_UP, KC_AUDIO_MUTE, 38 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MUTE,
39 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK 39 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT
40 ), 40 ),
41 41
42 [_LAYER2] = LAYOUT_all( 42 [_LAYER2] = LAYOUT_all(
43 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,
43 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, 44 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,
44 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, 45 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,
45 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, 46 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,
46 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, 47 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
47 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
48 ), 48 ),
49 49
50 [_LAYER3] = LAYOUT_all( 50 [_LAYER3] = LAYOUT_all(
51 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,
51 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, 52 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,
52 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, 53 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,
53 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, 54 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,
54 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, 55 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
55 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
56 ) 56 )
57 57};
58}; \ No newline at end of file
diff --git a/keyboards/lucid/phantom_solder/phantom_solder.h b/keyboards/lucid/phantom_solder/phantom_solder.h
index 7df6335b6..243684e78 100644
--- a/keyboards/lucid/phantom_solder/phantom_solder.h
+++ b/keyboards/lucid/phantom_solder/phantom_solder.h
@@ -18,11 +18,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
18 18
19/* Phantom Keymap Definitions */ 19/* Phantom Keymap Definitions */
20#define LAYOUT_all( \ 20#define LAYOUT_all( \
21 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \ 21 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, K0E, \
22 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \ 22 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
23 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, \ 23 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \
24 K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \ 24 K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
25 K40, K41, K42, K43, K46, K48, K49, K4A, K4C, K4D, K4E \ 25 K40, K41, K42, K43, K46, K48, K49, K4A, K4C, K4D, K4E \
26) { \ 26) { \
27 { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \ 27 { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
28 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \ 28 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
diff --git a/keyboards/massdrop/alt/matrix.c b/keyboards/massdrop/alt/matrix.c
index f635f37f2..181f223e4 100644
--- a/keyboards/massdrop/alt/matrix.c
+++ b/keyboards/massdrop/alt/matrix.c
@@ -16,167 +16,61 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/ 16*/
17 17
18#include "alt.h" 18#include "alt.h"
19
20#include "d51_util.h" 19#include "d51_util.h"
21#include "debug.h"
22#include "clks.h"
23#include <string.h>
24
25#ifndef MATRIX_IO_DELAY
26# define MATRIX_IO_DELAY 1
27#endif
28
29matrix_row_t mlatest[MATRIX_ROWS];
30matrix_row_t mlast[MATRIX_ROWS];
31matrix_row_t mdebounced[MATRIX_ROWS];
32
33uint8_t row_ports[] = { MATRIX_ROW_PORTS };
34uint8_t row_pins[] = { MATRIX_ROW_PINS };
35uint8_t col_ports[] = { MATRIX_COL_PORTS };
36uint8_t col_pins[] = { MATRIX_COL_PINS };
37uint32_t row_masks[2]; //NOTE: If more than PA PB used in the future, adjust code to accomodate
38 20
39__attribute__((weak)) void matrix_io_delay(void) { wait_us(MATRIX_IO_DELAY); } 21const uint8_t row_ports[] = {MATRIX_ROW_PORTS};
40 22const uint8_t row_pins[] = {MATRIX_ROW_PINS};
41__attribute__ ((weak)) 23const uint8_t col_ports[] = {MATRIX_COL_PORTS};
42void matrix_init_kb(void) { 24const uint8_t col_pins[] = {MATRIX_COL_PINS};
43 matrix_init_user(); 25uint32_t row_masks[2]; // NOTE: If more than PA PB used in the future, adjust code to accommodate
44}
45
46__attribute__ ((weak))
47void matrix_scan_kb(void) {
48 matrix_scan_user();
49}
50
51__attribute__ ((weak))
52void matrix_init_user(void) {
53}
54
55__attribute__ ((weak))
56void matrix_scan_user(void) {
57}
58
59void matrix_init(void)
60{
61 memset(mlatest, 0, MATRIX_ROWS * sizeof(matrix_row_t));
62 memset(mlast, 0, MATRIX_ROWS * sizeof(matrix_row_t));
63 memset(mdebounced, 0, MATRIX_ROWS * sizeof(matrix_row_t));
64 26
27void matrix_init_custom(void) {
65 row_masks[PA] = 0; 28 row_masks[PA] = 0;
66 row_masks[PB] = 0; 29 row_masks[PB] = 0;
67 30
68 uint8_t row; 31 for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
69 for (row = 0; row < MATRIX_ROWS; row++) 32 PORT->Group[row_ports[row]].DIRCLR.reg = 1 << row_pins[row]; // Input
70 { 33 PORT->Group[row_ports[row]].OUTCLR.reg = 1 << row_pins[row]; // Low
71 PORT->Group[row_ports[row]].DIRCLR.reg = 1 << row_pins[row]; //Input 34 PORT->Group[row_ports[row]].PINCFG[row_pins[row]].bit.INEN = 1; // Input Enable,
72 PORT->Group[row_ports[row]].OUTCLR.reg = 1 << row_pins[row]; //Low 35 PORT->Group[row_ports[row]].PINCFG[row_pins[row]].bit.PULLEN = 1; // Pull Enable
73 PORT->Group[row_ports[row]].PINCFG[row_pins[row]].bit.INEN = 1; //Input Enable, 36 row_masks[row_ports[row]] |= 1 << row_pins[row]; // Add pin to proper row mask
74 PORT->Group[row_ports[row]].PINCFG[row_pins[row]].bit.PULLEN = 1; //Pull Enable
75 row_masks[row_ports[row]] |= 1 << row_pins[row]; //Add pin to proper row mask
76 } 37 }
77 38
78 uint8_t col; 39 for (uint8_t col = 0; col < MATRIX_COLS; col++) {
79 for (col = 0; col < MATRIX_COLS; col++) 40 PORT->Group[col_ports[col]].DIRSET.reg = 1 << col_pins[col]; // Output
80 { 41 PORT->Group[col_ports[col]].OUTCLR.reg = 1 << col_pins[col]; // Low
81 PORT->Group[col_ports[col]].DIRSET.reg = 1 << col_pins[col]; //Output
82 PORT->Group[col_ports[col]].OUTCLR.reg = 1 << col_pins[col]; //Low
83 } 42 }
84
85 matrix_init_quantum();
86} 43}
87 44
88uint64_t mdebouncing = 0; 45bool matrix_scan_custom(matrix_row_t current_matrix[]) {
89uint8_t matrix_scan(void) 46 matrix_row_t raw[MATRIX_ROWS] = {0};
90{ 47 uint32_t scans[2]; // PA PB
91 uint8_t mchanged;
92 uint8_t row;
93 uint8_t col;
94 uint32_t scans[2]; //PA PB
95
96 if (timer_read64() < mdebouncing) return 1; //mdebouncing == 0 when no debouncing active
97 48
98 memset(mlatest, 0, MATRIX_ROWS * sizeof(matrix_row_t)); //Zero the result buffer 49 for (uint8_t col = 0; col < MATRIX_COLS; col++) {
50 PORT->Group[col_ports[col]].OUTSET.reg = 1 << col_pins[col]; // Set col output
99 51
100 for (col = 0; col < MATRIX_COLS; col++) 52 matrix_io_delay(); // Delay for output
101 {
102 PORT->Group[col_ports[col]].OUTSET.reg = 1 << col_pins[col]; //Set col output
103 53
104 matrix_io_delay(); //Delay for output 54 scans[PA] = PORT->Group[PA].IN.reg & row_masks[PA]; // Read PA row pins data
55 scans[PB] = PORT->Group[PB].IN.reg & row_masks[PB]; // Read PB row pins data
105 56
106 scans[PA] = PORT->Group[PA].IN.reg & row_masks[PA]; //Read PA row pins data 57 PORT->Group[col_ports[col]].OUTCLR.reg = 1 << col_pins[col]; // Clear col output
107 scans[PB] = PORT->Group[PB].IN.reg & row_masks[PB]; //Read PB row pins data
108 58
109 PORT->Group[col_ports[col]].OUTCLR.reg = 1 << col_pins[col]; //Clear col output 59 for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
110 60 // Move scan bits from scans array into proper row bit locations
111 for (row = 0; row < MATRIX_ROWS; row++) 61 if (scans[row_ports[row]] & (1 << row_pins[row])) {
112 { 62 raw[row] |= 1 << col;
113 //Move scan bits from scans array into proper row bit locations 63 }
114 if (scans[row_ports[row]] & (1 << row_pins[row]))
115 mlatest[row] |= 1 << col;
116 } 64 }
117 } 65 }
118 66
119 mchanged = 0; //Default to no matrix change since last 67 bool changed = false;
120 68 for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
121 for (row = 0; row < MATRIX_ROWS; row++) 69 if (current_matrix[row] != raw[row]) {
122 { 70 current_matrix[row] = raw[row];
123 if (mlast[row] != mlatest[row]) 71 changed = true;
124 mchanged = 1;
125 mlast[row] = mlatest[row];
126 }
127
128 if (!mchanged)
129 {
130 for (row = 0; row < MATRIX_ROWS; row++)
131 mdebounced[row] = mlatest[row];
132 mdebouncing = 0;
133 }
134 else
135 {
136 //Begin or extend debounce on change
137 mdebouncing = timer_read64() + DEBOUNCE;
138 }
139
140 matrix_scan_quantum();
141
142 return 1;
143}
144
145matrix_row_t matrix_get_row(uint8_t row)
146{
147 return mdebounced[row];
148}
149
150void matrix_print(void)
151{
152 char buf[(MATRIX_COLS+8)*(MATRIX_ROWS+1)] = "R C";
153 char *pbuf = buf+3;
154 uint32_t cols;
155 uint32_t rows;
156 matrix_row_t row;
157
158 for (cols = 1; cols <= MATRIX_COLS; cols++)
159 {
160 *pbuf = (cols%10)+48;
161 pbuf++;
162 }
163 *pbuf = '\r'; pbuf++;
164 *pbuf = '\n'; pbuf++;
165
166 for (rows = 1; rows <= MATRIX_ROWS; rows++)
167 {
168 row = matrix_get_row(rows-1);
169 if (rows < 10) { *pbuf = rows+48; pbuf++; *pbuf = ' '; pbuf++; *pbuf = ' '; pbuf++; }
170 else { *pbuf = (rows/10)+48; pbuf++; *pbuf = (rows%10)+48; pbuf++; *pbuf = ' '; pbuf++; }
171 for (cols = 0; cols < MATRIX_COLS; cols++)
172 {
173 if (row & 1 << cols) *pbuf = 'X';
174 else *pbuf = '.';
175 pbuf++;
176 } 72 }
177 *pbuf = '\r'; pbuf++;
178 *pbuf = '\n'; pbuf++;
179 } 73 }
180 *pbuf = 0; 74
181 dprint(buf); 75 return changed;
182} 76}
diff --git a/keyboards/massdrop/alt/rules.mk b/keyboards/massdrop/alt/rules.mk
index 538df480b..86403d830 100644
--- a/keyboards/massdrop/alt/rules.mk
+++ b/keyboards/massdrop/alt/rules.mk
@@ -6,7 +6,7 @@ SRC += config_led.c
6ARM_ATSAM = SAMD51J18A 6ARM_ATSAM = SAMD51J18A
7MCU = cortex-m4 7MCU = cortex-m4
8 8
9CUSTOM_MATRIX = yes 9CUSTOM_MATRIX = lite
10 10
11# Build Options 11# Build Options
12# comment out to disable the options. 12# comment out to disable the options.
diff --git a/keyboards/massdrop/ctrl/matrix.c b/keyboards/massdrop/ctrl/matrix.c
index 713fb89f6..a542d18c2 100644
--- a/keyboards/massdrop/ctrl/matrix.c
+++ b/keyboards/massdrop/ctrl/matrix.c
@@ -16,167 +16,61 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/ 16*/
17 17
18#include "ctrl.h" 18#include "ctrl.h"
19
20#include "d51_util.h" 19#include "d51_util.h"
21#include "debug.h"
22#include "clks.h"
23#include <string.h>
24
25#ifndef MATRIX_IO_DELAY
26# define MATRIX_IO_DELAY 1
27#endif
28
29matrix_row_t mlatest[MATRIX_ROWS];
30matrix_row_t mlast[MATRIX_ROWS];
31matrix_row_t mdebounced[MATRIX_ROWS];
32
33uint8_t row_ports[] = { MATRIX_ROW_PORTS };
34uint8_t row_pins[] = { MATRIX_ROW_PINS };
35uint8_t col_ports[] = { MATRIX_COL_PORTS };
36uint8_t col_pins[] = { MATRIX_COL_PINS };
37uint32_t row_masks[2]; //NOTE: If more than PA PB used in the future, adjust code to accomodate
38 20
39__attribute__((weak)) void matrix_io_delay(void) { wait_us(MATRIX_IO_DELAY); } 21const uint8_t row_ports[] = {MATRIX_ROW_PORTS};
40 22const uint8_t row_pins[] = {MATRIX_ROW_PINS};
41__attribute__ ((weak)) 23const uint8_t col_ports[] = {MATRIX_COL_PORTS};
42void matrix_init_kb(void) { 24const uint8_t col_pins[] = {MATRIX_COL_PINS};
43 matrix_init_user(); 25uint32_t row_masks[2]; // NOTE: If more than PA PB used in the future, adjust code to accommodate
44}
45
46__attribute__ ((weak))
47void matrix_scan_kb(void) {
48 matrix_scan_user();
49}
50
51__attribute__ ((weak))
52void matrix_init_user(void) {
53}
54
55__attribute__ ((weak))
56void matrix_scan_user(void) {
57}
58
59void matrix_init(void)
60{
61 memset(mlatest, 0, MATRIX_ROWS * sizeof(matrix_row_t));
62 memset(mlast, 0, MATRIX_ROWS * sizeof(matrix_row_t));
63 memset(mdebounced, 0, MATRIX_ROWS * sizeof(matrix_row_t));
64 26
27void matrix_init_custom(void) {
65 row_masks[PA] = 0; 28 row_masks[PA] = 0;
66 row_masks[PB] = 0; 29 row_masks[PB] = 0;
67 30
68 uint8_t row; 31 for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
69 for (row = 0; row < MATRIX_ROWS; row++) 32 PORT->Group[row_ports[row]].DIRCLR.reg = 1 << row_pins[row]; // Input
70 { 33 PORT->Group[row_ports[row]].OUTCLR.reg = 1 << row_pins[row]; // Low
71 PORT->Group[row_ports[row]].DIRCLR.reg = 1 << row_pins[row]; //Input 34 PORT->Group[row_ports[row]].PINCFG[row_pins[row]].bit.INEN = 1; // Input Enable,
72 PORT->Group[row_ports[row]].OUTCLR.reg = 1 << row_pins[row]; //Low 35 PORT->Group[row_ports[row]].PINCFG[row_pins[row]].bit.PULLEN = 1; // Pull Enable
73 PORT->Group[row_ports[row]].PINCFG[row_pins[row]].bit.INEN = 1; //Input Enable, 36 row_masks[row_ports[row]] |= 1 << row_pins[row]; // Add pin to proper row mask
74 PORT->Group[row_ports[row]].PINCFG[row_pins[row]].bit.PULLEN = 1; //Pull Enable
75 row_masks[row_ports[row]] |= 1 << row_pins[row]; //Add pin to proper row mask
76 } 37 }
77 38
78 uint8_t col; 39 for (uint8_t col = 0; col < MATRIX_COLS; col++) {
79 for (col = 0; col < MATRIX_COLS; col++) 40 PORT->Group[col_ports[col]].DIRSET.reg = 1 << col_pins[col]; // Output
80 { 41 PORT->Group[col_ports[col]].OUTCLR.reg = 1 << col_pins[col]; // Low
81 PORT->Group[col_ports[col]].DIRSET.reg = 1 << col_pins[col]; //Output
82 PORT->Group[col_ports[col]].OUTCLR.reg = 1 << col_pins[col]; //Low
83 } 42 }
84
85 matrix_init_quantum();
86} 43}
87 44
88uint64_t mdebouncing = 0; 45bool matrix_scan_custom(matrix_row_t current_matrix[]) {
89uint8_t matrix_scan(void) 46 matrix_row_t raw[MATRIX_ROWS] = {0};
90{ 47 uint32_t scans[2]; // PA PB
91 uint8_t mchanged;
92 uint8_t row;
93 uint8_t col;
94 uint32_t scans[2]; //PA PB
95
96 if (timer_read64() < mdebouncing) return 1; //mdebouncing == 0 when no debouncing active
97 48
98 memset(mlatest, 0, MATRIX_ROWS * sizeof(matrix_row_t)); //Zero the result buffer 49 for (uint8_t col = 0; col < MATRIX_COLS; col++) {
50 PORT->Group[col_ports[col]].OUTSET.reg = 1 << col_pins[col]; // Set col output
99 51
100 for (col = 0; col < MATRIX_COLS; col++) 52 matrix_io_delay(); // Delay for output
101 {
102 PORT->Group[col_ports[col]].OUTSET.reg = 1 << col_pins[col]; //Set col output
103 53
104 matrix_io_delay(); //Delay for output 54 scans[PA] = PORT->Group[PA].IN.reg & row_masks[PA]; // Read PA row pins data
55 scans[PB] = PORT->Group[PB].IN.reg & row_masks[PB]; // Read PB row pins data
105 56
106 scans[PA] = PORT->Group[PA].IN.reg & row_masks[PA]; //Read PA row pins data 57 PORT->Group[col_ports[col]].OUTCLR.reg = 1 << col_pins[col]; // Clear col output
107 scans[PB] = PORT->Group[PB].IN.reg & row_masks[PB]; //Read PB row pins data
108 58
109 PORT->Group[col_ports[col]].OUTCLR.reg = 1 << col_pins[col]; //Clear col output 59 for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
110 60 // Move scan bits from scans array into proper row bit locations
111 for (row = 0; row < MATRIX_ROWS; row++) 61 if (scans[row_ports[row]] & (1 << row_pins[row])) {
112 { 62 raw[row] |= 1 << col;
113 //Move scan bits from scans array into proper row bit locations 63 }
114 if (scans[row_ports[row]] & (1 << row_pins[row]))
115 mlatest[row] |= 1 << col;
116 } 64 }
117 } 65 }
118 66
119 mchanged = 0; //Default to no matrix change since last 67 bool changed = false;
120 68 for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
121 for (row = 0; row < MATRIX_ROWS; row++) 69 if (current_matrix[row] != raw[row]) {
122 { 70 current_matrix[row] = raw[row];
123 if (mlast[row] != mlatest[row]) 71 changed = true;
124 mchanged = 1;
125 mlast[row] = mlatest[row];
126 }
127
128 if (!mchanged)
129 {
130 for (row = 0; row < MATRIX_ROWS; row++)
131 mdebounced[row] = mlatest[row];
132 mdebouncing = 0;
133 }
134 else
135 {
136 //Begin or extend debounce on change
137 mdebouncing = timer_read64() + DEBOUNCE;
138 }
139
140 matrix_scan_quantum();
141
142 return 1;
143}
144
145matrix_row_t matrix_get_row(uint8_t row)
146{
147 return mdebounced[row];
148}
149
150void matrix_print(void)
151{
152 char buf[(MATRIX_COLS+8)*(MATRIX_ROWS+1)] = "R C";
153 char *pbuf = buf+3;
154 uint32_t cols;
155 uint32_t rows;
156 matrix_row_t row;
157
158 for (cols = 1; cols <= MATRIX_COLS; cols++)
159 {
160 *pbuf = (cols%10)+48;
161 pbuf++;
162 }
163 *pbuf = '\r'; pbuf++;
164 *pbuf = '\n'; pbuf++;
165
166 for (rows = 1; rows <= MATRIX_ROWS; rows++)
167 {
168 row = matrix_get_row(rows-1);
169 if (rows < 10) { *pbuf = rows+48; pbuf++; *pbuf = ' '; pbuf++; *pbuf = ' '; pbuf++; }
170 else { *pbuf = (rows/10)+48; pbuf++; *pbuf = (rows%10)+48; pbuf++; *pbuf = ' '; pbuf++; }
171 for (cols = 0; cols < MATRIX_COLS; cols++)
172 {
173 if (row & 1 << cols) *pbuf = 'X';
174 else *pbuf = '.';
175 pbuf++;
176 } 72 }
177 *pbuf = '\r'; pbuf++;
178 *pbuf = '\n'; pbuf++;
179 } 73 }
180 *pbuf = 0; 74
181 dprint(buf); 75 return changed;
182} 76}
diff --git a/keyboards/massdrop/ctrl/rules.mk b/keyboards/massdrop/ctrl/rules.mk
index 970e5a05c..f58042b75 100644
--- a/keyboards/massdrop/ctrl/rules.mk
+++ b/keyboards/massdrop/ctrl/rules.mk
@@ -6,7 +6,7 @@ SRC += config_led.c
6ARM_ATSAM = SAMD51J18A 6ARM_ATSAM = SAMD51J18A
7MCU = cortex-m4 7MCU = cortex-m4
8 8
9CUSTOM_MATRIX = yes 9CUSTOM_MATRIX = lite
10 10
11# Build Options 11# Build Options
12# comment out to disable the options. 12# comment out to disable the options.
diff --git a/keyboards/mechlovin/infinity87/rev1/rogue87/info.json b/keyboards/mechlovin/infinity87/rev1/rogue87/info.json
index 3d541cfb7..4a8d73e9c 100644
--- a/keyboards/mechlovin/infinity87/rev1/rogue87/info.json
+++ b/keyboards/mechlovin/infinity87/rev1/rogue87/info.json
@@ -5,7 +5,7 @@
5 "width": 18.25, 5 "width": 18.25,
6 "height": 6.25, 6 "height": 6.25,
7 "layouts": { 7 "layouts": {
8 "LAYOUT": { 8 "LAYOUT_all": {
9 "layout": [ 9 "layout": [
10 {"label":"K00", "x":0, "y":0}, 10 {"label":"K00", "x":0, "y":0},
11 {"label":"K01", "x":2, "y":0}, 11 {"label":"K01", "x":2, "y":0},
diff --git a/keyboards/mechlovin/infinity87/rev1/rouge87/info.json b/keyboards/mechlovin/infinity87/rev1/rouge87/info.json
index 8317e9351..fb5a01f6c 100644
--- a/keyboards/mechlovin/infinity87/rev1/rouge87/info.json
+++ b/keyboards/mechlovin/infinity87/rev1/rouge87/info.json
@@ -5,7 +5,7 @@
5 "width": 18.25, 5 "width": 18.25,
6 "height": 6.25, 6 "height": 6.25,
7 "layouts": { 7 "layouts": {
8 "LAYOUT": { 8 "LAYOUT_all": {
9 "layout": [ 9 "layout": [
10 {"label":"K00", "x":0, "y":0}, 10 {"label":"K00", "x":0, "y":0},
11 {"label":"K01", "x":2, "y":0}, 11 {"label":"K01", "x":2, "y":0},
diff --git a/keyboards/melgeek/mj6xy/config.h b/keyboards/melgeek/mj6xy/config.h
new file mode 100755
index 000000000..4a6336c1c
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/config.h
@@ -0,0 +1,40 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#pragma once
18
19#include "config_common.h"
20
21/* USB Device descriptor parameter */
22#define VENDOR_ID 0xEDED
23#define PRODUCT_ID 0x6060
24#define DEVICE_VER 0x0001
25#define MANUFACTURER MelGeek
26#define PRODUCT MJ6XY
27
28/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
29#define DEBOUNCE 3
30
31
32
33/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
34#define LOCKING_SUPPORT_ENABLE
35/* Locking resynchronize hack */
36#define LOCKING_RESYNC_ENABLE
37
38/* VIA related config */
39#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 2
40
diff --git a/keyboards/melgeek/mj6xy/info.json b/keyboards/melgeek/mj6xy/info.json
new file mode 100755
index 000000000..5f0db8e1a
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/info.json
@@ -0,0 +1,3472 @@
1{
2 "keyboard_name": "MJ6XY",
3 "url": "",
4 "maintainer": "melgeek001365",
5 "width": 15,
6 "height": 5,
7 "layouts": {
8 "LAYOUT_60_ansi": {
9 "layout": [
10 {"x": 0, "y": 0},
11 {"x": 1, "y": 0},
12 {"x": 2, "y": 0},
13 {"x": 3, "y": 0},
14 {"x": 4, "y": 0},
15 {"x": 5, "y": 0},
16 {"x": 6, "y": 0},
17 {"x": 7, "y": 0},
18 {"x": 8, "y": 0},
19 {"x": 9, "y": 0},
20 {"x": 10, "y": 0},
21 {"x": 11, "y": 0},
22 {"x": 12, "y": 0},
23 {"x": 13, "y": 0, "w": 2},
24
25 {"x": 0, "y": 1, "w": 1.5},
26 {"x": 1.5, "y": 1},
27 {"x": 2.5, "y": 1},
28 {"x": 3.5, "y": 1},
29 {"x": 4.5, "y": 1},
30 {"x": 5.5, "y": 1},
31 {"x": 6.5, "y": 1},
32 {"x": 7.5, "y": 1},
33 {"x": 8.5, "y": 1},
34 {"x": 9.5, "y": 1},
35 {"x": 10.5, "y": 1},
36 {"x": 11.5, "y": 1},
37 {"x": 12.5, "y": 1},
38 {"x": 13.5, "y": 1, "w": 1.5},
39
40 {"x": 0, "y": 2, "w": 1.75},
41 {"x": 1.75, "y": 2},
42 {"x": 2.75, "y": 2},
43 {"x": 3.75, "y": 2},
44 {"x": 4.75, "y": 2},
45 {"x": 5.75, "y": 2},
46 {"x": 6.75, "y": 2},
47 {"x": 7.75, "y": 2},
48 {"x": 8.75, "y": 2},
49 {"x": 9.75, "y": 2},
50 {"x": 10.75, "y": 2},
51 {"x": 11.75, "y": 2},
52 {"x": 12.75, "y": 2, "w": 2.25},
53
54 {"x": 0, "y": 3, "w": 2.25},
55 {"x": 2.25, "y": 3},
56 {"x": 3.25, "y": 3},
57 {"x": 4.25, "y": 3},
58 {"x": 5.25, "y": 3},
59 {"x": 6.25, "y": 3},
60 {"x": 7.25, "y": 3},
61 {"x": 8.25, "y": 3},
62 {"x": 9.25, "y": 3},
63 {"x": 10.25, "y": 3},
64 {"x": 11.25, "y": 3},
65 {"x": 12.25, "y": 3, "w": 2.75},
66
67 {"x": 0, "y": 4, "w": 1.25},
68 {"x": 1.25, "y": 4, "w": 1.25},
69 {"x": 2.5, "y": 4, "w": 1.25},
70 {"x": 3.75, "y": 4, "w": 6.25},
71 {"x": 10, "y": 4, "w": 1.25},
72 {"x": 11.25, "y": 4, "w": 1.25},
73 {"x": 12.5, "y": 4, "w": 1.25},
74 {"x": 13.75, "y": 4, "w": 1.25}
75 ]
76 },
77 "LAYOUT_60_ansi_arrow": {
78 "layout": [
79 {"x": 0, "y": 0},
80 {"x": 1, "y": 0},
81 {"x": 2, "y": 0},
82 {"x": 3, "y": 0},
83 {"x": 4, "y": 0},
84 {"x": 5, "y": 0},
85 {"x": 6, "y": 0},
86 {"x": 7, "y": 0},
87 {"x": 8, "y": 0},
88 {"x": 9, "y": 0},
89 {"x": 10, "y": 0},
90 {"x": 11, "y": 0},
91 {"x": 12, "y": 0},
92 {"x": 13, "y": 0, "w": 2},
93
94 {"x": 0, "y": 1, "w": 1.5},
95 {"x": 1.5, "y": 1},
96 {"x": 2.5, "y": 1},
97 {"x": 3.5, "y": 1},
98 {"x": 4.5, "y": 1},
99 {"x": 5.5, "y": 1},
100 {"x": 6.5, "y": 1},
101 {"x": 7.5, "y": 1},
102 {"x": 8.5, "y": 1},
103 {"x": 9.5, "y": 1},
104 {"x": 10.5, "y": 1},
105 {"x": 11.5, "y": 1},
106 {"x": 12.5, "y": 1},
107 {"x": 13.5, "y": 1, "w": 1.5},
108
109 {"x": 0, "y": 2, "w": 1.75},
110 {"x": 1.75, "y": 2},
111 {"x": 2.75, "y": 2},
112 {"x": 3.75, "y": 2},
113 {"x": 4.75, "y": 2},
114 {"x": 5.75, "y": 2},
115 {"x": 6.75, "y": 2},
116 {"x": 7.75, "y": 2},
117 {"x": 8.75, "y": 2},
118 {"x": 9.75, "y": 2},
119 {"x": 10.75, "y": 2},
120 {"x": 11.75, "y": 2},
121 {"x": 12.75, "y": 2, "w": 2.25},
122
123 {"x": 0, "y": 3, "w": 2.25},
124 {"x": 2.25, "y": 3},
125 {"x": 3.25, "y": 3},
126 {"x": 4.25, "y": 3},
127 {"x": 5.25, "y": 3},
128 {"x": 6.25, "y": 3},
129 {"x": 7.25, "y": 3},
130 {"x": 8.25, "y": 3},
131 {"x": 9.25, "y": 3},
132 {"x": 10.25, "y": 3},
133 {"x": 11.25, "y": 3, "w": 1.75},
134 {"x": 13, "y": 3},
135 {"x": 14, "y": 3},
136
137 {"x": 0, "y": 4, "w": 1.25},
138 {"x": 1.25, "y": 4, "w": 1.25},
139 {"x": 2.5, "y": 4, "w": 1.25},
140 {"x": 3.75, "y": 4, "w": 6.25},
141 {"x": 10, "y": 4 },
142 {"x": 11, "y": 4 },
143 {"x": 12, "y": 4 },
144 {"x": 13, "y": 4 },
145 {"x": 14, "y": 4 }
146 ]
147 },
148 "LAYOUT_60_ansi_arrow_6u_spc": {
149 "layout": [
150 {"x": 0, "y": 0},
151 {"x": 1, "y": 0},
152 {"x": 2, "y": 0},
153 {"x": 3, "y": 0},
154 {"x": 4, "y": 0},
155 {"x": 5, "y": 0},
156 {"x": 6, "y": 0},
157 {"x": 7, "y": 0},
158 {"x": 8, "y": 0},
159 {"x": 9, "y": 0},
160 {"x": 10, "y": 0},
161 {"x": 11, "y": 0},
162 {"x": 12, "y": 0},
163 {"x": 13, "y": 0, "w": 2},
164
165 {"x": 0, "y": 1, "w": 1.5},
166 {"x": 1.5, "y": 1},
167 {"x": 2.5, "y": 1},
168 {"x": 3.5, "y": 1},
169 {"x": 4.5, "y": 1},
170 {"x": 5.5, "y": 1},
171 {"x": 6.5, "y": 1},
172 {"x": 7.5, "y": 1},
173 {"x": 8.5, "y": 1},
174 {"x": 9.5, "y": 1},
175 {"x": 10.5, "y": 1},
176 {"x": 11.5, "y": 1},
177 {"x": 12.5, "y": 1},
178 {"x": 13.5, "y": 1, "w": 1.5},
179
180 {"x": 0, "y": 2, "w": 1.75},
181 {"x": 1.75, "y": 2},
182 {"x": 2.75, "y": 2},
183 {"x": 3.75, "y": 2},
184 {"x": 4.75, "y": 2},
185 {"x": 5.75, "y": 2},
186 {"x": 6.75, "y": 2},
187 {"x": 7.75, "y": 2},
188 {"x": 8.75, "y": 2},
189 {"x": 9.75, "y": 2},
190 {"x": 10.75, "y": 2},
191 {"x": 11.75, "y": 2},
192 {"x": 12.75, "y": 2, "w": 2.25},
193
194 {"x": 0, "y": 3, "w": 2.25},
195 {"x": 2.25, "y": 3},
196 {"x": 3.25, "y": 3},
197 {"x": 4.25, "y": 3},
198 {"x": 5.25, "y": 3},
199 {"x": 6.25, "y": 3},
200 {"x": 7.25, "y": 3},
201 {"x": 8.25, "y": 3},
202 {"x": 9.25, "y": 3},
203 {"x": 10.25, "y": 3},
204 {"x": 11.25, "y": 3, "w": 1.75},
205 {"x": 13, "y": 3},
206 {"x": 14, "y": 3},
207
208 {"x": 0, "y": 4, "w": 1.25},
209 {"x": 1.25, "y": 4, "w": 1.25},
210 {"x": 2.5, "y": 4, "w": 1.25},
211 {"x": 3.75, "y": 4, "w": 6},
212 {"x": 9.75, "y": 4, "w": 1.25},
213 {"x": 11, "y": 4 },
214 {"x": 12, "y": 4 },
215 {"x": 13, "y": 4 },
216 {"x": 14, "y": 4 }
217 ]
218 },
219 "LAYOUT_60_ansi_arrow_3u_spc": {
220 "layout": [
221 {"x": 0, "y": 0},
222 {"x": 1, "y": 0},
223 {"x": 2, "y": 0},
224 {"x": 3, "y": 0},
225 {"x": 4, "y": 0},
226 {"x": 5, "y": 0},
227 {"x": 6, "y": 0},
228 {"x": 7, "y": 0},
229 {"x": 8, "y": 0},
230 {"x": 9, "y": 0},
231 {"x": 10, "y": 0},
232 {"x": 11, "y": 0},
233 {"x": 12, "y": 0},
234 {"x": 13, "y": 0, "w": 2},
235
236 {"x": 0, "y": 1, "w": 1.5},
237 {"x": 1.5, "y": 1},
238 {"x": 2.5, "y": 1},
239 {"x": 3.5, "y": 1},
240 {"x": 4.5, "y": 1},
241 {"x": 5.5, "y": 1},
242 {"x": 6.5, "y": 1},
243 {"x": 7.5, "y": 1},
244 {"x": 8.5, "y": 1},
245 {"x": 9.5, "y": 1},
246 {"x": 10.5, "y": 1},
247 {"x": 11.5, "y": 1},
248 {"x": 12.5, "y": 1},
249 {"x": 13.5, "y": 1, "w": 1.5},
250
251 {"x": 0, "y": 2, "w": 1.75},
252 {"x": 1.75, "y": 2},
253 {"x": 2.75, "y": 2},
254 {"x": 3.75, "y": 2},
255 {"x": 4.75, "y": 2},
256 {"x": 5.75, "y": 2},
257 {"x": 6.75, "y": 2},
258 {"x": 7.75, "y": 2},
259 {"x": 8.75, "y": 2},
260 {"x": 9.75, "y": 2},
261 {"x": 10.75, "y": 2},
262 {"x": 11.75, "y": 2},
263 {"x": 12.75, "y": 2, "w": 2.25},
264
265 {"x": 0, "y": 3, "w": 2.25},
266 {"x": 2.25, "y": 3},
267 {"x": 3.25, "y": 3},
268 {"x": 4.25, "y": 3},
269 {"x": 5.25, "y": 3},
270 {"x": 6.25, "y": 3},
271 {"x": 7.25, "y": 3},
272 {"x": 8.25, "y": 3},
273 {"x": 9.25, "y": 3},
274 {"x": 10.25, "y": 3},
275 {"x": 11.25, "y": 3, "w": 1.75},
276 {"x": 13, "y": 3},
277 {"x": 14, "y": 3},
278
279 {"x": 0, "y": 4, "w": 1.75},
280 {"x": 1.75, "y": 4, "w": 1.25},
281 {"x": 3, "y": 4, "w": 1.25},
282 {"x": 4.25, "y": 4, "w": 1.25},
283 {"x": 5.5, "y": 4, "w": 3 },
284 {"x": 8.5, "y": 4, "w": 1.25 },
285 {"x": 9.75, "y": 4 , "w": 1.25},
286 {"x": 11, "y": 4 },
287 {"x": 12, "y": 4 },
288 {"x": 13, "y": 4 },
289 {"x": 14, "y": 4 }
290 ]
291 },
292 "LAYOUT_60_ansi_arrow_split_3u_spc": {
293 "layout": [
294 {"x": 0, "y": 0},
295 {"x": 1, "y": 0},
296 {"x": 2, "y": 0},
297 {"x": 3, "y": 0},
298 {"x": 4, "y": 0},
299 {"x": 5, "y": 0},
300 {"x": 6, "y": 0},
301 {"x": 7, "y": 0},
302 {"x": 8, "y": 0},
303 {"x": 9, "y": 0},
304 {"x": 10, "y": 0},
305 {"x": 11, "y": 0},
306 {"x": 12, "y": 0},
307 {"x": 13, "y": 0, "w": 2},
308
309 {"x": 0, "y": 1, "w": 1.5},
310 {"x": 1.5, "y": 1},
311 {"x": 2.5, "y": 1},
312 {"x": 3.5, "y": 1},
313 {"x": 4.5, "y": 1},
314 {"x": 5.5, "y": 1},
315 {"x": 6.5, "y": 1},
316 {"x": 7.5, "y": 1},
317 {"x": 8.5, "y": 1},
318 {"x": 9.5, "y": 1},
319 {"x": 10.5, "y": 1},
320 {"x": 11.5, "y": 1},
321 {"x": 12.5, "y": 1},
322 {"x": 13.5, "y": 1, "w": 1.5},
323
324 {"x": 0, "y": 2, "w": 1.75},
325 {"x": 1.75, "y": 2},
326 {"x": 2.75, "y": 2},
327 {"x": 3.75, "y": 2},
328 {"x": 4.75, "y": 2},
329 {"x": 5.75, "y": 2},
330 {"x": 6.75, "y": 2},
331 {"x": 7.75, "y": 2},
332 {"x": 8.75, "y": 2},
333 {"x": 9.75, "y": 2},
334 {"x": 10.75, "y": 2},
335 {"x": 11.75, "y": 2},
336 {"x": 12.75, "y": 2, "w": 2.25},
337
338 {"x": 0, "y": 3, "w": 2.25},
339 {"x": 2.25, "y": 3},
340 {"x": 3.25, "y": 3},
341 {"x": 4.25, "y": 3},
342 {"x": 5.25, "y": 3},
343 {"x": 6.25, "y": 3},
344 {"x": 7.25, "y": 3},
345 {"x": 8.25, "y": 3},
346 {"x": 9.25, "y": 3},
347 {"x": 10.25, "y": 3},
348 {"x": 11.25, "y": 3, "w": 1.75},
349 {"x": 13, "y": 3},
350 {"x": 14, "y": 3},
351
352 {"x": 0, "y": 4, "w": 1.25},
353 {"x": 1.25, "y": 4, "w": 1.25},
354 {"x": 2.5, "y": 4, "w": 1.25},
355 {"x": 3.75, "y": 4, "w": 3 },
356 {"x": 6.75, "y": 4, "w": 3 },
357 {"x": 9.75, "y": 4, "w": 1.25 },
358 {"x": 11, "y": 4 },
359 {"x": 12, "y": 4 },
360 {"x": 13, "y": 4 },
361 {"x": 14, "y": 4 }
362 ]
363 },
364 "LAYOUT_60_ansi_7u_spc": {
365 "layout": [
366 {"x": 0, "y": 0},
367 {"x": 1, "y": 0},
368 {"x": 2, "y": 0},
369 {"x": 3, "y": 0},
370 {"x": 4, "y": 0},
371 {"x": 5, "y": 0},
372 {"x": 6, "y": 0},
373 {"x": 7, "y": 0},
374 {"x": 8, "y": 0},
375 {"x": 9, "y": 0},
376 {"x": 10, "y": 0},
377 {"x": 11, "y": 0},
378 {"x": 12, "y": 0},
379 {"x": 13, "y": 0, "w": 2},
380
381 {"x": 0, "y": 1, "w": 1.5},
382 {"x": 1.5, "y": 1},
383 {"x": 2.5, "y": 1},
384 {"x": 3.5, "y": 1},
385 {"x": 4.5, "y": 1},
386 {"x": 5.5, "y": 1},
387 {"x": 6.5, "y": 1},
388 {"x": 7.5, "y": 1},
389 {"x": 8.5, "y": 1},
390 {"x": 9.5, "y": 1},
391 {"x": 10.5, "y": 1},
392 {"x": 11.5, "y": 1},
393 {"x": 12.5, "y": 1},
394 {"x": 13.5, "y": 1, "w": 1.5},
395
396 {"x": 0, "y": 2, "w": 1.75},
397 {"x": 1.75, "y": 2},
398 {"x": 2.75, "y": 2},
399 {"x": 3.75, "y": 2},
400 {"x": 4.75, "y": 2},
401 {"x": 5.75, "y": 2},
402 {"x": 6.75, "y": 2},
403 {"x": 7.75, "y": 2},
404 {"x": 8.75, "y": 2},
405 {"x": 9.75, "y": 2},
406 {"x": 10.75, "y": 2},
407 {"x": 11.75, "y": 2},
408 {"x": 12.75, "y": 2, "w": 2.25},
409
410 {"x": 0, "y": 3, "w": 2.25},
411 {"x": 2.25, "y": 3},
412 {"x": 3.25, "y": 3},
413 {"x": 4.25, "y": 3},
414 {"x": 5.25, "y": 3},
415 {"x": 6.25, "y": 3},
416 {"x": 7.25, "y": 3},
417 {"x": 8.25, "y": 3},
418 {"x": 9.25, "y": 3},
419 {"x": 10.25, "y": 3},
420 {"x": 11.25, "y": 3},
421 {"x": 12.25, "y": 3, "w": 2.75},
422
423 {"x": 0, "y": 4, "w": 1.5},
424 {"x": 1.5, "y": 4},
425 {"x": 2.5, "y": 4, "w": 1.5},
426 {"x": 4, "y": 4, "w": 7},
427 {"x": 11, "y": 4, "w": 1.5},
428 {"x": 12.5, "y": 4},
429 {"x": 13.5, "y": 4, "w": 1.5}
430 ]
431 },
432 "LAYOUT_64_ansi": {
433 "layout": [
434 {"x": 0, "y": 0},
435 {"x": 1, "y": 0},
436 {"x": 2, "y": 0},
437 {"x": 3, "y": 0},
438 {"x": 4, "y": 0},
439 {"x": 5, "y": 0},
440 {"x": 6, "y": 0},
441 {"x": 7, "y": 0},
442 {"x": 8, "y": 0},
443 {"x": 9, "y": 0},
444 {"x": 10, "y": 0},
445 {"x": 11, "y": 0},
446 {"x": 12, "y": 0},
447 {"x": 13, "y": 0, "w": 2},
448
449 {"x": 0, "y": 1, "w": 1.5},
450 {"x": 1.5, "y": 1},
451 {"x": 2.5, "y": 1},
452 {"x": 3.5, "y": 1},
453 {"x": 4.5, "y": 1},
454 {"x": 5.5, "y": 1},
455 {"x": 6.5, "y": 1},
456 {"x": 7.5, "y": 1},
457 {"x": 8.5, "y": 1},
458 {"x": 9.5, "y": 1},
459 {"x": 10.5, "y": 1},
460 {"x": 11.5, "y": 1},
461 {"x": 12.5, "y": 1},
462 {"x": 13.5, "y": 1, "w": 1.5},
463
464 {"x": 0, "y": 2, "w": 1.75},
465 {"x": 1.75, "y": 2},
466 {"x": 2.75, "y": 2},
467 {"x": 3.75, "y": 2},
468 {"x": 4.75, "y": 2},
469 {"x": 5.75, "y": 2},
470 {"x": 6.75, "y": 2},
471 {"x": 7.75, "y": 2},
472 {"x": 8.75, "y": 2},
473 {"x": 9.75, "y": 2},
474 {"x": 10.75, "y": 2},
475 {"x": 11.75, "y": 2},
476 {"x": 12.75, "y": 2, "w": 2.25},
477
478 {"x": 0, "y": 3, "w": 2},
479 {"x": 3, "y": 3},
480 {"x": 4, "y": 3},
481 {"x": 5, "y": 3},
482 {"x": 6, "y": 3},
483 {"x": 7, "y": 3},
484 {"x": 8, "y": 3},
485 {"x": 9, "y": 3},
486 {"x": 10, "y": 3},
487 {"x": 11, "y": 3},
488 {"x": 12, "y": 3},
489 {"x": 13, "y": 3},
490 {"x": 14, "y": 3},
491
492 {"x": 0, "y": 4, "w": 1.25},
493 {"x": 1.25, "y": 4, "w": 1.25},
494 {"x": 2.5, "y": 4, "w": 1.25},
495 {"x": 3.75, "y": 4, "w": 6.25},
496 {"x": 10, "y": 4 },
497 {"x": 11, "y": 4 },
498 {"x": 12, "y": 4 },
499 {"x": 13, "y": 4 },
500 {"x": 14, "y": 4 }
501 ]
502 },
503 "LAYOUT_64_ansi_6u_spc": {
504 "layout": [
505 {"x": 0, "y": 0},
506 {"x": 1, "y": 0},
507 {"x": 2, "y": 0},
508 {"x": 3, "y": 0},
509 {"x": 4, "y": 0},
510 {"x": 5, "y": 0},
511 {"x": 6, "y": 0},
512 {"x": 7, "y": 0},
513 {"x": 8, "y": 0},
514 {"x": 9, "y": 0},
515 {"x": 10, "y": 0},
516 {"x": 11, "y": 0},
517 {"x": 12, "y": 0},
518 {"x": 13, "y": 0, "w": 2},
519
520 {"x": 0, "y": 1, "w": 1.5},
521 {"x": 1.5, "y": 1},
522 {"x": 2.5, "y": 1},
523 {"x": 3.5, "y": 1},
524 {"x": 4.5, "y": 1},
525 {"x": 5.5, "y": 1},
526 {"x": 6.5, "y": 1},
527 {"x": 7.5, "y": 1},
528 {"x": 8.5, "y": 1},
529 {"x": 9.5, "y": 1},
530 {"x": 10.5, "y": 1},
531 {"x": 11.5, "y": 1},
532 {"x": 12.5, "y": 1},
533 {"x": 13.5, "y": 1, "w": 1.5},
534
535 {"x": 0, "y": 2, "w": 1.75},
536 {"x": 1.75, "y": 2},
537 {"x": 2.75, "y": 2},
538 {"x": 3.75, "y": 2},
539 {"x": 4.75, "y": 2},
540 {"x": 5.75, "y": 2},
541 {"x": 6.75, "y": 2},
542 {"x": 7.75, "y": 2},
543 {"x": 8.75, "y": 2},
544 {"x": 9.75, "y": 2},
545 {"x": 10.75, "y": 2},
546 {"x": 11.75, "y": 2},
547 {"x": 12.75, "y": 2, "w": 2.25},
548
549 {"x": 0, "y": 3, "w": 2},
550 {"x": 3, "y": 3},
551 {"x": 4, "y": 3},
552 {"x": 5, "y": 3},
553 {"x": 6, "y": 3},
554 {"x": 7, "y": 3},
555 {"x": 8, "y": 3},
556 {"x": 9, "y": 3},
557 {"x": 10, "y": 3},
558 {"x": 11, "y": 3},
559 {"x": 12, "y": 3},
560 {"x": 13, "y": 3},
561 {"x": 14, "y": 3},
562
563 {"x": 0, "y": 4, "w": 1.25},
564 {"x": 1.25, "y": 4, "w": 1.25},
565 {"x": 2.5, "y": 4, "w": 1.25},
566 {"x": 3.75, "y": 4, "w": 6},
567 {"x": 9.75, "y": 4, "w":1.25 },
568 {"x": 11, "y": 4 },
569 {"x": 12, "y": 4 },
570 {"x": 13, "y": 4 },
571 {"x": 14, "y": 4 }
572 ]
573 },
574 "LAYOUT_64_ansi_3u_spc": {
575 "layout": [
576 {"x": 0, "y": 0},
577 {"x": 1, "y": 0},
578 {"x": 2, "y": 0},
579 {"x": 3, "y": 0},
580 {"x": 4, "y": 0},
581 {"x": 5, "y": 0},
582 {"x": 6, "y": 0},
583 {"x": 7, "y": 0},
584 {"x": 8, "y": 0},
585 {"x": 9, "y": 0},
586 {"x": 10, "y": 0},
587 {"x": 11, "y": 0},
588 {"x": 12, "y": 0},
589 {"x": 13, "y": 0, "w": 2},
590
591 {"x": 0, "y": 1, "w": 1.5},
592 {"x": 1.5, "y": 1},
593 {"x": 2.5, "y": 1},
594 {"x": 3.5, "y": 1},
595 {"x": 4.5, "y": 1},
596 {"x": 5.5, "y": 1},
597 {"x": 6.5, "y": 1},
598 {"x": 7.5, "y": 1},
599 {"x": 8.5, "y": 1},
600 {"x": 9.5, "y": 1},
601 {"x": 10.5, "y": 1},
602 {"x": 11.5, "y": 1},
603 {"x": 12.5, "y": 1},
604 {"x": 13.5, "y": 1, "w": 1.5},
605
606 {"x": 0, "y": 2, "w": 1.75},
607 {"x": 1.75, "y": 2},
608 {"x": 2.75, "y": 2},
609 {"x": 3.75, "y": 2},
610 {"x": 4.75, "y": 2},
611 {"x": 5.75, "y": 2},
612 {"x": 6.75, "y": 2},
613 {"x": 7.75, "y": 2},
614 {"x": 8.75, "y": 2},
615 {"x": 9.75, "y": 2},
616 {"x": 10.75, "y": 2},
617 {"x": 11.75, "y": 2},
618 {"x": 12.75, "y": 2, "w": 2.25},
619
620 {"x": 0, "y": 3, "w": 2},
621 {"x": 3, "y": 3},
622 {"x": 4, "y": 3},
623 {"x": 5, "y": 3},
624 {"x": 6, "y": 3},
625 {"x": 7, "y": 3},
626 {"x": 8, "y": 3},
627 {"x": 9, "y": 3},
628 {"x": 10, "y": 3},
629 {"x": 11, "y": 3},
630 {"x": 12, "y": 3},
631 {"x": 13, "y": 3},
632 {"x": 14, "y": 3},
633
634 {"x": 0, "y": 4, "w": 1.75},
635 {"x": 1.75, "y": 4, "w": 1.25},
636 {"x": 3, "y": 4, "w": 1.25},
637 {"x": 4.25, "y": 4, "w": 1.25},
638 {"x": 5.5, "y": 4, "w": 3 },
639 {"x": 8.5, "y": 4, "w": 1.25 },
640 {"x": 9.75, "y": 4 , "w": 1.25},
641 {"x": 11, "y": 4 },
642 {"x": 12, "y": 4 },
643 {"x": 13, "y": 4 },
644 {"x": 14, "y": 4 }
645 ]
646 },
647 "LAYOUT_64_ansi_split_3u_spc": {
648 "layout": [
649 {"x": 0, "y": 0},
650 {"x": 1, "y": 0},
651 {"x": 2, "y": 0},
652 {"x": 3, "y": 0},
653 {"x": 4, "y": 0},
654 {"x": 5, "y": 0},
655 {"x": 6, "y": 0},
656 {"x": 7, "y": 0},
657 {"x": 8, "y": 0},
658 {"x": 9, "y": 0},
659 {"x": 10, "y": 0},
660 {"x": 11, "y": 0},
661 {"x": 12, "y": 0},
662 {"x": 13, "y": 0, "w": 2},
663
664 {"x": 0, "y": 1, "w": 1.5},
665 {"x": 1.5, "y": 1},
666 {"x": 2.5, "y": 1},
667 {"x": 3.5, "y": 1},
668 {"x": 4.5, "y": 1},
669 {"x": 5.5, "y": 1},
670 {"x": 6.5, "y": 1},
671 {"x": 7.5, "y": 1},
672 {"x": 8.5, "y": 1},
673 {"x": 9.5, "y": 1},
674 {"x": 10.5, "y": 1},
675 {"x": 11.5, "y": 1},
676 {"x": 12.5, "y": 1},
677 {"x": 13.5, "y": 1, "w": 1.5},
678
679 {"x": 0, "y": 2, "w": 1.75},
680 {"x": 1.75, "y": 2},
681 {"x": 2.75, "y": 2},
682 {"x": 3.75, "y": 2},
683 {"x": 4.75, "y": 2},
684 {"x": 5.75, "y": 2},
685 {"x": 6.75, "y": 2},
686 {"x": 7.75, "y": 2},
687 {"x": 8.75, "y": 2},
688 {"x": 9.75, "y": 2},
689 {"x": 10.75, "y": 2},
690 {"x": 11.75, "y": 2},
691 {"x": 12.75, "y": 2, "w": 2.25},
692
693 {"x": 0, "y": 3, "w": 2},
694 {"x": 3, "y": 3},
695 {"x": 4, "y": 3},
696 {"x": 5, "y": 3},
697 {"x": 6, "y": 3},
698 {"x": 7, "y": 3},
699 {"x": 8, "y": 3},
700 {"x": 9, "y": 3},
701 {"x": 10, "y": 3},
702 {"x": 11, "y": 3},
703 {"x": 12, "y": 3},
704 {"x": 13, "y": 3},
705 {"x": 14, "y": 3},
706
707 {"x": 0, "y": 4, "w": 1.25},
708 {"x": 1.25, "y": 4, "w": 1.25},
709 {"x": 2.5, "y": 4, "w": 1.25},
710 {"x": 3.75, "y": 4, "w": 3 },
711 {"x": 6.75, "y": 4, "w": 3 },
712 {"x": 9.75, "y": 4, "w": 1.25 },
713 {"x": 11, "y": 4 },
714 {"x": 12, "y": 4 },
715 {"x": 13, "y": 4 },
716 {"x": 14, "y": 4 }
717 ]
718 },
719 "LAYOUT_60_iso": {
720 "layout": [
721 {"x": 0, "y": 0},
722 {"x": 1, "y": 0},
723 {"x": 2, "y": 0},
724 {"x": 3, "y": 0},
725 {"x": 4, "y": 0},
726 {"x": 5, "y": 0},
727 {"x": 6, "y": 0},
728 {"x": 7, "y": 0},
729 {"x": 8, "y": 0},
730 {"x": 9, "y": 0},
731 {"x": 10, "y": 0},
732 {"x": 11, "y": 0},
733 {"x": 12, "y": 0},
734 {"x": 13, "y": 0, "w": 2},
735
736 {"x": 0, "y": 1, "w": 1.5},
737 {"x": 1.5, "y": 1},
738 {"x": 2.5, "y": 1},
739 {"x": 3.5, "y": 1},
740 {"x": 4.5, "y": 1},
741 {"x": 5.5, "y": 1},
742 {"x": 6.5, "y": 1},
743 {"x": 7.5, "y": 1},
744 {"x": 8.5, "y": 1},
745 {"x": 9.5, "y": 1},
746 {"x": 10.5, "y": 1},
747 {"x": 11.5, "y": 1},
748 {"x": 12.5, "y": 1},
749 {"x": 13.5, "y": 1, "w": 1.5},
750
751 {"x": 0, "y": 2, "w": 1.75},
752 {"x": 1.75, "y": 2},
753 {"x": 2.75, "y": 2},
754 {"x": 3.75, "y": 2},
755 {"x": 4.75, "y": 2},
756 {"x": 5.75, "y": 2},
757 {"x": 6.75, "y": 2},
758 {"x": 7.75, "y": 2},
759 {"x": 8.75, "y": 2},
760 {"x": 9.75, "y": 2},
761 {"x": 10.75, "y": 2},
762 {"x": 11.75, "y": 2},
763 {"x": 12.75, "y": 2},
764 {"x": 13.75, "y": 2, "w": 1.25, "h": 2},
765
766 {"x": 0, "y": 3, "w": 2.25},
767 {"x": 2.25, "y": 3},
768 {"x": 3.25, "y": 3},
769 {"x": 4.25, "y": 3},
770 {"x": 5.25, "y": 3},
771 {"x": 6.25, "y": 3},
772 {"x": 7.25, "y": 3},
773 {"x": 8.25, "y": 3},
774 {"x": 9.25, "y": 3},
775 {"x": 10.25, "y": 3},
776 {"x": 11.25, "y": 3},
777 {"x": 12.25, "y": 3, "w": 2.75},
778
779 {"x": 0, "y": 4, "w": 1.25},
780 {"x": 1.25, "y": 4, "w": 1.25},
781 {"x": 2.5, "y": 4, "w": 1.25},
782 {"x": 3.75, "y": 4, "w": 6.25},
783 {"x": 10, "y": 4, "w": 1.25},
784 {"x": 11.25, "y": 4, "w": 1.25},
785 {"x": 12.5, "y": 4, "w": 1.25},
786 {"x": 13.75, "y": 4, "w": 1.25}
787 ]
788 },
789 "LAYOUT_60_iso_split_rshift": {
790 "layout": [
791 {"x": 0, "y": 0},
792 {"x": 1, "y": 0},
793 {"x": 2, "y": 0},
794 {"x": 3, "y": 0},
795 {"x": 4, "y": 0},
796 {"x": 5, "y": 0},
797 {"x": 6, "y": 0},
798 {"x": 7, "y": 0},
799 {"x": 8, "y": 0},
800 {"x": 9, "y": 0},
801 {"x": 10, "y": 0},
802 {"x": 11, "y": 0},
803 {"x": 12, "y": 0},
804 {"x": 13, "y": 0, "w": 2},
805
806 {"x": 0, "y": 1, "w": 1.5},
807 {"x": 1.5, "y": 1},
808 {"x": 2.5, "y": 1},
809 {"x": 3.5, "y": 1},
810 {"x": 4.5, "y": 1},
811 {"x": 5.5, "y": 1},
812 {"x": 6.5, "y": 1},
813 {"x": 7.5, "y": 1},
814 {"x": 8.5, "y": 1},
815 {"x": 9.5, "y": 1},
816 {"x": 10.5, "y": 1},
817 {"x": 11.5, "y": 1},
818 {"x": 12.5, "y": 1},
819 {"x": 13.5, "y": 1, "w": 1.5},
820
821 {"x": 0, "y": 2, "w": 1.75},
822 {"x": 1.75, "y": 2},
823 {"x": 2.75, "y": 2},
824 {"x": 3.75, "y": 2},
825 {"x": 4.75, "y": 2},
826 {"x": 5.75, "y": 2},
827 {"x": 6.75, "y": 2},
828 {"x": 7.75, "y": 2},
829 {"x": 8.75, "y": 2},
830 {"x": 9.75, "y": 2},
831 {"x": 10.75, "y": 2},
832 {"x": 11.75, "y": 2},
833 {"x": 12.75, "y": 2},
834 {"x": 13.75, "y": 2, "w": 1.25, "h": 2},
835
836 {"x": 0, "y": 3, "w": 1.25},
837 {"x": 1.25, "y": 3},
838 {"x": 2.25, "y": 3},
839 {"x": 3.25, "y": 3},
840 {"x": 4.25, "y": 3},
841 {"x": 5.25, "y": 3},
842 {"x": 6.25, "y": 3},
843 {"x": 7.25, "y": 3},
844 {"x": 8.25, "y": 3},
845 {"x": 9.25, "y": 3},
846 {"x": 10.25, "y": 3},
847 {"x": 11.25, "y": 3},
848 {"x": 12.25, "y": 3, "w": 1.75},
849 {"x": 14, "y": 3},
850
851 {"x": 0, "y": 4, "w": 1.25},
852 {"x": 1.25, "y": 4, "w": 1.25},
853 {"x": 2.5, "y": 4, "w": 1.25},
854 {"x": 3.75, "y": 4, "w": 6.25},
855 {"x": 10, "y": 4, "w": 1.25},
856 {"x": 11.25, "y": 4, "w": 1.25},
857 {"x": 12.5, "y": 4, "w": 1.25},
858 {"x": 13.75, "y": 4, "w": 1.25}
859 ]
860 },
861 "LAYOUT_60_iso_7u_spc_split_rshift": {
862 "layout": [
863 {"x": 0, "y": 0},
864 {"x": 1, "y": 0},
865 {"x": 2, "y": 0},
866 {"x": 3, "y": 0},
867 {"x": 4, "y": 0},
868 {"x": 5, "y": 0},
869 {"x": 6, "y": 0},
870 {"x": 7, "y": 0},
871 {"x": 8, "y": 0},
872 {"x": 9, "y": 0},
873 {"x": 10, "y": 0},
874 {"x": 11, "y": 0},
875 {"x": 12, "y": 0},
876 {"x": 13, "y": 0, "w": 2},
877
878 {"x": 0, "y": 1, "w": 1.5},
879 {"x": 1.5, "y": 1},
880 {"x": 2.5, "y": 1},
881 {"x": 3.5, "y": 1},
882 {"x": 4.5, "y": 1},
883 {"x": 5.5, "y": 1},
884 {"x": 6.5, "y": 1},
885 {"x": 7.5, "y": 1},
886 {"x": 8.5, "y": 1},
887 {"x": 9.5, "y": 1},
888 {"x": 10.5, "y": 1},
889 {"x": 11.5, "y": 1},
890 {"x": 12.5, "y": 1},
891 {"x": 13.5, "y": 1, "w": 1.5},
892
893 {"x": 0, "y": 2, "w": 1.75},
894 {"x": 1.75, "y": 2},
895 {"x": 2.75, "y": 2},
896 {"x": 3.75, "y": 2},
897 {"x": 4.75, "y": 2},
898 {"x": 5.75, "y": 2},
899 {"x": 6.75, "y": 2},
900 {"x": 7.75, "y": 2},
901 {"x": 8.75, "y": 2},
902 {"x": 9.75, "y": 2},
903 {"x": 10.75, "y": 2},
904 {"x": 11.75, "y": 2},
905 {"x": 12.75, "y": 2},
906 {"x": 13.75, "y": 2, "w": 1.25, "h": 2},
907
908 {"x": 0, "y": 3, "w": 1.25},
909 {"x": 1.25, "y": 3},
910 {"x": 2.25, "y": 3},
911 {"x": 3.25, "y": 3},
912 {"x": 4.25, "y": 3},
913 {"x": 5.25, "y": 3},
914 {"x": 6.25, "y": 3},
915 {"x": 7.25, "y": 3},
916 {"x": 8.25, "y": 3},
917 {"x": 9.25, "y": 3},
918 {"x": 10.25, "y": 3},
919 {"x": 11.25, "y": 3},
920 {"x": 12.25, "y": 3, "w": 1.75},
921 {"x": 14, "y": 3},
922
923 {"x": 0, "y": 4, "w": 1.5},
924 {"x": 1.5, "y": 4},
925 {"x": 2.5, "y": 4, "w": 1.5},
926 {"x": 4, "y": 4, "w": 7},
927 {"x": 11, "y": 4, "w": 1.5},
928 {"x": 12.5, "y": 4},
929 {"x": 13.5, "y": 4, "w": 1.5}
930 ]
931 },
932 "LAYOUT_60_iso_arrow": {
933 "layout": [
934 {"x": 0, "y": 0},
935 {"x": 1, "y": 0},
936 {"x": 2, "y": 0},
937 {"x": 3, "y": 0},
938 {"x": 4, "y": 0},
939 {"x": 5, "y": 0},
940 {"x": 6, "y": 0},
941 {"x": 7, "y": 0},
942 {"x": 8, "y": 0},
943 {"x": 9, "y": 0},
944 {"x": 10, "y": 0},
945 {"x": 11, "y": 0},
946 {"x": 12, "y": 0},
947 {"x": 13, "y": 0, "w": 2},
948
949 {"x": 0, "y": 1, "w": 1.5},
950 {"x": 1.5, "y": 1},
951 {"x": 2.5, "y": 1},
952 {"x": 3.5, "y": 1},
953 {"x": 4.5, "y": 1},
954 {"x": 5.5, "y": 1},
955 {"x": 6.5, "y": 1},
956 {"x": 7.5, "y": 1},
957 {"x": 8.5, "y": 1},
958 {"x": 9.5, "y": 1},
959 {"x": 10.5, "y": 1},
960 {"x": 11.5, "y": 1},
961 {"x": 12.5, "y": 1},
962 {"x": 13.5, "y": 1, "w": 1.5},
963
964 {"x": 0, "y": 2, "w": 1.75},
965 {"x": 1.75, "y": 2},
966 {"x": 2.75, "y": 2},
967 {"x": 3.75, "y": 2},
968 {"x": 4.75, "y": 2},
969 {"x": 5.75, "y": 2},
970 {"x": 6.75, "y": 2},
971 {"x": 7.75, "y": 2},
972 {"x": 8.75, "y": 2},
973 {"x": 9.75, "y": 2},
974 {"x": 10.75, "y": 2},
975 {"x": 11.75, "y": 2},
976 {"x": 12.75, "y": 2},
977 {"x": 13.75, "y": 2, "w": 1.25, "h": 2},
978
979 {"x": 0, "y": 3, "w": 2.25},
980 {"x": 2.25, "y": 3},
981 {"x": 3.25, "y": 3},
982 {"x": 4.25, "y": 3},
983 {"x": 5.25, "y": 3},
984 {"x": 6.25, "y": 3},
985 {"x": 7.25, "y": 3},
986 {"x": 8.25, "y": 3},
987 {"x": 9.25, "y": 3},
988 {"x": 10.25, "y": 3},
989 {"x": 11.25, "y": 3, "w": 1.75},
990 {"x": 13, "y": 3},
991 {"x": 14, "y": 3},
992
993 {"x": 0, "y": 4, "w": 1.25},
994 {"x": 1.25, "y": 4, "w": 1.25},
995 {"x": 2.5, "y": 4, "w": 1.25},
996 {"x": 3.75, "y": 4, "w": 6.25},
997 {"x": 10, "y": 4 },
998 {"x": 11, "y": 4 },
999 {"x": 12, "y": 4 },
1000 {"x": 13, "y": 4 },
1001 {"x": 14, "y": 4 }
1002 ]
1003 },
1004 "LAYOUT_60_iso_arrow_6u_spc": {
1005 "layout": [
1006 {"x": 0, "y": 0},
1007 {"x": 1, "y": 0},
1008 {"x": 2, "y": 0},
1009 {"x": 3, "y": 0},
1010 {"x": 4, "y": 0},
1011 {"x": 5, "y": 0},
1012 {"x": 6, "y": 0},
1013 {"x": 7, "y": 0},
1014 {"x": 8, "y": 0},
1015 {"x": 9, "y": 0},
1016 {"x": 10, "y": 0},
1017 {"x": 11, "y": 0},
1018 {"x": 12, "y": 0},
1019 {"x": 13, "y": 0, "w": 2},
1020
1021 {"x": 0, "y": 1, "w": 1.5},
1022 {"x": 1.5, "y": 1},
1023 {"x": 2.5, "y": 1},
1024 {"x": 3.5, "y": 1},
1025 {"x": 4.5, "y": 1},
1026 {"x": 5.5, "y": 1},
1027 {"x": 6.5, "y": 1},
1028 {"x": 7.5, "y": 1},
1029 {"x": 8.5, "y": 1},
1030 {"x": 9.5, "y": 1},
1031 {"x": 10.5, "y": 1},
1032 {"x": 11.5, "y": 1},
1033 {"x": 12.5, "y": 1},
1034 {"x": 13.5, "y": 1, "w": 1.5},
1035
1036 {"x": 0, "y": 2, "w": 1.75},
1037 {"x": 1.75, "y": 2},
1038 {"x": 2.75, "y": 2},
1039 {"x": 3.75, "y": 2},
1040 {"x": 4.75, "y": 2},
1041 {"x": 5.75, "y": 2},
1042 {"x": 6.75, "y": 2},
1043 {"x": 7.75, "y": 2},
1044 {"x": 8.75, "y": 2},
1045 {"x": 9.75, "y": 2},
1046 {"x": 10.75, "y": 2},
1047 {"x": 11.75, "y": 2},
1048 {"x": 12.75, "y": 2},
1049 {"x": 13.75, "y": 2, "w": 1.25, "h": 2},
1050
1051 {"x": 0, "y": 3, "w": 2.25},
1052 {"x": 2.25, "y": 3},
1053 {"x": 3.25, "y": 3},
1054 {"x": 4.25, "y": 3},
1055 {"x": 5.25, "y": 3},
1056 {"x": 6.25, "y": 3},
1057 {"x": 7.25, "y": 3},
1058 {"x": 8.25, "y": 3},
1059 {"x": 9.25, "y": 3},
1060 {"x": 10.25, "y": 3},
1061 {"x": 11.25, "y": 3, "w": 1.75},
1062 {"x": 13, "y": 3},
1063 {"x": 14, "y": 3},
1064
1065 {"x": 0, "y": 4, "w": 1.25},
1066 {"x": 1.25, "y": 4, "w": 1.25},
1067 {"x": 2.5, "y": 4, "w": 1.25},
1068 {"x": 3.75, "y": 4, "w": 6},
1069 {"x": 9.75, "y": 4, "w": 1.25},
1070 {"x": 11, "y": 4 },
1071 {"x": 12, "y": 4 },
1072 {"x": 13, "y": 4 },
1073 {"x": 14, "y": 4 }
1074 ]
1075 },
1076 "LAYOUT_60_iso_arrow_3u_spc": {
1077 "layout": [
1078 {"x": 0, "y": 0},
1079 {"x": 1, "y": 0},
1080 {"x": 2, "y": 0},
1081 {"x": 3, "y": 0},
1082 {"x": 4, "y": 0},
1083 {"x": 5, "y": 0},
1084 {"x": 6, "y": 0},
1085 {"x": 7, "y": 0},
1086 {"x": 8, "y": 0},
1087 {"x": 9, "y": 0},
1088 {"x": 10, "y": 0},
1089 {"x": 11, "y": 0},
1090 {"x": 12, "y": 0},
1091 {"x": 13, "y": 0, "w": 2},
1092
1093 {"x": 0, "y": 1, "w": 1.5},
1094 {"x": 1.5, "y": 1},
1095 {"x": 2.5, "y": 1},
1096 {"x": 3.5, "y": 1},
1097 {"x": 4.5, "y": 1},
1098 {"x": 5.5, "y": 1},
1099 {"x": 6.5, "y": 1},
1100 {"x": 7.5, "y": 1},
1101 {"x": 8.5, "y": 1},
1102 {"x": 9.5, "y": 1},
1103 {"x": 10.5, "y": 1},
1104 {"x": 11.5, "y": 1},
1105 {"x": 12.5, "y": 1},
1106 {"x": 13.5, "y": 1, "w": 1.5},
1107
1108 {"x": 0, "y": 2, "w": 1.75},
1109 {"x": 1.75, "y": 2},
1110 {"x": 2.75, "y": 2},
1111 {"x": 3.75, "y": 2},
1112 {"x": 4.75, "y": 2},
1113 {"x": 5.75, "y": 2},
1114 {"x": 6.75, "y": 2},
1115 {"x": 7.75, "y": 2},
1116 {"x": 8.75, "y": 2},
1117 {"x": 9.75, "y": 2},
1118 {"x": 10.75, "y": 2},
1119 {"x": 11.75, "y": 2},
1120 {"x": 12.75, "y": 2},
1121 {"x": 13.75, "y": 2, "w": 1.25, "h": 2},
1122
1123 {"x": 0, "y": 3, "w": 2.25},
1124 {"x": 2.25, "y": 3},
1125 {"x": 3.25, "y": 3},
1126 {"x": 4.25, "y": 3},
1127 {"x": 5.25, "y": 3},
1128 {"x": 6.25, "y": 3},
1129 {"x": 7.25, "y": 3},
1130 {"x": 8.25, "y": 3},
1131 {"x": 9.25, "y": 3},
1132 {"x": 10.25, "y": 3},
1133 {"x": 11.25, "y": 3, "w": 1.75},
1134 {"x": 13, "y": 3},
1135 {"x": 14, "y": 3},
1136
1137 {"x": 0, "y": 4, "w": 1.75},
1138 {"x": 1.75, "y": 4, "w": 1.25},
1139 {"x": 3, "y": 4, "w": 1.25},
1140 {"x": 4.25, "y": 4, "w": 1.25},
1141 {"x": 5.5, "y": 4, "w": 3 },
1142 {"x": 8.5, "y": 4, "w": 1.25 },
1143 {"x": 9.75, "y": 4 , "w": 1.25},
1144 {"x": 11, "y": 4 },
1145 {"x": 12, "y": 4 },
1146 {"x": 13, "y": 4 },
1147 {"x": 14, "y": 4 }
1148 ]
1149 },
1150 "LAYOUT_60_iso_arrow_split_3u_spc": {
1151 "layout": [
1152 {"x": 0, "y": 0},
1153 {"x": 1, "y": 0},
1154 {"x": 2, "y": 0},
1155 {"x": 3, "y": 0},
1156 {"x": 4, "y": 0},
1157 {"x": 5, "y": 0},
1158 {"x": 6, "y": 0},
1159 {"x": 7, "y": 0},
1160 {"x": 8, "y": 0},
1161 {"x": 9, "y": 0},
1162 {"x": 10, "y": 0},
1163 {"x": 11, "y": 0},
1164 {"x": 12, "y": 0},
1165 {"x": 13, "y": 0, "w": 2},
1166
1167 {"x": 0, "y": 1, "w": 1.5},
1168 {"x": 1.5, "y": 1},
1169 {"x": 2.5, "y": 1},
1170 {"x": 3.5, "y": 1},
1171 {"x": 4.5, "y": 1},
1172 {"x": 5.5, "y": 1},
1173 {"x": 6.5, "y": 1},
1174 {"x": 7.5, "y": 1},
1175 {"x": 8.5, "y": 1},
1176 {"x": 9.5, "y": 1},
1177 {"x": 10.5, "y": 1},
1178 {"x": 11.5, "y": 1},
1179 {"x": 12.5, "y": 1},
1180 {"x": 13.5, "y": 1, "w": 1.5},
1181
1182 {"x": 0, "y": 2, "w": 1.75},
1183 {"x": 1.75, "y": 2},
1184 {"x": 2.75, "y": 2},
1185 {"x": 3.75, "y": 2},
1186 {"x": 4.75, "y": 2},
1187 {"x": 5.75, "y": 2},
1188 {"x": 6.75, "y": 2},
1189 {"x": 7.75, "y": 2},
1190 {"x": 8.75, "y": 2},
1191 {"x": 9.75, "y": 2},
1192 {"x": 10.75, "y": 2},
1193 {"x": 11.75, "y": 2},
1194 {"x": 12.75, "y": 2},
1195 {"x": 13.75, "y": 2, "w": 1.25, "h": 2},
1196
1197 {"x": 0, "y": 3, "w": 2.25},
1198 {"x": 2.25, "y": 3},
1199 {"x": 3.25, "y": 3},
1200 {"x": 4.25, "y": 3},
1201 {"x": 5.25, "y": 3},
1202 {"x": 6.25, "y": 3},
1203 {"x": 7.25, "y": 3},
1204 {"x": 8.25, "y": 3},
1205 {"x": 9.25, "y": 3},
1206 {"x": 10.25, "y": 3},
1207 {"x": 11.25, "y": 3, "w": 1.75},
1208 {"x": 13, "y": 3},
1209 {"x": 14, "y": 3},
1210
1211 {"x": 0, "y": 4, "w": 1.25},
1212 {"x": 1.25, "y": 4, "w": 1.25},
1213 {"x": 2.5, "y": 4, "w": 1.25},
1214 {"x": 3.75, "y": 4, "w": 3 },
1215 {"x": 6.75, "y": 4, "w": 3 },
1216 {"x": 9.75, "y": 4, "w": 1.25 },
1217 {"x": 11, "y": 4 },
1218 {"x": 12, "y": 4 },
1219 {"x": 13, "y": 4 },
1220 {"x": 14, "y": 4 }
1221 ]
1222 },
1223 "LAYOUT_60_iso_7u_spc": {
1224 "layout": [
1225 {"x": 0, "y": 0},
1226 {"x": 1, "y": 0},
1227 {"x": 2, "y": 0},
1228 {"x": 3, "y": 0},
1229 {"x": 4, "y": 0},
1230 {"x": 5, "y": 0},
1231 {"x": 6, "y": 0},
1232 {"x": 7, "y": 0},
1233 {"x": 8, "y": 0},
1234 {"x": 9, "y": 0},
1235 {"x": 10, "y": 0},
1236 {"x": 11, "y": 0},
1237 {"x": 12, "y": 0},
1238 {"x": 13, "y": 0, "w": 2},
1239
1240 {"x": 0, "y": 1, "w": 1.5},
1241 {"x": 1.5, "y": 1},
1242 {"x": 2.5, "y": 1},
1243 {"x": 3.5, "y": 1},
1244 {"x": 4.5, "y": 1},
1245 {"x": 5.5, "y": 1},
1246 {"x": 6.5, "y": 1},
1247 {"x": 7.5, "y": 1},
1248 {"x": 8.5, "y": 1},
1249 {"x": 9.5, "y": 1},
1250 {"x": 10.5, "y": 1},
1251 {"x": 11.5, "y": 1},
1252 {"x": 12.5, "y": 1},
1253 {"x": 13.5, "y": 1, "w": 1.5},
1254
1255 {"x": 0, "y": 2, "w": 1.75},
1256 {"x": 1.75, "y": 2},
1257 {"x": 2.75, "y": 2},
1258 {"x": 3.75, "y": 2},
1259 {"x": 4.75, "y": 2},
1260 {"x": 5.75, "y": 2},
1261 {"x": 6.75, "y": 2},
1262 {"x": 7.75, "y": 2},
1263 {"x": 8.75, "y": 2},
1264 {"x": 9.75, "y": 2},
1265 {"x": 10.75, "y": 2},
1266 {"x": 11.75, "y": 2},
1267 {"x": 12.75, "y": 2},
1268 {"x": 13.75, "y": 2, "w": 1.25, "h": 2},
1269
1270 {"x": 0, "y": 3, "w": 2.25},
1271 {"x": 2.25, "y": 3},
1272 {"x": 3.25, "y": 3},
1273 {"x": 4.25, "y": 3},
1274 {"x": 5.25, "y": 3},
1275 {"x": 6.25, "y": 3},
1276 {"x": 7.25, "y": 3},
1277 {"x": 8.25, "y": 3},
1278 {"x": 9.25, "y": 3},
1279 {"x": 10.25, "y": 3},
1280 {"x": 11.25, "y": 3},
1281 {"x": 12.25, "y": 3, "w": 2.75},
1282
1283 {"x": 0, "y": 4, "w": 1.5},
1284 {"x": 1.5, "y": 4},
1285 {"x": 2.5, "y": 4, "w": 1.5},
1286 {"x": 4, "y": 4, "w": 7},
1287 {"x": 11, "y": 4, "w": 1.5},
1288 {"x": 12.5, "y": 4},
1289 {"x": 13.5, "y": 4, "w": 1.5}
1290 ]
1291 },
1292 "LAYOUT_64_iso": {
1293 "layout": [
1294 {"x": 0, "y": 0},
1295 {"x": 1, "y": 0},
1296 {"x": 2, "y": 0},
1297 {"x": 3, "y": 0},
1298 {"x": 4, "y": 0},
1299 {"x": 5, "y": 0},
1300 {"x": 6, "y": 0},
1301 {"x": 7, "y": 0},
1302 {"x": 8, "y": 0},
1303 {"x": 9, "y": 0},
1304 {"x": 10, "y": 0},
1305 {"x": 11, "y": 0},
1306 {"x": 12, "y": 0},
1307 {"x": 13, "y": 0, "w": 2},
1308
1309
1310 {"x": 0, "y": 1, "w": 1.5},
1311 {"x": 1.5, "y": 1},
1312 {"x": 2.5, "y": 1},
1313 {"x": 3.5, "y": 1},
1314 {"x": 4.5, "y": 1},
1315 {"x": 5.5, "y": 1},
1316 {"x": 6.5, "y": 1},
1317 {"x": 7.5, "y": 1},
1318 {"x": 8.5, "y": 1},
1319 {"x": 9.5, "y": 1},
1320 {"x": 10.5, "y": 1},
1321 {"x": 11.5, "y": 1},
1322 {"x": 12.5, "y": 1},
1323 {"x": 13.5, "y": 1, "w": 1.5},
1324
1325 {"x": 0, "y": 2, "w": 1.75},
1326 {"x": 1.75, "y": 2},
1327 {"x": 2.75, "y": 2},
1328 {"x": 3.75, "y": 2},
1329 {"x": 4.75, "y": 2},
1330 {"x": 5.75, "y": 2},
1331 {"x": 6.75, "y": 2},
1332 {"x": 7.75, "y": 2},
1333 {"x": 8.75, "y": 2},
1334 {"x": 9.75, "y": 2},
1335 {"x": 10.75, "y": 2},
1336 {"x": 11.75, "y": 2},
1337 {"x": 12.75, "y": 2},
1338 {"x": 13.75, "y": 2, "w": 1.25, "h": 2},
1339
1340 {"x": 0, "y": 3, "w": 2},
1341 {"x": 3, "y": 3},
1342 {"x": 4, "y": 3},
1343 {"x": 5, "y": 3},
1344 {"x": 6, "y": 3},
1345 {"x": 7, "y": 3},
1346 {"x": 8, "y": 3},
1347 {"x": 9, "y": 3},
1348 {"x": 10, "y": 3},
1349 {"x": 11, "y": 3},
1350 {"x": 12, "y": 3},
1351 {"x": 13, "y": 3},
1352 {"x": 14, "y": 3},
1353
1354 {"x": 0, "y": 4, "w": 1.25},
1355 {"x": 1.25, "y": 4, "w": 1.25},
1356 {"x": 2.5, "y": 4, "w": 1.25},
1357 {"x": 3.75, "y": 4, "w": 6.25},
1358 {"x": 10, "y": 4 },
1359 {"x": 11, "y": 4 },
1360 {"x": 12, "y": 4 },
1361 {"x": 13, "y": 4 },
1362 {"x": 14, "y": 4 }
1363 ]
1364 },
1365 "LAYOUT_64_iso_6u_spc": {
1366 "layout": [
1367 {"x": 0, "y": 0},
1368 {"x": 1, "y": 0},
1369 {"x": 2, "y": 0},
1370 {"x": 3, "y": 0},
1371 {"x": 4, "y": 0},
1372 {"x": 5, "y": 0},
1373 {"x": 6, "y": 0},
1374 {"x": 7, "y": 0},
1375 {"x": 8, "y": 0},
1376 {"x": 9, "y": 0},
1377 {"x": 10, "y": 0},
1378 {"x": 11, "y": 0},
1379 {"x": 12, "y": 0},
1380 {"x": 13, "y": 0, "w": 2},
1381
1382 {"x": 0, "y": 1, "w": 1.5},
1383 {"x": 1.5, "y": 1},
1384 {"x": 2.5, "y": 1},
1385 {"x": 3.5, "y": 1},
1386 {"x": 4.5, "y": 1},
1387 {"x": 5.5, "y": 1},
1388 {"x": 6.5, "y": 1},
1389 {"x": 7.5, "y": 1},
1390 {"x": 8.5, "y": 1},
1391 {"x": 9.5, "y": 1},
1392 {"x": 10.5, "y": 1},
1393 {"x": 11.5, "y": 1},
1394 {"x": 12.5, "y": 1},
1395 {"x": 13.5, "y": 1, "w": 1.5},
1396
1397 {"x": 0, "y": 2, "w": 1.75},
1398 {"x": 1.75, "y": 2},
1399 {"x": 2.75, "y": 2},
1400 {"x": 3.75, "y": 2},
1401 {"x": 4.75, "y": 2},
1402 {"x": 5.75, "y": 2},
1403 {"x": 6.75, "y": 2},
1404 {"x": 7.75, "y": 2},
1405 {"x": 8.75, "y": 2},
1406 {"x": 9.75, "y": 2},
1407 {"x": 10.75, "y": 2},
1408 {"x": 11.75, "y": 2},
1409 {"x": 12.75, "y": 2},
1410 {"x": 13.75, "y": 2, "w": 1.25, "h": 2},
1411
1412 {"x": 0, "y": 3, "w": 2},
1413 {"x": 3, "y": 3},
1414 {"x": 4, "y": 3},
1415 {"x": 5, "y": 3},
1416 {"x": 6, "y": 3},
1417 {"x": 7, "y": 3},
1418 {"x": 8, "y": 3},
1419 {"x": 9, "y": 3},
1420 {"x": 10, "y": 3},
1421 {"x": 11, "y": 3},
1422 {"x": 12, "y": 3},
1423 {"x": 13, "y": 3},
1424 {"x": 14, "y": 3},
1425
1426 {"x": 0, "y": 4, "w": 1.25},
1427 {"x": 1.25, "y": 4, "w": 1.25},
1428 {"x": 2.5, "y": 4, "w": 1.25},
1429 {"x": 3.75, "y": 4, "w": 6},
1430 {"x": 9.75, "y": 4, "w":1.25 },
1431 {"x": 11, "y": 4 },
1432 {"x": 12, "y": 4 },
1433 {"x": 13, "y": 4 },
1434 {"x": 14, "y": 4 }
1435 ]
1436 },
1437 "LAYOUT_64_iso_3u_spc": {
1438 "layout": [
1439 {"x": 0, "y": 0},
1440 {"x": 1, "y": 0},
1441 {"x": 2, "y": 0},
1442 {"x": 3, "y": 0},
1443 {"x": 4, "y": 0},
1444 {"x": 5, "y": 0},
1445 {"x": 6, "y": 0},
1446 {"x": 7, "y": 0},
1447 {"x": 8, "y": 0},
1448 {"x": 9, "y": 0},
1449 {"x": 10, "y": 0},
1450 {"x": 11, "y": 0},
1451 {"x": 12, "y": 0},
1452 {"x": 13, "y": 0, "w": 2},
1453
1454 {"x": 0, "y": 1, "w": 1.5},
1455 {"x": 1.5, "y": 1},
1456 {"x": 2.5, "y": 1},
1457 {"x": 3.5, "y": 1},
1458 {"x": 4.5, "y": 1},
1459 {"x": 5.5, "y": 1},
1460 {"x": 6.5, "y": 1},
1461 {"x": 7.5, "y": 1},
1462 {"x": 8.5, "y": 1},
1463 {"x": 9.5, "y": 1},
1464 {"x": 10.5, "y": 1},
1465 {"x": 11.5, "y": 1},
1466 {"x": 12.5, "y": 1},
1467 {"x": 13.5, "y": 1, "w": 1.5},
1468
1469 {"x": 0, "y": 2, "w": 1.75},
1470 {"x": 1.75, "y": 2},
1471 {"x": 2.75, "y": 2},
1472 {"x": 3.75, "y": 2},
1473 {"x": 4.75, "y": 2},
1474 {"x": 5.75, "y": 2},
1475 {"x": 6.75, "y": 2},
1476 {"x": 7.75, "y": 2},
1477 {"x": 8.75, "y": 2},
1478 {"x": 9.75, "y": 2},
1479 {"x": 10.75, "y": 2},
1480 {"x": 11.75, "y": 2},
1481 {"x": 12.75, "y": 2},
1482 {"x": 13.75, "y": 2, "w": 1.25, "h": 2},
1483
1484 {"x": 0, "y": 3, "w": 2},
1485 {"x": 3, "y": 3},
1486 {"x": 4, "y": 3},
1487 {"x": 5, "y": 3},
1488 {"x": 6, "y": 3},
1489 {"x": 7, "y": 3},
1490 {"x": 8, "y": 3},
1491 {"x": 9, "y": 3},
1492 {"x": 10, "y": 3},
1493 {"x": 11, "y": 3},
1494 {"x": 12, "y": 3},
1495 {"x": 13, "y": 3},
1496 {"x": 14, "y": 3},
1497
1498 {"x": 0, "y": 4, "w": 1.75},
1499 {"x": 1.75, "y": 4, "w": 1.25},
1500 {"x": 3, "y": 4, "w": 1.25},
1501 {"x": 4.25, "y": 4, "w": 1.25},
1502 {"x": 5.5, "y": 4, "w": 3 },
1503 {"x": 8.5, "y": 4, "w": 1.25 },
1504 {"x": 9.75, "y": 4 , "w": 1.25},
1505 {"x": 11, "y": 4 },
1506 {"x": 12, "y": 4 },
1507 {"x": 13, "y": 4 },
1508 {"x": 14, "y": 4 }
1509 ]
1510 },
1511 "LAYOUT_64_iso_split_3u_spc": {
1512 "layout": [
1513 {"x": 0, "y": 0},
1514 {"x": 1, "y": 0},
1515 {"x": 2, "y": 0},
1516 {"x": 3, "y": 0},
1517 {"x": 4, "y": 0},
1518 {"x": 5, "y": 0},
1519 {"x": 6, "y": 0},
1520 {"x": 7, "y": 0},
1521 {"x": 8, "y": 0},
1522 {"x": 9, "y": 0},
1523 {"x": 10, "y": 0},
1524 {"x": 11, "y": 0},
1525 {"x": 12, "y": 0},
1526 {"x": 13, "y": 0, "w": 2},
1527
1528 {"x": 0, "y": 1, "w": 1.5},
1529 {"x": 1.5, "y": 1},
1530 {"x": 2.5, "y": 1},
1531 {"x": 3.5, "y": 1},
1532 {"x": 4.5, "y": 1},
1533 {"x": 5.5, "y": 1},
1534 {"x": 6.5, "y": 1},
1535 {"x": 7.5, "y": 1},
1536 {"x": 8.5, "y": 1},
1537 {"x": 9.5, "y": 1},
1538 {"x": 10.5, "y": 1},
1539 {"x": 11.5, "y": 1},
1540 {"x": 12.5, "y": 1},
1541 {"x": 13.5, "y": 1, "w": 1.5},
1542
1543 {"x": 0, "y": 2, "w": 1.75},
1544 {"x": 1.75, "y": 2},
1545 {"x": 2.75, "y": 2},
1546 {"x": 3.75, "y": 2},
1547 {"x": 4.75, "y": 2},
1548 {"x": 5.75, "y": 2},
1549 {"x": 6.75, "y": 2},
1550 {"x": 7.75, "y": 2},
1551 {"x": 8.75, "y": 2},
1552 {"x": 9.75, "y": 2},
1553 {"x": 10.75, "y": 2},
1554 {"x": 11.75, "y": 2},
1555 {"x": 12.75, "y": 2},
1556 {"x": 13.75, "y": 2, "w": 1.25, "h": 2},
1557
1558 {"x": 0, "y": 3, "w": 2},
1559 {"x": 3, "y": 3},
1560 {"x": 4, "y": 3},
1561 {"x": 5, "y": 3},
1562 {"x": 6, "y": 3},
1563 {"x": 7, "y": 3},
1564 {"x": 8, "y": 3},
1565 {"x": 9, "y": 3},
1566 {"x": 10, "y": 3},
1567 {"x": 11, "y": 3},
1568 {"x": 12, "y": 3},
1569 {"x": 13, "y": 3},
1570 {"x": 14, "y": 3},
1571
1572 {"x": 0, "y": 4, "w": 1.25},
1573 {"x": 1.25, "y": 4, "w": 1.25},
1574 {"x": 2.5, "y": 4, "w": 1.25},
1575 {"x": 3.75, "y": 4, "w": 3 },
1576 {"x": 6.75, "y": 4, "w": 3 },
1577 {"x": 9.75, "y": 4, "w": 1.25 },
1578 {"x": 11, "y": 4 },
1579 {"x": 12, "y": 4 },
1580 {"x": 13, "y": 4 },
1581 {"x": 14, "y": 4 }
1582 ]
1583 },
1584 "LAYOUT_60_iso_1u_lshift_split_rshift": {
1585 "layout": [
1586 {"x": 0, "y": 0},
1587 {"x": 1, "y": 0},
1588 {"x": 2, "y": 0},
1589 {"x": 3, "y": 0},
1590 {"x": 4, "y": 0},
1591 {"x": 5, "y": 0},
1592 {"x": 6, "y": 0},
1593 {"x": 7, "y": 0},
1594 {"x": 8, "y": 0},
1595 {"x": 9, "y": 0},
1596 {"x": 10, "y": 0},
1597 {"x": 11, "y": 0},
1598 {"x": 12, "y": 0},
1599 {"x": 13, "y": 0, "w": 2},
1600
1601 {"x": 0, "y": 1, "w": 1.5},
1602 {"x": 1.5, "y": 1},
1603 {"x": 2.5, "y": 1},
1604 {"x": 3.5, "y": 1},
1605 {"x": 4.5, "y": 1},
1606 {"x": 5.5, "y": 1},
1607 {"x": 6.5, "y": 1},
1608 {"x": 7.5, "y": 1},
1609 {"x": 8.5, "y": 1},
1610 {"x": 9.5, "y": 1},
1611 {"x": 10.5, "y": 1},
1612 {"x": 11.5, "y": 1},
1613 {"x": 12.5, "y": 1},
1614 {"x": 13.5, "y": 1, "w": 1.5},
1615
1616 {"x": 0, "y": 2, "w": 1.75},
1617 {"x": 1.75, "y": 2},
1618 {"x": 2.75, "y": 2},
1619 {"x": 3.75, "y": 2},
1620 {"x": 4.75, "y": 2},
1621 {"x": 5.75, "y": 2},
1622 {"x": 6.75, "y": 2},
1623 {"x": 7.75, "y": 2},
1624 {"x": 8.75, "y": 2},
1625 {"x": 9.75, "y": 2},
1626 {"x": 10.75, "y": 2},
1627 {"x": 11.75, "y": 2},
1628 {"x": 12.75, "y": 2},
1629 {"x": 13.75, "y": 2, "w": 1.25, "h": 2},
1630
1631 {"x": 0, "y": 3},
1632 {"x": 1, "y": 3},
1633 {"x": 2, "y": 3},
1634 {"x": 3, "y": 3},
1635 {"x": 4, "y": 3},
1636 {"x": 5, "y": 3},
1637 {"x": 6, "y": 3},
1638 {"x": 7, "y": 3},
1639 {"x": 8, "y": 3},
1640 {"x": 9, "y": 3},
1641 {"x": 10, "y": 3},
1642 {"x": 11, "y": 3},
1643 {"x": 12, "y": 3, "w": 2},
1644 {"x": 14, "y": 3},
1645
1646 {"x": 0, "y": 4, "w": 1.25},
1647 {"x": 1.25, "y": 4, "w": 1.25},
1648 {"x": 2.5, "y": 4, "w": 1.25},
1649 {"x": 3.75, "y": 4, "w": 6.25},
1650 {"x": 10, "y": 4, "w": 1.25},
1651 {"x": 11.25, "y": 4, "w": 1.25},
1652 {"x": 12.5, "y": 4, "w": 1.25},
1653 {"x": 13.75, "y": 4, "w": 1.25}
1654 ]
1655 },
1656 "LAYOUT_60_iso_1u_lshift_7u_spc_split_rshift": {
1657 "layout": [
1658 {"x": 0, "y": 0},
1659 {"x": 1, "y": 0},
1660 {"x": 2, "y": 0},
1661 {"x": 3, "y": 0},
1662 {"x": 4, "y": 0},
1663 {"x": 5, "y": 0},
1664 {"x": 6, "y": 0},
1665 {"x": 7, "y": 0},
1666 {"x": 8, "y": 0},
1667 {"x": 9, "y": 0},
1668 {"x": 10, "y": 0},
1669 {"x": 11, "y": 0},
1670 {"x": 12, "y": 0},
1671 {"x": 13, "y": 0, "w": 2},
1672
1673 {"x": 0, "y": 1, "w": 1.5},
1674 {"x": 1.5, "y": 1},
1675 {"x": 2.5, "y": 1},
1676 {"x": 3.5, "y": 1},
1677 {"x": 4.5, "y": 1},
1678 {"x": 5.5, "y": 1},
1679 {"x": 6.5, "y": 1},
1680 {"x": 7.5, "y": 1},
1681 {"x": 8.5, "y": 1},
1682 {"x": 9.5, "y": 1},
1683 {"x": 10.5, "y": 1},
1684 {"x": 11.5, "y": 1},
1685 {"x": 12.5, "y": 1},
1686 {"x": 13.5, "y": 1, "w": 1.5},
1687
1688 {"x": 0, "y": 2, "w": 1.75},
1689 {"x": 1.75, "y": 2},
1690 {"x": 2.75, "y": 2},
1691 {"x": 3.75, "y": 2},
1692 {"x": 4.75, "y": 2},
1693 {"x": 5.75, "y": 2},
1694 {"x": 6.75, "y": 2},
1695 {"x": 7.75, "y": 2},
1696 {"x": 8.75, "y": 2},
1697 {"x": 9.75, "y": 2},
1698 {"x": 10.75, "y": 2},
1699 {"x": 11.75, "y": 2},
1700 {"x": 12.75, "y": 2},
1701 {"x": 13.75, "y": 2, "w": 1.25, "h": 2},
1702
1703 {"x": 0, "y": 3},
1704 {"x": 1, "y": 3},
1705 {"x": 2, "y": 3},
1706 {"x": 3, "y": 3},
1707 {"x": 4, "y": 3},
1708 {"x": 5, "y": 3},
1709 {"x": 6, "y": 3},
1710 {"x": 7, "y": 3},
1711 {"x": 8, "y": 3},
1712 {"x": 9, "y": 3},
1713 {"x": 10, "y": 3},
1714 {"x": 11, "y": 3},
1715 {"x": 12, "y": 3, "w": 2},
1716 {"x": 14, "y": 3},
1717
1718 {"x": 0, "y": 4, "w": 1.5},
1719 {"x": 1.5, "y": 4},
1720 {"x": 2.5, "y": 4, "w": 1.5},
1721 {"x": 4, "y": 4, "w": 7},
1722 {"x": 11, "y": 4, "w": 1.5},
1723 {"x": 12.5, "y": 4},
1724 {"x": 13.5, "y": 4, "w": 1.5}
1725 ]
1726 },
1727 "LAYOUT_60_ansi_split_bs": {
1728 "layout": [
1729 {"x": 0, "y": 0},
1730 {"x": 1, "y": 0},
1731 {"x": 2, "y": 0},
1732 {"x": 3, "y": 0},
1733 {"x": 4, "y": 0},
1734 {"x": 5, "y": 0},
1735 {"x": 6, "y": 0},
1736 {"x": 7, "y": 0},
1737 {"x": 8, "y": 0},
1738 {"x": 9, "y": 0},
1739 {"x": 10, "y": 0},
1740 {"x": 11, "y": 0},
1741 {"x": 12, "y": 0},
1742 {"x": 13, "y": 0},
1743 {"x": 14, "y": 0},
1744
1745 {"x": 0, "y": 1, "w": 1.5},
1746 {"x": 1.5, "y": 1},
1747 {"x": 2.5, "y": 1},
1748 {"x": 3.5, "y": 1},
1749 {"x": 4.5, "y": 1},
1750 {"x": 5.5, "y": 1},
1751 {"x": 6.5, "y": 1},
1752 {"x": 7.5, "y": 1},
1753 {"x": 8.5, "y": 1},
1754 {"x": 9.5, "y": 1},
1755 {"x": 10.5, "y": 1},
1756 {"x": 11.5, "y": 1},
1757 {"x": 12.5, "y": 1},
1758 {"x": 13.5, "y": 1, "w": 1.5},
1759
1760 {"x": 0, "y": 2, "w": 1.75},
1761 {"x": 1.75, "y": 2},
1762 {"x": 2.75, "y": 2},
1763 {"x": 3.75, "y": 2},
1764 {"x": 4.75, "y": 2},
1765 {"x": 5.75, "y": 2},
1766 {"x": 6.75, "y": 2},
1767 {"x": 7.75, "y": 2},
1768 {"x": 8.75, "y": 2},
1769 {"x": 9.75, "y": 2},
1770 {"x": 10.75, "y": 2},
1771 {"x": 11.75, "y": 2},
1772 {"x": 12.75, "y": 2, "w": 2.25},
1773
1774 {"x": 0, "y": 3, "w": 2.25},
1775 {"x": 2.25, "y": 3},
1776 {"x": 3.25, "y": 3},
1777 {"x": 4.25, "y": 3},
1778 {"x": 5.25, "y": 3},
1779 {"x": 6.25, "y": 3},
1780 {"x": 7.25, "y": 3},
1781 {"x": 8.25, "y": 3},
1782 {"x": 9.25, "y": 3},
1783 {"x": 10.25, "y": 3},
1784 {"x": 11.25, "y": 3},
1785 {"x": 12.25, "y": 3, "w": 2.75},
1786
1787 {"x": 0, "y": 4, "w": 1.25},
1788 {"x": 1.25, "y": 4, "w": 1.25},
1789 {"x": 2.5, "y": 4, "w": 1.25},
1790 {"x": 3.75, "y": 4, "w": 6.25},
1791 {"x": 10, "y": 4, "w": 1.25},
1792 {"x": 11.25, "y": 4, "w": 1.25},
1793 {"x": 12.5, "y": 4, "w": 1.25},
1794 {"x": 13.75, "y": 4, "w": 1.25}
1795 ]
1796 },
1797 "LAYOUT_60_ansi_arrow_split_bs": {
1798 "layout": [
1799 {"x": 0, "y": 0},
1800 {"x": 1, "y": 0},
1801 {"x": 2, "y": 0},
1802 {"x": 3, "y": 0},
1803 {"x": 4, "y": 0},
1804 {"x": 5, "y": 0},
1805 {"x": 6, "y": 0},
1806 {"x": 7, "y": 0},
1807 {"x": 8, "y": 0},
1808 {"x": 9, "y": 0},
1809 {"x": 10, "y": 0},
1810 {"x": 11, "y": 0},
1811 {"x": 12, "y": 0},
1812 {"x": 13, "y": 0},
1813 {"x": 14, "y": 0},
1814
1815 {"x": 0, "y": 1, "w": 1.5},
1816 {"x": 1.5, "y": 1},
1817 {"x": 2.5, "y": 1},
1818 {"x": 3.5, "y": 1},
1819 {"x": 4.5, "y": 1},
1820 {"x": 5.5, "y": 1},
1821 {"x": 6.5, "y": 1},
1822 {"x": 7.5, "y": 1},
1823 {"x": 8.5, "y": 1},
1824 {"x": 9.5, "y": 1},
1825 {"x": 10.5, "y": 1},
1826 {"x": 11.5, "y": 1},
1827 {"x": 12.5, "y": 1},
1828 {"x": 13.5, "y": 1, "w": 1.5},
1829
1830 {"x": 0, "y": 2, "w": 1.75},
1831 {"x": 1.75, "y": 2},
1832 {"x": 2.75, "y": 2},
1833 {"x": 3.75, "y": 2},
1834 {"x": 4.75, "y": 2},
1835 {"x": 5.75, "y": 2},
1836 {"x": 6.75, "y": 2},
1837 {"x": 7.75, "y": 2},
1838 {"x": 8.75, "y": 2},
1839 {"x": 9.75, "y": 2},
1840 {"x": 10.75, "y": 2},
1841 {"x": 11.75, "y": 2},
1842 {"x": 12.75, "y": 2, "w": 2.25},
1843
1844 {"x": 0, "y": 3, "w": 2.25},
1845 {"x": 2.25, "y": 3},
1846 {"x": 3.25, "y": 3},
1847 {"x": 4.25, "y": 3},
1848 {"x": 5.25, "y": 3},
1849 {"x": 6.25, "y": 3},
1850 {"x": 7.25, "y": 3},
1851 {"x": 8.25, "y": 3},
1852 {"x": 9.25, "y": 3},
1853 {"x": 10.25, "y": 3},
1854 {"x": 11.25, "y": 3, "w": 1.75},
1855 {"x": 13, "y": 3},
1856 {"x": 14, "y": 3},
1857
1858 {"x": 0, "y": 4, "w": 1.25},
1859 {"x": 1.25, "y": 4, "w": 1.25},
1860 {"x": 2.5, "y": 4, "w": 1.25},
1861 {"x": 3.75, "y": 4, "w": 6.25},
1862 {"x": 10, "y": 4 },
1863 {"x": 11, "y": 4 },
1864 {"x": 12, "y": 4 },
1865 {"x": 13, "y": 4 },
1866 {"x": 14, "y": 4 }
1867 ]
1868 },
1869 "LAYOUT_60_ansi_arrow_6u_spc_split_bs": {
1870 "layout": [
1871 {"x": 0, "y": 0},
1872 {"x": 1, "y": 0},
1873 {"x": 2, "y": 0},
1874 {"x": 3, "y": 0},
1875 {"x": 4, "y": 0},
1876 {"x": 5, "y": 0},
1877 {"x": 6, "y": 0},
1878 {"x": 7, "y": 0},
1879 {"x": 8, "y": 0},
1880 {"x": 9, "y": 0},
1881 {"x": 10, "y": 0},
1882 {"x": 11, "y": 0},
1883 {"x": 12, "y": 0},
1884 {"x": 13, "y": 0},
1885 {"x": 14, "y": 0},
1886
1887 {"x": 0, "y": 1, "w": 1.5},
1888 {"x": 1.5, "y": 1},
1889 {"x": 2.5, "y": 1},
1890 {"x": 3.5, "y": 1},
1891 {"x": 4.5, "y": 1},
1892 {"x": 5.5, "y": 1},
1893 {"x": 6.5, "y": 1},
1894 {"x": 7.5, "y": 1},
1895 {"x": 8.5, "y": 1},
1896 {"x": 9.5, "y": 1},
1897 {"x": 10.5, "y": 1},
1898 {"x": 11.5, "y": 1},
1899 {"x": 12.5, "y": 1},
1900 {"x": 13.5, "y": 1, "w": 1.5},
1901
1902 {"x": 0, "y": 2, "w": 1.75},
1903 {"x": 1.75, "y": 2},
1904 {"x": 2.75, "y": 2},
1905 {"x": 3.75, "y": 2},
1906 {"x": 4.75, "y": 2},
1907 {"x": 5.75, "y": 2},
1908 {"x": 6.75, "y": 2},
1909 {"x": 7.75, "y": 2},
1910 {"x": 8.75, "y": 2},
1911 {"x": 9.75, "y": 2},
1912 {"x": 10.75, "y": 2},
1913 {"x": 11.75, "y": 2},
1914 {"x": 12.75, "y": 2, "w": 2.25},
1915
1916 {"x": 0, "y": 3, "w": 2.25},
1917 {"x": 2.25, "y": 3},
1918 {"x": 3.25, "y": 3},
1919 {"x": 4.25, "y": 3},
1920 {"x": 5.25, "y": 3},
1921 {"x": 6.25, "y": 3},
1922 {"x": 7.25, "y": 3},
1923 {"x": 8.25, "y": 3},
1924 {"x": 9.25, "y": 3},
1925 {"x": 10.25, "y": 3},
1926 {"x": 11.25, "y": 3, "w": 1.75},
1927 {"x": 13, "y": 3},
1928 {"x": 14, "y": 3},
1929
1930 {"x": 0, "y": 4, "w": 1.25},
1931 {"x": 1.25, "y": 4, "w": 1.25},
1932 {"x": 2.5, "y": 4, "w": 1.25},
1933 {"x": 3.75, "y": 4, "w": 6},
1934 {"x": 9.75, "y": 4, "w": 1.25},
1935 {"x": 11, "y": 4 },
1936 {"x": 12, "y": 4 },
1937 {"x": 13, "y": 4 },
1938 {"x": 14, "y": 4 }
1939 ]
1940 },
1941 "LAYOUT_60_ansi_arrow_3u_spc_split_bs": {
1942 "layout": [
1943 {"x": 0, "y": 0},
1944 {"x": 1, "y": 0},
1945 {"x": 2, "y": 0},
1946 {"x": 3, "y": 0},
1947 {"x": 4, "y": 0},
1948 {"x": 5, "y": 0},
1949 {"x": 6, "y": 0},
1950 {"x": 7, "y": 0},
1951 {"x": 8, "y": 0},
1952 {"x": 9, "y": 0},
1953 {"x": 10, "y": 0},
1954 {"x": 11, "y": 0},
1955 {"x": 12, "y": 0},
1956 {"x": 13, "y": 0},
1957 {"x": 14, "y": 0},
1958
1959 {"x": 0, "y": 1, "w": 1.5},
1960 {"x": 1.5, "y": 1},
1961 {"x": 2.5, "y": 1},
1962 {"x": 3.5, "y": 1},
1963 {"x": 4.5, "y": 1},
1964 {"x": 5.5, "y": 1},
1965 {"x": 6.5, "y": 1},
1966 {"x": 7.5, "y": 1},
1967 {"x": 8.5, "y": 1},
1968 {"x": 9.5, "y": 1},
1969 {"x": 10.5, "y": 1},
1970 {"x": 11.5, "y": 1},
1971 {"x": 12.5, "y": 1},
1972 {"x": 13.5, "y": 1, "w": 1.5},
1973
1974 {"x": 0, "y": 2, "w": 1.75},
1975 {"x": 1.75, "y": 2},
1976 {"x": 2.75, "y": 2},
1977 {"x": 3.75, "y": 2},
1978 {"x": 4.75, "y": 2},
1979 {"x": 5.75, "y": 2},
1980 {"x": 6.75, "y": 2},
1981 {"x": 7.75, "y": 2},
1982 {"x": 8.75, "y": 2},
1983 {"x": 9.75, "y": 2},
1984 {"x": 10.75, "y": 2},
1985 {"x": 11.75, "y": 2},
1986 {"x": 12.75, "y": 2, "w": 2.25},
1987
1988 {"x": 0, "y": 3, "w": 2.25},
1989 {"x": 2.25, "y": 3},
1990 {"x": 3.25, "y": 3},
1991 {"x": 4.25, "y": 3},
1992 {"x": 5.25, "y": 3},
1993 {"x": 6.25, "y": 3},
1994 {"x": 7.25, "y": 3},
1995 {"x": 8.25, "y": 3},
1996 {"x": 9.25, "y": 3},
1997 {"x": 10.25, "y": 3},
1998 {"x": 11.25, "y": 3, "w": 1.75},
1999 {"x": 13, "y": 3},
2000 {"x": 14, "y": 3},
2001
2002 {"x": 0, "y": 4, "w": 1.75},
2003 {"x": 1.75, "y": 4, "w": 1.25},
2004 {"x": 3, "y": 4, "w": 1.25},
2005 {"x": 4.25, "y": 4, "w": 1.25},
2006 {"x": 5.5, "y": 4, "w": 3 },
2007 {"x": 8.5, "y": 4, "w": 1.25 },
2008 {"x": 9.75, "y": 4 , "w": 1.25},
2009 {"x": 11, "y": 4 },
2010 {"x": 12, "y": 4 },
2011 {"x": 13, "y": 4 },
2012 {"x": 14, "y": 4 }
2013 ]
2014 },
2015 "LAYOUT_60_ansi_arrow_split_bs_3u_spc": {
2016 "layout": [
2017 {"x": 0, "y": 0},
2018 {"x": 1, "y": 0},
2019 {"x": 2, "y": 0},
2020 {"x": 3, "y": 0},
2021 {"x": 4, "y": 0},
2022 {"x": 5, "y": 0},
2023 {"x": 6, "y": 0},
2024 {"x": 7, "y": 0},
2025 {"x": 8, "y": 0},
2026 {"x": 9, "y": 0},
2027 {"x": 10, "y": 0},
2028 {"x": 11, "y": 0},
2029 {"x": 12, "y": 0},
2030 {"x": 13, "y": 0},
2031 {"x": 14, "y": 0},
2032
2033 {"x": 0, "y": 1, "w": 1.5},
2034 {"x": 1.5, "y": 1},
2035 {"x": 2.5, "y": 1},
2036 {"x": 3.5, "y": 1},
2037 {"x": 4.5, "y": 1},
2038 {"x": 5.5, "y": 1},
2039 {"x": 6.5, "y": 1},
2040 {"x": 7.5, "y": 1},
2041 {"x": 8.5, "y": 1},
2042 {"x": 9.5, "y": 1},
2043 {"x": 10.5, "y": 1},
2044 {"x": 11.5, "y": 1},
2045 {"x": 12.5, "y": 1},
2046 {"x": 13.5, "y": 1, "w": 1.5},
2047
2048 {"x": 0, "y": 2, "w": 1.75},
2049 {"x": 1.75, "y": 2},
2050 {"x": 2.75, "y": 2},
2051 {"x": 3.75, "y": 2},
2052 {"x": 4.75, "y": 2},
2053 {"x": 5.75, "y": 2},
2054 {"x": 6.75, "y": 2},
2055 {"x": 7.75, "y": 2},
2056 {"x": 8.75, "y": 2},
2057 {"x": 9.75, "y": 2},
2058 {"x": 10.75, "y": 2},
2059 {"x": 11.75, "y": 2},
2060 {"x": 12.75, "y": 2, "w": 2.25},
2061
2062 {"x": 0, "y": 3, "w": 2.25},
2063 {"x": 2.25, "y": 3},
2064 {"x": 3.25, "y": 3},
2065 {"x": 4.25, "y": 3},
2066 {"x": 5.25, "y": 3},
2067 {"x": 6.25, "y": 3},
2068 {"x": 7.25, "y": 3},
2069 {"x": 8.25, "y": 3},
2070 {"x": 9.25, "y": 3},
2071 {"x": 10.25, "y": 3},
2072 {"x": 11.25, "y": 3, "w": 1.75},
2073 {"x": 13, "y": 3},
2074 {"x": 14, "y": 3},
2075
2076 {"x": 0, "y": 4, "w": 1.25},
2077 {"x": 1.25, "y": 4, "w": 1.25},
2078 {"x": 2.5, "y": 4, "w": 1.25},
2079 {"x": 3.75, "y": 4, "w": 3 },
2080 {"x": 6.75, "y": 4, "w": 3 },
2081 {"x": 9.75, "y": 4, "w": 1.25 },
2082 {"x": 11, "y": 4 },
2083 {"x": 12, "y": 4 },
2084 {"x": 13, "y": 4 },
2085 {"x": 14, "y": 4 }
2086 ]
2087 },
2088 "LAYOUT_60_ansi_7u_spc_split_bs": {
2089 "layout": [
2090 {"x": 0, "y": 0},
2091 {"x": 1, "y": 0},
2092 {"x": 2, "y": 0},
2093 {"x": 3, "y": 0},
2094 {"x": 4, "y": 0},
2095 {"x": 5, "y": 0},
2096 {"x": 6, "y": 0},
2097 {"x": 7, "y": 0},
2098 {"x": 8, "y": 0},
2099 {"x": 9, "y": 0},
2100 {"x": 10, "y": 0},
2101 {"x": 11, "y": 0},
2102 {"x": 12, "y": 0},
2103 {"x": 13, "y": 0},
2104 {"x": 14, "y": 0},
2105
2106 {"x": 0, "y": 1, "w": 1.5},
2107 {"x": 1.5, "y": 1},
2108 {"x": 2.5, "y": 1},
2109 {"x": 3.5, "y": 1},
2110 {"x": 4.5, "y": 1},
2111 {"x": 5.5, "y": 1},
2112 {"x": 6.5, "y": 1},
2113 {"x": 7.5, "y": 1},
2114 {"x": 8.5, "y": 1},
2115 {"x": 9.5, "y": 1},
2116 {"x": 10.5, "y": 1},
2117 {"x": 11.5, "y": 1},
2118 {"x": 12.5, "y": 1},
2119 {"x": 13.5, "y": 1, "w": 1.5},
2120
2121 {"x": 0, "y": 2, "w": 1.75},
2122 {"x": 1.75, "y": 2},
2123 {"x": 2.75, "y": 2},
2124 {"x": 3.75, "y": 2},
2125 {"x": 4.75, "y": 2},
2126 {"x": 5.75, "y": 2},
2127 {"x": 6.75, "y": 2},
2128 {"x": 7.75, "y": 2},
2129 {"x": 8.75, "y": 2},
2130 {"x": 9.75, "y": 2},
2131 {"x": 10.75, "y": 2},
2132 {"x": 11.75, "y": 2},
2133 {"x": 12.75, "y": 2, "w": 2.25},
2134
2135 {"x": 0, "y": 3, "w": 2.25},
2136 {"x": 2.25, "y": 3},
2137 {"x": 3.25, "y": 3},
2138 {"x": 4.25, "y": 3},
2139 {"x": 5.25, "y": 3},
2140 {"x": 6.25, "y": 3},
2141 {"x": 7.25, "y": 3},
2142 {"x": 8.25, "y": 3},
2143 {"x": 9.25, "y": 3},
2144 {"x": 10.25, "y": 3},
2145 {"x": 11.25, "y": 3},
2146 {"x": 12.25, "y": 3, "w": 2.75},
2147
2148 {"x": 0, "y": 4, "w": 1.5},
2149 {"x": 1.5, "y": 4},
2150 {"x": 2.5, "y": 4, "w": 1.5},
2151 {"x": 4, "y": 4, "w": 7},
2152 {"x": 11, "y": 4, "w": 1.5},
2153 {"x": 12.5, "y": 4},
2154 {"x": 13.5, "y": 4, "w": 1.5}
2155 ]
2156 },
2157 "LAYOUT_64_ansi_split_bs": {
2158 "layout": [
2159 {"x": 0, "y": 0},
2160 {"x": 1, "y": 0},
2161 {"x": 2, "y": 0},
2162 {"x": 3, "y": 0},
2163 {"x": 4, "y": 0},
2164 {"x": 5, "y": 0},
2165 {"x": 6, "y": 0},
2166 {"x": 7, "y": 0},
2167 {"x": 8, "y": 0},
2168 {"x": 9, "y": 0},
2169 {"x": 10, "y": 0},
2170 {"x": 11, "y": 0},
2171 {"x": 12, "y": 0},
2172 {"x": 13, "y": 0},
2173 {"x": 14, "y": 0},
2174
2175 {"x": 0, "y": 1, "w": 1.5},
2176 {"x": 1.5, "y": 1},
2177 {"x": 2.5, "y": 1},
2178 {"x": 3.5, "y": 1},
2179 {"x": 4.5, "y": 1},
2180 {"x": 5.5, "y": 1},
2181 {"x": 6.5, "y": 1},
2182 {"x": 7.5, "y": 1},
2183 {"x": 8.5, "y": 1},
2184 {"x": 9.5, "y": 1},
2185 {"x": 10.5, "y": 1},
2186 {"x": 11.5, "y": 1},
2187 {"x": 12.5, "y": 1},
2188 {"x": 13.5, "y": 1, "w": 1.5},
2189
2190 {"x": 0, "y": 2, "w": 1.75},
2191 {"x": 1.75, "y": 2},
2192 {"x": 2.75, "y": 2},
2193 {"x": 3.75, "y": 2},
2194 {"x": 4.75, "y": 2},
2195 {"x": 5.75, "y": 2},
2196 {"x": 6.75, "y": 2},
2197 {"x": 7.75, "y": 2},
2198 {"x": 8.75, "y": 2},
2199 {"x": 9.75, "y": 2},
2200 {"x": 10.75, "y": 2},
2201 {"x": 11.75, "y": 2},
2202 {"x": 12.75, "y": 2, "w": 2.25},
2203
2204 {"x": 0, "y": 3, "w": 2},
2205 {"x": 3, "y": 3},
2206 {"x": 4, "y": 3},
2207 {"x": 5, "y": 3},
2208 {"x": 6, "y": 3},
2209 {"x": 7, "y": 3},
2210 {"x": 8, "y": 3},
2211 {"x": 9, "y": 3},
2212 {"x": 10, "y": 3},
2213 {"x": 11, "y": 3},
2214 {"x": 12, "y": 3},
2215 {"x": 13, "y": 3},
2216 {"x": 14, "y": 3},
2217
2218 {"x": 0, "y": 4, "w": 1.25},
2219 {"x": 1.25, "y": 4, "w": 1.25},
2220 {"x": 2.5, "y": 4, "w": 1.25},
2221 {"x": 3.75, "y": 4, "w": 6.25},
2222 {"x": 10, "y": 4 },
2223 {"x": 11, "y": 4 },
2224 {"x": 12, "y": 4 },
2225 {"x": 13, "y": 4 },
2226 {"x": 14, "y": 4 }
2227 ]
2228 },
2229 "LAYOUT_64_ansi_6u_spc_split_bs": {
2230 "layout": [
2231 {"x": 0, "y": 0},
2232 {"x": 1, "y": 0},
2233 {"x": 2, "y": 0},
2234 {"x": 3, "y": 0},
2235 {"x": 4, "y": 0},
2236 {"x": 5, "y": 0},
2237 {"x": 6, "y": 0},
2238 {"x": 7, "y": 0},
2239 {"x": 8, "y": 0},
2240 {"x": 9, "y": 0},
2241 {"x": 10, "y": 0},
2242 {"x": 11, "y": 0},
2243 {"x": 12, "y": 0},
2244 {"x": 13, "y": 0},
2245 {"x": 14, "y": 0},
2246
2247 {"x": 0, "y": 1, "w": 1.5},
2248 {"x": 1.5, "y": 1},
2249 {"x": 2.5, "y": 1},
2250 {"x": 3.5, "y": 1},
2251 {"x": 4.5, "y": 1},
2252 {"x": 5.5, "y": 1},
2253 {"x": 6.5, "y": 1},
2254 {"x": 7.5, "y": 1},
2255 {"x": 8.5, "y": 1},
2256 {"x": 9.5, "y": 1},
2257 {"x": 10.5, "y": 1},
2258 {"x": 11.5, "y": 1},
2259 {"x": 12.5, "y": 1},
2260 {"x": 13.5, "y": 1, "w": 1.5},
2261
2262 {"x": 0, "y": 2, "w": 1.75},
2263 {"x": 1.75, "y": 2},
2264 {"x": 2.75, "y": 2},
2265 {"x": 3.75, "y": 2},
2266 {"x": 4.75, "y": 2},
2267 {"x": 5.75, "y": 2},
2268 {"x": 6.75, "y": 2},
2269 {"x": 7.75, "y": 2},
2270 {"x": 8.75, "y": 2},
2271 {"x": 9.75, "y": 2},
2272 {"x": 10.75, "y": 2},
2273 {"x": 11.75, "y": 2},
2274 {"x": 12.75, "y": 2, "w": 2.25},
2275
2276 {"x": 0, "y": 3, "w": 2},
2277 {"x": 3, "y": 3},
2278 {"x": 4, "y": 3},
2279 {"x": 5, "y": 3},
2280 {"x": 6, "y": 3},
2281 {"x": 7, "y": 3},
2282 {"x": 8, "y": 3},
2283 {"x": 9, "y": 3},
2284 {"x": 10, "y": 3},
2285 {"x": 11, "y": 3},
2286 {"x": 12, "y": 3},
2287 {"x": 13, "y": 3},
2288 {"x": 14, "y": 3},
2289
2290 {"x": 0, "y": 4, "w": 1.25},
2291 {"x": 1.25, "y": 4, "w": 1.25},
2292 {"x": 2.5, "y": 4, "w": 1.25},
2293 {"x": 3.75, "y": 4, "w": 6},
2294 {"x": 9.75, "y": 4, "w":1.25 },
2295 {"x": 11, "y": 4 },
2296 {"x": 12, "y": 4 },
2297 {"x": 13, "y": 4 },
2298 {"x": 14, "y": 4 }
2299 ]
2300 },
2301 "LAYOUT_64_ansi_3u_spc_split_bs": {
2302 "layout": [
2303 {"x": 0, "y": 0},
2304 {"x": 1, "y": 0},
2305 {"x": 2, "y": 0},
2306 {"x": 3, "y": 0},
2307 {"x": 4, "y": 0},
2308 {"x": 5, "y": 0},
2309 {"x": 6, "y": 0},
2310 {"x": 7, "y": 0},
2311 {"x": 8, "y": 0},
2312 {"x": 9, "y": 0},
2313 {"x": 10, "y": 0},
2314 {"x": 11, "y": 0},
2315 {"x": 12, "y": 0},
2316 {"x": 13, "y": 0},
2317 {"x": 14, "y": 0},
2318
2319 {"x": 0, "y": 1, "w": 1.5},
2320 {"x": 1.5, "y": 1},
2321 {"x": 2.5, "y": 1},
2322 {"x": 3.5, "y": 1},
2323 {"x": 4.5, "y": 1},
2324 {"x": 5.5, "y": 1},
2325 {"x": 6.5, "y": 1},
2326 {"x": 7.5, "y": 1},
2327 {"x": 8.5, "y": 1},
2328 {"x": 9.5, "y": 1},
2329 {"x": 10.5, "y": 1},
2330 {"x": 11.5, "y": 1},
2331 {"x": 12.5, "y": 1},
2332 {"x": 13.5, "y": 1, "w": 1.5},
2333
2334 {"x": 0, "y": 2, "w": 1.75},
2335 {"x": 1.75, "y": 2},
2336 {"x": 2.75, "y": 2},
2337 {"x": 3.75, "y": 2},
2338 {"x": 4.75, "y": 2},
2339 {"x": 5.75, "y": 2},
2340 {"x": 6.75, "y": 2},
2341 {"x": 7.75, "y": 2},
2342 {"x": 8.75, "y": 2},
2343 {"x": 9.75, "y": 2},
2344 {"x": 10.75, "y": 2},
2345 {"x": 11.75, "y": 2},
2346 {"x": 12.75, "y": 2, "w": 2.25},
2347
2348 {"x": 0, "y": 3, "w": 2},
2349 {"x": 3, "y": 3},
2350 {"x": 4, "y": 3},
2351 {"x": 5, "y": 3},
2352 {"x": 6, "y": 3},
2353 {"x": 7, "y": 3},
2354 {"x": 8, "y": 3},
2355 {"x": 9, "y": 3},
2356 {"x": 10, "y": 3},
2357 {"x": 11, "y": 3},
2358 {"x": 12, "y": 3},
2359 {"x": 13, "y": 3},
2360 {"x": 14, "y": 3},
2361
2362 {"x": 0, "y": 4, "w": 1.75},
2363 {"x": 1.75, "y": 4, "w": 1.25},
2364 {"x": 3, "y": 4, "w": 1.25},
2365 {"x": 4.25, "y": 4, "w": 1.25},
2366 {"x": 5.5, "y": 4, "w": 3 },
2367 {"x": 8.5, "y": 4, "w": 1.25 },
2368 {"x": 9.75, "y": 4 , "w": 1.25},
2369 {"x": 11, "y": 4 },
2370 {"x": 12, "y": 4 },
2371 {"x": 13, "y": 4 },
2372 {"x": 14, "y": 4 }
2373 ]
2374 },
2375 "LAYOUT_64_ansi_split_bs_3u_spc": {
2376 "layout": [
2377 {"x": 0, "y": 0},
2378 {"x": 1, "y": 0},
2379 {"x": 2, "y": 0},
2380 {"x": 3, "y": 0},
2381 {"x": 4, "y": 0},
2382 {"x": 5, "y": 0},
2383 {"x": 6, "y": 0},
2384 {"x": 7, "y": 0},
2385 {"x": 8, "y": 0},
2386 {"x": 9, "y": 0},
2387 {"x": 10, "y": 0},
2388 {"x": 11, "y": 0},
2389 {"x": 12, "y": 0},
2390 {"x": 13, "y": 0},
2391 {"x": 14, "y": 0},
2392
2393 {"x": 0, "y": 1, "w": 1.5},
2394 {"x": 1.5, "y": 1},
2395 {"x": 2.5, "y": 1},
2396 {"x": 3.5, "y": 1},
2397 {"x": 4.5, "y": 1},
2398 {"x": 5.5, "y": 1},
2399 {"x": 6.5, "y": 1},
2400 {"x": 7.5, "y": 1},
2401 {"x": 8.5, "y": 1},
2402 {"x": 9.5, "y": 1},
2403 {"x": 10.5, "y": 1},
2404 {"x": 11.5, "y": 1},
2405 {"x": 12.5, "y": 1},
2406 {"x": 13.5, "y": 1, "w": 1.5},
2407
2408 {"x": 0, "y": 2, "w": 1.75},
2409 {"x": 1.75, "y": 2},
2410 {"x": 2.75, "y": 2},
2411 {"x": 3.75, "y": 2},
2412 {"x": 4.75, "y": 2},
2413 {"x": 5.75, "y": 2},
2414 {"x": 6.75, "y": 2},
2415 {"x": 7.75, "y": 2},
2416 {"x": 8.75, "y": 2},
2417 {"x": 9.75, "y": 2},
2418 {"x": 10.75, "y": 2},
2419 {"x": 11.75, "y": 2},
2420 {"x": 12.75, "y": 2, "w": 2.25},
2421
2422 {"x": 0, "y": 3, "w": 2},
2423 {"x": 3, "y": 3},
2424 {"x": 4, "y": 3},
2425 {"x": 5, "y": 3},
2426 {"x": 6, "y": 3},
2427 {"x": 7, "y": 3},
2428 {"x": 8, "y": 3},
2429 {"x": 9, "y": 3},
2430 {"x": 10, "y": 3},
2431 {"x": 11, "y": 3},
2432 {"x": 12, "y": 3},
2433 {"x": 13, "y": 3},
2434 {"x": 14, "y": 3},
2435
2436 {"x": 0, "y": 4, "w": 1.25},
2437 {"x": 1.25, "y": 4, "w": 1.25},
2438 {"x": 2.5, "y": 4, "w": 1.25},
2439 {"x": 3.75, "y": 4, "w": 3 },
2440 {"x": 6.75, "y": 4, "w": 3 },
2441 {"x": 9.75, "y": 4, "w": 1.25 },
2442 {"x": 11, "y": 4 },
2443 {"x": 12, "y": 4 },
2444 {"x": 13, "y": 4 },
2445 {"x": 14, "y": 4 }
2446 ]
2447 },
2448 "LAYOUT_60_iso_split_bs": {
2449 "layout": [
2450 {"x": 0, "y": 0},
2451 {"x": 1, "y": 0},
2452 {"x": 2, "y": 0},
2453 {"x": 3, "y": 0},
2454 {"x": 4, "y": 0},
2455 {"x": 5, "y": 0},
2456 {"x": 6, "y": 0},
2457 {"x": 7, "y": 0},
2458 {"x": 8, "y": 0},
2459 {"x": 9, "y": 0},
2460 {"x": 10, "y": 0},
2461 {"x": 11, "y": 0},
2462 {"x": 12, "y": 0},
2463 {"x": 13, "y": 0},
2464 {"x": 14, "y": 0},
2465
2466 {"x": 0, "y": 1, "w": 1.5},
2467 {"x": 1.5, "y": 1},
2468 {"x": 2.5, "y": 1},
2469 {"x": 3.5, "y": 1},
2470 {"x": 4.5, "y": 1},
2471 {"x": 5.5, "y": 1},
2472 {"x": 6.5, "y": 1},
2473 {"x": 7.5, "y": 1},
2474 {"x": 8.5, "y": 1},
2475 {"x": 9.5, "y": 1},
2476 {"x": 10.5, "y": 1},
2477 {"x": 11.5, "y": 1},
2478 {"x": 12.5, "y": 1},
2479 {"x": 13.5, "y": 1, "w": 1.5},
2480
2481 {"x": 0, "y": 2, "w": 1.75},
2482 {"x": 1.75, "y": 2},
2483 {"x": 2.75, "y": 2},
2484 {"x": 3.75, "y": 2},
2485 {"x": 4.75, "y": 2},
2486 {"x": 5.75, "y": 2},
2487 {"x": 6.75, "y": 2},
2488 {"x": 7.75, "y": 2},
2489 {"x": 8.75, "y": 2},
2490 {"x": 9.75, "y": 2},
2491 {"x": 10.75, "y": 2},
2492 {"x": 11.75, "y": 2},
2493 {"x": 12.75, "y": 2},
2494 {"x": 13.75, "y": 2, "w": 1.25, "h": 2},
2495
2496 {"x": 0, "y": 3, "w": 2.25},
2497 {"x": 2.25, "y": 3},
2498 {"x": 3.25, "y": 3},
2499 {"x": 4.25, "y": 3},
2500 {"x": 5.25, "y": 3},
2501 {"x": 6.25, "y": 3},
2502 {"x": 7.25, "y": 3},
2503 {"x": 8.25, "y": 3},
2504 {"x": 9.25, "y": 3},
2505 {"x": 10.25, "y": 3},
2506 {"x": 11.25, "y": 3},
2507 {"x": 12.25, "y": 3, "w": 2.75},
2508
2509 {"x": 0, "y": 4, "w": 1.25},
2510 {"x": 1.25, "y": 4, "w": 1.25},
2511 {"x": 2.5, "y": 4, "w": 1.25},
2512 {"x": 3.75, "y": 4, "w": 6.25},
2513 {"x": 10, "y": 4, "w": 1.25},
2514 {"x": 11.25, "y": 4, "w": 1.25},
2515 {"x": 12.5, "y": 4, "w": 1.25},
2516 {"x": 13.75, "y": 4, "w": 1.25}
2517 ]
2518 },
2519 "LAYOUT_60_iso_split_bs_rshift": {
2520 "layout": [
2521 {"x": 0, "y": 0},
2522 {"x": 1, "y": 0},
2523 {"x": 2, "y": 0},
2524 {"x": 3, "y": 0},
2525 {"x": 4, "y": 0},
2526 {"x": 5, "y": 0},
2527 {"x": 6, "y": 0},
2528 {"x": 7, "y": 0},
2529 {"x": 8, "y": 0},
2530 {"x": 9, "y": 0},
2531 {"x": 10, "y": 0},
2532 {"x": 11, "y": 0},
2533 {"x": 12, "y": 0},
2534 {"x": 13, "y": 0},
2535 {"x": 14, "y": 0},
2536
2537 {"x": 0, "y": 1, "w": 1.5},
2538 {"x": 1.5, "y": 1},
2539 {"x": 2.5, "y": 1},
2540 {"x": 3.5, "y": 1},
2541 {"x": 4.5, "y": 1},
2542 {"x": 5.5, "y": 1},
2543 {"x": 6.5, "y": 1},
2544 {"x": 7.5, "y": 1},
2545 {"x": 8.5, "y": 1},
2546 {"x": 9.5, "y": 1},
2547 {"x": 10.5, "y": 1},
2548 {"x": 11.5, "y": 1},
2549 {"x": 12.5, "y": 1},
2550 {"x": 13.5, "y": 1, "w": 1.5},
2551
2552 {"x": 0, "y": 2, "w": 1.75},
2553 {"x": 1.75, "y": 2},
2554 {"x": 2.75, "y": 2},
2555 {"x": 3.75, "y": 2},
2556 {"x": 4.75, "y": 2},
2557 {"x": 5.75, "y": 2},
2558 {"x": 6.75, "y": 2},
2559 {"x": 7.75, "y": 2},
2560 {"x": 8.75, "y": 2},
2561 {"x": 9.75, "y": 2},
2562 {"x": 10.75, "y": 2},
2563 {"x": 11.75, "y": 2},
2564 {"x": 12.75, "y": 2},
2565 {"x": 13.75, "y": 2, "w": 1.25, "h": 2},
2566
2567 {"x": 0, "y": 3, "w": 1.25},
2568 {"x": 1.25, "y": 3},
2569 {"x": 2.25, "y": 3},
2570 {"x": 3.25, "y": 3},
2571 {"x": 4.25, "y": 3},
2572 {"x": 5.25, "y": 3},
2573 {"x": 6.25, "y": 3},
2574 {"x": 7.25, "y": 3},
2575 {"x": 8.25, "y": 3},
2576 {"x": 9.25, "y": 3},
2577 {"x": 10.25, "y": 3},
2578 {"x": 11.25, "y": 3},
2579 {"x": 12.25, "y": 3, "w": 1.75},
2580 {"x": 14, "y": 3},
2581
2582 {"x": 0, "y": 4, "w": 1.25},
2583 {"x": 1.25, "y": 4, "w": 1.25},
2584 {"x": 2.5, "y": 4, "w": 1.25},
2585 {"x": 3.75, "y": 4, "w": 6.25},
2586 {"x": 10, "y": 4, "w": 1.25},
2587 {"x": 11.25, "y": 4, "w": 1.25},
2588 {"x": 12.5, "y": 4, "w": 1.25},
2589 {"x": 13.75, "y": 4, "w": 1.25}
2590 ]
2591 },
2592 "LAYOUT_60_iso_7u_spc_split_bs_rshift": {
2593 "layout": [
2594 {"x": 0, "y": 0},
2595 {"x": 1, "y": 0},
2596 {"x": 2, "y": 0},
2597 {"x": 3, "y": 0},
2598 {"x": 4, "y": 0},
2599 {"x": 5, "y": 0},
2600 {"x": 6, "y": 0},
2601 {"x": 7, "y": 0},
2602 {"x": 8, "y": 0},
2603 {"x": 9, "y": 0},
2604 {"x": 10, "y": 0},
2605 {"x": 11, "y": 0},
2606 {"x": 12, "y": 0},
2607 {"x": 13, "y": 0},
2608 {"x": 14, "y": 0},
2609
2610 {"x": 0, "y": 1, "w": 1.5},
2611 {"x": 1.5, "y": 1},
2612 {"x": 2.5, "y": 1},
2613 {"x": 3.5, "y": 1},
2614 {"x": 4.5, "y": 1},
2615 {"x": 5.5, "y": 1},
2616 {"x": 6.5, "y": 1},
2617 {"x": 7.5, "y": 1},
2618 {"x": 8.5, "y": 1},
2619 {"x": 9.5, "y": 1},
2620 {"x": 10.5, "y": 1},
2621 {"x": 11.5, "y": 1},
2622 {"x": 12.5, "y": 1},
2623 {"x": 13.5, "y": 1, "w": 1.5},
2624
2625 {"x": 0, "y": 2, "w": 1.75},
2626 {"x": 1.75, "y": 2},
2627 {"x": 2.75, "y": 2},
2628 {"x": 3.75, "y": 2},
2629 {"x": 4.75, "y": 2},
2630 {"x": 5.75, "y": 2},
2631 {"x": 6.75, "y": 2},
2632 {"x": 7.75, "y": 2},
2633 {"x": 8.75, "y": 2},
2634 {"x": 9.75, "y": 2},
2635 {"x": 10.75, "y": 2},
2636 {"x": 11.75, "y": 2},
2637 {"x": 12.75, "y": 2},
2638 {"x": 13.75, "y": 2, "w": 1.25, "h": 2},
2639
2640 {"x": 0, "y": 3, "w": 1.25},
2641 {"x": 1.25, "y": 3},
2642 {"x": 2.25, "y": 3},
2643 {"x": 3.25, "y": 3},
2644 {"x": 4.25, "y": 3},
2645 {"x": 5.25, "y": 3},
2646 {"x": 6.25, "y": 3},
2647 {"x": 7.25, "y": 3},
2648 {"x": 8.25, "y": 3},
2649 {"x": 9.25, "y": 3},
2650 {"x": 10.25, "y": 3},
2651 {"x": 11.25, "y": 3},
2652 {"x": 12.25, "y": 3, "w": 1.75},
2653 {"x": 14, "y": 3},
2654
2655 {"x": 0, "y": 4, "w": 1.5},
2656 {"x": 1.5, "y": 4},
2657 {"x": 2.5, "y": 4, "w": 1.5},
2658 {"x": 4, "y": 4, "w": 7},
2659 {"x": 11, "y": 4, "w": 1.5},
2660 {"x": 12.5, "y": 4},
2661 {"x": 13.5, "y": 4, "w": 1.5}
2662 ]
2663 },
2664 "LAYOUT_60_iso_arrow_split_bs": {
2665 "layout": [
2666 {"x": 0, "y": 0},
2667 {"x": 1, "y": 0},
2668 {"x": 2, "y": 0},
2669 {"x": 3, "y": 0},
2670 {"x": 4, "y": 0},
2671 {"x": 5, "y": 0},
2672 {"x": 6, "y": 0},
2673 {"x": 7, "y": 0},
2674 {"x": 8, "y": 0},
2675 {"x": 9, "y": 0},
2676 {"x": 10, "y": 0},
2677 {"x": 11, "y": 0},
2678 {"x": 12, "y": 0},
2679 {"x": 13, "y": 0},
2680 {"x": 14, "y": 0},
2681
2682 {"x": 0, "y": 1, "w": 1.5},
2683 {"x": 1.5, "y": 1},
2684 {"x": 2.5, "y": 1},
2685 {"x": 3.5, "y": 1},
2686 {"x": 4.5, "y": 1},
2687 {"x": 5.5, "y": 1},
2688 {"x": 6.5, "y": 1},
2689 {"x": 7.5, "y": 1},
2690 {"x": 8.5, "y": 1},
2691 {"x": 9.5, "y": 1},
2692 {"x": 10.5, "y": 1},
2693 {"x": 11.5, "y": 1},
2694 {"x": 12.5, "y": 1},
2695 {"x": 13.5, "y": 1, "w": 1.5},
2696
2697 {"x": 0, "y": 2, "w": 1.75},
2698 {"x": 1.75, "y": 2},
2699 {"x": 2.75, "y": 2},
2700 {"x": 3.75, "y": 2},
2701 {"x": 4.75, "y": 2},
2702 {"x": 5.75, "y": 2},
2703 {"x": 6.75, "y": 2},
2704 {"x": 7.75, "y": 2},
2705 {"x": 8.75, "y": 2},
2706 {"x": 9.75, "y": 2},
2707 {"x": 10.75, "y": 2},
2708 {"x": 11.75, "y": 2},
2709 {"x": 12.75, "y": 2},
2710 {"x": 13.75, "y": 2, "w": 1.25, "h": 2},
2711
2712 {"x": 0, "y": 3, "w": 2.25},
2713 {"x": 2.25, "y": 3},
2714 {"x": 3.25, "y": 3},
2715 {"x": 4.25, "y": 3},
2716 {"x": 5.25, "y": 3},
2717 {"x": 6.25, "y": 3},
2718 {"x": 7.25, "y": 3},
2719 {"x": 8.25, "y": 3},
2720 {"x": 9.25, "y": 3},
2721 {"x": 10.25, "y": 3},
2722 {"x": 11.25, "y": 3, "w": 1.75},
2723 {"x": 13, "y": 3},
2724 {"x": 14, "y": 3},
2725
2726 {"x": 0, "y": 4, "w": 1.25},
2727 {"x": 1.25, "y": 4, "w": 1.25},
2728 {"x": 2.5, "y": 4, "w": 1.25},
2729 {"x": 3.75, "y": 4, "w": 6.25},
2730 {"x": 10, "y": 4 },
2731 {"x": 11, "y": 4 },
2732 {"x": 12, "y": 4 },
2733 {"x": 13, "y": 4 },
2734 {"x": 14, "y": 4 }
2735 ]
2736 },
2737 "LAYOUT_60_iso_arrow_6u_spc_split_bs": {
2738 "layout": [
2739 {"x": 0, "y": 0},
2740 {"x": 1, "y": 0},
2741 {"x": 2, "y": 0},
2742 {"x": 3, "y": 0},
2743 {"x": 4, "y": 0},
2744 {"x": 5, "y": 0},
2745 {"x": 6, "y": 0},
2746 {"x": 7, "y": 0},
2747 {"x": 8, "y": 0},
2748 {"x": 9, "y": 0},
2749 {"x": 10, "y": 0},
2750 {"x": 11, "y": 0},
2751 {"x": 12, "y": 0},
2752 {"x": 13, "y": 0},
2753 {"x": 14, "y": 0},
2754
2755 {"x": 0, "y": 1, "w": 1.5},
2756 {"x": 1.5, "y": 1},
2757 {"x": 2.5, "y": 1},
2758 {"x": 3.5, "y": 1},
2759 {"x": 4.5, "y": 1},
2760 {"x": 5.5, "y": 1},
2761 {"x": 6.5, "y": 1},
2762 {"x": 7.5, "y": 1},
2763 {"x": 8.5, "y": 1},
2764 {"x": 9.5, "y": 1},
2765 {"x": 10.5, "y": 1},
2766 {"x": 11.5, "y": 1},
2767 {"x": 12.5, "y": 1},
2768 {"x": 13.5, "y": 1, "w": 1.5},
2769
2770 {"x": 0, "y": 2, "w": 1.75},
2771 {"x": 1.75, "y": 2},
2772 {"x": 2.75, "y": 2},
2773 {"x": 3.75, "y": 2},
2774 {"x": 4.75, "y": 2},
2775 {"x": 5.75, "y": 2},
2776 {"x": 6.75, "y": 2},
2777 {"x": 7.75, "y": 2},
2778 {"x": 8.75, "y": 2},
2779 {"x": 9.75, "y": 2},
2780 {"x": 10.75, "y": 2},
2781 {"x": 11.75, "y": 2},
2782 {"x": 12.75, "y": 2},
2783 {"x": 13.75, "y": 2, "w": 1.25, "h": 2},
2784
2785 {"x": 0, "y": 3, "w": 2.25},
2786 {"x": 2.25, "y": 3},
2787 {"x": 3.25, "y": 3},
2788 {"x": 4.25, "y": 3},
2789 {"x": 5.25, "y": 3},
2790 {"x": 6.25, "y": 3},
2791 {"x": 7.25, "y": 3},
2792 {"x": 8.25, "y": 3},
2793 {"x": 9.25, "y": 3},
2794 {"x": 10.25, "y": 3},
2795 {"x": 11.25, "y": 3, "w": 1.75},
2796 {"x": 13, "y": 3},
2797 {"x": 14, "y": 3},
2798
2799 {"x": 0, "y": 4, "w": 1.25},
2800 {"x": 1.25, "y": 4, "w": 1.25},
2801 {"x": 2.5, "y": 4, "w": 1.25},
2802 {"x": 3.75, "y": 4, "w": 6},
2803 {"x": 9.75, "y": 4, "w": 1.25},
2804 {"x": 11, "y": 4 },
2805 {"x": 12, "y": 4 },
2806 {"x": 13, "y": 4 },
2807 {"x": 14, "y": 4 }
2808 ]
2809 },
2810 "LAYOUT_60_iso_arrow_3u_spc_split_bs": {
2811 "layout": [
2812 {"x": 0, "y": 0},
2813 {"x": 1, "y": 0},
2814 {"x": 2, "y": 0},
2815 {"x": 3, "y": 0},
2816 {"x": 4, "y": 0},
2817 {"x": 5, "y": 0},
2818 {"x": 6, "y": 0},
2819 {"x": 7, "y": 0},
2820 {"x": 8, "y": 0},
2821 {"x": 9, "y": 0},
2822 {"x": 10, "y": 0},
2823 {"x": 11, "y": 0},
2824 {"x": 12, "y": 0},
2825 {"x": 13, "y": 0},
2826 {"x": 14, "y": 0},
2827
2828 {"x": 0, "y": 1, "w": 1.5},
2829 {"x": 1.5, "y": 1},
2830 {"x": 2.5, "y": 1},
2831 {"x": 3.5, "y": 1},
2832 {"x": 4.5, "y": 1},
2833 {"x": 5.5, "y": 1},
2834 {"x": 6.5, "y": 1},
2835 {"x": 7.5, "y": 1},
2836 {"x": 8.5, "y": 1},
2837 {"x": 9.5, "y": 1},
2838 {"x": 10.5, "y": 1},
2839 {"x": 11.5, "y": 1},
2840 {"x": 12.5, "y": 1},
2841 {"x": 13.5, "y": 1, "w": 1.5},
2842
2843 {"x": 0, "y": 2, "w": 1.75},
2844 {"x": 1.75, "y": 2},
2845 {"x": 2.75, "y": 2},
2846 {"x": 3.75, "y": 2},
2847 {"x": 4.75, "y": 2},
2848 {"x": 5.75, "y": 2},
2849 {"x": 6.75, "y": 2},
2850 {"x": 7.75, "y": 2},
2851 {"x": 8.75, "y": 2},
2852 {"x": 9.75, "y": 2},
2853 {"x": 10.75, "y": 2},
2854 {"x": 11.75, "y": 2},
2855 {"x": 12.75, "y": 2},
2856 {"x": 13.75, "y": 2, "w": 1.25, "h": 2},
2857
2858 {"x": 0, "y": 3, "w": 2.25},
2859 {"x": 2.25, "y": 3},
2860 {"x": 3.25, "y": 3},
2861 {"x": 4.25, "y": 3},
2862 {"x": 5.25, "y": 3},
2863 {"x": 6.25, "y": 3},
2864 {"x": 7.25, "y": 3},
2865 {"x": 8.25, "y": 3},
2866 {"x": 9.25, "y": 3},
2867 {"x": 10.25, "y": 3},
2868 {"x": 11.25, "y": 3, "w": 1.75},
2869 {"x": 13, "y": 3},
2870 {"x": 14, "y": 3},
2871
2872 {"x": 0, "y": 4, "w": 1.75},
2873 {"x": 1.75, "y": 4, "w": 1.25},
2874 {"x": 3, "y": 4, "w": 1.25},
2875 {"x": 4.25, "y": 4, "w": 1.25},
2876 {"x": 5.5, "y": 4, "w": 3 },
2877 {"x": 8.5, "y": 4, "w": 1.25 },
2878 {"x": 9.75, "y": 4 , "w": 1.25},
2879 {"x": 11, "y": 4 },
2880 {"x": 12, "y": 4 },
2881 {"x": 13, "y": 4 },
2882 {"x": 14, "y": 4 }
2883 ]
2884 },
2885 "LAYOUT_60_iso_arrow_split_bs_3u_spc": {
2886 "layout": [
2887 {"x": 0, "y": 0},
2888 {"x": 1, "y": 0},
2889 {"x": 2, "y": 0},
2890 {"x": 3, "y": 0},
2891 {"x": 4, "y": 0},
2892 {"x": 5, "y": 0},
2893 {"x": 6, "y": 0},
2894 {"x": 7, "y": 0},
2895 {"x": 8, "y": 0},
2896 {"x": 9, "y": 0},
2897 {"x": 10, "y": 0},
2898 {"x": 11, "y": 0},
2899 {"x": 12, "y": 0},
2900 {"x": 13, "y": 0},
2901 {"x": 14, "y": 0},
2902
2903 {"x": 0, "y": 1, "w": 1.5},
2904 {"x": 1.5, "y": 1},
2905 {"x": 2.5, "y": 1},
2906 {"x": 3.5, "y": 1},
2907 {"x": 4.5, "y": 1},
2908 {"x": 5.5, "y": 1},
2909 {"x": 6.5, "y": 1},
2910 {"x": 7.5, "y": 1},
2911 {"x": 8.5, "y": 1},
2912 {"x": 9.5, "y": 1},
2913 {"x": 10.5, "y": 1},
2914 {"x": 11.5, "y": 1},
2915 {"x": 12.5, "y": 1},
2916 {"x": 13.5, "y": 1, "w": 1.5},
2917
2918 {"x": 0, "y": 2, "w": 1.75},
2919 {"x": 1.75, "y": 2},
2920 {"x": 2.75, "y": 2},
2921 {"x": 3.75, "y": 2},
2922 {"x": 4.75, "y": 2},
2923 {"x": 5.75, "y": 2},
2924 {"x": 6.75, "y": 2},
2925 {"x": 7.75, "y": 2},
2926 {"x": 8.75, "y": 2},
2927 {"x": 9.75, "y": 2},
2928 {"x": 10.75, "y": 2},
2929 {"x": 11.75, "y": 2},
2930 {"x": 12.75, "y": 2},
2931 {"x": 13.75, "y": 2, "w": 1.25, "h": 2},
2932
2933 {"x": 0, "y": 3, "w": 2.25},
2934 {"x": 2.25, "y": 3},
2935 {"x": 3.25, "y": 3},
2936 {"x": 4.25, "y": 3},
2937 {"x": 5.25, "y": 3},
2938 {"x": 6.25, "y": 3},
2939 {"x": 7.25, "y": 3},
2940 {"x": 8.25, "y": 3},
2941 {"x": 9.25, "y": 3},
2942 {"x": 10.25, "y": 3},
2943 {"x": 11.25, "y": 3, "w": 1.75},
2944 {"x": 13, "y": 3},
2945 {"x": 14, "y": 3},
2946
2947 {"x": 0, "y": 4, "w": 1.25},
2948 {"x": 1.25, "y": 4, "w": 1.25},
2949 {"x": 2.5, "y": 4, "w": 1.25},
2950 {"x": 3.75, "y": 4, "w": 3 },
2951 {"x": 6.75, "y": 4, "w": 3 },
2952 {"x": 9.75, "y": 4, "w": 1.25 },
2953 {"x": 11, "y": 4 },
2954 {"x": 12, "y": 4 },
2955 {"x": 13, "y": 4 },
2956 {"x": 14, "y": 4 }
2957 ]
2958 },
2959 "LAYOUT_60_iso_7u_spc_split_bs": {
2960 "layout": [
2961 {"x": 0, "y": 0},
2962 {"x": 1, "y": 0},
2963 {"x": 2, "y": 0},
2964 {"x": 3, "y": 0},
2965 {"x": 4, "y": 0},
2966 {"x": 5, "y": 0},
2967 {"x": 6, "y": 0},
2968 {"x": 7, "y": 0},
2969 {"x": 8, "y": 0},
2970 {"x": 9, "y": 0},
2971 {"x": 10, "y": 0},
2972 {"x": 11, "y": 0},
2973 {"x": 12, "y": 0},
2974 {"x": 13, "y": 0},
2975 {"x": 14, "y": 0},
2976
2977 {"x": 0, "y": 1, "w": 1.5},
2978 {"x": 1.5, "y": 1},
2979 {"x": 2.5, "y": 1},
2980 {"x": 3.5, "y": 1},
2981 {"x": 4.5, "y": 1},
2982 {"x": 5.5, "y": 1},
2983 {"x": 6.5, "y": 1},
2984 {"x": 7.5, "y": 1},
2985 {"x": 8.5, "y": 1},
2986 {"x": 9.5, "y": 1},
2987 {"x": 10.5, "y": 1},
2988 {"x": 11.5, "y": 1},
2989 {"x": 12.5, "y": 1},
2990 {"x": 13.5, "y": 1, "w": 1.5},
2991
2992 {"x": 0, "y": 2, "w": 1.75},
2993 {"x": 1.75, "y": 2},
2994 {"x": 2.75, "y": 2},
2995 {"x": 3.75, "y": 2},
2996 {"x": 4.75, "y": 2},
2997 {"x": 5.75, "y": 2},
2998 {"x": 6.75, "y": 2},
2999 {"x": 7.75, "y": 2},
3000 {"x": 8.75, "y": 2},
3001 {"x": 9.75, "y": 2},
3002 {"x": 10.75, "y": 2},
3003 {"x": 11.75, "y": 2},
3004 {"x": 12.75, "y": 2},
3005 {"x": 13.75, "y": 2, "w": 1.25, "h": 2},
3006
3007 {"x": 0, "y": 3, "w": 2.25},
3008 {"x": 2.25, "y": 3},
3009 {"x": 3.25, "y": 3},
3010 {"x": 4.25, "y": 3},
3011 {"x": 5.25, "y": 3},
3012 {"x": 6.25, "y": 3},
3013 {"x": 7.25, "y": 3},
3014 {"x": 8.25, "y": 3},
3015 {"x": 9.25, "y": 3},
3016 {"x": 10.25, "y": 3},
3017 {"x": 11.25, "y": 3},
3018 {"x": 12.25, "y": 3, "w": 2.75},
3019
3020 {"x": 0, "y": 4, "w": 1.5},
3021 {"x": 1.5, "y": 4},
3022 {"x": 2.5, "y": 4, "w": 1.5},
3023 {"x": 4, "y": 4, "w": 7},
3024 {"x": 11, "y": 4, "w": 1.5},
3025 {"x": 12.5, "y": 4},
3026 {"x": 13.5, "y": 4, "w": 1.5}
3027 ]
3028 },
3029 "LAYOUT_64_iso_split_bs": {
3030 "layout": [
3031 {"x": 0, "y": 0},
3032 {"x": 1, "y": 0},
3033 {"x": 2, "y": 0},
3034 {"x": 3, "y": 0},
3035 {"x": 4, "y": 0},
3036 {"x": 5, "y": 0},
3037 {"x": 6, "y": 0},
3038 {"x": 7, "y": 0},
3039 {"x": 8, "y": 0},
3040 {"x": 9, "y": 0},
3041 {"x": 10, "y": 0},
3042 {"x": 11, "y": 0},
3043 {"x": 12, "y": 0},
3044 {"x": 13, "y": 0},
3045 {"x": 14, "y": 0},
3046
3047
3048 {"x": 0, "y": 1, "w": 1.5},
3049 {"x": 1.5, "y": 1},
3050 {"x": 2.5, "y": 1},
3051 {"x": 3.5, "y": 1},
3052 {"x": 4.5, "y": 1},
3053 {"x": 5.5, "y": 1},
3054 {"x": 6.5, "y": 1},
3055 {"x": 7.5, "y": 1},
3056 {"x": 8.5, "y": 1},
3057 {"x": 9.5, "y": 1},
3058 {"x": 10.5, "y": 1},
3059 {"x": 11.5, "y": 1},
3060 {"x": 12.5, "y": 1},
3061 {"x": 13.5, "y": 1, "w": 1.5},
3062
3063 {"x": 0, "y": 2, "w": 1.75},
3064 {"x": 1.75, "y": 2},
3065 {"x": 2.75, "y": 2},
3066 {"x": 3.75, "y": 2},
3067 {"x": 4.75, "y": 2},
3068 {"x": 5.75, "y": 2},
3069 {"x": 6.75, "y": 2},
3070 {"x": 7.75, "y": 2},
3071 {"x": 8.75, "y": 2},
3072 {"x": 9.75, "y": 2},
3073 {"x": 10.75, "y": 2},
3074 {"x": 11.75, "y": 2},
3075 {"x": 12.75, "y": 2},
3076 {"x": 13.75, "y": 2, "w": 1.25, "h": 2},
3077
3078 {"x": 0, "y": 3, "w": 2},
3079 {"x": 3, "y": 3},
3080 {"x": 4, "y": 3},
3081 {"x": 5, "y": 3},
3082 {"x": 6, "y": 3},
3083 {"x": 7, "y": 3},
3084 {"x": 8, "y": 3},
3085 {"x": 9, "y": 3},
3086 {"x": 10, "y": 3},
3087 {"x": 11, "y": 3},
3088 {"x": 12, "y": 3},
3089 {"x": 13, "y": 3},
3090 {"x": 14, "y": 3},
3091
3092 {"x": 0, "y": 4, "w": 1.25},
3093 {"x": 1.25, "y": 4, "w": 1.25},
3094 {"x": 2.5, "y": 4, "w": 1.25},
3095 {"x": 3.75, "y": 4, "w": 6.25},
3096 {"x": 10, "y": 4 },
3097 {"x": 11, "y": 4 },
3098 {"x": 12, "y": 4 },
3099 {"x": 13, "y": 4 },
3100 {"x": 14, "y": 4 }
3101 ]
3102 },
3103 "LAYOUT_64_iso_6u_spc_split_bs": {
3104 "layout": [
3105 {"x": 0, "y": 0},
3106 {"x": 1, "y": 0},
3107 {"x": 2, "y": 0},
3108 {"x": 3, "y": 0},
3109 {"x": 4, "y": 0},
3110 {"x": 5, "y": 0},
3111 {"x": 6, "y": 0},
3112 {"x": 7, "y": 0},
3113 {"x": 8, "y": 0},
3114 {"x": 9, "y": 0},
3115 {"x": 10, "y": 0},
3116 {"x": 11, "y": 0},
3117 {"x": 12, "y": 0},
3118 {"x": 13, "y": 0},
3119 {"x": 14, "y": 0},
3120
3121 {"x": 0, "y": 1, "w": 1.5},
3122 {"x": 1.5, "y": 1},
3123 {"x": 2.5, "y": 1},
3124 {"x": 3.5, "y": 1},
3125 {"x": 4.5, "y": 1},
3126 {"x": 5.5, "y": 1},
3127 {"x": 6.5, "y": 1},
3128 {"x": 7.5, "y": 1},
3129 {"x": 8.5, "y": 1},
3130 {"x": 9.5, "y": 1},
3131 {"x": 10.5, "y": 1},
3132 {"x": 11.5, "y": 1},
3133 {"x": 12.5, "y": 1},
3134 {"x": 13.5, "y": 1, "w": 1.5},
3135
3136 {"x": 0, "y": 2, "w": 1.75},
3137 {"x": 1.75, "y": 2},
3138 {"x": 2.75, "y": 2},
3139 {"x": 3.75, "y": 2},
3140 {"x": 4.75, "y": 2},
3141 {"x": 5.75, "y": 2},
3142 {"x": 6.75, "y": 2},
3143 {"x": 7.75, "y": 2},
3144 {"x": 8.75, "y": 2},
3145 {"x": 9.75, "y": 2},
3146 {"x": 10.75, "y": 2},
3147 {"x": 11.75, "y": 2},
3148 {"x": 12.75, "y": 2},
3149 {"x": 13.75, "y": 2, "w": 1.25, "h": 2},
3150
3151 {"x": 0, "y": 3, "w": 2},
3152 {"x": 3, "y": 3},
3153 {"x": 4, "y": 3},
3154 {"x": 5, "y": 3},
3155 {"x": 6, "y": 3},
3156 {"x": 7, "y": 3},
3157 {"x": 8, "y": 3},
3158 {"x": 9, "y": 3},
3159 {"x": 10, "y": 3},
3160 {"x": 11, "y": 3},
3161 {"x": 12, "y": 3},
3162 {"x": 13, "y": 3},
3163 {"x": 14, "y": 3},
3164
3165 {"x": 0, "y": 4, "w": 1.25},
3166 {"x": 1.25, "y": 4, "w": 1.25},
3167 {"x": 2.5, "y": 4, "w": 1.25},
3168 {"x": 3.75, "y": 4, "w": 6},
3169 {"x": 9.75, "y": 4, "w":1.25 },
3170 {"x": 11, "y": 4 },
3171 {"x": 12, "y": 4 },
3172 {"x": 13, "y": 4 },
3173 {"x": 14, "y": 4 }
3174 ]
3175 },
3176 "LAYOUT_64_iso_3u_spc_split_bs": {
3177 "layout": [
3178 {"x": 0, "y": 0},
3179 {"x": 1, "y": 0},
3180 {"x": 2, "y": 0},
3181 {"x": 3, "y": 0},
3182 {"x": 4, "y": 0},
3183 {"x": 5, "y": 0},
3184 {"x": 6, "y": 0},
3185 {"x": 7, "y": 0},
3186 {"x": 8, "y": 0},
3187 {"x": 9, "y": 0},
3188 {"x": 10, "y": 0},
3189 {"x": 11, "y": 0},
3190 {"x": 12, "y": 0},
3191 {"x": 13, "y": 0},
3192 {"x": 14, "y": 0},
3193
3194 {"x": 0, "y": 1, "w": 1.5},
3195 {"x": 1.5, "y": 1},
3196 {"x": 2.5, "y": 1},
3197 {"x": 3.5, "y": 1},
3198 {"x": 4.5, "y": 1},
3199 {"x": 5.5, "y": 1},
3200 {"x": 6.5, "y": 1},
3201 {"x": 7.5, "y": 1},
3202 {"x": 8.5, "y": 1},
3203 {"x": 9.5, "y": 1},
3204 {"x": 10.5, "y": 1},
3205 {"x": 11.5, "y": 1},
3206 {"x": 12.5, "y": 1},
3207 {"x": 13.5, "y": 1, "w": 1.5},
3208
3209 {"x": 0, "y": 2, "w": 1.75},
3210 {"x": 1.75, "y": 2},
3211 {"x": 2.75, "y": 2},
3212 {"x": 3.75, "y": 2},
3213 {"x": 4.75, "y": 2},
3214 {"x": 5.75, "y": 2},
3215 {"x": 6.75, "y": 2},
3216 {"x": 7.75, "y": 2},
3217 {"x": 8.75, "y": 2},
3218 {"x": 9.75, "y": 2},
3219 {"x": 10.75, "y": 2},
3220 {"x": 11.75, "y": 2},
3221 {"x": 12.75, "y": 2},
3222 {"x": 13.75, "y": 2, "w": 1.25, "h": 2},
3223
3224 {"x": 0, "y": 3, "w": 2},
3225 {"x": 3, "y": 3},
3226 {"x": 4, "y": 3},
3227 {"x": 5, "y": 3},
3228 {"x": 6, "y": 3},
3229 {"x": 7, "y": 3},
3230 {"x": 8, "y": 3},
3231 {"x": 9, "y": 3},
3232 {"x": 10, "y": 3},
3233 {"x": 11, "y": 3},
3234 {"x": 12, "y": 3},
3235 {"x": 13, "y": 3},
3236 {"x": 14, "y": 3},
3237
3238 {"x": 0, "y": 4, "w": 1.75},
3239 {"x": 1.75, "y": 4, "w": 1.25},
3240 {"x": 3, "y": 4, "w": 1.25},
3241 {"x": 4.25, "y": 4, "w": 1.25},
3242 {"x": 5.5, "y": 4, "w": 3 },
3243 {"x": 8.5, "y": 4, "w": 1.25 },
3244 {"x": 9.75, "y": 4 , "w": 1.25},
3245 {"x": 11, "y": 4 },
3246 {"x": 12, "y": 4 },
3247 {"x": 13, "y": 4 },
3248 {"x": 14, "y": 4 }
3249 ]
3250 },
3251 "LAYOUT_64_iso_split_bs_3u_spc": {
3252 "layout": [
3253 {"x": 0, "y": 0},
3254 {"x": 1, "y": 0},
3255 {"x": 2, "y": 0},
3256 {"x": 3, "y": 0},
3257 {"x": 4, "y": 0},
3258 {"x": 5, "y": 0},
3259 {"x": 6, "y": 0},
3260 {"x": 7, "y": 0},
3261 {"x": 8, "y": 0},
3262 {"x": 9, "y": 0},
3263 {"x": 10, "y": 0},
3264 {"x": 11, "y": 0},
3265 {"x": 12, "y": 0},
3266 {"x": 13, "y": 0},
3267 {"x": 14, "y": 0},
3268
3269 {"x": 0, "y": 1, "w": 1.5},
3270 {"x": 1.5, "y": 1},
3271 {"x": 2.5, "y": 1},
3272 {"x": 3.5, "y": 1},
3273 {"x": 4.5, "y": 1},
3274 {"x": 5.5, "y": 1},
3275 {"x": 6.5, "y": 1},
3276 {"x": 7.5, "y": 1},
3277 {"x": 8.5, "y": 1},
3278 {"x": 9.5, "y": 1},
3279 {"x": 10.5, "y": 1},
3280 {"x": 11.5, "y": 1},
3281 {"x": 12.5, "y": 1},
3282 {"x": 13.5, "y": 1, "w": 1.5},
3283
3284 {"x": 0, "y": 2, "w": 1.75},
3285 {"x": 1.75, "y": 2},
3286 {"x": 2.75, "y": 2},
3287 {"x": 3.75, "y": 2},
3288 {"x": 4.75, "y": 2},
3289 {"x": 5.75, "y": 2},
3290 {"x": 6.75, "y": 2},
3291 {"x": 7.75, "y": 2},
3292 {"x": 8.75, "y": 2},
3293 {"x": 9.75, "y": 2},
3294 {"x": 10.75, "y": 2},
3295 {"x": 11.75, "y": 2},
3296 {"x": 12.75, "y": 2},
3297 {"x": 13.75, "y": 2, "w": 1.25, "h": 2},
3298
3299 {"x": 0, "y": 3, "w": 2},
3300 {"x": 3, "y": 3},
3301 {"x": 4, "y": 3},
3302 {"x": 5, "y": 3},
3303 {"x": 6, "y": 3},
3304 {"x": 7, "y": 3},
3305 {"x": 8, "y": 3},
3306 {"x": 9, "y": 3},
3307 {"x": 10, "y": 3},
3308 {"x": 11, "y": 3},
3309 {"x": 12, "y": 3},
3310 {"x": 13, "y": 3},
3311 {"x": 14, "y": 3},
3312
3313 {"x": 0, "y": 4, "w": 1.25},
3314 {"x": 1.25, "y": 4, "w": 1.25},
3315 {"x": 2.5, "y": 4, "w": 1.25},
3316 {"x": 3.75, "y": 4, "w": 3 },
3317 {"x": 6.75, "y": 4, "w": 3 },
3318 {"x": 9.75, "y": 4, "w": 1.25 },
3319 {"x": 11, "y": 4 },
3320 {"x": 12, "y": 4 },
3321 {"x": 13, "y": 4 },
3322 {"x": 14, "y": 4 }
3323 ]
3324 },
3325 "LAYOUT_60_iso_1u_lshift_split_bs_rshift": {
3326 "layout": [
3327 {"x": 0, "y": 0},
3328 {"x": 1, "y": 0},
3329 {"x": 2, "y": 0},
3330 {"x": 3, "y": 0},
3331 {"x": 4, "y": 0},
3332 {"x": 5, "y": 0},
3333 {"x": 6, "y": 0},
3334 {"x": 7, "y": 0},
3335 {"x": 8, "y": 0},
3336 {"x": 9, "y": 0},
3337 {"x": 10, "y": 0},
3338 {"x": 11, "y": 0},
3339 {"x": 12, "y": 0},
3340 {"x": 13, "y": 0},
3341 {"x": 14, "y": 0},
3342
3343 {"x": 0, "y": 1, "w": 1.5},
3344 {"x": 1.5, "y": 1},
3345 {"x": 2.5, "y": 1},
3346 {"x": 3.5, "y": 1},
3347 {"x": 4.5, "y": 1},
3348 {"x": 5.5, "y": 1},
3349 {"x": 6.5, "y": 1},
3350 {"x": 7.5, "y": 1},
3351 {"x": 8.5, "y": 1},
3352 {"x": 9.5, "y": 1},
3353 {"x": 10.5, "y": 1},
3354 {"x": 11.5, "y": 1},
3355 {"x": 12.5, "y": 1},
3356 {"x": 13.5, "y": 1, "w": 1.5},
3357
3358 {"x": 0, "y": 2, "w": 1.75},
3359 {"x": 1.75, "y": 2},
3360 {"x": 2.75, "y": 2},
3361 {"x": 3.75, "y": 2},
3362 {"x": 4.75, "y": 2},
3363 {"x": 5.75, "y": 2},
3364 {"x": 6.75, "y": 2},
3365 {"x": 7.75, "y": 2},
3366 {"x": 8.75, "y": 2},
3367 {"x": 9.75, "y": 2},
3368 {"x": 10.75, "y": 2},
3369 {"x": 11.75, "y": 2},
3370 {"x": 12.75, "y": 2},
3371 {"x": 13.75, "y": 2, "w": 1.25, "h": 2},
3372
3373 {"x": 0, "y": 3},
3374 {"x": 1, "y": 3},
3375 {"x": 2, "y": 3},
3376 {"x": 3, "y": 3},
3377 {"x": 4, "y": 3},
3378 {"x": 5, "y": 3},
3379 {"x": 6, "y": 3},
3380 {"x": 7, "y": 3},
3381 {"x": 8, "y": 3},
3382 {"x": 9, "y": 3},
3383 {"x": 10, "y": 3},
3384 {"x": 11, "y": 3},
3385 {"x": 12, "y": 3, "w": 2},
3386 {"x": 14, "y": 3},
3387
3388 {"x": 0, "y": 4, "w": 1.25},
3389 {"x": 1.25, "y": 4, "w": 1.25},
3390 {"x": 2.5, "y": 4, "w": 1.25},
3391 {"x": 3.75, "y": 4, "w": 6.25},
3392 {"x": 10, "y": 4, "w": 1.25},
3393 {"x": 11.25, "y": 4, "w": 1.25},
3394 {"x": 12.5, "y": 4, "w": 1.25},
3395 {"x": 13.75, "y": 4, "w": 1.25}
3396 ]
3397 },
3398 "LAYOUT_60_iso_1u_lshift_7u_spc_split_bs_rshift": {
3399 "layout": [
3400 {"x": 0, "y": 0},
3401 {"x": 1, "y": 0},
3402 {"x": 2, "y": 0},
3403 {"x": 3, "y": 0},
3404 {"x": 4, "y": 0},
3405 {"x": 5, "y": 0},
3406 {"x": 6, "y": 0},
3407 {"x": 7, "y": 0},
3408 {"x": 8, "y": 0},
3409 {"x": 9, "y": 0},
3410 {"x": 10, "y": 0},
3411 {"x": 11, "y": 0},
3412 {"x": 12, "y": 0},
3413 {"x": 13, "y": 0},
3414 {"x": 14, "y": 0},
3415
3416 {"x": 0, "y": 1, "w": 1.5},
3417 {"x": 1.5, "y": 1},
3418 {"x": 2.5, "y": 1},
3419 {"x": 3.5, "y": 1},
3420 {"x": 4.5, "y": 1},
3421 {"x": 5.5, "y": 1},
3422 {"x": 6.5, "y": 1},
3423 {"x": 7.5, "y": 1},
3424 {"x": 8.5, "y": 1},
3425 {"x": 9.5, "y": 1},
3426 {"x": 10.5, "y": 1},
3427 {"x": 11.5, "y": 1},
3428 {"x": 12.5, "y": 1},
3429 {"x": 13.5, "y": 1, "w": 1.5},
3430
3431 {"x": 0, "y": 2, "w": 1.75},
3432 {"x": 1.75, "y": 2},
3433 {"x": 2.75, "y": 2},
3434 {"x": 3.75, "y": 2},
3435 {"x": 4.75, "y": 2},
3436 {"x": 5.75, "y": 2},
3437 {"x": 6.75, "y": 2},
3438 {"x": 7.75, "y": 2},
3439 {"x": 8.75, "y": 2},
3440 {"x": 9.75, "y": 2},
3441 {"x": 10.75, "y": 2},
3442 {"x": 11.75, "y": 2},
3443 {"x": 12.75, "y": 2},
3444 {"x": 13.75, "y": 2, "w": 1.25, "h": 2},
3445
3446 {"x": 0, "y": 3},
3447 {"x": 1, "y": 3},
3448 {"x": 2, "y": 3},
3449 {"x": 3, "y": 3},
3450 {"x": 4, "y": 3},
3451 {"x": 5, "y": 3},
3452 {"x": 6, "y": 3},
3453 {"x": 7, "y": 3},
3454 {"x": 8, "y": 3},
3455 {"x": 9, "y": 3},
3456 {"x": 10, "y": 3},
3457 {"x": 11, "y": 3},
3458 {"x": 12, "y": 3, "w": 2},
3459 {"x": 14, "y": 3},
3460
3461 {"x": 0, "y": 4, "w": 1.5},
3462 {"x": 1.5, "y": 4},
3463 {"x": 2.5, "y": 4, "w": 1.5},
3464 {"x": 4, "y": 4, "w": 7},
3465 {"x": 11, "y": 4, "w": 1.5},
3466 {"x": 12.5, "y": 4},
3467 {"x": 13.5, "y": 4, "w": 1.5}
3468 ]
3469 }
3470 }
3471}
3472
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_ansi/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_ansi/keymap.c
new file mode 100755
index 000000000..4bedb0d40
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/60_ansi/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_60_ansi(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
24 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_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL),
27
28 LAYOUT_60_ansi(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_ansi_7u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_ansi_7u_spc/keymap.c
new file mode 100755
index 000000000..2d972d74f
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/60_ansi_7u_spc/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_60_ansi_7u_spc(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
24 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_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_RCTL),
27
28 LAYOUT_60_ansi_7u_spc(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_ansi_7u_spc_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_ansi_7u_spc_split_bs/keymap.c
new file mode 100755
index 000000000..d1ffaf4b8
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/60_ansi_7u_spc_split_bs/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_60_ansi_7u_spc_split_bs(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
24 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_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_RCTL),
27
28 LAYOUT_60_ansi_7u_spc_split_bs(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow/keymap.c
new file mode 100755
index 000000000..dc779513e
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_60_ansi_arrow(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
24 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_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT,KC_DOWN, KC_RGHT),
27
28 LAYOUT_60_ansi_arrow(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_3u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_3u_spc/keymap.c
new file mode 100755
index 000000000..3f8a2206b
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_3u_spc/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_60_ansi_arrow_3u_spc(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
24 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_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_APP, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
27
28 LAYOUT_60_ansi_arrow_3u_spc(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_3u_spc_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_3u_spc_split_bs/keymap.c
new file mode 100755
index 000000000..5b77b70c7
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_3u_spc_split_bs/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_60_ansi_arrow_3u_spc_split_bs(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
24 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_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_APP, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
27
28 LAYOUT_60_ansi_arrow_3u_spc_split_bs(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_6u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_6u_spc/keymap.c
new file mode 100755
index 000000000..f61c123e1
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_6u_spc/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_60_ansi_arrow_6u_spc(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
24 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_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT,KC_DOWN, KC_RGHT),
27
28 LAYOUT_60_ansi_arrow_6u_spc(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_6u_spc_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_6u_spc_split_bs/keymap.c
new file mode 100755
index 000000000..6831ac2d7
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_6u_spc_split_bs/keymap.c
@@ -0,0 +1,36 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17
18#include QMK_KEYBOARD_H
19
20const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
21
22 LAYOUT_60_ansi_arrow_6u_spc_split_bs(
23 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
24 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
25 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_ENT,
26 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_DEL,
27 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT,KC_DOWN, KC_RGHT),
28
29 LAYOUT_60_ansi_arrow_6u_spc_split_bs(
30 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL,
31 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET,
32 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS,
34 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
35};
36
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_split_3u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_split_3u_spc/keymap.c
new file mode 100755
index 000000000..4cd58ee4b
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_split_3u_spc/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_60_ansi_arrow_split_3u_spc(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
24 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_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
27
28 LAYOUT_60_ansi_arrow_split_3u_spc(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_split_bs/keymap.c
new file mode 100755
index 000000000..874c8ec16
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_split_bs/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_60_ansi_arrow_split_bs(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
24 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_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT,KC_DOWN, KC_RGHT),
27
28 LAYOUT_60_ansi_arrow_split_bs(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_split_bs_3u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_split_bs_3u_spc/keymap.c
new file mode 100755
index 000000000..1e64f5265
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_split_bs_3u_spc/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_60_ansi_arrow_split_bs_3u_spc(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
24 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_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
27
28 LAYOUT_60_ansi_arrow_split_bs_3u_spc(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_ansi_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_ansi_split_bs/keymap.c
new file mode 100755
index 000000000..b54ea62a7
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/60_ansi_split_bs/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_60_ansi_split_bs(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
24 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_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL),
27
28 LAYOUT_60_ansi_split_bs(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso/keymap.c
new file mode 100755
index 000000000..d0f50a701
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_60_iso(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
24 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_BSLS, KC_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL),
27
28 LAYOUT_60_iso(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_7u_spc_split_bs_rshift/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_7u_spc_split_bs_rshift/keymap.c
new file mode 100755
index 000000000..60ac095ae
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_7u_spc_split_bs_rshift/keymap.c
@@ -0,0 +1,39 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_60_iso_1u_lshift_7u_spc_split_bs_rshift(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
24 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_BSLS, KC_ENT,
25 KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_RCTL),
27
28 LAYOUT_60_iso_1u_lshift_7u_spc_split_bs_rshift(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET,
32 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
36
37
38
39
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_7u_spc_split_rshift/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_7u_spc_split_rshift/keymap.c
new file mode 100755
index 000000000..97da29d39
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_7u_spc_split_rshift/keymap.c
@@ -0,0 +1,39 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_60_iso_1u_lshift_7u_spc_split_rshift(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
24 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_BSLS, KC_ENT,
25 KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_RCTL),
27
28 LAYOUT_60_iso_1u_lshift_7u_spc_split_rshift(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET,
32 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
36
37
38
39
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_split_bs_rshift/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_split_bs_rshift/keymap.c
new file mode 100755
index 000000000..c28de0ae2
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_split_bs_rshift/keymap.c
@@ -0,0 +1,39 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_60_iso_1u_lshift_split_bs_rshift(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
24 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_BSLS, KC_ENT,
25 KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL),
27
28 LAYOUT_60_iso_1u_lshift_split_bs_rshift(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET,
32 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
36
37
38
39
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_split_rshift/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_split_rshift/keymap.c
new file mode 100755
index 000000000..c95aa2838
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_split_rshift/keymap.c
@@ -0,0 +1,39 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_60_iso_1u_lshift_split_rshift(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
24 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_BSLS, KC_ENT,
25 KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL),
27
28 LAYOUT_60_iso_1u_lshift_split_rshift(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET,
32 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
36
37
38
39
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc/keymap.c
new file mode 100755
index 000000000..1f4f3e0b4
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_60_iso_7u_spc(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
24 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_BSLS, KC_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_RCTL),
27
28 LAYOUT_60_iso_7u_spc(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_bs/keymap.c
new file mode 100755
index 000000000..ad180ffbd
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_bs/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_60_iso_7u_spc_split_bs(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
24 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_BSLS, KC_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_RCTL),
27
28 LAYOUT_60_iso_7u_spc_split_bs(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_bs_rshift/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_bs_rshift/keymap.c
new file mode 100755
index 000000000..644f88018
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_bs_rshift/keymap.c
@@ -0,0 +1,39 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_60_iso_7u_spc_split_bs_rshift(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
24 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_BSLS, KC_ENT,
25 KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_RCTL),
27
28 LAYOUT_60_iso_7u_spc_split_bs_rshift(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET,
32 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
36
37
38
39
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_rshift/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_rshift/keymap.c
new file mode 100755
index 000000000..0a6321d95
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_rshift/keymap.c
@@ -0,0 +1,39 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_60_iso_7u_spc_split_rshift(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
24 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_BSLS, KC_ENT,
25 KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_RCTL),
27
28 LAYOUT_60_iso_7u_spc_split_rshift(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET,
32 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
36
37
38
39
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow/keymap.c
new file mode 100755
index 000000000..e0997d26d
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_60_iso_arrow(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
24 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_BSLS, KC_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT,KC_DOWN, KC_RGHT),
27
28 LAYOUT_60_iso_arrow(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_3u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_3u_spc/keymap.c
new file mode 100755
index 000000000..bcefcc681
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_3u_spc/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_60_iso_arrow_3u_spc(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
24 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_BSLS, KC_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_APP, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
27
28 LAYOUT_60_iso_arrow_3u_spc(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_3u_spc_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_3u_spc_split_bs/keymap.c
new file mode 100755
index 000000000..76858516c
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_3u_spc_split_bs/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_60_iso_arrow_3u_spc_split_bs(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
24 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_BSLS, KC_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_APP, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
27
28 LAYOUT_60_iso_arrow_3u_spc_split_bs(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_6u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_6u_spc/keymap.c
new file mode 100755
index 000000000..a4306832f
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_6u_spc/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_60_iso_arrow_6u_spc(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
24 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_BSLS, KC_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT,KC_DOWN, KC_RGHT),
27
28 LAYOUT_60_iso_arrow_6u_spc(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_6u_spc_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_6u_spc_split_bs/keymap.c
new file mode 100755
index 000000000..5e2187ac3
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_6u_spc_split_bs/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_60_iso_arrow_6u_spc_split_bs(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
24 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_BSLS, KC_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT,KC_DOWN, KC_RGHT),
27
28 LAYOUT_60_iso_arrow_6u_spc_split_bs(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_split_3u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_split_3u_spc/keymap.c
new file mode 100755
index 000000000..e08039de3
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_split_3u_spc/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_60_iso_arrow_split_3u_spc(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
24 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_BSLS, KC_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
27
28 LAYOUT_60_iso_arrow_split_3u_spc(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_split_bs/keymap.c
new file mode 100755
index 000000000..8aed87a97
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_split_bs/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_60_iso_arrow_split_bs(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
24 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_BSLS, KC_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT,KC_DOWN, KC_RGHT),
27
28 LAYOUT_60_iso_arrow_split_bs(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_split_bs_3u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_split_bs_3u_spc/keymap.c
new file mode 100755
index 000000000..b1398092e
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_split_bs_3u_spc/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_60_iso_arrow_split_bs_3u_spc(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
24 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_BSLS, KC_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
27
28 LAYOUT_60_iso_arrow_split_bs_3u_spc(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_split_bs/keymap.c
new file mode 100755
index 000000000..55aa73d32
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_split_bs/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_60_iso_split_bs(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
24 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_BSLS, KC_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL),
27
28 LAYOUT_60_iso_split_bs(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_split_bs_rshift/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_split_bs_rshift/keymap.c
new file mode 100755
index 000000000..a78595d50
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_split_bs_rshift/keymap.c
@@ -0,0 +1,39 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_60_iso_split_bs_rshift(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
24 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_BSLS, KC_ENT,
25 KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL),
27
28 LAYOUT_60_iso_split_bs_rshift(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET,
32 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
36
37
38
39
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_split_rshift/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_split_rshift/keymap.c
new file mode 100755
index 000000000..902fb1d07
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_split_rshift/keymap.c
@@ -0,0 +1,39 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_60_iso_split_rshift(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
24 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_BSLS, KC_ENT,
25 KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL),
27
28 LAYOUT_60_iso_split_rshift(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET,
32 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
36
37
38
39
diff --git a/keyboards/melgeek/mj6xy/keymaps/64_ansi/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_ansi/keymap.c
new file mode 100755
index 000000000..adf8abee8
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/64_ansi/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_64_ansi(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
24 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_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT,KC_DOWN, KC_RGHT),
27
28 LAYOUT_64_ansi(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/64_ansi_3u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_ansi_3u_spc/keymap.c
new file mode 100755
index 000000000..75740f58a
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/64_ansi_3u_spc/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_64_ansi_3u_spc(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
24 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_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_APP, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
27
28 LAYOUT_64_ansi_3u_spc(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/64_ansi_3u_spc_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_ansi_3u_spc_split_bs/keymap.c
new file mode 100755
index 000000000..ece9c5d12
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/64_ansi_3u_spc_split_bs/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_64_ansi_3u_spc_split_bs(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
24 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_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_APP, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
27
28 LAYOUT_64_ansi_3u_spc_split_bs(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/64_ansi_6u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_ansi_6u_spc/keymap.c
new file mode 100755
index 000000000..d399553f6
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/64_ansi_6u_spc/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_64_ansi_6u_spc(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
23 KC_TAB, EEP_RST, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
24 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_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT,KC_DOWN, KC_RGHT),
27
28 LAYOUT_64_ansi_6u_spc(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/64_ansi_6u_spc_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_ansi_6u_spc_split_bs/keymap.c
new file mode 100755
index 000000000..731a92ce5
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/64_ansi_6u_spc_split_bs/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_64_ansi_6u_spc_split_bs(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
24 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_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT,KC_DOWN, KC_RGHT),
27
28 LAYOUT_64_ansi_6u_spc_split_bs(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/64_ansi_split_3u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_ansi_split_3u_spc/keymap.c
new file mode 100755
index 000000000..7f5c3ba53
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/64_ansi_split_3u_spc/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_64_ansi_split_3u_spc(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
24 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_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
27
28 LAYOUT_64_ansi_split_3u_spc(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/64_ansi_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_ansi_split_bs/keymap.c
new file mode 100755
index 000000000..234f936ab
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/64_ansi_split_bs/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_64_ansi_split_bs(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
24 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_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT,KC_DOWN, KC_RGHT),
27
28 LAYOUT_64_ansi_split_bs(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/64_ansi_split_bs_3u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_ansi_split_bs_3u_spc/keymap.c
new file mode 100755
index 000000000..31a6b5a9d
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/64_ansi_split_bs_3u_spc/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_64_ansi_split_bs_3u_spc(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
24 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_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
27
28 LAYOUT_64_ansi_split_bs_3u_spc(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/64_iso/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_iso/keymap.c
new file mode 100755
index 000000000..ef7f3a2fe
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/64_iso/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_64_iso(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
24 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_BSLS, KC_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT,KC_DOWN, KC_RGHT),
27
28 LAYOUT_64_iso(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/64_iso_3u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_iso_3u_spc/keymap.c
new file mode 100755
index 000000000..5bdbc289d
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/64_iso_3u_spc/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_64_iso_3u_spc(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
24 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_BSLS, KC_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_APP, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
27
28 LAYOUT_64_iso_3u_spc(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/64_iso_3u_spc_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_iso_3u_spc_split_bs/keymap.c
new file mode 100755
index 000000000..2689f1744
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/64_iso_3u_spc_split_bs/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_64_iso_3u_spc_split_bs(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
24 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_BSLS, KC_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_APP, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
27
28 LAYOUT_64_iso_3u_spc_split_bs(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/64_iso_6u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_iso_6u_spc/keymap.c
new file mode 100755
index 000000000..b9b9924bc
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/64_iso_6u_spc/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_64_iso_6u_spc(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
24 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_BSLS, KC_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT,KC_DOWN, KC_RGHT),
27
28 LAYOUT_64_iso_6u_spc(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/64_iso_6u_spc_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_iso_6u_spc_split_bs/keymap.c
new file mode 100755
index 000000000..b15d8d257
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/64_iso_6u_spc_split_bs/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_64_iso_6u_spc_split_bs(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
24 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_BSLS, KC_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT,KC_DOWN, KC_RGHT),
27
28 LAYOUT_64_iso_6u_spc_split_bs(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/64_iso_split_3u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_iso_split_3u_spc/keymap.c
new file mode 100755
index 000000000..a085b10d7
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/64_iso_split_3u_spc/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_64_iso_split_3u_spc(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
24 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_BSLS, KC_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
27
28 LAYOUT_64_iso_split_3u_spc(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/64_iso_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_iso_split_bs/keymap.c
new file mode 100755
index 000000000..ff1fdb70f
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/64_iso_split_bs/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_64_iso_split_bs(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
24 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_BSLS, KC_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT,KC_DOWN, KC_RGHT),
27
28 LAYOUT_64_iso_split_bs(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/64_iso_split_bs_3u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_iso_split_bs_3u_spc/keymap.c
new file mode 100755
index 000000000..918d0e949
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/64_iso_split_bs_3u_spc/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_64_iso_split_bs_3u_spc(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
24 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_BSLS, KC_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
27
28 LAYOUT_64_iso_split_bs_3u_spc(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS, RESET,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/default/keymap.c b/keyboards/melgeek/mj6xy/keymaps/default/keymap.c
new file mode 100755
index 000000000..4bedb0d40
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/default/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_60_ansi(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
24 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_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL),
27
28 LAYOUT_60_ansi(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/via/keymap.c b/keyboards/melgeek/mj6xy/keymaps/via/keymap.c
new file mode 100755
index 000000000..4bedb0d40
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/via/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 LAYOUT_60_ansi(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
23 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
24 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_ENT,
25 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL),
27
28 LAYOUT_60_ansi(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
30 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
32 KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
34};
35
diff --git a/keyboards/melgeek/mj6xy/keymaps/via/rules.mk b/keyboards/melgeek/mj6xy/keymaps/via/rules.mk
new file mode 100644
index 000000000..ca9fed0e6
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
1LTO_ENABLE = yes
2VIA_ENABLE = yes
diff --git a/keyboards/melgeek/mj6xy/mj6xy.c b/keyboards/melgeek/mj6xy/mj6xy.c
new file mode 100755
index 000000000..78297ab7c
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/mj6xy.c
@@ -0,0 +1,17 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include "mj6xy.h"
diff --git a/keyboards/melgeek/mj6xy/mj6xy.h b/keyboards/melgeek/mj6xy/mj6xy.h
new file mode 100755
index 000000000..e394c9941
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/mj6xy.h
@@ -0,0 +1,693 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#pragma once
18
19#include "quantum.h"
20
21#define XXX KC_NO
22
23#define LAYOUT_60_ansi( \
24 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, \
25 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
26 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
27 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, \
28 k40, k41, k42, k45, k4a, k4b, k4c, k4e \
29) { \
30 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, XXX, k0e }, \
31 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, XXX }, \
32 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX }, \
33 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, XXX }, \
34 { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, XXX, k4e } \
35}
36
37#define LAYOUT_60_ansi_arrow( \
38 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, \
39 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
40 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
41 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \
42 k40, k41, k42, k45, k4a, k4b, k4c, k4d, k4e \
43) { \
44 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, XXX, k0e }, \
45 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, XXX }, \
46 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX }, \
47 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, k3e }, \
48 { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e } \
49}
50
51#define LAYOUT_60_ansi_arrow_6u_spc( \
52 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, \
53 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
54 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
55 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \
56 k40, k41, k42, k45, k4a, k4b, k4c, k4d, k4e \
57) { \
58 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, XXX, k0e }, \
59 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, XXX }, \
60 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX }, \
61 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, k3e }, \
62 { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e } \
63}
64
65#define LAYOUT_60_ansi_arrow_3u_spc( \
66 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, \
67 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
68 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
69 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \
70 k40, k41, k42, k43, k45, k49, k4a, k4b, k4c, k4d, k4e \
71) { \
72 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, XXX, k0e }, \
73 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, XXX }, \
74 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX }, \
75 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, k3e }, \
76 { k40, k41, k42, k43, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d, k4e } \
77}
78
79#define LAYOUT_60_ansi_arrow_split_3u_spc( \
80 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, \
81 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
82 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
83 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \
84 k40, k41, k42, k43, k48, k4a, k4b, k4c, k4d, k4e \
85) { \
86 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, XXX, k0e }, \
87 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, XXX }, \
88 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX }, \
89 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, k3e }, \
90 { k40, k41, k42, k43, XXX, XXX, XXX, XXX, k48, XXX, k4a, k4b, k4c, k4d, k4e } \
91}
92
93#define LAYOUT_60_ansi_7u_spc( \
94 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, \
95 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
96 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
97 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, \
98 k40, k41, k42, k47, k4b, k4c, k4e \
99) { \
100 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, XXX, k0e }, \
101 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, XXX }, \
102 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX }, \
103 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, XXX }, \
104 { k40, k41, k42, XXX, XXX, XXX, XXX, k47, XXX, XXX, XXX, k4b, k4c, XXX, k4e } \
105}
106
107#define LAYOUT_64_ansi( \
108 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, \
109 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
110 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
111 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \
112 k40, k41, k42, k45, k4a, k4b, k4c, k4d, k4e \
113) { \
114 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, XXX, k0e }, \
115 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, XXX }, \
116 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX }, \
117 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \
118 { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e } \
119}
120
121#define LAYOUT_64_ansi_6u_spc( \
122 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, \
123 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
124 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
125 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \
126 k40, k41, k42, k45, k4a, k4b, k4c, k4d, k4e \
127) { \
128 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, XXX, k0e }, \
129 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, XXX }, \
130 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX }, \
131 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \
132 { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e } \
133}
134
135#define LAYOUT_64_ansi_3u_spc( \
136 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, \
137 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
138 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
139 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \
140 k40, k41, k42, k43, k45, k49, k4a, k4b, k4c, k4d, k4e \
141) { \
142 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, XXX, k0e }, \
143 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, XXX }, \
144 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX }, \
145 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \
146 { k40, k41, k42, k43, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d, k4e } \
147}
148
149#define LAYOUT_64_ansi_split_3u_spc( \
150 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, \
151 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
152 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
153 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \
154 k40, k41, k42, k43, k48, k4a, k4b, k4c, k4d, k4e \
155) { \
156 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, XXX, k0e }, \
157 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, XXX }, \
158 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX }, \
159 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \
160 { k40, k41, k42, k43, XXX, XXX, XXX, XXX, k48, XXX, k4a, k4b, k4c, k4d, k4e } \
161}
162
163#define LAYOUT_60_iso( \
164 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, \
165 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
166 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
167 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, \
168 k40, k41, k42, k45, k4a, k4b, k4c, k4e \
169) { \
170 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, XXX, k0e }, \
171 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, XXX }, \
172 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \
173 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, XXX }, \
174 { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, XXX, k4e } \
175}
176
177#define LAYOUT_60_iso_split_rshift( \
178 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, \
179 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
180 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
181 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3e, \
182 k40, k41, k42, k45, k4a, k4b, k4c, k4e \
183) { \
184 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, XXX, k0e }, \
185 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, XXX }, \
186 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \
187 { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, XXX, k3e }, \
188 { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, XXX, k4e } \
189}
190
191#define LAYOUT_60_iso_7u_spc_split_rshift( \
192 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, \
193 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
194 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
195 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3e, \
196 k40, k41, k42, k47, k4b, k4c, k4e \
197) { \
198 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, XXX, k0e }, \
199 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, XXX }, \
200 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \
201 { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, XXX, k3e }, \
202 { k40, k41, k42, XXX, XXX, XXX, XXX, k47, XXX, XXX, XXX, k4b, k4c, XXX, k4e } \
203}
204
205#define LAYOUT_60_iso_arrow( \
206 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, \
207 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
208 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
209 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \
210 k40, k41, k42, k45, k4a, k4b, k4c, k4d, k4e \
211) { \
212 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, XXX, k0e }, \
213 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, XXX }, \
214 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \
215 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, k3e }, \
216 { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e } \
217}
218
219#define LAYOUT_60_iso_arrow_6u_spc( \
220 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, \
221 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
222 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
223 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \
224 k40, k41, k42, k45, k4a, k4b, k4c, k4d, k4e \
225) { \
226 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, XXX, k0e }, \
227 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, XXX }, \
228 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \
229 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, k3e }, \
230 { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e } \
231}
232
233#define LAYOUT_60_iso_arrow_3u_spc( \
234 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, \
235 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
236 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
237 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \
238 k40, k41, k42, k43, k45, k49, k4a, k4b, k4c, k4d, k4e \
239) { \
240 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, XXX, k0e }, \
241 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, XXX }, \
242 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \
243 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, k3e }, \
244 { k40, k41, k42, k43, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d, k4e } \
245}
246
247#define LAYOUT_60_iso_arrow_split_3u_spc( \
248 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, \
249 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
250 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
251 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \
252 k40, k41, k42, k43, k48, k4a, k4b, k4c, k4d, k4e \
253) { \
254 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, XXX, k0e }, \
255 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, XXX }, \
256 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \
257 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, k3e }, \
258 { k40, k41, k42, k43, XXX, XXX, XXX, XXX, k48, XXX, k4a, k4b, k4c, k4d, k4e } \
259}
260
261#define LAYOUT_60_iso_7u_spc( \
262 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, \
263 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
264 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
265 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, \
266 k40, k41, k42, k47, k4b, k4c, k4e \
267) { \
268 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, XXX, k0e }, \
269 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, XXX }, \
270 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \
271 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, XXX }, \
272 { k40, k41, k42, XXX, XXX, XXX, XXX, k47, XXX, XXX, XXX, k4b, k4c, XXX, k4e } \
273}
274
275#define LAYOUT_64_iso( \
276 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, \
277 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
278 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
279 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \
280 k40, k41, k42, k45, k4a, k4b, k4c, k4d, k4e \
281) { \
282 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, XXX, k0e }, \
283 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, XXX }, \
284 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \
285 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \
286 { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e } \
287}
288
289#define LAYOUT_64_iso_6u_spc( \
290 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, \
291 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
292 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
293 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \
294 k40, k41, k42, k45, k4a, k4b, k4c, k4d, k4e \
295) { \
296 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, XXX, k0e }, \
297 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, XXX }, \
298 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \
299 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \
300 { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e } \
301}
302
303#define LAYOUT_64_iso_3u_spc( \
304 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, \
305 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
306 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
307 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \
308 k40, k41, k42, k43, k45, k49, k4a, k4b, k4c, k4d, k4e \
309) { \
310 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, XXX, k0e }, \
311 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, XXX }, \
312 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \
313 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \
314 { k40, k41, k42, k43, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d, k4e } \
315}
316
317#define LAYOUT_64_iso_split_3u_spc( \
318 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, \
319 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
320 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
321 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \
322 k40, k41, k42, k43, k48, k4a, k4b, k4c, k4d, k4e \
323) { \
324 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, XXX, k0e }, \
325 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, XXX }, \
326 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \
327 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \
328 { k40, k41, k42, k43, XXX, XXX, XXX, XXX, k48, XXX, k4a, k4b, k4c, k4d, k4e } \
329}
330
331#define LAYOUT_60_iso_1u_lshift_split_rshift( \
332 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, \
333 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
334 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
335 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3e, \
336 k40, k41, k42, k45, k4a, k4b, k4c, k4e \
337) { \
338 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, XXX, k0e }, \
339 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, XXX }, \
340 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \
341 { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, XXX, k3e }, \
342 { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, XXX, k4e } \
343}
344
345#define LAYOUT_60_iso_1u_lshift_7u_spc_split_rshift( \
346 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, \
347 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
348 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
349 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3e, \
350 k40, k41, k42, k47, k4b, k4c, k4e \
351) { \
352 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, XXX, k0e }, \
353 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, XXX }, \
354 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \
355 { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, XXX, k3e }, \
356 { k40, k41, k42, XXX, XXX, XXX, XXX, k47, XXX, XXX, XXX, k4b, k4c, XXX, k4e } \
357}
358
359#define LAYOUT_60_ansi_split_bs( \
360 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
361 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
362 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
363 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, \
364 k40, k41, k42, k45, k4a, k4b, k4c, k4e \
365) { \
366 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
367 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, XXX }, \
368 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX }, \
369 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, XXX }, \
370 { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, XXX, k4e } \
371}
372
373#define LAYOUT_60_ansi_arrow_split_bs( \
374 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
375 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
376 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
377 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \
378 k40, k41, k42, k45, k4a, k4b, k4c, k4d, k4e \
379) { \
380 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
381 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, XXX }, \
382 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX }, \
383 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, k3e }, \
384 { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e } \
385}
386
387#define LAYOUT_60_ansi_arrow_6u_spc_split_bs( \
388 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
389 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
390 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
391 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \
392 k40, k41, k42, k45, k4a, k4b, k4c, k4d, k4e \
393) { \
394 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
395 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, XXX }, \
396 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX }, \
397 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, k3e }, \
398 { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e } \
399}
400
401#define LAYOUT_60_ansi_arrow_3u_spc_split_bs( \
402 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
403 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
404 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
405 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \
406 k40, k41, k42, k43, k45, k49, k4a, k4b, k4c, k4d, k4e \
407) { \
408 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
409 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, XXX }, \
410 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX }, \
411 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, k3e }, \
412 { k40, k41, k42, k43, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d, k4e } \
413}
414
415#define LAYOUT_60_ansi_arrow_split_bs_3u_spc( \
416 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
417 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
418 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
419 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \
420 k40, k41, k42, k43, k48, k4a, k4b, k4c, k4d, k4e \
421) { \
422 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
423 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, XXX }, \
424 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX }, \
425 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, k3e }, \
426 { k40, k41, k42, k43, XXX, XXX, XXX, XXX, k48, XXX, k4a, k4b, k4c, k4d, k4e } \
427}
428
429#define LAYOUT_60_ansi_7u_spc_split_bs( \
430 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
431 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
432 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
433 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, \
434 k40, k41, k42, k47, k4b, k4c, k4e \
435) { \
436 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
437 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, XXX }, \
438 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX }, \
439 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, XXX }, \
440 { k40, k41, k42, XXX, XXX, XXX, XXX, k47, XXX, XXX, XXX, k4b, k4c, XXX, k4e } \
441}
442
443#define LAYOUT_64_ansi_split_bs( \
444 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
445 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
446 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
447 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \
448 k40, k41, k42, k45, k4a, k4b, k4c, k4d, k4e \
449) { \
450 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
451 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, XXX }, \
452 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX }, \
453 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \
454 { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e } \
455}
456
457#define LAYOUT_64_ansi_6u_spc_split_bs( \
458 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
459 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
460 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
461 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \
462 k40, k41, k42, k45, k4a, k4b, k4c, k4d, k4e \
463) { \
464 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
465 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, XXX }, \
466 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX }, \
467 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \
468 { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e } \
469}
470
471#define LAYOUT_64_ansi_3u_spc_split_bs( \
472 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
473 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
474 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
475 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \
476 k40, k41, k42, k43, k45, k49, k4a, k4b, k4c, k4d, k4e \
477) { \
478 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
479 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, XXX }, \
480 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX }, \
481 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \
482 { k40, k41, k42, k43, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d, k4e } \
483}
484
485#define LAYOUT_64_ansi_split_bs_3u_spc( \
486 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
487 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
488 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
489 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \
490 k40, k41, k42, k43, k48, k4a, k4b, k4c, k4d, k4e \
491) { \
492 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
493 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, XXX }, \
494 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX }, \
495 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \
496 { k40, k41, k42, k43, XXX, XXX, XXX, XXX, k48, XXX, k4a, k4b, k4c, k4d, k4e } \
497}
498
499#define LAYOUT_60_iso_split_bs( \
500 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
501 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
502 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
503 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, \
504 k40, k41, k42, k45, k4a, k4b, k4c, k4e \
505) { \
506 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
507 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, XXX }, \
508 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \
509 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, XXX }, \
510 { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, XXX, k4e } \
511}
512
513#define LAYOUT_60_iso_split_bs_rshift( \
514 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
515 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
516 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
517 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3e, \
518 k40, k41, k42, k45, k4a, k4b, k4c, k4e \
519) { \
520 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
521 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, XXX }, \
522 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \
523 { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, XXX, k3e }, \
524 { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, XXX, k4e } \
525}
526
527#define LAYOUT_60_iso_7u_spc_split_bs_rshift( \
528 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
529 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
530 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
531 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3e, \
532 k40, k41, k42, k47, k4b, k4c, k4e \
533) { \
534 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
535 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, XXX }, \
536 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \
537 { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, XXX, k3e }, \
538 { k40, k41, k42, XXX, XXX, XXX, XXX, k47, XXX, XXX, XXX, k4b, k4c, XXX, k4e } \
539}
540
541#define LAYOUT_60_iso_arrow_split_bs( \
542 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
543 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
544 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
545 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \
546 k40, k41, k42, k45, k4a, k4b, k4c, k4d, k4e \
547) { \
548 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
549 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, XXX }, \
550 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \
551 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, k3e }, \
552 { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e } \
553}
554
555#define LAYOUT_60_iso_arrow_6u_spc_split_bs( \
556 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
557 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
558 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
559 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \
560 k40, k41, k42, k45, k4a, k4b, k4c, k4d, k4e \
561) { \
562 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
563 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, XXX }, \
564 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \
565 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, k3e }, \
566 { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e } \
567}
568
569#define LAYOUT_60_iso_arrow_3u_spc_split_bs( \
570 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
571 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
572 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
573 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \
574 k40, k41, k42, k43, k45, k49, k4a, k4b, k4c, k4d, k4e \
575) { \
576 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
577 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, XXX }, \
578 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \
579 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, k3e }, \
580 { k40, k41, k42, k43, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d, k4e } \
581}
582
583#define LAYOUT_60_iso_arrow_split_bs_3u_spc( \
584 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
585 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
586 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
587 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \
588 k40, k41, k42, k43, k48, k4a, k4b, k4c, k4d, k4e \
589) { \
590 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
591 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, XXX }, \
592 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \
593 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, k3e }, \
594 { k40, k41, k42, k43, XXX, XXX, XXX, XXX, k48, XXX, k4a, k4b, k4c, k4d, k4e } \
595}
596
597#define LAYOUT_60_iso_7u_spc_split_bs( \
598 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
599 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
600 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
601 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, \
602 k40, k41, k42, k47, k4b, k4c, k4e \
603) { \
604 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
605 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, XXX }, \
606 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \
607 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, XXX, k3d, XXX }, \
608 { k40, k41, k42, XXX, XXX, XXX, XXX, k47, XXX, XXX, XXX, k4b, k4c, XXX, k4e } \
609}
610
611#define LAYOUT_64_iso_split_bs( \
612 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
613 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
614 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
615 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \
616 k40, k41, k42, k45, k4a, k4b, k4c, k4d, k4e \
617) { \
618 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
619 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, XXX }, \
620 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \
621 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \
622 { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e } \
623}
624
625#define LAYOUT_64_iso_6u_spc_split_bs( \
626 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
627 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
628 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
629 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \
630 k40, k41, k42, k45, k4a, k4b, k4c, k4d, k4e \
631) { \
632 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
633 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, XXX }, \
634 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \
635 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \
636 { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e } \
637}
638
639#define LAYOUT_64_iso_3u_spc_split_bs( \
640 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
641 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
642 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
643 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \
644 k40, k41, k42, k43, k45, k49, k4a, k4b, k4c, k4d, k4e \
645) { \
646 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
647 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, XXX }, \
648 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \
649 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \
650 { k40, k41, k42, k43, XXX, k45, XXX, XXX, XXX, k49, k4a, k4b, k4c, k4d, k4e } \
651}
652
653#define LAYOUT_64_iso_split_bs_3u_spc( \
654 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
655 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
656 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
657 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \
658 k40, k41, k42, k43, k48, k4a, k4b, k4c, k4d, k4e \
659) { \
660 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
661 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, XXX }, \
662 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \
663 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \
664 { k40, k41, k42, k43, XXX, XXX, XXX, XXX, k48, XXX, k4a, k4b, k4c, k4d, k4e } \
665}
666
667#define LAYOUT_60_iso_1u_lshift_split_bs_rshift( \
668 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
669 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
670 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
671 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3e, \
672 k40, k41, k42, k45, k4a, k4b, k4c, k4e \
673) { \
674 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
675 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, XXX }, \
676 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \
677 { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, XXX, k3e }, \
678 { k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, XXX, k4e } \
679}
680
681#define LAYOUT_60_iso_1u_lshift_7u_spc_split_bs_rshift( \
682 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
683 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
684 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
685 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3e, \
686 k40, k41, k42, k47, k4b, k4c, k4e \
687) { \
688 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
689 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, XXX }, \
690 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \
691 { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, XXX, k3e }, \
692 { k40, k41, k42, XXX, XXX, XXX, XXX, k47, XXX, XXX, XXX, k4b, k4c, XXX, k4e } \
693}
diff --git a/keyboards/melgeek/mj6xy/readme.md b/keyboards/melgeek/mj6xy/readme.md
new file mode 100755
index 000000000..952f8c486
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/readme.md
@@ -0,0 +1,17 @@
1# MJ6XY 60% Mechanical Keyboard PCB
2
3![MJ6XY](https://cdn.shopifycdn.net/s/files/1/0078/2863/5712/products/e66b60bbaa22111cfcb8c9287ff182fa_fe508bda-4e62-4d0e-9842-552ed1233af0_1024x1024@2x.jpg?v=1625753059)
4
5## A Customizable 60% Mechanical Keyboard PCB which is support multi-layouts
6
7![A Customizable 60% Mechanical Keyboard PCB](https://cdn.shopifycdn.net/s/files/1/0078/2863/5712/products/e66b60bbaa22111cfcb8c9287ff182fa_fe508bda-4e62-4d0e-9842-552ed1233af0_1024x1024@2x.jpg?v=1625753059)
8
9* Keyboard Maintainer: QMK Community
10* Hardware Supported: MJ6XY 60% Mechanical Keyboard PCB
11* Hardware Availability: [MelGeek](https://www.melgeek.com/collections/pcb-plate/products/melgeek-mj6xy-soldered-pcba-melgeek-com)
12
13Make example for this keyboard (after setting up your build environment):
14
15 make melgeek/mj6xy:default
16
17See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/melgeek/mj6xy/rev3/config.h b/keyboards/melgeek/mj6xy/rev3/config.h
new file mode 100755
index 000000000..5024f7a3f
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/rev3/config.h
@@ -0,0 +1,50 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#pragma once
18
19/* key matrix size */
20#define MATRIX_ROWS 5
21#define MATRIX_COLS 15
22
23#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6 }
24#define MATRIX_COL_PINS { B0, B1, B2, B3, B6, B5, B4, D7, D6, D4, D5, F7, D2, D1, D0 }
25#define UNUSED_PINS
26
27/* COL2ROW, ROW2COL*/
28#define DIODE_DIRECTION COL2ROW
29
30#define LED_CAPS_LOCK_PIN C7
31#define LED_PIN_ON_STATE 0
32
33#define BACKLIGHT_PIN B7
34
35#define RGB_DI_PIN C6
36
37#ifdef BACKLIGHT_PIN
38# define BACKLIGHT_LEVELS 10
39# define BACKLIGHT_ON_STATE 1
40# define BACKLIGHT_LIMIT_VAL 255
41#endif
42
43#ifdef RGB_DI_PIN
44# define RGBLIGHT_ANIMATIONS
45# define RGBLED_NUM 16
46# define RGBLIGHT_HUE_STEP 8
47# define RGBLIGHT_SAT_STEP 8
48# define RGBLIGHT_VAL_STEP 8
49# define RGBLIGHT_SLEEP
50#endif
diff --git a/keyboards/melgeek/mj6xy/rev3/rev3.c b/keyboards/melgeek/mj6xy/rev3/rev3.c
new file mode 100644
index 000000000..798231651
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/rev3/rev3.c
@@ -0,0 +1,18 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.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
17#include "mj6xy.h"
18
diff --git a/keyboards/melgeek/mj6xy/rev3/rules.mk b/keyboards/melgeek/mj6xy/rev3/rules.mk
new file mode 100755
index 000000000..a58a76732
--- /dev/null
+++ b/keyboards/melgeek/mj6xy/rev3/rules.mk
@@ -0,0 +1,26 @@
1# MCU name
2MCU = atmega32u4
3
4# Bootloader selection
5BOOTLOADER = atmel-dfu
6
7# Build Options
8# change yes to no to disable
9#
10BOOTMAGIC_ENABLE = full # Virtual DIP switch configuration
11MOUSEKEY_ENABLE = yes # Mouse keys
12EXTRAKEY_ENABLE = yes # Audio control and System control
13CONSOLE_ENABLE = no # Console for debug
14COMMAND_ENABLE = no # Commands for debug and configuration
15# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
16SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
17# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
18NKRO_ENABLE = yes # USB Nkey Rollover
19BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
20RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
21BLUETOOTH_ENABLE = no # Enable Bluetooth
22AUDIO_ENABLE = no # Audio output
23BACKLIGHT_DRIVER = software
24
25LAYOUTS = 60_ansi
26
diff --git a/keyboards/montex/config.h b/keyboards/montex/config.h
index bad7b355f..2321ce364 100644
--- a/keyboards/montex/config.h
+++ b/keyboards/montex/config.h
@@ -19,7 +19,7 @@
19#include "config_common.h" 19#include "config_common.h"
20 20
21/* USB Device descriptor parameter */ 21/* USB Device descriptor parameter */
22#define VENDOR_ID 0xFEED 22#define VENDOR_ID 0x6964
23#define PRODUCT_ID 0x6060 23#define PRODUCT_ID 0x6060
24#define DEVICE_VER 0x0001 24#define DEVICE_VER 0x0001
25#define MANUFACTURER Idobao 25#define MANUFACTURER Idobao
diff --git a/keyboards/montex/keymaps/via/keymap.c b/keyboards/montex/keymaps/via/keymap.c
new file mode 100644
index 000000000..eb7875dc3
--- /dev/null
+++ b/keyboards/montex/keymaps/via/keymap.c
@@ -0,0 +1,52 @@
1/* Copyright 2021 Tybera
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 &lt;http://www.gnu.org/licenses/&gt;.
15*/
16
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20 [0] = LAYOUT_numpad_6x5(
21 KC_GRAVE, KC_ESC, KC_TAB, MO(1), KC_BSPC,
22 KC_COMMA, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
23 KC_LGUI, KC_P7, KC_P8, KC_P9,
24 KC_LALT, KC_P4, KC_P5, KC_P6, KC_PPLS,
25 KC_LSHIFT, KC_P1, KC_P2, KC_P3,
26 KC_LCTRL, KC_P0, KC_PDOT, KC_PENT
27 ),
28 [1] = LAYOUT_numpad_6x5(
29 RESET, _______, _______, _______, _______,
30 _______, _______, _______, _______, _______,
31 _______, KC_HOME, KC_UP, KC_PGUP,
32 _______, KC_LEFT, XXXXXXX, KC_RGHT, _______,
33 _______, KC_END, KC_DOWN, KC_PGDN,
34 _______, KC_INS, KC_DEL, _______
35 ),
36 [2] = LAYOUT_numpad_6x5(
37 _______, _______, _______, _______, _______,
38 _______, _______, _______, _______, _______,
39 _______, _______, _______, _______,
40 _______, _______, _______, _______, _______,
41 _______, _______, _______, _______,
42 _______, _______, _______, _______
43 ),
44 [3] = LAYOUT_numpad_6x5(
45 _______, _______, _______, _______, _______,
46 _______, _______, _______, _______, _______,
47 _______, _______, _______, _______,
48 _______, _______, _______, _______, _______,
49 _______, _______, _______, _______,
50 _______, _______, _______, _______
51 )
52};
diff --git a/keyboards/montex/keymaps/via/rules.mk b/keyboards/montex/keymaps/via/rules.mk
new file mode 100644
index 000000000..ca9fed0e6
--- /dev/null
+++ b/keyboards/montex/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
1LTO_ENABLE = yes
2VIA_ENABLE = yes
diff --git a/lib/python/qmk/cli/__init__.py b/lib/python/qmk/cli/__init__.py
index 2c3c9c421..91d42bb3a 100644
--- a/lib/python/qmk/cli/__init__.py
+++ b/lib/python/qmk/cli/__init__.py
@@ -16,6 +16,7 @@ import_names = {
16 # A mapping of package name to importable name 16 # A mapping of package name to importable name
17 'pep8-naming': 'pep8ext_naming', 17 'pep8-naming': 'pep8ext_naming',
18 'pyusb': 'usb.core', 18 'pyusb': 'usb.core',
19 'qmk-dotty-dict': 'dotty_dict'
19} 20}
20 21
21safe_commands = [ 22safe_commands = [
diff --git a/requirements.txt b/requirements.txt
index 3e23a6f33..92381d7d5 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -2,10 +2,10 @@
2appdirs 2appdirs
3argcomplete 3argcomplete
4colorama 4colorama
5dotty-dict
6hid 5hid
7hjson 6hjson
8jsonschema>=3 7jsonschema>=3
9milc>=1.4.2 8milc>=1.4.2
10pygments 9pygments
11pyusb 10pyusb
11qmk-dotty-dict