diff --git a/.github/labeler.yml b/.github/labeler.yml
index 95eaa49252d..f0e72786b21 100644
--- a/.github/labeler.yml
+++ b/.github/labeler.yml
@@ -1,46 +1,56 @@
core:
- - quantum/**/*
- - tmk_core/**/*
- - drivers/**/*
- - tests/**/*
- - util/**/*
- - platforms/**/*
- - builddefs/**/*
- - Makefile
- - '*.mk'
+ - changed-files:
+ - any-glob-to-any-file:
+ - quantum/**
+ - tmk_core/**
+ - drivers/**
+ - tests/**
+ - util/**
+ - platforms/**
+ - builddefs/*.mk
+ - Makefile
+ - '*.mk'
dependencies:
- - any:
- - 'lib/**/*'
- - '!lib/python/**/*'
+ - all:
+ - changed-files:
+ - any-glob-to-any-file: lib/**
+ - all-globs-to-all-files: '!lib/python/**'
keyboard:
- - any:
- - 'keyboards/**/*'
- - '!keyboards/**/keymaps/**/*'
+ - all:
+ - changed-files:
+ - any-glob-to-any-file: keyboards/**
+ - all-globs-to-all-files: '!keyboards/**/keymaps/**'
keymap:
- - users/**/*
- - layouts/**/*
- - keyboards/**/keymaps/**/*
+ - changed-files:
+ - any-glob-to-any-file:
+ - users/**
+ - layouts/**
+ - keyboards/**/keymaps/**
via:
- - keyboards/**/keymaps/via/*
+ - changed-files:
+ - any-glob-to-any-file:
+ - keyboards/**/keymaps/via/*
cli:
- - requirements.txt
- - lib/python/**/*
+ - changed-files:
+ - any-glob-to-any-file:
+ - requirements.txt
+ - lib/python/**
python:
- - '**/*.py'
+ - changed-files:
+ - any-glob-to-any-file:
+ - '**/*.py'
documentation:
- - docs/**/*
-translation:
- - docs/fr-fr/**/*
- - docs/es/**/*
- - docs/ja/**/*
- - docs/he-il/**/*
- - docs/pt-br/**/*
- - docs/zh-cn/**/*
- - docs/de/**/*
- - docs/ru-ru/**/*
+ - changed-files:
+ - any-glob-to-any-file:
+ - docs/**
+ - builddefs/docsgen/**
CI:
- - .github/**/*
+ - changed-files:
+ - any-glob-to-any-file:
+ - .github/**
dd:
- - data/constants/**/*
- - data/mappings/**/*
- - data/schemas/**/*
+ - changed-files:
+ - any-glob-to-any-file:
+ - data/constants/**
+ - data/mappings/**
+ - data/schemas/**
diff --git a/.github/workflows/auto_approve.yml b/.github/workflows/auto_approve.yml
index 1db1c49a9bb..d526db397c5 100644
--- a/.github/workflows/auto_approve.yml
+++ b/.github/workflows/auto_approve.yml
@@ -13,8 +13,8 @@ jobs:
if: github.repository == 'qmk/qmk_firmware'
steps:
- - uses: mheap/automatic-approve-action@v1
+ - uses: zvecr/automatic-approve-action@safe_files
with:
token: ${{ secrets.QMK_BOT_TOKEN }}
- workflows: "format.yml,lint.yml,unit_test.yml"
- dangerous_files: "lib/python/,Makefile,paths.mk,builddefs/"
+ workflows: "labeler.yml,lint.yml,docs.yml"
+ safe_files: "keyboards/,docs/"
diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml
index fa4b8981add..2dc354dda20 100644
--- a/.github/workflows/labeler.yml
+++ b/.github/workflows/labeler.yml
@@ -1,18 +1,13 @@
name: "Pull Request Labeler"
-permissions:
- contents: read
- pull-requests: write
-
on:
- pull_request_target:
- types: [opened, synchronize, reopened, ready_for_review, locked]
+- pull_request_target
jobs:
triage:
+ permissions:
+ contents: read
+ pull-requests: write
runs-on: ubuntu-latest
steps:
- - uses: actions/labeler@v4
- with:
- repo-token: "${{ secrets.GITHUB_TOKEN }}"
- configuration-path: '.github/labeler.yml'
+ - uses: actions/labeler@v5
diff --git a/docs/drivers/serial.md b/docs/drivers/serial.md
index 364e951b869..75d11bc93bc 100644
--- a/docs/drivers/serial.md
+++ b/docs/drivers/serial.md
@@ -1,6 +1,6 @@
# 'serial' Driver
-The Serial driver powers the [Split Keyboard](../features/split_keyboard) feature. Several implementations are available that cater to the platform and capabilites of MCU in use. Note that none of the drivers support split keyboards with more than two halves.
+The Serial driver powers the [Split Keyboard](../features/split_keyboard) feature. Several implementations are available that cater to the platform and capabilities of MCU in use. Note that none of the drivers support split keyboards with more than two halves.
| Driver | AVR | ARM | Connection between halves |
| --------------------------------------- | ------------------ | ------------------ | --------------------------------------------------------------------------------------------- |
diff --git a/keyboards/aidansmithdotdev/sango/keyboard.json b/keyboards/aidansmithdotdev/sango/keyboard.json
index 6c62ac9bd2a..deb26f86b62 100644
--- a/keyboards/aidansmithdotdev/sango/keyboard.json
+++ b/keyboards/aidansmithdotdev/sango/keyboard.json
@@ -120,7 +120,6 @@
"matrix": [4, 7]
},
"enabled": true,
- "main": "matrix_grid",
"matrix_pins": {
"right": {
"cols": ["GP7", "GP8", "GP9", "GP11", "GP12", "GP13", "GP14", "GP15"],
diff --git a/keyboards/amjkeyboard/amj60/keyboard.json b/keyboards/amjkeyboard/amj60/keyboard.json
index 5ab353675a7..a2cfd1b6e12 100644
--- a/keyboards/amjkeyboard/amj60/keyboard.json
+++ b/keyboards/amjkeyboard/amj60/keyboard.json
@@ -11,8 +11,8 @@
"features": {
"backlight": true,
"bootmagic": false,
- "command": true,
- "console": true,
+ "command": false,
+ "console": false,
"extrakey": true,
"mousekey": false,
"nkro": true,
@@ -45,7 +45,6 @@
"knight": true,
"christmas": true,
"static_gradient": true,
- "rgb_test": true,
"alternating": true,
"twinkle": true
}
diff --git a/keyboards/checkerboards/axon40/keyboard.json b/keyboards/checkerboards/axon40/keyboard.json
index ca492690b9d..c0b67b611de 100644
--- a/keyboards/checkerboards/axon40/keyboard.json
+++ b/keyboards/checkerboards/axon40/keyboard.json
@@ -50,8 +50,11 @@
"diode_direction": "COL2ROW",
"processor": "atmega32u4",
"bootloader": "atmel-dfu",
+ "layout_aliases": {
+ "LAYOUT_all": "LAYOUT"
+ },
"layouts": {
- "LAYOUT_all": {
+ "LAYOUT": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1, "y": 0},
diff --git a/keyboards/checkerboards/axon40/keymaps/default/keymap.c b/keyboards/checkerboards/axon40/keymaps/default/keymap.c
index b466a746b5c..bb60e1c31d8 100644
--- a/keyboards/checkerboards/axon40/keymaps/default/keymap.c
+++ b/keyboards/checkerboards/axon40/keymaps/default/keymap.c
@@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | OS | Alt | Layer | Space | Alt | Caps | |
* `-----------------------------------------------------------------------------------'
*/
-[0] = LAYOUT_all(
+[0] = LAYOUT(
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
@@ -56,7 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `---------------------------------------------------------------------------------------'
*/
-[1] = LAYOUT_all(
+[1] = LAYOUT(
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
KC_SLSH, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_EQL, _______, _______, _______,
@@ -76,7 +76,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `---------------------------------------------------------------------------------------'
*/
-[2] = LAYOUT_all(
+[2] = LAYOUT(
RGB_HUI, RGB_SAI, _______, KC_UP, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, RGB_VAI,
RGB_HUD, RGB_SAD, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, RGB_VAD,
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
diff --git a/keyboards/checkerboards/axon40/keymaps/via/keymap.c b/keyboards/checkerboards/axon40/keymaps/via/keymap.c
index dc37bf540cf..db536745af1 100644
--- a/keyboards/checkerboards/axon40/keymaps/via/keymap.c
+++ b/keyboards/checkerboards/axon40/keymaps/via/keymap.c
@@ -37,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
-[0] = LAYOUT_all(
+[0] = LAYOUT(
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
CTL_T(KC_ESC), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
@@ -57,7 +57,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
-[1] = LAYOUT_all(
+[1] = LAYOUT(
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
KC_SLSH, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_EQL, _______, _______, _______,
@@ -78,7 +78,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
-[2] = LAYOUT_all(
+[2] = LAYOUT(
RGB_HUI, RGB_SAI, _______, KC_UP, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, RGB_VAI,
RGB_HUD, RGB_SAD, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, RGB_VAD,
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
@@ -99,7 +99,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
-[3] = LAYOUT_all(
+[3] = LAYOUT(
RGB_HUI, RGB_SAI, _______, KC_UP, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, RGB_VAI,
RGB_HUD, RGB_SAD, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, RGB_VAD,
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
diff --git a/keyboards/checkerboards/pursuit40/keyboard.json b/keyboards/checkerboards/pursuit40/keyboard.json
index 974bab5c920..996a55850d8 100644
--- a/keyboards/checkerboards/pursuit40/keyboard.json
+++ b/keyboards/checkerboards/pursuit40/keyboard.json
@@ -51,8 +51,11 @@
"diode_direction": "COL2ROW",
"processor": "atmega32u4",
"bootloader": "atmel-dfu",
+ "layout_aliases": {
+ "LAYOUT_all": "LAYOUT"
+ },
"layouts": {
- "LAYOUT_all": {
+ "LAYOUT": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1, "y": 0},
diff --git a/keyboards/checkerboards/pursuit40/keymaps/default/keymap.c b/keyboards/checkerboards/pursuit40/keymaps/default/keymap.c
index 1b80a880e7e..970fc0f3ee7 100644
--- a/keyboards/checkerboards/pursuit40/keymaps/default/keymap.c
+++ b/keyboards/checkerboards/pursuit40/keymaps/default/keymap.c
@@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | PRINT | OS | Alt | Layer | Space & Layer | [ | ] | CAPS |
* `-----------------------------------------------------------------------------------------'
*/
- [0] = LAYOUT_all(
+ [0] = LAYOUT(
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
@@ -52,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | ESC | CTRL-ALT-DEL | TASK | | | '|' | ` | |
* `---------------------------------------------------------------------------------------'
*/
- [1] = LAYOUT_all(
+ [1] = LAYOUT(
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
KC_SLSH, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS,
_______, _______, _______, _______, _______, _______, _______, KC_PPLS, KC_EQL, _______, _______, _______,
@@ -71,7 +71,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | QK_BOOT | | | | | | | |
* `---------------------------------------------------------------------------------------'
*/
- [2] = LAYOUT_all(
+ [2] = LAYOUT(
_______, _______, _______, KC_UP, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, _______,
_______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, _______,
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
diff --git a/keyboards/checkerboards/pursuit40/keymaps/via/keymap.c b/keyboards/checkerboards/pursuit40/keymaps/via/keymap.c
index cebca52889f..4fe94269dea 100644
--- a/keyboards/checkerboards/pursuit40/keymaps/via/keymap.c
+++ b/keyboards/checkerboards/pursuit40/keymaps/via/keymap.c
@@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | PRINT | OS | Alt | Layer | Space & Layer | [ | ] | CAPS |
* `-----------------------------------------------------------------------------------------'
*/
- [0] = LAYOUT_all(
+ [0] = LAYOUT(
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
@@ -52,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | ESC | CTRL-ALT-DEL | TASK | | | '|' | ` | |
* `---------------------------------------------------------------------------------------'
*/
- [1] = LAYOUT_all(
+ [1] = LAYOUT(
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
KC_SLSH, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS,
_______, _______, _______, _______, _______, _______, _______, KC_PPLS, KC_EQL, _______, _______, _______,
@@ -71,30 +71,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | QK_BOOT | | | | | | | |
* `---------------------------------------------------------------------------------------'
*/
- [2] = LAYOUT_all(
+ [2] = LAYOUT(
_______, _______, _______, KC_UP, _______, _______, _______, KC_UNDS, _______, KC_LBRC, KC_RBRC, _______,
_______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, _______, KC_LCBR, KC_RCBR, _______,
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
QK_BOOT, _______, _______, _______, _______, _______, _______, _______
),
-
- /* [3]
- * ,---------------------------------------------------------------------------------------.
- * |------------+------+------+------+------+------+------+------+------+------+------+----|
- * | | | | | | | | | | | | | |
- * |------------+------+------+------+------+-------------+------+------+------+------+----|
- * | | | | | | | | | | | | | |
- * |------------+------+------+------+------+------|------+------+------+------+------+----|
- * | | | | | | | | | | | | | |
- * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+----|
- * | | | | | | | | | | | | | |
- * `---------------------------------------------------------------------------------------'
- */
- [3] = LAYOUT_all(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______
- ),
-
};
diff --git a/keyboards/clueboard/66/rev3/keyboard.json b/keyboards/clueboard/66/rev3/keyboard.json
index 0aa3e7096fc..4553979d8a2 100644
--- a/keyboards/clueboard/66/rev3/keyboard.json
+++ b/keyboards/clueboard/66/rev3/keyboard.json
@@ -9,7 +9,7 @@
"backlight": true,
"bootmagic": false,
"command": false,
- "console": true,
+ "console": false,
"extrakey": true,
"mousekey": true,
"nkro": true,
@@ -30,7 +30,6 @@
"knight": true,
"rainbow_mood": true,
"rainbow_swirl": true,
- "rgb_test": true,
"snake": true,
"static_gradient": true,
"twinkle": true
diff --git a/keyboards/dailycraft/claw44/keymaps/oled/config.h b/keyboards/dailycraft/claw44/keymaps/oled/config.h
index 5379ce677d5..f84bf23dd8c 100644
--- a/keyboards/dailycraft/claw44/keymaps/oled/config.h
+++ b/keyboards/dailycraft/claw44/keymaps/oled/config.h
@@ -19,4 +19,4 @@ along with this program. If not, see .
#pragma once
#define MASTER_LEFT
-#define OLED_FONT_H "keyboards/claw44/lib/glcdfont.c"
+#define OLED_FONT_H "claw44/lib/glcdfont.c"
diff --git a/keyboards/doro67/rgb/keyboard.json b/keyboards/doro67/rgb/keyboard.json
index 9b660fd1aec..8f372dc9c7f 100644
--- a/keyboards/doro67/rgb/keyboard.json
+++ b/keyboards/doro67/rgb/keyboard.json
@@ -39,8 +39,6 @@
"pixel_rain": true,
"pixel_flow": true,
"pixel_fractal": true,
- "typing_heatmap": true,
- "digital_rain": true,
"solid_reactive_simple": true,
"solid_reactive": true,
"solid_reactive_wide": true,
diff --git a/keyboards/handwired/dactyl_minidox/keymaps/dlford/rules.mk b/keyboards/handwired/dactyl_minidox/keymaps/dlford/rules.mk
index d24f7a0cbd8..78e059df96e 100644
--- a/keyboards/handwired/dactyl_minidox/keymaps/dlford/rules.mk
+++ b/keyboards/handwired/dactyl_minidox/keymaps/dlford/rules.mk
@@ -11,6 +11,8 @@ INDICATOR_LIGHTS = yes # Enable indicator lights for caps lock, etc.
# KEY_OVERRIDE_ENABLE = yes # Override key combos
# COMBO_ENABLE = yes # Custom key combos
+RGB_MATRIX_ENABLE = yes
+
LTO_ENABLE = yes
RGBLIGHT_SUPPORTED = yes
RGB_MATRIX_SUPPORTED = yes
diff --git a/keyboards/handwired/hnah108/keyboard.json b/keyboards/handwired/hnah108/keyboard.json
index e062dcee6f2..3099ed85485 100644
--- a/keyboards/handwired/hnah108/keyboard.json
+++ b/keyboards/handwired/hnah108/keyboard.json
@@ -39,8 +39,6 @@
"pixel_rain": true,
"pixel_flow": true,
"pixel_fractal": true,
- "typing_heatmap": true,
- "digital_rain": true,
"solid_reactive_simple": true,
"solid_reactive": true,
"solid_reactive_wide": true,
diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/arduinomicro/keyboard.json b/keyboards/handwired/tractyl_manuform/5x6_right/arduinomicro/keyboard.json
index eebc5d5546c..df810f2881e 100644
--- a/keyboards/handwired/tractyl_manuform/5x6_right/arduinomicro/keyboard.json
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/arduinomicro/keyboard.json
@@ -15,5 +15,8 @@
}
},
"processor": "atmega32u4",
- "bootloader": "caterina"
+ "bootloader": "caterina",
+ "build": {
+ "lto": true
+ }
}
diff --git a/keyboards/jian/keymaps/left_hand/keymap.c b/keyboards/jian/keymaps/left_hand/keymap.c
index 3f67215b8b7..b3cf6bd3674 100644
--- a/keyboards/jian/keymaps/left_hand/keymap.c
+++ b/keyboards/jian/keymaps/left_hand/keymap.c
@@ -1,17 +1,17 @@
/* Copyright 2020 KGOH
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
*/
#include QMK_KEYBOARD_H
@@ -30,7 +30,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, LGUI_T(KC_GRV), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_T, KC_R, KC_E, KC_W, KC_Q, LGUI_T(KC_GRV), KC_LSFT,
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_G, KC_F, KC_D, KC_S, KC_A, KC_LCTL,
KC_LALT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_V, KC_C, KC_X, KC_Z, KC_LALT,
- LT(_RAIS_L, KC_BSPC), LT(_DFLT_R, KC_SPC), LT(_LOWR_L, KC_ENT), LT(_LOWR_L, KC_ENT), LT(_DFLT_R, KC_SPC), LT(_RAIS_L, KC_BSPC),
+ LT(_RAIS_L, KC_BSPC), LT(_DFLT_R, KC_SPC), LT(_LOWR_L, KC_ENT), LT(_LOWR_L, KC_ENT), LT(_DFLT_R, KC_SPC), LT(_RAIS_L, KC_BSPC)
),
[_DFLT_R] = LAYOUT(
KC_RBRC, KC_LBRC, KC_P, KC_O, KC_I, KC_U, KC_Y, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
diff --git a/keyboards/keychron/q2/jis/config.h b/keyboards/keychron/q2/jis/config.h
index 0d811e08452..18e37b06fee 100644
--- a/keyboards/keychron/q2/jis/config.h
+++ b/keyboards/keychron/q2/jis/config.h
@@ -16,9 +16,6 @@
#pragma once
-/* RGB Matrix Configuration */
-#define RGB_MATRIX_LED_COUNT 71
-
#define SNLED27351_CURRENT_TUNE { 0xC0, 0xC0, 0x5D, 0xC0, 0xC0, 0x5D, 0xC0, 0xC0, 0x5D, 0xC0, 0xC0, 0x5D }
/* Enable caps-lock LED */
diff --git a/keyboards/keychron/q2/jis/keyboard.json b/keyboards/keychron/q2/jis/keyboard.json
index 834b89332e2..6e5a0b8fc2f 100644
--- a/keyboards/keychron/q2/jis/keyboard.json
+++ b/keyboards/keychron/q2/jis/keyboard.json
@@ -5,21 +5,21 @@
},
"rgb_matrix": {
"layout": [
- {"matrix": [0, 0], "x": 0, "y": 4, "flags": 1},
- {"matrix": [0, 1], "x": 15, "y": 4, "flags": 4},
- {"matrix": [0, 2], "x": 29, "y": 4, "flags": 4},
- {"matrix": [0, 3], "x": 44, "y": 4, "flags": 4},
- {"matrix": [0, 4], "x": 59, "y": 4, "flags": 4},
- {"matrix": [0, 5], "x": 73, "y": 4, "flags": 4},
- {"matrix": [0, 6], "x": 88, "y": 4, "flags": 4},
- {"matrix": [0, 7], "x": 103, "y": 4, "flags": 4},
- {"matrix": [0, 8], "x": 117, "y": 4, "flags": 4},
- {"matrix": [0, 9], "x": 132, "y": 4, "flags": 4},
- {"matrix": [0, 10], "x": 146, "y": 4, "flags": 4},
- {"matrix": [0, 11], "x": 161, "y": 4, "flags": 4},
- {"matrix": [0, 12], "x": 176, "y": 4, "flags": 4},
- {"matrix": [0, 13], "x": 190, "y": 4, "flags": 4},
- {"matrix": [3, 1], "x": 205, "y": 4, "flags": 1},
+ {"matrix": [0, 0], "x": 0, "y": 4, "flags": 1},
+ {"matrix": [0, 1], "x": 15, "y": 4, "flags": 4},
+ {"matrix": [0, 2], "x": 29, "y": 4, "flags": 4},
+ {"matrix": [0, 3], "x": 44, "y": 4, "flags": 4},
+ {"matrix": [0, 4], "x": 59, "y": 4, "flags": 4},
+ {"matrix": [0, 5], "x": 73, "y": 4, "flags": 4},
+ {"matrix": [0, 6], "x": 88, "y": 4, "flags": 4},
+ {"matrix": [0, 7], "x": 103, "y": 4, "flags": 4},
+ {"matrix": [0, 8], "x": 118, "y": 4, "flags": 4},
+ {"matrix": [0, 9], "x": 132, "y": 4, "flags": 4},
+ {"matrix": [0, 10], "x": 147, "y": 4, "flags": 4},
+ {"matrix": [0, 11], "x": 162, "y": 4, "flags": 4},
+ {"matrix": [0, 12], "x": 176, "y": 4, "flags": 4},
+ {"matrix": [0, 13], "x": 191, "y": 4, "flags": 4},
+ {"matrix": [3, 1], "x": 206, "y": 4, "flags": 1},
{"matrix": [0, 14], "x": 224, "y": 0, "flags": 1},
{"matrix": [1, 0], "x": 4, "y": 19, "flags": 1},
@@ -31,10 +31,10 @@
{"matrix": [1, 6], "x": 95, "y": 19, "flags": 4},
{"matrix": [1, 7], "x": 110, "y": 19, "flags": 4},
{"matrix": [1, 8], "x": 125, "y": 19, "flags": 4},
- {"matrix": [1, 9], "x": 139, "y": 19, "flags": 4},
+ {"matrix": [1, 9], "x": 140, "y": 19, "flags": 4},
{"matrix": [1, 10], "x": 154, "y": 19, "flags": 4},
- {"matrix": [1, 11], "x": 168, "y": 19, "flags": 4},
- {"matrix": [1, 12], "x": 183, "y": 19, "flags": 4},
+ {"matrix": [1, 11], "x": 169, "y": 19, "flags": 4},
+ {"matrix": [1, 12], "x": 184, "y": 19, "flags": 4},
{"matrix": [1, 14], "x": 224, "y": 19, "flags": 1},
{"matrix": [2, 0], "x": 6, "y": 34, "flags": 1},
@@ -45,12 +45,12 @@
{"matrix": [2, 5], "x": 84, "y": 34, "flags": 4},
{"matrix": [2, 6], "x": 99, "y": 34, "flags": 4},
{"matrix": [2, 7], "x": 114, "y": 34, "flags": 4},
- {"matrix": [2, 8], "x": 128, "y": 34, "flags": 4},
+ {"matrix": [2, 8], "x": 129, "y": 34, "flags": 4},
{"matrix": [2, 9], "x": 143, "y": 34, "flags": 4},
{"matrix": [2, 10], "x": 158, "y": 34, "flags": 4},
- {"matrix": [2, 11], "x": 172, "y": 34, "flags": 4},
+ {"matrix": [2, 11], "x": 173, "y": 34, "flags": 4},
{"matrix": [2, 13], "x": 187, "y": 34, "flags": 4},
- {"matrix": [1, 13], "x": 207, "y": 29, "flags": 1},
+ {"matrix": [1, 13], "x": 204, "y": 26, "flags": 1},
{"matrix": [2, 14], "x": 224, "y": 34, "flags": 1},
{"matrix": [3, 0], "x": 9, "y": 49, "flags": 1},
@@ -62,9 +62,10 @@
{"matrix": [3, 7], "x": 106, "y": 49, "flags": 4},
{"matrix": [3, 8], "x": 121, "y": 49, "flags": 4},
{"matrix": [3, 9], "x": 136, "y": 49, "flags": 4},
- {"matrix": [3, 10], "x": 150, "y": 49, "flags": 4},
- {"matrix": [3, 11], "x": 179, "y": 49, "flags": 4},
- {"matrix": [3, 13], "x": 194, "y": 49, "flags": 1},
+ {"matrix": [3, 10], "x": 151, "y": 49, "flags": 4},
+ {"matrix": [3, 11], "x": 165, "y": 49, "flags": 4},
+ {"matrix": [3, 12], "x": 180, "y": 49, "flags": 4},
+ {"matrix": [3, 13], "x": 195, "y": 49, "flags": 1},
{"matrix": [3, 14], "x": 209, "y": 49, "flags": 1},
{"matrix": [4, 0], "x": 2, "y": 64, "flags": 1},
@@ -73,12 +74,12 @@
{"matrix": [4, 3], "x": 51, "y": 64, "flags": 1},
{"matrix": [4, 6], "x": 92, "y": 64, "flags": 4},
{"matrix": [4, 9], "x": 134, "y": 64, "flags": 1},
- {"matrix": [4, 10], "x": 150, "y": 64, "flags": 1},
+ {"matrix": [4, 10], "x": 151, "y": 64, "flags": 1},
{"matrix": [4, 11], "x": 165, "y": 64, "flags": 1},
- {"matrix": [4, 12], "x": 179, "y": 64, "flags": 1},
- {"matrix": [4, 13], "x": 194, "y": 64, "flags": 1},
+ {"matrix": [4, 12], "x": 180, "y": 64, "flags": 1},
+ {"matrix": [4, 13], "x": 195, "y": 64, "flags": 1},
{"matrix": [2, 12], "x": 209, "y": 64, "flags": 1},
- {"matrix": [4, 14], "x": 223, "y": 64, "flags": 1}
+ {"matrix": [4, 14], "x": 224, "y": 64, "flags": 1}
]
},
"layouts": {
diff --git a/keyboards/keychron/q2/jis_encoder/config.h b/keyboards/keychron/q2/jis_encoder/config.h
index 0d811e08452..18e37b06fee 100644
--- a/keyboards/keychron/q2/jis_encoder/config.h
+++ b/keyboards/keychron/q2/jis_encoder/config.h
@@ -16,9 +16,6 @@
#pragma once
-/* RGB Matrix Configuration */
-#define RGB_MATRIX_LED_COUNT 71
-
#define SNLED27351_CURRENT_TUNE { 0xC0, 0xC0, 0x5D, 0xC0, 0xC0, 0x5D, 0xC0, 0xC0, 0x5D, 0xC0, 0xC0, 0x5D }
/* Enable caps-lock LED */
diff --git a/keyboards/keychron/q2/jis_encoder/keyboard.json b/keyboards/keychron/q2/jis_encoder/keyboard.json
index 32b691742bb..11204e720f1 100644
--- a/keyboards/keychron/q2/jis_encoder/keyboard.json
+++ b/keyboards/keychron/q2/jis_encoder/keyboard.json
@@ -11,21 +11,21 @@
},
"rgb_matrix": {
"layout": [
- {"matrix": [0, 0], "x": 0, "y": 4, "flags": 1},
- {"matrix": [0, 1], "x": 15, "y": 4, "flags": 4},
- {"matrix": [0, 2], "x": 29, "y": 4, "flags": 4},
- {"matrix": [0, 3], "x": 44, "y": 4, "flags": 4},
- {"matrix": [0, 4], "x": 59, "y": 4, "flags": 4},
- {"matrix": [0, 5], "x": 73, "y": 4, "flags": 4},
- {"matrix": [0, 6], "x": 88, "y": 4, "flags": 4},
- {"matrix": [0, 7], "x": 103, "y": 4, "flags": 4},
- {"matrix": [0, 8], "x": 117, "y": 4, "flags": 4},
- {"matrix": [0, 9], "x": 132, "y": 4, "flags": 4},
- {"matrix": [0, 10], "x": 146, "y": 4, "flags": 4},
- {"matrix": [0, 11], "x": 161, "y": 4, "flags": 4},
- {"matrix": [0, 12], "x": 176, "y": 4, "flags": 4},
- {"matrix": [0, 13], "x": 190, "y": 4, "flags": 4},
- {"matrix": [3, 1], "x": 205, "y": 4, "flags": 1},
+ {"matrix": [0, 0], "x": 0, "y": 4, "flags": 1},
+ {"matrix": [0, 1], "x": 15, "y": 4, "flags": 4},
+ {"matrix": [0, 2], "x": 29, "y": 4, "flags": 4},
+ {"matrix": [0, 3], "x": 44, "y": 4, "flags": 4},
+ {"matrix": [0, 4], "x": 59, "y": 4, "flags": 4},
+ {"matrix": [0, 5], "x": 73, "y": 4, "flags": 4},
+ {"matrix": [0, 6], "x": 88, "y": 4, "flags": 4},
+ {"matrix": [0, 7], "x": 103, "y": 4, "flags": 4},
+ {"matrix": [0, 8], "x": 118, "y": 4, "flags": 4},
+ {"matrix": [0, 9], "x": 132, "y": 4, "flags": 4},
+ {"matrix": [0, 10], "x": 147, "y": 4, "flags": 4},
+ {"matrix": [0, 11], "x": 162, "y": 4, "flags": 4},
+ {"matrix": [0, 12], "x": 176, "y": 4, "flags": 4},
+ {"matrix": [0, 13], "x": 191, "y": 4, "flags": 4},
+ {"matrix": [3, 1], "x": 206, "y": 4, "flags": 1},
{"matrix": [0, 14], "x": 224, "y": 0, "flags": 1},
{"matrix": [1, 0], "x": 4, "y": 19, "flags": 1},
@@ -37,10 +37,10 @@
{"matrix": [1, 6], "x": 95, "y": 19, "flags": 4},
{"matrix": [1, 7], "x": 110, "y": 19, "flags": 4},
{"matrix": [1, 8], "x": 125, "y": 19, "flags": 4},
- {"matrix": [1, 9], "x": 139, "y": 19, "flags": 4},
+ {"matrix": [1, 9], "x": 140, "y": 19, "flags": 4},
{"matrix": [1, 10], "x": 154, "y": 19, "flags": 4},
- {"matrix": [1, 11], "x": 168, "y": 19, "flags": 4},
- {"matrix": [1, 12], "x": 183, "y": 19, "flags": 4},
+ {"matrix": [1, 11], "x": 169, "y": 19, "flags": 4},
+ {"matrix": [1, 12], "x": 184, "y": 19, "flags": 4},
{"matrix": [1, 14], "x": 224, "y": 19, "flags": 1},
{"matrix": [2, 0], "x": 6, "y": 34, "flags": 1},
@@ -51,12 +51,12 @@
{"matrix": [2, 5], "x": 84, "y": 34, "flags": 4},
{"matrix": [2, 6], "x": 99, "y": 34, "flags": 4},
{"matrix": [2, 7], "x": 114, "y": 34, "flags": 4},
- {"matrix": [2, 8], "x": 128, "y": 34, "flags": 4},
+ {"matrix": [2, 8], "x": 129, "y": 34, "flags": 4},
{"matrix": [2, 9], "x": 143, "y": 34, "flags": 4},
{"matrix": [2, 10], "x": 158, "y": 34, "flags": 4},
- {"matrix": [2, 11], "x": 172, "y": 34, "flags": 4},
+ {"matrix": [2, 11], "x": 173, "y": 34, "flags": 4},
{"matrix": [2, 13], "x": 187, "y": 34, "flags": 4},
- {"matrix": [1, 13], "x": 207, "y": 29, "flags": 1},
+ {"matrix": [1, 13], "x": 204, "y": 26, "flags": 1},
{"matrix": [2, 14], "x": 224, "y": 34, "flags": 1},
{"matrix": [3, 0], "x": 9, "y": 49, "flags": 1},
@@ -68,9 +68,10 @@
{"matrix": [3, 7], "x": 106, "y": 49, "flags": 4},
{"matrix": [3, 8], "x": 121, "y": 49, "flags": 4},
{"matrix": [3, 9], "x": 136, "y": 49, "flags": 4},
- {"matrix": [3, 10], "x": 150, "y": 49, "flags": 4},
- {"matrix": [3, 11], "x": 179, "y": 49, "flags": 4},
- {"matrix": [3, 13], "x": 194, "y": 49, "flags": 1},
+ {"matrix": [3, 10], "x": 151, "y": 49, "flags": 4},
+ {"matrix": [3, 11], "x": 165, "y": 49, "flags": 4},
+ {"matrix": [3, 12], "x": 180, "y": 49, "flags": 4},
+ {"matrix": [3, 13], "x": 195, "y": 49, "flags": 1},
{"matrix": [3, 14], "x": 209, "y": 49, "flags": 1},
{"matrix": [4, 0], "x": 2, "y": 64, "flags": 1},
@@ -79,12 +80,12 @@
{"matrix": [4, 3], "x": 51, "y": 64, "flags": 1},
{"matrix": [4, 6], "x": 92, "y": 64, "flags": 4},
{"matrix": [4, 9], "x": 134, "y": 64, "flags": 1},
- {"matrix": [4, 10], "x": 150, "y": 64, "flags": 1},
+ {"matrix": [4, 10], "x": 151, "y": 64, "flags": 1},
{"matrix": [4, 11], "x": 165, "y": 64, "flags": 1},
- {"matrix": [4, 12], "x": 179, "y": 64, "flags": 1},
- {"matrix": [4, 13], "x": 194, "y": 64, "flags": 1},
+ {"matrix": [4, 12], "x": 180, "y": 64, "flags": 1},
+ {"matrix": [4, 13], "x": 195, "y": 64, "flags": 1},
{"matrix": [2, 12], "x": 209, "y": 64, "flags": 1},
- {"matrix": [4, 14], "x": 223, "y": 64, "flags": 1}
+ {"matrix": [4, 14], "x": 224, "y": 64, "flags": 1}
]
},
"layouts": {
diff --git a/keyboards/keycult/keycult_tkl/keyboard.json b/keyboards/keycult/keycult_tkl/keyboard.json
new file mode 100644
index 00000000000..81687f13bde
--- /dev/null
+++ b/keyboards/keycult/keycult_tkl/keyboard.json
@@ -0,0 +1,208 @@
+{
+ "manufacturer": "Yiancar-Designs",
+ "keyboard_name": "Keycult TKL",
+ "maintainer": "Yiancar-Designs",
+ "bootloader": "stm32-dfu",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "matrix_pins": {
+ "cols": ["B12", "B13", "B14", "B15", "A8", "A10", "A14", "A15", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "A0", "A1"],
+ "rows": ["B11", "B10", "B2", "B1", "A9", "A5"]
+ },
+ "processor": "STM32F072",
+ "url": "https://yiancar-designs.com",
+ "usb": {
+ "device_version": "0.0.1",
+ "pid": "0x6336",
+ "vid": "0x8968"
+ },
+ "community_layouts": ["tkl_ansi", "tkl_ansi_tsangan"],
+ "layouts": {
+ "LAYOUT_tkl_ansi": {
+ "layout": [
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 1], "x": 2, "y": 0},
+ {"matrix": [0, 2], "x": 3, "y": 0},
+ {"matrix": [0, 3], "x": 4, "y": 0},
+ {"matrix": [0, 4], "x": 5, "y": 0},
+ {"matrix": [0, 5], "x": 6.5, "y": 0},
+ {"matrix": [0, 6], "x": 7.5, "y": 0},
+ {"matrix": [0, 7], "x": 8.5, "y": 0},
+ {"matrix": [0, 8], "x": 9.5, "y": 0},
+ {"matrix": [0, 9], "x": 11, "y": 0},
+ {"matrix": [0, 10], "x": 12, "y": 0},
+ {"matrix": [0, 11], "x": 13, "y": 0},
+ {"matrix": [0, 12], "x": 14, "y": 0},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix": [0, 15], "x": 16.25, "y": 0},
+ {"matrix": [0, 16], "x": 17.25, "y": 0},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+ {"matrix": [1, 15], "x": 16.25, "y": 1.25},
+ {"matrix": [1, 16], "x": 17.25, "y": 1.25},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"matrix": [3, 12], "x": 13.5, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+ {"matrix": [2, 15], "x": 16.25, "y": 2.25},
+ {"matrix": [2, 16], "x": 17.25, "y": 2.25},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
+ {"matrix": [4, 2], "x": 2.25, "y": 4.25},
+ {"matrix": [4, 3], "x": 3.25, "y": 4.25},
+ {"matrix": [4, 4], "x": 4.25, "y": 4.25},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75},
+ {"matrix": [4, 15], "x": 16.25, "y": 4.25},
+ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
+ {"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
+ {"matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"matrix": [5, 15], "x": 16.25, "y": 5.25},
+ {"matrix": [5, 16], "x": 17.25, "y": 5.25}
+ ]
+ },
+ "LAYOUT_tkl_ansi_tsangan": {
+ "layout": [
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 1], "x": 2, "y": 0},
+ {"matrix": [0, 2], "x": 3, "y": 0},
+ {"matrix": [0, 3], "x": 4, "y": 0},
+ {"matrix": [0, 4], "x": 5, "y": 0},
+ {"matrix": [0, 5], "x": 6.5, "y": 0},
+ {"matrix": [0, 6], "x": 7.5, "y": 0},
+ {"matrix": [0, 7], "x": 8.5, "y": 0},
+ {"matrix": [0, 8], "x": 9.5, "y": 0},
+ {"matrix": [0, 9], "x": 11, "y": 0},
+ {"matrix": [0, 10], "x": 12, "y": 0},
+ {"matrix": [0, 11], "x": 13, "y": 0},
+ {"matrix": [0, 12], "x": 14, "y": 0},
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix": [0, 15], "x": 16.25, "y": 0},
+ {"matrix": [0, 16], "x": 17.25, "y": 0},
+ {"matrix": [1, 0], "x": 0, "y": 1.25},
+ {"matrix": [1, 1], "x": 1, "y": 1.25},
+ {"matrix": [1, 2], "x": 2, "y": 1.25},
+ {"matrix": [1, 3], "x": 3, "y": 1.25},
+ {"matrix": [1, 4], "x": 4, "y": 1.25},
+ {"matrix": [1, 5], "x": 5, "y": 1.25},
+ {"matrix": [1, 6], "x": 6, "y": 1.25},
+ {"matrix": [1, 7], "x": 7, "y": 1.25},
+ {"matrix": [1, 8], "x": 8, "y": 1.25},
+ {"matrix": [1, 9], "x": 9, "y": 1.25},
+ {"matrix": [1, 10], "x": 10, "y": 1.25},
+ {"matrix": [1, 11], "x": 11, "y": 1.25},
+ {"matrix": [1, 12], "x": 12, "y": 1.25},
+ {"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
+ {"matrix": [1, 14], "x": 15.25, "y": 1.25},
+ {"matrix": [1, 15], "x": 16.25, "y": 1.25},
+ {"matrix": [1, 16], "x": 17.25, "y": 1.25},
+ {"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 1], "x": 1.5, "y": 2.25},
+ {"matrix": [2, 2], "x": 2.5, "y": 2.25},
+ {"matrix": [2, 3], "x": 3.5, "y": 2.25},
+ {"matrix": [2, 4], "x": 4.5, "y": 2.25},
+ {"matrix": [2, 5], "x": 5.5, "y": 2.25},
+ {"matrix": [2, 6], "x": 6.5, "y": 2.25},
+ {"matrix": [2, 7], "x": 7.5, "y": 2.25},
+ {"matrix": [2, 8], "x": 8.5, "y": 2.25},
+ {"matrix": [2, 9], "x": 9.5, "y": 2.25},
+ {"matrix": [2, 10], "x": 10.5, "y": 2.25},
+ {"matrix": [2, 11], "x": 11.5, "y": 2.25},
+ {"matrix": [2, 12], "x": 12.5, "y": 2.25},
+ {"matrix": [3, 12], "x": 13.5, "y": 2.25, "w": 1.5},
+ {"matrix": [2, 14], "x": 15.25, "y": 2.25},
+ {"matrix": [2, 15], "x": 16.25, "y": 2.25},
+ {"matrix": [2, 16], "x": 17.25, "y": 2.25},
+ {"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
+ {"matrix": [3, 1], "x": 1.75, "y": 3.25},
+ {"matrix": [3, 2], "x": 2.75, "y": 3.25},
+ {"matrix": [3, 3], "x": 3.75, "y": 3.25},
+ {"matrix": [3, 4], "x": 4.75, "y": 3.25},
+ {"matrix": [3, 5], "x": 5.75, "y": 3.25},
+ {"matrix": [3, 6], "x": 6.75, "y": 3.25},
+ {"matrix": [3, 7], "x": 7.75, "y": 3.25},
+ {"matrix": [3, 8], "x": 8.75, "y": 3.25},
+ {"matrix": [3, 9], "x": 9.75, "y": 3.25},
+ {"matrix": [3, 10], "x": 10.75, "y": 3.25},
+ {"matrix": [3, 11], "x": 11.75, "y": 3.25},
+ {"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
+ {"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
+ {"matrix": [4, 2], "x": 2.25, "y": 4.25},
+ {"matrix": [4, 3], "x": 3.25, "y": 4.25},
+ {"matrix": [4, 4], "x": 4.25, "y": 4.25},
+ {"matrix": [4, 5], "x": 5.25, "y": 4.25},
+ {"matrix": [4, 6], "x": 6.25, "y": 4.25},
+ {"matrix": [4, 7], "x": 7.25, "y": 4.25},
+ {"matrix": [4, 8], "x": 8.25, "y": 4.25},
+ {"matrix": [4, 9], "x": 9.25, "y": 4.25},
+ {"matrix": [4, 10], "x": 10.25, "y": 4.25},
+ {"matrix": [4, 11], "x": 11.25, "y": 4.25},
+ {"matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75},
+ {"matrix": [4, 15], "x": 16.25, "y": 4.25},
+ {"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
+ {"matrix": [5, 1], "x": 1.5, "y": 5.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
+ {"matrix": [5, 6], "x": 4, "y": 5.25, "w": 7},
+ {"matrix": [5, 11], "x": 11, "y": 5.25, "w": 1.5},
+ {"matrix": [5, 12], "x": 12.5, "y": 5.25},
+ {"matrix": [5, 13], "x": 13.5, "y": 5.25, "w": 1.5},
+ {"matrix": [5, 14], "x": 15.25, "y": 5.25},
+ {"matrix": [5, 15], "x": 16.25, "y": 5.25},
+ {"matrix": [5, 16], "x": 17.25, "y": 5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keycult/keycult_tkl/keymaps/default/keymap.c b/keyboards/keycult/keycult_tkl/keymaps/default/keymap.c
new file mode 100644
index 00000000000..0f67593ea0b
--- /dev/null
+++ b/keyboards/keycult/keycult_tkl/keymaps/default/keymap.c
@@ -0,0 +1,35 @@
+/* Copyright 2024 Yiancar-Designs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT_tkl_ansi( /* Base */
+ 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_SCRL, KC_PAUS,
+ 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_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+[1] = LAYOUT_tkl_ansi( /* FN */
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, KC_VOLD, KC_MUTE,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+};
diff --git a/keyboards/keycult/keycult_tkl/keymaps/via/keymap.c b/keyboards/keycult/keycult_tkl/keymaps/via/keymap.c
new file mode 100644
index 00000000000..9c12c11abf3
--- /dev/null
+++ b/keyboards/keycult/keycult_tkl/keymaps/via/keymap.c
@@ -0,0 +1,35 @@
+/* Copyright 2024 Yiancar-Designs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT_tkl_ansi( /* Base */
+ 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_SCRL, KC_PAUS,
+ 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_INS, KC_HOME, KC_PGUP,
+ 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_DEL, KC_END, KC_PGDN,
+ 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_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+[1] = LAYOUT_tkl_ansi( /* FN */
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, KC_VOLD, KC_MUTE,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+};
\ No newline at end of file
diff --git a/keyboards/keycult/keycult_tkl/keymaps/via/rules.mk b/keyboards/keycult/keycult_tkl/keymaps/via/rules.mk
new file mode 100644
index 00000000000..1e5b99807cb
--- /dev/null
+++ b/keyboards/keycult/keycult_tkl/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/keycult/keycult_tkl/readme.md b/keyboards/keycult/keycult_tkl/readme.md
new file mode 100644
index 00000000000..6ed9159a1c7
--- /dev/null
+++ b/keyboards/keycult/keycult_tkl/readme.md
@@ -0,0 +1,32 @@
+# Keycult TKL
+
+This is a TKL layout PCB. It supports VIA.
+
+* Keyboard Maintainer: [Yiancar](https://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar)
+* Hardware Supported: A TKL keyboard with STM32F072CB or APM compatible
+* Hardware Availability: https://keycult.com/
+
+## Instructions
+
+### Build
+
+Make example for this keyboard (after setting up your build environment):
+
+ make keycult/keycult_tkl:default
+
+See 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).
+
+### Reset
+
+- Unplug
+- Hold Escape
+- Plug In
+- Unplug
+- Release Escape
+
+### Flash
+
+- Unplug
+- Hold Escape
+- Plug In
+- Flash using QMK Toolbox or dfu-util (`make keycult/keycult_tkl::dfu-util`)
diff --git a/keyboards/keycult/keycult_tkl/rules.mk b/keyboards/keycult/keycult_tkl/rules.mk
new file mode 100644
index 00000000000..0ab54aaaf71
--- /dev/null
+++ b/keyboards/keycult/keycult_tkl/rules.mk
@@ -0,0 +1,2 @@
+# Wildcard to allow APM32 MCU
+DFU_SUFFIX_ARGS = -v FFFF -p FFFF
diff --git a/keyboards/kingly_keys/ave/ortho/keyboard.json b/keyboards/kingly_keys/ave/ortho/keyboard.json
index d277e68e47f..27fb2666a2a 100644
--- a/keyboards/kingly_keys/ave/ortho/keyboard.json
+++ b/keyboards/kingly_keys/ave/ortho/keyboard.json
@@ -45,8 +45,13 @@
},
"processor": "atmega32u4",
"bootloader": "atmel-dfu",
+ "layout_aliases": {
+ "LAYOUT_ortho_all": "LAYOUT_all",
+ "LAYOUT_ortho_2x2u": "LAYOUT_2x2u_space",
+ "LAYOUT_ortho_big_boy": "LAYOUT_7u_space"
+ },
"layouts": {
- "LAYOUT_ortho_all": {
+ "LAYOUT_all": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1.5, "y": 0},
@@ -111,7 +116,7 @@
{"matrix": [4, 12], "x": 12.5, "y": 4.5}
]
},
- "LAYOUT_ortho_2x2u": {
+ "LAYOUT_2x2u_space": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1.5, "y": 0},
@@ -174,7 +179,7 @@
{"matrix": [4, 12], "x": 12.5, "y": 4.5}
]
},
- "LAYOUT_ortho_big_boy": {
+ "LAYOUT_7u_space": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1.5, "y": 0},
diff --git a/keyboards/kingly_keys/ave/ortho/keymaps/default/keymap.c b/keyboards/kingly_keys/ave/ortho/keymaps/default/keymap.c
index db0dfe46f69..d23666862ee 100644
--- a/keyboards/kingly_keys/ave/ortho/keymaps/default/keymap.c
+++ b/keyboards/kingly_keys/ave/ortho/keymaps/default/keymap.c
@@ -78,7 +78,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* │End │ │CTL │GUI │ALT │FUNC│LOWR│ │ │RISE│Left│Down│ Up │Rght│
* └────┘ └────┴────┴────┴────┴────┴─────────┴────┴────┴────┴────┴────┘
*/
- [_QWERTY] = LAYOUT_ortho_all(
+ [_QWERTY] = LAYOUT_all(
KC_MUTE, KC_ESC, KC_BSLS, KC_MINUS, KC_EQUAL,
KC_HOME, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
KC_PGUP, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
@@ -101,7 +101,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* │STOP│ │ │ │ │ │ │ │ │ │ │ │ │ │
* └────┘ └────┴────┴────┴────┴────┴─────────┴────┴────┴────┴────┴────┘
*/
- [_LOWER] = LAYOUT_ortho_all(
+ [_LOWER] = LAYOUT_all(
_______, _______, KC_LBRC, KC_RBRC, KC_GRAVE,
KC_MPLY, _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
KC_MNXT, _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DQT,
@@ -124,7 +124,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
* └────┘ └────┴────┴────┴────┴────┴─────────┴────┴────┴────┴────┴────┘
*/
- [_RAISE] = LAYOUT_ortho_all(
+ [_RAISE] = LAYOUT_all(
KC_PSCR, _______, KC_LCBR, KC_RCBR, KC_TILD,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -147,7 +147,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
* └────┘ └────┴────┴────┴────┴────┴─────────┴────┴────┴────┴────┴────┘
*/
- [_FUNCTION] = LAYOUT_ortho_all(
+ [_FUNCTION] = LAYOUT_all(
TD(TD_RST), RGB_TOG, KC_F11, KC_F12, KC_F13,
_______, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -175,7 +175,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
// * └────┘ └────┴────┴────┴────┴────┴─────────┴────┴────┴────┴────┴────┘
// */
-// [] = LAYOUT_ortho_all(
+// [] = LAYOUT_all(
// _______, _______, _______, _______, _______,
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/kingly_keys/ave/staggered/keyboard.json b/keyboards/kingly_keys/ave/staggered/keyboard.json
index 3f5bf70ce89..5fcb1657e38 100644
--- a/keyboards/kingly_keys/ave/staggered/keyboard.json
+++ b/keyboards/kingly_keys/ave/staggered/keyboard.json
@@ -45,8 +45,12 @@
},
"processor": "atmega32u4",
"bootloader": "atmel-dfu",
+ "layout_aliases": {
+ "LAYOUT_staggered": "LAYOUT_all",
+ "LAYOUT_staggered_big_boy": "LAYOUT_6u25_space"
+ },
"layouts": {
- "LAYOUT_staggered": {
+ "LAYOUT_all": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
@@ -111,7 +115,7 @@
{"matrix": [4, 12], "x": 12.25, "y": 4.5, "w": 1.25}
]
},
- "LAYOUT_staggered_big_boy": {
+ "LAYOUT_6u25_space": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
diff --git a/keyboards/kingly_keys/ave/staggered/keymaps/default/keymap.c b/keyboards/kingly_keys/ave/staggered/keymaps/default/keymap.c
index b5631ad436d..8d9c6a045ff 100644
--- a/keyboards/kingly_keys/ave/staggered/keymaps/default/keymap.c
+++ b/keyboards/kingly_keys/ave/staggered/keymaps/default/keymap.c
@@ -78,7 +78,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* │End │ │LCtrl│GUI │ALT │ LOWR │ │RAlt │RCTL│FUNC │
* └────┘ └─────┴────┴─────┴──────────────┴──────────┴─────┴────┴─────┘
*/
- [_QWERTY] = LAYOUT_staggered(
+ [_QWERTY] = LAYOUT_all(
KC_MUTE, KC_ESC, KC_LPRN, KC_RPRN, KC_SCLN,
KC_HOME, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
KC_PGUP, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
@@ -101,7 +101,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* │ _ │ │ │ │ │ │ │ │ │ │
* └────┘ └─────┴────┴─────┴──────────────┴──────────┴─────┴────┴─────┘
*/
- [_LOWER] = LAYOUT_staggered(
+ [_LOWER] = LAYOUT_all(
_______, _______, KC_LBRC, KC_RBRC, KC_COLON,
KC_MINUS, KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
KC_BSLS, KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, _______, TD(TD_DBQT),
@@ -124,7 +124,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* │ │ │ │ │ │ │ │ │ ? │ │
* └────┘ └─────┴────┴─────┴──────────────┴──────────┴─────┴────┴─────┘
*/
- [_RAISE] = LAYOUT_staggered(
+ [_RAISE] = LAYOUT_all(
KC_PSCR, _______, KC_LCBR, KC_RCBR, KC_PLUS,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______,
_______, KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_RIGHT, _______,
@@ -147,7 +147,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* │ │ │ │ │ │ │ │ │ │ │
* └────┘ └─────┴────┴─────┴──────────────┴──────────┴─────┴────┴─────┘
*/
- [_FUNCTION] = LAYOUT_staggered(
+ [_FUNCTION] = LAYOUT_all(
TD(TD_RST), RGB_TOG, KC_F11, KC_F12, KC_F13,
_______, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_EQUAL,
@@ -175,7 +175,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// * │ │ │ │ │ │ │ │ │ │ │
// * └────┘ └─────┴────┴─────┴──────────────┴──────────┴─────┴────┴─────┘
// */
-// [<_LAYER>] = LAYOUT_staggered(
+// [<_LAYER>] = LAYOUT_all(
// _______, _______, _______, _______, _______,
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/kopibeng/xt60/keyboard.json b/keyboards/kopibeng/xt60/keyboard.json
index 2901c056dd9..a170d36e417 100644
--- a/keyboards/kopibeng/xt60/keyboard.json
+++ b/keyboards/kopibeng/xt60/keyboard.json
@@ -17,8 +17,7 @@
"breathing": true,
"rainbow_mood": true,
"rainbow_swirl": true,
- "static_gradient": true,
- "rgb_test": true
+ "static_gradient": true
}
},
"ws2812": {
@@ -26,8 +25,8 @@
},
"features": {
"bootmagic": true,
- "command": true,
- "console": true,
+ "command": false,
+ "console": false,
"extrakey": true,
"mousekey": true,
"nkro": true,
diff --git a/keyboards/kopibeng/xt60/keymaps/default/keymap.c b/keyboards/kopibeng/xt60/keymaps/default/keymap.c
index 845118d1abb..cb8f395f08a 100644
--- a/keyboards/kopibeng/xt60/keymaps/default/keymap.c
+++ b/keyboards/kopibeng/xt60/keymaps/default/keymap.c
@@ -44,14 +44,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
-
- // Fn3 Layer
- [3] = LAYOUT_all(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
- ),
};
diff --git a/keyboards/kopibeng/xt60/keymaps/via/keymap.c b/keyboards/kopibeng/xt60/keymaps/via/keymap.c
index 845118d1abb..cb8f395f08a 100644
--- a/keyboards/kopibeng/xt60/keymaps/via/keymap.c
+++ b/keyboards/kopibeng/xt60/keymaps/via/keymap.c
@@ -44,14 +44,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
-
- // Fn3 Layer
- [3] = LAYOUT_all(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
- ),
};
diff --git a/keyboards/kopibeng/xt60_singa/keyboard.json b/keyboards/kopibeng/xt60_singa/keyboard.json
index 688fa2f73aa..280a58c07b3 100644
--- a/keyboards/kopibeng/xt60_singa/keyboard.json
+++ b/keyboards/kopibeng/xt60_singa/keyboard.json
@@ -17,8 +17,7 @@
"breathing": true,
"rainbow_mood": true,
"rainbow_swirl": true,
- "static_gradient": true,
- "rgb_test": true
+ "static_gradient": true
}
},
"ws2812": {
@@ -26,8 +25,8 @@
},
"features": {
"bootmagic": true,
- "command": true,
- "console": true,
+ "command": false,
+ "console": false,
"extrakey": true,
"mousekey": true,
"nkro": true,
diff --git a/keyboards/kopibeng/xt60_singa/keymaps/default/keymap.c b/keyboards/kopibeng/xt60_singa/keymaps/default/keymap.c
index 845118d1abb..cb8f395f08a 100644
--- a/keyboards/kopibeng/xt60_singa/keymaps/default/keymap.c
+++ b/keyboards/kopibeng/xt60_singa/keymaps/default/keymap.c
@@ -44,14 +44,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
-
- // Fn3 Layer
- [3] = LAYOUT_all(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
- ),
};
diff --git a/keyboards/kopibeng/xt60_singa/keymaps/via/keymap.c b/keyboards/kopibeng/xt60_singa/keymaps/via/keymap.c
index 845118d1abb..cb8f395f08a 100644
--- a/keyboards/kopibeng/xt60_singa/keymaps/via/keymap.c
+++ b/keyboards/kopibeng/xt60_singa/keymaps/via/keymap.c
@@ -44,14 +44,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
-
- // Fn3 Layer
- [3] = LAYOUT_all(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
- ),
};
diff --git a/keyboards/kprepublic/bm40hsrgb/rev2/keyboard.json b/keyboards/kprepublic/bm40hsrgb/rev2/keyboard.json
index cfaabd5c9ef..525a6088ed3 100644
--- a/keyboards/kprepublic/bm40hsrgb/rev2/keyboard.json
+++ b/keyboards/kprepublic/bm40hsrgb/rev2/keyboard.json
@@ -14,6 +14,9 @@
"command": false,
"nkro": false
},
+ "build": {
+ "lto": true
+ },
"usb": {
"vid": "0x4B50",
"pid": "0x3430",
diff --git a/keyboards/matchstickworks/southpad/info.json b/keyboards/matchstickworks/info.json
similarity index 51%
rename from keyboards/matchstickworks/southpad/info.json
rename to keyboards/matchstickworks/info.json
index dcf34cac3c3..7c68d143932 100644
--- a/keyboards/matchstickworks/southpad/info.json
+++ b/keyboards/matchstickworks/info.json
@@ -1,4 +1,4 @@
{
"manufacturer": "MatchstickWorks",
- "maintainer": "MatchstickWorks",
-}
\ No newline at end of file
+ "maintainer": "MatchstickWorks"
+}
diff --git a/keyboards/matchstickworks/normiepad/keyboard.json b/keyboards/matchstickworks/normiepad/keyboard.json
new file mode 100644
index 00000000000..3063b820aa8
--- /dev/null
+++ b/keyboards/matchstickworks/normiepad/keyboard.json
@@ -0,0 +1,51 @@
+{
+ "keyboard_name": "NormiePad",
+ "bootloader": "rp2040",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "matrix_pins": {
+ "cols": ["GP2", "GP4", "GP11", "GP12"],
+ "rows": ["GP13", "GP29", "GP28", "GP20", "GP19", "GP18"]
+ },
+ "processor": "RP2040",
+ "usb": {
+ "device_version": "0.0.1",
+ "pid": "0x0003",
+ "vid": "0x4D57"
+ },
+ "community_layouts": ["numpad_6x4"],
+ "layouts": {
+ "LAYOUT_numpad_6x4": {
+ "layout": [
+ {"label": "Bksp", "matrix": [0, 0], "x": 0, "y": 0},
+ {"label": "=", "matrix": [0, 1], "x": 1, "y": 0},
+ {"label": "(", "matrix": [0, 2], "x": 2, "y": 0},
+ {"label": ")", "matrix": [0, 3], "x": 3, "y": 0},
+ {"label": "Num Lock", "matrix": [1, 0], "x": 0, "y": 1},
+ {"label": "/", "matrix": [1, 1], "x": 1, "y": 1},
+ {"label": "*", "matrix": [1, 2], "x": 2, "y": 1},
+ {"label": "-", "matrix": [1, 3], "x": 3, "y": 1},
+ {"label": "7", "matrix": [2, 0], "x": 0, "y": 2},
+ {"label": "8", "matrix": [2, 1], "x": 1, "y": 2},
+ {"label": "9", "matrix": [2, 2], "x": 2, "y": 2},
+ {"label": "4", "matrix": [3, 0], "x": 1, "y": 3},
+ {"label": "5", "matrix": [3, 1], "x": 2, "y": 3},
+ {"label": "6", "matrix": [3, 2], "x": 3, "y": 3},
+ {"label": "+", "matrix": [2, 3], "x": 3, "y": 2, "h": 2},
+ {"label": "1", "matrix": [4, 0], "x": 0, "y": 4},
+ {"label": "2", "matrix": [4, 1], "x": 1, "y": 4},
+ {"label": "3", "matrix": [4, 2], "x": 2, "y": 4},
+ {"label": "0", "matrix": [5, 0], "x": 0, "y": 5, "w": 2},
+ {"label": ".", "matrix": [5, 2], "x": 2, "y": 5},
+ {"label": "Enter", "matrix": [4, 3], "x": 3, "y": 4, "h": 2}
+ ]
+ }
+ }
+}
diff --git a/keyboards/matchstickworks/normiepad/keymaps/default/keymap.c b/keyboards/matchstickworks/normiepad/keymaps/default/keymap.c
new file mode 100644
index 00000000000..699a6e9baf2
--- /dev/null
+++ b/keyboards/matchstickworks/normiepad/keymaps/default/keymap.c
@@ -0,0 +1,17 @@
+/* Copyright 2024 Logan Butler*/
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_numpad_6x4(
+ KC_BSPC, KC_EQL, LSFT(KC_9),LSFT(KC_0),
+ KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_P7, KC_P8, KC_P9,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3,
+ KC_P0, KC_PDOT, KC_PENT
+ ),
+
+};
diff --git a/keyboards/matchstickworks/normiepad/keymaps/via/keymap.c b/keyboards/matchstickworks/normiepad/keymaps/via/keymap.c
new file mode 100644
index 00000000000..699a6e9baf2
--- /dev/null
+++ b/keyboards/matchstickworks/normiepad/keymaps/via/keymap.c
@@ -0,0 +1,17 @@
+/* Copyright 2024 Logan Butler*/
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_numpad_6x4(
+ KC_BSPC, KC_EQL, LSFT(KC_9),LSFT(KC_0),
+ KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_P7, KC_P8, KC_P9,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3,
+ KC_P0, KC_PDOT, KC_PENT
+ ),
+
+};
diff --git a/keyboards/matchstickworks/normiepad/keymaps/via/rules.mk b/keyboards/matchstickworks/normiepad/keymaps/via/rules.mk
new file mode 100644
index 00000000000..1e5b99807cb
--- /dev/null
+++ b/keyboards/matchstickworks/normiepad/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/matchstickworks/normiepad/readme.md b/keyboards/matchstickworks/normiepad/readme.md
new file mode 100644
index 00000000000..35cdad98e05
--- /dev/null
+++ b/keyboards/matchstickworks/normiepad/readme.md
@@ -0,0 +1,23 @@
+# NormiePad
+
+![NormiePad](https://i.imgur.com/Fr8o5Ijm.png)
+
+This is a standard layout numberpad with USB-C connection and Kailh hotswap sockets, built on the RP2040 MCU.
+
+## Default layout
+
+![NormiePad Layout](https://i.imgur.com/IZxBA1f.png)
+
+* Keyboard Maintainer: [Logan Butler](https://github.com/MatchstickWorks)
+* Hardware Supported: NormiePad PCB
+* Hardware Availability: Either via [my storefront](https://matchstick.works), [my Etsy Store](https://www.etsy.com/shop/MatchstickWorksShop), or by messaging directly
+
+Getting the board into bootloader mode:
+
+In order to flash the firmware to this board, simply press both the RESET and BOOT buttons on the back of the PCB. You will hear a reconnect sound on your computer and a file explorer window should open where you can drag and drop the compiled UF2 into.
+
+Make example for this keyboard (after setting up your build environment):
+
+ make matchstickworks/normiepad:default
+
+See 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/matrix/noah/config.h b/keyboards/matrix/noah/config.h
index 74beabaa7ad..2c6e01b01d5 100644
--- a/keyboards/matrix/noah/config.h
+++ b/keyboards/matrix/noah/config.h
@@ -21,4 +21,3 @@
// rgb matrix setting
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SDA
-#define RGB_MATRIX_LED_COUNT 72
diff --git a/keyboards/matrix/noah/keyboard.json b/keyboards/matrix/noah/keyboard.json
index eb13e16aa2b..3ba9be21eb8 100644
--- a/keyboards/matrix/noah/keyboard.json
+++ b/keyboards/matrix/noah/keyboard.json
@@ -74,6 +74,84 @@
"solid_splash": true,
"solid_multisplash": true
},
+ "layout": [
+ {"matrix": [0, 0], "x": 0, "y": 0, "flags": 4},
+ {"matrix": [0, 1], "x": 15, "y": 0, "flags": 4},
+ {"matrix": [0, 2], "x": 30, "y": 0, "flags": 4},
+ {"matrix": [0, 3], "x": 45, "y": 0, "flags": 4},
+ {"matrix": [0, 4], "x": 60, "y": 0, "flags": 4},
+ {"matrix": [0, 5], "x": 75, "y": 0, "flags": 4},
+ {"matrix": [0, 6], "x": 90, "y": 0, "flags": 4},
+ {"matrix": [0, 7], "x": 105, "y": 0, "flags": 4},
+ {"matrix": [0, 8], "x": 119, "y": 0, "flags": 4},
+ {"matrix": [0, 9], "x": 134, "y": 0, "flags": 4},
+ {"matrix": [0, 10], "x": 149, "y": 0, "flags": 4},
+ {"matrix": [0, 11], "x": 164, "y": 0, "flags": 4},
+ {"matrix": [0, 12], "x": 179, "y": 0, "flags": 4},
+ {"matrix": [0, 14], "x": 202, "y": 0, "flags": 1},
+ {"matrix": [4, 14], "x": 224, "y": 0, "flags": 4},
+
+ {"matrix": [1, 0], "x": 4, "y": 16, "flags": 1},
+ {"matrix": [1, 1], "x": 22, "y": 16, "flags": 4},
+ {"matrix": [1, 2], "x": 37, "y": 16, "flags": 4},
+ {"matrix": [1, 3], "x": 52, "y": 16, "flags": 4},
+ {"matrix": [1, 4], "x": 67, "y": 16, "flags": 4},
+ {"matrix": [1, 5], "x": 82, "y": 16, "flags": 4},
+ {"matrix": [1, 6], "x": 97, "y": 16, "flags": 4},
+ {"matrix": [1, 7], "x": 112, "y": 16, "flags": 4},
+ {"matrix": [1, 8], "x": 127, "y": 16, "flags": 4},
+ {"matrix": [1, 9], "x": 142, "y": 16, "flags": 4},
+ {"matrix": [1, 10], "x": 157, "y": 16, "flags": 4},
+ {"matrix": [1, 11], "x": 172, "y": 16, "flags": 4},
+ {"matrix": [1, 12], "x": 187, "y": 16, "flags": 4},
+ {"matrix": [1, 13], "x": 205, "y": 16, "flags": 1},
+ {"matrix": [4, 11], "x": 224, "y": 16, "flags": 4},
+
+ {"matrix": [2, 0], "x": 6, "y": 32, "flags": 1},
+ {"matrix": [2, 1], "x": 26, "y": 32, "flags": 4},
+ {"matrix": [2, 2], "x": 41, "y": 32, "flags": 4},
+ {"matrix": [2, 3], "x": 56, "y": 32, "flags": 4},
+ {"matrix": [2, 4], "x": 71, "y": 32, "flags": 4},
+ {"matrix": [2, 5], "x": 86, "y": 32, "flags": 4},
+ {"matrix": [2, 6], "x": 101, "y": 32, "flags": 4},
+ {"matrix": [2, 7], "x": 116, "y": 32, "flags": 4},
+ {"matrix": [2, 8], "x": 131, "y": 32, "flags": 4},
+ {"matrix": [2, 9], "x": 146, "y": 32, "flags": 4},
+ {"matrix": [2, 10], "x": 161, "y": 32, "flags": 4},
+ {"matrix": [2, 11], "x": 175, "y": 32, "flags": 4},
+ {"matrix": [2, 12], "x": 190, "y": 32, "flags": 4},
+ {"x": 207, "y": 24, "flags": 1},
+ {"matrix": [2, 13], "x": 200, "y": 32, "flags": 1},
+ {"matrix": [4, 12], "x": 224, "y": 32, "flags": 4},
+
+ {"matrix": [3, 0], "x": 2, "y": 48, "flags": 1},
+ {"x": 9, "y": 48, "flags": 1},
+ {"matrix": [3, 1], "x": 19, "y": 48, "flags": 1},
+ {"matrix": [3, 2], "x": 34, "y": 48, "flags": 4},
+ {"matrix": [3, 3], "x": 49, "y": 48, "flags": 4},
+ {"matrix": [3, 4], "x": 63, "y": 48, "flags": 4},
+ {"matrix": [3, 5], "x": 78, "y": 48, "flags": 4},
+ {"matrix": [3, 6], "x": 93, "y": 48, "flags": 4},
+ {"matrix": [3, 7], "x": 108, "y": 48, "flags": 4},
+ {"matrix": [3, 8], "x": 123, "y": 48, "flags": 4},
+ {"matrix": [3, 9], "x": 138, "y": 48, "flags": 4},
+ {"matrix": [3, 10], "x": 153, "y": 48, "flags": 4},
+ {"matrix": [3, 11], "x": 168, "y": 48, "flags": 4},
+ {"matrix": [3, 12], "x": 189, "y": 48, "flags": 1},
+ {"matrix": [3, 13], "x": 209, "y": 48, "flags": 4},
+ {"matrix": [4, 13], "x": 224, "y": 48, "flags": 4},
+
+ {"matrix": [4, 0], "x": 2, "y": 64, "flags": 1},
+ {"matrix": [4, 1], "x": 21, "y": 64, "flags": 1},
+ {"matrix": [4, 2], "x": 39, "y": 64, "flags": 1},
+ {"matrix": [4, 4], "x": 95, "y": 64, "flags": 4},
+ {"x": 105, "y": 64, "flags": 4},
+ {"matrix": [4, 6], "x": 151, "y": 64, "flags": 1},
+ {"matrix": [4, 7], "x": 170, "y": 64, "flags": 1},
+ {"matrix": [4, 8], "x": 194, "y": 64, "flags": 4},
+ {"matrix": [4, 9], "x": 209, "y": 64, "flags": 4},
+ {"matrix": [4, 10], "x": 224, "y": 64, "flags": 4}
+ ],
"driver": "is31fl3731"
},
"features": {
diff --git a/keyboards/matrix/noah/noah.c b/keyboards/matrix/noah/noah.c
index a01d1b11bc1..99f4e063d1f 100644
--- a/keyboards/matrix/noah/noah.c
+++ b/keyboards/matrix/noah/noah.c
@@ -68,139 +68,83 @@ const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
* | | G location
* | | | B location
* | | | | */
+ {0, C1_10, C2_10, C4_11}, // RGB101
+ {0, C1_11, C2_11, C3_11}, // RGB102
+ {0, C1_12, C2_12, C3_12}, // RGB103
+ {0, C1_13, C2_13, C3_13}, // RGB104
+ {0, C1_14, C2_14, C3_14}, // RGB105
+ {0, C1_15, C2_15, C3_15}, // RGB106
+ {0, C1_16, C2_16, C3_16}, // RGB107
+ {1, C1_1, C3_2, C4_2}, // RGB108
+ {1, C1_2, C2_2, C4_3}, // RGB109
+ {1, C1_3, C2_3, C3_3}, // RGB1010
+ {1, C1_4, C2_4, C3_4}, // RGB1011
+ {1, C1_5, C2_5, C3_5}, // RGB1012
+ {1, C1_6, C2_6, C3_6}, // RGB1013
+ {1, C1_7, C2_7, C3_7}, // RGB1015
+ {1, C1_8, C2_8, C3_8}, // RGB1016
-// left CB
- {0, C1_9, C3_10, C4_10},
- {0, C1_10, C2_10, C4_11},
- {0, C1_11, C2_11, C3_11},
- {0, C1_12, C2_12, C3_12},
- {0, C1_13, C2_13, C3_13},
- {0, C1_14, C2_14, C3_14},
- {0, C1_15, C2_15, C3_15},
- {0, C1_16, C2_16, C3_16},
+ {0, C1_9, C3_10, C4_10}, // RGB201
+ {0, C5_9, C4_9, C6_9}, // RGB202
+ {0, C9_9, C8_9, C7_9}, // RGB203
+ {0, C9_10, C8_10, C7_10}, // RGB204
+ {0, C9_11, C8_11, C7_11}, // RGB205
+ {0, C9_12, C8_12, C7_12}, // RGB206
+ {0, C9_13, C8_13, C7_13}, // RGB207
+ {1, C5_1, C4_1, C6_1}, // RGB208
+ {1, C9_1, C8_1, C7_1}, // RGB209
+ {1, C9_2, C8_2, C7_2}, // RGB2010
+ {1, C9_3, C8_3, C7_3}, // RGB2011
+ {1, C9_4, C8_4, C7_4}, // RGB2012
+ {1, C9_5, C8_5, C7_5}, // RGB2013
+ {1, C9_6, C8_6, C7_6}, // RGB2014
+ {1, C5_8, C4_8, C6_8}, // RGB2015
- {0, C5_9, C4_9, C6_9},
- {0, C5_16, C4_16, C6_16},
+ {0, C9_1, C8_1, C7_1}, // RGB301
+ {0, C1_1, C3_2, C4_2}, // RGB302
+ {0, C5_1, C4_1, C6_1}, // RGB303
+ {0, C5_16, C4_16, C6_16}, // RGB304
+ {0, C1_2, C2_2, C4_3}, // RGB305
+ {0, C9_14, C8_14, C7_14}, // RGB306
+ {0, C9_15, C8_15, C6_14}, // RGB307
+ {0, C9_16, C7_15, C6_15}, // RGB308
+ {1, C1_10, C2_10, C4_11}, // RGB309
+ {1, C1_11, C2_11, C3_11}, // RGB3010
+ {1, C1_12, C2_12, C3_12}, // RGB3011
+ {1, C1_13, C2_13, C3_13}, // RGB3012
+ {1, C1_14, C2_14, C3_14}, // RGB3014
+ {1, C9_7, C8_7, C6_6}, // RGB3013-2
+ {1, C1_15, C2_15, C3_15}, // RGB3013
+ {1, C9_8, C7_7, C6_7}, // RGB3015
- {0, C9_9, C8_9, C7_9},
- {0, C9_10, C8_10, C7_10},
- {0, C9_11, C8_11, C7_11},
- {0, C9_12, C8_12, C7_12},
- {0, C9_13, C8_13, C7_13},
- {0, C9_14, C8_14, C7_14},
- {0, C9_15, C8_15, C6_14},
- {0, C9_16, C7_15, C6_15},
+ {0, C9_3, C8_3, C7_3}, // RGB401-2
+ {0, C9_2, C8_2, C7_2}, // RGB401
+ {0, C9_4, C8_4, C7_4}, // RGB4014
+ {0, C9_5, C8_5, C7_5}, // RGB402
+ {0, C9_6, C8_6, C7_6}, // RGB403
+ {0, C1_3, C2_3, C3_3}, // RGB404
+ {0, C1_4, C2_4, C3_4}, // RGB405
+ {0, C1_6, C2_6, C3_6}, // RGB406
+ {0, C1_5, C2_5, C3_5}, // RGB407
+ {1, C1_9, C3_10, C4_10}, // RGB408
+ {1, C5_9, C4_9, C6_9}, // RGB409
+ {1, C9_9, C8_9, C7_9}, // RGB4010
+ {1, C9_10, C8_10, C7_10}, // RGB4011
+ {1, C9_11, C8_11, C7_11}, // RGB4012
+ {1, C5_16, C4_16, C6_16}, // RGB4013
+ {1, C1_16, C2_16, C3_16}, // RGB4015
-// left CA
- {0, C1_1, C3_2, C4_2},
- {0, C1_2, C2_2, C4_3},
- {0, C1_3, C2_3, C3_3},
- {0, C1_4, C2_4, C3_4},
- {0, C1_5, C2_5, C3_5},
- {0, C1_6, C2_6, C3_6},
- {0, C1_7, C2_7, C3_7},
- {0, C1_8, C2_8, C3_8},
-
- {0, C5_1, C4_1, C6_1},
- {0, C5_8, C4_8, C6_8},
-
- {0, C9_1, C8_1, C7_1},
- {0, C9_2, C8_2, C7_2},
- {0, C9_3, C8_3, C7_3},
- {0, C9_4, C8_4, C7_4},
- {0, C9_5, C8_5, C7_5},
- {0, C9_6, C8_6, C7_6},
- {0, C9_7, C8_7, C6_6},
- {0, C9_8, C7_7, C6_7},
-
-// right CA
- {1, C1_1, C3_2, C4_2},
- {1, C1_2, C2_2, C4_3},
- {1, C1_3, C2_3, C3_3},
- {1, C1_4, C2_4, C3_4},
- {1, C1_5, C2_5, C3_5},
- {1, C1_6, C2_6, C3_6},
- {1, C1_7, C2_7, C3_7},
- {1, C1_8, C2_8, C3_8},
-
- {1, C5_1, C4_1, C6_1},
- {1, C5_8, C4_8, C6_8},
-
- {1, C9_1, C8_1, C7_1},
- {1, C9_2, C8_2, C7_2},
- {1, C9_3, C8_3, C7_3},
- {1, C9_4, C8_4, C7_4},
- {1, C9_5, C8_5, C7_5},
- {1, C9_6, C8_6, C7_6},
- {1, C9_7, C8_7, C6_6},
- {1, C9_8, C7_7, C6_7},
-// right CB
- {1, C1_9, C3_10, C4_10},
- {1, C1_10, C2_10, C4_11},
- {1, C1_11, C2_11, C3_11},
- {1, C1_12, C2_12, C3_12},
- {1, C1_13, C2_13, C3_13},
- {1, C1_14, C2_14, C3_14},
- {1, C1_15, C2_15, C3_15},
- {1, C1_16, C2_16, C3_16},
-
- {1, C5_9, C4_9, C6_9},
- {1, C5_16, C4_16, C6_16},
-
- {1, C9_9, C8_9, C7_9},
- {1, C9_10, C8_10, C7_10},
- {1, C9_11, C8_11, C7_11},
- {1, C9_12, C8_12, C7_12},
- {1, C9_13, C8_13, C7_13},
- {1, C9_14, C8_14, C7_14},
- {1, C9_15, C8_15, C6_14},
- {1, C9_16, C7_15, C6_15},
+ {0, C9_7, C8_7, C6_6}, // RGB501
+ {0, C9_8, C7_7, C6_7}, // RGB502
+ {0, C5_8, C4_8, C6_8}, // RGB503
+ {0, C1_8, C2_8, C3_8}, // RGB506
+ {0, C1_7, C2_7, C3_7}, // RGB506-2
+ {1, C9_12, C8_12, C7_12}, // RGB507
+ {1, C9_13, C8_13, C7_13}, // RGB508
+ {1, C9_14, C8_14, C7_14}, // RGB5010
+ {1, C9_15, C8_15, C6_14}, // RGB5011
+ {1, C9_16, C7_15, C6_15}, // RGB5012
};
-
-led_config_t g_led_config = {
- {
- { 1, 2, 3, 4, 5, 6, 7, 36, 37, 38, 39, 40, NO_LED, 41},
- { 0, 8, 10, 11, 12, 13, 14, 44, 46, 47, 48, 49, 50, 51},
- { 30, 18, 26, 9, 19, 15, 16, 17, 55, 56, 57, 58, 59, 60},
- { 29, 31, 32, 33, 20, 21, 23, 22, 54, 62, 64, 65, 66, 63},
- { 34, 35, 27, 25, 67, 68, 69, 70, 71, 61, 53, 45, 42, 43},
- },
- {
- { 0, 16},{ 0, 0},{ 15, 0},{ 30, 0},{ 45, 0},{ 60, 0},{ 75, 0},{ 90, 0},
- { 20, 16},{ 42, 32},
- { 45, 16},{ 50, 16},{ 65, 16},{ 80, 16},{ 95, 16},{ 70, 32},{ 84, 32},{ 98, 32},
-
- { 14, 32},{ 56, 32},{ 65, 48},{ 80, 48},{110, 48},{ 95, 48},{112, 64},{100, 64},
- { 42, 32},{ 38, 64},
- { 0, 32},{ 10, 48},{ 0, 48},{ 20, 48},{ 35, 48},{ 50, 48},{ 0, 64},{ 19, 64},
-
- {105, 0},{120, 0},{135, 0},{150, 0},{165, 0},{180, 0},{202, 0},{224, 0},
- {110, 16},{224, 16},
- {125, 16},{140, 16},{155, 16},{172, 16},{187, 16},{202, 16},{210, 32},{224, 32},
-
- {125, 48},{112, 32},{126, 32},{140, 32},{154, 32},{168, 32},{182, 32},{224, 48},
- {140, 48},{200, 48},
- {155, 48},{170, 48},{185, 48},{150, 64},{173, 64},{195, 64},{210, 64},{224, 64}
- },
- {
- 1, 1, 4, 4, 4, 4, 4, 4,
- 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
-
- 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4,
- 1, 1, 1, 4, 4, 4, 1, 1,
-
- 4, 4, 4, 4, 4, 4, 1, 1,
- 4, 1,
- 4, 4, 4, 4, 4, 4, 4, 1,
-
- 4, 4, 4, 4, 4, 4, 4, 1,
- 4, 4,
- 4, 4, 4, 1, 1, 1, 1, 1,
- }
-};
-
#endif
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
diff --git a/keyboards/mechlovin/delphine/rgb_led/keyboard.json b/keyboards/mechlovin/delphine/rgb_led/keyboard.json
index 35a163c05f8..d6e7a27f813 100644
--- a/keyboards/mechlovin/delphine/rgb_led/keyboard.json
+++ b/keyboards/mechlovin/delphine/rgb_led/keyboard.json
@@ -23,7 +23,6 @@
"knight": true,
"christmas": true,
"static_gradient": true,
- "rgb_test": true,
"alternating": true,
"twinkle": true
}
@@ -62,8 +61,6 @@
"pixel_rain": true,
"pixel_flow": true,
"pixel_fractal": true,
- "typing_heatmap": true,
- "digital_rain": true,
"solid_reactive_simple": true,
"solid_reactive": true,
"solid_reactive_wide": true,
diff --git a/keyboards/melgeek/mojo68/rev1/keyboard.json b/keyboards/melgeek/mojo68/rev1/keyboard.json
index b97de4fbd2c..7f218392929 100755
--- a/keyboards/melgeek/mojo68/rev1/keyboard.json
+++ b/keyboards/melgeek/mojo68/rev1/keyboard.json
@@ -45,8 +45,6 @@
"hue_breathing": true,
"hue_pendulum": true,
"hue_wave": true,
- "typing_heatmap": true,
- "digital_rain": true,
"solid_reactive_simple": true,
"solid_reactive": true,
"solid_reactive_wide": true,
diff --git a/keyboards/meme/keyboard.json b/keyboards/meme/keyboard.json
index 021c8f998ae..27acfc5a33f 100644
--- a/keyboards/meme/keyboard.json
+++ b/keyboards/meme/keyboard.json
@@ -33,8 +33,15 @@
},
"processor": "atmega32u2",
"bootloader": "atmel-dfu",
+ "community_layouts": ["65_ansi", "65_ansi_split_bs", "65_ansi_blocker", "65_ansi_blocker_split_bs"],
+ "layout_aliases": {
+ "LAYOUT_normie": "LAYOUT_65_ansi",
+ "LAYOUT_spicy": "LAYOUT_65_ansi_split_bs",
+ "LAYOUT_dank": "LAYOUT_65_ansi_blocker",
+ "LAYOUT_meme": "LAYOUT_65_ansi_blocker_split_bs",
+ },
"layouts": {
- "LAYOUT_spicy": {
+ "LAYOUT_65_ansi_split_bs": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [1, 0], "x": 1, "y": 0},
@@ -111,7 +118,7 @@
{"matrix": [9, 7], "x": 15, "y": 4}
]
},
- "LAYOUT_normie": {
+ "LAYOUT_65_ansi": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [1, 0], "x": 1, "y": 0},
@@ -187,7 +194,7 @@
{"matrix": [9, 7], "x": 15, "y": 4}
]
},
- "LAYOUT_dank": {
+ "LAYOUT_65_ansi_blocker": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [1, 0], "x": 1, "y": 0},
@@ -262,7 +269,7 @@
{"matrix": [9, 7], "x": 15, "y": 4}
]
},
- "LAYOUT_meme": {
+ "LAYOUT_65_ansi_blocker_split_bs": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [1, 0], "x": 1, "y": 0},
diff --git a/keyboards/meme/keymaps/default/keymap.c b/keyboards/meme/keymaps/default/keymap.c
index c84ca220bde..ef7139235a9 100644
--- a/keyboards/meme/keymaps/default/keymap.c
+++ b/keyboards/meme/keymaps/default/keymap.c
@@ -17,7 +17,7 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = LAYOUT_spicy(
+[0] = LAYOUT_65_ansi_split_bs(
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_BSLS, KC_BSPC, KC_INS,
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_DEL,
KC_RCTL, 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,
diff --git a/keyboards/merge/um80/keyboard.json b/keyboards/merge/um80/keyboard.json
index 5a369877f88..1cbac749f7b 100644
--- a/keyboards/merge/um80/keyboard.json
+++ b/keyboards/merge/um80/keyboard.json
@@ -42,6 +42,9 @@
"sleep": true,
"split_count": [48, 52]
},
+ "build": {
+ "lto": true
+ },
"processor": "atmega32u4",
"bootloader": "atmel-dfu",
"layouts": {
diff --git a/keyboards/mmkeyboard/class60/soldered/config.h b/keyboards/mmkeyboard/class60/soldered/config.h
new file mode 100644
index 00000000000..9db885042e5
--- /dev/null
+++ b/keyboards/mmkeyboard/class60/soldered/config.h
@@ -0,0 +1,28 @@
+// Copyright 2023 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define SOLENOID_PIN B3
+#define HAPTIC_ENABLE_PIN A15
+#define SOLENOID_DEFAULT_DWELL 4
+#define SOLENOID_MIN_DWELL 4
+#define SOLENOID_MAX_DWELL 45
+#define HAPTIC_OFF_IN_LOW_POWER 1
+#define NO_HAPTIC_MOD
+
+#define AUDIO_CLICKY
+#define AUDIO_PIN A6
+#define AUDIO_PWM_DRIVER PWMD3
+#define AUDIO_PWM_CHANNEL 1
+#define AUDIO_STATE_TIMER GPTD4
+#define AUDIO_PIN_ALT_AS_NEGATIVE
+#define AUDIO_PIN_ALT A13
+#define DEFAULT_LAYER_SONGS { \
+ SONG(CAPS_LOCK_ON_SOUND), \
+ SONG(CAPS_LOCK_OFF_SOUND), \
+ SONG(NUM_LOCK_ON_SOUND), \
+ SONG(NUM_LOCK_OFF_SOUND), \
+ SONG(SCROLL_LOCK_ON_SOUND), \
+ SONG(SCROLL_LOCK_OFF_SOUND) \
+ }
diff --git a/keyboards/mmkeyboard/class60/soldered/halconf.h b/keyboards/mmkeyboard/class60/soldered/halconf.h
new file mode 100644
index 00000000000..71df21e3485
--- /dev/null
+++ b/keyboards/mmkeyboard/class60/soldered/halconf.h
@@ -0,0 +1,10 @@
+// Copyright 2024 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define HAL_USE_GPT TRUE
+#define HAL_USE_PWM TRUE
+#define HAL_USE_PAL TRUE
+
+#include_next
diff --git a/keyboards/mmkeyboard/class60/soldered/keyboard.json b/keyboards/mmkeyboard/class60/soldered/keyboard.json
new file mode 100644
index 00000000000..758299cf2b6
--- /dev/null
+++ b/keyboards/mmkeyboard/class60/soldered/keyboard.json
@@ -0,0 +1,961 @@
+{
+ "manufacturer": "MMkeyboard",
+ "keyboard_name": "Class60",
+ "maintainer": "lexbrugman",
+ "bootloader": "uf2boot",
+ "build": {
+ "lto": true
+ },
+ "diode_direction": "COL2ROW",
+ "features": {
+ "audio": true,
+ "bootmagic": true,
+ "extrakey": true,
+ "haptic": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "indicators": {
+ "caps_lock": "B9",
+ "num_lock": "B8",
+ "on_state": 0,
+ "scroll_lock": "B11"
+ },
+ "matrix_pins": {
+ "cols": ["B1", "B0", "A7", "A1", "A2", "A3", "A4", "A5", "B12", "B13", "A10", "A9", "A8", "B14", "B15"],
+ "ghost": true,
+ "rows": ["B6", "B7", "C13", "B10", "C14", "B5"]
+ },
+ "processor": "STM32F103",
+ "qmk": {
+ "locking": {
+ "enabled": true,
+ "resync": true
+ }
+ },
+ "url": "https://www.mmkeyboard.com/products/mm-class60-retro-custom-mechanical-keyboard",
+ "usb": {
+ "device_version": "0.0.1",
+ "force_nkro": true,
+ "pid": "0x3876",
+ "vid": "0x4F66"
+ },
+ "community_layouts": ["60_ansi", "60_ansi_split_bs_rshift", "60_ansi_tsangan", "60_tsangan_hhkb", "60_ansi_wkl", "60_ansi_wkl_split_bs_rshift", "60_hhkb", "60_iso", "60_iso_split_bs_rshift", "60_iso_tsangan", "60_iso_tsangan_split_bs_rshift", "60_iso_wkl", "60_iso_wkl_split_bs_rshift"],
+ "layouts": {
+ "LAYOUT_60_ansi": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+ {"label": "1", "matrix": [0, 1], "x": 1, "y": 0},
+ {"label": "2", "matrix": [0, 2], "x": 2, "y": 0},
+ {"label": "3", "matrix": [0, 3], "x": 3, "y": 0},
+ {"label": "4", "matrix": [0, 4], "x": 4, "y": 0},
+ {"label": "5", "matrix": [0, 5], "x": 5, "y": 0},
+ {"label": "6", "matrix": [0, 6], "x": 6, "y": 0},
+ {"label": "7", "matrix": [0, 7], "x": 7, "y": 0},
+ {"label": "8", "matrix": [0, 8], "x": 8, "y": 0},
+ {"label": "9", "matrix": [0, 9], "x": 9, "y": 0},
+ {"label": "0", "matrix": [0, 10], "x": 10, "y": 0},
+ {"label": "-", "matrix": [0, 11], "x": 11, "y": 0},
+ {"label": "=", "matrix": [0, 12], "x": 12, "y": 0},
+ {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2},
+ {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+ {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
+ {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
+ {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
+ {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
+ {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
+ {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
+ {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
+ {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
+ {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
+ {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
+ {"label": "[", "matrix": [1, 11], "x": 11.5, "y": 1},
+ {"label": "]", "matrix": [1, 12], "x": 12.5, "y": 1},
+ {"label": "\\", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
+ {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
+ {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
+ {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
+ {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
+ {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
+ {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
+ {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
+ {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
+ {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
+ {"label": ";", "matrix": [2, 10], "x": 10.75, "y": 2},
+ {"label": "'", "matrix": [2, 11], "x": 11.75, "y": 2},
+ {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
+ {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
+ {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
+ {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
+ {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
+ {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
+ {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
+ {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
+ {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
+ {"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3},
+ {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3},
+ {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3},
+ {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75},
+ {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
+ {"label": "GUI", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
+ {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
+ {"label": "Space", "matrix": [4, 3], "x": 3.75, "y": 4, "w": 6.25},
+ {"label": "Alt", "matrix": [5, 10], "x": 10, "y": 4, "w": 1.25},
+ {"label": "GUI", "matrix": [5, 11], "x": 11.25, "y": 4, "w": 1.25},
+ {"label": "Menu", "matrix": [5, 12], "x": 12.5, "y": 4, "w": 1.25},
+ {"label": "Ctrl", "matrix": [5, 13], "x": 13.75, "y": 4, "w": 1.25}
+ ]
+ },
+ "LAYOUT_60_ansi_split_bs_rshift": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+ {"label": "1", "matrix": [0, 1], "x": 1, "y": 0},
+ {"label": "2", "matrix": [0, 2], "x": 2, "y": 0},
+ {"label": "3", "matrix": [0, 3], "x": 3, "y": 0},
+ {"label": "4", "matrix": [0, 4], "x": 4, "y": 0},
+ {"label": "5", "matrix": [0, 5], "x": 5, "y": 0},
+ {"label": "6", "matrix": [0, 6], "x": 6, "y": 0},
+ {"label": "7", "matrix": [0, 7], "x": 7, "y": 0},
+ {"label": "8", "matrix": [0, 8], "x": 8, "y": 0},
+ {"label": "9", "matrix": [0, 9], "x": 9, "y": 0},
+ {"label": "0", "matrix": [0, 10], "x": 10, "y": 0},
+ {"label": "-", "matrix": [0, 11], "x": 11, "y": 0},
+ {"label": "=", "matrix": [0, 12], "x": 12, "y": 0},
+ {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0},
+ {"label": "Delete", "matrix": [0, 14], "x": 14, "y": 0},
+ {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+ {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
+ {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
+ {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
+ {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
+ {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
+ {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
+ {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
+ {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
+ {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
+ {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
+ {"label": "[", "matrix": [1, 11], "x": 11.5, "y": 1},
+ {"label": "]", "matrix": [1, 12], "x": 12.5, "y": 1},
+ {"label": "\\", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
+ {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
+ {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
+ {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
+ {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
+ {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
+ {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
+ {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
+ {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
+ {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
+ {"label": ";", "matrix": [2, 10], "x": 10.75, "y": 2},
+ {"label": "'", "matrix": [2, 11], "x": 11.75, "y": 2},
+ {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
+ {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
+ {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
+ {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
+ {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
+ {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
+ {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
+ {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
+ {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
+ {"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3},
+ {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3},
+ {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3},
+ {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
+ {"label": "Fn", "matrix": [3, 14], "x": 14, "y": 3},
+ {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
+ {"label": "GUI", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
+ {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
+ {"label": "Space", "matrix": [4, 3], "x": 3.75, "y": 4, "w": 6.25},
+ {"label": "Alt", "matrix": [5, 10], "x": 10, "y": 4, "w": 1.25},
+ {"label": "GUI", "matrix": [5, 11], "x": 11.25, "y": 4, "w": 1.25},
+ {"label": "Menu", "matrix": [5, 12], "x": 12.5, "y": 4, "w": 1.25},
+ {"label": "Ctrl", "matrix": [5, 13], "x": 13.75, "y": 4, "w": 1.25}
+ ]
+ },
+ "LAYOUT_60_ansi_tsangan": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+ {"label": "1", "matrix": [0, 1], "x": 1, "y": 0},
+ {"label": "2", "matrix": [0, 2], "x": 2, "y": 0},
+ {"label": "3", "matrix": [0, 3], "x": 3, "y": 0},
+ {"label": "4", "matrix": [0, 4], "x": 4, "y": 0},
+ {"label": "5", "matrix": [0, 5], "x": 5, "y": 0},
+ {"label": "6", "matrix": [0, 6], "x": 6, "y": 0},
+ {"label": "7", "matrix": [0, 7], "x": 7, "y": 0},
+ {"label": "8", "matrix": [0, 8], "x": 8, "y": 0},
+ {"label": "9", "matrix": [0, 9], "x": 9, "y": 0},
+ {"label": "0", "matrix": [0, 10], "x": 10, "y": 0},
+ {"label": "-", "matrix": [0, 11], "x": 11, "y": 0},
+ {"label": "=", "matrix": [0, 12], "x": 12, "y": 0},
+ {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2},
+ {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+ {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
+ {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
+ {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
+ {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
+ {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
+ {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
+ {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
+ {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
+ {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
+ {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
+ {"label": "[", "matrix": [1, 11], "x": 11.5, "y": 1},
+ {"label": "]", "matrix": [1, 12], "x": 12.5, "y": 1},
+ {"label": "\\", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
+ {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
+ {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
+ {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
+ {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
+ {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
+ {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
+ {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
+ {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
+ {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
+ {"label": ";", "matrix": [2, 10], "x": 10.75, "y": 2},
+ {"label": "'", "matrix": [2, 11], "x": 11.75, "y": 2},
+ {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
+ {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
+ {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
+ {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
+ {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
+ {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
+ {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
+ {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
+ {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
+ {"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3},
+ {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3},
+ {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3},
+ {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75},
+ {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
+ {"label": "GUI", "matrix": [4, 1], "x": 1.5, "y": 4},
+ {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
+ {"label": "Space", "matrix": [4, 3], "x": 4, "y": 4, "w": 7},
+ {"label": "Alt", "matrix": [5, 11], "x": 11, "y": 4, "w": 1.5},
+ {"label": "GUI", "matrix": [5, 12], "x": 12.5, "y": 4},
+ {"label": "Ctrl", "matrix": [5, 13], "x": 13.5, "y": 4, "w": 1.5}
+ ]
+ },
+ "LAYOUT_60_ansi_wkl": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+ {"label": "1", "matrix": [0, 1], "x": 1, "y": 0},
+ {"label": "2", "matrix": [0, 2], "x": 2, "y": 0},
+ {"label": "3", "matrix": [0, 3], "x": 3, "y": 0},
+ {"label": "4", "matrix": [0, 4], "x": 4, "y": 0},
+ {"label": "5", "matrix": [0, 5], "x": 5, "y": 0},
+ {"label": "6", "matrix": [0, 6], "x": 6, "y": 0},
+ {"label": "7", "matrix": [0, 7], "x": 7, "y": 0},
+ {"label": "8", "matrix": [0, 8], "x": 8, "y": 0},
+ {"label": "9", "matrix": [0, 9], "x": 9, "y": 0},
+ {"label": "0", "matrix": [0, 10], "x": 10, "y": 0},
+ {"label": "-", "matrix": [0, 11], "x": 11, "y": 0},
+ {"label": "=", "matrix": [0, 12], "x": 12, "y": 0},
+ {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2},
+ {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+ {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
+ {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
+ {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
+ {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
+ {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
+ {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
+ {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
+ {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
+ {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
+ {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
+ {"label": "[", "matrix": [1, 11], "x": 11.5, "y": 1},
+ {"label": "]", "matrix": [1, 12], "x": 12.5, "y": 1},
+ {"label": "\\", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
+ {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
+ {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
+ {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
+ {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
+ {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
+ {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
+ {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
+ {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
+ {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
+ {"label": ";", "matrix": [2, 10], "x": 10.75, "y": 2},
+ {"label": "'", "matrix": [2, 11], "x": 11.75, "y": 2},
+ {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
+ {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
+ {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
+ {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
+ {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
+ {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
+ {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
+ {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
+ {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
+ {"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3},
+ {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3},
+ {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3},
+ {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75},
+ {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
+ {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
+ {"label": "Space", "matrix": [4, 3], "x": 4, "y": 4, "w": 7},
+ {"label": "Alt", "matrix": [5, 11], "x": 11, "y": 4, "w": 1.5},
+ {"label": "Ctrl", "matrix": [5, 13], "x": 13.5, "y": 4, "w": 1.5}
+ ]
+ },
+ "LAYOUT_60_ansi_wkl_split_bs_rshift": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+ {"label": "1", "matrix": [0, 1], "x": 1, "y": 0},
+ {"label": "2", "matrix": [0, 2], "x": 2, "y": 0},
+ {"label": "3", "matrix": [0, 3], "x": 3, "y": 0},
+ {"label": "4", "matrix": [0, 4], "x": 4, "y": 0},
+ {"label": "5", "matrix": [0, 5], "x": 5, "y": 0},
+ {"label": "6", "matrix": [0, 6], "x": 6, "y": 0},
+ {"label": "7", "matrix": [0, 7], "x": 7, "y": 0},
+ {"label": "8", "matrix": [0, 8], "x": 8, "y": 0},
+ {"label": "9", "matrix": [0, 9], "x": 9, "y": 0},
+ {"label": "0", "matrix": [0, 10], "x": 10, "y": 0},
+ {"label": "-", "matrix": [0, 11], "x": 11, "y": 0},
+ {"label": "=", "matrix": [0, 12], "x": 12, "y": 0},
+ {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0},
+ {"label": "Delete", "matrix": [0, 14], "x": 14, "y": 0},
+ {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+ {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
+ {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
+ {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
+ {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
+ {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
+ {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
+ {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
+ {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
+ {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
+ {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
+ {"label": "[", "matrix": [1, 11], "x": 11.5, "y": 1},
+ {"label": "]", "matrix": [1, 12], "x": 12.5, "y": 1},
+ {"label": "\\", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
+ {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
+ {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
+ {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
+ {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
+ {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
+ {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
+ {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
+ {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
+ {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
+ {"label": ";", "matrix": [2, 10], "x": 10.75, "y": 2},
+ {"label": "'", "matrix": [2, 11], "x": 11.75, "y": 2},
+ {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
+ {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
+ {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
+ {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
+ {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
+ {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
+ {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
+ {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
+ {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
+ {"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3},
+ {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3},
+ {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3},
+ {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
+ {"label": "Fn", "matrix": [3, 14], "x": 14, "y": 3},
+ {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
+ {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
+ {"label": "Space", "matrix": [4, 3], "x": 4, "y": 4, "w": 7},
+ {"label": "Alt", "matrix": [5, 11], "x": 11, "y": 4, "w": 1.5},
+ {"label": "Ctrl", "matrix": [5, 13], "x": 13.5, "y": 4, "w": 1.5}
+ ]
+ },
+ "LAYOUT_60_hhkb": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+ {"label": "1", "matrix": [0, 1], "x": 1, "y": 0},
+ {"label": "2", "matrix": [0, 2], "x": 2, "y": 0},
+ {"label": "3", "matrix": [0, 3], "x": 3, "y": 0},
+ {"label": "4", "matrix": [0, 4], "x": 4, "y": 0},
+ {"label": "5", "matrix": [0, 5], "x": 5, "y": 0},
+ {"label": "6", "matrix": [0, 6], "x": 6, "y": 0},
+ {"label": "7", "matrix": [0, 7], "x": 7, "y": 0},
+ {"label": "8", "matrix": [0, 8], "x": 8, "y": 0},
+ {"label": "9", "matrix": [0, 9], "x": 9, "y": 0},
+ {"label": "0", "matrix": [0, 10], "x": 10, "y": 0},
+ {"label": "-", "matrix": [0, 11], "x": 11, "y": 0},
+ {"label": "=", "matrix": [0, 12], "x": 12, "y": 0},
+ {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0},
+ {"label": "Delete", "matrix": [0, 14], "x": 14, "y": 0},
+ {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+ {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
+ {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
+ {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
+ {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
+ {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
+ {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
+ {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
+ {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
+ {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
+ {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
+ {"label": "[", "matrix": [1, 11], "x": 11.5, "y": 1},
+ {"label": "]", "matrix": [1, 12], "x": 12.5, "y": 1},
+ {"label": "\\", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
+ {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
+ {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
+ {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
+ {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
+ {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
+ {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
+ {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
+ {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
+ {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
+ {"label": ";", "matrix": [2, 10], "x": 10.75, "y": 2},
+ {"label": "'", "matrix": [2, 11], "x": 11.75, "y": 2},
+ {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
+ {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
+ {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
+ {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
+ {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
+ {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
+ {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
+ {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
+ {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
+ {"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3},
+ {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3},
+ {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3},
+ {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
+ {"label": "Fn", "matrix": [3, 14], "x": 14, "y": 3},
+ {"label": "GUI", "matrix": [4, 1], "x": 1.5, "y": 4},
+ {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
+ {"label": "Space", "matrix": [4, 3], "x": 4, "y": 4, "w": 7},
+ {"label": "Alt", "matrix": [5, 11], "x": 11, "y": 4, "w": 1.5},
+ {"label": "GUI", "matrix": [5, 12], "x": 12.5, "y": 4}
+ ]
+ },
+ "LAYOUT_60_iso": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+ {"label": "1", "matrix": [0, 1], "x": 1, "y": 0},
+ {"label": "2", "matrix": [0, 2], "x": 2, "y": 0},
+ {"label": "3", "matrix": [0, 3], "x": 3, "y": 0},
+ {"label": "4", "matrix": [0, 4], "x": 4, "y": 0},
+ {"label": "5", "matrix": [0, 5], "x": 5, "y": 0},
+ {"label": "6", "matrix": [0, 6], "x": 6, "y": 0},
+ {"label": "7", "matrix": [0, 7], "x": 7, "y": 0},
+ {"label": "8", "matrix": [0, 8], "x": 8, "y": 0},
+ {"label": "9", "matrix": [0, 9], "x": 9, "y": 0},
+ {"label": "0", "matrix": [0, 10], "x": 10, "y": 0},
+ {"label": "-", "matrix": [0, 11], "x": 11, "y": 0},
+ {"label": "=", "matrix": [0, 12], "x": 12, "y": 0},
+ {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2},
+ {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+ {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
+ {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
+ {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
+ {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
+ {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
+ {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
+ {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
+ {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
+ {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
+ {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
+ {"label": "[", "matrix": [1, 11], "x": 11.5, "y": 1},
+ {"label": "]", "matrix": [1, 12], "x": 12.5, "y": 1},
+ {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
+ {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
+ {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
+ {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
+ {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
+ {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
+ {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
+ {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
+ {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
+ {"label": ";", "matrix": [2, 10], "x": 10.75, "y": 2},
+ {"label": "'", "matrix": [2, 11], "x": 11.75, "y": 2},
+ {"label": "#", "matrix": [2, 12], "x": 12.75, "y": 2},
+ {"label": "Enter", "matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
+ {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
+ {"label": "\\", "matrix": [3, 1], "x": 1.25, "y": 3},
+ {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
+ {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
+ {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
+ {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
+ {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
+ {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
+ {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
+ {"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3},
+ {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3},
+ {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3},
+ {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75},
+ {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
+ {"label": "GUI", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
+ {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
+ {"label": "Space", "matrix": [4, 3], "x": 3.75, "y": 4, "w": 6.25},
+ {"label": "Alt", "matrix": [5, 10], "x": 10, "y": 4, "w": 1.25},
+ {"label": "GUI", "matrix": [5, 11], "x": 11.25, "y": 4, "w": 1.25},
+ {"label": "Menu", "matrix": [5, 12], "x": 12.5, "y": 4, "w": 1.25},
+ {"label": "Ctrl", "matrix": [5, 13], "x": 13.75, "y": 4, "w": 1.25}
+ ]
+ },
+ "LAYOUT_60_iso_split_bs_rshift": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+ {"label": "1", "matrix": [0, 1], "x": 1, "y": 0},
+ {"label": "2", "matrix": [0, 2], "x": 2, "y": 0},
+ {"label": "3", "matrix": [0, 3], "x": 3, "y": 0},
+ {"label": "4", "matrix": [0, 4], "x": 4, "y": 0},
+ {"label": "5", "matrix": [0, 5], "x": 5, "y": 0},
+ {"label": "6", "matrix": [0, 6], "x": 6, "y": 0},
+ {"label": "7", "matrix": [0, 7], "x": 7, "y": 0},
+ {"label": "8", "matrix": [0, 8], "x": 8, "y": 0},
+ {"label": "9", "matrix": [0, 9], "x": 9, "y": 0},
+ {"label": "0", "matrix": [0, 10], "x": 10, "y": 0},
+ {"label": "-", "matrix": [0, 11], "x": 11, "y": 0},
+ {"label": "=", "matrix": [0, 12], "x": 12, "y": 0},
+ {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0},
+ {"label": "Delete", "matrix": [0, 14], "x": 14, "y": 0},
+ {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+ {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
+ {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
+ {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
+ {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
+ {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
+ {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
+ {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
+ {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
+ {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
+ {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
+ {"label": "[", "matrix": [1, 11], "x": 11.5, "y": 1},
+ {"label": "]", "matrix": [1, 12], "x": 12.5, "y": 1},
+ {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
+ {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
+ {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
+ {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
+ {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
+ {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
+ {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
+ {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
+ {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
+ {"label": ";", "matrix": [2, 10], "x": 10.75, "y": 2},
+ {"label": "'", "matrix": [2, 11], "x": 11.75, "y": 2},
+ {"label": "#", "matrix": [2, 12], "x": 12.75, "y": 2},
+ {"label": "Enter", "matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
+ {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
+ {"label": "\\", "matrix": [3, 1], "x": 1.25, "y": 3},
+ {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
+ {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
+ {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
+ {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
+ {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
+ {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
+ {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
+ {"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3},
+ {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3},
+ {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3},
+ {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
+ {"label": "Fn", "matrix": [3, 14], "x": 14, "y": 3},
+ {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
+ {"label": "GUI", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
+ {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
+ {"label": "Space", "matrix": [4, 3], "x": 3.75, "y": 4, "w": 6.25},
+ {"label": "Alt", "matrix": [5, 10], "x": 10, "y": 4, "w": 1.25},
+ {"label": "GUI", "matrix": [5, 11], "x": 11.25, "y": 4, "w": 1.25},
+ {"label": "Menu", "matrix": [5, 12], "x": 12.5, "y": 4, "w": 1.25},
+ {"label": "Ctrl", "matrix": [5, 13], "x": 13.75, "y": 4, "w": 1.25}
+ ]
+ },
+ "LAYOUT_60_iso_tsangan": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+ {"label": "1", "matrix": [0, 1], "x": 1, "y": 0},
+ {"label": "2", "matrix": [0, 2], "x": 2, "y": 0},
+ {"label": "3", "matrix": [0, 3], "x": 3, "y": 0},
+ {"label": "4", "matrix": [0, 4], "x": 4, "y": 0},
+ {"label": "5", "matrix": [0, 5], "x": 5, "y": 0},
+ {"label": "6", "matrix": [0, 6], "x": 6, "y": 0},
+ {"label": "7", "matrix": [0, 7], "x": 7, "y": 0},
+ {"label": "8", "matrix": [0, 8], "x": 8, "y": 0},
+ {"label": "9", "matrix": [0, 9], "x": 9, "y": 0},
+ {"label": "0", "matrix": [0, 10], "x": 10, "y": 0},
+ {"label": "-", "matrix": [0, 11], "x": 11, "y": 0},
+ {"label": "=", "matrix": [0, 12], "x": 12, "y": 0},
+ {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2},
+ {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+ {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
+ {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
+ {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
+ {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
+ {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
+ {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
+ {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
+ {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
+ {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
+ {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
+ {"label": "[", "matrix": [1, 11], "x": 11.5, "y": 1},
+ {"label": "]", "matrix": [1, 12], "x": 12.5, "y": 1},
+ {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
+ {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
+ {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
+ {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
+ {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
+ {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
+ {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
+ {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
+ {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
+ {"label": ";", "matrix": [2, 10], "x": 10.75, "y": 2},
+ {"label": "'", "matrix": [2, 11], "x": 11.75, "y": 2},
+ {"label": "#", "matrix": [2, 12], "x": 12.75, "y": 2},
+ {"label": "Enter", "matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
+ {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
+ {"label": "\\", "matrix": [3, 1], "x": 1.25, "y": 3},
+ {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
+ {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
+ {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
+ {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
+ {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
+ {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
+ {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
+ {"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3},
+ {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3},
+ {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3},
+ {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75},
+ {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
+ {"label": "GUI", "matrix": [4, 1], "x": 1.5, "y": 4},
+ {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
+ {"label": "Space", "matrix": [4, 3], "x": 4, "y": 4, "w": 7},
+ {"label": "Alt", "matrix": [5, 11], "x": 11, "y": 4, "w": 1.5},
+ {"label": "GUI", "matrix": [5, 12], "x": 12.5, "y": 4},
+ {"label": "Ctrl", "matrix": [5, 13], "x": 13.5, "y": 4, "w": 1.5}
+ ]
+ },
+ "LAYOUT_60_iso_tsangan_split_bs_rshift": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+ {"label": "1", "matrix": [0, 1], "x": 1, "y": 0},
+ {"label": "2", "matrix": [0, 2], "x": 2, "y": 0},
+ {"label": "3", "matrix": [0, 3], "x": 3, "y": 0},
+ {"label": "4", "matrix": [0, 4], "x": 4, "y": 0},
+ {"label": "5", "matrix": [0, 5], "x": 5, "y": 0},
+ {"label": "6", "matrix": [0, 6], "x": 6, "y": 0},
+ {"label": "7", "matrix": [0, 7], "x": 7, "y": 0},
+ {"label": "8", "matrix": [0, 8], "x": 8, "y": 0},
+ {"label": "9", "matrix": [0, 9], "x": 9, "y": 0},
+ {"label": "0", "matrix": [0, 10], "x": 10, "y": 0},
+ {"label": "-", "matrix": [0, 11], "x": 11, "y": 0},
+ {"label": "=", "matrix": [0, 12], "x": 12, "y": 0},
+ {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0},
+ {"label": "Delete", "matrix": [0, 14], "x": 14, "y": 0},
+ {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+ {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
+ {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
+ {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
+ {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
+ {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
+ {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
+ {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
+ {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
+ {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
+ {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
+ {"label": "[", "matrix": [1, 11], "x": 11.5, "y": 1},
+ {"label": "]", "matrix": [1, 12], "x": 12.5, "y": 1},
+ {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
+ {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
+ {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
+ {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
+ {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
+ {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
+ {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
+ {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
+ {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
+ {"label": ";", "matrix": [2, 10], "x": 10.75, "y": 2},
+ {"label": "'", "matrix": [2, 11], "x": 11.75, "y": 2},
+ {"label": "#", "matrix": [2, 12], "x": 12.75, "y": 2},
+ {"label": "Enter", "matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
+ {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
+ {"label": "\\", "matrix": [3, 1], "x": 1.25, "y": 3},
+ {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
+ {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
+ {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
+ {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
+ {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
+ {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
+ {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
+ {"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3},
+ {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3},
+ {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3},
+ {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
+ {"label": "Fn", "matrix": [3, 14], "x": 14, "y": 3},
+ {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
+ {"label": "GUI", "matrix": [4, 1], "x": 1.5, "y": 4},
+ {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
+ {"label": "Space", "matrix": [4, 3], "x": 4, "y": 4, "w": 7},
+ {"label": "Alt", "matrix": [5, 11], "x": 11, "y": 4, "w": 1.5},
+ {"label": "GUI", "matrix": [5, 12], "x": 12.5, "y": 4},
+ {"label": "Ctrl", "matrix": [5, 13], "x": 13.5, "y": 4, "w": 1.5}
+ ]
+ },
+ "LAYOUT_60_iso_wkl": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+ {"label": "1", "matrix": [0, 1], "x": 1, "y": 0},
+ {"label": "2", "matrix": [0, 2], "x": 2, "y": 0},
+ {"label": "3", "matrix": [0, 3], "x": 3, "y": 0},
+ {"label": "4", "matrix": [0, 4], "x": 4, "y": 0},
+ {"label": "5", "matrix": [0, 5], "x": 5, "y": 0},
+ {"label": "6", "matrix": [0, 6], "x": 6, "y": 0},
+ {"label": "7", "matrix": [0, 7], "x": 7, "y": 0},
+ {"label": "8", "matrix": [0, 8], "x": 8, "y": 0},
+ {"label": "9", "matrix": [0, 9], "x": 9, "y": 0},
+ {"label": "0", "matrix": [0, 10], "x": 10, "y": 0},
+ {"label": "-", "matrix": [0, 11], "x": 11, "y": 0},
+ {"label": "=", "matrix": [0, 12], "x": 12, "y": 0},
+ {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2},
+ {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+ {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
+ {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
+ {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
+ {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
+ {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
+ {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
+ {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
+ {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
+ {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
+ {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
+ {"label": "[", "matrix": [1, 11], "x": 11.5, "y": 1},
+ {"label": "]", "matrix": [1, 12], "x": 12.5, "y": 1},
+ {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
+ {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
+ {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
+ {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
+ {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
+ {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
+ {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
+ {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
+ {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
+ {"label": ";", "matrix": [2, 10], "x": 10.75, "y": 2},
+ {"label": "'", "matrix": [2, 11], "x": 11.75, "y": 2},
+ {"label": "#", "matrix": [2, 12], "x": 12.75, "y": 2},
+ {"label": "Enter", "matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
+ {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
+ {"label": "\\", "matrix": [3, 1], "x": 1.25, "y": 3},
+ {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
+ {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
+ {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
+ {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
+ {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
+ {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
+ {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
+ {"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3},
+ {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3},
+ {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3},
+ {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75},
+ {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
+ {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
+ {"label": "Space", "matrix": [4, 3], "x": 4, "y": 4, "w": 7},
+ {"label": "Alt", "matrix": [5, 11], "x": 11, "y": 4, "w": 1.5},
+ {"label": "Ctrl", "matrix": [5, 13], "x": 13.5, "y": 4, "w": 1.5}
+ ]
+ },
+ "LAYOUT_60_iso_wkl_split_bs_rshift": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+ {"label": "1", "matrix": [0, 1], "x": 1, "y": 0},
+ {"label": "2", "matrix": [0, 2], "x": 2, "y": 0},
+ {"label": "3", "matrix": [0, 3], "x": 3, "y": 0},
+ {"label": "4", "matrix": [0, 4], "x": 4, "y": 0},
+ {"label": "5", "matrix": [0, 5], "x": 5, "y": 0},
+ {"label": "6", "matrix": [0, 6], "x": 6, "y": 0},
+ {"label": "7", "matrix": [0, 7], "x": 7, "y": 0},
+ {"label": "8", "matrix": [0, 8], "x": 8, "y": 0},
+ {"label": "9", "matrix": [0, 9], "x": 9, "y": 0},
+ {"label": "0", "matrix": [0, 10], "x": 10, "y": 0},
+ {"label": "-", "matrix": [0, 11], "x": 11, "y": 0},
+ {"label": "=", "matrix": [0, 12], "x": 12, "y": 0},
+ {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0},
+ {"label": "Delete", "matrix": [0, 14], "x": 14, "y": 0},
+ {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+ {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
+ {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
+ {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
+ {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
+ {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
+ {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
+ {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
+ {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
+ {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
+ {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
+ {"label": "[", "matrix": [1, 11], "x": 11.5, "y": 1},
+ {"label": "]", "matrix": [1, 12], "x": 12.5, "y": 1},
+ {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
+ {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
+ {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
+ {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
+ {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
+ {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
+ {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
+ {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
+ {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
+ {"label": ";", "matrix": [2, 10], "x": 10.75, "y": 2},
+ {"label": "'", "matrix": [2, 11], "x": 11.75, "y": 2},
+ {"label": "#", "matrix": [2, 12], "x": 12.75, "y": 2},
+ {"label": "Enter", "matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
+ {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
+ {"label": "\\", "matrix": [3, 1], "x": 1.25, "y": 3},
+ {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
+ {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
+ {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
+ {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
+ {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
+ {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
+ {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
+ {"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3},
+ {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3},
+ {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3},
+ {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
+ {"label": "Fn", "matrix": [3, 14], "x": 14, "y": 3},
+ {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
+ {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
+ {"label": "Space", "matrix": [4, 3], "x": 4, "y": 4, "w": 7},
+ {"label": "Alt", "matrix": [5, 11], "x": 11, "y": 4, "w": 1.5},
+ {"label": "Ctrl", "matrix": [5, 13], "x": 13.5, "y": 4, "w": 1.5}
+ ]
+ },
+ "LAYOUT_60_tsangan_hhkb": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+ {"label": "1", "matrix": [0, 1], "x": 1, "y": 0},
+ {"label": "2", "matrix": [0, 2], "x": 2, "y": 0},
+ {"label": "3", "matrix": [0, 3], "x": 3, "y": 0},
+ {"label": "4", "matrix": [0, 4], "x": 4, "y": 0},
+ {"label": "5", "matrix": [0, 5], "x": 5, "y": 0},
+ {"label": "6", "matrix": [0, 6], "x": 6, "y": 0},
+ {"label": "7", "matrix": [0, 7], "x": 7, "y": 0},
+ {"label": "8", "matrix": [0, 8], "x": 8, "y": 0},
+ {"label": "9", "matrix": [0, 9], "x": 9, "y": 0},
+ {"label": "0", "matrix": [0, 10], "x": 10, "y": 0},
+ {"label": "-", "matrix": [0, 11], "x": 11, "y": 0},
+ {"label": "=", "matrix": [0, 12], "x": 12, "y": 0},
+ {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0},
+ {"label": "Delete", "matrix": [0, 14], "x": 14, "y": 0},
+ {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+ {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
+ {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
+ {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
+ {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
+ {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
+ {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
+ {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
+ {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
+ {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
+ {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
+ {"label": "[", "matrix": [1, 11], "x": 11.5, "y": 1},
+ {"label": "]", "matrix": [1, 12], "x": 12.5, "y": 1},
+ {"label": "\\", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
+ {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
+ {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
+ {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
+ {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
+ {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
+ {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
+ {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
+ {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
+ {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
+ {"label": ";", "matrix": [2, 10], "x": 10.75, "y": 2},
+ {"label": "'", "matrix": [2, 11], "x": 11.75, "y": 2},
+ {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
+ {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
+ {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
+ {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
+ {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
+ {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
+ {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
+ {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
+ {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
+ {"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3},
+ {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3},
+ {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3},
+ {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
+ {"label": "Fn", "matrix": [3, 14], "x": 14, "y": 3},
+ {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
+ {"label": "GUI", "matrix": [4, 1], "x": 1.5, "y": 4},
+ {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
+ {"label": "Space", "matrix": [4, 3], "x": 4, "y": 4, "w": 7},
+ {"label": "Alt", "matrix": [5, 11], "x": 11, "y": 4, "w": 1.5},
+ {"label": "GUI", "matrix": [5, 12], "x": 12.5, "y": 4},
+ {"label": "Ctrl", "matrix": [5, 13], "x": 13.5, "y": 4, "w": 1.5}
+ ]
+ },
+ "LAYOUT_all": {
+ "layout": [
+ {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
+ {"label": "1", "matrix": [0, 1], "x": 1, "y": 0},
+ {"label": "2", "matrix": [0, 2], "x": 2, "y": 0},
+ {"label": "3", "matrix": [0, 3], "x": 3, "y": 0},
+ {"label": "4", "matrix": [0, 4], "x": 4, "y": 0},
+ {"label": "5", "matrix": [0, 5], "x": 5, "y": 0},
+ {"label": "6", "matrix": [0, 6], "x": 6, "y": 0},
+ {"label": "7", "matrix": [0, 7], "x": 7, "y": 0},
+ {"label": "8", "matrix": [0, 8], "x": 8, "y": 0},
+ {"label": "9", "matrix": [0, 9], "x": 9, "y": 0},
+ {"label": "0", "matrix": [0, 10], "x": 10, "y": 0},
+ {"label": "-", "matrix": [0, 11], "x": 11, "y": 0},
+ {"label": "=", "matrix": [0, 12], "x": 12, "y": 0},
+ {"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0},
+ {"label": "Delete", "matrix": [0, 14], "x": 14, "y": 0},
+ {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+ {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
+ {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
+ {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
+ {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
+ {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
+ {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
+ {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
+ {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
+ {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
+ {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
+ {"label": "[", "matrix": [1, 11], "x": 11.5, "y": 1},
+ {"label": "]", "matrix": [1, 12], "x": 12.5, "y": 1},
+ {"label": "\\", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
+ {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
+ {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
+ {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
+ {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
+ {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
+ {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
+ {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
+ {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
+ {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
+ {"label": ";", "matrix": [2, 10], "x": 10.75, "y": 2},
+ {"label": "'", "matrix": [2, 11], "x": 11.75, "y": 2},
+ {"label": "#", "matrix": [2, 12], "x": 12.75, "y": 2},
+ {"label": "Enter", "matrix": [2, 13], "x": 13.75, "y": 2, "w": 1.25},
+ {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
+ {"label": "\\", "matrix": [3, 1], "x": 1.25, "y": 3},
+ {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
+ {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
+ {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
+ {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
+ {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
+ {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
+ {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
+ {"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3},
+ {"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3},
+ {"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3},
+ {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
+ {"label": "Fn", "matrix": [3, 14], "x": 14, "y": 3},
+ {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
+ {"label": "GUI", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
+ {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
+ {"label": "Space", "matrix": [4, 3], "x": 3.75, "y": 4, "w": 6.25},
+ {"label": "Alt", "matrix": [5, 10], "x": 10, "y": 4, "w": 1.25},
+ {"label": "GUI", "matrix": [5, 11], "x": 11.25, "y": 4, "w": 1.25},
+ {"label": "Menu", "matrix": [5, 12], "x": 12.5, "y": 4, "w": 1.25},
+ {"label": "Ctrl", "matrix": [5, 13], "x": 13.75, "y": 4, "w": 1.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/mmkeyboard/class60/soldered/keymaps/default/keymap.c b/keyboards/mmkeyboard/class60/soldered/keymaps/default/keymap.c
new file mode 100644
index 00000000000..29174fefa95
--- /dev/null
+++ b/keyboards/mmkeyboard/class60/soldered/keymaps/default/keymap.c
@@ -0,0 +1,29 @@
+// Copyright 2023 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _BASE,
+ _FN1,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_BASE] = LAYOUT_all(
+ 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, KC_DEL,
+ 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUBS, KC_ENT,
+ 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_HOME,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RALT, MO(1), KC_RCTL
+ ),
+
+ [_FN1] = LAYOUT_all(
+ 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, KC_TRNS,
+ KC_TRNS, AU_ON, AU_OFF, CK_RST, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_UP, KC_TRNS, KC_TRNS,
+ KC_TRNS, CK_ON, CK_OFF, CK_UP, CK_DOWN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_LEFT, KC_RGHT, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, HF_ON, HF_OFF, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_DOWN, KC_TRNS, KC_END,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT
+ ),
+
+};
diff --git a/keyboards/mmkeyboard/class60/soldered/keymaps/via/keymap.c b/keyboards/mmkeyboard/class60/soldered/keymaps/via/keymap.c
new file mode 100644
index 00000000000..29174fefa95
--- /dev/null
+++ b/keyboards/mmkeyboard/class60/soldered/keymaps/via/keymap.c
@@ -0,0 +1,29 @@
+// Copyright 2023 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _BASE,
+ _FN1,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_BASE] = LAYOUT_all(
+ 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, KC_DEL,
+ 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUBS, KC_ENT,
+ 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_HOME,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RALT, MO(1), KC_RCTL
+ ),
+
+ [_FN1] = LAYOUT_all(
+ 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, KC_TRNS,
+ KC_TRNS, AU_ON, AU_OFF, CK_RST, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_UP, KC_TRNS, KC_TRNS,
+ KC_TRNS, CK_ON, CK_OFF, CK_UP, CK_DOWN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_LEFT, KC_RGHT, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, HF_ON, HF_OFF, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_DOWN, KC_TRNS, KC_END,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT
+ ),
+
+};
diff --git a/keyboards/mmkeyboard/class60/soldered/keymaps/via/rules.mk b/keyboards/mmkeyboard/class60/soldered/keymaps/via/rules.mk
new file mode 100644
index 00000000000..a6c50b73109
--- /dev/null
+++ b/keyboards/mmkeyboard/class60/soldered/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes # Enable support for VIA
diff --git a/keyboards/mmkeyboard/class60/soldered/mcuconf.h b/keyboards/mmkeyboard/class60/soldered/mcuconf.h
new file mode 100644
index 00000000000..c2b46ff8156
--- /dev/null
+++ b/keyboards/mmkeyboard/class60/soldered/mcuconf.h
@@ -0,0 +1,24 @@
+/* Copyright 2020 Nick Brassel (tzarc)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#pragma once
+
+#include_next
+
+#undef STM32_PWM_USE_TIM3
+#define STM32_PWM_USE_TIM3 TRUE
+
+#undef STM32_GPT_USE_TIM4
+#define STM32_GPT_USE_TIM4 TRUE
diff --git a/keyboards/mmkeyboard/class60/soldered/readme.md b/keyboards/mmkeyboard/class60/soldered/readme.md
new file mode 100644
index 00000000000..f403fc81976
--- /dev/null
+++ b/keyboards/mmkeyboard/class60/soldered/readme.md
@@ -0,0 +1,27 @@
+# Class60
+
+![Class60 E-Retro White](https://i.imgur.com/9T0KbBHh.jpeg)
+
+The Class60 is a Leaf-spring/Top dual mounting 60% Keyboard that includes a buzzer and solenoid.
+
+* Keyboard Maintainer: [lexbrugman](https://github.com/lexbrugman)
+* Hardware Supported: Class60 soldered PCB
+* Hardware Availability: https://www.mmkeyboard.com/products/mm-class60-retro-custom-mechanical-keyboard
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mmkeyboard/class60/soldered:default
+
+Flashing example for this keyboard:
+
+ make mmkeyboard/class60/soldered:default:flash
+
+See 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).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/mmkeyboard/class60/soldered/rules.mk b/keyboards/mmkeyboard/class60/soldered/rules.mk
new file mode 100644
index 00000000000..3fd833e3a3d
--- /dev/null
+++ b/keyboards/mmkeyboard/class60/soldered/rules.mk
@@ -0,0 +1,2 @@
+HAPTIC_DRIVER = solenoid
+AUDIO_DRIVER = pwm_software
diff --git a/keyboards/mmkeyboard/class60/soldered/soldered.c b/keyboards/mmkeyboard/class60/soldered/soldered.c
new file mode 100644
index 00000000000..2ed4ffaf4f1
--- /dev/null
+++ b/keyboards/mmkeyboard/class60/soldered/soldered.c
@@ -0,0 +1,42 @@
+// Copyright 2023 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "quantum.h"
+
+#ifdef AUDIO_ENABLE
+float caps_on[][2] = SONG(CAPS_LOCK_ON_SOUND);
+float caps_off[][2] = SONG(CAPS_LOCK_OFF_SOUND);
+
+float num_on[][2] = SONG(NUM_LOCK_ON_SOUND);
+float num_off[][2] = SONG(NUM_LOCK_OFF_SOUND);
+
+float scroll_on[][2] = SONG(SCROLL_LOCK_ON_SOUND);
+float scroll_off[][2] = SONG(SCROLL_LOCK_OFF_SOUND);
+
+bool led_update_kb(led_t led_state) {
+ bool res = led_update_user(led_state);
+ if (res) {
+ led_update_ports(led_state);
+
+ static uint8_t caps_state = 0;
+ if (caps_state != led_state.caps_lock) {
+ led_state.caps_lock ? PLAY_SONG(caps_on) : PLAY_SONG(caps_off);
+ caps_state = led_state.caps_lock;
+ }
+
+ static uint8_t num_state = 0;
+ if (num_state != led_state.num_lock) {
+ led_state.num_lock ? PLAY_SONG(num_on) : PLAY_SONG(num_off);
+ num_state = led_state.num_lock;
+ }
+
+ static uint8_t scroll_state = 0;
+ if (scroll_state != led_state.scroll_lock) {
+ led_state.scroll_lock ? PLAY_SONG(scroll_on) : PLAY_SONG(scroll_off);
+ scroll_state = led_state.scroll_lock;
+ }
+ }
+
+ return res;
+}
+#endif
diff --git a/keyboards/mwstudio/mw75/keyboard.json b/keyboards/mwstudio/mw75/keyboard.json
index d19d6b49ba1..d9e540bca44 100644
--- a/keyboards/mwstudio/mw75/keyboard.json
+++ b/keyboards/mwstudio/mw75/keyboard.json
@@ -38,8 +38,6 @@
"hue_wave": true,
"pixel_fractal": true,
"pixel_rain": true,
- "typing_heatmap": true,
- "digital_rain": true,
"solid_reactive_simple": true,
"solid_reactive": true,
"solid_reactive_wide": true,
diff --git a/keyboards/mwstudio/mw75/keymaps/default/keymap.c b/keyboards/mwstudio/mw75/keymaps/default/keymap.c
index 12ac4ce74a4..1a7b9bf0677 100644
--- a/keyboards/mwstudio/mw75/keymaps/default/keymap.c
+++ b/keyboards/mwstudio/mw75/keymaps/default/keymap.c
@@ -36,23 +36,4 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, RGB_SAD,
_______, _______, _______, _______, RGB_MOD, _______, RGB_SPD, RGB_VAD, RGB_SPI
),
-
- [2] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______
- ),
-
- [3] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______
- ),
-
};
diff --git a/keyboards/mwstudio/mw75/keymaps/via/keymap.c b/keyboards/mwstudio/mw75/keymaps/via/keymap.c
index 12ac4ce74a4..1a7b9bf0677 100644
--- a/keyboards/mwstudio/mw75/keymaps/via/keymap.c
+++ b/keyboards/mwstudio/mw75/keymaps/via/keymap.c
@@ -36,23 +36,4 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, RGB_SAD,
_______, _______, _______, _______, RGB_MOD, _______, RGB_SPD, RGB_VAD, RGB_SPI
),
-
- [2] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______
- ),
-
- [3] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______
- ),
-
};
diff --git a/keyboards/novelkeys/skelett40/keyboard.json b/keyboards/novelkeys/skelett40/keyboard.json
new file mode 100755
index 00000000000..c8810bc5511
--- /dev/null
+++ b/keyboards/novelkeys/skelett40/keyboard.json
@@ -0,0 +1,72 @@
+{
+ "manufacturer": "Yiancar-Designs",
+ "keyboard_name": "Skelett 40",
+ "maintainer": "Yiancar-Designs",
+ "bootloader": "stm32-dfu",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "matrix_pins": {
+ "cols": ["A1", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "B2", "B10", "B11", "B12"],
+ "rows": ["A2", "B9", "B8", "B5"]
+ },
+ "processor": "STM32F072",
+ "url": "https://yiancar-designs.com",
+ "usb": {
+ "device_version": "0.0.1",
+ "pid": "0x7337",
+ "vid": "0x8968"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"matrix": [0, 0], "x": 0, "y": 0},
+ {"matrix": [0, 1], "x": 1, "y": 0},
+ {"matrix": [0, 2], "x": 2, "y": 0},
+ {"matrix": [0, 3], "x": 3, "y": 0},
+ {"matrix": [0, 4], "x": 4, "y": 0},
+ {"matrix": [0, 5], "x": 5, "y": 0},
+ {"matrix": [0, 6], "x": 6, "y": 0},
+ {"matrix": [0, 7], "x": 7, "y": 0},
+ {"matrix": [0, 8], "x": 8, "y": 0},
+ {"matrix": [0, 9], "x": 9, "y": 0},
+ {"matrix": [0, 10], "x": 10, "y": 0},
+ {"matrix": [0, 11], "x": 11, "y": 0},
+ {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.25},
+ {"matrix": [1, 1], "x": 1.25, "y": 1},
+ {"matrix": [1, 2], "x": 2.25, "y": 1},
+ {"matrix": [1, 3], "x": 3.25, "y": 1},
+ {"matrix": [1, 4], "x": 4.25, "y": 1},
+ {"matrix": [1, 5], "x": 5.25, "y": 1},
+ {"matrix": [1, 6], "x": 6.25, "y": 1},
+ {"matrix": [1, 7], "x": 7.25, "y": 1},
+ {"matrix": [1, 8], "x": 8.25, "y": 1},
+ {"matrix": [1, 9], "x": 9.25, "y": 1},
+ {"matrix": [1, 11], "x": 10.25, "y": 1, "w": 1.75},
+ {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
+ {"matrix": [2, 1], "x": 1.75, "y": 2},
+ {"matrix": [2, 2], "x": 2.75, "y": 2},
+ {"matrix": [2, 3], "x": 3.75, "y": 2},
+ {"matrix": [2, 4], "x": 4.75, "y": 2},
+ {"matrix": [2, 5], "x": 5.75, "y": 2},
+ {"matrix": [2, 6], "x": 6.75, "y": 2},
+ {"matrix": [2, 7], "x": 7.75, "y": 2},
+ {"matrix": [2, 8], "x": 8.75, "y": 2},
+ {"matrix": [2, 9], "x": 9.75, "y": 2, "w": 1.25},
+ {"matrix": [2, 11], "x": 11, "y": 2},
+ {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
+ {"matrix": [3, 1], "x": 1.25, "y": 3},
+ {"matrix": [3, 2], "x": 2.25, "y": 3, "w": 1.25},
+ {"matrix": [3, 3], "x": 3.5, "y": 3, "w": 2.25},
+ {"matrix": [3, 6], "x": 5.75, "y": 3, "w": 2.75},
+ {"matrix": [3, 9], "x": 8.5, "y": 3, "w": 1.25},
+ {"matrix": [3, 10], "x": 9.75, "y": 3},
+ {"matrix": [3, 11], "x": 10.75, "y": 3, "w": 1.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/novelkeys/skelett40/keymaps/default/keymap.c b/keyboards/novelkeys/skelett40/keymaps/default/keymap.c
new file mode 100644
index 00000000000..8bbb00ae6a7
--- /dev/null
+++ b/keyboards/novelkeys/skelett40/keymaps/default/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2024 Yiancar-Designs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT( /* Base */
+ QK_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), MO(2), KC_APP, KC_RCTL),
+
+[1] = LAYOUT( /* FN1 */
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ _______, KC_LBRC, KC_RBRC, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_SCLN, KC_QUOT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BSLS,
+ _______, _______, _______, _______, _______, _______, _______, _______),
+
+[2] = LAYOUT( /* FN2 */
+ 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_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_VOLU, KC_VOLD, KC_MUTE, _______, _______, _______, _______, _______)
+};
diff --git a/keyboards/novelkeys/skelett40/keymaps/via/keymap.c b/keyboards/novelkeys/skelett40/keymaps/via/keymap.c
new file mode 100644
index 00000000000..8bbb00ae6a7
--- /dev/null
+++ b/keyboards/novelkeys/skelett40/keymaps/via/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2024 Yiancar-Designs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT( /* Base */
+ QK_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), MO(2), KC_APP, KC_RCTL),
+
+[1] = LAYOUT( /* FN1 */
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ _______, KC_LBRC, KC_RBRC, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_SCLN, KC_QUOT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BSLS,
+ _______, _______, _______, _______, _______, _______, _______, _______),
+
+[2] = LAYOUT( /* FN2 */
+ 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_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_VOLU, KC_VOLD, KC_MUTE, _______, _______, _______, _______, _______)
+};
diff --git a/keyboards/novelkeys/skelett40/keymaps/via/rules.mk b/keyboards/novelkeys/skelett40/keymaps/via/rules.mk
new file mode 100755
index 00000000000..1e5b99807cb
--- /dev/null
+++ b/keyboards/novelkeys/skelett40/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/novelkeys/skelett40/readme.md b/keyboards/novelkeys/skelett40/readme.md
new file mode 100755
index 00000000000..baa70096161
--- /dev/null
+++ b/keyboards/novelkeys/skelett40/readme.md
@@ -0,0 +1,36 @@
+# Skelett 40
+
+This is a standard 40% layout PCB. It supports VIA.
+
+* Keyboard Maintainer: [Yiancar](http://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar)
+* Hardware Supported: A 40% keyboard with STM32F072CB
+* Hardware Availability: https://novelkeys.com/
+
+## Instructions
+
+### Build
+
+Make example for this keyboard (after setting up your build environment):
+
+ make novelkeys/skelett40:default
+
+Flashing example for this keyboard:
+
+ make novelkeys/skelett40:default:flash
+
+See 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).
+
+### Reset
+
+- Unplug
+- Hold Escape
+- Plug In
+- Unplug
+- Release Escape
+
+### Flash
+
+- Unplug
+- Hold Escape
+- Plug In
+- Flash using QMK Toolbox or CLI (`make novelkeys/skelett40::flash`)
diff --git a/keyboards/novelkeys/skelett40/rules.mk b/keyboards/novelkeys/skelett40/rules.mk
new file mode 100644
index 00000000000..0ab54aaaf71
--- /dev/null
+++ b/keyboards/novelkeys/skelett40/rules.mk
@@ -0,0 +1,2 @@
+# Wildcard to allow APM32 MCU
+DFU_SUFFIX_ARGS = -v FFFF -p FFFF
diff --git a/keyboards/novelkeys/skelett40/skelett40.c b/keyboards/novelkeys/skelett40/skelett40.c
new file mode 100755
index 00000000000..be62d034398
--- /dev/null
+++ b/keyboards/novelkeys/skelett40/skelett40.c
@@ -0,0 +1,26 @@
+/* Copyright 2024 Yiancar-Designs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#include "quantum.h"
+
+void led_init_ports(void) {
+ // Set our LED pins as open drain outputs
+ gpio_set_pin_output_open_drain(B6);
+}
+
+layer_state_t layer_state_set_kb(layer_state_t state) {
+ gpio_write_pin(B6, !layer_state_cmp(state, 1));
+ return layer_state_set_user(state);
+}
diff --git a/keyboards/pixelspace/capsule65i/keyboard.json b/keyboards/pixelspace/capsule65i/keyboard.json
index d08fd2e355e..f8c9dc9c1d1 100644
--- a/keyboards/pixelspace/capsule65i/keyboard.json
+++ b/keyboards/pixelspace/capsule65i/keyboard.json
@@ -10,8 +10,8 @@
},
"features": {
"bootmagic": true,
- "command": true,
- "console": true,
+ "command": false,
+ "console": false,
"extrakey": true,
"mousekey": true,
"nkro": false,
@@ -37,7 +37,6 @@
"knight": true,
"christmas": true,
"static_gradient": true,
- "rgb_test": true,
"alternating": true,
"twinkle": true
}
diff --git a/keyboards/rubi/keyboard.json b/keyboards/rubi/keyboard.json
index cb94b586156..aa58208219c 100644
--- a/keyboards/rubi/keyboard.json
+++ b/keyboards/rubi/keyboard.json
@@ -22,6 +22,9 @@
"resync": true
}
},
+ "build": {
+ "lto": true
+ },
"matrix_pins": {
"cols": ["B3", "B2", "B1", "F7"],
"rows": ["F0", "F1", "F4", "F5", "F6"]
diff --git a/keyboards/sofle/keymaps/rgb_default/config.h b/keyboards/sofle/keymaps/rgb_default/config.h
index 314322c9293..0929487978c 100644
--- a/keyboards/sofle/keymaps/rgb_default/config.h
+++ b/keyboards/sofle/keymaps/rgb_default/config.h
@@ -69,10 +69,11 @@
//#define RGBLIGHT_EFFECT_TWINKLE
#define RGBLIGHT_LED_COUNT 70
- //#define RGBLED_SPLIT
+ #undef RGBLED_SPLIT
#define RGBLED_SPLIT { 35, 35 } // haven't figured out how to use this yet
//#define RGBLIGHT_LED_COUNT 30
+ #undef RGBLIGHT_LIMIT_VAL
#define RGBLIGHT_LIMIT_VAL 120
#define RGBLIGHT_HUE_STEP 10
#define RGBLIGHT_SAT_STEP 17
diff --git a/keyboards/takashicompany/heavy_left/keyboard.json b/keyboards/takashicompany/heavy_left/keyboard.json
index e0c020d0fdf..3109e1ad83f 100644
--- a/keyboards/takashicompany/heavy_left/keyboard.json
+++ b/keyboards/takashicompany/heavy_left/keyboard.json
@@ -45,8 +45,7 @@
"diode_direction": "COL2ROW",
"split": {
"enabled": true,
- "soft_serial_pin": "D2",
- "main": "eeprom"
+ "soft_serial_pin": "D2"
},
"development_board": "promicro",
"layouts": {
diff --git a/keyboards/vertex/angler2/keyboard.json b/keyboards/vertex/angler2/keyboard.json
index 9b9d2266140..02541f6c866 100644
--- a/keyboards/vertex/angler2/keyboard.json
+++ b/keyboards/vertex/angler2/keyboard.json
@@ -10,8 +10,8 @@
},
"features": {
"bootmagic": true,
- "command": true,
- "console": true,
+ "command": false,
+ "console": false,
"extrakey": true,
"mousekey": true,
"nkro": false,
@@ -42,7 +42,6 @@
"knight": true,
"christmas": true,
"static_gradient": true,
- "rgb_test": true,
"alternating": true,
"twinkle": true
}
diff --git a/lib/python/qmk/flashers.py b/lib/python/qmk/flashers.py
index 9ecb5e4b9c8..7ee1bc8de73 100644
--- a/lib/python/qmk/flashers.py
+++ b/lib/python/qmk/flashers.py
@@ -206,6 +206,8 @@ def _flash_uf2(file):
def flasher(mcu, file):
+ # Avoid "expected string or bytes-like object, got 'WindowsPath" issues
+ file = file.as_posix()
bl, details = _find_bootloader()
# Add a small sleep to avoid race conditions
time.sleep(1)