summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfauxpark <fauxpark@gmail.com>2023-03-29 16:00:41 +1100
committerfauxpark <fauxpark@gmail.com>2023-03-29 16:00:41 +1100
commit9602938e9ef7b4c4a8c19b29dadde7423daff1f5 (patch)
tree65c67e35191a7c65520f624f3d55da27f508f9ef
parent4869b8061c187f6476f8f14b839dd2c2c9f74dd2 (diff)
parent6bdbf77238166e25eb0888c85ad07f0b7dbf16bc (diff)
Merge remote-tracking branch 'upstream/master' into develop
-rw-r--r--.github/workflows/ci_builds.yml6
-rw-r--r--builddefs/build_keyboard.mk5
-rw-r--r--keyboards/bastardkb/charybdis/3x5/3x5.h27
-rw-r--r--keyboards/bastardkb/charybdis/3x5/info.json41
-rw-r--r--keyboards/bastardkb/charybdis/3x6/3x6.h23
-rw-r--r--keyboards/bastardkb/charybdis/3x6/info.json47
-rw-r--r--keyboards/converter/modelm_ssk/info.json549
-rw-r--r--keyboards/converter/modelm_ssk/modelm_ssk.h45
-rw-r--r--keyboards/irene/info.json126
-rw-r--r--keyboards/irene/irene.h43
-rw-r--r--keyboards/keebio/quefrency/rev1/info.json883
-rw-r--r--keyboards/keebio/quefrency/rev1/keymaps/via/keymap.c44
-rw-r--r--keyboards/keebio/quefrency/rev1/keymaps/via/rules.mk3
-rw-r--r--keyboards/keebio/quefrency/rev1/rev1.c2
-rw-r--r--keyboards/keebio/quefrency/rev1/rev1.h113
-rw-r--r--keyboards/rgbkb/pan/info.json128
-rw-r--r--keyboards/rgbkb/pan/keymaps/default/keymap.c4
-rw-r--r--keyboards/rgbkb/pan/pan.c2
-rw-r--r--keyboards/rgbkb/pan/pan.h37
-rwxr-xr-xutil/ci/generate_failure_markdown.sh21
20 files changed, 750 insertions, 1399 deletions
diff --git a/.github/workflows/ci_builds.yml b/.github/workflows/ci_builds.yml
index 1f1813faab..ef792dcbaf 100644
--- a/.github/workflows/ci_builds.yml
+++ b/.github/workflows/ci_builds.yml
@@ -39,7 +39,11 @@ jobs:
39 - name: Run `qmk mass-compile` (keymap ${{ matrix.keymap }}) 39 - name: Run `qmk mass-compile` (keymap ${{ matrix.keymap }})
40 run: | 40 run: |
41 export NCPUS=$(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || getconf _NPROCESSORS_ONLN 2>/dev/null) 41 export NCPUS=$(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || getconf _NPROCESSORS_ONLN 2>/dev/null)
42 qmk mass-compile -t -j $NCPUS -km ${{ matrix.keymap }} 42 qmk mass-compile -t -j $NCPUS -km ${{ matrix.keymap }} -e DUMP_CI_METADATA=yes
43 # Generate the step summary markdown
44 ./util/ci/generate_failure_markdown.sh > $GITHUB_STEP_SUMMARY
45 # Truncate to a maximum of 1MB to deal with GitHub workflow limit
46 truncate --size='<960K' $GITHUB_STEP_SUMMARY
43 47
44 - name: 'Upload artifacts' 48 - name: 'Upload artifacts'
45 uses: actions/upload-artifact@v3 49 uses: actions/upload-artifact@v3
diff --git a/builddefs/build_keyboard.mk b/builddefs/build_keyboard.mk
index 6b264fe0ff..91c9541be5 100644
--- a/builddefs/build_keyboard.mk
+++ b/builddefs/build_keyboard.mk
@@ -29,6 +29,11 @@ KEYBOARD_FILESAFE := $(subst /,_,$(KEYBOARD))
29TARGET ?= $(KEYBOARD_FILESAFE)_$(KEYMAP) 29TARGET ?= $(KEYBOARD_FILESAFE)_$(KEYMAP)
30KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD_FILESAFE) 30KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD_FILESAFE)
31 31
32ifeq ($(strip $(DUMP_CI_METADATA)),yes)
33 $(info CI Metadata: KEYBOARD=$(KEYBOARD))
34 $(info CI Metadata: KEYMAP=$(KEYMAP))
35endif
36
32# Force expansion 37# Force expansion
33TARGET := $(TARGET) 38TARGET := $(TARGET)
34 39
diff --git a/keyboards/bastardkb/charybdis/3x5/3x5.h b/keyboards/bastardkb/charybdis/3x5/3x5.h
index 4ea3ef94bb..3041397e15 100644
--- a/keyboards/bastardkb/charybdis/3x5/3x5.h
+++ b/keyboards/bastardkb/charybdis/3x5/3x5.h
@@ -37,31 +37,4 @@
37 { k60, k61, k62, k63, k64 }, \ 37 { k60, k61, k62, k63, k64 }, \
38 { k70, KC_NO, k72, KC_NO, KC_NO }, \ 38 { k70, KC_NO, k72, KC_NO, KC_NO }, \
39} 39}
40
41/**
42 * \brief Compatibility layout with the split_3x5_3 community layout.
43 *
44 * This effectively renders the Charbdis Nano compatible with existing layout
45 * implementations relying on the `split_3x5_3` layout, which includes, among
46 * others, Manna-Harbour's (@manna_harbour) Miryoku layout.
47 *
48 * The last key on the layout is ignored, to transform the input 36-keys layout
49 * into the Charybdis Nano's 35-keys layout.
50 */
51#define LAYOUT_split_3x5_3( \
52 k00, k01, k02, k03, k04, k44, k43, k42, k41, k40, \
53 k10, k11, k12, k13, k14, k54, k53, k52, k51, k50, \
54 k20, k21, k22, k23, k24, k64, k63, k62, k61, k60, \
55 k32, k33, k30, k70, k72, ___ \
56) \
57{ \
58 { k00, k01, k02, k03, k04 }, \
59 { k10, k11, k12, k13, k14 }, \
60 { k20, k21, k22, k23, k24 }, \
61 { k30, KC_NO, k32, k33, KC_NO }, \
62 { k40, k41, k42, k43, k44 }, \
63 { k50, k51, k52, k53, k54 }, \
64 { k60, k61, k62, k63, k64 }, \
65 { k70, KC_NO, k72, KC_NO, KC_NO }, \
66}
67// clang-format on 40// clang-format on
diff --git a/keyboards/bastardkb/charybdis/3x5/info.json b/keyboards/bastardkb/charybdis/3x5/info.json
index a09ef236ba..32437edeb0 100644
--- a/keyboards/bastardkb/charybdis/3x5/info.json
+++ b/keyboards/bastardkb/charybdis/3x5/info.json
@@ -5,7 +5,6 @@
5 "pid": "0x1832", 5 "pid": "0x1832",
6 "vid": "0xA8F8" 6 "vid": "0xA8F8"
7 }, 7 },
8 "community_layouts": ["split_3x5_3"],
9 "layout_aliases": { 8 "layout_aliases": {
10 "LAYOUT_charybdis_3x5": "LAYOUT" 9 "LAYOUT_charybdis_3x5": "LAYOUT"
11 }, 10 },
@@ -48,46 +47,6 @@
48 { "label": "R30", "x": 9, "y": 3 }, 47 { "label": "R30", "x": 9, "y": 3 },
49 { "label": "R31", "x": 10, "y": 3 } 48 { "label": "R31", "x": 10, "y": 3 }
50 ] 49 ]
51 },
52 "LAYOUT_split_3x5_3": {
53 "layout": [
54 { "label": "L00", "x": 0, "y": 0 },
55 { "label": "L01", "x": 1, "y": 0 },
56 { "label": "L02", "x": 2, "y": 0 },
57 { "label": "L03", "x": 3, "y": 0 },
58 { "label": "L04", "x": 4, "y": 0 },
59 { "label": "R00", "x": 11, "y": 0 },
60 { "label": "R01", "x": 12, "y": 0 },
61 { "label": "R02", "x": 13, "y": 0 },
62 { "label": "R03", "x": 14, "y": 0 },
63 { "label": "R04", "x": 15, "y": 0 },
64 { "label": "L10", "x": 0, "y": 1 },
65 { "label": "L11", "x": 1, "y": 1 },
66 { "label": "L12", "x": 2, "y": 1 },
67 { "label": "L13", "x": 3, "y": 1 },
68 { "label": "L14", "x": 4, "y": 1 },
69 { "label": "R10", "x": 11, "y": 1 },
70 { "label": "R11", "x": 12, "y": 1 },
71 { "label": "R12", "x": 13, "y": 1 },
72 { "label": "R13", "x": 14, "y": 1 },
73 { "label": "R14", "x": 15, "y": 1 },
74 { "label": "L20", "x": 0, "y": 2 },
75 { "label": "L21", "x": 1, "y": 2 },
76 { "label": "L22", "x": 2, "y": 2 },
77 { "label": "L23", "x": 3, "y": 2 },
78 { "label": "L24", "x": 4, "y": 2 },
79 { "label": "R20", "x": 11, "y": 2 },
80 { "label": "R21", "x": 12, "y": 2 },
81 { "label": "R22", "x": 13, "y": 2 },
82 { "label": "R23", "x": 14, "y": 2 },
83 { "label": "R24", "x": 15, "y": 2 },
84 { "label": "L30", "x": 4, "y": 3 },
85 { "label": "L31", "x": 5, "y": 3 },
86 { "label": "L32", "x": 6, "y": 3 },
87 { "label": "R30", "x": 9, "y": 3 },
88 { "label": "R31", "x": 10, "y": 3 },
89 { "label": "R32", "x": 11, "y": 3 }
90 ]
91 } 50 }
92 } 51 }
93} 52}
diff --git a/keyboards/bastardkb/charybdis/3x6/3x6.h b/keyboards/bastardkb/charybdis/3x6/3x6.h
index 71c22a561b..a93d183ae1 100644
--- a/keyboards/bastardkb/charybdis/3x6/3x6.h
+++ b/keyboards/bastardkb/charybdis/3x6/3x6.h
@@ -36,27 +36,4 @@
36 { k60, k61, k62, k63, k64, k65 }, \ 36 { k60, k61, k62, k63, k64, k65 }, \
37 { KC_NO, k71, KC_NO, k73, KC_NO, KC_NO }, \ 37 { KC_NO, k71, KC_NO, k73, KC_NO, KC_NO }, \
38} 38}
39
40/**
41 * \brief Compatibility layout with the split_3x5_6 community layout.
42 *
43 * This effectively renders the Charbdis Nano compatible with existing layout
44 * implementations relying on the `split_3x6_3` layout.
45 */
46#define LAYOUT_split_3x6_3( \
47 k00, k01, k02, k03, k04, k05, k45, k44, k43, k42, k41, k40, \
48 k10, k11, k12, k13, k14, k15, k55, k54, k53, k52, k51, k50, \
49 k20, k21, k22, k23, k24, k25, k65, k64, k63, k62, k61, k60, \
50 k33, k34, k31, k71, k73, ___ \
51) \
52{ \
53 { k00, k01, k02, k03, k04, k05 }, \
54 { k10, k11, k12, k13, k14, k15 }, \
55 { k20, k21, k22, k23, k24, k25 }, \
56 { KC_NO, k31, KC_NO, k33, k34, KC_NO }, \
57 { k40, k41, k42, k43, k44, k45 }, \
58 { k50, k51, k52, k53, k54, k55 }, \
59 { k60, k61, k62, k63, k64, k65 }, \
60 { KC_NO, k71, KC_NO, k73, KC_NO, KC_NO }, \
61}
62// clang-format on 39// clang-format on
diff --git a/keyboards/bastardkb/charybdis/3x6/info.json b/keyboards/bastardkb/charybdis/3x6/info.json
index 1a4d15711f..41940b0b8b 100644
--- a/keyboards/bastardkb/charybdis/3x6/info.json
+++ b/keyboards/bastardkb/charybdis/3x6/info.json
@@ -3,7 +3,6 @@
3 "usb": { 3 "usb": {
4 "pid": "0x1834" 4 "pid": "0x1834"
5 }, 5 },
6 "community_layouts": ["split_3x6_3"],
7 "layout_aliases": { 6 "layout_aliases": {
8 "LAYOUT_charybdis_3x6": "LAYOUT" 7 "LAYOUT_charybdis_3x6": "LAYOUT"
9 }, 8 },
@@ -52,52 +51,6 @@
52 { "label": "R31", "x": 9, "y": 3 }, 51 { "label": "R31", "x": 9, "y": 3 },
53 { "label": "R33", "x": 10, "y": 3 } 52 { "label": "R33", "x": 10, "y": 3 }
54 ] 53 ]
55 },
56 "LAYOUT_split_3x6_3": {
57 "layout": [
58 { "label": "L00", "x": 0, "y": 0 },
59 { "label": "L01", "x": 1, "y": 0 },
60 { "label": "L02", "x": 2, "y": 0 },
61 { "label": "L03", "x": 3, "y": 0 },
62 { "label": "L04", "x": 4, "y": 0 },
63 { "label": "L05", "x": 5, "y": 0 },
64 { "label": "R00", "x": 11, "y": 0 },
65 { "label": "R01", "x": 12, "y": 0 },
66 { "label": "R02", "x": 13, "y": 0 },
67 { "label": "R03", "x": 14, "y": 0 },
68 { "label": "R04", "x": 15, "y": 0 },
69 { "label": "R05", "x": 16, "y": 0 },
70 { "label": "L10", "x": 0, "y": 1 },
71 { "label": "L11", "x": 1, "y": 1 },
72 { "label": "L12", "x": 2, "y": 1 },
73 { "label": "L13", "x": 3, "y": 1 },
74 { "label": "L14", "x": 4, "y": 1 },
75 { "label": "L15", "x": 5, "y": 1 },
76 { "label": "R10", "x": 11, "y": 1 },
77 { "label": "R11", "x": 12, "y": 1 },
78 { "label": "R12", "x": 13, "y": 1 },
79 { "label": "R13", "x": 14, "y": 1 },
80 { "label": "R14", "x": 15, "y": 1 },
81 { "label": "R15", "x": 16, "y": 1 },
82 { "label": "L20", "x": 0, "y": 2 },
83 { "label": "L21", "x": 1, "y": 2 },
84 { "label": "L22", "x": 2, "y": 2 },
85 { "label": "L23", "x": 3, "y": 2 },
86 { "label": "L24", "x": 4, "y": 2 },
87 { "label": "L25", "x": 5, "y": 2 },
88 { "label": "R20", "x": 11, "y": 2 },
89 { "label": "R21", "x": 12, "y": 2 },
90 { "label": "R22", "x": 13, "y": 2 },
91 { "label": "R23", "x": 14, "y": 2 },
92 { "label": "R24", "x": 15, "y": 2 },
93 { "label": "R25", "x": 16, "y": 2 },
94 { "label": "L33", "x": 5, "y": 3 },
95 { "label": "L34", "x": 6, "y": 3 },
96 { "label": "L31", "x": 7, "y": 3 },
97 { "label": "R33", "x": 9, "y": 3 },
98 { "label": "R34", "x": 10, "y": 3 },
99 { "label": "R31", "x": 11, "y": 3 }
100 ]
101 } 54 }
102 } 55 }
103} 56}
diff --git a/keyboards/converter/modelm_ssk/info.json b/keyboards/converter/modelm_ssk/info.json
index d68bb0389f..ff2c6cc217 100644
--- a/keyboards/converter/modelm_ssk/info.json
+++ b/keyboards/converter/modelm_ssk/info.json
@@ -20,453 +20,108 @@
20 }, 20 },
21 "processor": "at90usb1286", 21 "processor": "at90usb1286",
22 "bootloader": "halfkay", 22 "bootloader": "halfkay",
23 "layouts": 23 "layouts": {
24 { 24 "LAYOUT": {
25 "LAYOUT": 25 "layout": [
26 { 26 {"matrix": [7, 2], "x": 0, "y": 0},
27 "layout": 27
28 [ 28 {"matrix": [5, 3], "x": 2, "y": 0},
29 { 29 {"matrix": [5, 4], "x": 3, "y": 0},
30 "label": "Esc", 30 {"matrix": [6, 4], "x": 4, "y": 0},
31 "x": 0, 31 {"matrix": [7, 4], "x": 5, "y": 0},
32 "y": 0 32
33 }, 33 {"matrix": [7, 6], "x": 6.5, "y": 0},
34 { 34 {"matrix": [7, 8], "x": 7.5, "y": 0},
35 "label": "F1", 35 {"matrix": [6, 9], "x": 8.5, "y": 0},
36 "x": 2, 36 {"matrix": [5, 9], "x": 9.5, "y": 0},
37 "y": 0 37
38 }, 38 {"matrix": [5, 6], "x": 11, "y": 0},
39 { 39 {"matrix": [4, 6], "x": 12, "y": 0},
40 "label": "F2", 40 {"matrix": [4, 11], "x": 13, "y": 0},
41 "x": 3, 41 {"matrix": [4, 12], "x": 14, "y": 0},
42 "y": 0 42
43 }, 43 {"matrix": [4, 15], "x": 15.25, "y": 0},
44 { 44 {"matrix": [3, 15], "x": 16.25, "y": 0},
45 "label": "F3", 45 {"matrix": [1, 14], "x": 17.25, "y": 0},
46 "x": 4, 46
47 "y": 0 47 {"matrix": [5, 2], "x": 0, "y": 1.5},
48 }, 48 {"matrix": [4, 2], "x": 1, "y": 1.5},
49 { 49 {"matrix": [4, 3], "x": 2, "y": 1.5},
50 "label": "F4", 50 {"matrix": [4, 4], "x": 3, "y": 1.5},
51 "x": 5, 51 {"matrix": [4, 5], "x": 4, "y": 1.5},
52 "y": 0 52 {"matrix": [5, 5], "x": 5, "y": 1.5},
53 }, 53 {"matrix": [5, 7], "x": 6, "y": 1.5},
54 { 54 {"matrix": [4, 7], "x": 7, "y": 1.5},
55 "label": "F5", 55 {"matrix": [4, 8], "x": 8, "y": 1.5},
56 "x": 6.5, 56 {"matrix": [4, 9], "x": 9, "y": 1.5},
57 "y": 0 57 {"matrix": [4, 10], "x": 10, "y": 1.5},
58 }, 58 {"matrix": [5, 10], "x": 11, "y": 1.5},
59 { 59 {"matrix": [5, 8], "x": 12, "y": 1.5},
60 "label": "F6", 60 {"matrix": [6, 6], "x": 13, "y": 1.5, "w": 2},
61 "x": 7.5, 61
62 "y": 0 62 {"matrix": [5, 12], "x": 15.25, "y": 1.5},
63 }, 63 {"matrix": [5, 14], "x": 16.25, "y": 1.5},
64 { 64 {"matrix": [5, 13], "x": 17.25, "y": 1.5},
65 "label": "F7", 65
66 "x": 8.5, 66 {"matrix": [6, 2], "x": 0, "y": 2.5, "w": 1.5},
67 "y": 0 67 {"matrix": [3, 2], "x": 1.5, "y": 2.5},
68 }, 68 {"matrix": [3, 3], "x": 2.5, "y": 2.5},
69 { 69 {"matrix": [3, 4], "x": 3.5, "y": 2.5},
70 "label": "F8", 70 {"matrix": [3, 5], "x": 4.5, "y": 2.5},
71 "x": 9.5, 71 {"matrix": [6, 5], "x": 5.5, "y": 2.5},
72 "y": 0 72 {"matrix": [6, 7], "x": 6.5, "y": 2.5},
73 }, 73 {"matrix": [3, 7], "x": 7.5, "y": 2.5},
74 { 74 {"matrix": [3, 8], "x": 8.5, "y": 2.5},
75 "label": "F9", 75 {"matrix": [3, 9], "x": 9.5, "y": 2.5},
76 "x": 11, 76 {"matrix": [3, 10], "x": 10.5, "y": 2.5},
77 "y": 0 77 {"matrix": [6, 10], "x": 11.5, "y": 2.5},
78 }, 78 {"matrix": [6, 8], "x": 12.5, "y": 2.5},
79 { 79 {"matrix": [2, 6], "x": 13.5, "y": 2.5, "w": 1.5},
80 "label": "F10", 80
81 "x": 12, 81 {"matrix": [5, 11], "x": 15.25, "y": 2.5},
82 "y": 0 82 {"matrix": [4, 14], "x": 16.25, "y": 2.5},
83 }, 83 {"matrix": [4, 13], "x": 17.25, "y": 2.5},
84 { 84
85 "label": "F11", 85 {"matrix": [6, 3], "x": 0, "y": 3.5, "w": 1.5},
86 "x": 13, 86 {"matrix": [2, 2], "x": 1.75, "y": 3.5},
87 "y": 0 87 {"matrix": [2, 3], "x": 2.75, "y": 3.5},
88 }, 88 {"matrix": [2, 4], "x": 3.75, "y": 3.5},
89 { 89 {"matrix": [2, 5], "x": 4.75, "y": 3.5},
90 "label": "F12", 90 {"matrix": [7, 5], "x": 5.75, "y": 3.5},
91 "x": 14, 91 {"matrix": [7, 7], "x": 6.75, "y": 3.5},
92 "y": 0 92 {"matrix": [2, 7], "x": 7.75, "y": 3.5},
93 }, 93 {"matrix": [2, 8], "x": 8.75, "y": 3.5},
94 { 94 {"matrix": [2, 9], "x": 9.75, "y": 3.5},
95 "label": "PrtSc", 95 {"matrix": [2, 10], "x": 10.75, "y": 3.5},
96 "x": 15.25, 96 {"matrix": [7, 10], "x": 11.75, "y": 3.5},
97 "y": 0 97 {"matrix": [1, 10], "x": 12.75, "y": 3.5},
98 }, 98 {"matrix": [1, 6], "x": 13.75, "y": 3.5, "w": 1.25},
99 { 99
100 "label": "Scroll Lock", 100 {"matrix": [6, 1], "x": 0, "y": 4.5, "w": 1.25},
101 "x": 16.25, 101 {"matrix": [7, 3], "x": 1.25, "y": 4.5},
102 "y": 0 102 {"matrix": [1, 2], "x": 2.25, "y": 4.5},
103 }, 103 {"matrix": [1, 3], "x": 3.25, "y": 4.5},
104 { 104 {"matrix": [1, 4], "x": 4.25, "y": 4.5},
105 "label": "Pause", 105 {"matrix": [1, 5], "x": 5.25, "y": 4.5},
106 "x": 17.25, 106 {"matrix": [0, 5], "x": 6.25, "y": 4.5},
107 "y": 0 107 {"matrix": [0, 7], "x": 7.25, "y": 4.5},
108 }, 108 {"matrix": [1, 7], "x": 8.25, "y": 4.5},
109 { 109 {"matrix": [1, 8], "x": 9.25, "y": 4.5},
110 "label": "~", 110 {"matrix": [1, 9], "x": 10.25, "y": 4.5},
111 "x": 0, 111 {"matrix": [0, 10], "x": 11.25, "y": 4.5},
112 "y": 1.5 112 {"matrix": [1, 1], "x": 12.25, "y": 4.5, "w": 2.75},
113 }, 113
114 { 114 {"matrix": [7, 14], "x": 16.25, "y": 4.5},
115 "label": "!", 115
116 "x": 1, 116 {"matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.5},
117 "y": 1.5 117 {"matrix": [7, 15], "x": 2.5, "y": 5.5, "w": 1.5},
118 }, 118 {"matrix": [0, 6], "x": 4, "y": 5.5, "w": 7},
119 { 119 {"matrix": [0, 15], "x": 11, "y": 5.5, "w": 1.5},
120 "label": "@", 120 {"matrix": [1, 0], "x": 13.5, "y": 5.5, "w": 1.5},
121 "x": 2, 121
122 "y": 1.5 122 {"matrix": [0, 14], "x": 15.25, "y": 5.5},
123 }, 123 {"matrix": [0, 11], "x": 16.25, "y": 5.5},
124 { 124 {"matrix": [0, 12], "x": 17.25, "y": 5.5}
125 "label": "#",
126 "x": 3,
127 "y": 1.5
128 },
129 {
130 "label": "$",
131 "x": 4,
132 "y": 1.5
133 },
134 {
135 "label": "%",
136 "x": 5,
137 "y": 1.5
138 },
139 {
140 "label": "^",
141 "x": 6,
142 "y": 1.5
143 },
144 {
145 "label": "&",
146 "x": 7,
147 "y": 1.5
148 },
149 {
150 "label": "*",
151 "x": 8,
152 "y": 1.5
153 },
154 {
155 "label": "(",
156 "x": 9,
157 "y": 1.5
158 },
159 {
160 "label": ")",
161 "x": 10,
162 "y": 1.5
163 },
164 {
165 "label": "_",
166 "x": 11,
167 "y": 1.5
168 },
169 {
170 "label": "+",
171 "x": 12,
172 "y": 1.5
173 },
174 {
175 "label": "Backspace",
176 "x": 13,
177 "y": 1.5,
178 "w": 2
179 },
180 {
181 "label": "Insert",
182 "x": 15.25,
183 "y": 1.5
184 },
185 {
186 "label": "Home",
187 "x": 16.25,
188 "y": 1.5
189 },
190 {
191 "label": "PgUp",
192 "x": 17.25,
193 "y": 1.5
194 },
195 {
196 "label": "Tab",
197 "x": 0,
198 "y": 2.5,
199 "w": 1.5
200 },
201 {
202 "label": "Q",
203 "x": 1.5,
204 "y": 2.5
205 },
206 {
207 "label": "W",
208 "x": 2.5,
209 "y": 2.5
210 },
211 {
212 "label": "E",
213 "x": 3.5,
214 "y": 2.5
215 },
216 {
217 "label": "R",
218 "x": 4.5,
219 "y": 2.5
220 },
221 {
222 "label": "T",
223 "x": 5.5,
224 "y": 2.5
225 },
226 {
227 "label": "Y",
228 "x": 6.5,
229 "y": 2.5
230 },
231 {
232 "label": "U",
233 "x": 7.5,
234 "y": 2.5
235 },
236 {
237 "label": "I",
238 "x": 8.5,
239 "y": 2.5
240 },
241 {
242 "label": "O",
243 "x": 9.5,
244 "y": 2.5
245 },
246 {
247 "label": "P",
248 "x": 10.5,
249 "y": 2.5
250 },
251 {
252 "label": "{",
253 "x": 11.5,
254 "y": 2.5
255 },
256 {
257 "label": "}",
258 "x": 12.5,
259 "y": 2.5
260 },
261 {
262 "label": "|",
263 "x": 13.5,
264 "y": 2.5,
265 "w": 1.5
266 },
267 {
268 "label": "Delete",
269 "x": 15.25,
270 "y": 2.5
271 },
272 {
273 "label": "End",
274 "x": 16.25,
275 "y": 2.5
276 },
277 {
278 "label": "PgDn",
279 "x": 17.25,
280 "y": 2.5
281 },
282 {
283 "label": "Caps Lock",
284 "x": 0,
285 "y": 3.5,
286 "w": 1.5
287 },
288 {
289 "label": "A",
290 "x": 1.75,
291 "y": 3.5
292 },
293 {
294 "label": "S",
295 "x": 2.75,
296 "y": 3.5
297 },
298 {
299 "label": "D",
300 "x": 3.75,
301 "y": 3.5
302 },
303 {
304 "label": "F",
305 "x": 4.75,
306 "y": 3.5
307 },
308 {
309 "label": "G",
310 "x": 5.75,
311 "y": 3.5
312 },
313 {
314 "label": "H",
315 "x": 6.75,
316 "y": 3.5
317 },
318 {
319 "label": "J",
320 "x": 7.75,
321 "y": 3.5
322 },
323 {
324 "label": "K",
325 "x": 8.75,
326 "y": 3.5
327 },
328 {
329 "label": "L",
330 "x": 9.75,
331 "y": 3.5
332 },
333 {
334 "label": ":",
335 "x": 10.75,
336 "y": 3.5
337 },
338 {
339 "label": "\"",
340 "x": 11.75,
341 "y": 3.5
342 },
343 {
344 "label": "~",
345 "x": 12.75,
346 "y": 3.5
347 },
348 {
349 "label": "Enter",
350 "x": 13.75,
351 "y": 3.5,
352 "w": 1.25
353 },
354 {
355 "label": "Shift",
356 "x": 0,
357 "y": 4.5,
358 "w": 1.25
359 },
360 {
361 "label": "|",
362 "x": 1.25,
363 "y": 4.5
364 },
365 {
366 "label": "Z",
367 "x": 2.25,
368 "y": 4.5
369 },
370 {
371 "label": "X",
372 "x": 3.25,
373 "y": 4.5
374 },
375 {
376 "label": "C",
377 "x": 4.25,
378 "y": 4.5
379 },
380 {
381 "label": "V",
382 "x": 5.25,
383 "y": 4.5
384 },
385 {
386 "label": "B",
387 "x": 6.25,
388 "y": 4.5
389 },
390 {
391 "label": "N",
392 "x": 7.25,
393 "y": 4.5
394 },
395 {
396 "label": "M",
397 "x": 8.25,
398 "y": 4.5
399 },
400 {
401 "label": "<",
402 "x": 9.25,
403 "y": 4.5
404 },
405 {
406 "label": ">",
407 "x": 10.25,
408 "y": 4.5
409 },
410 {
411 "label": "?",
412 "x": 11.25,
413 "y": 4.5
414 },
415 {
416 "label": "Shift",
417 "x": 12.25,
418 "y": 4.5,
419 "w": 2.75
420 },
421 {
422 "label": "↑",
423 "x": 16.25,
424 "y": 4.5
425 },
426 {
427 "label": "Ctrl",
428 "x": 0,
429 "y": 5.5,
430 "w": 1.5
431 },
432 {
433 "label": "Alt",
434 "x": 2.5,
435 "y": 5.5,
436 "w": 1.5
437 },
438 {
439 "x": 4,
440 "y": 5.5,
441 "w": 7
442 },
443 {
444 "label": "Alt",
445 "x": 11,
446 "y": 5.5,
447 "w": 1.5
448 },
449 {
450 "label": "Ctrl",
451 "x": 13.5,
452 "y": 5.5,
453 "w": 1.5
454 },
455 {
456 "label": "←",
457 "x": 15.25,
458 "y": 5.5
459 },
460 {
461 "label": "↓",
462 "x": 16.25,
463 "y": 5.5
464 },
465 {
466 "label": "→",
467 "x": 17.25,
468 "y": 5.5
469 }
470 ] 125 ]
471 } 126 }
472 } 127 }
diff --git a/keyboards/converter/modelm_ssk/modelm_ssk.h b/keyboards/converter/modelm_ssk/modelm_ssk.h
deleted file mode 100644
index 5c4b9b80ea..0000000000
--- a/keyboards/converter/modelm_ssk/modelm_ssk.h
+++ /dev/null
@@ -1,45 +0,0 @@
1/* Copyright 2019-2021 iw0rm3r, tiltowait
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#pragma once
17
18#include "quantum.h"
19
20/* This a shortcut to help you visually see your layout.
21 * The first section contains "names" for physical keys of the keyboard
22 * and defines their position on the board.
23 * The second section defines position of the keys on the switch matrix
24 * (where COLUMNS and ROWS crosses). */
25
26#define LAYOUT( \
27 K5A, K5B, K5C, K5D, K5E, K5F, K5G, K5H, K5I, K5J, K5K, K5L, K5M, K5N, K5O, K5P, \
28 \
29 K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H, K4I, K4J, K4K, K4L, K4M, K4N, K4O, K4P, K4Q, \
30 K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H, K3I, K3J, K3K, K3L, K3M, K3N, K3O, K3P, K3Q, \
31 K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H, K2I, K2J, K2K, K2L, K2M, K2N, \
32 K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H, K1I, K1J, K1K, K1L, K1M, K1N, \
33 K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H \
34) \
35{ \
36/* 00 */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K1G, K0C, K1H, KC_NO, KC_NO, K1L, K0G, K0H, KC_NO, K0F, K0D }, \
37/* 01 */ { K0E, K1M, K1C, K1D, K1E, K1F, K2N, K1I, K1J, K1K, KC_NO, KC_NO, KC_NO, KC_NO, K5P, KC_NO }, \
38/* 02 */ { KC_NO, KC_NO, K2B, K2C, K2D, K2E, K3N, K2H, K2I, K2J, K2K, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
39/* 03 */ { KC_NO, KC_NO, K3B, K3C, K3D, K3E, KC_NO, K3H, K3I, K3J, K3K, KC_NO, KC_NO, KC_NO, KC_NO, K5O }, \
40/* 04 */ { KC_NO, KC_NO, K4B, K4C, K4D, K4E, K5K, K4H, K4I, K4J, K4K, K5L, K5M, K3Q, K3P, K5N }, \
41/* 05 */ { K0A, KC_NO, K4A, K5B, K5C, K4F, K5J, K4G, K4M, K5I, K4L, K3O, K4O, K4Q, K4P, KC_NO }, \
42/* 06 */ { KC_NO, K1A, K3A, K2A, K5D, K3F, K4N, K3G, K3M, K5H, K3L, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
43/* 07 */ { KC_NO, KC_NO, K5A, KC_NO, K5E, K2F, K5F, K2G, K5G, KC_NO, K2L, KC_NO, KC_NO, KC_NO, K1N, K0B }, \
44}
45/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
diff --git a/keyboards/irene/info.json b/keyboards/irene/info.json
index 9e3a4a220d..e8461df3b1 100644
--- a/keyboards/irene/info.json
+++ b/keyboards/irene/info.json
@@ -18,70 +18,76 @@
18 "layouts": { 18 "layouts": {
19 "LAYOUT_all": { 19 "LAYOUT_all": {
20 "layout": [ 20 "layout": [
21 {"x":0.5, "y":0}, 21 {"matrix": [0, 0], "x": 0.5, "y": 0},
22 {"x":1.75, "y":0}, 22 {"matrix": [0, 1], "x": 1.75, "y": 0},
23 {"x":2.75, "y":0}, 23 {"matrix": [0, 2], "x": 2.75, "y": 0},
24 {"x":3.75, "y":0}, 24 {"matrix": [0, 3], "x": 3.75, "y": 0},
25 {"x":4.75, "y":0}, 25 {"matrix": [0, 4], "x": 4.75, "y": 0},
26 {"x":5.75, "y":0}, 26 {"matrix": [0, 5], "x": 5.75, "y": 0},
27 {"x":6.75, "y":0}, 27 {"matrix": [0, 6], "x": 6.75, "y": 0},
28 {"x":7.75, "y":0}, 28 {"matrix": [4, 7], "x": 7.75, "y": 0},
29 {"x":10, "y":0}, 29 {"matrix": [0, 7], "x": 10, "y": 0},
30 {"x":11, "y":0}, 30 {"matrix": [0, 8], "x": 11, "y": 0},
31 {"x":12, "y":0}, 31 {"matrix": [0, 9], "x": 12, "y": 0},
32 {"x":13, "y":0}, 32 {"matrix": [0, 10], "x": 13, "y": 0},
33 {"x":14, "y":0}, 33 {"matrix": [0, 11], "x": 14, "y": 0},
34 {"x":15, "y":0}, 34 {"matrix": [0, 12], "x": 15, "y": 0},
35 {"x":16, "y":0}, 35 {"matrix": [0, 13], "x": 16, "y": 0},
36 {"x":17, "y":0}, 36 {"matrix": [0, 14], "x": 17, "y": 0},
37 37
38 {"x":0.25, "y":1}, 38 {"matrix": [1, 0], "x": 0.25, "y": 1},
39 {"x":1.5, "y":1, "w":1.5}, 39 {"matrix": [1, 1], "x": 1.5, "y": 1, "w": 1.5},
40 {"x":3, "y":1}, {"x":4, "y":1}, 40 {"matrix": [1, 2], "x": 3, "y": 1},
41 {"x":5, "y":1}, {"x":6, "y":1}, 41 {"matrix": [1, 3], "x": 4, "y": 1},
42 {"x":7, "y":1}, {"x":9.5, "y":1}, 42 {"matrix": [1, 4], "x": 5, "y": 1},
43 {"x":10.5, "y":1}, {"x":11.5, "y":1}, 43 {"matrix": [1, 5], "x": 6, "y": 1},
44 {"x":12.5, "y":1}, {"x":13.5, "y":1}, 44 {"matrix": [1, 6], "x": 7, "y": 1},
45 {"x":14.5, "y":1}, {"x":15.5, "y":1}, 45 {"matrix": [1, 7], "x": 9.5, "y": 1},
46 {"x":16.5, "y":1, "w":1.5}, 46 {"matrix": [1, 8], "x": 10.5, "y": 1},
47 {"matrix": [1, 9], "x": 11.5, "y": 1},
48 {"matrix": [1, 10], "x": 12.5, "y": 1},
49 {"matrix": [1, 11], "x": 13.5, "y": 1},
50 {"matrix": [1, 12], "x": 14.5, "y": 1},
51 {"matrix": [1, 13], "x": 15.5, "y": 1},
52 {"matrix": [1, 14], "x": 16.5, "y": 1, "w": 1.5},
47 53
48 {"x":0, "y":2}, 54 {"matrix": [2, 0], "x": 0, "y": 2},
49 {"x":1.5, "y":2, "w":1.75}, 55 {"matrix": [2, 1], "x": 1.5, "y": 2, "w": 1.75},
50 {"x":3.25, "y":2}, 56 {"matrix": [2, 2], "x": 3.25, "y": 2},
51 {"x":4.25, "y":2}, 57 {"matrix": [2, 3], "x": 4.25, "y": 2},
52 {"x":5.25, "y":2}, 58 {"matrix": [2, 4], "x": 5.25, "y": 2},
53 {"x":6.25, "y":2}, 59 {"matrix": [2, 5], "x": 6.25, "y": 2},
54 {"x":7.25, "y":2}, 60 {"matrix": [2, 6], "x": 7.25, "y": 2},
55 {"x":9.75, "y":2}, 61 {"matrix": [2, 7], "x": 9.75, "y": 2},
56 {"x":10.75, "y":2}, 62 {"matrix": [2, 8], "x": 10.75, "y": 2},
57 {"x":11.75, "y":2}, 63 {"matrix": [2, 9], "x": 11.75, "y": 2},
58 {"x":12.75, "y":2}, 64 {"matrix": [2, 10], "x": 12.75, "y": 2},
59 {"x":13.75, "y":2}, 65 {"matrix": [2, 11], "x": 13.75, "y": 2},
60 {"x":14.75, "y":2}, 66 {"matrix": [2, 12], "x": 14.75, "y": 2},
61 {"x":15.75, "y":2, "w":2.25}, 67 {"matrix": [2, 14], "x": 15.75, "y": 2, "w": 2.25},
62 68
63 {"x":1.5, "y":3, "w":2.25}, 69 {"matrix": [3, 1], "x": 1.5, "y": 3, "w": 2.25},
64 {"x":3.75, "y":3}, 70 {"matrix": [3, 2], "x": 3.75, "y": 3},
65 {"x":4.75, "y":3}, 71 {"matrix": [3, 3], "x": 4.75, "y": 3},
66 {"x":5.75, "y":3}, 72 {"matrix": [3, 4], "x": 5.75, "y": 3},
67 {"x":6.75, "y":3}, 73 {"matrix": [3, 5], "x": 6.75, "y": 3},
68 {"x":7.75, "y":3}, 74 {"matrix": [3, 6], "x": 7.75, "y": 3},
69 {"x":9.25, "y":3}, 75 {"matrix": [3, 7], "x": 9.25, "y": 3},
70 {"x":10.25, "y":3}, 76 {"matrix": [3, 8], "x": 10.25, "y": 3},
71 {"x":11.25, "y":3}, 77 {"matrix": [3, 9], "x": 11.25, "y": 3},
72 {"x":12.25, "y":3}, 78 {"matrix": [3, 10], "x": 12.25, "y": 3},
73 {"x":13.25, "y":3}, 79 {"matrix": [3, 11], "x": 13.25, "y": 3},
74 {"x":14.25, "y":3}, 80 {"matrix": [3, 12], "x": 14.25, "y": 3},
75 {"x":15.25, "y":3, "w":1.75}, 81 {"matrix": [3, 13], "x": 15.25, "y": 3, "w": 1.75},
76 {"x":17, "y":3}, 82 {"matrix": [3, 14], "x": 17, "y": 3},
77 83
78 {"x":1.5, "y":4, "w":1.5}, 84 {"matrix": [4, 1], "x": 1.5, "y": 4, "w": 1.5},
79 {"x":4, "y":4, "w":1.5}, 85 {"matrix": [4, 3], "x": 4, "y": 4, "w": 1.5},
80 {"x":5.5, "y":4, "w":2}, 86 {"matrix": [4, 4], "x": 5.5, "y": 4, "w": 2},
81 {"x":7.5, "y":4, "w":1.25}, 87 {"matrix": [4, 6], "x": 7.5, "y": 4, "w": 1.25},
82 {"x":9.25, "y":4, "w":2.75}, 88 {"matrix": [4, 8], "x": 9.25, "y": 4, "w": 2.75},
83 {"x":12, "y":4, "w":1.5}, 89 {"matrix": [4, 10], "x": 12, "y": 4, "w": 1.5},
84 {"x":16.5, "y":4, "w":1.5} 90 {"matrix": [4, 14], "x": 16.5, "y": 4, "w": 1.5}
85 ] 91 ]
86 } 92 }
87 } 93 }
diff --git a/keyboards/irene/irene.h b/keyboards/irene/irene.h
deleted file mode 100644
index 435e84957d..0000000000
--- a/keyboards/irene/irene.h
+++ /dev/null
@@ -1,43 +0,0 @@
1/* Copyright 2021 Ramon Imbao
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 ___ KC_NO
30
31#define LAYOUT_all( \
32 k00, k01, k02, k03, k04, k05, k06, k57, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
33 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, \
34 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2e, \
35 k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \
36 k41, k43, k44, k46, k48, k4a, k4e \
37) { \
38 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
39 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e }, \
40 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, ___, k2e }, \
41 { ___, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \
42 { ___, k41, ___, k43, k44, ___, k46, ___, k48, ___, k4a, ___, ___, ___, k4e }, \
43}
diff --git a/keyboards/keebio/quefrency/rev1/info.json b/keyboards/keebio/quefrency/rev1/info.json
index a715b1040f..ee616bb0fe 100644
--- a/keyboards/keebio/quefrency/rev1/info.json
+++ b/keyboards/keebio/quefrency/rev1/info.json
@@ -27,465 +27,462 @@
27 "layouts": { 27 "layouts": {
28 "LAYOUT": { 28 "LAYOUT": {
29 "layout": [ 29 "layout": [
30 { "label": "Esc", "x": 0, "y": 0 }, 30 {"matrix": [0, 0], "x": 0, "y": 0},
31 { "label": "1", "x": 1, "y": 0 }, 31 {"matrix": [0, 1], "x": 1, "y": 0},
32 { "label": "2", "x": 2, "y": 0 }, 32 {"matrix": [0, 2], "x": 2, "y": 0},
33 { "label": "3", "x": 3, "y": 0 }, 33 {"matrix": [0, 3], "x": 3, "y": 0},
34 { "label": "4", "x": 4, "y": 0 }, 34 {"matrix": [0, 4], "x": 4, "y": 0},
35 { "label": "5", "x": 5, "y": 0 }, 35 {"matrix": [0, 5], "x": 5, "y": 0},
36 { "label": "6", "x": 6, "y": 0 }, 36 {"matrix": [0, 6], "x": 6, "y": 0},
37 37
38 { "label": "7", "x": 8, "y": 0 }, 38 {"matrix": [6, 0], "x": 8, "y": 0},
39 { "label": "8", "x": 9, "y": 0 }, 39 {"matrix": [6, 1], "x": 9, "y": 0},
40 { "label": "9", "x": 10, "y": 0 }, 40 {"matrix": [6, 2], "x": 10, "y": 0},
41 { "label": "0", "x": 11, "y": 0 }, 41 {"matrix": [6, 3], "x": 11, "y": 0},
42 { "label": "-", "x": 12, "y": 0 }, 42 {"matrix": [6, 4], "x": 12, "y": 0},
43 { "label": "=", "x": 13, "y": 0 }, 43 {"matrix": [6, 5], "x": 13, "y": 0},
44 { "label": "Del", "x": 14, "y": 0 }, 44 {"matrix": [6, 6], "x": 14, "y": 0},
45 { "label": "Bksp", "x": 15, "y": 0 }, 45 {"matrix": [6, 7], "x": 15, "y": 0},
46 46
47 { "label": "Tab", "x": 0, "y": 1, "w": 1.5 }, 47 {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
48 { "label": "Q", "x": 1.5, "y": 1 }, 48 {"matrix": [1, 1], "x": 1.5, "y": 1},
49 { "label": "W", "x": 2.5, "y": 1 }, 49 {"matrix": [1, 2], "x": 2.5, "y": 1},
50 { "label": "E", "x": 3.5, "y": 1 }, 50 {"matrix": [1, 3], "x": 3.5, "y": 1},
51 { "label": "R", "x": 4.5, "y": 1 }, 51 {"matrix": [1, 4], "x": 4.5, "y": 1},
52 { "label": "T", "x": 5.5, "y": 1 }, 52 {"matrix": [1, 5], "x": 5.5, "y": 1},
53 53
54 { "label": "Y", "x": 7.5, "y": 1 }, 54 {"matrix": [7, 0], "x": 7.5, "y": 1},
55 { "label": "U", "x": 8.5, "y": 1 }, 55 {"matrix": [7, 1], "x": 8.5, "y": 1},
56 { "label": "I", "x": 9.5, "y": 1 }, 56 {"matrix": [7, 2], "x": 9.5, "y": 1},
57 { "label": "O", "x": 10.5, "y": 1 }, 57 {"matrix": [7, 3], "x": 10.5, "y": 1},
58 { "label": "P", "x": 11.5, "y": 1 }, 58 {"matrix": [7, 4], "x": 11.5, "y": 1},
59 { "label": "[", "x": 12.5, "y": 1 }, 59 {"matrix": [7, 5], "x": 12.5, "y": 1},
60 { "label": "]", "x": 13.5, "y": 1 }, 60 {"matrix": [7, 6], "x": 13.5, "y": 1},
61 { "label": "Backslash", "x": 14.5, "y": 1, "w": 1.5 }, 61 {"matrix": [7, 7], "x": 14.5, "y": 1, "w": 1.5},
62 62
63 { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 }, 63 {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
64 { "label": "A", "x": 1.75, "y": 2 }, 64 {"matrix": [2, 1], "x": 1.75, "y": 2},
65 { "label": "S", "x": 2.75, "y": 2 }, 65 {"matrix": [2, 2], "x": 2.75, "y": 2},
66 { "label": "D", "x": 3.75, "y": 2 }, 66 {"matrix": [2, 3], "x": 3.75, "y": 2},
67 { "label": "F", "x": 4.75, "y": 2 }, 67 {"matrix": [2, 4], "x": 4.75, "y": 2},
68 { "label": "G", "x": 5.75, "y": 2 }, 68 {"matrix": [2, 5], "x": 5.75, "y": 2},
69 69
70 { "label": "H", "x": 7.75, "y": 2 }, 70 {"matrix": [8, 0], "x": 7.75, "y": 2},
71 { "label": "J", "x": 8.75, "y": 2 }, 71 {"matrix": [8, 1], "x": 8.75, "y": 2},
72 { "label": "K", "x": 9.75, "y": 2 }, 72 {"matrix": [8, 2], "x": 9.75, "y": 2},
73 { "label": "L", "x": 10.75, "y": 2 }, 73 {"matrix": [8, 3], "x": 10.75, "y": 2},
74 { "label": ";", "x": 11.75, "y": 2 }, 74 {"matrix": [8, 4], "x": 11.75, "y": 2},
75 { "label": "'", "x": 12.75, "y": 2 }, 75 {"matrix": [8, 5], "x": 12.75, "y": 2},
76 { "label": "Enter", "x": 13.75, "y": 2, "w": 2.25 }, 76 {"matrix": [8, 7], "x": 13.75, "y": 2, "w": 2.25},
77 77
78 { "label": "Shift", "x": 0, "y": 3, "w": 2.25 }, 78 {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
79 { "label": "Z", "x": 2.25, "y": 3 }, 79 {"matrix": [3, 2], "x": 2.25, "y": 3},
80 { "label": "X", "x": 3.25, "y": 3 }, 80 {"matrix": [3, 3], "x": 3.25, "y": 3},
81 { "label": "C", "x": 4.25, "y": 3 }, 81 {"matrix": [3, 4], "x": 4.25, "y": 3},
82 { "label": "V", "x": 5.25, "y": 3 }, 82 {"matrix": [3, 5], "x": 5.25, "y": 3},
83 { "label": "B", "x": 6.25, "y": 3 }, 83 {"matrix": [3, 6], "x": 6.25, "y": 3},
84 84
85 { "label": "N", "x": 8.25, "y": 3 }, 85 {"matrix": [9, 0], "x": 8.25, "y": 3},
86 { "label": "M", "x": 9.25, "y": 3 }, 86 {"matrix": [9, 1], "x": 9.25, "y": 3},
87 { "label": ",", "x": 10.25, "y": 3 }, 87 {"matrix": [9, 2], "x": 10.25, "y": 3},
88 { "label": ".", "x": 11.25, "y": 3 }, 88 {"matrix": [9, 3], "x": 11.25, "y": 3},
89 { "label": "/", "x": 12.25, "y": 3 }, 89 {"matrix": [9, 5], "x": 12.25, "y": 3},
90 { "label": "Shift", "x": 13.25, "y": 3, "w": 1.75 }, 90 {"matrix": [9, 6], "x": 13.25, "y": 3, "w": 1.75},
91 { "label": "Up", "x": 15, "y": 3 }, 91 {"matrix": [9, 7], "x": 15, "y": 3},
92 92
93 { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 }, 93 {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
94 { "label": "Alt", "x": 1.25, "y": 4, "w": 1.25 }, 94 {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
95 { "label": "Win", "x": 2.5, "y": 4, "w": 1.25 }, 95 {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
96 { "label": "Fn", "x": 3.75, "y": 4, "w": 1.25 }, 96 {"matrix": [4, 4], "x": 3.75, "y": 4, "w": 1.25},
97 { "label": "Space", "x": 5, "y": 4, "w": 2.25 }, 97 {"matrix": [4, 6], "x": 5, "y": 4, "w": 2.25},
98 98
99 { "label": "Fn", "x": 8.25, "y": 4, "w": 1.25 }, 99 {"matrix": [10, 0], "x": 8.25, "y": 4, "w": 1.25},
100 { "label": "Space", "x": 9.5, "y": 4, "w": 1.5 }, 100 {"matrix": [10, 1], "x": 9.5, "y": 4, "w": 1.5},
101 { "label": "Alt", "x": 11, "y": 4 }, 101 {"matrix": [10, 3], "x": 11, "y": 4},
102 { "label": "Ctrl", "x": 12, "y": 4 }, 102 {"matrix": [10, 4], "x": 12, "y": 4},
103 { "label": "Left", "x": 13, "y": 4 }, 103 {"matrix": [10, 5], "x": 13, "y": 4},
104 { "label": "Down", "x": 14, "y": 4 }, 104 {"matrix": [10, 6], "x": 14, "y": 4},
105 { "label": "Right", "x": 15, "y": 4 } 105 {"matrix": [10, 7], "x": 15, "y": 4}
106 ] 106 ]
107 }, 107 },
108 "LAYOUT_65": { 108 "LAYOUT_65": {
109 "layout": [ 109 "layout": [
110 { "label": "Esc", "x": 0, "y": 0 }, 110 {"matrix": [0, 0], "x": 0, "y": 0},
111 { "label": "1", "x": 1, "y": 0 }, 111 {"matrix": [0, 1], "x": 1, "y": 0},
112 { "label": "2", "x": 2, "y": 0 }, 112 {"matrix": [0, 2], "x": 2, "y": 0},
113 { "label": "3", "x": 3, "y": 0 }, 113 {"matrix": [0, 3], "x": 3, "y": 0},
114 { "label": "4", "x": 4, "y": 0 }, 114 {"matrix": [0, 4], "x": 4, "y": 0},
115 { "label": "5", "x": 5, "y": 0 }, 115 {"matrix": [0, 5], "x": 5, "y": 0},
116 { "label": "6", "x": 6, "y": 0 }, 116 {"matrix": [0, 6], "x": 6, "y": 0},
117 117
118 { "label": "7", "x": 8, "y": 0 }, 118 {"matrix": [6, 0], "x": 8, "y": 0},
119 { "label": "8", "x": 9, "y": 0 }, 119 {"matrix": [6, 1], "x": 9, "y": 0},
120 { "label": "9", "x": 10, "y": 0 }, 120 {"matrix": [6, 2], "x": 10, "y": 0},
121 { "label": "0", "x": 11, "y": 0 }, 121 {"matrix": [6, 3], "x": 11, "y": 0},
122 { "label": "-", "x": 12, "y": 0 }, 122 {"matrix": [6, 4], "x": 12, "y": 0},
123 { "label": "=", "x": 13, "y": 0 }, 123 {"matrix": [6, 5], "x": 13, "y": 0},
124 { "label": "Del", "x": 14, "y": 0 }, 124 {"matrix": [6, 6], "x": 14, "y": 0},
125 { "label": "Bksp", "x": 15, "y": 0 }, 125 {"matrix": [6, 7], "x": 15, "y": 0},
126 { "label": "Home", "x": 16, "y": 0 }, 126 {"matrix": [11, 6], "x": 16, "y": 0},
127 127
128 { "label": "Tab", "x": 0, "y": 1, "w": 1.5 }, 128 {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
129 { "label": "Q", "x": 1.5, "y": 1 }, 129 {"matrix": [1, 1], "x": 1.5, "y": 1},
130 { "label": "W", "x": 2.5, "y": 1 }, 130 {"matrix": [1, 2], "x": 2.5, "y": 1},
131 { "label": "E", "x": 3.5, "y": 1 }, 131 {"matrix": [1, 3], "x": 3.5, "y": 1},
132 { "label": "R", "x": 4.5, "y": 1 }, 132 {"matrix": [1, 4], "x": 4.5, "y": 1},
133 { "label": "T", "x": 5.5, "y": 1 }, 133 {"matrix": [1, 5], "x": 5.5, "y": 1},
134 134
135 { "label": "Y", "x": 7.5, "y": 1 }, 135 {"matrix": [7, 0], "x": 7.5, "y": 1},
136 { "label": "U", "x": 8.5, "y": 1 }, 136 {"matrix": [7, 1], "x": 8.5, "y": 1},
137 { "label": "I", "x": 9.5, "y": 1 }, 137 {"matrix": [7, 2], "x": 9.5, "y": 1},
138 { "label": "O", "x": 10.5, "y": 1 }, 138 {"matrix": [7, 3], "x": 10.5, "y": 1},
139 { "label": "P", "x": 11.5, "y": 1 }, 139 {"matrix": [7, 4], "x": 11.5, "y": 1},
140 { "label": "[", "x": 12.5, "y": 1 }, 140 {"matrix": [7, 5], "x": 12.5, "y": 1},
141 { "label": "]", "x": 13.5, "y": 1 }, 141 {"matrix": [7, 6], "x": 13.5, "y": 1},
142 { "label": "Backslash", "x": 14.5, "y": 1, "w": 1.5 }, 142 {"matrix": [7, 7], "x": 14.5, "y": 1, "w": 1.5},
143 { "label": "End", "x": 16, "y": 1 }, 143 {"matrix": [11, 7], "x": 16, "y": 1},
144 144
145 { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 }, 145 {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
146 { "label": "A", "x": 1.75, "y": 2 }, 146 {"matrix": [2, 1], "x": 1.75, "y": 2},
147 { "label": "S", "x": 2.75, "y": 2 }, 147 {"matrix": [2, 2], "x": 2.75, "y": 2},
148 { "label": "D", "x": 3.75, "y": 2 }, 148 {"matrix": [2, 3], "x": 3.75, "y": 2},
149 { "label": "F", "x": 4.75, "y": 2 }, 149 {"matrix": [2, 4], "x": 4.75, "y": 2},
150 { "label": "G", "x": 5.75, "y": 2 }, 150 {"matrix": [2, 5], "x": 5.75, "y": 2},
151 151
152 { "label": "H", "x": 7.75, "y": 2 }, 152 {"matrix": [8, 0], "x": 7.75, "y": 2},
153 { "label": "J", "x": 8.75, "y": 2 }, 153 {"matrix": [8, 1], "x": 8.75, "y": 2},
154 { "label": "K", "x": 9.75, "y": 2 }, 154 {"matrix": [8, 2], "x": 9.75, "y": 2},
155 { "label": "L", "x": 10.75, "y": 2 }, 155 {"matrix": [8, 3], "x": 10.75, "y": 2},
156 { "label": ";", "x": 11.75, "y": 2 }, 156 {"matrix": [8, 4], "x": 11.75, "y": 2},
157 { "label": "'", "x": 12.75, "y": 2 }, 157 {"matrix": [8, 5], "x": 12.75, "y": 2},
158 { "label": "Enter", "x": 13.75, "y": 2, "w": 2.25 }, 158 {"matrix": [8, 7], "x": 13.75, "y": 2, "w": 2.25},
159 { "label": "Page Up", "x": 16, "y": 2 }, 159 {"matrix": [8, 6], "x": 16, "y": 2},
160 160
161 { "label": "Shift", "x": 0, "y": 3, "w": 2.25 }, 161 {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
162 { "label": "Z", "x": 2.25, "y": 3 }, 162 {"matrix": [3, 2], "x": 2.25, "y": 3},
163 { "label": "X", "x": 3.25, "y": 3 }, 163 {"matrix": [3, 3], "x": 3.25, "y": 3},
164 { "label": "C", "x": 4.25, "y": 3 }, 164 {"matrix": [3, 4], "x": 4.25, "y": 3},
165 { "label": "V", "x": 5.25, "y": 3 }, 165 {"matrix": [3, 5], "x": 5.25, "y": 3},
166 { "label": "B", "x": 6.25, "y": 3 }, 166 {"matrix": [3, 6], "x": 6.25, "y": 3},
167 167
168 { "label": "N", "x": 8.25, "y": 3 }, 168 {"matrix": [9, 0], "x": 8.25, "y": 3},
169 { "label": "M", "x": 9.25, "y": 3 }, 169 {"matrix": [9, 1], "x": 9.25, "y": 3},
170 { "label": ",", "x": 10.25, "y": 3 }, 170 {"matrix": [9, 2], "x": 10.25, "y": 3},
171 { "label": ".", "x": 11.25, "y": 3 }, 171 {"matrix": [9, 3], "x": 11.25, "y": 3},
172 { "label": "/", "x": 12.25, "y": 3 }, 172 {"matrix": [9, 5], "x": 12.25, "y": 3},
173 { "label": "Shift", "x": 13.25, "y": 3, "w": 1.75 }, 173 {"matrix": [9, 6], "x": 13.25, "y": 3, "w": 1.75},
174 { "label": "Up", "x": 15, "y": 3 }, 174 {"matrix": [9, 7], "x": 15, "y": 3},
175 { "label": "Page Down", "x": 16, "y": 3 }, 175 {"matrix": [9, 4], "x": 16, "y": 3},
176 176
177 { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 }, 177 {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
178 { "label": "Alt", "x": 1.25, "y": 4, "w": 1.25 }, 178 {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
179 { "label": "Win", "x": 2.5, "y": 4, "w": 1.25 }, 179 {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
180 { "label": "Fn", "x": 3.75, "y": 4, "w": 1.25 }, 180 {"matrix": [4, 4], "x": 3.75, "y": 4, "w": 1.25},
181 { "label": "Space", "x": 5, "y": 4, "w": 2.25 }, 181 {"matrix": [4, 6], "x": 5, "y": 4, "w": 2.25},
182 182
183 { "label": "Fn", "x": 8.25, "y": 4, "w": 1.25 }, 183 {"matrix": [10, 0], "x": 8.25, "y": 4, "w": 1.25},
184 { "label": "Space", "x": 9.5, "y": 4, "w": 1.5 }, 184 {"matrix": [10, 1], "x": 9.5, "y": 4, "w": 1.5},
185 { "label": "Alt", "x": 11, "y": 4 }, 185 {"matrix": [10, 3], "x": 11, "y": 4},
186 { "label": "Ctrl", "x": 12, "y": 4 }, 186 {"matrix": [10, 4], "x": 12, "y": 4},
187 { "label": "Win", "x": 13, "y": 4 }, 187 {"matrix": [10, 5], "x": 13, "y": 4},
188 { "label": "Left", "x": 14, "y": 4 }, 188 {"matrix": [10, 6], "x": 14, "y": 4},
189 { "label": "Down", "x": 15, "y": 4 }, 189 {"matrix": [10, 7], "x": 15, "y": 4},
190 { "label": "Right", "x": 16, "y": 4 } 190 {"matrix": [10, 2], "x": 16, "y": 4}
191 ] 191 ]
192 }, 192 },
193 "LAYOUT_60_with_macro": { 193 "LAYOUT_60_with_macro": {
194 "layout": [ 194 "layout": [
195 { "label": "F1", "x": 0, "y": 0 }, 195 {"matrix": [4, 3], "x": 0, "y": 0},
196 { "label": "F6", "x": 1, "y": 0 }, 196 {"matrix": [0, 7], "x": 1, "y": 0},
197 197
198 { "label": "Esc", "x": 2.25, "y": 0 }, 198 {"matrix": [0, 0], "x": 2.25, "y": 0},
199 { "label": "1", "x": 3.25, "y": 0 }, 199 {"matrix": [0, 1], "x": 3.25, "y": 0},
200 { "label": "2", "x": 4.25, "y": 0 }, 200 {"matrix": [0, 2], "x": 4.25, "y": 0},
201 { "label": "3", "x": 5.25, "y": 0 }, 201 {"matrix": [0, 3], "x": 5.25, "y": 0},
202 { "label": "4", "x": 6.25, "y": 0 }, 202 {"matrix": [0, 4], "x": 6.25, "y": 0},
203 { "label": "5", "x": 7.25, "y": 0 }, 203 {"matrix": [0, 5], "x": 7.25, "y": 0},
204 { "label": "6", "x": 8.25, "y": 0 }, 204 {"matrix": [0, 6], "x": 8.25, "y": 0},
205 205
206 { "label": "7", "x": 10.25, "y": 0 }, 206 {"matrix": [6, 0], "x": 10.25, "y": 0},
207 { "label": "8", "x": 11.25, "y": 0 }, 207 {"matrix": [6, 1], "x": 11.25, "y": 0},
208 { "label": "9", "x": 12.25, "y": 0 }, 208 {"matrix": [6, 2], "x": 12.25, "y": 0},
209 { "label": "0", "x": 13.25, "y": 0 }, 209 {"matrix": [6, 3], "x": 13.25, "y": 0},
210 { "label": "-", "x": 14.25, "y": 0 }, 210 {"matrix": [6, 4], "x": 14.25, "y": 0},
211 { "label": "=", "x": 15.25, "y": 0 }, 211 {"matrix": [6, 5], "x": 15.25, "y": 0},
212 { "label": "Del", "x": 16.25, "y": 0 }, 212 {"matrix": [6, 6], "x": 16.25, "y": 0},
213 { "label": "Bksp", "x": 17.25, "y": 0 }, 213 {"matrix": [6, 7], "x": 17.25, "y": 0},
214 214
215 { "label": "F2", "x": 0, "y": 1 }, 215 {"matrix": [1, 6], "x": 0, "y": 1},
216 { "label": "F7", "x": 1, "y": 1 }, 216 {"matrix": [1, 7], "x": 1, "y": 1},
217 217
218 { "label": "Tab", "x": 2.25, "y": 1, "w": 1.5 }, 218 {"matrix": [1, 0], "x": 2.25, "y": 1, "w": 1.5},
219 { "label": "Q", "x": 3.75, "y": 1 }, 219 {"matrix": [1, 1], "x": 3.75, "y": 1},
220 { "label": "W", "x": 4.75, "y": 1 }, 220 {"matrix": [1, 2], "x": 4.75, "y": 1},
221 { "label": "E", "x": 5.75, "y": 1 }, 221 {"matrix": [1, 3], "x": 5.75, "y": 1},
222 { "label": "R", "x": 6.75, "y": 1 }, 222 {"matrix": [1, 4], "x": 6.75, "y": 1},
223 { "label": "T", "x": 7.75, "y": 1 }, 223 {"matrix": [1, 5], "x": 7.75, "y": 1},
224 224
225 { "label": "Y", "x": 9.75, "y": 1 }, 225 {"matrix": [7, 0], "x": 9.75, "y": 1},
226 { "label": "U", "x": 10.75, "y": 1 }, 226 {"matrix": [7, 1], "x": 10.75, "y": 1},
227 { "label": "I", "x": 11.75, "y": 1 }, 227 {"matrix": [7, 2], "x": 11.75, "y": 1},
228 { "label": "O", "x": 12.75, "y": 1 }, 228 {"matrix": [7, 3], "x": 12.75, "y": 1},
229 { "label": "P", "x": 13.75, "y": 1 }, 229 {"matrix": [7, 4], "x": 13.75, "y": 1},
230 { "label": "[", "x": 14.75, "y": 1 }, 230 {"matrix": [7, 5], "x": 14.75, "y": 1},
231 { "label": "]", "x": 15.75, "y": 1 }, 231 {"matrix": [7, 6], "x": 15.75, "y": 1},
232 { "label": "Backslash", "x": 16.75, "y": 1, "w": 1.5 }, 232 {"matrix": [7, 7], "x": 16.75, "y": 1, "w": 1.5},
233 233
234 { "label": "F3", "x": 0, "y": 2 }, 234 {"matrix": [2, 6], "x": 0, "y": 2},
235 { "label": "F8", "x": 1, "y": 2 }, 235 {"matrix": [2, 7], "x": 1, "y": 2},
236 236
237 { "label": "Caps Lock", "x": 2.25, "y": 2, "w": 1.75 }, 237 {"matrix": [2, 0], "x": 2.25, "y": 2, "w": 1.75},
238 { "label": "A", "x": 4, "y": 2 }, 238 {"matrix": [2, 1], "x": 4, "y": 2},
239 { "label": "S", "x": 5, "y": 2 }, 239 {"matrix": [2, 2], "x": 5, "y": 2},
240 { "label": "D", "x": 6, "y": 2 }, 240 {"matrix": [2, 3], "x": 6, "y": 2},
241 { "label": "F", "x": 7, "y": 2 }, 241 {"matrix": [2, 4], "x": 7, "y": 2},
242 { "label": "G", "x": 8, "y": 2 }, 242 {"matrix": [2, 5], "x": 8, "y": 2},
243 243
244 { "label": "H", "x": 10, "y": 2 }, 244 {"matrix": [8, 0], "x": 10, "y": 2},
245 { "label": "J", "x": 11, "y": 2 }, 245 {"matrix": [8, 1], "x": 11, "y": 2},
246 { "label": "K", "x": 12, "y": 2 }, 246 {"matrix": [8, 2], "x": 12, "y": 2},
247 { "label": "L", "x": 13, "y": 2 }, 247 {"matrix": [8, 3], "x": 13, "y": 2},
248 { "label": ";", "x": 14, "y": 2 }, 248 {"matrix": [8, 4], "x": 14, "y": 2},
249 { "label": "'", "x": 15, "y": 2 }, 249 {"matrix": [8, 5], "x": 15, "y": 2},
250 { "label": "Enter", "x": 16, "y": 2, "w": 2.25 }, 250 {"matrix": [8, 7], "x": 16, "y": 2, "w": 2.25},
251 251
252 { "label": "F4", "x": 0, "y": 3 }, 252 {"matrix": [3, 1], "x": 0, "y": 3},
253 { "label": "F9", "x": 1, "y": 3 }, 253 {"matrix": [3, 7], "x": 1, "y": 3},
254 254
255 { "label": "Shift", "x": 2.25, "y": 3, "w": 2.25 }, 255 {"matrix": [3, 0], "x": 2.25, "y": 3, "w": 2.25},
256 { "label": "Z", "x": 4.5, "y": 3 }, 256 {"matrix": [3, 2], "x": 4.5, "y": 3},
257 { "label": "X", "x": 5.5, "y": 3 }, 257 {"matrix": [3, 3], "x": 5.5, "y": 3},
258 { "label": "C", "x": 6.5, "y": 3 }, 258 {"matrix": [3, 4], "x": 6.5, "y": 3},
259 { "label": "V", "x": 7.5, "y": 3 }, 259 {"matrix": [3, 5], "x": 7.5, "y": 3},
260 { "label": "B", "x": 8.5, "y": 3 }, 260 {"matrix": [3, 6], "x": 8.5, "y": 3},
261 261
262 { "label": "N", "x": 10.5, "y": 3 }, 262 {"matrix": [9, 0], "x": 10.5, "y": 3},
263 { "label": "M", "x": 11.5, "y": 3 }, 263 {"matrix": [9, 1], "x": 11.5, "y": 3},
264 { "label": ",", "x": 12.5, "y": 3 }, 264 {"matrix": [9, 2], "x": 12.5, "y": 3},
265 { "label": ".", "x": 13.5, "y": 3 }, 265 {"matrix": [9, 3], "x": 13.5, "y": 3},
266 { "label": "/", "x": 14.5, "y": 3 }, 266 {"matrix": [9, 5], "x": 14.5, "y": 3},
267 { "label": "Shift", "x": 15.5, "y": 3, "w": 1.75 }, 267 {"matrix": [9, 6], "x": 15.5, "y": 3, "w": 1.75},
268 { "label": "Up", "x": 17.25, "y": 3 }, 268 {"matrix": [9, 7], "x": 17.25, "y": 3},
269 269
270 { "label": "F5", "x": 0, "y": 4 }, 270 {"matrix": [4, 5], "x": 0, "y": 4},
271 { "label": "F10", "x": 1, "y": 4 }, 271 {"matrix": [4, 7], "x": 1, "y": 4},
272 272
273 { "label": "Ctrl", "x": 2.25, "y": 4, "w": 1.25 }, 273 {"matrix": [4, 0], "x": 2.25, "y": 4, "w": 1.25},
274 { "label": "Alt", "x": 3.5, "y": 4, "w": 1.25 }, 274 {"matrix": [4, 1], "x": 3.5, "y": 4, "w": 1.25},
275 { "label": "Win", "x": 4.75, "y": 4, "w": 1.25 }, 275 {"matrix": [4, 2], "x": 4.75, "y": 4, "w": 1.25},
276 { "label": "Fn", "x": 6, "y": 4, "w": 1.25 }, 276 {"matrix": [4, 4], "x": 6, "y": 4, "w": 1.25},
277 { "label": "Space", "x": 7.25, "y": 4, "w": 2.25 }, 277 {"matrix": [4, 6], "x": 7.25, "y": 4, "w": 2.25},
278 278
279 { "label": "Fn", "x": 10.5, "y": 4, "w": 1.25 }, 279 {"matrix": [10, 0], "x": 10.5, "y": 4, "w": 1.25},
280 { "label": "Space", "x": 11.75, "y": 4, "w": 1.5 }, 280 {"matrix": [10, 1], "x": 11.75, "y": 4, "w": 1.5},
281 { "label": "Alt", "x": 13.25, "y": 4 }, 281 {"matrix": [10, 3], "x": 13.25, "y": 4},
282 { "label": "Ctrl", "x": 14.25, "y": 4 }, 282 {"matrix": [10, 4], "x": 14.25, "y": 4},
283 { "label": "Left", "x": 15.25, "y": 4 }, 283 {"matrix": [10, 5], "x": 15.25, "y": 4},
284 { "label": "Down", "x": 16.25, "y": 4 }, 284 {"matrix": [10, 6], "x": 16.25, "y": 4},
285 { "label": "Right", "x": 17.25, "y": 4 } 285 {"matrix": [10, 7], "x": 17.25, "y": 4}
286 ] 286 ]
287 }, 287 },
288 "LAYOUT_65_with_macro": { 288 "LAYOUT_65_with_macro": {
289 "layout": [ 289 "layout": [
290 { "label": "F1", "x": 0, "y": 0 }, 290 {"matrix": [4, 3], "x": 0, "y": 0},
291 { "label": "F6", "x": 1, "y": 0 }, 291 {"matrix": [0, 7], "x": 1, "y": 0},
292 292
293 { "label": "Esc", "x": 2.25, "y": 0 }, 293 {"matrix": [0, 0], "x": 2.25, "y": 0},
294 { "label": "1", "x": 3.25, "y": 0 }, 294 {"matrix": [0, 1], "x": 3.25, "y": 0},
295 { "label": "2", "x": 4.25, "y": 0 }, 295 {"matrix": [0, 2], "x": 4.25, "y": 0},
296 { "label": "3", "x": 5.25, "y": 0 }, 296 {"matrix": [0, 3], "x": 5.25, "y": 0},
297 { "label": "4", "x": 6.25, "y": 0 }, 297 {"matrix": [0, 4], "x": 6.25, "y": 0},
298 { "label": "5", "x": 7.25, "y": 0 }, 298 {"matrix": [0, 5], "x": 7.25, "y": 0},
299 { "label": "6", "x": 8.25, "y": 0 }, 299 {"matrix": [0, 6], "x": 8.25, "y": 0},
300 300
301 { "label": "7", "x": 10.25, "y": 0 }, 301 {"matrix": [6, 0], "x": 10.25, "y": 0},
302 { "label": "8", "x": 11.25, "y": 0 }, 302 {"matrix": [6, 1], "x": 11.25, "y": 0},
303 { "label": "9", "x": 12.25, "y": 0 }, 303 {"matrix": [6, 2], "x": 12.25, "y": 0},
304 { "label": "0", "x": 13.25, "y": 0 }, 304 {"matrix": [6, 3], "x": 13.25, "y": 0},
305 { "label": "-", "x": 14.25, "y": 0 }, 305 {"matrix": [6, 4], "x": 14.25, "y": 0},
306 { "label": "=", "x": 15.25, "y": 0 }, 306 {"matrix": [6, 5], "x": 15.25, "y": 0},
307 { "label": "Del", "x": 16.25, "y": 0 }, 307 {"matrix": [6, 6], "x": 16.25, "y": 0},
308 { "label": "Bksp", "x": 17.25, "y": 0 }, 308 {"matrix": [6, 7], "x": 17.25, "y": 0},
309 { "label": "Home", "x": 18.25, "y": 0 }, 309 {"matrix": [11, 6], "x": 18.25, "y": 0},
310 310
311 { "label": "F2", "x": 0, "y": 1 }, 311 {"matrix": [1, 6], "x": 0, "y": 1},
312 { "label": "F7", "x": 1, "y": 1 }, 312 {"matrix": [1, 7], "x": 1, "y": 1},
313 313
314 { "label": "Tab", "x": 2.25, "y": 1, "w": 1.5 }, 314 {"matrix": [1, 0], "x": 2.25, "y": 1, "w": 1.5},
315 { "label": "Q", "x": 3.75, "y": 1 }, 315 {"matrix": [1, 1], "x": 3.75, "y": 1},
316 { "label": "W", "x": 4.75, "y": 1 }, 316 {"matrix": [1, 2], "x": 4.75, "y": 1},
317 { "label": "E", "x": 5.75, "y": 1 }, 317 {"matrix": [1, 3], "x": 5.75, "y": 1},
318 { "label": "R", "x": 6.75, "y": 1 }, 318 {"matrix": [1, 4], "x": 6.75, "y": 1},
319 { "label": "T", "x": 7.75, "y": 1 }, 319 {"matrix": [1, 5], "x": 7.75, "y": 1},
320 320
321 { "label": "Y", "x": 9.75, "y": 1 }, 321 {"matrix": [7, 0], "x": 9.75, "y": 1},
322 { "label": "U", "x": 10.75, "y": 1 }, 322 {"matrix": [7, 1], "x": 10.75, "y": 1},
323 { "label": "I", "x": 11.75, "y": 1 }, 323 {"matrix": [7, 2], "x": 11.75, "y": 1},
324 { "label": "O", "x": 12.75, "y": 1 }, 324 {"matrix": [7, 3], "x": 12.75, "y": 1},
325 { "label": "P", "x": 13.75, "y": 1 }, 325 {"matrix": [7, 4], "x": 13.75, "y": 1},
326 { "label": "[", "x": 14.75, "y": 1 }, 326 {"matrix": [7, 5], "x": 14.75, "y": 1},
327 { "label": "]", "x": 15.75, "y": 1 }, 327 {"matrix": [7, 6], "x": 15.75, "y": 1},
328 { "label": "Backslash", "x": 16.75, "y": 1, "w": 1.5 }, 328 {"matrix": [7, 7], "x": 16.75, "y": 1, "w": 1.5},
329 { "label": "PgUp", "x": 18.25, "y": 1 }, 329 {"matrix": [11, 7], "x": 18.25, "y": 1},
330 330
331 { "label": "F3", "x": 0, "y": 2 }, 331 {"matrix": [2, 6], "x": 0, "y": 2},
332 { "label": "F8", "x": 1, "y": 2 }, 332 {"matrix": [2, 7], "x": 1, "y": 2},
333 333
334 { "label": "Caps Lock", "x": 2.25, "y": 2, "w": 1.75 }, 334 {"matrix": [2, 0], "x": 2.25, "y": 2, "w": 1.75},
335 { "label": "A", "x": 4, "y": 2 }, 335 {"matrix": [2, 1], "x": 4, "y": 2},
336 { "label": "S", "x": 5, "y": 2 }, 336 {"matrix": [2, 2], "x": 5, "y": 2},
337 { "label": "D", "x": 6, "y": 2 }, 337 {"matrix": [2, 3], "x": 6, "y": 2},
338 { "label": "F", "x": 7, "y": 2 }, 338 {"matrix": [2, 4], "x": 7, "y": 2},
339 { "label": "G", "x": 8, "y": 2 }, 339 {"matrix": [2, 5], "x": 8, "y": 2},
340 340
341 { "label": "H", "x": 10, "y": 2 }, 341 {"matrix": [8, 0], "x": 10, "y": 2},
342 { "label": "J", "x": 11, "y": 2 }, 342 {"matrix": [8, 1], "x": 11, "y": 2},
343 { "label": "K", "x": 12, "y": 2 }, 343 {"matrix": [8, 2], "x": 12, "y": 2},
344 { "label": "L", "x": 13, "y": 2 }, 344 {"matrix": [8, 3], "x": 13, "y": 2},
345 { "label": ";", "x": 14, "y": 2 }, 345 {"matrix": [8, 4], "x": 14, "y": 2},
346 { "label": "'", "x": 15, "y": 2 }, 346 {"matrix": [8, 5], "x": 15, "y": 2},
347 { "label": "Enter", "x": 16, "y": 2, "w": 2.25 }, 347 {"matrix": [8, 7], "x": 16, "y": 2, "w": 2.25},
348 { "label": "PgDn", "x": 18.25, "y": 2 }, 348 {"matrix": [8, 6], "x": 18.25, "y": 2},
349 349
350 { "label": "F4", "x": 0, "y": 3 }, 350 {"matrix": [3, 1], "x": 0, "y": 3},
351 { "label": "F9", "x": 1, "y": 3 }, 351 {"matrix": [3, 7], "x": 1, "y": 3},
352 352
353 { "label": "Shift", "x": 2.25, "y": 3, "w": 2.25 }, 353 {"matrix": [3, 0], "x": 2.25, "y": 3, "w": 2.25},
354 { "label": "Z", "x": 4.5, "y": 3 }, 354 {"matrix": [3, 2], "x": 4.5, "y": 3},
355 { "label": "X", "x": 5.5, "y": 3 }, 355 {"matrix": [3, 3], "x": 5.5, "y": 3},
356 { "label": "C", "x": 6.5, "y": 3 }, 356 {"matrix": [3, 4], "x": 6.5, "y": 3},
357 { "label": "V", "x": 7.5, "y": 3 }, 357 {"matrix": [3, 5], "x": 7.5, "y": 3},
358 { "label": "B", "x": 8.5, "y": 3 }, 358 {"matrix": [3, 6], "x": 8.5, "y": 3},
359 359
360 { "label": "N", "x": 10.5, "y": 3 }, 360 {"matrix": [9, 0], "x": 10.5, "y": 3},
361 { "label": "M", "x": 11.5, "y": 3 }, 361 {"matrix": [9, 1], "x": 11.5, "y": 3},
362 { "label": ",", "x": 12.5, "y": 3 }, 362 {"matrix": [9, 2], "x": 12.5, "y": 3},
363 { "label": ".", "x": 13.5, "y": 3 }, 363 {"matrix": [9, 3], "x": 13.5, "y": 3},
364 { "label": "/", "x": 14.5, "y": 3 }, 364 {"matrix": [9, 5], "x": 14.5, "y": 3},
365 { "label": "Shift", "x": 15.5, "y": 3, "w": 1.75 }, 365 {"matrix": [9, 6], "x": 15.5, "y": 3, "w": 1.75},
366 { "label": "Up", "x": 17.25, "y": 3 }, 366 {"matrix": [9, 7], "x": 17.25, "y": 3},
367 { "label": "End", "x": 18.25, "y": 3 }, 367 {"matrix": [9, 4], "x": 18.25, "y": 3},
368 368
369 { "label": "F5", "x": 0, "y": 4 }, 369 {"matrix": [4, 5], "x": 0, "y": 4},
370 { "label": "F10", "x": 1, "y": 4 }, 370 {"matrix": [4, 7], "x": 1, "y": 4},
371 371
372 { "label": "Ctrl", "x": 2.25, "y": 4, "w": 1.25 }, 372 {"matrix": [4, 0], "x": 2.25, "y": 4, "w": 1.25},
373 { "label": "Alt", "x": 3.5, "y": 4, "w": 1.25 }, 373 {"matrix": [4, 1], "x": 3.5, "y": 4, "w": 1.25},
374 { "label": "Win", "x": 4.75, "y": 4, "w": 1.25 }, 374 {"matrix": [4, 2], "x": 4.75, "y": 4, "w": 1.25},
375 { "label": "Fn", "x": 6, "y": 4, "w": 1.25 }, 375 {"matrix": [4, 4], "x": 6, "y": 4, "w": 1.25},
376 { "label": "Space", "x": 7.25, "y": 4, "w": 2.25 }, 376 {"matrix": [4, 6], "x": 7.25, "y": 4, "w": 2.25},
377 377
378 { "label": "Fn", "x": 10.5, "y": 4, "w": 1.25 }, 378 {"matrix": [10, 0], "x": 10.5, "y": 4, "w": 1.25},
379 { "label": "Space", "x": 11.75, "y": 4, "w": 1.5 }, 379 {"matrix": [10, 1], "x": 11.75, "y": 4, "w": 1.5},
380 { "label": "Alt", "x": 13.25, "y": 4 }, 380 {"matrix": [10, 3], "x": 13.25, "y": 4},
381 { "label": "Ctrl", "x": 14.25, "y": 4 }, 381 {"matrix": [10, 4], "x": 14.25, "y": 4},
382 { "label": "Win", "x": 15.25, "y": 4 }, 382 {"matrix": [10, 5], "x": 15.25, "y": 4},
383 { "label": "Left", "x": 16.25, "y": 4 }, 383 {"matrix": [10, 6], "x": 16.25, "y": 4},
384 { "label": "Down", "x": 17.25, "y": 4 }, 384 {"matrix": [10, 7], "x": 17.25, "y": 4},
385 { "label": "Right", "x": 18.25, "y": 4 } 385 {"matrix": [10, 2], "x": 18.25, "y": 4}
386 ] 386 ]
387 }, 387 },
388 "LAYOUT_all": { 388 "LAYOUT_all": {
389 "layout": [ 389 "layout": [
390 { "label": "F1", "x": 0, "y": 0 }, 390 {"matrix": [4, 3], "x": 0, "y": 0},
391 { "label": "F6", "x": 1, "y": 0 }, 391 {"matrix": [0, 7], "x": 1, "y": 0},
392 392
393 { "label": "Esc", "x": 2.25, "y": 0 }, 393 {"matrix": [0, 0], "x": 2.25, "y": 0},
394 { "label": "1", "x": 3.25, "y": 0 }, 394 {"matrix": [0, 1], "x": 3.25, "y": 0},
395 { "label": "2", "x": 4.25, "y": 0 }, 395 {"matrix": [0, 2], "x": 4.25, "y": 0},
396 { "label": "3", "x": 5.25, "y": 0 }, 396 {"matrix": [0, 3], "x": 5.25, "y": 0},
397 { "label": "4", "x": 6.25, "y": 0 }, 397 {"matrix": [0, 4], "x": 6.25, "y": 0},
398 { "label": "5", "x": 7.25, "y": 0 }, 398 {"matrix": [0, 5], "x": 7.25, "y": 0},
399 { "label": "6", "x": 8.25, "y": 0 }, 399 {"matrix": [0, 6], "x": 8.25, "y": 0},
400 400
401 { "label": "7", "x": 10.25, "y": 0 }, 401 {"matrix": [6, 0], "x": 10.25, "y": 0},
402 { "label": "8", "x": 11.25, "y": 0 }, 402 {"matrix": [6, 1], "x": 11.25, "y": 0},
403 { "label": "9", "x": 12.25, "y": 0 }, 403 {"matrix": [6, 2], "x": 12.25, "y": 0},
404 { "label": "0", "x": 13.25, "y": 0 }, 404 {"matrix": [6, 3], "x": 13.25, "y": 0},
405 { "label": "-", "x": 14.25, "y": 0 }, 405 {"matrix": [6, 4], "x": 14.25, "y": 0},
406 { "label": "=", "x": 15.25, "y": 0 }, 406 {"matrix": [6, 5], "x": 15.25, "y": 0},
407 { "label": "Del", "x": 16.25, "y": 0 }, 407 {"matrix": [6, 6], "x": 16.25, "y": 0},
408 { "label": "Bksp", "x": 17.25, "y": 0 }, 408 {"matrix": [6, 7], "x": 17.25, "y": 0},
409 { "label": "Home", "x": 18.25, "y": 0 }, 409 {"matrix": [11, 6], "x": 18.25, "y": 0},
410 410
411 { "label": "F2", "x": 0, "y": 1 }, 411 {"matrix": [1, 6], "x": 0, "y": 1},
412 { "label": "F7", "x": 1, "y": 1 }, 412 {"matrix": [1, 7], "x": 1, "y": 1},
413 413
414 { "label": "Tab", "x": 2.25, "y": 1, "w": 1.5 }, 414 {"matrix": [1, 0], "x": 2.25, "y": 1, "w": 1.5},
415 { "label": "Q", "x": 3.75, "y": 1 }, 415 {"matrix": [1, 1], "x": 3.75, "y": 1},
416 { "label": "W", "x": 4.75, "y": 1 }, 416 {"matrix": [1, 2], "x": 4.75, "y": 1},
417 { "label": "E", "x": 5.75, "y": 1 }, 417 {"matrix": [1, 3], "x": 5.75, "y": 1},
418 { "label": "R", "x": 6.75, "y": 1 }, 418 {"matrix": [1, 4], "x": 6.75, "y": 1},
419 { "label": "T", "x": 7.75, "y": 1 }, 419 {"matrix": [1, 5], "x": 7.75, "y": 1},
420 420
421 { "label": "Y", "x": 9.75, "y": 1 }, 421 {"matrix": [7, 0], "x": 9.75, "y": 1},
422 { "label": "U", "x": 10.75, "y": 1 }, 422 {"matrix": [7, 1], "x": 10.75, "y": 1},
423 { "label": "I", "x": 11.75, "y": 1 }, 423 {"matrix": [7, 2], "x": 11.75, "y": 1},
424 { "label": "O", "x": 12.75, "y": 1 }, 424 {"matrix": [7, 3], "x": 12.75, "y": 1},
425 { "label": "P", "x": 13.75, "y": 1 }, 425 {"matrix": [7, 4], "x": 13.75, "y": 1},
426 { "label": "[", "x": 14.75, "y": 1 }, 426 {"matrix": [7, 5], "x": 14.75, "y": 1},
427 { "label": "]", "x": 15.75, "y": 1 }, 427 {"matrix": [7, 6], "x": 15.75, "y": 1},
428 { "label": "Backslash", "x": 16.75, "y": 1, "w": 1.5 }, 428 {"matrix": [7, 7], "x": 16.75, "y": 1, "w": 1.5},
429 { "label": "PgUp", "x": 18.25, "y": 1 }, 429 {"matrix": [11, 7], "x": 18.25, "y": 1},
430 430
431 { "label": "F3", "x": 0, "y": 2 }, 431 {"matrix": [2, 6], "x": 0, "y": 2},
432 { "label": "F8", "x": 1, "y": 2 }, 432 {"matrix": [2, 7], "x": 1, "y": 2},
433 433
434 { "label": "Caps Lock", "x": 2.25, "y": 2, "w": 1.75 }, 434 {"matrix": [2, 0], "x": 2.25, "y": 2, "w": 1.75},
435 { "label": "A", "x": 4, "y": 2 }, 435 {"matrix": [2, 1], "x": 4, "y": 2},
436 { "label": "S", "x": 5, "y": 2 }, 436 {"matrix": [2, 2], "x": 5, "y": 2},
437 { "label": "D", "x": 6, "y": 2 }, 437 {"matrix": [2, 3], "x": 6, "y": 2},
438 { "label": "F", "x": 7, "y": 2 }, 438 {"matrix": [2, 4], "x": 7, "y": 2},
439 { "label": "G", "x": 8, "y": 2 }, 439 {"matrix": [2, 5], "x": 8, "y": 2},
440 440
441 { "label": "H", "x": 10, "y": 2 }, 441 {"matrix": [8, 0], "x": 10, "y": 2},
442 { "label": "J", "x": 11, "y": 2 }, 442 {"matrix": [8, 1], "x": 11, "y": 2},
443 { "label": "K", "x": 12, "y": 2 }, 443 {"matrix": [8, 2], "x": 12, "y": 2},
444 { "label": "L", "x": 13, "y": 2 }, 444 {"matrix": [8, 3], "x": 13, "y": 2},
445 { "label": ";", "x": 14, "y": 2 }, 445 {"matrix": [8, 4], "x": 14, "y": 2},
446 { "label": "'", "x": 15, "y": 2 }, 446 {"matrix": [8, 5], "x": 15, "y": 2},
447 { "label": "NUHS", "x": 16, "y": 2 }, 447 {"matrix": [8, 7], "x": 16, "y": 2, "w": 2.25},
448 { "label": "Enter", "x": 17, "y": 2, "w": 1.25 }, 448 {"matrix": [8, 6], "x": 18.25, "y": 2},
449 { "label": "PgDn", "x": 18.25, "y": 2 }, 449
450 450 {"matrix": [3, 1], "x": 0, "y": 3},
451 { "label": "F4", "x": 0, "y": 3 }, 451 {"matrix": [3, 7], "x": 1, "y": 3},
452 { "label": "F9", "x": 1, "y": 3 }, 452
453 453 {"matrix": [3, 0], "x": 2.25, "y": 3, "w": 2.25},
454 { "label": "Shift", "x": 2.25, "y": 3, "w": 1.25 }, 454 {"matrix": [3, 2], "x": 4.5, "y": 3},
455 { "label": "NUBS", "x": 3.5, "y": 3 }, 455 {"matrix": [3, 3], "x": 5.5, "y": 3},
456 { "label": "Z", "x": 4.5, "y": 3 }, 456 {"matrix": [3, 4], "x": 6.5, "y": 3},
457 { "label": "X", "x": 5.5, "y": 3 }, 457 {"matrix": [3, 5], "x": 7.5, "y": 3},
458 { "label": "C", "x": 6.5, "y": 3 }, 458 {"matrix": [3, 6], "x": 8.5, "y": 3},
459 { "label": "V", "x": 7.5, "y": 3 }, 459
460 { "label": "B", "x": 8.5, "y": 3 }, 460 {"matrix": [9, 0], "x": 10.5, "y": 3},
461 461 {"matrix": [9, 1], "x": 11.5, "y": 3},
462 { "label": "N", "x": 10.5, "y": 3 }, 462 {"matrix": [9, 2], "x": 12.5, "y": 3},
463 { "label": "M", "x": 11.5, "y": 3 }, 463 {"matrix": [9, 3], "x": 13.5, "y": 3},
464 { "label": ",", "x": 12.5, "y": 3 }, 464 {"matrix": [9, 5], "x": 14.5, "y": 3},
465 { "label": ".", "x": 13.5, "y": 3 }, 465 {"matrix": [9, 6], "x": 15.5, "y": 3, "w": 1.75},
466 { "label": "/", "x": 14.5, "y": 3 }, 466 {"matrix": [9, 7], "x": 17.25, "y": 3},
467 { "label": "Shift", "x": 15.5, "y": 3, "w": 1.75 }, 467 {"matrix": [9, 4], "x": 18.25, "y": 3},
468 { "label": "Up", "x": 17.25, "y": 3 }, 468
469 { "label": "End", "x": 18.25, "y": 3 }, 469 {"matrix": [4, 5], "x": 0, "y": 4},
470 470 {"matrix": [4, 7], "x": 1, "y": 4},
471 { "label": "F5", "x": 0, "y": 4 }, 471
472 { "label": "F10", "x": 1, "y": 4 }, 472 {"matrix": [4, 0], "x": 2.25, "y": 4, "w": 1.25},
473 473 {"matrix": [4, 1], "x": 3.5, "y": 4, "w": 1.25},
474 { "label": "Ctrl", "x": 2.25, "y": 4, "w": 1.25 }, 474 {"matrix": [4, 2], "x": 4.75, "y": 4, "w": 1.25},
475 { "label": "Alt", "x": 3.5, "y": 4, "w": 1.25 }, 475 {"matrix": [4, 4], "x": 6, "y": 4, "w": 1.25},
476 { "label": "Win", "x": 4.75, "y": 4, "w": 1.25 }, 476 {"matrix": [4, 6], "x": 7.25, "y": 4, "w": 2.25},
477 { "label": "Fn", "x": 6, "y": 4, "w": 1.25 }, 477
478 { "label": "Space", "x": 7.25, "y": 4 }, 478 {"matrix": [10, 0], "x": 10.5, "y": 4, "w": 1.25},
479 { "label": "Space", "x": 8.25, "y": 4, "w": 1.25 }, 479 {"matrix": [10, 1], "x": 11.75, "y": 4, "w": 1.5},
480 480 {"matrix": [10, 3], "x": 13.25, "y": 4},
481 { "label": "Fn", "x": 10.5, "y": 4, "w": 1.25 }, 481 {"matrix": [10, 4], "x": 14.25, "y": 4},
482 { "label": "Space", "x": 11.75, "y": 4, "w": 1.5 }, 482 {"matrix": [10, 5], "x": 15.25, "y": 4},
483 { "label": "Alt", "x": 13.25, "y": 4 }, 483 {"matrix": [10, 6], "x": 16.25, "y": 4},
484 { "label": "Ctrl", "x": 14.25, "y": 4 }, 484 {"matrix": [10, 7], "x": 17.25, "y": 4},
485 { "label": "Win", "x": 15.25, "y": 4 }, 485 {"matrix": [10, 2], "x": 18.25, "y": 4}
486 { "label": "Left", "x": 16.25, "y": 4 },
487 { "label": "Down", "x": 17.25, "y": 4 },
488 { "label": "Right", "x": 18.25, "y": 4 }
489 ] 486 ]
490 } 487 }
491 } 488 }
diff --git a/keyboards/keebio/quefrency/rev1/keymaps/via/keymap.c b/keyboards/keebio/quefrency/rev1/keymaps/via/keymap.c
new file mode 100644
index 0000000000..04349ea990
--- /dev/null
+++ b/keyboards/keebio/quefrency/rev1/keymaps/via/keymap.c
@@ -0,0 +1,44 @@
1#include QMK_KEYBOARD_H
2
3const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
4 [0] = LAYOUT_all(
5 KC_F1, KC_F2, QK_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_DEL, KC_BSPC, KC_HOME,
6 KC_F3, KC_F4, 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_END,
7 KC_F5, KC_F6, 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_PGUP,
8 KC_F7, KC_F8, 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_PGDN,
9 KC_F9, KC_F10, KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RCTL, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT
10 ),
11
12 [1] = LAYOUT_all(
13 _______, _______, QK_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_DEL, KC_BSPC, _______,
14 _______, _______, RGB_TOG, RGB_MOD, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
15 _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
16 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
17 _______, _______, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
18 ),
19
20 [2] = LAYOUT_all(
21 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
22 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
23 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
24 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
25 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
26 ),
27
28 [3] = LAYOUT_all(
29 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
30 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
31 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
32 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
33 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
34 )
35};
36
37#ifdef ENCODER_MAP_ENABLE
38const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
39 [0] = { ENCODER_CCW_CW(KC_PGUP, KC_PGDN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
40 [1] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(KC_MPRV, KC_MNXT) },
41 [2] = { ENCODER_CCW_CW(RGB_HUD, RGB_HUI), ENCODER_CCW_CW(RGB_SAD, RGB_SAI) },
42 [3] = { ENCODER_CCW_CW(RGB_SPD, RGB_SPI), ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
43};
44#endif
diff --git a/keyboards/keebio/quefrency/rev1/keymaps/via/rules.mk b/keyboards/keebio/quefrency/rev1/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1189f4ad19
--- /dev/null
+++ b/keyboards/keebio/quefrency/rev1/keymaps/via/rules.mk
@@ -0,0 +1,3 @@
1VIA_ENABLE = yes
2LTO_ENABLE = yes
3ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/keebio/quefrency/rev1/rev1.c b/keyboards/keebio/quefrency/rev1/rev1.c
index f34f85b2cc..51adb74d31 100644
--- a/keyboards/keebio/quefrency/rev1/rev1.c
+++ b/keyboards/keebio/quefrency/rev1/rev1.c
@@ -1,4 +1,4 @@
1#include "rev1.h" 1#include "quantum.h"
2 2
3void eeconfig_init_kb(void) { 3void eeconfig_init_kb(void) {
4#ifdef RGBLIGHT_ENABLE 4#ifdef RGBLIGHT_ENABLE
diff --git a/keyboards/keebio/quefrency/rev1/rev1.h b/keyboards/keebio/quefrency/rev1/rev1.h
deleted file mode 100644
index 89a9c4a19d..0000000000
--- a/keyboards/keebio/quefrency/rev1/rev1.h
+++ /dev/null
@@ -1,113 +0,0 @@
1#pragma once
2
3#include "quantum.h"
4
5#define LAYOUT( \
6 LA1, LA2, LA3, LA4, LA5, LA6, LA7, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, \
7 LB1, LB2, LB3, LB4, LB5, LB6, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, \
8 LC1, LC2, LC3, LC4, LC5, LC6, RC1, RC2, RC3, RC4, RC5, RC6, RC8, \
9 LD1, LD3, LD4, LD5, LD6, LD7, RD1, RD2, RD3, RD4, RD6, RD7, RD8, \
10 LE1, LE2, LE3, LE5, LE7, RE1, RE2, RE4, RE5, RE6, RE7, RE8 \
11 ) \
12 { \
13 { LA1, LA2, LA3, LA4, LA5, LA6, LA7, KC_NO }, \
14 { LB1, LB2, LB3, LB4, LB5, LB6, KC_NO, KC_NO }, \
15 { LC1, LC2, LC3, LC4, LC5, LC6, KC_NO, KC_NO }, \
16 { LD1, KC_NO, LD3, LD4, LD5, LD6, LD7, KC_NO }, \
17 { LE1, LE2, LE3, KC_NO, LE5, KC_NO, LE7, KC_NO }, \
18 { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
19 { RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8 }, \
20 { RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8 }, \
21 { RC1, RC2, RC3, RC4, RC5, RC6, KC_NO, RC8 }, \
22 { RD1, RD2, RD3, RD4, KC_NO, RD6, RD7, RD8 }, \
23 { RE1, RE2, KC_NO, RE4, RE5, RE6, RE7, RE8 }, \
24 { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
25 }
26
27#define LAYOUT_65( \
28 LA1, LA2, LA3, LA4, LA5, LA6, LA7, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9, \
29 LB1, LB2, LB3, LB4, LB5, LB6, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9, \
30 LC1, LC2, LC3, LC4, LC5, LC6, RC1, RC2, RC3, RC4, RC5, RC6, RC8, RC9, \
31 LD1, LD3, LD4, LD5, LD6, LD7, RD1, RD2, RD3, RD4, RD6, RD7, RD8, RD9, \
32 LE1, LE2, LE3, LE5, LE7, RE1, RE2, RE4, RE5, RE6, RE7, RE8, RE9 \
33 ) \
34 { \
35 { LA1, LA2, LA3, LA4, LA5, LA6, LA7, KC_NO }, \
36 { LB1, LB2, LB3, LB4, LB5, LB6, KC_NO, KC_NO }, \
37 { LC1, LC2, LC3, LC4, LC5, LC6, KC_NO, KC_NO }, \
38 { LD1, KC_NO, LD3, LD4, LD5, LD6, LD7, KC_NO }, \
39 { LE1, LE2, LE3, KC_NO, LE5, KC_NO, LE7, KC_NO }, \
40 { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
41 { RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8 }, \
42 { RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8 }, \
43 { RC1, RC2, RC3, RC4, RC5, RC6, RC9, RC8 }, \
44 { RD1, RD2, RD3, RD4, RD9, RD6, RD7, RD8 }, \
45 { RE1, RE2, RE9, RE4, RE5, RE6, RE7, RE8 }, \
46 { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RA9, RB9 } \
47 }
48
49#define LAYOUT_60_with_macro( \
50 LA9, LA8, LA1, LA2, LA3, LA4, LA5, LA6, LA7, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, \
51 LB9, LB8, LB1, LB2, LB3, LB4, LB5, LB6, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, \
52 LC9, LC8, LC1, LC2, LC3, LC4, LC5, LC6, RC1, RC2, RC3, RC4, RC5, RC6, RC8, \
53 LD9, LD8, LD1, LD3, LD4, LD5, LD6, LD7, RD1, RD2, RD3, RD4, RD6, RD7, RD8, \
54 LE9, LE8, LE1, LE2, LE3, LE5, LE7, RE1, RE2, RE4, RE5, RE6, RE7, RE8 \
55 ) \
56 { \
57 { LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8 }, \
58 { LB1, LB2, LB3, LB4, LB5, LB6, LB9, LB8 }, \
59 { LC1, LC2, LC3, LC4, LC5, LC6, LC9, LC8 }, \
60 { LD1, LD9, LD3, LD4, LD5, LD6, LD7, LD8 }, \
61 { LE1, LE2, LE3, LA9, LE5, LE9, LE7, LE8 }, \
62 { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
63 { RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8 }, \
64 { RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8 }, \
65 { RC1, RC2, RC3, RC4, RC5, RC6, KC_NO, RC8 }, \
66 { RD1, RD2, RD3, RD4, KC_NO, RD6, RD7, RD8 }, \
67 { RE1, RE2, KC_NO, RE4, RE5, RE6, RE7, RE8 }, \
68 { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
69 }
70
71#define LAYOUT_65_with_macro( \
72 LA9, LA8, LA1, LA2, LA3, LA4, LA5, LA6, LA7, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9, \
73 LB9, LB8, LB1, LB2, LB3, LB4, LB5, LB6, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9, \
74 LC9, LC8, LC1, LC2, LC3, LC4, LC5, LC6, RC1, RC2, RC3, RC4, RC5, RC6, RC8, RC9, \
75 LD9, LD8, LD1, LD3, LD4, LD5, LD6, LD7, RD1, RD2, RD3, RD4, RD6, RD7, RD8, RD9, \
76 LE9, LE8, LE1, LE2, LE3, LE5, LE7, RE1, RE2, RE4, RE5, RE6, RE7, RE8, RE9 \
77 ) \
78 { \
79 { LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8 }, \
80 { LB1, LB2, LB3, LB4, LB5, LB6, LB9, LB8 }, \
81 { LC1, LC2, LC3, LC4, LC5, LC6, LC9, LC8 }, \
82 { LD1, LD9, LD3, LD4, LD5, LD6, LD7, LD8 }, \
83 { LE1, LE2, LE3, LA9, LE5, LE9, LE7, LE8 }, \
84 { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
85 { RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8 }, \
86 { RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8 }, \
87 { RC1, RC2, RC3, RC4, RC5, RC6, RC9, RC8 }, \
88 { RD1, RD2, RD3, RD4, RD9, RD6, RD7, RD8 }, \
89 { RE1, RE2, RE9, RE4, RE5, RE6, RE7, RE8 }, \
90 { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RA9, RB9 } \
91 }
92
93#define LAYOUT_all( \
94 LA9, LA8, LA1, LA2, LA3, LA4, LA5, LA6, LA7, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9, \
95 LB9, LB8, LB1, LB2, LB3, LB4, LB5, LB6, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9, \
96 LC9, LC8, LC1, LC2, LC3, LC4, LC5, LC6, RC1, RC2, RC3, RC4, RC5, RC6, RC7x,RC8, RC9, \
97 LD9, LD8, LD1, LD2x,LD3, LD4, LD5, LD6, LD7, RD1, RD2, RD3, RD4, RD6, RD7, RD8, RD9, \
98 LE9, LE8, LE1, LE2, LE3, LE5, LE6x,LE7, RE1, RE2, RE4, RE5, RE6, RE7, RE8, RE9 \
99 ) \
100 { \
101 { LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8 }, \
102 { LB1, LB2, LB3, LB4, LB5, LB6, LB9, LB8 }, \
103 { LC1, LC2, LC3, LC4, LC5, LC6, LC9, LC8 }, \
104 { LD1, LD9, LD3, LD4, LD5, LD6, LD7, LD8 }, \
105 { LE1, LE2, LE3, LA9, LE5, LE9, LE7, LE8 }, \
106 { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
107 { RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8 }, \
108 { RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8 }, \
109 { RC1, RC2, RC3, RC4, RC5, RC6, RC9, RC8 }, \
110 { RD1, RD2, RD3, RD4, RD9, RD6, RD7, RD8 }, \
111 { RE1, RE2, RE9, RE4, RE5, RE6, RE7, RE8 }, \
112 { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RA9, RB9 } \
113 }
diff --git a/keyboards/rgbkb/pan/info.json b/keyboards/rgbkb/pan/info.json
index 524eec0da8..e12e7717eb 100644
--- a/keyboards/rgbkb/pan/info.json
+++ b/keyboards/rgbkb/pan/info.json
@@ -11,76 +11,72 @@
11 "layouts": { 11 "layouts": {
12 "LAYOUT_all": { 12 "LAYOUT_all": {
13 "layout": [ 13 "layout": [
14 {"x": 0, "y": 0}, 14 {"matrix": [0, 0], "x": 0, "y": 0},
15 {"matrix": [0, 1], "x": 1, "y": 0},
16 {"matrix": [0, 2], "x": 2, "y": 0},
17 {"matrix": [0, 3], "x": 3, "y": 0},
18 {"matrix": [0, 4], "x": 4, "y": 0},
19 {"matrix": [0, 5], "x": 5, "y": 0},
20 {"matrix": [0, 6], "x": 6, "y": 0},
21 {"matrix": [0, 7], "x": 7, "y": 0},
22 {"matrix": [0, 8], "x": 8, "y": 0},
23 {"matrix": [0, 9], "x": 9, "y": 0},
24 {"matrix": [0, 10], "x": 10, "y": 0},
25 {"matrix": [0, 11], "x": 11, "y": 0},
26 {"matrix": [0, 12], "x": 12, "y": 0},
15 27
16 {"x": 12, "y": 0}, 28 {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
29 {"matrix": [1, 1], "x": 1.5, "y": 1},
30 {"matrix": [1, 2], "x": 2.5, "y": 1},
31 {"matrix": [1, 3], "x": 3.5, "y": 1},
32 {"matrix": [1, 4], "x": 4.5, "y": 1},
33 {"matrix": [1, 5], "x": 5.5, "y": 1},
34 {"matrix": [1, 6], "x": 6.5, "y": 1},
35 {"matrix": [1, 7], "x": 7.5, "y": 1},
36 {"matrix": [1, 8], "x": 8.5, "y": 1},
37 {"matrix": [1, 9], "x": 9.5, "y": 1},
38 {"matrix": [1, 10], "x": 10.5, "y": 1},
39 {"matrix": [1, 11], "x": 11.5, "y": 1, "w": 1.5},
17 40
18 {"x": 0, "y": 1.25}, 41 {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.5},
19 {"x": 1, "y": 1.25}, 42 {"matrix": [2, 1], "x": 1.5, "y": 2},
20 {"x": 2, "y": 1.25}, 43 {"matrix": [2, 2], "x": 2.5, "y": 2},
21 {"x": 3, "y": 1.25}, 44 {"matrix": [2, 3], "x": 3.5, "y": 2},
22 {"x": 4, "y": 1.25}, 45 {"matrix": [2, 4], "x": 4.5, "y": 2},
23 {"x": 5, "y": 1.25}, 46 {"matrix": [2, 5], "x": 5.5, "y": 2},
24 {"x": 6, "y": 1.25}, 47 {"matrix": [2, 6], "x": 6.5, "y": 2},
25 {"x": 7, "y": 1.25}, 48 {"matrix": [2, 7], "x": 7.5, "y": 2},
26 {"x": 8, "y": 1.25}, 49 {"matrix": [2, 8], "x": 8.5, "y": 2},
27 {"x": 9, "y": 1.25}, 50 {"matrix": [2, 9], "x": 9.5, "y": 2},
28 {"x": 10, "y": 1.25}, 51 {"matrix": [2, 10], "x": 10.5, "y": 2},
29 {"x": 11, "y": 1.25}, 52 {"matrix": [2, 11], "x": 11.5, "y": 2, "w": 1.5},
30 {"x": 12, "y": 1.25},
31 53
32 {"x": 0, "y": 2.25, "w": 1.5}, 54 {"matrix": [3, 0], "x": 0, "y": 3},
33 {"x": 1.5, "y": 2.25}, 55 {"matrix": [3, 1], "x": 1, "y": 3},
34 {"x": 2.5, "y": 2.25}, 56 {"matrix": [3, 2], "x": 2, "y": 3},
35 {"x": 3.5, "y": 2.25}, 57 {"matrix": [3, 3], "x": 3, "y": 3},
36 {"x": 4.5, "y": 2.25}, 58 {"matrix": [3, 4], "x": 4, "y": 3},
37 {"x": 5.5, "y": 2.25}, 59 {"matrix": [3, 5], "x": 5, "y": 3},
38 {"x": 6.5, "y": 2.25}, 60 {"matrix": [3, 6], "x": 6, "y": 3},
39 {"x": 7.5, "y": 2.25}, 61 {"matrix": [3, 7], "x": 7, "y": 3},
40 {"x": 8.5, "y": 2.25}, 62 {"matrix": [3, 8], "x": 8, "y": 3},
41 {"x": 9.5, "y": 2.25}, 63 {"matrix": [3, 9], "x": 9, "y": 3},
42 {"x": 10.5, "y": 2.25}, 64 {"matrix": [3, 10], "x": 10, "y": 3},
43 {"x": 11.5, "y": 2.25, "w": 1.5}, 65 {"matrix": [3, 11], "x": 11, "y": 3},
66 {"matrix": [3, 12], "x": 12, "y": 3},
44 67
45 {"x": 0, "y": 3.25, "w": 1.5}, 68 {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
46 {"x": 1.5, "y": 3.25}, 69 {"matrix": [4, 1], "x": 1.5, "y": 4},
47 {"x": 2.5, "y": 3.25}, 70 {"matrix": [4, 2], "x": 2.5, "y": 4},
48 {"x": 3.5, "y": 3.25}, 71 {"matrix": [4, 3], "x": 3.5, "y": 4},
49 {"x": 4.5, "y": 3.25}, 72 {"matrix": [4, 4], "x": 4.5, "y": 4},
50 {"x": 5.5, "y": 3.25}, 73 {"matrix": [4, 5], "x": 5.5, "y": 4},
51 {"x": 6.5, "y": 3.25}, 74 {"matrix": [4, 6], "x": 6.5, "y": 4},
52 {"x": 7.5, "y": 3.25}, 75 {"matrix": [4, 7], "x": 7.5, "y": 4},
53 {"x": 8.5, "y": 3.25}, 76 {"matrix": [4, 8], "x": 8.5, "y": 4},
54 {"x": 9.5, "y": 3.25}, 77 {"matrix": [4, 9], "x": 9.5, "y": 4},
55 {"x": 10.5, "y": 3.25}, 78 {"matrix": [4, 10], "x": 10.5, "y": 4},
56 {"x": 11.5, "y": 3.25, "w": 1.5}, 79 {"matrix": [4, 12], "x": 11.5, "y": 4, "w": 1.5}
57
58 {"x": 0, "y": 4.25},
59 {"x": 1, "y": 4.25},
60 {"x": 2, "y": 4.25},
61 {"x": 3, "y": 4.25},
62 {"x": 4, "y": 4.25},
63 {"x": 5, "y": 4.25},
64 {"x": 6, "y": 4.25},
65 {"x": 7, "y": 4.25},
66 {"x": 8, "y": 4.25},
67 {"x": 9, "y": 4.25},
68 {"x": 10, "y": 4.25},
69 {"x": 11, "y": 4.25},
70 {"x": 12, "y": 4.25},
71
72 {"x": 0, "y": 5.25, "w": 1.5},
73 {"x": 1.5, "y": 5.25},
74 {"x": 2.5, "y": 5.25},
75 {"x": 3.5, "y": 5.25},
76 {"x": 4.5, "y": 5.25},
77 {"x": 5.5, "y": 5.25},
78 {"x": 6.5, "y": 5.25},
79 {"x": 7.5, "y": 5.25},
80 {"x": 8.5, "y": 5.25},
81 {"x": 9.5, "y": 5.25},
82 {"x": 10.5, "y": 5.25},
83 {"x": 11.5, "y": 5.25, "w": 1.5}
84 ] 80 ]
85 } 81 }
86 } 82 }
diff --git a/keyboards/rgbkb/pan/keymaps/default/keymap.c b/keyboards/rgbkb/pan/keymaps/default/keymap.c
index 367aadbb4b..5d84ea0763 100644
--- a/keyboards/rgbkb/pan/keymaps/default/keymap.c
+++ b/keyboards/rgbkb/pan/keymaps/default/keymap.c
@@ -34,7 +34,6 @@ enum layer_number {
34 34
35const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 35const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
36 [_QWERTY] = LAYOUT_all( 36 [_QWERTY] = LAYOUT_all(
37 KC_NO, KC_NO,
38 QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_DEL, 37 QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, 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_BSLS, 38 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
40 FN_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, 39 FN_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
@@ -43,7 +42,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
43 ), 42 ),
44 43
45 [_COLEMAK] = LAYOUT_all( 44 [_COLEMAK] = LAYOUT_all(
46 KC_NO, KC_NO,
47 QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_DEL, 45 QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_DEL,
48 KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS, 46 KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS,
49 FN_CAPS, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_ENT, 47 FN_CAPS, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_ENT,
@@ -52,7 +50,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
52 ), 50 ),
53 51
54 [_FN] = LAYOUT_all( 52 [_FN] = LAYOUT_all(
55 KC_NO, KC_NO,
56 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, 53 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,
57 _______, KC_PGDN, KC_UP, KC_PGUP, _______, _______, _______, KC_PGDN, KC_UP, KC_PGUP, KC_PSCR, KC_HOME, 54 _______, KC_PGDN, KC_UP, KC_PGUP, _______, _______, _______, KC_PGDN, KC_UP, KC_PGUP, KC_PSCR, KC_HOME,
58 _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_END, 55 _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_END,
@@ -61,7 +58,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
61 ), 58 ),
62 59
63 [_ADJ] = LAYOUT_all( 60 [_ADJ] = LAYOUT_all(
64 KC_NO, KC_NO,
65 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, 61 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,
66 _______, RGB_SAD, RGB_VAI, RGB_SAI, QK_BOOT, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______, 62 _______, RGB_SAD, RGB_VAI, RGB_SAI, QK_BOOT, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______,
67 _______, RGB_HUD, RGB_VAD, RGB_HUI, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, 63 _______, RGB_HUD, RGB_VAD, RGB_HUI, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______,
diff --git a/keyboards/rgbkb/pan/pan.c b/keyboards/rgbkb/pan/pan.c
index f0194ebdfd..fab3cac785 100644
--- a/keyboards/rgbkb/pan/pan.c
+++ b/keyboards/rgbkb/pan/pan.c
@@ -13,7 +13,7 @@
13 * You should have received a copy of the GNU General Public License 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/>. 14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */ 15 */
16#include "pan.h" 16
17#include "quantum.h" 17#include "quantum.h"
18#include "rgb_matrix_types.h" 18#include "rgb_matrix_types.h"
19 19
diff --git a/keyboards/rgbkb/pan/pan.h b/keyboards/rgbkb/pan/pan.h
deleted file mode 100644
index c1b9f77f6d..0000000000
--- a/keyboards/rgbkb/pan/pan.h
+++ /dev/null
@@ -1,37 +0,0 @@
1/* Copyright 2020 RGBKB
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#define _x_ KC_NO
20
21#include "quantum.h"
22
23#define LAYOUT_all( \
24 E01, E02, \
25/* 0 1 2 3 4 5 6 7 8 9 10 11 12 */\
26/* 0 */ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, \
27/* 1 */ K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, \
28/* 2 */ K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, K37, \
29/* 3 */ K38, K39, K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K50, \
30/* 4 */ K51, K52, K53, K54, K55, K56, K57, K58, K59, K60, K61, K62 \
31 ) { \
32/* 0 */{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12 }, \
33/* 1 */{ K13, K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, KC_NO }, \
34/* 2 */{ K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, K37, KC_NO }, \
35/* 3 */{ K38, K39, K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K50 }, \
36/* 4 */{ K51, K52, K53, K54, K55, K56, K57, K58, K59, K60, K61, KC_NO, K62 } \
37 }
diff --git a/util/ci/generate_failure_markdown.sh b/util/ci/generate_failure_markdown.sh
new file mode 100755
index 0000000000..5f21f06856
--- /dev/null
+++ b/util/ci/generate_failure_markdown.sh
@@ -0,0 +1,21 @@
1#!/bin/bash
2
3set -e
4
5this_script="$(realpath "${BASH_SOURCE[0]}")"
6script_dir="$(realpath "$(dirname "$this_script")")"
7qmk_firmware_dir="$(realpath "$script_dir/../../")"
8
9dump_failure_info() {
10 local failure_file="$1"
11 local keyboard=$(cat "$failure_file" | grep 'CI Metadata: KEYBOARD=' | cut -d= -f2)
12 local keymap=$(cat "$failure_file" | grep 'CI Metadata: KEYMAP=' | cut -d= -f2)
13 echo "## ${keyboard}:${keymap}"
14 echo "\`\`\`"
15 cat "$failure_file" | sed -e $'s/\x1b\[[0-9;]*m//g' | grep -v "CI Metadata:" | grep -vP "(Entering|Leaving) directory"
16 echo "\`\`\`"
17}
18
19for failure_file in $(find "$qmk_firmware_dir/.build" -name 'failed.log.*' | sort); do
20 dump_failure_info "$failure_file"
21done