summaryrefslogtreecommitdiffstats
path: root/keyboards
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards')
-rw-r--r--keyboards/cradio/config.h53
-rw-r--r--keyboards/cradio/cradio.c27
-rw-r--r--keyboards/cradio/cradio.h52
-rw-r--r--keyboards/cradio/info.json116
-rw-r--r--keyboards/cradio/rules.mk22
-rw-r--r--keyboards/drop/sense75/board.h8
-rw-r--r--keyboards/drop/sense75/config.h67
-rw-r--r--keyboards/drop/sense75/halconf.h7
-rw-r--r--keyboards/drop/sense75/info.json235
-rw-r--r--keyboards/drop/sense75/keymaps/default/keymap.c52
-rw-r--r--keyboards/drop/sense75/keymaps/default/rules.mk1
-rw-r--r--keyboards/drop/sense75/keymaps/default_md/keymap.c136
-rw-r--r--keyboards/drop/sense75/keymaps/default_md/readme.md1
-rw-r--r--keyboards/drop/sense75/keymaps/default_md/rules.mk1
-rw-r--r--keyboards/drop/sense75/keymaps/via/config.h5
-rw-r--r--keyboards/drop/sense75/keymaps/via/keymap.c79
-rw-r--r--keyboards/drop/sense75/keymaps/via/rules.mk2
-rw-r--r--keyboards/drop/sense75/mcuconf.h14
-rw-r--r--keyboards/drop/sense75/readme.md24
-rw-r--r--keyboards/drop/sense75/rules.mk2
-rw-r--r--keyboards/drop/sense75/sense75.c148
-rw-r--r--keyboards/gmmk/pro/rev1/iso/keymaps/falkecarlsen/keymap.c72
-rw-r--r--keyboards/gmmk/pro/rev1/iso/keymaps/falkecarlsen/readme.md8
-rw-r--r--keyboards/handwired/jscotto/scotto36/info.json77
-rw-r--r--keyboards/handwired/jscotto/scotto36/keymaps/default/config.h24
-rw-r--r--keyboards/handwired/jscotto/scotto36/keymaps/default/keymap.c281
-rw-r--r--keyboards/handwired/jscotto/scotto36/keymaps/default/rules.mk4
-rw-r--r--keyboards/handwired/jscotto/scotto36/readme.md25
-rw-r--r--keyboards/handwired/jscotto/scotto36/rules.mk1
-rw-r--r--keyboards/keychron/q0/config.h101
-rw-r--r--keyboards/keychron/q0/halconf.h21
-rw-r--r--keyboards/keychron/q0/mcuconf.h22
-rw-r--r--keyboards/keychron/q0/q0.c57
-rw-r--r--keyboards/keychron/q0/q0.h23
-rw-r--r--keyboards/keychron/q0/readme.md19
-rw-r--r--keyboards/keychron/q0/rev_0130/config.h24
-rw-r--r--keyboards/keychron/q0/rev_0130/info.json43
-rw-r--r--keyboards/keychron/q0/rev_0130/keymaps/default/keymap.c37
-rw-r--r--keyboards/keychron/q0/rev_0130/keymaps/via/keymap.c53
-rw-r--r--keyboards/keychron/q0/rev_0130/keymaps/via/rules.mk1
-rw-r--r--keyboards/keychron/q0/rev_0130/readme.md1
-rw-r--r--keyboards/keychron/q0/rev_0130/rev_0130.c88
-rw-r--r--keyboards/keychron/q0/rev_0130/rev_0130.h38
-rw-r--r--keyboards/keychron/q0/rev_0130/rules.mk27
-rw-r--r--keyboards/plywrks/allaro/info.json124
-rw-r--r--keyboards/plywrks/allaro/keymaps/default/keymap.c33
-rw-r--r--keyboards/plywrks/allaro/keymaps/via/keymap.c47
-rw-r--r--keyboards/plywrks/allaro/keymaps/via/rules.mk1
-rw-r--r--keyboards/plywrks/allaro/readme.md26
-rw-r--r--keyboards/plywrks/allaro/rules.mk1
50 files changed, 2148 insertions, 183 deletions
diff --git a/keyboards/cradio/config.h b/keyboards/cradio/config.h
index 8a1127b47c..e4ecd29539 100644
--- a/keyboards/cradio/config.h
+++ b/keyboards/cradio/config.h
@@ -1,52 +1,9 @@
-/* Copyright 2018-2021
- * ENDO Katsuhiro <ka2hiro@curlybracket.co.jp>
- * David Philip Barr <@davidphilipbarr>
- * Pierre Chevalier <pierrechevalier83@gmail.com>
- *
- * 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 <http://www.gnu.org/licenses/>.
- */
+// Copyright 2018-2021
+// ENDO Katsuhiro <ka2hiro@curlybracket.co.jp>
+// David Philip Barr <@davidphilipbarr>
+// Pierre Chevalier <pierrechevalier83@gmail.com>
+// SPDX-License-Identifier: GPL-2.0+
-#pragma once
-
-#include "config_common.h"
-
-/* key matrix size */
-#define MATRIX_ROWS 8
-#define MATRIX_COLS 5
-
-#define DIRECT_PINS { \
- { E6, F7, F6, F5, F4 }, \
- { B1, B3, B2, B6, D3 }, \
- { D1, D0, D4, C6, D7 }, \
- { B4, B5, NO_PIN, NO_PIN, NO_PIN } \
-}
-
-#define DIRECT_PINS_RIGHT { \
- { F4, F5, F6, F7, E6 }, \
- { D3, B6, B2, B3, B1 }, \
- { D7, C6, D4, D0, D1 }, \
- { B5, B4, NO_PIN, NO_PIN, NO_PIN } \
-}
-
-
-/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
-#define DEBOUNCE 5
-
-/* serial.c configuration for split keyboard */
-#define SOFT_SERIAL_PIN D2
-
-/* Top left key on left half */
#define BOOTMAGIC_LITE_ROW 0
#define BOOTMAGIC_LITE_COLUMN 0
/* Top right key on right half */
diff --git a/keyboards/cradio/cradio.c b/keyboards/cradio/cradio.c
index 76c64cbb8c..99a69ff755 100644
--- a/keyboards/cradio/cradio.c
+++ b/keyboards/cradio/cradio.c
@@ -1,24 +1,10 @@
-/* Copyright 2018-2021
- * ENDO Katsuhiro <ka2hiro@curlybracket.co.jp>
- * David Philip Barr <@davidphilipbarr>
- * Pierre Chevalier <pierrechevalier83@gmail.com>
- * @filterpaper
- *
- * 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 <http://www.gnu.org/licenses/>.
- */
+// Copyright 2018-2021
+// ENDO Katsuhiro <ka2hiro@curlybracket.co.jp>
+// David Philip Barr <@davidphilipbarr>
+// Pierre Chevalier <pierrechevalier83@gmail.com>
+// SPDX-License-Identifier: GPL-2.0+
-#include "cradio.h"
+#include "quantum.h"
#ifdef SWAP_HANDS_ENABLE
__attribute__ ((weak))
@@ -35,4 +21,3 @@ const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
{{1, 3}, {0, 3}, {2, 3}, {3, 3}, {4, 3}}
};
#endif
-
diff --git a/keyboards/cradio/cradio.h b/keyboards/cradio/cradio.h
deleted file mode 100644
index f013386bf8..0000000000
--- a/keyboards/cradio/cradio.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* Copyright 2018-2021
- * ENDO Katsuhiro <ka2hiro@curlybracket.co.jp>
- * David Philip Barr <@davidphilipbarr>
- * Pierre Chevalier <pierrechevalier83@gmail.com>
- *
- * 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 <http://www.gnu.org/licenses/>.
- */
-
-#include "quantum.h"
-
-/* This a shortcut to help you visually see your layout.
- *
- * The first section contains all of the arguments representing the physical
- * layout of the board and position of the keys.
- *
- * The second converts the arguments into a two-dimensional array which
- * represents the switch matrix.
- */
-
-// readability
-#define ___ KC_NO
-
-#define LAYOUT_split_3x5_2( \
- L01, L02, L03, L04, L05, R01, R02, R03, R04, R05, \
- L06, L07, L08, L09, L10, R06, R07, R08, R09, R10, \
- L11, L12, L13, L14, L15, R11, R12, R13, R14, R15, \
- L16, L17, R16, R17 \
- ) \
- { \
- { L01, L02, L03, L04, L05 }, \
- { L06, L07, L08, L09, L10 }, \
- { L11, L12, L13, L14, L15 }, \
- { L16, L17, ___, ___, ___ }, \
- { R01, R02, R03, R04, R05 }, \
- { R06, R07, R08, R09, R10 }, \
- { R11, R12, R13, R14, R15 }, \
- { R16, R17, ___, ___, ___ } \
- }
-
-#define LAYOUT LAYOUT_split_3x5_2
-
diff --git a/keyboards/cradio/info.json b/keyboards/cradio/info.json
index 9a99ee7c3e..0b9cbb1fed 100644
--- a/keyboards/cradio/info.json
+++ b/keyboards/cradio/info.json
@@ -8,50 +8,84 @@
"pid": "0x3988",
"device_version": "0.0.1"
},
+ "processor": "atmega32u4",
+ "protocol": "atmel-dfu",
+ "debounce": 5,
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": false,
+ "unicode": true
+ },
+ "matrix_pins": {
+ "direct": [
+ ["E6", "F7", "F6", "F5", "F4"],
+ ["B1", "B3", "B2", "B6", "D3"],
+ ["D1", "D0", "D4", "C6", "D7"],
+ ["B4", "B5", null, null, null]
+ ]
+ },
+ "split": {
+ "enabled": true,
+ "matrix_pins": {
+ "right": {
+ "direct": [
+ ["F4", "F5", "F6", "F7", "E6"],
+ ["D3", "B6", "B2", "B3", "B1"],
+ ["D7", "C6", "D4", "D0", "D1"],
+ ["B5", "B4", null, null, null]
+ ]
+ }
+ },
+ "soft_serial_pin": "D2",
+ "transport": {
+ "protocol": "serial"
+ }
+ },
+ "community_layouts": ["split_3x5_2"],
+ "layout_aliases": {
+ "LAYOUT": "LAYOUT_split_3x5_2"
+ },
"layouts": {
"LAYOUT_split_3x5_2": {
"layout": [
- {"x": 0, "y": 1.27},
- {"x": 1, "y": 0.31},
- {"x": 2, "y": 0},
- {"x": 3, "y": 0.28},
- {"x": 4, "y": 0.42},
-
- {"x": 8, "y": 0.42},
- {"x": 9, "y": 0.28},
- {"x": 10, "y": 0},
- {"x": 11, "y": 0.31},
- {"x": 12, "y": 1.27},
-
- {"x": 0, "y": 2.27},
- {"x": 1, "y": 1.31},
- {"x": 2, "y": 1},
- {"x": 3, "y": 1.28},
- {"x": 4, "y": 1.42},
-
- {"x": 8, "y": 1.42},
- {"x": 9, "y": 1.28},
- {"x": 10, "y": 1},
- {"x": 11, "y": 1.31},
- {"x": 12, "y": 2.27},
-
- {"x": 0, "y": 3.27},
- {"x": 1, "y": 2.31},
- {"x": 2, "y": 2},
- {"x": 3, "y": 2.28},
- {"x": 4, "y": 2.42},
-
- {"x": 8, "y": 2.42},
- {"x": 9, "y": 2.28},
- {"x": 10, "y": 2},
- {"x": 11, "y": 2.31},
- {"x": 12, "y": 3.27},
-
- {"x": 4, "y": 3.9},
- {"x": 5, "y": 3.7},
-
- {"x": 7, "y": 3.7},
- {"x": 8, "y": 3.9}
+ { "label": "L01", "matrix": [0, 0], "w": 1, "x": 0, "y": 1.27 },
+ { "label": "L02", "matrix": [0, 1], "w": 1, "x": 1, "y": 0.31 },
+ { "label": "L03", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 },
+ { "label": "L04", "matrix": [0, 3], "w": 1, "x": 3, "y": 0.28 },
+ { "label": "L05", "matrix": [0, 4], "w": 1, "x": 4, "y": 0.42 },
+ { "label": "L06", "matrix": [1, 0], "w": 1, "x": 0, "y": 2.27 },
+ { "label": "L07", "matrix": [1, 1], "w": 1, "x": 1, "y": 1.31 },
+ { "label": "L08", "matrix": [1, 2], "w": 1, "x": 2, "y": 1 },
+ { "label": "L09", "matrix": [1, 3], "w": 1, "x": 3, "y": 1.28 },
+ { "label": "L10", "matrix": [1, 4], "w": 1, "x": 4, "y": 1.42 },
+ { "label": "L11", "matrix": [2, 0], "w": 1, "x": 0, "y": 3.27 },
+ { "label": "L12", "matrix": [2, 1], "w": 1, "x": 1, "y": 2.31 },
+ { "label": "L13", "matrix": [2, 2], "w": 1, "x": 2, "y": 2 },
+ { "label": "L14", "matrix": [2, 3], "w": 1, "x": 3, "y": 2.28 },
+ { "label": "L15", "matrix": [2, 4], "w": 1, "x": 4, "y": 2.42 },
+ { "label": "L16", "matrix": [3, 0], "w": 1, "x": 4, "y": 3.9 },
+ { "label": "L17", "matrix": [3, 1], "w": 1, "x": 5, "y": 3.7 },
+ { "label": "R01", "matrix": [4, 0], "w": 1, "x": 8, "y": 0.42 },
+ { "label": "R02", "matrix": [4, 1], "w": 1, "x": 9, "y": 0.28 },
+ { "label": "R03", "matrix": [4, 2], "w": 1, "x": 10, "y": 0 },
+ { "label": "R04", "matrix": [4, 3], "w": 1, "x": 11, "y": 0.31 },
+ { "label": "R05", "matrix": [4, 4], "w": 1, "x": 12, "y": 1.27 },
+ { "label": "R06", "matrix": [5, 0], "w": 1, "x": 8, "y": 1.42 },
+ { "label": "R07", "matrix": [5, 1], "w": 1, "x": 9, "y": 1.28 },
+ { "label": "R08", "matrix": [5, 2], "w": 1, "x": 10, "y": 1 },
+ { "label": "R09", "matrix": [5, 3], "w": 1, "x": 11, "y": 1.31 },
+ { "label": "R10", "matrix": [5, 4], "w": 1, "x": 12, "y": 2.27 },
+ { "label": "R11", "matrix": [6, 0], "w": 1, "x": 8, "y": 2.42 },
+ { "label": "R12", "matrix": [6, 1], "w": 1, "x": 9, "y": 2.28 },
+ { "label": "R13", "matrix": [6, 2], "w": 1, "x": 10, "y": 2 },
+ { "label": "R14", "matrix": [6, 3], "w": 1, "x": 11, "y": 2.31 },
+ { "label": "R15", "matrix": [6, 4], "w": 1, "x": 12, "y": 3.27 },
+ { "label": "R16", "matrix": [7, 0], "w": 1, "x": 7, "y": 3.7 },
+ { "label": "R17", "matrix": [7, 1], "w": 1, "x": 8, "y": 3.9 }
]
}
}
diff --git a/keyboards/cradio/rules.mk b/keyboards/cradio/rules.mk
index 1e4940ca7d..6e7633bfe0 100644
--- a/keyboards/cradio/rules.mk
+++ b/keyboards/cradio/rules.mk
@@ -1,21 +1 @@
-# MCU name
-MCU = atmega32u4
-
-# Bootloader selection
-BOOTLOADER = atmel-dfu
-
-# Build Options
-# change yes to no to disable
-#
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = yes # Mouse keys
-EXTRAKEY_ENABLE = yes # Audio control and System control
-CONSOLE_ENABLE = no # Console for debug
-COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Enable N-Key Rollover
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-UNICODE_ENABLE = yes # Unicode
-AUDIO_ENABLE = no # Audio output
-SPLIT_KEYBOARD = yes # Use shared split_common code
-LAYOUTS = split_3x5_2
+# This file intentionally left blank
diff --git a/keyboards/drop/sense75/board.h b/keyboards/drop/sense75/board.h
new file mode 100644
index 0000000000..fc227f69b1
--- /dev/null
+++ b/keyboards/drop/sense75/board.h
@@ -0,0 +1,8 @@
+// Copyright 2022 Massdrop, Inc.
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#include_next "board.h"
+
+#undef STM32_HSECLK
+#define STM32_HSECLK 16000000U
diff --git a/keyboards/drop/sense75/config.h b/keyboards/drop/sense75/config.h
new file mode 100644
index 0000000000..b0196d0c44
--- /dev/null
+++ b/keyboards/drop/sense75/config.h
@@ -0,0 +1,67 @@
+// Copyright 2022 Massdrop, Inc.
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#define I2C1_SCL_PIN B8
+#define I2C1_SDA_PIN B9
+
+#define EXTERNAL_EEPROM_I2C_BASE_ADDRESS 0b10101000
+#define EXTERNAL_EEPROM_WP_PIN B7
+#define EEPROM_I2C_24LC256
+
+#ifdef RGB_MATRIX_ENABLE
+# define DRIVER_ADDR_1 0b1010000
+# define DRIVER_ADDR_2 0b1011111
+# define DRIVER_COUNT 2
+# define DRIVER_LED_TOTAL (58 + 53)
+# define ISSI_PWM_FREQUENCY 0b010 // 26k
+
+# define RGB_DISABLE_TIMEOUT 0
+# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT
+# define RGB_MATRIX_KEYPRESSES
+# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+# define ENABLE_RGB_MATRIX_ALPHAS_MODS
+# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+# define ENABLE_RGB_MATRIX_BREATHING
+# define ENABLE_RGB_MATRIX_BAND_SAT
+# define ENABLE_RGB_MATRIX_BAND_VAL
+# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+# define ENABLE_RGB_MATRIX_CYCLE_ALL
+# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+# define ENABLE_RGB_MATRIX_DUAL_BEACON
+# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+# define ENABLE_RGB_MATRIX_RAINDROPS
+# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+# define ENABLE_RGB_MATRIX_HUE_BREATHING
+# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+# define ENABLE_RGB_MATRIX_PIXEL_FLOW
+# define ENABLE_RGB_MATRIX_PIXEL_RAIN
+# define ENABLE_RGB_MATRIX_HUE_PENDULUM
+# define ENABLE_RGB_MATRIX_HUE_WAVE
+# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+# define ENABLE_RGB_MATRIX_SPLASH
+# define ENABLE_RGB_MATRIX_MULTISPLASH
+# define ENABLE_RGB_MATRIX_SOLID_SPLASH
+# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+#endif
diff --git a/keyboards/drop/sense75/halconf.h b/keyboards/drop/sense75/halconf.h
new file mode 100644
index 0000000000..b11f12ade7
--- /dev/null
+++ b/keyboards/drop/sense75/halconf.h
@@ -0,0 +1,7 @@
+// Copyright 2022 Massdrop, Inc.
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#define HAL_USE_I2C TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/drop/sense75/info.json b/keyboards/drop/sense75/info.json
new file mode 100644
index 0000000000..8fd65c1bd7
--- /dev/null
+++ b/keyboards/drop/sense75/info.json
@@ -0,0 +1,235 @@
+{
+ "keyboard_name": "SENSE75",
+ "manufacturer": "Drop Inc.",
+ "maintainer": "zvecr",
+ "processor": "STM32F303",
+ "bootloader": "stm32-dfu",
+ "diode_direction": "COL2ROW",
+ "matrix_pins": {
+ "cols": ["C15", "C14", "C13", "C12", "C11", "C10", "C9", "C8", "C7", "C6", "C5", "C4", "C3", "C2", "C1"],
+ "rows": ["B15", "B14", "B13", "B12", "B11", "B10"]
+ },
+ "usb": {
+ "vid": "0x359B",
+ "pid": "0x0001",
+ "device_version": "1.0.0"
+ },
+ "features": {
+ "rgb_matrix": true,
+ "encoder": true,
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ { "matrix": [0, 0], "label":"Esc", "x":0, "y":0},
+ { "matrix": [0, 1], "label":"F1", "x":1.25, "y":0},
+ { "matrix": [0, 2], "label":"F2", "x":2.25, "y":0},
+ { "matrix": [0, 3], "label":"F3", "x":3.25, "y":0},
+ { "matrix": [0, 4], "label":"F4", "x":4.25, "y":0},
+ { "matrix": [0, 5], "label":"F5", "x":5.5, "y":0},
+ { "matrix": [0, 6], "label":"F6", "x":6.5, "y":0},
+ { "matrix": [0, 7], "label":"F7", "x":7.5, "y":0},
+ { "matrix": [0, 8], "label":"F8", "x":8.5, "y":0},
+ { "matrix": [0, 9], "label":"F9", "x":9.75, "y":0},
+ { "matrix": [0, 10], "label":"F10", "x":10.75, "y":0},
+ { "matrix": [0, 11], "label":"F11", "x":11.75, "y":0},
+ { "matrix": [0, 12], "label":"F12", "x":12.75, "y":0},
+ { "matrix": [0, 13], "label":"PrtSc", "x":14, "y":0},
+ { "matrix": [0, 14], "label":"Mute", "x":15.25, "y":0},
+ { "matrix": [1, 0], "label":"~", "x":0, "y":1.25},
+ { "matrix": [1, 1], "label":"!", "x":1, "y":1.25},
+ { "matrix": [1, 2], "label":"@", "x":2, "y":1.25},
+ { "matrix": [1, 3], "label":"#", "x":3, "y":1.25},
+ { "matrix": [1, 4], "label":"$", "x":4, "y":1.25},
+ { "matrix": [1, 5], "label":"%", "x":5, "y":1.25},
+ { "matrix": [1, 6], "label":"^", "x":6, "y":1.25},
+ { "matrix": [1, 7], "label":"&", "x":7, "y":1.25},
+ { "matrix": [1, 8], "label":"*", "x":8, "y":1.25},
+ { "matrix": [1, 9], "label":"(", "x":9, "y":1.25},
+ { "matrix": [1, 10], "label":")", "x":10, "y":1.25},
+ { "matrix": [1, 11], "label":"_", "x":11, "y":1.25},
+ { "matrix": [1, 12], "label":"+", "x":12, "y":1.25},
+ { "matrix": [1, 13], "label":"Backspace", "x":13, "y":1.25, "w":2},
+ { "matrix": [1, 14], "label":"Del", "x":15.25, "y":1.25},
+ { "matrix": [2, 0], "label":"Tab", "x":0, "y":2.25, "w":1.5},
+ { "matrix": [2, 1], "label":"Q", "x":1.5, "y":2.25},
+ { "matrix": [2, 2], "label":"W", "x":2.5, "y":2.25},
+ { "matrix": [2, 3], "label":"E", "x":3.5, "y":2.25},
+ { "matrix": [2, 4], "label":"R", "x":4.5, "y":2.25},
+ { "matrix": [2, 5], "label":"T", "x":5.5, "y":2.25},
+ { "matrix": [2, 6], "label":"Y", "x":6.5, "y":2.25},
+ { "matrix": [2, 7], "label":"U", "x":7.5, "y":2.25},
+ { "matrix": [2, 8], "label":"I", "x":8.5, "y":2.25},
+ { "matrix": [2, 9], "label":"O", "x":9.5, "y":2.25},
+ { "matrix": [2, 10], "label":"P", "x":10.5, "y":2.25},
+ { "matrix": [2, 11], "label":"{", "x":11.5, "y":2.25},
+ { "matrix": [2, 12], "label":"}", "x":12.5, "y":2.25},
+ { "matrix": [2, 13], "label":"|", "x":13.5, "y":2.25, "w":1.5},
+ { "matrix": [2, 14], "label":"Page Up", "x":15.25, "y":2.25},
+ { "matrix": [3, 0], "label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
+ { "matrix": [3, 1], "label":"A", "x":1.75, "y":3.25},
+ { "matrix": [3, 2], "label":"S", "x":2.75, "y":3.25},
+ { "matrix": [3, 3], "label":"D", "x":3.75, "y":3.25},
+ { "matrix": [3, 4], "label":"F", "x":4.75, "y":3.25},
+ { "matrix": [3, 5], "label":"G", "x":5.75, "y":3.25},
+ { "matrix": [3, 6], "label":"H", "x":6.75, "y":3.25},
+ { "matrix": [3, 7], "label":"J", "x":7.75, "y":3.25},
+ { "matrix": [3, 8], "label":"K", "x":8.75, "y":3.25},
+ { "matrix": [3, 9], "label":"L", "x":9.75, "y":3.25},
+ { "matrix": [3, 10], "label":":", "x":10.75, "y":3.25},
+ { "matrix": [3, 11], "label":"\"", "x":11.75, "y":3.25},
+ { "matrix": [3, 12], "label":"Enter", "x":12.75, "y":3.25, "w":2.25},
+ { "matrix": [3, 14], "label":"Page Down", "x":15.25, "y":3.25},
+ { "matrix": [4, 0], "label":"Shift", "x":0, "y":4.25, "w":2.25},
+ { "matrix": [4, 1], "label":"Z", "x":2.25, "y":4.25},
+ { "matrix": [4, 2], "label":"X", "x":3.25, "y":4.25},
+ { "matrix": [4, 3], "label":"C", "x":4.25, "y":4.25},
+ { "matrix": [4, 4], "label":"V", "x":5.25, "y":4.25},
+ { "matrix": [4, 5], "label":"B", "x":6.25, "y":4.25},
+ { "matrix": [4, 6], "label":"N", "x":7.25, "y":4.25},
+ { "matrix": [4, 7], "label":"M", "x":8.25, "y":4.25},
+ { "matrix": [4, 8], "label":"<", "x":9.25, "y":4.25},
+ { "matrix": [4, 9], "label":">", "x":10.25, "y":4.25},
+ { "matrix": [4, 10], "label":"?", "x":11.25, "y":4.25},
+ { "matrix": [4, 11], "label":"Shift", "x":12.25, "y":4.25, "w":1.75},
+ { "matrix": [4, 13], "label":"\u2191", "x":14.25, "y":4.5},
+ { "matrix": [5, 0], "label":"Ctrl", "x":0, "y":5.25, "w":1.25},
+ { "matrix": [5, 1], "label":"Win", "x":1.25, "y":5.25, "w":1.25},
+ { "matrix": [5, 2], "label":"Alt", "x":2.5, "y":5.25, "w":1.25},
+ { "matrix": [5, 5], "label":" ", "x":3.75, "y":5.25, "w":6.25},
+ { "matrix": [5, 8], "label":"Alt", "x":10, "y":5.25},
+ { "matrix": [5, 9], "label":"Fn", "x":11, "y":5.25},
+ { "matrix": [5, 10], "label":"Ctrl", "x":12, "y":5.25},
+ { "matrix": [5, 12], "label":"\u2