diff --git a/.vscode/extensions.json b/.vscode/extensions.json
index 697686cd596b..889d9d610eb6 100644
--- a/.vscode/extensions.json
+++ b/.vscode/extensions.json
@@ -5,7 +5,6 @@
"xaver.clang-format",
"ms-vscode.cpptools",
"bierner.github-markdown-preview",
- "donjayamanne.git-extension-pack",
- "CoenraadS.bracket-pair-colorizer-2"
+ "donjayamanne.git-extension-pack"
]
}
diff --git a/Makefile b/Makefile
index bb2201e85221..5f25eef14b23 100644
--- a/Makefile
+++ b/Makefile
@@ -303,37 +303,8 @@ define PARSE_KEYBOARD
KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_3)/keymaps/*/.)))
KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_4)/keymaps/*/.)))
KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_5)/keymaps/*/.)))
- # this might be needed, but in a different form
- #KEYMAPS := $$(sort $$(filter-out $$(KEYBOARD_FOLDER_1) $$(KEYBOARD_FOLDER_2) \
- $$(KEYBOARD_FOLDER_3) $$(KEYBOARD_FOLDER_4) $$(KEYBOARD_FOLDER_5), $$(KEYMAPS)))
-
- KEYBOARD_LAYOUTS :=
- ifneq ("$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_5)/rules.mk)","")
- LAYOUTS :=
- $$(eval include $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_5)/rules.mk)
- KEYBOARD_LAYOUTS := $$(sort $$(LAYOUTS) $$(KEYBOARD_LAYOUTS))
- endif
- ifneq ("$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_4)/rules.mk)","")
- LAYOUTS :=
- $$(eval include $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_4)/rules.mk)
- KEYBOARD_LAYOUTS := $$(sort $$(LAYOUTS) $$(KEYBOARD_LAYOUTS))
- endif
- ifneq ("$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_3)/rules.mk)","")
- LAYOUTS :=
- $$(eval include $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_3)/rules.mk)
- KEYBOARD_LAYOUTS := $$(sort $$(LAYOUTS) $$(KEYBOARD_LAYOUTS))
- endif
- ifneq ("$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_2)/rules.mk)","")
- LAYOUTS :=
- $$(eval include $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_2)/rules.mk)
- KEYBOARD_LAYOUTS := $$(sort $$(LAYOUTS) $$(KEYBOARD_LAYOUTS))
- endif
- ifneq ("$$(wildcard $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_1)/rules.mk)","")
- LAYOUTS :=
- $$(eval include $(ROOT_DIR)/keyboards/$$(KEYBOARD_FOLDER_PATH_1)/rules.mk)
- KEYBOARD_LAYOUTS := $$(sort $$(LAYOUTS) $$(KEYBOARD_LAYOUTS))
- endif
+ KEYBOARD_LAYOUTS := $(shell $(QMK_BIN) list-layouts --keyboard $1)
LAYOUT_KEYMAPS :=
$$(foreach LAYOUT,$$(KEYBOARD_LAYOUTS),$$(eval LAYOUT_KEYMAPS += $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/layouts/*/$$(LAYOUT)/*/.)))))
diff --git a/bootloader.mk b/bootloader.mk
index 2bcca6bb811a..5ba118fb4436 100644
--- a/bootloader.mk
+++ b/bootloader.mk
@@ -52,26 +52,26 @@ ifeq ($(strip $(BOOTLOADER)), lufa-dfu)
OPT_DEFS += -DBOOTLOADER_LUFA_DFU
OPT_DEFS += -DBOOTLOADER_DFU
ifneq (,$(filter $(MCU), at90usb162 atmega16u2 atmega32u2 atmega16u4 atmega32u4 at90usb646 at90usb647))
- BOOTLOADER_SIZE = 4096
+ BOOTLOADER_SIZE ?= 4096
endif
ifneq (,$(filter $(MCU), at90usb1286 at90usb1287))
- BOOTLOADER_SIZE = 8192
+ BOOTLOADER_SIZE ?= 8192
endif
endif
ifeq ($(strip $(BOOTLOADER)), qmk-dfu)
OPT_DEFS += -DBOOTLOADER_QMK_DFU
OPT_DEFS += -DBOOTLOADER_DFU
ifneq (,$(filter $(MCU), at90usb162 atmega16u2 atmega32u2 atmega16u4 atmega32u4 at90usb646 at90usb647))
- BOOTLOADER_SIZE = 4096
+ BOOTLOADER_SIZE ?= 4096
endif
ifneq (,$(filter $(MCU), at90usb1286 at90usb1287))
- BOOTLOADER_SIZE = 8192
+ BOOTLOADER_SIZE ?= 8192
endif
endif
ifeq ($(strip $(BOOTLOADER)), qmk-hid)
OPT_DEFS += -DBOOTLOADER_QMK_HID
OPT_DEFS += -DBOOTLOADER_HID
- BOOTLOADER_SIZE = 4096
+ BOOTLOADER_SIZE ?= 4096
endif
ifeq ($(strip $(BOOTLOADER)), halfkay)
OPT_DEFS += -DBOOTLOADER_HALFKAY
diff --git a/data/templates/avr/config.h b/data/templates/avr/config.h
index 4192bbcfa230..7c15e8e70464 100644
--- a/data/templates/avr/config.h
+++ b/data/templates/avr/config.h
@@ -1,19 +1,5 @@
-/*
-Copyright %YEAR% %YOUR_NAME%
-
-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 .
-*/
+// Copyright %(YEAR)s %(YOUR_NAME)s (@%(USER_NAME)s)
+// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
@@ -23,8 +9,8 @@ along with this program. If not, see .
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x0000
#define DEVICE_VER 0x0001
-#define MANUFACTURER %YOUR_NAME%
-#define PRODUCT %KEYBOARD%
+#define MANUFACTURER %(USER_NAME)s
+#define PRODUCT %(KEYBOARD)s
/* key matrix size */
#define MATRIX_ROWS 2
diff --git a/data/templates/avr/readme.md b/data/templates/avr/readme.md
index b099ed726d26..207850e06565 100644
--- a/data/templates/avr/readme.md
+++ b/data/templates/avr/readme.md
@@ -1,20 +1,20 @@
-# %KEYBOARD%
+# %(KEYBOARD)s
-![%KEYBOARD%](imgur.com image replace me!)
+![%(KEYBOARD)s](imgur.com image replace me!)
*A short description of the keyboard/project*
-* Keyboard Maintainer: [%YOUR_NAME%](https://github.com/yourusername)
+* Keyboard Maintainer: [%(YOUR_NAME)s](https://github.com/%(USER_NAME)s)
* Hardware Supported: *The PCBs, controllers supported*
* Hardware Availability: *Links to where you can find this hardware*
Make example for this keyboard (after setting up your build environment):
- make %KEYBOARD%:default
+ make %(KEYBOARD)s:default
Flashing example for this keyboard:
- make %KEYBOARD%:default:flash
+ make %(KEYBOARD)s: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).
diff --git a/data/templates/base/%(KEYBOARD)s.c b/data/templates/base/%(KEYBOARD)s.c
new file mode 100644
index 000000000000..0c509aff6589
--- /dev/null
+++ b/data/templates/base/%(KEYBOARD)s.c
@@ -0,0 +1,4 @@
+// Copyright %(YEAR)s %(YOUR_NAME)s (@%(USER_NAME)s)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "%(KEYBOARD)s.h"
diff --git a/data/templates/base/%(KEYBOARD)s.h b/data/templates/base/%(KEYBOARD)s.h
new file mode 100644
index 000000000000..3e8ca3912dc8
--- /dev/null
+++ b/data/templates/base/%(KEYBOARD)s.h
@@ -0,0 +1,22 @@
+// Copyright %(YEAR)s %(YOUR_NAME)s (@%(USER_NAME)s)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is 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.
+ */
+#define LAYOUT( \
+ k00, k01, k02, \
+ k10, k12 \
+) { \
+ { k00, k01, k02 }, \
+ { k10, KC_NO, k12 } \
+}
diff --git a/data/templates/base/info.json b/data/templates/base/info.json
index 3993d8546739..a50ccba7bf9b 100644
--- a/data/templates/base/info.json
+++ b/data/templates/base/info.json
@@ -1,7 +1,7 @@
{
- "keyboard_name": "%KEYBOARD%",
+ "keyboard_name": "%(KEYBOARD)s",
"url": "",
- "maintainer": "%YOUR_NAME%",
+ "maintainer": "%(USER_NAME)s",
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/data/templates/base/keymaps/default/keymap.c b/data/templates/base/keymaps/default/keymap.c
index d8020ab3e33a..3fec3d51203f 100644
--- a/data/templates/base/keymaps/default/keymap.c
+++ b/data/templates/base/keymaps/default/keymap.c
@@ -1,18 +1,6 @@
-/* Copyright %YEAR% %YOUR_NAME%
- *
- * 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 .
- */
+// Copyright %(YEAR)s %(YOUR_NAME)s (@%(USER_NAME)s)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
#include QMK_KEYBOARD_H
// Defines names for use in layer keycodes and the keymap
@@ -21,12 +9,6 @@ enum layer_names {
_FN
};
-// Defines the keycodes used by our macros in process_record_user
-enum custom_keycodes {
- QMKBEST = SAFE_RANGE,
- QMKURL
-};
-
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
[_BASE] = LAYOUT(
@@ -34,29 +16,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TAB, KC_SPC
),
[_FN] = LAYOUT(
- QMKBEST, QMKURL, _______,
+ _______, _______, _______,
RESET, XXXXXXX
)
};
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case QMKBEST:
- if (record->event.pressed) {
- // when keycode QMKBEST is pressed
- SEND_STRING("QMK is the best thing ever!");
- } else {
- // when keycode QMKBEST is released
- }
- break;
- case QMKURL:
- if (record->event.pressed) {
- // when keycode QMKURL is pressed
- SEND_STRING("https://qmk.fm/\n");
- } else {
- // when keycode QMKURL is released
- }
- break;
- }
- return true;
-}
diff --git a/data/templates/base/keymaps/default/readme.md b/data/templates/base/keymaps/default/readme.md
index e052ed80f14d..63a064327571 100644
--- a/data/templates/base/keymaps/default/readme.md
+++ b/data/templates/base/keymaps/default/readme.md
@@ -1 +1 @@
-# The default keymap for %KEYBOARD%
+# The default keymap for %(KEYBOARD)s
diff --git a/data/templates/ps2avrgb/config.h b/data/templates/ps2avrgb/config.h
index 6150bcce6d10..876a60252f02 100644
--- a/data/templates/ps2avrgb/config.h
+++ b/data/templates/ps2avrgb/config.h
@@ -1,19 +1,5 @@
-/*
-Copyright %YEAR% %YOUR_NAME%
-
-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 .
-*/
+// Copyright %(YEAR)s %(YOUR_NAME)s (@%(USER_NAME)s)
+// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
@@ -23,8 +9,8 @@ along with this program. If not, see .
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x0000
#define DEVICE_VER 0x0001
-#define MANUFACTURER %YOUR_NAME%
-#define PRODUCT %KEYBOARD%
+#define MANUFACTURER %(USER_NAME)s
+#define PRODUCT %(KEYBOARD)s
/* key matrix size */
#define MATRIX_ROWS 8
diff --git a/data/templates/ps2avrgb/readme.md b/data/templates/ps2avrgb/readme.md
index 94063f9ebc4b..a2ac4495b689 100644
--- a/data/templates/ps2avrgb/readme.md
+++ b/data/templates/ps2avrgb/readme.md
@@ -1,20 +1,20 @@
-# %KEYBOARD%
+# %(KEYBOARD)s
-![%KEYBOARD%](imgur.com image replace me!)
+![%(KEYBOARD)s](imgur.com image replace me!)
*A short description of the keyboard/project*
-* Keyboard Maintainer: [%YOUR_NAME%](https://github.com/yourusername)
+* Keyboard Maintainer: [%(YOUR_NAME)s](https://github.com/yourusername)
* Hardware Supported: *The PCBs, controllers supported*
* Hardware Availability: *Links to where you can find this hardware*
Make example for this keyboard (after setting up your build environment):
- make %KEYBOARD%:default
+ make %(KEYBOARD)s:default
Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid))
- make %KEYBOARD%:default:flash
+ make %(KEYBOARD)s: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).
diff --git a/docs/_langs.md b/docs/_langs.md
index f7b375fb9452..3fecd72da639 100644
--- a/docs/_langs.md
+++ b/docs/_langs.md
@@ -3,7 +3,7 @@
- [:cn: 中文](/zh-cn/)
- [:es: Español](/es/)
- [:fr: Français](/fr-fr/)
- - [:he: עברית](/he-il/)
+ - [:israel: עברית](/he-il/)
- [:brazil: Português](/pt-br/)
- [:ru: Русский](/ru-ru/)
- [:jp: 日本語](/ja/)
diff --git a/docs/cli_commands.md b/docs/cli_commands.md
index 8fa7ad41dc83..8f5117633f71 100644
--- a/docs/cli_commands.md
+++ b/docs/cli_commands.md
@@ -118,6 +118,20 @@ This command lets you configure the behavior of QMK. For the full `qmk config` d
qmk config [-ro] [config_token1] [config_token2] [...] [config_tokenN]
```
+## `qmk cd`
+
+This command opens a new shell in your `qmk_firmware` directory.
+
+Note that if you are already somewhere within `QMK_HOME` (for example, the `keyboards/` folder), nothing will happen.
+
+To exit out into the parent shell, simply type `exit`.
+
+**Usage**:
+
+```
+qmk cd
+```
+
## `qmk console`
This command lets you connect to keyboard consoles to get debugging messages. It only works if your keyboard firmware has been compiled with `CONSOLE_ENABLE=yes`.
@@ -373,6 +387,8 @@ qmk format-c -b branch_name
This command starts a local HTTP server which you can use for browsing or improving the docs. Default port is 8936.
Use the `-b`/`--browser` flag to automatically open the local webserver in your default browser.
+This command runs `docsify serve` if `docsify-cli` is installed (which provides live reload), otherwise Python's builtin HTTP server module will be used.
+
**Usage**:
```
diff --git a/docs/cli_tab_complete.md b/docs/cli_tab_complete.md
index 2217d4fd3bc6..200477624ed9 100644
--- a/docs/cli_tab_complete.md
+++ b/docs/cli_tab_complete.md
@@ -18,7 +18,7 @@ If you put `qmk_firmware` into another location you will need to adjust this pat
If you want the tab completion available to all users of the system you can add a symlink to the `qmk_tab_complete.sh` script:
- `ln -s ~/qmk_firmware/util/qmk_tab_complete.sh /etc/profile.d/qmk_tab_complete.sh`
+ ln -s ~/qmk_firmware/util/qmk_tab_complete.sh /etc/profile.d/qmk_tab_complete.sh
### System Wide Copy
diff --git a/docs/coding_conventions_python.md b/docs/coding_conventions_python.md
index 47dff7f8eea0..960b9cb49e95 100644
--- a/docs/coding_conventions_python.md
+++ b/docs/coding_conventions_python.md
@@ -2,7 +2,7 @@
Most of our style follows PEP8 with some local modifications to make things less nit-picky.
-* We target Python 3.6 for compatability with all supported platforms.
+* We target Python 3.7 for compatability with all supported platforms.
* We indent using four (4) spaces (soft tabs)
* We encourage liberal use of comments
* Think of them as a story describing the feature
diff --git a/docs/config_options.md b/docs/config_options.md
index dbf3d3da2eb0..cfbe39f0d32e 100644
--- a/docs/config_options.md
+++ b/docs/config_options.md
@@ -404,6 +404,8 @@ However, this will automatically disable the legacy TMK Macros and Functions fea
Use these to enable or disable building certain features. The more you have enabled the bigger your firmware will be, and you run the risk of building a firmware too large for your MCU.
+* `MAGIC_ENABLE`
+ * MAGIC actions (BOOTMAGIC without the boot)
* `BOOTMAGIC_ENABLE`
* Virtual DIP switch configuration
* `MOUSEKEY_ENABLE`
diff --git a/docs/feature_oled_driver.md b/docs/feature_oled_driver.md
index 908bd801c442..6d82aa0f59a5 100644
--- a/docs/feature_oled_driver.md
+++ b/docs/feature_oled_driver.md
@@ -146,6 +146,11 @@ void oled_task_user(void) {
## Basic Configuration
+These configuration options should be placed in `config.h`. Example:
+```c
+#define OLED_BRIGHTNESS 128
+```
+
|Define |Default |Description |
|---------------------------|-----------------|--------------------------------------------------------------------------------------------------------------------------|
|`OLED_DISPLAY_ADDRESS` |`0x3C` |The i2c address of the OLED Display |
diff --git a/docs/feature_rgb_matrix.md b/docs/feature_rgb_matrix.md
index 2dbd32fbdb9f..fe72d063e4f3 100644
--- a/docs/feature_rgb_matrix.md
+++ b/docs/feature_rgb_matrix.md
@@ -780,3 +780,13 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
}
}
```
+
+#### Indicators without RGB Matrix Effect
+
+If you want to just use RGB indicators without RGB matrix effect, it is not possible to disable the latter because toggling RGB off will disable everything. You can workaround it with solid effect and colors off using this init function:
+```c
+void keyboard_post_init_user(void) {
+ rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR);
+ rgb_matrix_sethsv_noeeprom(HSV_OFF);
+}
+```
diff --git a/docs/feature_stenography.md b/docs/feature_stenography.md
index af4754ed7833..8d66034d4b5b 100644
--- a/docs/feature_stenography.md
+++ b/docs/feature_stenography.md
@@ -129,7 +129,8 @@ As defined in `keymap_steno.h`.
|`STN_RES2`||(GeminiPR only)|
|`STN_PWR`||(GeminiPR only)|
-If you do not want to hit two keys with one finger combined keycodes can be used. These are also defined in `keymap_steno.h`, and causes both keys to be reported as pressed or released. To use these keycodes define `STENO_COMBINEDMAP` in your `config.h` file
+If you do not want to hit two keys with one finger combined keycodes can be used. These are also defined in `keymap_steno.h`, and causes both keys to be reported as pressed or released. To use these keycodes define `STENO_COMBINEDMAP` in your `config.h` file.
+
|Combined key | Key1 | Key 2 |
|---------------|--------|----------|
|STN_S3 | STN_S1 | STN_S2 |
diff --git a/docs/feature_tap_dance.md b/docs/feature_tap_dance.md
index f4e989921f2f..d1988b9b7d35 100644
--- a/docs/feature_tap_dance.md
+++ b/docs/feature_tap_dance.md
@@ -29,7 +29,7 @@ After this, you'll want to use the `tap_dance_actions` array to specify what act
* `ACTION_TAP_DANCE_FN(fn)`: Calls the specified function - defined in the user keymap - with the final tap count of the tap dance action.
* `ACTION_TAP_DANCE_FN_ADVANCED(on_each_tap_fn, on_dance_finished_fn, on_dance_reset_fn)`: Calls the first specified function - defined in the user keymap - on every tap, the second function when the dance action finishes (like the previous option), and the last function when the tap dance action resets.
* ~~`ACTION_TAP_DANCE_FN_ADVANCED_TIME(on_each_tap_fn, on_dance_finished_fn, on_dance_reset_fn, tap_specific_tapping_term)`~~: This functions identically to the `ACTION_TAP_DANCE_FN_ADVANCED` function, but uses a custom tapping term for it, instead of the predefined `TAPPING_TERM`.
- * This is deprecated in favor of the Per Key Tapping Term functionality, as outlined [here](custom_quantum_functions.md#Custom_Tapping_Term). You'd want to check for the specific `TD()` macro that you want to use (such as `TD(TD_ESC_CAPS)`) instead of using this specific Tap Dance function.
+ * This is deprecated in favor of the Per Key Tapping Term functionality, as outlined [here](tap_hold.md#tapping-term). You'd want to check for the specific `TD()` macro that you want to use (such as `TD(TD_ESC_CAPS)`) instead of using this specific Tap Dance function.
The first option is enough for a lot of cases, that just want dual roles. For example, `ACTION_TAP_DANCE_DOUBLE(KC_SPC, KC_ENT)` will result in `Space` being sent on single-tap, `Enter` otherwise.
@@ -393,6 +393,9 @@ void altlp_finished(qk_tap_dance_state_t *state, void *user_data) {
case TD_DOUBLE_SINGLE_TAP: // Allow nesting of 2 parens `((` within tapping term
tap_code16(KC_LPRN);
register_code16(KC_LPRN);
+ break;
+ default:
+ break;
}
}
@@ -406,6 +409,9 @@ void altlp_reset(qk_tap_dance_state_t *state, void *user_data) {
break;
case TD_DOUBLE_SINGLE_TAP:
unregister_code16(KC_LPRN);
+ break;
+ default:
+ break;
}
}
diff --git a/docs/internals_gpio_control.md b/docs/internals_gpio_control.md
index dcff928c7031..21a3bd661e7e 100644
--- a/docs/internals_gpio_control.md
+++ b/docs/internals_gpio_control.md
@@ -4,7 +4,7 @@ QMK has a GPIO control abstraction layer which is microcontroller agnostic. This
## Functions :id=functions
-The following functions can provide basic control of GPIOs and are found in `quantum/quantum.h`.
+The following functions provide basic control of GPIOs and are found in `tmk_core/common//gpio.h`.
|Function |Description | Old AVR Examples | Old ChibiOS/ARM Examples |
|------------------------|--------------------------------------------------|-------------------------------------------------|-------------------------------------------------|
diff --git a/docs/isp_flashing_guide.md b/docs/isp_flashing_guide.md
index 7efcd9ee357e..384aaf72298e 100644
--- a/docs/isp_flashing_guide.md
+++ b/docs/isp_flashing_guide.md
@@ -1,263 +1,242 @@
# ISP Flashing Guide
-ISP flashing (also known as ICSP flashing) is the process of programming a microcontroller directly. This allows you to replace the bootloader, or change the "fuses" on the controller, which control a number of hardware- and software-related functions, such as the speed of the controller, how it boots, and other options.
+In order to flash a microcontroller over USB, it needs something called a bootloader. This bootloader lives in a specific section of the flash memory, and allows you to load the actual application firmware (in this case, QMK) into the rest of the flash.
-The main use of ISP flashing for QMK is flashing or replacing the bootloader on your AVR-based controller (Pro Micros, or V-USB chips).
+However, it can sometimes happen that the bootloader becomes corrupted and needs reflashing, or you may want to change the bootloader to another one. It's not possible to do this with the existing bootloader, because, of course, it is already running, and cannot overwrite itself. Instead, you will need to ISP flash the microcontroller.
-?> This is only for programming AVR based boards, such as the Pro Micro or other ATmega controllers. It is not for Arm controllers, such as the Proton C.
+There are several different kinds of bootloaders available for AVR microcontrollers. Most STM32 ARM-based microcontrollers already have a USB-capable bootloader in ROM, so generally do not need to be ISP flashed.
-## Dealing with Corrupted Bootloaders
+## Hardware
-If you're having trouble flashing/erasing your board, and running into cryptic error messages like any of the following for a DFU based controller:
+One of the following devices is required to perform the ISP flashing. The product links are to the official versions, however you can certainly source them elsewhere.
- libusb: warning [darwin_transfer_status] transfer error: timed out
- dfu.c:844: -ETIMEDOUT: Transfer timed out, NAK 0xffffffc4 (-60)
- atmel.c:1627: atmel_flash: flash data dfu_download failed.
- atmel.c:1629: Expected message length of 1072, got -60.
- atmel.c:1434: Error flashing the block: err -2.
- ERROR
- Memory write error, use debug for more info.
- commands.c:360: Error writing memory data. (err -4)
+You'll also need some jumper wires to connect the ISP flasher and the target board. Some boards have an ISP header with the necessary pins broken out. If not, then you will need to temporarily solder the wires to the PCB -- usually to switch pins or directly to the MCU.
+The wiring is fairly straightforward; for the most part, you'll be connecting like to like. Refer to the target MCU's datasheet for the exact `RESET`, `SCLK`, `MOSI` and `MISO` pins.
- dfu.c:844: -EPIPE: a) Babble detect or b) Endpoint stalled 0xffffffe0 (-32)
- Device is write protected.
- dfu.c:252: dfu_clear_status( 0x7fff4fc2ea80 )
- atmel.c:1434: Error flashing the block: err -2.
- ERROR
- Memory write error, use debug for more info.
- commands.c:360: Error writing memory data. (err -4)
+### Pro Micro as ISP
-Or, if you see this sort of message for a Pro Micro based controller:
+[SparkFun Pro Micro](https://www.sparkfun.com/products/12640)
- avrdude: butterfly_recv(): programmer is not responding
- avrdude: butterfly_recv(): programmer is not responding
- avrdude: verification error, first mismatch at byte 0x002a
- 0x2b != 0x75
- avrdude: verification error; content mismatch
- avrdude: verification error; content mismatch
+To use a 5V/16MHz Pro Micro as an ISP flashing tool, you will first need to load a [special firmware](https://github.com/qmk/qmk_firmware/blob/master/util/pro_micro_ISP_B6_10.hex) onto it that emulates a hardware ISP flasher.
+**AVRDUDE Programmer**: `avrisp`
+**AVRDUDE Port**: Serial
-You're likely going to need to ISP flash your board/device to get it working again.
+#### Wiring
-## Hardware Needed
+|Pro Micro |Keyboard|
+|-----------|--------|
+|`VCC` |`VCC` |
+|`GND` |`GND` |
+|`10` (`B6`)|`RESET` |
+|`15` (`B1`)|`SCLK` |
+|`16` (`B2`)|`MOSI` |
+|`14` (`B3`)|`MISO` |
-You'll need one of the following to actually perform the ISP flashing (followed by the protocol they use):
+!> Note that the `10` pin on the Pro Micro should be wired to the `RESET` pin on the keyboard's controller. ***DO NOT*** connect the `RESET` pin on the Pro Micro to the `RESET` on the keyboard.
-* [SparkFun PocketAVR](https://www.sparkfun.com/products/9825) - (USB Tiny)
-* [USBtinyISP AVR Programmer Kit](https://www.adafruit.com/product/46) - (USB Tiny)
-* [USBasp](https://www.fischl.de/usbasp/) - (usbasp)
-* [Teensy 2.0](https://www.pjrc.com/store/teensy.html) - (avrisp)
-* [Pro Micro](https://www.sparkfun.com/products/12640) - (avrisp)
-* [Bus Pirate](https://www.adafruit.com/product/237) - (buspirate)
+### Teensy 2.0 as ISP
-There are other devices that can be used to ISP flash, but these are the main ones. Also, all product links are to the official versions. You can source them elsewhere.
+[PJRC Teensy 2.0](https://www.pjrc.com/store/teensy.html)
-You'll also need something to wire your "ISP Programmer" to the device that you're programming. Some PCBs may have ISP headers that you can use directly, but this often isn't the case, so you'll likely need to solder to the controller itself or to different switches or other components.
+To use a Teensy 2.0 as an ISP flashing tool, you will first need to load a [special firmware](https://github.com/qmk/qmk_firmware/blob/master/util/teensy_2.0_ISP_B0.hex) onto it that emulates a hardware ISP flasher.
-### The ISP Firmware
+**AVRDUDE Programmer**: `avrisp`
+**AVRDUDE Port**: Serial
-The Teensy and Pro Micro controllers will need you to flash the ISP firmware to the controllers before you can use them as an ISP programmer. The rest of the hardware should come preprogrammed. So, for these controllers, download the correct hex file, and flash it first.
+#### Wiring
-* Teensy 2.0: [`util/teensy_2.0_ISP_B0.hex`](https://github.com/qmk/qmk_firmware/blob/master/util/teensy_2.0_ISP_B0.hex) (`B0`)
-* Pro Micro: [`util/pro_micro_ISP_B6_10.hex`](https://github.com/qmk/qmk_firmware/blob/master/util/pro_micro_ISP_B6_10.hex) (`10/B6`)
+|Teensy|Keyboard|
+|------|--------|
+|`VCC` |`VCC` |
+|`GND` |`GND` |
+|`B0` |`RESET` |
+|`B1` |`SCLK` |
+|`B2` |`MOSI` |
+|`B3` |`MISO` |
-Once you've flashed your controller, you won't need this hex file anymore.
+!> Note that the `B0` pin on the Teensy should be wired to the `RESET` pin on the keyboard's controller. ***DO NOT*** connect the `RESET` pin on the Teensy to the `RESET` on the keyboard.
-## Software Needed
+### SparkFun PocketAVR / USBtinyISP / USBasp
-The QMK Toolbox can be used for most (all) of this.
+[SparkFun PocketAVR](https://www.sparkfun.com/products/9825)
+[Adafruit USBtinyISP](https://www.adafruit.com/product/46)
+[Thomas Fischl's USBasp](https://www.fischl.de/usbasp/)
-However, you can grab the [Teensy Loader](https://www.pjrc.com/teensy/loader.html) to flash your Teensy 2.0 board, if you are using that. Or you can use `avrdude` (installed as part of `qmk_install.sh`), or [AVRDUDESS](https://blog.zakkemble.net/avrdudess-a-gui-for-avrdude/) (for Windows) to flash the Pro Micro, and the ISP flashing.
+**AVRDUDE Programmer**: `usbtiny` / `usbasp`
+**AVRDUDE Port**: `usb`
+#### Wiring
-## Wiring
+|ISP |Keyboard|
+|---------|--------|
+|`VCC` |`VCC` |
+|`GND` |`GND` |
+|`RST` |`RESET` |
+|`SCLK` |`SCLK` |
+|`MOSI` |`MOSI` |
+|`MISO` |`MISO` |
-This is pretty straight-forward - we'll be connecting like-things to like-things in the following manner.
-### SparkFun Pocket AVR
+### Bus Pirate
- PocketAVR RST <-> Keyboard RESET
- PocketAVR SCLK <-> Keyboard B1 (SCLK)
- PocketAVR MOSI <-> Keyboard B2 (MOSI)
- PocketAVR MISO <-> Keyboard B3 (MISO)
- PocketAVR VCC <-> Keyboard VCC
- PocketAVR GND <-> Keyboard GND
+[Adafruit Bus Pirate](https://www.adafruit.com/product/237)
-### USBasp
+!> The 5-pin "ICSP" header is for ISP flashing the PIC microcontroller of the Bus Pirate. Connect your target board to the 10-pin header opposite the USB connector instead.
- USBasp RST <-> Keyboard RESET
- USBasp SCLK <-> Keyboard B1 (SCLK)
- USBasp MOSI <-> Keyboard B2 (MOSI)
- USBasp MISO <-> Keyboard B3 (MISO)
- USBasp VCC <-> Keyboard VCC
- USBasp GND <-> Keyboard GND
+**AVRDUDE Programmer**: `buspirate`
+**AVRDUDE Port**: Serial
-### Teensy 2.0
+#### Wiring
- Teensy B0 <-> Keyboard RESET
- Teensy B1 <-> Keyboard B1 (SCLK)
- Teensy B2 <-> Keyboard B2 (MOSI)
- Teensy B3 <-> Keyboard B3 (MISO)
- Teensy VCC <-> Keyboard VCC
- Teensy GND <-> Keyboard GND
-
-!> Note that the B0 pin on the Teensy is wired to the RESET/RST pin on the keyboard's controller. ***DO NOT*** wire the RESET pin on the Teensy to the RESET on the keyboard.
-
-### Pro Micro
-
- Pro Micro 10 (B6) <-> Keyboard RESET
- Pro Micro 15 (B1) <-> Keyboard B1 (SCLK)
- Pro Micro 16 (B2) <-> Keyboard B2 (MOSI)
- Pro Micro 14 (B3) <-> Keyboard B3 (MISO)
- Pro Micro VCC <-> Keyboard VCC
- Pro Micro GND <-> Keyboard GND
-
-!> Note that the 10/B6 pin on the Pro Micro is wired to the RESET/RST pin on the keyboard's controller. ***DO NOT*** wire the RESET pin on the Pro Micro to the RESET on the keyboard.
-
-
-## Flashing Your Keyboard
-
-After you have your ISP programmer set up, and wired to your keyboard, it's time to flash your keyboard.
-
-### The Bootloader File
-
-The simplest and quickest way to get things back to normal is to flash only a bootloader to the keyboard. Once this is done, you can connect the keyboard normally and flash the keyboard like you normally would.
-
-You can find the stock bootloaders in the [`util/` folder](https://github.com/qmk/qmk_firmware/tree/master/util). Be sure to flash the correct bootloader for your chip:
-
-* **Atmel DFU**
- * [ATmega16U4](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_atmega16u4_1.0.1.hex)
- * [ATmega32U4](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_atmega32u4_1.0.0.hex)
- * [AT90USB64](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_at90usb64_1.0.0.hex)
- * [AT90USB128](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_at90usb128_1.0.1.hex)
-* **Caterina**
- * [Pro Micro (5V/16MHz)](https://github.com/sparkfun/Arduino_Boards/blob/master/sparkfun/avr/bootloaders/caterina/Caterina-promicro16.hex)
- * [Pro Micro (3.3V/8MHz)](https://github.com/sparkfun/Arduino_Boards/blob/master/sparkfun/avr/bootloaders/caterina/Caterina-promicro8.hex)
-* **BootloadHID (PS2AVRGB)**
- * [ATmega32A](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_ps2avrgb_bootloadhid_1.0.1.hex)
-
-If you're not sure what your board uses, look in the `rules.mk` file for the keyboard in QMK. The `MCU` and `BOOTLOADER` lines will have the value you need. It may differ between different versions of the board.
-
-### Production Techniques
-
-If you'd like to flash both the bootloader **and** the regular firmware at the same time, there are two options to do so. Manually, or with the `:production` target when compiling.
-
-To do this manually:
-
-1. Open the original firmware .hex file in a text editor
-2. Remove the last line (which should be `:00000001FF` - this is an EOF message)
-3. Copy the entire bootloader's contents onto a new line (with no empty lines between) and paste it at the end of the original file
-4. Save it as a new file by naming it `__production.hex`
+|Bus Pirate|Keyboard|
+|----------|--------|
+|`+5V` |`VCC` |
+|`GND` |`GND` |
+|`RST` |`RESET` |
+|`CLK` |`SCLK` |
+|`MOSI` |`MOSI` |
+|`MISO` |`MISO` |
-?> It's possible to use other bootloaders here in the same way, but __you need a bootloader__, otherwise you'll have to use ISP again to write new firmware to your keyboard.
+## Software
-#### Create QMK DFU Bootloader and Production images
+[QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) supports flashing both the ISP firmware and bootloader, but note that it cannot (currently) set the AVR fuse bytes for the actual ISP flashing step, so you may want to work with `avrdude` directly instead.
-You can create the firmware, the QMK DFU Bootloader and the production firmware images for the board using the `:production` target when compiling. Once this is done, you'll see three files:
-* `_.hex`
-* `__bootloader.hex`
-* `__production.hex`
+Setting up the [QMK environment](newbs.md) is highly recommended, as it automatically installs `avrdude` along with a host of other tools.
-The QMK DFU bootloader has only really been tested on `atmega32u4` controllers (such as the AVR based Planck boards, and the Pro Micro), and hasn't been tested on other controllers. However, it will definitely not work on V-USB controllers, such as the `atmega32a` or `atmega328p`.
+## Bootloader Firmware
-You can flash either the bootloader or the production firmware file. The production firmware file will take a lot longer to flash, since it's flashing a lot more data.
+One of these files is what you will be ISP flashing onto the board. The default fuses are also listed.
-?> Note: You should stay with the same bootloader. If you're using DFU already, switching to QMK DFU is fine. But flashing QMK DFU onto a Pro Micro, for instance, has additional steps needed.
+If you're not sure what your board uses, look in the `rules.mk` file for the keyboard in QMK. The `MCU` and `BOOTLOADER` lines will have the values you need. It may differ between different versions of the board.
-## Flashing Your Bootloader/Production File
+### Atmel DFU
-Make sure your keyboard is unplugged from any device, and plug in your ISP Programmer.
+These are the [factory default bootloaders](https://www.microchip.com/content/dam/mchp/documents/OTH/ProductDocuments/SoftwareLibraries/Firmware/megaUSB_DFU_Bootloaders.zip) shipped by Atmel (now Microchip). Note that the AT90USB64 and AT90USB128 bootloaders are [slightly modified](https://github.com/qmk/qmk_firmware/pull/14064), due to a bug causing them to not enumerate properly in Windows 8 and later.
-If you want to change bootloader types, You'll need to use the command line.
+|MCU |Low |High |Extended|USB ID |
+|--------------------------------------------------------------------------------------------------|------|-------------------------------|--------|-----------|
+|[ATmega16U4](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_atmega16u4_1.0.1.hex)|`0x5E`|`0x99` / `0xD9` (JTAG disabled)|`0xF3` |`03EB:2FF3`|
+|[ATmega32U4](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_atmega32u4_1.0.0.hex)|`0x5E`|`0x99` / `0xD9` (JTAG disabled)|`0xF3` |`03EB:2FF4`|
+|[AT90USB64](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_at90usb64_1.0.0.hex) |`0x5E`|`0x9B` / `0xDB` (JTAG disabled)|`0xF3` |`03EB:2FF9`|
+|[AT90USB128](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_at90usb128_1.0.1.hex)|`0x5E`|`0x99` / `0xD9` (JTAG disabled)|`0xF3` |`03EB:2FFB`|
-### QMK Toolbox
+### Caterina
-1. `AVRISP device connected` or `USB Tiny device connected` will show up in yellow
-2. Select the correct bootloader/production .hex file with the `Open` dialog (spaces can't be in the path)
-3. Be sure the correct `Microcontroller` option for the keyboard you're flashing (not the ISP programmer) is selected
-4. Hit `Flash`
-5. Wait, as nothing will output for a while, especially with production files
+This is the default Arduino-style bootloader derived from the [LUFA CDC bootloader](https://github.com/abcminiuser/lufa/tree/master/Bootloaders/CDC), and is only for the ATmega32U4.
-If the verification and fuse checks are ok, you're done! Your board may restart automatically, otherwise, unplug your Teensy and plug in your keyboard - you can leave your Teensy wired to your keyboard while testing things, but it's recommended that you desolder it/remove the wiring once you're sure everything works.
+There are several variants depending on the vendor, but they all mostly work the same way. The SparkFun variants, for example, require the `RESET` pin to be [grounded twice quickly](https://learn.sparkfun.com/tutorials/pro-micro--fio-v3-hookup-guide#ts-reset) in order to stay in bootloader mode for more than 750 ms.
-### Command Line
+|MCU |Low |High |Extended|USB ID |
+|-----------------------------------------------------------------------------------------------------------------------------------------------------------------|------|------|--------|-----------|
+|[SparkFun Pro Micro (3V3/8MHz)](https://github.com/sparkfun/Arduino_Boards/blob/master/sparkfun/avr/bootloaders/caterina/Caterina-promicro8.hex) |`0xFF`|`0xD8`|`0xFE` |`1B4F:9203`|
+|[SparkFun Pro Micro (5V/16MHz)](https://github.com/sparkfun/Arduino_Boards/blob/master/sparkfun/avr/bootloaders/caterina/Caterina-promicro16.hex) |`0xFF`|`0xD8`|`0xFB` |`1B4F:9205`|
+|[SparkFun LilyPadUSB (and some Pro Micro clones)](https://github.com/sparkfun/Arduino_Boards/blob/main/sparkfun/avr/bootloaders/caterina/Caterina-lilypadusb.hex)|`0xFF`|`0xD8`|`0xFE` |`1B4F:9207`|
+|[Pololu A-Star 32U4](https://github.com/pololu/a-star/blob/master/bootloaders/caterina/Caterina-A-Star.hex)* |`0xFF`|`0xD0`|`0xF8` |`1FFB:0101`|
+|[Adafruit Feather 32U4](https://github.com/adafruit/Caterina-Bootloader/blob/master/Built%20Firmwares/Caterina-Feather32u4.hex) |`0xFF`|`0xD8`|`0xFB` |`239A:000C`|
+|[Adafruit ItsyBitsy 32U4 (3V3/8MHz)](https://github.com/adafruit/Caterina-Bootloader/blob/master/Caterina_itsybitsy3V.hex)* |`0xFF`|`0xD8`|`0xFB` |`239A:000D`|
+|[Adafruit ItsyBitsy 32U4 (5V/16MHz)](https://github.com/adafruit/Caterina-Bootloader/blob/master/Caterina_itsybitsy5V.hex) |`0xFF`|`0xD8`|`0xFB` |`239A:000E`|
+|[Arduino Leonardo](https://github.com/arduino/ArduinoCore-avr/blob/master/bootloaders/caterina/Caterina-Leonardo.hex)* |`0xFF`|`0xD8`|`0xFB` |`2341:0036`|
+|[Arduino Micro](https://github.com/arduino/ArduinoCore-avr/blob/master/bootloaders/caterina/Caterina-Micro.hex)* |`0xFF`|`0xD8`|`0xFB` |`2341:0037`|
-Open a terminal (`cmd` on Windows, for instance) and navigate to your where your modified .hex file is. We'll pretend this file is called `main.hex`, and that your Teensy 2.0 is on the `COM3` port - if you're unsure, you can open your Device Manager, and look for `Ports > USB Serial Device`. Use that COM port here. You can confirm it's the right port with:
+?> Files marked with a * have combined Arduino sketches, which runs by default and also appears as a serial port. However, this is *not* the bootloader device.
- avrdude -c avrisp -P COM3 -p atmega32u4
+### BootloadHID (PS2AVRGB)
-and you should get something like the following output:
+This bootloader is primarily for keyboards originally designed for the PS2AVRGB firmware and Bootmapper Client. It is not recommended for use in new designs.
- avrdude: AVR device initialized and ready to accept instructions
+|MCU |Low |High |USB ID |
+|-----------------------------------------------------------------------------------------------------------|------|------|-----------|
+|[ATmega32A](https://github.com/qmk/qmk_firmware/blob/master/util/bootloader_ps2avrgb_bootloadhid_1.0.1.hex)|`0x0F`|`0xD0`|`16C0:05DF`|
- Reading | ################################################## | 100% 0.02s
+### USBaspLoader
- avrdude: Device signature = 0x1e9587
+USBaspLoader is a bootloader based on V-USB that emulates a hardware USBasp device. It runs on ATmega32A and ATmega328P MCUs.
- avrdude: safemode: Fuses OK
+Precompiled `.hex` files are generally not available, but you can compile it yourself by setting up the QMK environment and following Coseyfannitutti's guide for the appropriate MCU:
- avrdude done. Thank you.
+|MCU |Low |High |Extended|USB ID |
+|-------------------------------------------------------------------------------------|------|------|--------|-----------|
+|[ATmega32A](https://github.com/coseyfannitutti/discipline/tree/master/doc/bootloader)|`0x1F`|`0xC0`|*n/a* |`16C0:05DC`|
+|[ATmega328P](https://github.com/coseyfannitutti/discipad/tree/master/doc/bootloader) |`0xD7`|`0xD0`|`0x04` |`16C0:05DC`|
-Since our keyboard uses an `atmega32u4` (common), that is the chip we'll specify. This is the full command:
+Note that some boards may have their own specialized build of this bootloader in a separate repository. This will usually be linked to in the board's readme.
- avrdude -c avrisp -P COM3 -p atmega32u4 -U flash:w:main.hex:i
+## Flashing the Bootloader
-If your board uses an `atmega32a` (e.g. on a jj40), the command is this (the extra code at the end sets the fuses correctly):
+Open a new Terminal window - if you are on Windows, use MSYS2 or QMK MSYS, not the Command Prompt. Navigate to the directory your bootloader `.hex` is in. Now it's time to run the `avrdude` command.
- avrdude -c avrisp -P COM3 -p atmega32 -U flash:w:main.hex:i -U hfuse:w:0xD0:m -U lfuse:w:0x0F:m
+The syntax of `avrdude` is:
-You should see a couple of progress bars, then you should see:
+```
+avrdude -c -P -p -U flash:w::i
+```
- avrdude: verifying ...
- avrdude: 32768 bytes of flash verified
+ * `` corresponds to the programmer type listed for each ISP flasher in the [Hardware](#hardware) section, for example `avrisp`.
+ * `` is the serial port that appears when you plug the ISP flasher in, if any. For some programmers this is simply `usb` (or you can omit the `-P` argument completely) since they do not operate as a serial device.
+ * Windows: `COMx` - check Device Manager, under the "Ports (COM & LPT)" section
+ * Linux: `/dev/ttyACMx`
+ * macOS: `/dev/tty.usbmodemXXXXXX`
+ * `` should be the lowercase name of the target AVR microcontroller, for example `atmega32u4`.
+ * `` is the absolute or relative path to the bootloader to be flashed, for example `Caterina-Micro.hex`.
- avrdude: safemode: Fuses OK
+You can also run `man avrdude` for more information.
- avrdude done. Thank you.
+If all goes well, you should get output similar to the following:
-Which means everything should be ok! Your board may restart automatically, otherwise, unplug your Teensy and plug in your keyboard - you can leave your Teensy wired to your keyboard while testing things, but it's recommended that you desolder it/remove the wiring once you're sure everything works.
+```
+avrdude: AVR device initialized and ready to accept instructions
-If you're using a SparkFun PocketAVR Programmer, or another USB Tiny based ISP programmer, you will want to use something like this:
+Reading | ################################################## | 100% 0.00s
- avrdude -c usbtiny -P usb -p atmega32u4
+avrdude: Device signature = 0x1e9587 (probably m32u4)
+avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
+ To disable this feature, specify the -D option.
+avrdude: erasing chip
+avrdude: reading input file "Caterina-Micro.hex"
+avrdude: writing flash (32730 bytes):
-#### Advanced: Changing Fuses
+Writing | ################################################## | 100% 11.58s
-If you're switching bootloaders, such as flashing QMK DFU on a Pro Micro, you will need to change the fuses, in additional to flashing the bootloader hex file. This is because `caterina` (the Pro Micro bootloader) and `dfu` handle the startup routines differently, and that behavior is controlled by the fuses.
+avrdude: 32730 bytes of flash written
+avrdude: verifying flash memory against Caterina-Micro.hex:
+avrdude: load data flash data from input file Caterina-Micro.hex:
+avrdude: input file Caterina-Micro.hex contains 32730 bytes
+avrdude: reading on-chip flash data:
-!> This is one area that it is very important to be careful, as changing fuses is one of the ways that you can permanently brick your controller.
+Reading | ################################################## | 100% 10.33s
-For this, we are assuming the 5V 16MHz versions of the `atmega32u4` (such as the 5V Pro Micro).
+avrdude: verifying ...
+avrdude: 32730 bytes of flash verified
-For DFU on the `atmega32u4`, these are the fuse settings that you want:
+avrdude: safemode: Fuses OK (E:CB, H:D8, L:FF)
-| Fuse | Setting |
-|----------|------------------|
-| Low | `0x5E` |
-| High | `0xD9` or `0x99` |
-| Extended | `0xC3` |
+avrdude done. Thank you.
+```
-The High fuse can be 0xD9 or 0x99. The difference is that 0xD9 disables JTAG, which QMK Firmware disables via software as well, while 0x99 doesn't disable JTAG.
+### Setting the Fuses
-To set this add `-U lfuse:w:0x5E:m -U hfuse:w:0xD9:m -U efuse:w:0xC3:m` to your command. So the final command should look something like:
+This is a slightly more advanced topic, but may be necessary if you are switching from one bootloader to another (for example, Caterina to Atmel/QMK DFU on a Pro Micro). Fuses control some of the low-level functionality of the AVR microcontroller, such as clock speed, whether JTAG is enabled, and the size of the section of flash memory reserved for the bootloader, among other things. You can find a fuse calculator for many AVR parts [here](https://www.engbedded.com/conffuse/).
- avrdude -c avrisp -P COM3 -p atmega32u4 -U flash:w:main.hex:i -U lfuse:w:0x5E:m -U hfuse:w:0xD9:m -U efuse:w:0xC3:m
+!> **WARNING:** Setting incorrect fuse values, in particular the clock-related bits, may render the MCU practically unrecoverable without high voltage programming (not covered here)! Make sure to double check the commands you enter before you execute them.
-For Caterina on the `atmega32u4`, these are the fuse settings that you want:
+To set the fuses, add the following to the `avrdude` command:
-| Fuse | Setting|
-|----------|--------|
-| Low | `0xFF` |
-| High | `0xD8` |
-| Extended | `0xCB` |
+```
+-U lfuse:w:0xXX:m -U hfuse:w:0xXX:m -U efuse:w:0xXX:m
+```
-To set this add `-U lfuse:w:0xFF:m -U hfuse:w:0xD8:m -U efuse:w:0xCB:m` to your command. So the final command should look something like:
+where the `lfuse`, `hfuse` and `efuse` arguments represent the low, high and extended fuse bytes as listed in the [Hardware](#hardware) section.
- avrdude -c avrisp -P COM3 -p atmega32u4 -U flash:w:main.hex:i -U lfuse:w:0xFF:m -U hfuse:w:0xD8:m -U efuse:w:0xCB:m
+?> You may get a warning from `avrdude` that the extended fuse byte does not match what you provided when reading it back. If the second hex digit matches, this can usually be safely ignored, because the top four bits of this fuse do not actually exist on many AVR parts, and may read back as anything.
+## Creating a "Production" Firmware
-If you are using a different controller or want different configuration, you can use [this AVR Fuse Calculator](https://www.engbedded.com/fusecalc/) to find a better value for you.
+For mass production purposes, it is possible to join the bootloader and QMK firmware together into a single file, due to the way the [Intel Hex format](https://en.wikipedia.org/wiki/Intel_HEX) works:
-## Help
+ 1. Open the QMK firmware and bootloader `.hex` files in a text editor.
+ 2. Remove the last line of the QMK firmware (which should be `:00000001FF` - this is just an "end of file" marker).
+ 3. Paste the contents of the bootloader `.hex` file onto a new line at the end of the QMK firmware file, with no empty lines between.
+ 4. Save it as a new file, for example `__production.hex`.
-If you have any questions/problems, feel free to [open an issue](https://github.com/qmk/qmk_firmware/issues/new)!
+You can then ISP flash this combined firmware instead, which allows you to skip the extra step of flashing the QMK firmware over USB.
diff --git a/docs/ja/contributing.md b/docs/ja/contributing.md
index 14ef598ea910..56cc4d312daa 100644
--- a/docs/ja/contributing.md
+++ b/docs/ja/contributing.md
@@ -1,8 +1,8 @@
# 貢献方法
👍🎉 まず、これを読み貢献する時間を作ってくれてありがとうございます!🎉👍
@@ -79,7 +79,7 @@ QMK には幾つかの異なるタイプの変更があり、それぞれ異な
```
kerpleplork の fronzlebop を調整します
-kerpleplork はエラーコード 23 で連続的に失敗していました。根本的な原因は fronzlebop 設定で、これにより kerpleplork はN回の繰り返しごとにアクティブになります。
+kerpleplork はエラーコード 23 で連続的に失敗していました。根本的な原因は fronzlebop 設定で、これにより kerpleplork は N 回の繰り返しごとにアクティブになります。
私が使用できるデバイスの限られた実験では、kerpleplork の混乱を避けるために 7 は十分高い値であることを示していますが、念のため ARM デバイスを持つ人たちからフィードバックを得たいです。
```
@@ -122,7 +122,7 @@ enum my_keycodes {
ほとんどの初めての QMK 貢献者は、個人のキーマップから始めます。キーマップの標準はかなりカジュアルなものにしようとしています(キーマップは結局のところ作成者の性格を反映しています)が、他の人があなたのキーマップを簡単に見つけて学ぶことができるように、これらのガイドラインに従うようにお願いします。
-* [テンプレート](documentation_templates.md) を使って `readme.md` を書きます。
+* [テンプレート](ja/documentation_templates.md) を使って `readme.md` を書きます。
* 全てのキーマップの PR は squash されるため、コミットがどのように squash されるかを気にする場合は、自分で行う必要があります。
* キーマップの PR に機能をまとめないでください。最初に機能をサブミットし、次にキーマップのための2つ目の PR をサブミットします。
* `Makefile` をキーマップフォルダに含めないでください(もう使われていません)。
diff --git a/docs/ja/ja_doc_status.sh b/docs/ja/ja_doc_status.sh
new file mode 100644
index 000000000000..3dfbbd2bc6f6
--- /dev/null
+++ b/docs/ja/ja_doc_status.sh
@@ -0,0 +1,34 @@
+#! /bin/sh
+#
+# Script to display the Japanese translation status of documents
+#
+if [ ! -d docs/ja ]; then
+ echo "'docs/ja' not found."
+ echo "do:"
+ echo " cd \$(QMK_TOP)"
+ echo " ./docs/ja/ja_doc_status.sh"
+ exit 1
+fi
+
+en_docs=`cd docs;ls -1 [a-z]*.md`
+ja_docs=`cd docs/ja;ls -1 [a-z]*.md`
+en_count=`echo $en_docs | wc -w`
+ja_count=`echo $ja_docs | wc -w`
+echo "English documents $en_count files."
+echo "Japanese documents $ja_count files."
+
+echo "Files that have not been translated yet:"
+for docfile in $en_docs
+do
+ if [ ! -f docs/ja/$docfile ]; then
+ wc docs/$docfile
+ fi
+done | sort
+echo "Files that have not been updated yet:"
+grep --no-filename "^[ ]*git diff" docs/ja/*.md | while read cmd
+do
+ cline=`echo $cmd | sh | wc -l`
+ if [ $cline -gt 0 ]; then
+ echo "$cline $cmd"
+ fi
+done | sort
diff --git a/docs/ja/keycodes_us_ansi_shifted.md b/docs/ja/keycodes_us_ansi_shifted.md
new file mode 100644
index 000000000000..3a574d0bed5c
--- /dev/null
+++ b/docs/ja/keycodes_us_ansi_shifted.md
@@ -0,0 +1,41 @@
+# US ANSI シフト記号
+
+
+これらのキーコードは、標準の US ANSI 配列のキーボードで「シフトされる」文字に対応します。これらのキーコードは自身のキーコードを持たず、`LSFT(kc)` の単なるショートカットであり、記号自体ではなく Shift キー抜きのキーコードと左 Shift キーを送信します。
+
+## 注意書き
+
+残念ながら、これらのキーコードは、モッドタップやレイヤータップの中で使えません。キーコードで指定されたモディファイアは無視されるからです。
+
+さらに、Windows でリモートデスクトップ接続を使う場合に、問題が発生する場合があります。なぜならば、これらのコードは Shift キーを非常に速く送信するため、リモートデスクトップがコードを見落とすかもしれないからです。
+
+この問題を解決するには、リモートデスクトップ接続を開いて「オプションの表示」をクリックし、「ローカル リソース」タブを開きます。キーボードセクションでドロップダウンを「このコンピュータ」に変更します。これで問題が解決され、文字が正しく機能するようになります。
+
+## キーコード
+
+|キー |エイリアス |説明 |
+|------------------------|-------------------|-----------|
+|`KC_TILDE` |`KC_TILD` |`~` |
+|`KC_EXCLAIM` |`KC_EXLM` |`!` |
+|`KC_AT` | |`@` |
+|`KC_HASH` | |`#` |
+|`KC_DOLLAR` |`KC_DLR` |`$` |
+|`KC_PERCENT` |`KC_PERC` |`%` |
+|`KC_CIRCUMFLEX` |`KC_CIRC` |`^` |
+|`KC_AMPERSAND` |`KC_AMPR` |`&` |
+|`KC_ASTERISK` |`KC_ASTR` |`*` |
+|`KC_LEFT_PAREN` |`KC_LPRN` |`(` |
+|`KC_RIGHT_PAREN` |`KC_RPRN` |`)` |
+|`KC_UNDERSCORE` |`KC_UNDS` |`_` |
+|`KC_PLUS` | |`+` |
+|`KC_LEFT_CURLY_BRACE` |`KC_LCBR` |`{` |
+|`KC_RIGHT_CURLY_BRACE` |`KC_RCBR` |`}` |
+|`KC_PIPE` | |`\|` |
+|`KC_COLON` |`KC_COLN` |`:` |
+|`KC_DOUBLE_QUOTE` |`KC_DQUO`, `KC_DQT`|`"` |
+|`KC_LEFT_ANGLE_BRACKET` |`KC_LABK`, `KC_LT` |`<` |
+|`KC_RIGHT_ANGLE_BRACKET`|`KC_RABK`, `KC_GT` |`>` |
+|`KC_QUESTION` |`KC_QUES` |`?` |
diff --git a/docs/ja/syllabus.md b/docs/ja/syllabus.md
index 14e743ee9c4c..9209cb49e086 100644
--- a/docs/ja/syllabus.md
+++ b/docs/ja/syllabus.md
@@ -1,8 +1,8 @@
# QMK シラバス
このページは最初に基本を紹介し、そして、QMK に習熟するために必要な全ての概念を理解するように導くことで、QMK の知識を構築するのに役立ちます。
@@ -45,6 +45,7 @@
* [タップダンス](ja/feature_tap_dance.md)
* [コンボ](ja/feature_combo.md)
* [ユーザスペース](ja/feature_userspace.md)
+ * [キーオーバーライド](ja/feature_key_overrides.md)
# 上級トピック
@@ -58,7 +59,7 @@
* **高度な機能**
* [ユニコード](ja/feature_unicode.md)
* [API](ja/api_overview.md)
- * [ブートマジック](ja/feature_bootmagic.md)
+ * [ブートマジックライト](ja/feature_bootmagic.md)
* **ハードウェア**
* [キーボードがどのように動作するか](ja/how_keyboards_work.md)
* [キーボードマトリックスの仕組み](ja/how_a_matrix_works.md)
diff --git a/docs/ja/understanding_qmk.md b/docs/ja/understanding_qmk.md
index 5fcb7be85665..109876961b07 100644
--- a/docs/ja/understanding_qmk.md
+++ b/docs/ja/understanding_qmk.md
@@ -1,15 +1,15 @@
# QMK のコードの理解
このドキュメントでは、QMK ファームウェアがどのように機能するかを非常に高いレベルから説明しようとしています。基本的なプログラミングの概念を理解していることを前提としていますが、(実例を示す必要がある場合を除き) C に精通していることを前提にはしていません。以下のドキュメントの基本的な知識があることを前提としています。
* [入門](ja/getting_started_introduction.md)
* [キーボードがどのように動作するか](ja/how_keyboards_work.md)
-* [FAQ](ja/faq.md)
+* [FAQ](ja/faq_general.md)
## スタートアップ
@@ -138,41 +138,42 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
`process_record()` 関数自体は一見簡単に見えますが、その内部は QMK の様々なレベルで機能を上書きするためのゲートウェイが隠されています。キーボード/キーマップレベルの機能について調べる必要があるときは、以下に列挙した一連のイベントを手引帳として使います。`rules.mk` またはほかの場所で設定されたオプションに応じて、最終的なファームウェアに以下の関数のサブセットのみが含まれます。
* [`void process_record(keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/tmk_core/common/action.c#L172)
- * [`bool process_record_quantum(keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/quantum.c#L206)
- * [このレコードをキーコードにマップする](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/quantum.c#L226)
- * [`void velocikey_accelerate(void)`](https://github.com/qmk/qmk_firmware/blob/c1c5922aae7b60b7c7d13d3769350eed9dda17ab/quantum/velocikey.c#L27)
- * [`void preprocess_tap_dance(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_tap_dance.c#L119)
- * [`bool process_key_lock(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_key_lock.c#L62)
- * [`bool process_clicky(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_clicky.c#L79)
- * [`bool process_haptic(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/2cee371bf125a6ec541dd7c5a809573facc7c456/drivers/haptic/haptic.c#L216)
- * [`bool process_record_kb(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/keyboards/clueboard/card/card.c#L20)
- * [`bool process_record_user(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/keyboards/clueboard/card/keymaps/default/keymap.c#L58)
- * [`bool process_midi(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_midi.c#L81)
- * [`bool process_audio(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_audio.c#L19)
- * [`bool process_steno(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_steno.c#L160)
- * [`bool process_music(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_music.c#L114)
- * [`bool process_tap_dance(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_tap_dance.c#L141)
- * [`bool process_unicode_common(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_unicode_common.c#L169) は、以下のいずれかを呼び出します:
- * [`bool process_unicode(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_unicode.c#L20)
- * [`bool process_unicodemap(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_unicodemap.c#L46)
- * [`bool process_ucis(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_ucis.c#L95)
- * [`bool process_leader(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_leader.c#L51)
- * [`bool process_combo(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_combo.c#L115)
- * [`bool process_printer(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_printer.c#L77)
- * [`bool process_auto_shift(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_auto_shift.c#L94)
- * [`bool process_terminal(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_terminal.c#L264)
- * [Quantum 固有のキーコードを識別して処理する](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/quantum.c#L291)
+ * [`bool process_record_quantum(keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/quantum.c#L206)
+ * [このレコードをキーコードにマップする](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/quantum.c#L226)
+ * [`void velocikey_accelerate(void)`](https://github.com/qmk/qmk_firmware/blob/c1c5922aae7b60b7c7d13d3769350eed9dda17ab/quantum/velocikey.c#L27)
+ * [`void preprocess_tap_dance(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_tap_dance.c#L119)
+ * [`bool process_key_lock(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_key_lock.c#L62)
+ * [`bool process_clicky(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_clicky.c#L79)
+ * [`bool process_haptic(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/2cee371bf125a6ec541dd7c5a809573facc7c456/drivers/haptic/haptic.c#L216)
+ * [`bool process_record_kb(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/keyboards/clueboard/card/card.c#L20)
+ * [`bool process_record_user(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/keyboards/clueboard/card/keymaps/default/keymap.c#L58)
+ * [`bool process_midi(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_midi.c#L81)
+ * [`bool process_audio(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_audio.c#L19)
+ * [`bool process_steno(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_steno.c#L160)
+ * [`bool process_music(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_music.c#L114)
+ * [`bool process_key_override(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/5a1b857dea45a17698f6baa7dd1b7a7ea907fb0a/quantum/process_keycode/process_key_override.c#L397)
+ * [`bool process_tap_dance(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_tap_dance.c#L141)
+ * [`bool process_unicode_common(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_unicode_common.c#L169) は、以下のいずれかを呼び出します:
+ * [`bool process_unicode(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_unicode.c#L20)
+ * [`bool process_unicodemap(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_unicodemap.c#L46)
+ * [`bool process_ucis(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_ucis.c#L95)
+ * [`bool process_leader(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_leader.c#L51)
+ * [`bool process_combo(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_combo.c#L115)
+ * [`bool process_printer(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_printer.c#L77)
+ * [`bool process_auto_shift(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_auto_shift.c#L94)
+ * [`bool process_terminal(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_terminal.c#L264)
+ * [Quantum 固有のキーコードを識別して処理する](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/quantum.c#L291)
この一連のイベントの中の任意のステップで (`process_record_kb()` のような)関数は `false` を返して、以降の処理を停止することができます。
この呼び出しの後で、`post_process_record()` が呼ばれます。これはキーコードが通常処理された後に実行する必要がある追加のクリーンアップを処理するために使うことができます。
* [`void post_process_record(keyrecord_t *record)`]()
- * [`void post_process_record_quantum(keyrecord_t *record)`]()
- * [このレコードをキーコードにマップする]()
- * [`void post_process_clicky(uint16_t keycode, keyrecord_t *record)`]()
- * [`void post_process_record_kb(uint16_t keycode, keyrecord_t *record)`]()
- * [`void post_process_record_user(uint16_t keycode, keyrecord_t *record)`]()
+ * [`void post_process_record_quantum(keyrecord_t *record)`]()
+ * [このレコードをキーコードにマップする]()
+ * [`void post_process_clicky(uint16_t keycode, keyrecord_t *record)`]()
+ * [`void post_process_record_kb(uint16_t keycode, keyrecord_t *record)`]()
+ * [`void post_process_record_user(uint16_t keycode, keyrecord_t *record)`]()
This keymap makes use of user/jonavin userspace
+
+Features
+ - Split spacebars, Split Backspace
+ - Inverted Num Lock indicator (LED on when num lock if off)
+ - RGB Winlock indicator (requires LED stripto be installed)
+ - RGB Layer indicators: FN/MO1 - Purple; LOWER/MO2 - Yellow; RAISE/MO3/NumPad - Green
+ - quick demo https://youtu.be/gR1awbsouLk
+
+- Add PrtScr, Scroll Lock, Break, NumLock to Fn layer
+- Implement Win key lock using Fn+Win
+- Layer 2 (LOWER) when right B is held -- for emoticons
+- Layer 2 RGB functions, and EEPROM Reset
+- Layer 3 (RAISE) mod on Caps Lock with double-tap to switch to this layer, double tap to switch back
+ - provides arrows on WASD and additional nav keys + right hand numpad with 00; an be used for Alt Code entry
+ - left spacebar Backspace
+- add double tap of Left Shift to toggle Caps Lock
+- Up arrow is also Shift when held
+- Pushing the encoder switches the default encoder scroll between volume control and Alt-Tab
+
+
+rules.mk OPTIONS - Active features from userspace
+--------------------------------------------------
+
+STARTUP_NUMLOCK_ON = yes
+- turns on NUMLOCK by default
+
+ENCODER_DEFAULTACTIONS_ENABLE = yes
+- Enables default encoder funtions
+ - holding Left shift, change layers
+ - holding right shift, Navigate page up/down
+ - holding Left Ctrl, navigate prev/next word
+ - holding Left Alt, change media prev/next track
+ - default is change volume
+
+TD_LSFT_CAPSLOCK_ENABLE = yes
+ - This will enable double tap on Left Shift to toggle CAPSLOCK when using KC_LSFTCAPS
+
+IDLE_TIMEOUT_ENABLE = yes
+ - Enables Timer functionality; for RGB idle timeouts that can be changed dynamically
+
+EMOTICON_ENABLE
+ - adds EMO_ keycodes for text emojis
+
+INVERT_NUMLOCK_INDICATOR
+ - inverts the Num lock indicator, LED is on when num lokc is off
+
+ALTTAB_SCROLL_ENABLE
+ - bind KS_TSTOG to a different key to change how this toggle happens
+
+## All layers diagram
+![image](https://user-images.githubusercontent.com/71780717/137356366-6b23c71b-9499-473e-a1e3-c65644135fc6.png)
diff --git a/keyboards/mechwild/obe/keymaps/jonavin/rules.mk b/keyboards/mechwild/obe/keymaps/jonavin/rules.mk
new file mode 100644
index 000000000000..6a9acf5d0712
--- /dev/null
+++ b/keyboards/mechwild/obe/keymaps/jonavin/rules.mk
@@ -0,0 +1,14 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
+RGBLIGHT_ENABLE = yes
+
+MOUSEKEY_ENABLE = no
+TAP_DANCE_ENABLE = yes
+
+TD_LSFT_CAPSLOCK_ENABLE = yes
+STARTUP_NUMLOCK_ON = yes
+ENCODER_DEFAULTACTIONS_ENABLE = yes
+EMOTICON_ENABLE = yes
+INVERT_NUMLOCK_INDICATOR = yes
+
+ALTTAB_SCROLL_ENABLE = yes
diff --git a/keyboards/mechwild/obe/obe.c b/keyboards/mechwild/obe/obe.c
index 195d4a76790d..8612764ae5a1 100644
--- a/keyboards/mechwild/obe/obe.c
+++ b/keyboards/mechwild/obe/obe.c
@@ -16,6 +16,12 @@
#include "obe.h"
+void board_init(void) {
+ // B9 is configured as I2C1_SDA in the board file; that function must be
+ // disabled before using B7 as I2C1_SDA.
+ setPinInputHigh(B9);
+}
+
#ifdef ENCODER_ENABLE
bool encoder_update_kb(uint8_t index, bool clockwise) {
if (!encoder_update_user(index, clockwise)) { return false; }
diff --git a/keyboards/mechwild/obe/rules.mk b/keyboards/mechwild/obe/rules.mk
index 8271e9d1d652..fb66887e62aa 100644
--- a/keyboards/mechwild/obe/rules.mk
+++ b/keyboards/mechwild/obe/rules.mk
@@ -11,7 +11,7 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
ENCODER_ENABLE = yes # Encoder Enabled
diff --git a/keyboards/meishi2/keymaps/via/keymap.c b/keyboards/meishi2/keymaps/via/keymap.c
new file mode 100644
index 000000000000..be706ea09a63
--- /dev/null
+++ b/keyboards/meishi2/keymaps/via/keymap.c
@@ -0,0 +1,31 @@
+/* Copyright 2019 Biacco42
+ *
+ * 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 */
+ LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V)
+ ),
+ [1] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+};
diff --git a/keyboards/meishi2/keymaps/via/rules.mk b/keyboards/meishi2/keymaps/via/rules.mk
new file mode 100644
index 000000000000..c859353a464c
--- /dev/null
+++ b/keyboards/meishi2/keymaps/via/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+CONSOLE_ENABLE = no
+COMMAND_ENABLE = no
diff --git a/keyboards/meletrix/zoom65/config.h b/keyboards/meletrix/zoom65/config.h
new file mode 100644
index 000000000000..4eb85aeb4960
--- /dev/null
+++ b/keyboards/meletrix/zoom65/config.h
@@ -0,0 +1,51 @@
+/* Copyright 2021 meletrix
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x806B
+#define PRODUCT_ID 0x0004
+#define DEVICE_VER 0x0001
+#define MANUFACTURER meletrix
+#define PRODUCT zoom65
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+#define MATRIX_ROW_PINS { F0, E6, D5, F1, F4 }
+#define MATRIX_COL_PINS { C7, D3, D2, D1, D0, B7, B3, B2, C6, B6, B5, B4, D7, D6, D4 }
+
+#define DIODE_DIRECTION COL2ROW
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Enable encoder */
+#define ENCODERS_PAD_A { B1 }
+#define ENCODERS_PAD_B { B0 }
+
+#define ENCODERS 1
+// Note: array is { col, row )
+#define ENCODERS_CW_KEY { { 5, 4 } }
+#define ENCODERS_CCW_KEY { { 3, 4 } }
+
+#define LED_CAPS_LOCK_PIN F7
+#define LED_PIN_ON_STATE 0
+
diff --git a/keyboards/meletrix/zoom65/info.json b/keyboards/meletrix/zoom65/info.json
new file mode 100644
index 000000000000..49535c106e93
--- /dev/null
+++ b/keyboards/meletrix/zoom65/info.json
@@ -0,0 +1,467 @@
+{
+ "keyboard_name": "zoom65",
+ "url": "https://zoom65.com/",
+ "maintainer": "qmk",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ { "label": "Esc", "x": 0, "y": 0 },
+ { "label": "1", "x": 1, "y": 0 },
+ { "label": "2", "x": 2, "y": 0 },
+ { "label": "3", "x": 3, "y": 0 },
+ { "label": "4", "x": 4, "y": 0 },
+ { "label": "5", "x": 5, "y": 0 },
+ { "label": "6", "x": 6, "y": 0 },
+ { "label": "7", "x": 7, "y": 0 },
+ { "label": "8", "x": 8, "y": 0 },
+ { "label": "9", "x": 9, "y": 0 },
+ { "label": "0", "x": 10, "y": 0 },
+ { "label": "-", "x": 11, "y": 0 },
+ { "label": "=", "x": 12, "y": 0 },
+ { "label": "Backspace", "x": 13, "y": 0 },
+ { "label": "EncoderRotateL", "x": 15, "y": 0, "w": 0.5 },
+ { "label": "EncoderClick", "x": 15.5, "y": 0 },
+ { "label": "EncoderRotateR", "x": 16.5, "y": 0, "w": 0.5 },
+
+ { "label": "Tab", "x": 0, "y": 1, "w": 1.5 },
+ { "label": "Q", "x": 1.5, "y": 1 },
+ { "label": "W", "x": 2.5, "y": 1 },
+ { "label": "E", "x": 3.5, "y": 1 },
+ { "label": "R", "x": 4.5, "y": 1 },
+ { "label": "T", "x": 5.5, "y": 1 },
+ { "label": "Y", "x": 6.5, "y": 1 },
+ { "label": "U", "x": 7.5, "y": 1 },
+ { "label": "I", "x": 8.5, "y": 1 },
+ { "label": "O", "x": 9.5, "y": 1 },
+ { "label": "P", "x": 10.5, "y": 1 },
+ { "label": "[", "x": 11.5, "y": 1 },
+ { "label": "]", "x": 12.5, "y": 1 },
+ { "label": "\\", "x": 13.5, "y": 1, "w": 1.5 },
+ { "label": "Delete", "x": 15, "y": 1 },
+
+ { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 },
+ { "label": "A", "x": 1.75, "y": 2 },
+ { "label": "S", "x": 2.75, "y": 2 },
+ { "label": "D", "x": 3.75, "y": 2 },
+ { "label": "F", "x": 4.75, "y": 2 },
+ { "label": "G", "x": 5.75, "y": 2 },
+ { "label": "H", "x": 6.75, "y": 2 },
+ { "label": "J", "x": 7.75, "y": 2 },
+ { "label": "K", "x": 8.75, "y": 2 },
+ { "label": "L", "x": 9.75, "y": 2 },
+ { "label": ";", "x": 10.75, "y": 2 },
+ { "label": "'", "x": 11.75, "y": 2 },
+ { "label": "Enter", "x": 12.75, "y": 2, "w": 2.25 },
+ { "label": "Backspace", "x": 14, "y": 0 },
+ { "label": "PageUp", "x": 15, "y": 2 },
+
+ { "label": "Shift1", "x": 0, "y": 3, "w": 1.25 },
+ { "label": "Shift2", "x": 1.25, "y": 3 },
+ { "label": "Z", "x": 2.25, "y": 3 },
+ { "label": "X", "x": 3.25, "y": 3 },
+ { "label": "C", "x": 4.25, "y": 3 },
+ { "label": "V", "x": 5.25, "y": 3 },
+ { "label": "B", "x": 6.25, "y": 3 },
+ { "label": "N", "x": 7.25, "y": 3 },
+ { "label": "M", "x": 8.25, "y": 3 },
+ { "label": ",", "x": 9.25, "y": 3 },
+ { "label": ".", "x": 10.25, "y": 3 },
+ { "label": "/", "x": 11.25, "y": 3 },
+ { "label": "Shift", "x": 12.25, "y": 3, "w": 1.75 },
+ { "label": "\u2191", "x": 14, "y": 3 },
+ { "label": "End", "x": 15, "y": 3 },
+
+ { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 },
+ { "label": "Win", "x": 1.25, "y": 4, "w": 1.25 },
+ { "label": "Alt", "x": 2.5, "y": 4, "w": 1.25 },
+ { "x": 3.75, "y": 4, "w": 2.25 },
+ { "x": 6, "y": 4, "w": 1.25 },
+ { "x": 7.25, "y": 4, "w": 2.75 },
+ { "label": "Alt", "x": 10, "y": 4, "w": 1.25 },
+ { "label": "Fn", "x": 11.25, "y": 4, "w": 1.25 },
+ { "label": "\u2190", "x": 13, "y": 4 },
+ { "label": "\u2193", "x": 14, "y": 4 },
+ { "label": "\u2192", "x": 15, "y": 4 }
+ ]
+ },
+ "LAYOUT_65_ansi_blocker": {
+ "layout": [
+ { "label": "Esc", "x": 0, "y": 0 },
+ { "label": "1", "x": 1, "y": 0 },
+ { "label": "2", "x": 2, "y": 0 },
+ { "label": "3", "x": 3, "y": 0 },
+ { "label": "4", "x": 4, "y": 0 },
+ { "label": "5", "x": 5, "y": 0 },
+ { "label": "6", "x": 6, "y": 0 },
+ { "label": "7", "x": 7, "y": 0 },
+ { "label": "8", "x": 8, "y": 0 },
+ { "label": "9", "x": 9, "y": 0 },
+ { "label": "0", "x": 10, "y": 0 },
+ { "label": "-", "x": 11, "y": 0 },
+ { "label": "=", "x": 12, "y": 0 },
+ { "label": "Backspace", "x": 13, "y": 0, "w": 2 },
+ { "label": "Encode", "x": 15, "y": 0 },
+
+ { "label": "Tab", "x": 0, "y": 1, "w": 1.5 },
+ { "label": "Q", "x": 1.5, "y": 1 },
+ { "label": "W", "x": 2.5, "y": 1 },
+ { "label": "E", "x": 3.5, "y": 1 },
+ { "label": "R", "x": 4.5, "y": 1 },
+ { "label": "T", "x": 5.5, "y": 1 },
+ { "label": "Y", "x": 6.5, "y": 1 },
+ { "label": "U", "x": 7.5, "y": 1 },
+ { "label": "I", "x": 8.5, "y": 1 },
+ { "label": "O", "x": 9.5, "y": 1 },
+ { "label": "P", "x": 10.5, "y": 1 },
+ { "label": "[", "x": 11.5, "y": 1 },
+ { "label": "]", "x": 12.5, "y": 1 },
+ { "label": "\\", "x": 13.5, "y": 1, "w": 1.5 },
+ { "label": "Delete", "x": 15, "y": 1 },
+
+ { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 },
+ { "label": "A", "x": 1.75, "y": 2 },
+ { "label": "S", "x": 2.75, "y": 2 },
+ { "label": "D", "x": 3.75, "y": 2 },
+ { "label": "F", "x": 4.75, "y": 2 },
+ { "label": "G", "x": 5.75, "y": 2 },
+ { "label": "H", "x": 6.75, "y": 2 },
+ { "label": "J", "x": 7.75, "y": 2 },
+ { "label": "K", "x": 8.75, "y": 2 },
+ { "label": "L", "x": 9.75, "y": 2 },
+ { "label": ";", "x": 10.75, "y": 2 },
+ { "label": "'", "x": 11.75, "y": 2 },
+ { "label": "Enter", "x": 12.75, "y": 2, "w": 2.25 },
+ { "label": "PageUp", "x": 15, "y": 2 },
+
+ { "label": "Shift", "x": 0, "y": 3, "w": 2.25 },
+ { "label": "Z", "x": 2.25, "y": 3 },
+ { "label": "X", "x": 3.25, "y": 3 },
+ { "label": "C", "x": 4.25, "y": 3 },
+ { "label": "V", "x": 5.25, "y": 3 },
+ { "label": "B", "x": 6.25, "y": 3 },
+ { "label": "N", "x": 7.25, "y": 3 },
+ { "label": "M", "x": 8.25, "y": 3 },
+ { "label": ",", "x": 9.25, "y": 3 },
+ { "label": ".", "x": 10.25, "y": 3 },
+ { "label": "/", "x": 11.25, "y": 3 },
+ { "label": "Shift", "x": 12.25, "y": 3, "w": 1.75 },
+ { "label": "\u2191", "x": 14, "y": 3 },
+ { "label": "End", "x": 15, "y": 3 },
+
+ { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 },
+ { "label": "Win", "x": 1.25, "y": 4, "w": 1.25 },
+ { "label": "Alt", "x": 2.5, "y": 4, "w": 1.25 },
+ { "x": 3.75, "y": 4, "w": 6.25 },
+ { "label": "Alt", "x": 10, "y": 4, "w": 1.25 },
+ { "label": "Fn", "x": 11.25, "y": 4, "w": 1.25 },
+ { "label": "\u2190", "x": 13, "y": 4 },
+ { "label": "\u2193", "x": 14, "y": 4 },
+ { "label": "\u2192", "x": 15, "y": 4 }
+ ]
+ },
+ "LAYOUT_65_iso_blocker": {
+ "layout": [
+ { "label": "Esc", "x": 0, "y": 0 },
+ { "label": "1", "x": 1, "y": 0 },
+ { "label": "2", "x": 2, "y": 0 },
+ { "label": "3", "x": 3, "y": 0 },
+ { "label": "4", "x": 4, "y": 0 },
+ { "label": "5", "x": 5, "y": 0 },
+ { "label": "6", "x": 6, "y": 0 },
+ { "label": "7", "x": 7, "y": 0 },
+ { "label": "8", "x": 8, "y": 0 },
+ { "label": "9", "x": 9, "y": 0 },
+ { "label": "0", "x": 10, "y": 0 },
+ { "label": "-", "x": 11, "y": 0 },
+ { "label": "=", "x": 12, "y": 0 },
+ { "label": "Backspace", "x": 13, "y": 0, "w": 2 },
+ { "label": "Encode", "x": 15, "y": 0 },
+
+ { "label": "Tab", "x": 0, "y": 1, "w": 1.5 },
+ { "label": "Q", "x": 1.5, "y": 1 },
+ { "label": "W", "x": 2.5, "y": 1 },
+ { "label": "E", "x": 3.5, "y": 1 },
+ { "label": "R", "x": 4.5, "y": 1 },
+ { "label": "T", "x": 5.5, "y": 1 },
+ { "label": "Y", "x": 6.5, "y": 1 },
+ { "label": "U", "x": 7.5, "y": 1 },
+ { "label": "I", "x": 8.5, "y": 1 },
+ { "label": "O", "x": 9.5, "y": 1 },
+ { "label": "P", "x": 10.5, "y": 1 },
+ { "label": "[", "x": 11.5, "y": 1 },
+ { "label": "]", "x": 12.5, "y": 1 },
+ { "label": "ISO", "x": 13.75, "y": 1, "w": 1.25, "h": 2 },
+ { "label": "Delete", "x": 15, "y": 1 },
+
+ { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 },
+ { "label": "A", "x": 1.75, "y": 2 },
+ { "label": "S", "x": 2.75, "y": 2 },
+ { "label": "D", "x": 3.75, "y": 2 },
+ { "label": "F", "x": 4.75, "y": 2 },
+ { "label": "G", "x": 5.75, "y": 2 },
+ { "label": "H", "x": 6.75, "y": 2 },
+ { "label": "J", "x": 7.75, "y": 2 },
+ { "label": "K", "x": 8.75, "y": 2 },
+ { "label": "L", "x": 9.75, "y": 2 },
+ { "label": ";", "x": 10.75, "y": 2 },
+ { "label": "'", "x": 11.75, "y": 2 },
+ { "label": "\\", "x": 12.75, "y": 2 },
+ { "label": "PageUp", "x": 15, "y": 2 },
+
+ { "label": "Shift", "x": 0, "y": 3, "w": 2.25 },
+ { "label": "Z", "x": 2.25, "y": 3 },
+ { "label": "X", "x": 3.25, "y": 3 },
+ { "label": "C", "x": 4.25, "y": 3 },
+ { "label": "V", "x": 5.25, "y": 3 },
+ { "label": "B", "x": 6.25, "y": 3 },
+ { "label": "N", "x": 7.25, "y": 3 },
+ { "label": "M", "x": 8.25, "y": 3 },
+ { "label": ",", "x": 9.25, "y": 3 },
+ { "label": ".", "x": 10.25, "y": 3 },
+ { "label": "/", "x": 11.25, "y": 3 },
+ { "label": "Shift", "x": 12.25, "y": 3, "w": 1.75 },
+ { "label": "\u2191", "x": 14, "y": 3 },
+ { "label": "End", "x": 15, "y": 3 },
+
+ { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 },
+ { "label": "Win", "x": 1.25, "y": 4, "w": 1.25 },
+ { "label": "Alt", "x": 2.5, "y": 4, "w": 1.25 },
+ { "x": 3.75, "y": 4, "w": 6.25 },
+ { "label": "Alt", "x": 10, "y": 4, "w": 1.25 },
+ { "label": "Fn", "x": 11.25, "y": 4, "w": 1.25 },
+ { "label": "\u2190", "x": 13, "y": 4 },
+ { "label": "\u2193", "x": 14, "y": 4 },
+ { "label": "\u2192", "x": 15, "y": 4 }
+ ]
+ },
+ "LAYOUT_65_ansi_split_bs": {
+ "layout": [
+ { "label": "Esc", "x": 0, "y": 0 },
+ { "label": "1", "x": 1, "y": 0 },
+ { "label": "2", "x": 2, "y": 0 },
+ { "label": "3", "x": 3, "y": 0 },
+ { "label": "4", "x": 4, "y": 0 },
+ { "label": "5", "x": 5, "y": 0 },
+ { "label": "6", "x": 6, "y": 0 },
+ { "label": "7", "x": 7, "y": 0 },
+ { "label": "8", "x": 8, "y": 0 },
+ { "label": "9", "x": 9, "y": 0 },
+ { "label": "0", "x": 10, "y": 0 },
+ { "label": "-", "x": 11, "y": 0 },
+ { "label": "=", "x": 12, "y": 0 },
+ { "label": "Backspace", "x": 13, "y": 0 },
+ { "label": "Encode", "x": 15, "y": 0 },
+
+ { "label": "Tab", "x": 0, "y": 1, "w": 1.5 },
+ { "label": "Q", "x": 1.5, "y": 1 },
+ { "label": "W", "x": 2.5, "y": 1 },
+ { "label": "E", "x": 3.5, "y": 1 },
+ { "label": "R", "x": 4.5, "y": 1 },
+ { "label": "T", "x": 5.5, "y": 1 },
+ { "label": "Y", "x": 6.5, "y": 1 },
+ { "label": "U", "x": 7.5, "y": 1 },
+ { "label": "I", "x": 8.5, "y": 1 },
+ { "label": "O", "x": 9.5, "y": 1 },
+ { "label": "P", "x": 10.5, "y": 1 },
+ { "label": "[", "x": 11.5, "y": 1 },
+ { "label": "]", "x": 12.5, "y": 1 },
+ { "label": "\\", "x": 13.5, "y": 1, "w": 1.5 },
+ { "label": "Delete", "x": 15, "y": 1 },
+
+ { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 },
+ { "label": "A", "x": 1.75, "y": 2 },
+ { "label": "S", "x": 2.75, "y": 2 },
+ { "label": "D", "x": 3.75, "y": 2 },
+ { "label": "F", "x": 4.75, "y": 2 },
+ { "label": "G", "x": 5.75, "y": 2 },
+ { "label": "H", "x": 6.75, "y": 2 },
+ { "label": "J", "x": 7.75, "y": 2 },
+ { "label": "K", "x": 8.75, "y": 2 },
+ { "label": "L", "x": 9.75, "y": 2 },
+ { "label": ";", "x": 10.75, "y": 2 },
+ { "label": "'", "x": 11.75, "y": 2 },
+ { "label": "Enter", "x": 12.75, "y": 2, "w": 2.25 },
+ { "label": "Backspace", "x": 14, "y": 0 },
+ { "label": "PageUp", "x": 15, "y": 2 },
+
+ { "label": "Shift", "x": 0, "y": 3, "w": 2.25 },
+ { "label": "Z", "x": 2.25, "y": 3 },
+ { "label": "X", "x": 3.25, "y": 3 },
+ { "label": "C", "x": 4.25, "y": 3 },
+ { "label": "V", "x": 5.25, "y": 3 },
+ { "label": "B", "x": 6.25, "y": 3 },
+ { "label": "N", "x": 7.25, "y": 3 },
+ { "label": "M", "x": 8.25, "y": 3 },
+ { "label": ",", "x": 9.25, "y": 3 },
+ { "label": ".", "x": 10.25, "y": 3 },
+ { "label": "/", "x": 11.25, "y": 3 },
+ { "label": "Shift", "x": 12.25, "y": 3, "w": 1.75 },
+ { "label": "\u2191", "x": 14, "y": 3 },
+ { "label": "End", "x": 15, "y": 3 },
+
+ { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 },
+ { "label": "Win", "x": 1.25, "y": 4, "w": 1.25 },
+ { "label": "Alt", "x": 2.5, "y": 4, "w": 1.25 },
+ { "x": 3.75, "y": 4, "w": 6.25 },
+ { "label": "Alt", "x": 10, "y": 4, "w": 1.25 },
+ { "label": "Fn", "x": 11.25, "y": 4, "w": 1.25 },
+ { "label": "\u2190", "x": 13, "y": 4 },
+ { "label": "\u2193", "x": 14, "y": 4 },
+ { "label": "\u2192", "x": 15, "y": 4 }
+ ]
+ },
+ "LAYOUT_65_ansi_split_lshift": {
+ "layout": [
+ { "label": "Esc", "x": 0, "y": 0 },
+ { "label": "1", "x": 1, "y": 0 },
+ { "label": "2", "x": 2, "y": 0 },
+ { "label": "3", "x": 3, "y": 0 },
+ { "label": "4", "x": 4, "y": 0 },
+ { "label": "5", "x": 5, "y": 0 },
+ { "label": "6", "x": 6, "y": 0 },
+ { "label": "7", "x": 7, "y": 0 },
+ { "label": "8", "x": 8, "y": 0 },
+ { "label": "9", "x": 9, "y": 0 },
+ { "label": "0", "x": 10, "y": 0 },
+ { "label": "-", "x": 11, "y": 0 },
+ { "label": "=", "x": 12, "y": 0 },
+ { "label": "Backspace", "x": 13, "y": 0, "w": 2 },
+ { "label": "Encode", "x": 15, "y": 0 },
+
+ { "label": "Tab", "x": 0, "y": 1, "w": 1.5 },
+ { "label": "Q", "x": 1.5, "y": 1 },
+ { "label": "W", "x": 2.5, "y": 1 },
+ { "label": "E", "x": 3.5, "y": 1 },
+ { "label": "R", "x": 4.5, "y": 1 },
+ { "label": "T", "x": 5.5, "y": 1 },
+ { "label": "Y", "x": 6.5, "y": 1 },
+ { "label": "U", "x": 7.5, "y": 1 },
+ { "label": "I", "x": 8.5, "y": 1 },
+ { "label": "O", "x": 9.5, "y": 1 },
+ { "label": "P", "x": 10.5, "y": 1 },
+ { "label": "[", "x": 11.5, "y": 1 },
+ { "label": "]", "x": 12.5, "y": 1 },
+ { "label": "\\", "x": 13.5, "y": 1, "w": 1.5 },
+ { "label": "Delete", "x": 15, "y": 1 },
+
+ { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 },
+ { "label": "A", "x": 1.75, "y": 2 },
+ { "label": "S", "x": 2.75, "y": 2 },
+ { "label": "D", "x": 3.75, "y": 2 },
+ { "label": "F", "x": 4.75, "y": 2 },
+ { "label": "G", "x": 5.75, "y": 2 },
+ { "label": "H", "x": 6.75, "y": 2 },
+ { "label": "J", "x": 7.75, "y": 2 },
+ { "label": "K", "x": 8.75, "y": 2 },
+ { "label": "L", "x": 9.75, "y": 2 },
+ { "label": ";", "x": 10.75, "y": 2 },
+ { "label": "'", "x": 11.75, "y": 2 },
+ { "label": "Enter", "x": 12.75, "y": 2, "w": 2.25 },
+ { "label": "PageUp", "x": 15, "y": 2 },
+
+ { "label": "Shift1", "x": 0, "y": 3, "w": 1.25 },
+ { "label": "Shift2", "x": 1.25, "y": 3 },
+ { "label": "Z", "x": 2.25, "y": 3 },
+ { "label": "X", "x": 3.25, "y": 3 },
+ { "label": "C", "x": 4.25, "y": 3 },
+ { "label": "V", "x": 5.25, "y": 3 },
+ { "label": "B", "x": 6.25, "y": 3 },
+ { "label": "N", "x": 7.25, "y": 3 },
+ { "label": "M", "x": 8.25, "y": 3 },
+ { "label": ",", "x": 9.25, "y": 3 },
+ { "label": ".", "x": 10.25, "y": 3 },
+ { "label": "/", "x": 11.25, "y": 3 },
+ { "label": "Shift", "x": 12.25, "y": 3, "w": 1.75 },
+ { "label": "\u2191", "x": 14, "y": 3 },
+ { "label": "End", "x": 15, "y": 3 },
+
+ { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 },
+ { "label": "Win", "x": 1.25, "y": 4, "w": 1.25 },
+ { "label": "Alt", "x": 2.5, "y": 4, "w": 1.25 },
+ { "x": 3.75, "y": 4, "w": 6.25 },
+ { "label": "Alt", "x": 10, "y": 4, "w": 1.25 },
+ { "label": "Fn", "x": 11.25, "y": 4, "w": 1.25 },
+ { "label": "\u2190", "x": 13, "y": 4 },
+ { "label": "\u2193", "x": 14, "y": 4 },
+ { "label": "\u2192", "x": 15, "y": 4 }
+ ]
+ },
+ "LAYOUT_65_split_space": {
+ "layout": [
+ { "label": "Esc", "x": 0, "y": 0 },
+ { "label": "1", "x": 1, "y": 0 },
+ { "label": "2", "x": 2, "y": 0 },
+ { "label": "3", "x": 3, "y": 0 },
+ { "label": "4", "x": 4, "y": 0 },
+ { "label": "5", "x": 5, "y": 0 },
+ { "label": "6", "x": 6, "y": 0 },
+ { "label": "7", "x": 7, "y": 0 },
+ { "label": "8", "x": 8, "y": 0 },
+ { "label": "9", "x": 9, "y": 0 },
+ { "label": "0", "x": 10, "y": 0 },
+ { "label": "-", "x": 11, "y": 0 },
+ { "label": "=", "x": 12, "y": 0 },
+ { "label": "Backspace", "x": 13, "y": 0, "w": 2 },
+ { "label": "Encode", "x": 15, "y": 0 },
+
+ { "label": "Tab", "x": 0, "y": 1, "w": 1.5 },
+ { "label": "Q", "x": 1.5, "y": 1 },
+ { "label": "W", "x": 2.5, "y": 1 },
+ { "label": "E", "x": 3.5, "y": 1 },
+ { "label": "R", "x": 4.5, "y": 1 },
+ { "label": "T", "x": 5.5, "y": 1 },
+ { "label": "Y", "x": 6.5, "y": 1 },
+ { "label": "U", "x": 7.5, "y": 1 },
+ { "label": "I", "x": 8.5, "y": 1 },
+ { "label": "O", "x": 9.5, "y": 1 },
+ { "label": "P", "x": 10.5, "y": 1 },
+ { "label": "[", "x": 11.5, "y": 1 },
+ { "label": "]", "x": 12.5, "y": 1 },
+ { "label": "\\", "x": 13.5, "y": 1, "w": 1.5 },
+ { "label": "Delete", "x": 15, "y": 1 },
+
+ { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 },
+ { "label": "A", "x": 1.75, "y": 2 },
+ { "label": "S", "x": 2.75, "y": 2 },
+ { "label": "D", "x": 3.75, "y": 2 },
+ { "label": "F", "x": 4.75, "y": 2 },
+ { "label": "G", "x": 5.75, "y": 2 },
+ { "label": "H", "x": 6.75, "y": 2 },
+ { "label": "J", "x": 7.75, "y": 2 },
+ { "label": "K", "x": 8.75, "y": 2 },
+ { "label": "L", "x": 9.75, "y": 2 },
+ { "label": ";", "x": 10.75, "y": 2 },
+ { "label": "'", "x": 11.75, "y": 2 },
+ { "label": "Enter", "x": 12.75, "y": 2, "w": 2.25 },
+ { "label": "PageUp", "x": 15, "y": 2 },
+
+ { "label": "Shift", "x": 0, "y": 3, "w": 2.25 },
+ { "label": "Z", "x": 2.25, "y": 3 },
+ { "label": "X", "x": 3.25, "y": 3 },
+ { "label": "C", "x": 4.25, "y": 3 },
+ { "label": "V", "x": 5.25, "y": 3 },
+ { "label": "B", "x": 6.25, "y": 3 },
+ { "label": "N", "x": 7.25, "y": 3 },
+ { "label": "M", "x": 8.25, "y": 3 },
+ { "label": ",", "x": 9.25, "y": 3 },
+ { "label": ".", "x": 10.25, "y": 3 },
+ { "label": "/", "x": 11.25, "y": 3 },
+ { "label": "Shift", "x": 12.25, "y": 3, "w": 1.75 },
+ { "label": "\u2191", "x": 14, "y": 3 },
+ { "label": "End", "x": 15, "y": 3 },
+
+ { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 },
+ { "label": "Win", "x": 1.25, "y": 4, "w": 1.25 },
+ { "label": "Alt", "x": 2.5, "y": 4, "w": 1.25 },
+ { "x": 3.75, "y": 4, "w": 2.25 },
+ { "x": 6, "y": 4, "w": 1.25 },
+ { "x": 7.25, "y": 4, "w": 2.75 },
+ { "label": "Alt", "x": 10, "y": 4, "w": 1.25 },
+ { "label": "Fn", "x": 11.25, "y": 4, "w": 1.25 },
+ { "label": "\u2190", "x": 13, "y": 4 },
+ { "label": "\u2193", "x": 14, "y": 4 },
+ { "label": "\u2192", "x": 15, "y": 4 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/meletrix/zoom65/keymaps/65_ansi/keymap.c b/keyboards/meletrix/zoom65/keymaps/65_ansi/keymap.c
new file mode 100644
index 000000000000..07d58e9d2b9d
--- /dev/null
+++ b/keyboards/meletrix/zoom65/keymaps/65_ansi/keymap.c
@@ -0,0 +1,34 @@
+/* Copyright 2021 meletrix
+ *
+ * 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_65_ansi_blocker(
+ 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_MUTE,
+ 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_65_ansi_blocker(
+ 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_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/meletrix/zoom65/keymaps/65_ansi/readme.md b/keyboards/meletrix/zoom65/keymaps/65_ansi/readme.md
new file mode 100644
index 000000000000..f9dd323673e4
--- /dev/null
+++ b/keyboards/meletrix/zoom65/keymaps/65_ansi/readme.md
@@ -0,0 +1 @@
+# The 65_ansi_blocker keymap for zoom65
diff --git a/keyboards/meletrix/zoom65/keymaps/65_iso/keymap.c b/keyboards/meletrix/zoom65/keymaps/65_iso/keymap.c
new file mode 100644
index 000000000000..ccdfb6fc2ffe
--- /dev/null
+++ b/keyboards/meletrix/zoom65/keymaps/65_iso/keymap.c
@@ -0,0 +1,34 @@
+/* Copyright 2021 meletrix
+ *
+ * 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_65_iso_blocker(
+ 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_MUTE,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, KC_DEL,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_65_iso_blocker(
+ 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_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/meletrix/zoom65/keymaps/65_iso/readme.md b/keyboards/meletrix/zoom65/keymaps/65_iso/readme.md
new file mode 100644
index 000000000000..fd70c9505056
--- /dev/null
+++ b/keyboards/meletrix/zoom65/keymaps/65_iso/readme.md
@@ -0,0 +1 @@
+# The 65_iso_blocker for zoom65
diff --git a/keyboards/meletrix/zoom65/keymaps/65_split_bs/keymap.c b/keyboards/meletrix/zoom65/keymaps/65_split_bs/keymap.c
new file mode 100644
index 000000000000..a930987720c8
--- /dev/null
+++ b/keyboards/meletrix/zoom65/keymaps/65_split_bs/keymap.c
@@ -0,0 +1,34 @@
+/* Copyright 2021 meletrix
+ *
+ * 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_65_ansi_split_bs(
+ 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_MUTE,
+ 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_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_BSPC, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_65_ansi_split_bs(
+ 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_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/meletrix/zoom65/keymaps/65_split_bs/readme.md b/keyboards/meletrix/zoom65/keymaps/65_split_bs/readme.md
new file mode 100644
index 000000000000..34c59ba014c3
--- /dev/null
+++ b/keyboards/meletrix/zoom65/keymaps/65_split_bs/readme.md
@@ -0,0 +1 @@
+# The 65_split_bs keymap for zoom65
diff --git a/keyboards/meletrix/zoom65/keymaps/65_split_lshift/keymap.c b/keyboards/meletrix/zoom65/keymaps/65_split_lshift/keymap.c
new file mode 100644
index 000000000000..91c917951685
--- /dev/null
+++ b/keyboards/meletrix/zoom65/keymaps/65_split_lshift/keymap.c
@@ -0,0 +1,34 @@
+/* Copyright 2021 meletrix
+ *
+ * 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_65_ansi_split_lshift(
+ 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_MUTE,
+ 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_65_ansi_split_lshift(
+ 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_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/meletrix/zoom65/keymaps/65_split_lshift/readme.md b/keyboards/meletrix/zoom65/keymaps/65_split_lshift/readme.md
new file mode 100644
index 000000000000..e56989b24a61
--- /dev/null
+++ b/keyboards/meletrix/zoom65/keymaps/65_split_lshift/readme.md
@@ -0,0 +1 @@
+# The 65_split_lshift keymap for zoom65
diff --git a/keyboards/meletrix/zoom65/keymaps/65_split_space/keymap.c b/keyboards/meletrix/zoom65/keymaps/65_split_space/keymap.c
new file mode 100644
index 000000000000..b63aff9a9e55
--- /dev/null
+++ b/keyboards/meletrix/zoom65/keymaps/65_split_space/keymap.c
@@ -0,0 +1,34 @@
+/* Copyright 2021 meletrix
+ *
+ * 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_65_split_space(
+ 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_MUTE,
+ 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_65_split_space(
+ 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_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/meletrix/zoom65/keymaps/65_split_space/readme.md b/keyboards/meletrix/zoom65/keymaps/65_split_space/readme.md
new file mode 100644
index 000000000000..4bd0ee67dbc9
--- /dev/null
+++ b/keyboards/meletrix/zoom65/keymaps/65_split_space/readme.md
@@ -0,0 +1 @@
+# The 65_split_space keymap for zoom65
diff --git a/keyboards/meletrix/zoom65/keymaps/default/keymap.c b/keyboards/meletrix/zoom65/keymaps/default/keymap.c
new file mode 100644
index 000000000000..a0a62d296753
--- /dev/null
+++ b/keyboards/meletrix/zoom65/keymaps/default/keymap.c
@@ -0,0 +1,34 @@
+/* Copyright 2021 meletrix
+ *
+ * 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_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_VOLD, KC_MUTE, KC_VOLU,
+ 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_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_BSPC, KC_PGUP,
+ KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = 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_MPRV, KC_MPLY, KC_MNXT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/meletrix/zoom65/keymaps/default/readme.md b/keyboards/meletrix/zoom65/keymaps/default/readme.md
new file mode 100644
index 000000000000..32dfecc2657c
--- /dev/null
+++ b/keyboards/meletrix/zoom65/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for zoom65
diff --git a/keyboards/meletrix/zoom65/keymaps/via/keymap.c b/keyboards/meletrix/zoom65/keymaps/via/keymap.c
new file mode 100644
index 000000000000..f70382290661
--- /dev/null
+++ b/keyboards/meletrix/zoom65/keymaps/via/keymap.c
@@ -0,0 +1,48 @@
+/* Copyright 2021 meletrix
+ *
+ * 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_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_VOLD, KC_MUTE, KC_VOLU,
+ 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_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_BSPC, KC_PGUP,
+ KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = 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_MPRV, KC_MPLY, KC_MNXT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/meletrix/zoom65/keymaps/via/readme.md b/keyboards/meletrix/zoom65/keymaps/via/readme.md
new file mode 100644
index 000000000000..5bc43e82b3be
--- /dev/null
+++ b/keyboards/meletrix/zoom65/keymaps/via/readme.md
@@ -0,0 +1 @@
+# The via keymap for zoom65
diff --git a/keyboards/meletrix/zoom65/keymaps/via/rules.mk b/keyboards/meletrix/zoom65/keymaps/via/rules.mk
new file mode 100644
index 000000000000..43061db1dd46
--- /dev/null
+++ b/keyboards/meletrix/zoom65/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/meletrix/zoom65/readme.md b/keyboards/meletrix/zoom65/readme.md
new file mode 100644
index 000000000000..dc56f6994989
--- /dev/null
+++ b/keyboards/meletrix/zoom65/readme.md
@@ -0,0 +1,26 @@
+# zoom65
+
+![zoom65](https://i.imgur.com/NIbreqdh.jpeg)
+
+Meletrix's first mass-produced mechanical keyboard.
+More Info at [zoom](https://zoom65.com/).
+
+* Keyboard Maintainer: [spbgzh](https://github.com/spbgzh)
+* Hardware Supported: zoom65 Standard
+* Hardware Availability: [zoom](https://zoom65.com/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make meletrix/zoom65:default
+
+Flashing example for this keyboard:
+
+ make meletrix/zoom65:default:flash
+
+To reset the board into bootloader mode, do one of the following:
+
+* Tap the Reset switch mounted on the PCB
+* In the case of the default keymap, use the key combination Fn + End
+* Hold the Esc key while connecting the USB cable (also erases persistent settings)
+
+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/meletrix/zoom65/rules.mk b/keyboards/meletrix/zoom65/rules.mk
new file mode 100644
index 000000000000..b481714b7237
--- /dev/null
+++ b/keyboards/meletrix/zoom65/rules.mk
@@ -0,0 +1,24 @@
+# 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 = yes # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes # Enable Encoder
+
+LAYOUT = 65_ansi_blocker 65_iso_blocker
diff --git a/keyboards/meletrix/zoom65/zoom65.c b/keyboards/meletrix/zoom65/zoom65.c
new file mode 100644
index 000000000000..f69ed547eff3
--- /dev/null
+++ b/keyboards/meletrix/zoom65/zoom65.c
@@ -0,0 +1,66 @@
+/* Copyright 2021 meletrix
+ *
+ * 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 "zoom65.h"
+
+#ifdef VIA_ENABLE
+static uint8_t encoder_state[ENCODERS] = {0};
+static keypos_t encoder_cw[ENCODERS] = ENCODERS_CW_KEY;
+static keypos_t encoder_ccw[ENCODERS] = ENCODERS_CCW_KEY;
+
+void encoder_action_unregister(void)
+{
+ for (int index = 0; index < ENCODERS; ++index)
+ {
+ if (encoder_state[index])
+ {
+ keyevent_t encoder_event = (keyevent_t){
+ .key = encoder_state[index] >> 1 ? encoder_cw[index] : encoder_ccw[index],
+ .pressed = false,
+ .time = (timer_read() | 1)};
+ encoder_state[index] = 0;
+ action_exec(encoder_event);
+ }
+ }
+}
+void encoder_action_register(uint8_t index, bool clockwise)
+{
+ keyevent_t encoder_event = (keyevent_t){
+ .key = clockwise ? encoder_cw[index] : encoder_ccw[index],
+ .pressed = true,
+ .time = (timer_read() | 1)};
+ encoder_state[index] = (clockwise ^ 1) | (clockwise << 1);
+ action_exec(encoder_event);
+}
+
+void matrix_scan_kb(void)
+{
+ encoder_action_unregister();
+ matrix_scan_user();
+}
+
+bool encoder_update_kb(uint8_t index, bool clockwise)
+{
+ encoder_action_register(index, clockwise);
+ return true;
+};
+#else
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ tap_code_delay(clockwise ? KC_VOLU : KC_VOLD, 10);
+ return true;
+}
+#endif
diff --git a/keyboards/meletrix/zoom65/zoom65.h b/keyboards/meletrix/zoom65/zoom65.h
new file mode 100644
index 000000000000..400fdcbf3b0f
--- /dev/null
+++ b/keyboards/meletrix/zoom65/zoom65.h
@@ -0,0 +1,187 @@
+/* Copyright 2021 meletrix
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+
+/* Standard Arrangement
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │2d │ ◯ ISO
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┐ ┌─────┐
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │ │1d │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ ┌──┴┐ │
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2e │ │2c │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ └───┴────┘
+ * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │
+ * ├────┼───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │40 │41 │42 │44 │46 │48 │4a │4b │ │4c │4d │4e │
+ * └────┴────┴────┴────────┴────┴──────────┴────┴────┘ └───┴───┴───┘
+ */
+#define LAYOUT_all( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K43, K0E, K45, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K42, K44, K46, K48, K4A, K4B, K4C, K4D, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, K43, K44, K45, K46, KC_NO, K48, KC_NO, K4A, K4B, K4C, K4D, K4E }, \
+}
+
+
+/* LAYOUT_65_ansi_blocker
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │ ◯
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┐
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2e │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │40 │41 │42 │46 │4a │4b │ │4c │4d │4e │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
+#define LAYOUT_65_ansi_blocker( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E }, \
+}
+
+
+/* LAYOUT_65_iso_blocker
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │ ◯
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┐
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │ │2e │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
+ * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │40 │41 │42 │46 │4a │4b │ │4c │4d │4e │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
+#define LAYOUT_65_iso_blocker( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E }, \
+}
+
+
+/* LAYOUT_65_ansi_split_bs
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │2d │ ◯
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┐
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2e │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │40 │41 │42 │46 │4a │4b │ │4c │4d │4e │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
+#define LAYOUT_65_ansi_split_bs( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E }, \
+}
+
+
+/* LAYOUT_65_ansi_split_lshift
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │ ◯
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┐
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2e │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │40 │41 │42 │46 │4a │4b │ │4c │4d │4e │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
+#define LAYOUT_65_ansi_split_lshift( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K42, K46, K4A, K4B, K4C, K4D, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E }, \
+}
+
+
+/* LAYOUT_65_split_space
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │ ◯
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┐
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2e │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │
+ * ├────┬───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │40 │41 │42 │44 │46 │48 │4a │4b │ │4c │4d │4e │
+ * └────┴────┴────┴────────┴────┴──────────┴────┴────┘ └───┴───┴───┘
+ */
+#define LAYOUT_65_split_space( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K42, K44, K46, K48, K4A, K4B, K4C, K4D, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, KC_NO, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, K4B, K4C, K4D, K4E }, \
+}
diff --git a/keyboards/melgeek/mach80/info.json b/keyboards/melgeek/mach80/info.json
index e786df7c1763..ea7c628c6f53 100755
--- a/keyboards/melgeek/mach80/info.json
+++ b/keyboards/melgeek/mach80/info.json
@@ -4,192 +4,192 @@
"maintainer": "melgeek001365",
"layouts": {
"LAYOUT_tkl_ansi": {
- "layout": [
- {"x":0, "y":0},
- {"x":2, "y":0},
- {"x":3, "y":0},
- {"x":4, "y":0},
- {"x":5, "y":0},
- {"x":6.5, "y":0},
- {"x":7.5, "y":0},
- {"x":8.5, "y":0},
- {"x":9.5, "y":0},
- {"x":11, "y":0},
- {"x":12, "y":0},
- {"x":13, "y":0},
- {"x":14, "y":0},
- {"x":15.25, "y":0},
- {"x":16.25, "y":0},
- {"x":17.25, "y":0},
+ "layout": [
+ {"x": 0, "y": 0},
+ {"x": 2, "y": 0},
+ {"x": 3, "y": 0},
+ {"x": 4, "y": 0},
+ {"x": 5, "y": 0},
+ {"x": 6.5, "y": 0},
+ {"x": 7.5, "y": 0},
+ {"x": 8.5, "y": 0},
+ {"x": 9.5, "y": 0},
+ {"x": 11, "y": 0},
+ {"x": 12, "y": 0},
+ {"x": 13, "y": 0},
+ {"x": 14, "y": 0},
+ {"x": 15.25, "y": 0},
+ {"x": 16.25, "y": 0},
+ {"x": 17.25, "y": 0},
- {"x":0, "y":1},
- {"x":1, "y":1},
- {"x":2, "y":1},
- {"x":3, "y":1},
- {"x":4, "y":1},
- {"x":5, "y":1},
- {"x":6, "y":1},
- {"x":7, "y":1},
- {"x":8, "y":1},
- {"x":9, "y":1},
- {"x":10, "y":1},
- {"x":11, "y":1},
- {"x":12, "y":1},
- {"x":13, "y":1, "w":2.0},
- {"x":15.25, "y":1},
- {"x":16.25, "y":1},
- {"x":17.25, "y":1},
+ {"x": 0, "y": 1.5},
+ {"x": 1, "y": 1.5},
+ {"x": 2, "y": 1.5},
+ {"x": 3, "y": 1.5},
+ {"x": 4, "y": 1.5},
+ {"x": 5, "y": 1.5},
+ {"x": 6, "y": 1.5},
+ {"x": 7, "y": 1.5},
+ {"x": 8, "y": 1.5},
+ {"x": 9, "y": 1.5},
+ {"x": 10, "y": 1.5},
+ {"x": 11, "y": 1.5},
+ {"x": 12, "y": 1.5},
+ {"x": 13, "y": 1.5, "w": 2.0},
+ {"x": 15.25, "y": 1.5},
+ {"x": 16.25, "y": 1.5},
+ {"x": 17.25, "y": 1.5},
- {"x":0, "y":2, "w":1.5},
- {"x":1.5, "y":2},
- {"x":2.5, "y":2},
- {"x":3.5, "y":2},
- {"x":4.5, "y":2},
- {"x":5.5, "y":2},
- {"x":6.5, "y":2},
- {"x":7.5, "y":2},
- {"x":8.5, "y":2},
- {"x":9.5, "y":2},
- {"x":10.5, "y":2},
- {"x":11.5, "y":2},
- {"x":12.5, "y":2},
- {"x":13.5, "y":2, "w":1.5},
- {"x":15.25, "y":2},
- {"x":16.25, "y":2},
- {"x":17.25, "y":2},
+ {"x": 0, "y": 2.5, "w": 1.5},
+ {"x": 1.5, "y": 2.5},
+ {"x": 2.5, "y": 2.5},
+ {"x": 3.5, "y": 2.5},
+ {"x": 4.5, "y": 2.5},
+ {"x": 5.5, "y": 2.5},
+ {"x": 6.5, "y": 2.5},
+ {"x": 7.5, "y": 2.5},
+ {"x": 8.5, "y": 2.5},
+ {"x": 9.5, "y": 2.5},
+ {"x": 10.5, "y": 2.5},
+ {"x": 11.5, "y": 2.5},
+ {"x": 12.5, "y": 2.5},
+ {"x": 13.5, "y": 2.5, "w": 1.5},
+ {"x": 15.25, "y": 2.5},
+ {"x": 16.25, "y": 2.5},
+ {"x": 17.25, "y": 2.5},
- {"x":0, "y":3, "w":1.75},
- {"x":1.75, "y":3},
- {"x":2.75, "y":3},
- {"x":3.75, "y":3},
- {"x":4.75, "y":3},
- {"x":5.75, "y":3},
- {"x":6.75, "y":3},
- {"x":7.75, "y":3},
- {"x":8.75, "y":3},
- {"x":9.75, "y":3},
- {"x":10.75, "y":3},
- {"x":11.75, "y":3},
- {"x":12.75, "y":3, "w":2.25},
-
- {"x":0, "y":4, "w":2.25},
- {"x":2.25, "y":4},
- {"x":3.25, "y":4},
- {"x":4.25, "y":4},
- {"x":5.25, "y":4},
- {"x":6.25, "y":4},
- {"x":7.25, "y":4},
- {"x":8.25, "y":4},
- {"x":9.25, "y":4},
- {"x":10.25, "y":4},
- {"x":11.25, "y":4},
- {"x":12.25, "y":4, "w":2.75},
- {"x":16.25, "y":4},
+ {"x": 0, "y": 3.5, "w": 1.75},
+ {"x": 1.75, "y": 3.5},
+ {"x": 2.75, "y": 3.5},
+ {"x": 3.75, "y": 3.5},
+ {"x": 4.75, "y": 3.5},
+ {"x": 5.75, "y": 3.5},
+ {"x": 6.75, "y": 3.5},
+ {"x": 7.75, "y": 3.5},
+ {"x": 8.75, "y": 3.5},
+ {"x": 9.75, "y": 3.5},
+ {"x": 10.75, "y": 3.5},
+ {"x": 11.75, "y": 3.5},
+ {"x": 12.75, "y": 3.5, "w": 2.25},
- {"x":0, "y":5, "w":1.25},
- {"x":1.25, "y":5, "w":1.25},
- {"x":2.5, "y":5, "w":1.25},
- {"x":3.75, "y":5, "w":6.25},
- {"x":10, "y":5, "w":1.25},
- {"x":11.25, "y":5, "w":1.25},
- {"x":12.5, "y":5, "w":1.25},
- {"x":13.75, "y":5, "w":1.25},
- {"x":15.25, "y":5},
- {"x":16.25, "y":5},
- {"x":17.25, "y":5}
+ {"x": 0, "y": 4.5, "w": 2.25},
+ {"x": 2.25, "y": 4.5},
+ {"x": 3.25, "y": 4.5},
+ {"x": 4.25, "y": 4.5},
+ {"x": 5.25, "y": 4.5},
+ {"x": 6.25, "y": 4.5},
+ {"x": 7.25, "y": 4.5},
+ {"x": 8.25, "y": 4.5},
+ {"x": 9.25, "y": 4.5},
+ {"x": 10.25, "y": 4.5},
+ {"x": 11.25, "y": 4.5},
+ {"x": 12.25, "y": 4.5, "w": 2.75},
+ {"x": 16.25, "y": 4.5},
+
+ {"x": 0, "y": 5.5, "w": 1.25},
+ {"x": 1.25, "y": 5.5, "w": 1.25},
+ {"x": 2.5, "y": 5.5, "w": 1.25},
+ {"x": 3.75, "y": 5.5, "w": 6.25},
+ {"x": 10, "y": 5.5, "w": 1.25},
+ {"x": 11.25, "y": 5.5, "w": 1.25},
+ {"x": 12.5, "y": 5.5, "w": 1.25},
+ {"x": 13.75, "y": 5.5, "w": 1.25},
+ {"x": 15.25, "y": 5.5},
+ {"x": 16.25, "y": 5.5},
+ {"x": 17.25, "y": 5.5}
]
},
"LAYOUT_tkl_ansi_wkl": {
- "layout": [
- {"x":0, "y":0},
- {"x":2, "y":0},
- {"x":3, "y":0},
- {"x":4, "y":0},
- {"x":5, "y":0},
- {"x":6.5, "y":0},
- {"x":7.5, "y":0},
- {"x":8.5, "y":0},
- {"x":9.5, "y":0},
- {"x":11, "y":0},
- {"x":12, "y":0},
- {"x":13, "y":0},
- {"x":14, "y":0},
- {"x":15.25, "y":0},
- {"x":16.25, "y":0},
- {"x":17.25, "y":0},
+ "layout": [
+ {"x": 0, "y": 0},
+ {"x": 2, "y": 0},
+ {"x": 3, "y": 0},
+ {"x": 4, "y": 0},
+ {"x": 5, "y": 0},
+ {"x": 6.5, "y": 0},
+ {"x": 7.5, "y": 0},
+ {"x": 8.5, "y": 0},
+ {"x": 9.5, "y": 0},
+ {"x": 11, "y": 0},
+ {"x": 12, "y": 0},
+ {"x": 13, "y": 0},
+ {"x": 14, "y": 0},
+ {"x": 15.25, "y": 0},
+ {"x": 16.25, "y": 0},
+ {"x": 17.25, "y": 0},
+
+ {"x": 0, "y": 1.5},
+ {"x": 1, "y": 1.5},
+ {"x": 2, "y": 1.5},
+ {"x": 3, "y": 1.5},
+ {"x": 4, "y": 1.5},
+ {"x": 5, "y": 1.5},
+ {"x": 6, "y": 1.5},
+ {"x": 7, "y": 1.5},
+ {"x": 8, "y": 1.5},
+ {"x": 9, "y": 1.5},
+ {"x": 10, "y": 1.5},
+ {"x": 11, "y": 1.5},
+ {"x": 12, "y": 1.5},
+ {"x": 13, "y": 1.5, "w": 2.0},
+ {"x": 15.25, "y": 1.5},
+ {"x": 16.25, "y": 1.5},
+ {"x": 17.25, "y": 1.5},
- {"x":0, "y":1},
- {"x":1, "y":1},
- {"x":2, "y":1},
- {"x":3, "y":1},
- {"x":4, "y":1},
- {"x":5, "y":1},
- {"x":6, "y":1},
- {"x":7, "y":1},
- {"x":8, "y":1},
- {"x":9, "y":1},
- {"x":10, "y":1},
- {"x":11, "y":1},
- {"x":12, "y":1},
- {"x":13, "y":1, "w":2.0},
- {"x":15.25, "y":1},
- {"x":16.25, "y":1},
- {"x":17.25, "y":1},
+ {"x": 0, "y": 2.5, "w": 1.5},
+ {"x": 1.5, "y": 2.5},
+ {"x": 2.5, "y": 2.5},
+ {"x": 3.5, "y": 2.5},
+ {"x": 4.5, "y": 2.5},
+ {"x": 5.5, "y": 2.5},
+ {"x": 6.5, "y": 2.5},
+ {"x": 7.5, "y": 2.5},
+ {"x": 8.5, "y": 2.5},
+ {"x": 9.5, "y": 2.5},
+ {"x": 10.5, "y": 2.5},
+ {"x": 11.5, "y": 2.5},
+ {"x": 12.5, "y": 2.5},
+ {"x": 13.5, "y": 2.5, "w": 1.5},
+ {"x": 15.25, "y": 2.5},
+ {"x": 16.25, "y": 2.5},
+ {"x": 17.25, "y": 2.5},
- {"x":0, "y":2, "w":1.5},
- {"x":1.5, "y":2},
- {"x":2.5, "y":2},
- {"x":3.5, "y":2},
- {"x":4.5, "y":2},
- {"x":5.5, "y":2},
- {"x":6.5, "y":2},
- {"x":7.5, "y":2},
- {"x":8.5, "y":2},
- {"x":9.5, "y":2},
- {"x":10.5, "y":2},
- {"x":11.5, "y":2},
- {"x":12.5, "y":2},
- {"x":13.5, "y":2, "w":1.5},
- {"x":15.25, "y":2},
- {"x":16.25, "y":2},
- {"x":17.25, "y":2},
+ {"x": 0, "y": 3.5, "w": 1.75},
+ {"x": 1.75, "y": 3.5},
+ {"x": 2.75, "y": 3.5},
+ {"x": 3.75, "y": 3.5},
+ {"x": 4.75, "y": 3.5},
+ {"x": 5.75, "y": 3.5},
+ {"x": 6.75, "y": 3.5},
+ {"x": 7.75, "y": 3.5},
+ {"x": 8.75, "y": 3.5},
+ {"x": 9.75, "y": 3.5},
+ {"x": 10.75, "y": 3.5},
+ {"x": 11.75, "y": 3.5},
+ {"x": 12.75, "y": 3.5, "w": 2.25},
- {"x":0, "y":3, "w":1.75},
- {"x":1.75, "y":3},
- {"x":2.75, "y":3},
- {"x":3.75, "y":3},
- {"x":4.75, "y":3},
- {"x":5.75, "y":3},
- {"x":6.75, "y":3},
- {"x":7.75, "y":3},
- {"x":8.75, "y":3},
- {"x":9.75, "y":3},
- {"x":10.75, "y":3},
- {"x":11.75, "y":3},
- {"x":12.75, "y":3, "w":2.25},
-
- {"x":0, "y":4, "w":2.25},
- {"x":2.25, "y":4},
- {"x":3.25, "y":4},
- {"x":4.25, "y":4},
- {"x":5.25, "y":4},
- {"x":6.25, "y":4},
- {"x":7.25, "y":4},
- {"x":8.25, "y":4},
- {"x":9.25, "y":4},
- {"x":10.25, "y":4},
- {"x":11.25, "y":4},
- {"x":12.25, "y":4, "w":2.75},
- {"x":16.25, "y":4},
+ {"x": 0, "y": 4.5, "w": 2.25},
+ {"x": 2.25, "y": 4.5},
+ {"x": 3.25, "y": 4.5},
+ {"x": 4.25, "y": 4.5},
+ {"x": 5.25, "y": 4.5},
+ {"x": 6.25, "y": 4.5},
+ {"x": 7.25, "y": 4.5},
+ {"x": 8.25, "y": 4.5},
+ {"x": 9.25, "y": 4.5},
+ {"x": 10.25, "y": 4.5},
+ {"x": 11.25, "y": 4.5},
+ {"x": 12.25, "y": 4.5, "w": 2.75},
+ {"x": 16.25, "y": 4.5},
- {"x":0, "y":5, "w":1.5},
- {"x":2.5, "y":5, "w":1.5},
- {"x":4, "y":5, "w":7},
- {"x":11, "y":5, "w":1.5},
- {"x":13.5, "y":5, "w":1.5},
- {"x":15.25, "y":5},
- {"x":16.25, "y":5},
- {"x":17.25, "y":5}
+ {"x": 0, "y": 5.5, "w": 1.5},
+ {"x": 2.5, "y": 5.5, "w": 1.5},
+ {"x": 4, "y": 5.5, "w": 7},
+ {"x": 11, "y": 5.5, "w": 1.5},
+ {"x": 13.5, "y": 5.5, "w": 1.5},
+ {"x": 15.25, "y": 5.5},
+ {"x": 16.25, "y": 5.5},
+ {"x": 17.25, "y": 5.5}
]
}
}
diff --git a/keyboards/melody96/keymaps/dvz/config.h b/keyboards/melody96/keymaps/dvz/config.h
new file mode 100644
index 000000000000..be786464bc7c
--- /dev/null
+++ b/keyboards/melody96/keymaps/dvz/config.h
@@ -0,0 +1,34 @@
+ /* Copyright 2021 Milan Düwel
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#define COMBO_COUNT 4
+#define COMBO_TERM 100
+
+//#define UNICODE_SELECTED_MODES UC_WINC
+
+#define RGBLIGHT_LAYERS
+#define RGBLIGHT_LAYER_BLINK
+
+#undef RGBLIGHT_ANIMATIONS
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_TWINKLE
+
diff --git a/keyboards/melody96/keymaps/dvz/keymap.c b/keyboards/melody96/keymaps/dvz/keymap.c
new file mode 100644
index 000000000000..cea3970e1889
--- /dev/null
+++ b/keyboards/melody96/keymaps/dvz/keymap.c
@@ -0,0 +1,161 @@
+ /* Copyright 2021 Milan Düwel
+ *
+ * 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
+
+ /* This keymap is designed for use with a German keyboard layout.
+ * It is essentially the same as the default via keymap but adds combo functionality to type umlauts as well as lighting layers for various actions.
+ * Toggling the combo feature also disables KC_LGUI so both can be turned off for gaming. If you want to get rid of it without reflashing new firmware, use KC_RGUI instead.
+ * Layers 2 and 3 are currently unused but are configurable within via.
+ */
+
+enum combos {
+ UML_AE,
+ UML_OE,
+ UML_UE,
+ UML_SZ
+};
+
+const uint16_t PROGMEM ae_combo[] = {KC_A, KC_E, COMBO_END};
+const uint16_t PROGMEM oe_combo[] = {KC_O, KC_E, COMBO_END};
+const uint16_t PROGMEM ue_combo[] = {KC_U, KC_E, COMBO_END};
+const uint16_t PROGMEM sz_combo[] = {KC_S, KC_Y, COMBO_END};
+
+combo_t key_combos[COMBO_COUNT] = {
+ [UML_AE] = COMBO(ae_combo, KC_QUOT),
+ [UML_OE] = COMBO(oe_combo, KC_SCLN),
+ [UML_UE] = COMBO(ue_combo, KC_LBRC),
+ [UML_SZ] = COMBO(sz_combo, KC_MINS)
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT(
+ 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_HOME, KC_END, KC_PGUP, KC_PGDN, KC_DEL,
+ 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_BSLS, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PMNS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+
+ [1] = LAYOUT(
+ RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD,
+ KC_TRNS, RGB_TOG, KC_TRNS, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD,
+ BL_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, CMB_TOG, BL_TOGG, BL_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END, KC_TRNS, KC_TRNS, KC_MUTE),
+
+ [2] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+ [3] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+};
+
+/* The lighting layers feature a caps indicator as well as layer blinks for mute and the function layer (blink only to allow unhindered adjustment of the RGB backlight settings).
+ Sadly these colours can not be customized within VIA.
+*/
+
+const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 1, HSV_RED},
+ {15, 17, HSV_RED}
+);
+
+const rgblight_segment_t PROGMEM my_function_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {10, 12, HSV_YELLOW}
+);
+
+const rgblight_segment_t PROGMEM my_f2_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 17, HSV_CYAN}
+);
+
+const rgblight_segment_t PROGMEM my_f3_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 17, HSV_PURPLE}
+);
+
+const rgblight_segment_t PROGMEM my_flash_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 17, HSV_RED}
+);
+
+// Now define the array of layers. Later layers take precedence
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ my_capslock_layer,
+ my_function_layer, // Overrides caps lock layer
+ my_f2_layer,
+ my_f3_layer,
+ my_flash_layer
+);
+
+void keyboard_post_init_user(void) {
+ // Enable the LED layers
+ rgblight_layers = my_rgb_layers;
+};
+
+bool led_update_user(led_t led_state) {
+ rgblight_set_layer_state(0, led_state.caps_lock);
+ return true;
+};
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ //rgblight_set_layer_state(1, layer_state_cmp(state, 1));
+ rgblight_set_layer_state(2, layer_state_cmp(state, 2));
+ rgblight_set_layer_state(3, layer_state_cmp(state, 3));
+ return state;
+};
+
+// Note we user post_process_record_user because we want the state
+// after the flag has been flipped...
+void post_process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_CAPS:
+ case KC_MUTE:
+ case CMB_TOG:
+ if (record->event.pressed) {
+ rgblight_blink_layer(4, 250);
+ }
+ break;
+ case MO(1):
+ if (record->event.pressed) {
+ rgblight_blink_layer(1, 250);
+ }
+ break;
+ }
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_LGUI: //use combo toggle to disable the win key while gaming
+ if (record->event.pressed) {
+ if (is_combo_enabled()==false) {
+ return false;
+ }
+ }
+ return true; // Let QMK send the enter press/release events
+ default:
+ return true; // Process all other keycodes normally
+ }
+};
diff --git a/keyboards/melody96/keymaps/dvz/readme.md b/keyboards/melody96/keymaps/dvz/readme.md
new file mode 100644
index 000000000000..d82055244eb1
--- /dev/null
+++ b/keyboards/melody96/keymaps/dvz/readme.md
@@ -0,0 +1,3 @@
+# DvZ's VIA compatible keymap with rolling umlauts for german typists
+
+Added by: [devilzmods](https://github.com/devilzmods)
diff --git a/keyboards/melody96/keymaps/dvz/rules.mk b/keyboards/melody96/keymaps/dvz/rules.mk
new file mode 100644
index 000000000000..a1e85f13f4e4
--- /dev/null
+++ b/keyboards/melody96/keymaps/dvz/rules.mk
@@ -0,0 +1,5 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes # reduce firmware size
+COMBO_ENABLE = yes
+#UNICODE_ENABLE = yes
+BOOTLOADER = caterina
diff --git a/keyboards/minimon/index_tab/config.h b/keyboards/minimon/index_tab/config.h
new file mode 100644
index 000000000000..fc02185545d3
--- /dev/null
+++ b/keyboards/minimon/index_tab/config.h
@@ -0,0 +1,64 @@
+/*
+Copyright 2020 Kyrre Havik Eriksen
+
+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 .
+*/
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4B49
+#define PRODUCT_ID 0x1306
+#define DEVICE_VER 0x0001
+#define PRODUCT Index Tab
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 13
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { D3, B7, B3, B2, B1, B0 }
+#define MATRIX_COL_PINS { F7, C7, C6, B6, B5, B4, D7, D6, D4, D5, D2, F1, F0 }
+#define UNUSED_PINS { F4, F5, F6, D1, D0 }
+
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+#define RGB_DI_PIN E6
+#define RGBLED_NUM 10
+#define RGBLIGHT_SLEEP
+
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
diff --git a/keyboards/minimon/index_tab/index_tab.c b/keyboards/minimon/index_tab/index_tab.c
new file mode 100644
index 000000000000..a0d8377e9723
--- /dev/null
+++ b/keyboards/minimon/index_tab/index_tab.c
@@ -0,0 +1,14 @@
+/*
+Copyright 2020 Kyrre Havik Eriksen
+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 "index_tab.h"
diff --git a/keyboards/minimon/index_tab/index_tab.h b/keyboards/minimon/index_tab/index_tab.h
new file mode 100644
index 000000000000..cb9d3c5ae6b6
--- /dev/null
+++ b/keyboards/minimon/index_tab/index_tab.h
@@ -0,0 +1,36 @@
+/* Copyright 2020 Kyrre Havik Eriksen
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0a, K0b, K0c, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1a, K1b, K1c, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2a, K2b, K2c, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3a, K3b, K3c, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4a, K4b, K4c, \
+ K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5a, K5b, K5c \
+) \
+ { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0a, K0b, K0c }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1a, K1b, K1c }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2a, K2b, K2c }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3a, K3b, K3c }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4a, K4b, K4c }, \
+ { K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5a, K5b, K5c } \
+ }
diff --git a/keyboards/minimon/index_tab/info.json b/keyboards/minimon/index_tab/info.json
new file mode 100644
index 000000000000..21ff5a3cde12
--- /dev/null
+++ b/keyboards/minimon/index_tab/info.json
@@ -0,0 +1,17 @@
+{
+ "keyboard_name": "Index Tab",
+ "maintainer": "kyrremann",
+ "url": "https://github.com/Kyrremann/index-tab",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"label":"CAPS", "x":0, "y":0}, {"label":"F1", "x":1, "y":0}, {"label":"F2", "x":2, "y":0}, {"label":"F3", "x":3, "y":0}, {"label":"F4", "x":4, "y":0}, {"label":"F5", "x":5, "y":0}, {"label":"F6", "x":6, "y":0}, {"label":"F7", "x":7, "y":0}, {"label":"F8", "x":8, "y":0}, {"label":"F9", "x":9, "y":0}, {"label":"F10", "x":10, "y":0}, {"label":"F11", "x":11, "y":0}, {"label":"F12", "x":12, "y":0},
+ {"label":"<", "x":0, "y":1}, {"label":"1", "x":1, "y":1}, {"label":"2", "x":2, "y":1}, {"label":"3", "x":3, "y":1}, {"label":"4", "x":4, "y":1}, {"label":"5", "x":5, "y":1}, {"label":"6", "x":6, "y":1}, {"label":"7", "x":7, "y":1}, {"label":"8", "x":8, "y":1}, {"label":"9", "x":9, "y":1}, {"label":"0", "x":10, "y":1}, {"label":"+", "x":11, "y":1}, {"label":"\u00b4", "x":12, "y":1},
+ {"label":"TAB", "x":0, "y":2}, {"label":"q", "x":1, "y":2}, {"label":"w", "x":2, "y":2}, {"label":"e", "x":3, "y":2}, {"label":"r", "x":4, "y":2}, {"label":"t", "x":5, "y":2}, {"label":"y", "x":6, "y":2}, {"label":"u", "x":7, "y":2}, {"label":"i", "x":8, "y":2}, {"label":"o", "x":9, "y":2}, {"label":"p", "x":10, "y":2}, {"label":"\u00e5", "x":11, "y":2}, {"label":"BKSP", "x":12, "y":2},
+ {"label":"CTRL", "x":0, "y":3}, {"label":"a", "x":1, "y":3}, {"label":"s", "x":2, "y":3}, {"label":"d", "x":3, "y":3}, {"label":"f", "x":4, "y":3}, {"label":"g", "x":5, "y":3}, {"label":"h", "x":6, "y":3}, {"label":"j", "x":7, "y":3}, {"label":"k", "x":8, "y":3}, {"label":"l", "x":9, "y":3}, {"label":"\u00f8", "x":10, "y":3}, {"label":"\u00e6", "x":11, "y":3}, {"label":"\u00a8", "x":12, "y":3},
+ {"label":"SHIFT", "x":0, "y":4}, {"label":"z", "x":1, "y":4}, {"label":"x", "x":2, "y":4}, {"label":"c", "x":3, "y":4}, {"label":"v", "x":4, "y":4}, {"label":"b", "x":5, "y":4}, {"label":"n", "x":6, "y":4}, {"label":"m", "x":7, "y":4}, {"label":",", "x":8, "y":4}, {"label":".", "x":9, "y":4}, {"label":"-", "x":10, "y":4}, {"label":"\u2191", "x":11, "y":4}, {"label":"\u21b2", "x":12, "y":4},
+ {"label":"ESC", "x":0, "y":5}, {"label":"\u00a7", "x":1, "y":5}, {"label":"WIN", "x":2, "y":5}, {"label":"LALT", "x":3, "y":5}, {"x":4, "y":5, "w":2}, {"x":6, "y":5, "w":2}, {"label":"FN", "x":8, "y":5}, {"label":"@", "x":9, "y":5}, {"label":"\u2190", "x":10, "y":5}, {"label":"\u2193", "x":11, "y":5}, {"label":"\u2192", "x":12, "y":5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/minimon/index_tab/keymaps/default/keymap.c b/keyboards/minimon/index_tab/keymaps/default/keymap.c
new file mode 100644
index 000000000000..9f2a3d1320ec
--- /dev/null
+++ b/keyboards/minimon/index_tab/keymaps/default/keymap.c
@@ -0,0 +1,44 @@
+/*
+Copyright 2020 Kyrre Havik Eriksen
+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(
+ KC_CAPS, 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_NUBS, 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_BSPC,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_RBRC,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_ENT,
+ KC_ESC, KC_GRV, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, TG(1), KC_BSLS, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+[1] = LAYOUT(
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_RMOD,RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PCMM,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MSTP, KC_VOLD, KC_MUTE, KC_VOLU, KC_MNXT, KC_P1, KC_P2, KC_P3, KC_PEQL,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MPLY, KC_MPLY, KC_MPLY, KC_TRNS, KC_P0, KC_P0, KC_PDOT, KC_PENT
+ ),
+
+[2] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, 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/minimon/index_tab/keymaps/default/readme.md b/keyboards/minimon/index_tab/keymaps/default/readme.md
new file mode 100644
index 000000000000..3633ffcd08d4
--- /dev/null
+++ b/keyboards/minimon/index_tab/keymaps/default/readme.md
@@ -0,0 +1,6 @@
+Index Tab default keymap
+========================
+
+![Index Tab layout image](https://i.imgur.com/BSsNGL9.png)
+
+[Keyboard layout editor](http://www.keyboard-layout-editor.com/##@@_a:7%3B&=CAPS&=F1&=F2&=F3&=F4&=F5&=F6&=F7&=F8&=F9&=F10&=F11&=F12%3B&@=%3C&=1&=2&=3&=4&=5&=6&=7&=8&=9&=0&=+&=%C2%B4%3B&@=TAB&=q&=w&=e&=r&=t&=y&=u&=i&=o&=p&=%C3%A5&=BKSP%3B&@=CTRL&=a&=s&=d&=f&=g&=h&=j&=k&=l&=%C3%B8&=%C3%A6&=%C2%A8%3B&@=SHIFT&=z&=x&=c&=v&=b&=n&=m&=,&=.&=-&=%E2%86%91&=%E2%86%B2%3B&@=ESC&=%C2%A7&=WIN&=LALT&_w:2%3B&=&_w:2%3B&=&=FN&=%2F@&=%E2%86%90&=%E2%86%93&=%E2%86%92)
diff --git a/keyboards/minimon/index_tab/keymaps/via/keymap.c b/keyboards/minimon/index_tab/keymaps/via/keymap.c
new file mode 100644
index 000000000000..f6f0e0da1ef3
--- /dev/null
+++ b/keyboards/minimon/index_tab/keymaps/via/keymap.c
@@ -0,0 +1,53 @@
+/*
+Copyright 2020 Kyrre Havik Eriksen
+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(
+ KC_CAPS, 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_NUBS, 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_BSPC,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_RBRC,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NUHS, KC_SFTENT,
+ KC_ESC, KC_GRV, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, TG(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+ ),
+
+[1] = LAYOUT(
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_RMOD,RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MRWD, KC_TRNS, KC_MSTP, KC_TRNS, KC_MFFD, KC_P4, KC_P5, KC_P6, KC_PCMM,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MUTE, KC_VOLU, KC_MNXT, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, KC_P0, KC_P0, KC_PDOT, KC_PEQL
+ ),
+
+[2] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+[3] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, 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/minimon/index_tab/keymaps/via/rules.mk b/keyboards/minimon/index_tab/keymaps/via/rules.mk
new file mode 100644
index 000000000000..1e5b99807cb7
--- /dev/null
+++ b/keyboards/minimon/index_tab/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/minimon/index_tab/readme.md b/keyboards/minimon/index_tab/readme.md
new file mode 100644
index 000000000000..31ad51aa5529
--- /dev/null
+++ b/keyboards/minimon/index_tab/readme.md
@@ -0,0 +1,35 @@
+# Index Tab
+
+Not just another ortho-keyboard. but one catering to the northern marked with our extra letters.
+This is a 13x6 ortho keyboard; giving you enough space for all the numbers, all the F-keys, and our precious extraordinary letters.
+
+![Picture of the keyboard in the wild](https://raw.githubusercontent.com/Kyrremann/index-tab/master/images/rev5-dsa-vilebloom.JPG)
+
+Keyboard Maintainer: [Kyrremann](https://github.com/Kyrremann)
+
+The keyboard files can be found here: https://github.com/Kyrremann/index-tab
+
+
+## Instructions
+
+To create a hex file for the Index Tab, run:
+
+ make minimon/index_tab:default
+
+Flash the keyboard with QMK Toolbox or run:
+
+ make minimon/index_tab:default:flash
+
+How to enter bootloader (DFU):
+
+Press the reset button on the underside of the board, near the USB port.
+
+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 the [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+
+## Default layout
+
+![Index Tab layout image](https://raw.githubusercontent.com/Kyrremann/index-tab/master/images/index-tab.png)
+
+[Keyboard layout editor](http://www.keyboard-layout-editor.com/#/gists/2577189f7cf19d980fff8177d14dc3ec)
diff --git a/keyboards/minimon/index_tab/rules.mk b/keyboards/minimon/index_tab/rules.mk
new file mode 100644
index 000000000000..dcc5fd8be862
--- /dev/null
+++ b/keyboards/minimon/index_tab/rules.mk
@@ -0,0 +1,21 @@
+# 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
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/minimon/info.json b/keyboards/minimon/info.json
new file mode 100644
index 000000000000..6740fa750ff7
--- /dev/null
+++ b/keyboards/minimon/info.json
@@ -0,0 +1,4 @@
+{
+ "maintainer": "Kyrremann",
+ "manufacturer": "Minimon"
+}
diff --git a/keyboards/minimon/readme.md b/keyboards/minimon/readme.md
new file mode 100644
index 000000000000..cd020a11108d
--- /dev/null
+++ b/keyboards/minimon/readme.md
@@ -0,0 +1,9 @@
+![Minimon logo](https://i.imgur.com/4SWEH5Kh.png)
+
+Having fun making keyboards for the northern marked, as we need an extra column for our extended alphabets.
+
+Maintained by [Kyrremann](https://github.com/Kyrremann).
+
+## Keyboards
+
+* [Index Tab](index_tab/) - 13x6 ortho keyboard
diff --git a/keyboards/mode/m65s/info.json b/keyboards/mode/m65s/info.json
new file mode 100644
index 000000000000..cb0cf8c12cd5
--- /dev/null
+++ b/keyboards/mode/m65s/info.json
@@ -0,0 +1,85 @@
+{
+ "keyboard_name": "Mode SixtyFive S",
+ "url": "",
+ "maintainer": "Gondolindrim",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ { "label": "K00", "x": 0, "y": 0 },
+ { "label": "K01", "x": 1, "y": 0 },
+ { "label": "K02", "x": 2, "y": 0 },
+ { "label": "K03", "x": 3, "y": 0 },
+ { "label": "K04", "x": 4, "y": 0 },
+ { "label": "K05", "x": 5, "y": 0 },
+ { "label": "K06", "x": 6, "y": 0 },
+ { "label": "K07", "x": 7, "y": 0 },
+ { "label": "K08", "x": 8, "y": 0 },
+ { "label": "K09", "x": 9, "y": 0 },
+ { "label": "K0A", "x": 10, "y": 0 },
+ { "label": "K0B", "x": 11, "y": 0 },
+ { "label": "K0C", "x": 12, "y": 0 },
+ { "label": "K0D", "x": 13, "y": 0 },
+ { "label": "K0E", "x": 14, "y": 0 },
+ { "label": "K0F", "x": 15, "y": 0 },
+
+ { "label": "K10", "x": 0, "y": 1, "w": 1.5 },
+ { "label": "K11", "x": 1.5, "y": 1 },
+ { "label": "K12", "x": 2.5, "y": 1 },
+ { "label": "K13", "x": 3.5, "y": 1 },
+ { "label": "K14", "x": 4.5, "y": 1 },
+ { "label": "K15", "x": 5.5, "y": 1 },
+ { "label": "K16", "x": 6.5, "y": 1 },
+ { "label": "K17", "x": 7.5, "y": 1 },
+ { "label": "K18", "x": 8.5, "y": 1 },
+ { "label": "K19", "x": 9.5, "y": 1 },
+ { "label": "K1A", "x": 10.5, "y": 1 },
+ { "label": "K1B", "x": 11.5, "y": 1 },
+ { "label": "K1C", "x": 12.5, "y": 1 },
+ { "label": "K1E", "x": 13.5, "y": 1, "w": 1.5},
+ { "label": "K1F", "x": 15, "y": 1 },
+
+ { "label": "K20", "x": 0, "y": 2, "w": 1.75 },
+ { "label": "K21", "x": 1.75, "y": 2 },
+ { "label": "K22", "x": 2.75, "y": 2 },
+ { "label": "K23", "x": 3.75, "y": 2 },
+ { "label": "K24", "x": 4.75, "y": 2 },
+ { "label": "K25", "x": 5.75, "y": 2 },
+ { "label": "K26", "x": 6.75, "y": 2 },
+ { "label": "K27", "x": 7.75, "y": 2 },
+ { "label": "K28", "x": 8.75, "y": 2 },
+ { "label": "K29", "x": 9.75, "y": 2 },
+ { "label": "K2A", "x": 10.75, "y": 2 },
+ { "label": "K2B", "x": 11.75, "y": 2 },
+ { "label": "K2D", "x": 12.75, "y": 2 },
+ { "label": "K2E", "x": 13.75, "y": 2, "w": 1.25 },
+ { "label": "K2F", "x": 15, "y": 2 },
+
+ { "label": "K30", "x": 0, "y": 3, "w": 1.25 },
+ { "label": "K31", "x": 1.25, "y": 3 },
+ { "label": "K32", "x": 2.25, "y": 3 },
+ { "label": "K33", "x": 3.25, "y": 3 },
+ { "label": "K34", "x": 4.25, "y": 3 },
+ { "label": "K35", "x": 5.25, "y": 3 },
+ { "label": "K36", "x": 6.25, "y": 3 },
+ { "label": "K37", "x": 7.25, "y": 3 },
+ { "label": "K38", "x": 8.25, "y": 3 },
+ { "label": "K39", "x": 9.25, "y": 3 },
+ { "label": "K3A", "x": 10.25, "y": 3 },
+ { "label": "K3B", "x": 11.25, "y": 3 },
+ { "label": "K3C", "x": 12.25, "y": 3, "w": 1.75 },
+ { "label": "K3E", "x": 14, "y": 3 },
+ { "label": "K3F", "x": 15, "y": 3 },
+
+ { "label": "K40", "x": 0, "y": 4, "w": 1.25 },
+ { "label": "K41", "x": 1.25, "y": 4, "w": 1.25 },
+ { "label": "K42", "x": 2.5, "y": 4, "w": 1.25 },
+ { "label": "K56", "x": 3.75, "y": 4, "w": 6.25 },
+ { "label": "K5A", "x": 10, "y": 4, "w": 1.25 },
+ { "label": "K5B", "x": 11.25, "y": 4, "w": 1.25 },
+ { "label": "K5D", "x": 13, "y": 4 },
+ { "label": "K5E", "x": 14, "y": 4 },
+ { "label": "K5F", "x": 15, "y": 4 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/mode/m65s/README.md b/keyboards/mode/m65s/readme.md
similarity index 65%
rename from keyboards/mode/m65s/README.md
rename to keyboards/mode/m65s/readme.md
index 2fa0ed1681f9..92e0b8421ec7 100644
--- a/keyboards/mode/m65s/README.md
+++ b/keyboards/mode/m65s/readme.md
@@ -1,12 +1,12 @@
# Mode SixtyFive M65S
-![MODE65](https://raw.githubusercontent.com/Gondolindrim/file_hosting/main/mode_sixtyfive/Group_95_1024x1024.jpg)\
+![MODE65](https://raw.githubusercontent.com/Gondolindrim/file_hosting/main/mode_sixtyfive/Group_95_1024x1024.jpg)
-The M65S is the sodlerable PCB for the Mode SixtyFive keyboard, s sixty-five-percent high-end keyboard sold by [Mode Designs](https://shop.modedesigns.com/).
+The M65S is the solderable PCB for the Mode SixtyFive keyboard, a sixty-five-percent high-end keyboard sold by [Mode Designs](https://shop.modedesigns.com/).
-* Keyboard Maintainer: [Gondolindrim](https://github.com/gondolindrim)
+* Keyboard Maintainer: [Gondolindrim](https://github.com/Gondolindrim)
* Hardware Supported: proprietary PCB using STM32F401RBT6 controller
-* Hardware Availability: you can get a Mode SixtyFive as of today (august. 2021) through the in stock sales or special groupbuy editions at https://shop.modedesigns.com/
+* Hardware Availability: you can get a Mode SixtyFive as of today (August 2021) through the in-stock sales or special group buy editions at [Mode Designs](https://shop.modedesigns.com/)
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/mokey/ginkgo65/config.h b/keyboards/mokey/ginkgo65/config.h
new file mode 100644
index 000000000000..36609892678a
--- /dev/null
+++ b/keyboards/mokey/ginkgo65/config.h
@@ -0,0 +1,41 @@
+/*
+Copyright 2021 Kyle McCreery
+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 .
+*/
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x6653
+#define PRODUCT_ID 0x3365
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Mokey
+#define PRODUCT ginkgo 65
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 16
+ /* 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */
+#define MATRIX_ROW_PINS { F7, B7, F5, F1, B0 }
+#define MATRIX_COL_PINS { C7, F6, B2, F4, B3, E6, D0, D1, D2, D3, D5, D4, D6, D7, B4, B1 }
+#define UNUSED_PINS
+#define DIODE_DIRECTION COL2ROW
+
+#define BACKLIGHT_PIN B6
+#define BACKLIGHT_LEVELS 6
+#define BACKLIGHT_CAPS_LOCK
+#define BACKLIGHT_BREATHING
+#define BREATHING_PERIOD 5
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
diff --git a/keyboards/mokey/ginkgo65/ginkgo65.c b/keyboards/mokey/ginkgo65/ginkgo65.c
new file mode 100644
index 000000000000..4ab3aae51f13
--- /dev/null
+++ b/keyboards/mokey/ginkgo65/ginkgo65.c
@@ -0,0 +1,16 @@
+/* Copyright 2021 Ocean
+ * 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 "ginkgo65.h"
+
diff --git a/keyboards/mokey/ginkgo65/ginkgo65.h b/keyboards/mokey/ginkgo65/ginkgo65.h
new file mode 100644
index 000000000000..72342f08bb28
--- /dev/null
+++ b/keyboards/mokey/ginkgo65/ginkgo65.h
@@ -0,0 +1,188 @@
+/* Copyright 2021 Ocean
+ *
+ * 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 .
+ */
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+/*LAYOUT
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ * │k00│k01│k02│k03│k04│k05│k06│k07│k08│k09│k0A│k0B│k0C│ k0D │k0F│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ k10 │k11│k12│k13│k14│k15│k16│k17│k18│k19│k1A│k1B│k1C│ k1D │k1E│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │ k20 │k21│k22│k23│k24│k25│k26│k27│k28│k29│k2A│k2B│ k2D │k2E│
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ k30 │k32│k33│k34│k35│k36│k37│k38│k39│k3A│k3B│ k3C │k3D│k3E│
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │k40 │k41 │k42 │ k44 │k49 │k4A │ │k4C│k4D│k4E│
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
+*/
+#define LAYOUT( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, k2E, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k40, k41, k42, k44, k49, k4A, k4C, k4D, k4E \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, XXX, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, XXX }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, k2E, XXX }, \
+ { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, XXX }, \
+ { k40, k41, k42, XXX, k44, XXX, XXX, XXX, XXX, k49, k4A, XXX, k4C, k4D, k4E, XXX }, \
+}
+
+/*LAYOUT_iso
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │k00│k01│k02│k03│k04│k05│k06│k07│k08│k09│k0A│k0B│k0C│k0D│k0E│k0F│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
+ * │ k10 │k11│k12│k13│k14│k15│k16│k17│k18│k19│k1A│k1B│k1C│ K2D │k1E│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤
+ * │ k20 │k21│k22│k23│k24│k25│k26│k27│k28│k29│k2A│k2B│k1D│ │k2E│
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
+ * │ k30 │k32│k33│k34│k35│k36│k37│k38│k39│k3A│k3B│ k3C │k3D│k3E│
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │k40 │k41 │k42 │ k44 │k49 │k4A │ │k4C│k4D│k4E│
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
+*/
+#define LAYOUT_iso( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k2D, k1E, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k1D, k2E, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k40, k41, k42, k44, k49, k4A, k4C, k4D, k4E \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k2D, k1E, XXX }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, k2E, XXX }, \
+ { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, XXX }, \
+ { k40, k41, k42, XXX, k44, XXX, XXX, XXX, XXX, k49, k4A, XXX, k4C, k4D, k4E, XXX }, \
+}
+
+/*LAYOUT_split_left_shift
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │k00│k01│k02│k03│k04│k05│k06│k07│k08│k09│k0A│k0B│k0C│k0D│k0E│k0F│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
+ * │ k10 │k11│k12│k13│k14│k15│k16│k17│k18│k19│k1A│k1B│k1C│ K2D │k1E│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤
+ * │ k20 │k21│k22│k23│k24│k25│k26│k27│k28│k29│k2A│k2B│k1D│ │k2E│
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
+ * │k30 │k31│k32│k33│k34│k35│k36│k37│k38│k39│k3A│k3B│ k3C │k3D│k3E│
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │k40 │k41 │k42 │ k44 │k49 │k4A │ │k4C│k4D│k4E│
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
+*/
+#define LAYOUT_split_left_shift( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k2D, k1E, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k1D, k2E, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k40, k41, k42, k44, k49, k4A, k4C, k4D, k4E \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k2D, k1E, XXX, }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, k2E, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, XXX }, \
+ { k40, k41, k42, XXX, k44, XXX, XXX, XXX, XXX, k49, k4A, XXX, k4C, k4D, k4E, XXX }, \
+}
+
+/*LAYOUT_7u_space
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │k00│k01│k02│k03│k04│k05│k06│k07│k08│k09│k0A│k0B│k0C│k0D│k0E│k0F│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
+ * │ k10 │k11│k12│k13│k14│k15│k16│k17│k18│k19│k1A│k1B│k1C│ K2D │k1E│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤
+ * │ k20 │k21│k22│k23│k24│k25│k26│k27│k28│k29│k2A│k2B│k1D│ │k2E│
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
+ * │k30 │k31│k32│k33│k34│k35│k36│k37│k38│k39│k3A│k3B│ k3C │k3D│k3E│
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬─┬───┼───┼───┤
+ * │k40 │k41 │k42 │ k44 │k4A │ │k4C│k4D│k4E│
+ * └────┴────┴────┴────────────────────────────┴─────┘ └───┴───┴───┘
+ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
+*/
+#define LAYOUT_7u_space( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k2D, k1E, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k1D, k2E, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k40, k41, k42, k44, k4A, k4C, k4D, k4E \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k2D, k1E, XXX, }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, k2E, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, XXX }, \
+ { k40, k41, k42, XXX, k44, XXX, XXX, XXX, XXX, XXX, k4A, XXX, k4C, k4D, k4E, XXX }, \
+}
+
+/*LAYOUT_split_space_1
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │k00│k01│k02│k03│k04│k05│k06│k07│k08│k09│k0A│k0B│k0C│k0D│k0E│k0F│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
+ * │ k10 │k11│k12│k13│k14│k15│k16│k17│k18│k19│k1A│k1B│k1C│ K2D │k1E│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤
+ * │ k20 │k21│k22│k23│k24│k25│k26│k27│k28│k29│k2A│k2B│k1D│ │k2E│
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
+ * │k30 │k31│k32│k33│k34│k35│k36│k37│k38│k39│k3A│k3B│ k3C │k3D│k3E│
+ * ├────┼───┴┬──┴─┬─┴───┴───┴┬──┴─┬─┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │k40 │k41 │k42 │k43 │K44 │ K46 │K49 │k4A │ │k4C│k4D│k4E│
+ * └────┴────┴────┴──────────┴────┴────────┴────┴────┘ └───┴───┴───┘
+ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
+*/
+#define LAYOUT_split_space_1( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k2D, k1E, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k1D, k2E, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k40, k41, k42, K43, k44, K46, K49, k4A, k4C, k4D, k4E \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k2D, k1E, XXX, }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, k2E, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, XXX }, \
+ { k40, k41, k42, K43, k44, XXX, K46, XXX, XXX, XXX, k4A, XXX, k4C, k4D, k4E, XXX }, \
+}
+
+/*LAYOUT_split_space_2
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │k00│k01│k02│k03│k04│k05│k06│k07│k08│k09│k0A│k0B│k0C│k0D│k0E│k0F│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
+ * │ k10 │k11│k12│k13│k14│k15│k16│k17│k18│k19│k1A│k1B│k1C│ K2D │k1E│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ ├───┤
+ * │ k20 │k21│k22│k23│k24│k25│k26│k27│k28│k29│k2A│k2B│k1D│ │k2E│
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
+ * │k30 │k31│k32│k33│k34│k35│k36│k37│k38│k39│k3A│k3B│ k3C │k3D│k3E│
+ * ├────┼───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │k40 │k41 │k42 │k43 │K44 │ K46 │K49 │k4A │ │k4C│k4D│k4E│
+ * └────┴────┴────┴────────┴────┴──────────┴────┴────┘ └───┴───┴───┘
+ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
+*/
+#define LAYOUT_split_space_2( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k2D, k1E, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k1D, k2E, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, \
+ k40, k41, k42, K43, k44, K46, K49, k4A, k4C, k4D, k4E \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k2D, k1E, XXX, }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, XXX, k2D, k2E, XXX }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, XXX }, \
+ { k40, k41, k42, K43, k44, XXX, K46, XXX, XXX, XXX, k4A, XXX, k4C, k4D, k4E, XXX }, \
+}
diff --git a/keyboards/mokey/ginkgo65/info.json b/keyboards/mokey/ginkgo65/info.json
new file mode 100644
index 000000000000..116b3e057aa7
--- /dev/null
+++ b/keyboards/mokey/ginkgo65/info.json
@@ -0,0 +1,469 @@
+{
+ "keyboard_name": "ginkgo65",
+ "url": "",
+ "maintainer": "mokey",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"k00", "x":0, "y":0},
+ {"label":"k01", "x":1, "y":0},
+ {"label":"k02", "x":2, "y":0},
+ {"label":"k03", "x":3, "y":0},
+ {"label":"k04", "x":4, "y":0},
+ {"label":"k05", "x":5, "y":0},
+ {"label":"k06", "x":6, "y":0},
+ {"label":"k07", "x":7, "y":0},
+ {"label":"k08", "x":8, "y":0},
+ {"label":"k09", "x":9, "y":0},
+ {"label":"k0a", "x":10, "y":0},
+ {"label":"k0b", "x":11, "y":0},
+ {"label":"k0c", "x":12, "y":0},
+ {"label":"k0e", "x":13, "y":0, "w":2},
+ {"label":"k0f", "x":15, "y":0},
+
+ {"label":"k10", "x":0, "y":1, "w":1.5},
+ {"label":"k11", "x":1.5, "y":1},
+ {"label":"k12", "x":2.5, "y":1},
+ {"label":"k13", "x":3.5, "y":1},
+ {"label":"k14", "x":4.5, "y":1},
+ {"label":"k15", "x":5.5, "y":1},
+ {"label":"k16", "x":6.5, "y":1},
+ {"label":"k17", "x":7.5, "y":1},
+ {"label":"k18", "x":8.5, "y":1},
+ {"label":"k19", "x":9.5, "y":1},
+ {"label":"k1a", "x":10.5, "y":1},
+ {"label":"k1b", "x":11.5, "y":1},
+ {"label":"k1c", "x":12.5, "y":1},
+ {"label":"k1d", "x":13.5, "y":1, "w":1.5},
+ {"label":"k1e", "x":15, "y":1,},
+
+ {"label":"k20", "x":0, "y":2, "w":1.75},
+ {"label":"k21", "x":1.75, "y":2},
+ {"label":"k22", "x":2.75, "y":2},
+ {"label":"k23", "x":3.75, "y":2},
+ {"label":"k24", "x":4.75, "y":2},
+ {"label":"k25", "x":5.75, "y":2},
+ {"label":"k26", "x":6.75, "y":2},
+ {"label":"k27", "x":7.75, "y":2},
+ {"label":"k28", "x":8.75, "y":2},
+ {"label":"k29", "x":9.75, "y":2},
+ {"label":"k2a", "x":10.75, "y":2},
+ {"label":"k2b", "x":11.75, "y":2},
+ {"label":"k2d", "x":12.75, "y":2, "w":2.25},
+ {"label":"k2e", "x":15, "y":2},
+
+ {"label":"k30", "x":0, "y":3, "w":2.25},
+ {"label":"k32", "x":2.25, "y":3},
+ {"label":"k33", "x":3.25, "y":3},
+ {"label":"k34", "x":4.25, "y":3},
+ {"label":"k35", "x":5.25, "y":3},
+ {"label":"k36", "x":6.25, "y":3},
+ {"label":"k37", "x":7.25, "y":3},
+ {"label":"k38", "x":8.25, "y":3},
+ {"label":"k39", "x":9.25, "y":3},
+ {"label":"k3a", "x":10.25, "y":3},
+ {"label":"k3b", "x":11.25, "y":3},
+ {"label":"k3c", "x":12.25, "y":3, "w":1.75},
+ {"label":"k3d", "x":14, "y":3},
+ {"label":"k3e", "x":15, "y":3},
+
+ {"label":"k40", "x":0, "y":4, "w":1.25},
+ {"label":"k41", "x":1.25, "y":4, "w":1.25},
+ {"label":"k42", "x":2.5, "y":4, "w":1.25},
+ {"label":"k44", "x":3.75, "y":4, "w":6.25},
+ {"label":"k49", "x":10, "y":4, "w":1.25},
+ {"label":"k4a", "x":11.25, "y":4, "w":1.25},
+ {"label":"k4c", "x":13, "y":4},
+ {"label":"k4d", "x":14, "y":4},
+ {"label":"k4e", "x":15, "y":4}
+ ]
+ },
+ "LAYOUT_iso":{
+ "layout": [
+ {"label":"k00", "x":0, "y":0},
+ {"label":"k01", "x":1, "y":0},
+ {"label":"k02", "x":2, "y":0},
+ {"label":"k03", "x":3, "y":0},
+ {"label":"k04", "x":4, "y":0},
+ {"label":"k05", "x":5, "y":0},
+ {"label":"k06", "x":6, "y":0},
+ {"label":"k07", "x":7, "y":0},
+ {"label":"k08", "x":8, "y":0},
+ {"label":"k09", "x":9, "y":0},
+ {"label":"k0a", "x":10, "y":0},
+ {"label":"k0b", "x":11, "y":0},
+ {"label":"k0c", "x":12, "y":0},
+ {"label":"k0d", "x":13, "y":0},
+ {"label":"k0e", "x":14, "y":0},
+ {"label":"k0f", "x":15, "y":0},
+
+ {"label":"k10", "x":0, "y":1, "w":1.5},
+ {"label":"k11", "x":1.5, "y":1},
+ {"label":"k12", "x":2.5, "y":1},
+ {"label":"k13", "x":3.5, "y":1},
+ {"label":"k14", "x":4.5, "y":1},
+ {"label":"k15", "x":5.5, "y":1},
+ {"label":"k16", "x":6.5, "y":1},
+ {"label":"k17", "x":7.5, "y":1},
+ {"label":"k18", "x":8.5, "y":1},
+ {"label":"k19", "x":9.5, "y":1},
+ {"label":"k1a", "x":10.5, "y":1},
+ {"label":"k1b", "x":11.5, "y":1},
+ {"label":"k1c", "x":12.5, "y":1},
+ {"label":"k2d", "x":13.75, "y":1, "w":1.25},
+ {"label":"k1e", "x":15, "y":1,},
+
+ {"label":"k20", "x":0, "y":2, "w":1.75},
+ {"label":"k21", "x":1.75, "y":2},
+ {"label":"k22", "x":2.75, "y":2},
+ {"label":"k23", "x":3.75, "y":2},
+ {"label":"k24", "x":4.75, "y":2},
+ {"label":"k25", "x":5.75, "y":2},
+ {"label":"k26", "x":6.75, "y":2},
+ {"label":"k27", "x":7.75, "y":2},
+ {"label":"k28", "x":8.75, "y":2},
+ {"label":"k29", "x":9.75, "y":2},
+ {"label":"k2a", "x":10.75, "y":2},
+ {"label":"k2b", "x":11.75, "y":2},
+ {"label":"k1d", "x":12.75, "y":2},
+ {"label":"k2e", "x":15, "y":2},
+
+ {"label":"k30", "x":0, "y":3, "w":2.25},
+ {"label":"k32", "x":2.25, "y":3},
+ {"label":"k33", "x":3.25, "y":3},
+ {"label":"k34", "x":4.25, "y":3},
+ {"label":"k35", "x":5.25, "y":3},
+ {"label":"k36", "x":6.25, "y":3},
+ {"label":"k37", "x":7.25, "y":3},
+ {"label":"k38", "x":8.25, "y":3},
+ {"label":"k39", "x":9.25, "y":3},
+ {"label":"k3a", "x":10.25, "y":3},
+ {"label":"k3b", "x":11.25, "y":3},
+ {"label":"k3c", "x":12.25, "y":3, "w":1.75},
+ {"label":"k3d", "x":14, "y":3},
+ {"label":"k3e", "x":15, "y":3},
+
+ {"label":"k40", "x":0, "y":4, "w":1.25},
+ {"label":"k41", "x":1.25, "y":4, "w":1.25},
+ {"label":"k42", "x":2.5, "y":4, "w":1.25},
+ {"label":"k44", "x":3.75, "y":4, "w":6.25},
+ {"label":"k49", "x":10, "y":4, "w":1.25},
+ {"label":"k4a", "x":11.25, "y":4, "w":1.25},
+ {"label":"k4c", "x":13, "y":4},
+ {"label":"k4d", "x":14, "y":4},
+ {"label":"k4e", "x":15, "y":4}
+ ]
+ },
+ "LAYOUT_split_left_shift":{
+ "layout": [
+ {"label":"k00", "x":0, "y":0},
+ {"label":"k01", "x":1, "y":0},
+ {"label":"k02", "x":2, "y":0},
+ {"label":"k03", "x":3, "y":0},
+ {"label":"k04", "x":4, "y":0},
+ {"label":"k05", "x":5, "y":0},
+ {"label":"k06", "x":6, "y":0},
+ {"label":"k07", "x":7, "y":0},
+ {"label":"k08", "x":8, "y":0},
+ {"label":"k09", "x":9, "y":0},
+ {"label":"k0a", "x":10, "y":0},
+ {"label":"k0b", "x":11, "y":0},
+ {"label":"k0c", "x":12, "y":0},
+ {"label":"k0d", "x":13, "y":0},
+ {"label":"k0e", "x":14, "y":0},
+ {"label":"k0f", "x":15, "y":0},
+
+ {"label":"k10", "x":0, "y":1, "w":1.5},
+ {"label":"k11", "x":1.5, "y":1},
+ {"label":"k12", "x":2.5, "y":1},
+ {"label":"k13", "x":3.5, "y":1},
+ {"label":"k14", "x":4.5, "y":1},
+ {"label":"k15", "x":5.5, "y":1},
+ {"label":"k16", "x":6.5, "y":1},
+ {"label":"k17", "x":7.5, "y":1},
+ {"label":"k18", "x":8.5, "y":1},
+ {"label":"k19", "x":9.5, "y":1},
+ {"label":"k1a", "x":10.5, "y":1},
+ {"label":"k1b", "x":11.5, "y":1},
+ {"label":"k1c", "x":12.5, "y":1},
+ {"label":"k2d", "x":13.75, "y":1, "w":1.25},
+ {"label":"k1e", "x":15, "y":1,},
+
+ {"label":"k20", "x":0, "y":2, "w":1.75},
+ {"label":"k21", "x":1.75, "y":2},
+ {"label":"k22", "x":2.75, "y":2},
+ {"label":"k23", "x":3.75, "y":2},
+ {"label":"k24", "x":4.75, "y":2},
+ {"label":"k25", "x":5.75, "y":2},
+ {"label":"k26", "x":6.75, "y":2},
+ {"label":"k27", "x":7.75, "y":2},
+ {"label":"k28", "x":8.75, "y":2},
+ {"label":"k29", "x":9.75, "y":2},
+ {"label":"k2a", "x":10.75, "y":2},
+ {"label":"k2b", "x":11.75, "y":2},
+ {"label":"k1d", "x":12.75, "y":2},
+ {"label":"k2e", "x":15, "y":2},
+
+ {"label":"k30", "x":0, "y":3, "w":1.25},
+ {"label":"k31", "x":1.25, "y":3},
+ {"label":"k32", "x":2.25, "y":3},
+ {"label":"k33", "x":3.25, "y":3},
+ {"label":"k34", "x":4.25, "y":3},
+ {"label":"k35", "x":5.25, "y":3},
+ {"label":"k36", "x":6.25, "y":3},
+ {"label":"k37", "x":7.25, "y":3},
+ {"label":"k38", "x":8.25, "y":3},
+ {"label":"k39", "x":9.25, "y":3},
+ {"label":"k3a", "x":10.25, "y":3},
+ {"label":"k3b", "x":11.25, "y":3},
+ {"label":"k3c", "x":12.25, "y":3, "w":1.75},
+ {"label":"k3d", "x":14, "y":3},
+ {"label":"k3e", "x":15, "y":3},
+
+ {"label":"k40", "x":0, "y":4, "w":1.25},
+ {"label":"k41", "x":1.25, "y":4, "w":1.25},
+ {"label":"k42", "x":2.5, "y":4, "w":1.25},
+ {"label":"k44", "x":3.75, "y":4, "w":6.25},
+ {"label":"k49", "x":10, "y":4, "w":1.25},
+ {"label":"k4a", "x":11.25, "y":4, "w":1.25},
+ {"label":"k4c", "x":13, "y":4},
+ {"label":"k4d", "x":14, "y":4},
+ {"label":"k4e", "x":15, "y":4}
+ ]
+ },
+ "LAYOUT_7u_space":{
+ "layout": [
+ {"label":"k00", "x":0, "y":0},
+ {"label":"k01", "x":1, "y":0},
+ {"label":"k02", "x":2, "y":0},
+ {"label":"k03", "x":3, "y":0},
+ {"label":"k04", "x":4, "y":0},
+ {"label":"k05", "x":5, "y":0},
+ {"label":"k06", "x":6, "y":0},
+ {"label":"k07", "x":7, "y":0},
+ {"label":"k08", "x":8, "y":0},
+ {"label":"k09", "x":9, "y":0},
+ {"label":"k0a", "x":10, "y":0},
+ {"label":"k0b", "x":11, "y":0},
+ {"label":"k0c", "x":12, "y":0},
+ {"label":"k0d", "x":13, "y":0},
+ {"label":"k0e", "x":14, "y":0},
+ {"label":"k0f", "x":15, "y":0},
+
+ {"label":"k10", "x":0, "y":1, "w":1.5},
+ {"label":"k11", "x":1.5, "y":1},
+ {"label":"k12", "x":2.5, "y":1},
+ {"label":"k13", "x":3.5, "y":1},
+ {"label":"k14", "x":4.5, "y":1},
+ {"label":"k15", "x":5.5, "y":1},
+ {"label":"k16", "x":6.5, "y":1},
+ {"label":"k17", "x":7.5, "y":1},
+ {"label":"k18", "x":8.5, "y":1},
+ {"label":"k19", "x":9.5, "y":1},
+ {"label":"k1a", "x":10.5, "y":1},
+ {"label":"k1b", "x":11.5, "y":1},
+ {"label":"k1c", "x":12.5, "y":1},
+ {"label":"k2d", "x":13.75, "y":1, "w":1.25},
+ {"label":"k1e", "x":15, "y":1,},
+
+ {"label":"k20", "x":0, "y":2, "w":1.75},
+ {"label":"k21", "x":1.75, "y":2},
+ {"label":"k22", "x":2.75, "y":2},
+ {"label":"k23", "x":3.75, "y":2},
+ {"label":"k24", "x":4.75, "y":2},
+ {"label":"k25", "x":5.75, "y":2},
+ {"label":"k26", "x":6.75, "y":2},
+ {"label":"k27", "x":7.75, "y":2},
+ {"label":"k28", "x":8.75, "y":2},
+ {"label":"k29", "x":9.75, "y":2},
+ {"label":"k2a", "x":10.75, "y":2},
+ {"label":"k2b", "x":11.75, "y":2},
+ {"label":"k1d", "x":12.75, "y":2},
+ {"label":"k2e", "x":15, "y":2},
+
+ {"label":"k30", "x":0, "y":3, "w":1.25},
+ {"label":"k31", "x":1.25, "y":3},
+ {"label":"k32", "x":2.25, "y":3},
+ {"label":"k33", "x":3.25, "y":3},
+ {"label":"k34", "x":4.25, "y":3},
+ {"label":"k35", "x":5.25, "y":3},
+ {"label":"k36", "x":6.25, "y":3},
+ {"label":"k37", "x":7.25, "y":3},
+ {"label":"k38", "x":8.25, "y":3},
+ {"label":"k39", "x":9.25, "y":3},
+ {"label":"k3a", "x":10.25, "y":3},
+ {"label":"k3b", "x":11.25, "y":3},
+ {"label":"k3c", "x":12.25, "y":3, "w":1.75},
+ {"label":"k3d", "x":14, "y":3},
+ {"label":"k3e", "x":15, "y":3},
+
+ {"label":"k40", "x":0, "y":4, "w":1.5},
+ {"label":"k41", "x":1.5, "y":4,},
+ {"label":"k42", "x":2.5, "y":4, "w":1.5},
+ {"label":"k44", "x":4, "y":4, "w":7},
+ {"label":"k49", "x":11, "y":4, "w":1.5},
+ {"label":"k4c", "x":13, "y":4},
+ {"label":"k4d", "x":14, "y":4},
+ {"label":"k4e", "x":15, "y":4}
+ ]
+ },
+ "LAYOUT_split_space_1":{
+ "layout": [
+ {"label":"k00", "x":0, "y":0},
+ {"label":"k01", "x":1, "y":0},
+ {"label":"k02", "x":2, "y":0},
+ {"label":"k03", "x":3, "y":0},
+ {"label":"k04", "x":4, "y":0},
+ {"label":"k05", "x":5, "y":0},
+ {"label":"k06", "x":6, "y":0},
+ {"label":"k07", "x":7, "y":0},
+ {"label":"k08", "x":8, "y":0},
+ {"label":"k09", "x":9, "y":0},
+ {"label":"k0a", "x":10, "y":0},
+ {"label":"k0b", "x":11, "y":0},
+ {"label":"k0c", "x":12, "y":0},
+ {"label":"k0d", "x":13, "y":0},
+ {"label":"k0e", "x":14, "y":0},
+ {"label":"k0f", "x":15, "y":0},
+
+ {"label":"k10", "x":0, "y":1, "w":1.5},
+ {"label":"k11", "x":1.5, "y":1},
+ {"label":"k12", "x":2.5, "y":1},
+ {"label":"k13", "x":3.5, "y":1},
+ {"label":"k14", "x":4.5, "y":1},
+ {"label":"k15", "x":5.5, "y":1},
+ {"label":"k16", "x":6.5, "y":1},
+ {"label":"k17", "x":7.5, "y":1},
+ {"label":"k18", "x":8.5, "y":1},
+ {"label":"k19", "x":9.5, "y":1},
+ {"label":"k1a", "x":10.5, "y":1},
+ {"label":"k1b", "x":11.5, "y":1},
+ {"label":"k1c", "x":12.5, "y":1},
+ {"label":"k2d", "x":13.75, "y":1, "w":1.25},
+ {"label":"k1e", "x":15, "y":1,},
+
+ {"label":"k20", "x":0, "y":2, "w":1.75},
+ {"label":"k21", "x":1.75, "y":2},
+ {"label":"k22", "x":2.75, "y":2},
+ {"label":"k23", "x":3.75, "y":2},
+ {"label":"k24", "x":4.75, "y":2},
+ {"label":"k25", "x":5.75, "y":2},
+ {"label":"k26", "x":6.75, "y":2},
+ {"label":"k27", "x":7.75, "y":2},
+ {"label":"k28", "x":8.75, "y":2},
+ {"label":"k29", "x":9.75, "y":2},
+ {"label":"k2a", "x":10.75, "y":2},
+ {"label":"k2b", "x":11.75, "y":2},
+ {"label":"k1d", "x":12.75, "y":2},
+ {"label":"k2e", "x":15, "y":2},
+
+ {"label":"k30", "x":0, "y":3, "w":1.25},
+ {"label":"k31", "x":1.25, "y":3},
+ {"label":"k32", "x":2.25, "y":3},
+ {"label":"k33", "x":3.25, "y":3},
+ {"label":"k34", "x":4.25, "y":3},
+ {"label":"k35", "x":5.25, "y":3},
+ {"label":"k36", "x":6.25, "y":3},
+ {"label":"k37", "x":7.25, "y":3},
+ {"label":"k38", "x":8.25, "y":3},
+ {"label":"k39", "x":9.25, "y":3},
+ {"label":"k3a", "x":10.25, "y":3},
+ {"label":"k3b", "x":11.25, "y":3},
+ {"label":"k3c", "x":12.25, "y":3, "w":1.75},
+ {"label":"k3d", "x":14, "y":3},
+ {"label":"k3e", "x":15, "y":3},
+
+ {"label":"k40", "x":0, "y":4, "w":1.25},
+ {"label":"k41", "x":1.25, "y":4, "w":1.25},
+ {"label":"k42", "x":2.5, "y":4, "w":1.25},
+ {"label":"k43", "x":3.75, "y":4, "w":2.75},
+ {"label":"k44", "x":6.5, "y":4, "w":1.25},
+ {"label":"k46", "x":7.75, "y":4, "w":2.25},
+ {"label":"k49", "x":10, "y":4, "w":1.25},
+ {"label":"k4a", "x":11.25, "y":4, "w":1.25},
+ {"label":"k4c", "x":13, "y":4},
+ {"label":"k4d", "x":14, "y":4},
+ {"label":"k4e", "x":15, "y":4}
+ ]
+ },
+ "LAYOUT_split_space_2":{
+ "layout": [
+ {"label":"k00", "x":0, "y":0},
+ {"label":"k01", "x":1, "y":0},
+ {"label":"k02", "x":2, "y":0},
+ {"label":"k03", "x":3, "y":0},
+ {"label":"k04", "x":4, "y":0},
+ {"label":"k05", "x":5, "y":0},
+ {"label":"k06", "x":6, "y":0},
+ {"label":"k07", "x":7, "y":0},
+ {"label":"k08", "x":8, "y":0},
+ {"label":"k09", "x":9, "y":0},
+ {"label":"k0a", "x":10, "y":0},
+ {"label":"k0b", "x":11, "y":0},
+ {"label":"k0c", "x":12, "y":0},
+ {"label":"k0d", "x":13, "y":0},
+ {"label":"k0e", "x":14, "y":0},
+ {"label":"k0f", "x":15, "y":0},
+
+ {"label":"k10", "x":0, "y":1, "w":1.5},
+ {"label":"k11", "x":1.5, "y":1},
+ {"label":"k12", "x":2.5, "y":1},
+ {"label":"k13", "x":3.5, "y":1},
+ {"label":"k14", "x":4.5, "y":1},
+ {"label":"k15", "x":5.5, "y":1},
+ {"label":"k16", "x":6.5, "y":1},
+ {"label":"k17", "x":7.5, "y":1},
+ {"label":"k18", "x":8.5, "y":1},
+ {"label":"k19", "x":9.5, "y":1},
+ {"label":"k1a", "x":10.5, "y":1},
+ {"label":"k1b", "x":11.5, "y":1},
+ {"label":"k1c", "x":12.5, "y":1},
+ {"label":"k2d", "x":13.75, "y":1, "w":1.25},
+ {"label":"k1e", "x":15, "y":1,},
+
+ {"label":"k20", "x":0, "y":2, "w":1.75},
+ {"label":"k21", "x":1.75, "y":2},
+ {"label":"k22", "x":2.75, "y":2},
+ {"label":"k23", "x":3.75, "y":2},
+ {"label":"k24", "x":4.75, "y":2},
+ {"label":"k25", "x":5.75, "y":2},
+ {"label":"k26", "x":6.75, "y":2},
+ {"label":"k27", "x":7.75, "y":2},
+ {"label":"k28", "x":8.75, "y":2},
+ {"label":"k29", "x":9.75, "y":2},
+ {"label":"k2a", "x":10.75, "y":2},
+ {"label":"k2b", "x":11.75, "y":2},
+ {"label":"k1d", "x":12.75, "y":2},
+ {"label":"k2e", "x":15, "y":2},
+
+ {"label":"k30", "x":0, "y":3, "w":1.25},
+ {"label":"k31", "x":1.25, "y":3},
+ {"label":"k32", "x":2.25, "y":3},
+ {"label":"k33", "x":3.25, "y":3},
+ {"label":"k34", "x":4.25, "y":3},
+ {"label":"k35", "x":5.25, "y":3},
+ {"label":"k36", "x":6.25, "y":3},
+ {"label":"k37", "x":7.25, "y":3},
+ {"label":"k38", "x":8.25, "y":3},
+ {"label":"k39", "x":9.25, "y":3},
+ {"label":"k3a", "x":10.25, "y":3},
+ {"label":"k3b", "x":11.25, "y":3},
+ {"label":"k3c", "x":12.25, "y":3, "w":1.75},
+ {"label":"k3d", "x":14, "y":3},
+ {"label":"k3e", "x":15, "y":3},
+
+ {"label":"k40", "x":0, "y":4, "w":1.25},
+ {"label":"k41", "x":1.25, "y":4, "w":1.25},
+ {"label":"k42", "x":2.5, "y":4, "w":1.25},
+ {"label":"k43", "x":3.75, "y":4, "w":2.25},
+ {"label":"k44", "x":6, "y":4, "w":1.25},
+ {"label":"k46", "x":7.25, "y":4, "w":2.75},
+ {"label":"k49", "x":10, "y":4, "w":1.25},
+ {"label":"k4a", "x":11.25, "y":4, "w":1.25},
+ {"label":"k4c", "x":13, "y":4},
+ {"label":"k4d", "x":14, "y":4},
+ {"label":"k4e", "x":15, "y":4}
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/keyboards/mokey/ginkgo65/keymaps/default/keymap.c b/keyboards/mokey/ginkgo65/keymaps/default/keymap.c
new file mode 100644
index 000000000000..0d411bc9d231
--- /dev/null
+++ b/keyboards/mokey/ginkgo65/keymaps/default/keymap.c
@@ -0,0 +1,43 @@
+/* Copyright 2021 Ocean
+ * 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] = {
+
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Bspace │Ins│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │Del│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │PgU│
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ LShift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │RShift│ ↑ │PgD│
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │LCtl│LGui│LAlt│ Space │RAlt│ Fn │ │ ← │ ↓ │ → │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
+
+ LAYOUT(
+ /* 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */
+ 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_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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+};
diff --git a/keyboards/mokey/ginkgo65/keymaps/via/keymap.c b/keyboards/mokey/ginkgo65/keymaps/via/keymap.c
new file mode 100644
index 000000000000..90e7a8e9047d
--- /dev/null
+++ b/keyboards/mokey/ginkgo65/keymaps/via/keymap.c
@@ -0,0 +1,50 @@
+/* Copyright 2021 Ocean
+ * 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(
+ 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_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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT(
+ 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, _______, _______,
+ BL_TOGG, BL_STEP, BL_DEC, BL_INC, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/mokey/ginkgo65/keymaps/via/rules.mk b/keyboards/mokey/ginkgo65/keymaps/via/rules.mk
new file mode 100644
index 000000000000..36b7ba9cbc98
--- /dev/null
+++ b/keyboards/mokey/ginkgo65/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/mokey/ginkgo65/readme.md b/keyboards/mokey/ginkgo65/readme.md
new file mode 100644
index 000000000000..8caa629aefe4
--- /dev/null
+++ b/keyboards/mokey/ginkgo65/readme.md
@@ -0,0 +1,21 @@
+# Ginkgo65 Multi PCB
+
+![Ginkgo65](https://raw.githubusercontent.com/rhmokey/123.github.io/main/2021/08/15/hello-world/ginkgo65.png)
+
+Support Atmega32u4 keyboard,With a variety of configurations
+
+* Keyboard Maintainer: [mokey](https://github.com/rhmokey)
+* Hardware Supported: Atmega32u4
+## Bootloader
+* **Physical reset button**: Short press the button on the back of the PCB to enter the Bootloader and flash the firmware
+
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mokey/ginkgo65:default
+
+Flashing example for this keyboard:
+
+ make mokey/ginkgo65: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).
\ No newline at end of file
diff --git a/keyboards/mokey/ginkgo65/rules.mk b/keyboards/mokey/ginkgo65/rules.mk
new file mode 100644
index 000000000000..4f1faaec8009
--- /dev/null
+++ b/keyboards/mokey/ginkgo65/rules.mk
@@ -0,0 +1,21 @@
+# 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 = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mokey/mokey64/config.h b/keyboards/mokey/mokey64/config.h
index 79b96b4e275b..52345ed9733c 100644
--- a/keyboards/mokey/mokey64/config.h
+++ b/keyboards/mokey/mokey64/config.h
@@ -24,14 +24,14 @@ along with this program. If not, see .
#define PRODUCT MOKEY64
#define MATRIX_ROWS 5
-#define MATRIX_COLS 14
+#define MATRIX_COLS 15
#define MATRIX_ROW_PINS { B1, B2, B3, B4, B5 }
-#define MATRIX_COL_PINS { C7, F6, F5, F4, F1, E6, D0, D2, D1, D3, D5, D4, D6, D7 }
+#define MATRIX_COL_PINS { C7, F6, F5, F4, F1, E6, D0, D2, D1, D3, D5, D4, D6, D7, B6 }
#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
-#define DEBOUNCE 5
\ No newline at end of file
+#define DEBOUNCE 5
diff --git a/keyboards/mokey/mokey64/info.json b/keyboards/mokey/mokey64/info.json
index 3c70b559c9d6..62b9c9049309 100644
--- a/keyboards/mokey/mokey64/info.json
+++ b/keyboards/mokey/mokey64/info.json
@@ -18,62 +18,62 @@
{"label":"k0a", "x":10, "y":0},
{"label":"k0b", "x":11, "y":0},
{"label":"k0c", "x":12, "y":0},
- {"label":"k0d", "x":13, "y":0, "w":2},
-
+ {"label":"k0e", "x":13, "y":0, "w":2},
+
{"label":"k10", "x":0, "y":1, "w":1.5},
- {"label":"k11", "x":1.5, "y":1},
- {"label":"k12", "x":2.5, "y":1},
- {"label":"k13", "x":3.5, "y":1},
- {"label":"k14", "x":4.5, "y":1},
- {"label":"k15", "x":5.5, "y":1},
- {"label":"k16", "x":6.5, "y":1},
- {"label":"k17", "x":7.5, "y":1},
- {"label":"k18", "x":8.5, "y":1},
- {"label":"k19", "x":9.5, "y":1},
- {"label":"k1a", "x":10.5, "y":1},
- {"label":"k1b", "x":11.5, "y":1},
- {"label":"k1c", "x":12.5, "y":1},
- {"label":"k1d", "x":13.5, "y":1, "w":1.5},
-
+ {"label":"k12", "x":1.5, "y":1},
+ {"label":"k13", "x":2.5, "y":1},
+ {"label":"k14", "x":3.5, "y":1},
+ {"label":"k15", "x":4.5, "y":1},
+ {"label":"k16", "x":5.5, "y":1},
+ {"label":"k17", "x":6.5, "y":1},
+ {"label":"k18", "x":7.5, "y":1},
+ {"label":"k19", "x":8.5, "y":1},
+ {"label":"k1a", "x":9.5, "y":1},
+ {"label":"k1b", "x":10.5, "y":1},
+ {"label":"k1c", "x":11.5, "y":1},
+ {"label":"k1d", "x":12.5, "y":1},
+ {"label":"k1e", "x":13.5, "y":1, "w":1.5},
+
{"label":"k20", "x":0, "y":2, "w":1.75},
- {"label":"k21", "x":1.75, "y":2},
- {"label":"k22", "x":2.75, "y":2},
- {"label":"k23", "x":3.75, "y":2},
- {"label":"k24", "x":4.75, "y":2},
- {"label":"k25", "x":5.75, "y":2},
- {"label":"k26", "x":6.75, "y":2},
- {"label":"k27", "x":7.75, "y":2},
- {"label":"k28", "x":8.75, "y":2},
- {"label":"k29", "x":9.75, "y":2},
- {"label":"k2a", "x":10.75, "y":2},
- {"label":"k2b", "x":11.75, "y":2},
- {"label":"k2c", "x":12.75, "y":2, "w":2.25},
-
+ {"label":"k22", "x":1.75, "y":2},
+ {"label":"k23", "x":2.75, "y":2},
+ {"label":"k24", "x":3.75, "y":2},
+ {"label":"k25", "x":4.75, "y":2},
+ {"label":"k26", "x":5.75, "y":2},
+ {"label":"k27", "x":6.75, "y":2},
+ {"label":"k28", "x":7.75, "y":2},
+ {"label":"k29", "x":8.75, "y":2},
+ {"label":"k2a", "x":9.75, "y":2},
+ {"label":"k2b", "x":10.75, "y":2},
+ {"label":"k2c", "x":11.75, "y":2},
+ {"label":"k2d", "x":12.75, "y":2, "w":2.25},
+
{"label":"k30", "x":0, "y":3, "w":2},
- {"label":"k31", "x":2, "y":3},
- {"label":"k32", "x":3, "y":3},
- {"label":"k33", "x":4, "y":3},
- {"label":"k34", "x":5, "y":3},
- {"label":"k35", "x":6, "y":3},
- {"label":"k36", "x":7, "y":3},
- {"label":"k37", "x":8, "y":3},
- {"label":"k38", "x":9, "y":3},
- {"label":"k39", "x":10, "y":3},
- {"label":"k3a", "x":11, "y":3},
- {"label":"k3b", "x":12, "y":3},
- {"label":"k3c", "x":13, "y":3},
- {"label":"k3d", "x":14, "y":3},
+ {"label":"k32", "x":2, "y":3},
+ {"label":"k33", "x":3, "y":3},
+ {"label":"k34", "x":4, "y":3},
+ {"label":"k35", "x":5, "y":3},
+ {"label":"k36", "x":6, "y":3},
+ {"label":"k37", "x":7, "y":3},
+ {"label":"k38", "x":8, "y":3},
+ {"label":"k39", "x":9, "y":3},
+ {"label":"k3a", "x":10, "y":3},
+ {"label":"k3b", "x":11, "y":3},
+ {"label":"k3c", "x":12, "y":3},
+ {"label":"k3d", "x":13, "y":3},
+ {"label":"k3e", "x":14, "y":3},
{"label":"k40", "x":0, "y":4, "w":1.25},
{"label":"k41", "x":1.25, "y":4, "w":1.25},
- {"label":"k42", "x":2.5, "y":4, "w":1.25},
- {"label":"k43", "x":3.75, "y":4, "w":6.25},
- {"label":"k44", "x":10, "y":4},
- {"label":"k45", "x":11, "y":4},
- {"label":"k46", "x":12, "y":4},
- {"label":"k47", "x":13, "y":4},
- {"label":"k48", "x":14, "y":4}
+ {"label":"k43", "x":2.5, "y":4, "w":1.25},
+ {"label":"k46", "x":3.75, "y":4, "w":6.25},
+ {"label":"k4a", "x":10, "y":4},
+ {"label":"k4b", "x":11, "y":4},
+ {"label":"k4c", "x":12, "y":4},
+ {"label":"k4d", "x":13, "y":4},
+ {"label":"k4e", "x":14, "y":4}
]
}
}
-}
\ No newline at end of file
+}
diff --git a/keyboards/mokey/mokey64/mokey64.h b/keyboards/mokey/mokey64/mokey64.h
index 966d19a48e35..8dddc4faefef 100644
--- a/keyboards/mokey/mokey64/mokey64.h
+++ b/keyboards/mokey/mokey64/mokey64.h
@@ -20,29 +20,29 @@
#define XXX KC_NO
-/*
+/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
- * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0e │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
- * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │
+ * │10 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
- * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │
+ * │20 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2d │
* ├──────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬───┬───┤
- * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │
+ * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │
* ├────┬──┴─┬─┴──┬┴───┴───┴───┴───┴───┴───┼───┼───┼───┼───┼───┤
- * │40 │41 │42 │ 43 │44 │45 │46 │47 │48 │
+ * │40 │41 │43 │ 46 │4a │4b │4c │4d │4e │
* └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘
*/
#define LAYOUT( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
- k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, \
- k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \
- k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \
- k40, k41, k42, k43, k44, k45, k46, k47, k48 \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, \
+ k10, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, \
+ k20, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
+ k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \
+ k40, k41, k43, k46, k4a, k4b, k4c, k4d, k4e \
) { \
- { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \
- { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d }, \
- { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, XXX }, \
- { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d }, \
- { k40, k41, k42, k43, k44, k45, k46, k47, k48, XXX, XXX, XXX, XXX, XXX } \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, XXX, k0e }, \
+ { k10, XXX, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e }, \
+ { k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX }, \
+ { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \
+ { k40, k41, k43, XXX, XXX, XXX, k46, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e } \
}
diff --git a/keyboards/mokey/mokey64/readme.md b/keyboards/mokey/mokey64/readme.md
index 5feb849bc447..e56d86f0db63 100644
--- a/keyboards/mokey/mokey64/readme.md
+++ b/keyboards/mokey/mokey64/readme.md
@@ -6,6 +6,7 @@ Support Atmega32u4 keyboard.
* Keyboard Maintainer: [rhmokey](https://github.com/rhmokey)
* Hardware Supported: Atmega32u4
+
## Bootloader
* **Physical reset button**: Short press the button on the back of the PCB to enter the Bootloader and flash the firmware
@@ -18,4 +19,4 @@ Flashing example for this keyboard:
make mokey/mokey64: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).
\ No newline at end of file
+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/mokey/mokey64/rules.mk b/keyboards/mokey/mokey64/rules.mk
index 6da271964f70..a18189509580 100644
--- a/keyboards/mokey/mokey64/rules.mk
+++ b/keyboards/mokey/mokey64/rules.mk
@@ -17,5 +17,5 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/moonlander/config.h b/keyboards/moonlander/config.h
index 522cb0ab2750..f2e5088a34a2 100644
--- a/keyboards/moonlander/config.h
+++ b/keyboards/moonlander/config.h
@@ -99,8 +99,9 @@
#define DYNAMIC_KEYMAP_EEPROM_ADDR (EECONFIG_SIZE + FIRMWARE_VERSION_SIZE)
#ifdef EEPROM_I2C
# define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 16383
-# define DYNAMIC_KEYMAP_LAYER_COUNT 32
+# define DYNAMIC_KEYMAP_LAYER_COUNT 8
#endif
+#define VIA_QMK_RGBLIGHT_ENABLE
#define AUDIO_PIN A5
#define AUDIO_PIN_ALT A4
diff --git a/keyboards/moonlander/keymaps/drashna/keymap.c b/keyboards/moonlander/keymaps/drashna/keymap.c
index f6af7e53af25..257959c07f38 100644
--- a/keyboards/moonlander/keymaps/drashna/keymap.c
+++ b/keyboards/moonlander/keymaps/drashna/keymap.c
@@ -105,7 +105,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_MAKE, _________________FUNC_LEFT_________________, UC_MOD, KC_NUKE, _________________ADJUST_R1_________________, KC_RST,
VRSN, _________________ADJUST_L1_________________, _______, _______, _________________ADJUST_R1_________________, EEP_RST,
_______, _________________ADJUST_L2_________________, _______, _______, _________________ADJUST_R2_________________, RGB_IDL,
- _______, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, TG_MODS,
+ KEYLOCK, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, TG_MODS,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PAUS,
_______, _______, _______, _______, _______, _______
),
diff --git a/keyboards/moonlander/keymaps/manna-harbour_miryoku/config.h b/keyboards/moonlander/keymaps/manna-harbour_miryoku/config.h
index ad6eee368239..6ea1541da295 100644
--- a/keyboards/moonlander/keymaps/manna-harbour_miryoku/config.h
+++ b/keyboards/moonlander/keymaps/manna-harbour_miryoku/config.h
@@ -1,6 +1,6 @@
// Copyright 2019 Manna Harbour
// https://github.com/manna-harbour/miryoku
-// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*-
+// generated -*- buffer-read-only: t -*-
// 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 .
diff --git a/keyboards/moonlander/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/moonlander/keymaps/manna-harbour_miryoku/keymap.c
index 1520387e8887..7c5717a0fee0 100644
--- a/keyboards/moonlander/keymaps/manna-harbour_miryoku/keymap.c
+++ b/keyboards/moonlander/keymaps/manna-harbour_miryoku/keymap.c
@@ -1,5 +1,5 @@
// Copyright 2019 Manna Harbour
// https://github.com/manna-harbour/miryoku
-// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*-
+// generated -*- buffer-read-only: t -*-
// 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 .
diff --git a/keyboards/moonlander/keymaps/via/keymap.c b/keyboards/moonlander/keymaps/via/keymap.c
new file mode 100644
index 000000000000..13a299b434cd
--- /dev/null
+++ b/keyboards/moonlander/keymaps/via/keymap.c
@@ -0,0 +1,126 @@
+/* Copyright 2020 ZSA Technology Labs, Inc <@zsa>
+ * Copyright 2020 Jack Humbert
+ * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna)
+ *
+ * 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
+#include "version.h"
+
+enum layers {
+ BASE, // default layer
+ SYMB, // symbols
+ MDIA, // media keys
+};
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [BASE] = LAYOUT_moonlander(
+ KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_HYPR, KC_MEH, KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN), LGUI_T(KC_QUOT),
+ KC_LSFT, LCTL_T(KC_Z),KC_X,KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RCTL_T(KC_SLSH), KC_RSFT,
+ LT(SYMB,KC_GRV),WEBUSB_PAIR,A(KC_LSFT),KC_LEFT, KC_RGHT, LALT_T(KC_APP), RCTL_T(KC_ESC), KC_UP, KC_DOWN, KC_LBRC, KC_RBRC, MO(SYMB),
+ KC_SPC, KC_BSPC, KC_LGUI, KC_LALT, KC_TAB, KC_ENT
+ ),
+
+ [SYMB] = LAYOUT_moonlander(
+ USER00, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ _______, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, _______, _______, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
+ _______, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV, _______, _______, KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, _______,
+ _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, _______,
+ _______, _______, _______, _______, _______, RGB_VAI, RGB_TOG, _______, KC_DOT, KC_0, KC_EQL, _______,
+ RGB_HUD, RGB_VAD, RGB_HUI, _______, _______, _______
+ ),
+
+ [MDIA] = LAYOUT_moonlander(
+ USER01, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, KC_MS_U, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST,
+ _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, _______, _______,
+ _______, _______, _______, KC_BTN1, KC_BTN2, _______, _______, KC_VOLU, KC_VOLD, KC_MUTE, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_moonlander(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+ [4] = LAYOUT_moonlander(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+ [5] = LAYOUT_moonlander(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+ [6] = LAYOUT_moonlander(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+ [7] = LAYOUT_moonlander(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+};
+// clang-format on
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case USER00:
+ if (record->event.pressed) {
+ SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+ }
+ return false;
+ case USER01:
+ if (record->event.pressed) {
+ keyboard_config.led_level ^= 1;
+ eeconfig_update_kb(keyboard_config.raw);
+ if (keyboard_config.led_level) {
+ layer_state_set_kb(layer_state);
+ } else {
+ ML_LED_1(false);
+ ML_LED_2(false);
+ ML_LED_3(false);
+ ML_LED_4(false);
+ ML_LED_5(false);
+ ML_LED_6(false);
+ }
+ }
+ break;
+ }
+ return true;
+}
diff --git a/keyboards/moonlander/keymaps/via/readme.md b/keyboards/moonlander/keymaps/via/readme.md
new file mode 100644
index 000000000000..8bede7bee361
--- /dev/null
+++ b/keyboards/moonlander/keymaps/via/readme.md
@@ -0,0 +1,7 @@
+# VIA Keymap for the Moonlander
+
+This is based on the default layout for the Moonlander keyboard from ZSA Techonology Labs.
+
+ZSA does not provide any support for VIA (the app or firmware feature). Any and all issues should be directed to [VIA](https://github.com/the-via).
+
+Initial flash and reflash may make the keyboard look like it has locked up. This is because it can take a while to load the EEPROM data (the keymap), and is halted by that process until it's finished.
diff --git a/keyboards/moonlander/keymaps/via/rules.mk b/keyboards/moonlander/keymaps/via/rules.mk
new file mode 100644
index 000000000000..1e5b99807cb7
--- /dev/null
+++ b/keyboards/moonlander/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/mwstudio/mw65_rgb/config.h b/keyboards/mwstudio/mw65_rgb/config.h
new file mode 100644
index 000000000000..8a320664a9a7
--- /dev/null
+++ b/keyboards/mwstudio/mw65_rgb/config.h
@@ -0,0 +1,61 @@
+/* Copyright 2021 TW59420
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x7BA1
+#define PRODUCT_ID 0x6502
+#define DEVICE_VER 0x0001
+#define MANUFACTURER MWStudio
+#define PRODUCT MW65
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 15
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { D0, D1, D2, D3, B7, B0 }
+#define MATRIX_COL_PINS { C6, B6, B5, B4, D7, D6, D4, C7, F7, F6, F5, F4, F1, F0, E6 }
+
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 0
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+#define RGB_DI_PIN B3
+#ifdef RGB_DI_PIN
+ #define RGBLIGHT_SLEEP
+
+ #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
+ #define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
+ #define DRIVER_LED_TOTAL 83
+ #define RGBLED_NUM 83
+ #define RGB_MATRIX_KEYPRESSES
+
+ #define RGBLIGHT_HUE_STEP 8
+ #define RGBLIGHT_SAT_STEP 8
+ #define RGBLIGHT_VAL_STEP 8
+#endif
+
+#define ENCODERS_PAD_A { B1 }
+#define ENCODERS_PAD_B { B2 }
diff --git a/keyboards/mwstudio/mw65_rgb/info.json b/keyboards/mwstudio/mw65_rgb/info.json
new file mode 100644
index 000000000000..affcdadbc0f6
--- /dev/null
+++ b/keyboards/mwstudio/mw65_rgb/info.json
@@ -0,0 +1,84 @@
+{
+ "keyboard_name": "MW65_RGB",
+ "url": "",
+ "maintainer": "qmk",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"ESC", "x":0, "y":0},
+ {"label":"1", "x":1, "y":0},
+ {"label":"2", "x":2, "y":0},
+ {"label":"3", "x":3, "y":0},
+ {"label":"4", "x":4, "y":0},
+ {"label":"5", "x":5, "y":0},
+ {"label":"6", "x":6, "y":0},
+ {"label":"7", "x":7, "y":0},
+ {"label":"8", "x":8, "y":0},
+ {"label":"9", "x":9, "y":0},
+ {"label":"0", "x":10, "y":0},
+ {"label":"-", "x":11, "y":0},
+ {"label":"=", "x":12, "y":0},
+ {"label":"Backspace", "x":13, "y":0, "w":2},
+ {"label":"Delete", "x":15, "y":0},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[", "x":11.5, "y":1},
+ {"label":"]", "x":12.5, "y":1},
+ {"label":"\\", "x":13.5, "y":1, "w":1.5},
+ {"label":"PgUp", "x":15, "y":1},
+
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";", "x":10.75, "y":2},
+ {"label":"'", "x":11.75, "y":2},
+ {"label":"Enter", "x":12.75, "y":2, "w":2.25},
+ {"label":"PgDn", "x":15, "y":2},
+
+ {"label":"Shift", "x":0, "y":3, "w":2.25},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",", "x":9.25, "y":3},
+ {"label":".", "x":10.25, "y":3},
+ {"label":"/", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":1.75},
+ {"label":"\u2191", "x":14, "y":3},
+ {"label":"End", "x":15, "y":3},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"Win", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.25},
+ {"label":"Vol-", "x":3.75, "y":4 },
+ {"label":"Vol+", "x":4.75, "y":4 },
+ {"x":5.75, "y":4, "w":4.25},
+ {"label":"Alt", "x":10, "y":4, "w":1.25},
+ {"label":"Fn", "x":11.25, "y":4, "w":1.25},
+ {"label":"\u2190", "x":13, "y":4},
+ {"label":"\u2193", "x":14, "y":4},
+ {"label":"\u2192", "x":15, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/mwstudio/mw65_rgb/keymaps/default/keymap.c b/keyboards/mwstudio/mw65_rgb/keymaps/default/keymap.c
new file mode 100644
index 000000000000..9466b0f28367
--- /dev/null
+++ b/keyboards/mwstudio/mw65_rgb/keymaps/default/keymap.c
@@ -0,0 +1,51 @@
+/* Copyright 2021 TW59420
+ *
+ * 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(
+ 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_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ 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, RGB_TOG,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_VOLU, KC_VOLD, KC_SPACE, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+ [1] = LAYOUT(
+ 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, _______, RGB_HUI,
+ RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAI,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, RGB_SAD,
+ _______, _______, _______, _______, _______, _______, RGB_MOD, _______, RGB_SPD, RGB_VAD, RGB_SPI
+ ),
+
+ [2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/mwstudio/mw65_rgb/keymaps/via/keymap.c b/keyboards/mwstudio/mw65_rgb/keymaps/via/keymap.c
new file mode 100644
index 000000000000..6506433998e3
--- /dev/null
+++ b/keyboards/mwstudio/mw65_rgb/keymaps/via/keymap.c
@@ -0,0 +1,128 @@
+/* Copyright 2021 TW59420
+ *
+ * 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
+
+typedef union {
+ uint32_t raw;
+ struct {
+ bool top_rgb_change :1;
+ bool bottom_rgb_change :1;
+ };
+} user_config_t;
+
+user_config_t user_config;
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT(
+ 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_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ 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, RGB_TOG,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_VOLU, KC_VOLD, KC_SPACE, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+ [1] = LAYOUT(
+ 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, _______, RGB_HUI,
+ RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, USER00, RGB_SAI,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, USER01, RGB_VAI, RGB_SAD,
+ _______, _______, _______, _______, _______, _______, RGB_MOD, _______, RGB_SPD, RGB_VAD, RGB_SPI
+ ),
+
+ [2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
+
+void keyboard_post_init_user(void) {
+ // Read the user config from EEPROM
+ user_config.raw = eeconfig_read_user();
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case USER00:
+ if (record->event.pressed) {
+ // Do something when pressed
+ user_config.top_rgb_change ^= 1; // Toggles the status
+ eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM
+ } else {
+ // Do something else when release
+ }
+ return false; // Skip all further processing of this key
+ case USER01:
+ if (record->event.pressed) {
+ // Do something when pressed
+ user_config.bottom_rgb_change ^= 1; // Toggles the status
+ eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM
+ } else {
+ // Do something else when release
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(dynamic_keymap_get_keycode(biton32(layer_state), 4, 3));
+ } else {
+ tap_code(dynamic_keymap_get_keycode(biton32(layer_state), 4, 4));
+ }
+ }
+ return true;
+}
+#endif
+
+void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
+
+ if (user_config.top_rgb_change)
+ {
+ for (size_t i = 16; i < 83; i++)
+ {
+ RGB_MATRIX_INDICATOR_SET_COLOR(i, 0, 0, 0);
+ }
+ }
+
+ if (host_keyboard_led_state().caps_lock) {
+ RGB_MATRIX_INDICATOR_SET_COLOR(52, 0, 255, 255); // assuming caps lock is at led #5
+ }
+
+ if (user_config.bottom_rgb_change)
+ {
+ for (size_t i = 0; i < 16; i++)
+ {
+ RGB_MATRIX_INDICATOR_SET_COLOR(i, 0, 0, 0);
+ }
+ }
+}
diff --git a/keyboards/mwstudio/mw65_rgb/keymaps/via/rules.mk b/keyboards/mwstudio/mw65_rgb/keymaps/via/rules.mk
new file mode 100644
index 000000000000..36b7ba9cbc98
--- /dev/null
+++ b/keyboards/mwstudio/mw65_rgb/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/mwstudio/mw65_rgb/mw65_rgb.c b/keyboards/mwstudio/mw65_rgb/mw65_rgb.c
new file mode 100644
index 000000000000..e49944f1ce2e
--- /dev/null
+++ b/keyboards/mwstudio/mw65_rgb/mw65_rgb.c
@@ -0,0 +1,45 @@
+/* Copyright 2021 TW59420
+ *
+ * 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 "mw65_rgb.h"
+
+#ifdef RGB_MATRIX_ENABLE
+led_config_t g_led_config = { {
+ { 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68 },
+ { 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67 },
+ { 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, NO_LED, 40, 39 },
+ { 25, NO_LED, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38 },
+ { 24, 23, 22, NO_LED, NO_LED, NO_LED, 21, NO_LED, NO_LED, 15, 20, 19, 18, 17, 16 },
+
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }
+}, {
+ { 175, 45 },{ 130, 45 },{ 85, 45 }, { 50, 45 }, { 15, 45 }, { 15, 35 }, { 15, 25 }, { 15, 10 },
+ { 50, 10 }, { 85, 10 }, { 130, 10 }, { 175, 10 }, { 210, 10 }, { 210, 25 }, { 210, 35 }, { 210, 45 },
+ { 217, 54 }, { 203, 54 }, { 189, 54 }, { 166, 54 }, { 150, 54 }, { 95, 54 }, { 40, 54 }, { 24, 54 }, { 8, 54 },
+ { 17, 42 }, { 39, 42 }, { 53, 42 }, { 67, 42 }, { 81, 42 }, { 95, 42 }, { 109, 42 }, { 123, 42 }, { 137, 42 }, { 151, 42 }, { 165, 42 }, { 184, 42 }, { 203, 42 }, { 217, 42 },
+ { 217, 30 }, { 195, 30 }, { 172, 30 }, { 158, 30 }, { 144, 30 }, { 130, 30 }, { 116, 30 }, { 102, 30 }, { 88, 30 }, { 74, 30 }, { 60, 30 }, { 46, 30 }, { 32, 30 },{ 13, 30 },
+ { 9, 18 }, { 25, 18 }, { 39, 18 }, { 53, 18 }, { 67, 18 }, { 81, 18 }, { 95, 18 }, { 109, 18 }, { 123, 18 }, { 137, 18 }, { 151, 18 }, { 165, 18 }, { 181, 18 }, { 199, 18 }, { 217, 18 },
+ { 217, 6 }, { 196, 6 }, { 175, 6 }, { 161, 6 }, { 147, 6 }, { 133, 6 }, { 119, 6 }, { 105, 6 }, { 91, 6 }, { 77, 6 }, { 63, 6 }, { 49, 6 }, { 35, 6 }, { 21, 6 }, { 7, 6 },
+}, {
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+} };
+#endif
+
diff --git a/keyboards/mwstudio/mw65_rgb/mw65_rgb.h b/keyboards/mwstudio/mw65_rgb/mw65_rgb.h
new file mode 100644
index 000000000000..b491e324e28a
--- /dev/null
+++ b/keyboards/mwstudio/mw65_rgb/mw65_rgb.h
@@ -0,0 +1,33 @@
+/* Copyright 2021 TW59420
+ *
+ * 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 .
+ */
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K213, K214, \
+ K300, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, \
+ K400, K401, K402, K403, K404, K406, K410, K411, K412, K413, K414 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, KC_NO, K213, K214 }, \
+ { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314 }, \
+ { K400, K401, K402, K403, K404, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, K411, K412, K413, K414 }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
+}
diff --git a/keyboards/mwstudio/mw65_rgb/readme.md b/keyboards/mwstudio/mw65_rgb/readme.md
new file mode 100644
index 000000000000..e15b5f9de9b2
--- /dev/null
+++ b/keyboards/mwstudio/mw65_rgb/readme.md
@@ -0,0 +1,22 @@
+# MW65_RGB
+
+![MW65_RGB](https://i.imgur.com/MPb8Lba.jpg?2)
+
+Support Atmega32u4 keyboard.
+
+* Keyboard Maintainer: [TW59420](https://github.com/TW59420)
+* Hardware Supported: Atmega32u4
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mwstudio/mw65_rgb:default
+
+Flashing example for this keyboard:
+
+ make mwstudio/mw65_rgb: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
+* **Physical reset button**: Short press the button on the back of the PCB to enter the Bootloader and flash the firmware
+* **Keycode in layout**: Press the key mapped to RESET if it is available
diff --git a/keyboards/mwstudio/mw65_rgb/rules.mk b/keyboards/mwstudio/mw65_rgb/rules.mk
new file mode 100644
index 000000000000..58d8da3e898b
--- /dev/null
+++ b/keyboards/mwstudio/mw65_rgb/rules.mk
@@ -0,0 +1,24 @@
+# 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
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
+ENCODER_ENABLE = yes
diff --git a/keyboards/mwstudio/mw75/config.h b/keyboards/mwstudio/mw75/config.h
new file mode 100644
index 000000000000..58fcdf2c7c00
--- /dev/null
+++ b/keyboards/mwstudio/mw75/config.h
@@ -0,0 +1,75 @@
+/* Copyright 2021 TW59420
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x7BA1
+#define PRODUCT_ID 0x7501
+#define DEVICE_VER 0x0001
+#define MANUFACTURER MWStudio
+#define PRODUCT MW75
+
+/* key matrix size */
+#define MATRIX_ROWS 7
+#define MATRIX_COLS 15
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { B7, D0, D1, D2, D3, D5, B0}
+#define MATRIX_COL_PINS { D4, D6, D7, B4, B5, B6, C6, C7, F7, F6, F5, F4, F1, F0, E6 }
+
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 1
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+#define RGB_DI_PIN B3
+#define RGBLIGHT_SLEEP
+
+#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
+#define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
+#define DRIVER_LED_TOTAL 97
+#define RGBLED_NUM 97
+#define RGB_MATRIX_KEYPRESSES
+
+// #define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+// #define DISABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+// #define DISABLE_RGB_MATRIX_TYPING_HEATMAP
+// #define DISABLE_RGB_MATRIX_DIGITAL_RAIN
+// #define DISABLE_RGB_MATRIX_BAND_SAT
+// #define DISABLE_RGB_MATRIX_BAND_VAL
+// #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+// #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+// #define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+// #define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+
+#define ENCODERS_PAD_A { B1 }
+#define ENCODERS_PAD_B { B2 }
diff --git a/keyboards/mwstudio/mw75/info.json b/keyboards/mwstudio/mw75/info.json
new file mode 100644
index 000000000000..0c53689865bc
--- /dev/null
+++ b/keyboards/mwstudio/mw75/info.json
@@ -0,0 +1,99 @@
+{
+ "keyboard_name": "MW75",
+ "url": "",
+ "maintainer": "qmk",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":1.5, "y":0},
+ {"label":"F2", "x":2.5, "y":0},
+ {"label":"F3", "x":3.5, "y":0},
+ {"label":"F4", "x":4.5, "y":0},
+ {"label":"F5", "x":6, "y":0},
+ {"label":"F6", "x":7, "y":0},
+ {"label":"F7", "x":8, "y":0},
+ {"label":"F8", "x":9, "y":0},
+ {"label":"F9", "x":10.5, "y":0},
+ {"label":"F10", "x":11.5, "y":0},
+ {"label":"F11", "x":12.5, "y":0},
+ {"label":"F12", "x":13.5, "y":0},
+ {"label":"DEL", "x":15, "y":0},
+
+ {"label":"`", "x":0, "y":1.5},
+ {"label":"1", "x":1, "y":1.5},
+ {"label":"2", "x":2, "y":1.5},
+ {"label":"3", "x":3, "y":1.5},
+ {"label":"4", "x":4, "y":1.5},
+ {"label":"5", "x":5, "y":1.5},
+ {"label":"6", "x":6, "y":1.5},
+ {"label":"7", "x":7, "y":1.5},
+ {"label":"8", "x":8, "y":1.5},
+ {"label":"9", "x":9, "y":1.5},
+ {"label":"0", "x":10, "y":1.5},
+ {"label":"-", "x":11, "y":1.5},
+ {"label":"=", "x":12, "y":1.5},
+ {"label":"Backspace", "x":13, "y":1.5, "w":2},
+ {"label":"Delete", "x":15, "y":1.5},
+
+ {"label":"Tab", "x":0, "y":2.5, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.5},
+ {"label":"W", "x":2.5, "y":2.5},
+ {"label":"E", "x":3.5, "y":2.5},
+ {"label":"R", "x":4.5, "y":2.5},
+ {"label":"T", "x":5.5, "y":2.5},
+ {"label":"Y", "x":6.5, "y":2.5},
+ {"label":"U", "x":7.5, "y":2.5},
+ {"label":"I", "x":8.5, "y":2.5},
+ {"label":"O", "x":9.5, "y":2.5},
+ {"label":"P", "x":10.5, "y":2.5},
+ {"label":"[", "x":11.5, "y":2.5},
+ {"label":"]", "x":12.5, "y":2.5},
+ {"label":"\\", "x":13.5, "y":2.5, "w":1.5},
+ {"label":"PgUp", "x":15, "y":2.5},
+
+ {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.5},
+ {"label":"S", "x":2.75, "y":3.5},
+ {"label":"D", "x":3.75, "y":3.5},
+ {"label":"F", "x":4.75, "y":3.5},
+ {"label":"G", "x":5.75, "y":3.5},
+ {"label":"H", "x":6.75, "y":3.5},
+ {"label":"J", "x":7.75, "y":3.5},
+ {"label":"K", "x":8.75, "y":3.5},
+ {"label":"L", "x":9.75, "y":3.5},
+ {"label":";", "x":10.75, "y":3.5},
+ {"label":"'", "x":11.75, "y":3.5},
+ {"label":"Enter", "x":12.75, "y":3.5, "w":2.25},
+ {"label":"PgDn", "x":15, "y":3.5},
+
+ {"label":"Shift", "x":0, "y":4.5, "w":2.25},
+ {"label":"Z", "x":2.25, "y":4.5},
+ {"label":"X", "x":3.25, "y":4.5},
+ {"label":"C", "x":4.25, "y":4.5},
+ {"label":"V", "x":5.25, "y":4.5},
+ {"label":"B", "x":6.25, "y":4.5},
+ {"label":"N", "x":7.25, "y":4.5},
+ {"label":"M", "x":8.25, "y":4.5},
+ {"label":",", "x":9.25, "y":4.5},
+ {"label":".", "x":10.25, "y":4.5},
+ {"label":"/", "x":11.25, "y":4.5},
+ {"label":"Shift", "x":12.25, "y":4.5, "w":1.75},
+ {"label":"\u2191", "x":14, "y":4.5},
+ {"label":"End", "x":15, "y":4.5},
+
+ {"label":"Ctrl", "x":0, "y":5.5, "w":1.25},
+ {"label":"Win", "x":1.25, "y":5.5, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":5.5, "w":1.25},
+ {"label":"Vol-", "x":3.75, "y":5.5 },
+ {"label":"Vol+", "x":4.75, "y":5.5 },
+ {"x":5.75, "y":5.5, "w":4.25},
+ {"label":"Alt", "x":10, "y":5.5, "w":1.25},
+ {"label":"Fn", "x":11.25, "y":5.5, "w":1.25},
+ {"label":"\u2190", "x":13, "y":5.5},
+ {"label":"\u2193", "x":14, "y":5.5},
+ {"label":"\u2192", "x":15, "y":5.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/mwstudio/mw75/keymaps/default/keymap.c b/keyboards/mwstudio/mw75/keymaps/default/keymap.c
new file mode 100644
index 000000000000..44eb8d0c04ae
--- /dev/null
+++ b/keyboards/mwstudio/mw75/keymaps/default/keymap.c
@@ -0,0 +1,57 @@
+/* Copyright 2021 TW59420
+ *
+ * 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(
+ 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, RGB_TOG,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_VOLU, KC_VOLD, KC_SPACE, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+ [1] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI,
+ RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAI,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 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
new file mode 100644
index 000000000000..44eb8d0c04ae
--- /dev/null
+++ b/keyboards/mwstudio/mw75/keymaps/via/keymap.c
@@ -0,0 +1,57 @@
+/* Copyright 2021 TW59420
+ *
+ * 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(
+ 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, RGB_TOG,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_VOLU, KC_VOLD, KC_SPACE, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+ [1] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI,
+ RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAI,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, RGB_SAD,
+ _______, _______, _______, _______, _______, _______, RGB_MOD, _______, RGB_SPD, RGB_VAD, RGB_SPI
+ ),
+
+ [2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/mwstudio/mw75/keymaps/via/rules.mk b/keyboards/mwstudio/mw75/keymaps/via/rules.mk
new file mode 100644
index 000000000000..36b7ba9cbc98
--- /dev/null
+++ b/keyboards/mwstudio/mw75/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/mwstudio/mw75/mw75.c b/keyboards/mwstudio/mw75/mw75.c
new file mode 100644
index 000000000000..7e6641d5dbdc
--- /dev/null
+++ b/keyboards/mwstudio/mw75/mw75.c
@@ -0,0 +1,47 @@
+/* Copyright 2021 TW59420
+ *
+ * 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 "mw75.h"
+
+#ifdef RGB_MATRIX_ENABLE
+led_config_t g_led_config = { {
+ { 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67 },
+ { 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52 },
+ { 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37 },
+ { 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, NO_LED, 24, 23 },
+ { 22, NO_LED, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9 },
+ { 8, 7, 6, NO_LED, NO_LED, NO_LED, 5, NO_LED, NO_LED, NO_LED, 4, 3, 2, 1, 0 },
+ { 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96 }
+}, {
+ { 217, 60 }, { 203, 60 }, { 189, 60 }, { 166, 60 }, { 150, 60 }, { 95, 60 }, { 40, 60 }, { 24, 60 }, { 8, 60 },
+ { 217, 50 }, { 203, 50 }, { 184, 50 }, { 165, 50 }, { 151, 50 }, { 137, 50 }, { 123, 50 }, { 109, 50 }, { 95, 50 }, { 81, 50 }, { 67, 50 }, { 53, 50 }, { 39, 50 }, { 17, 50 },
+ { 217, 40 }, { 195, 40 }, { 172, 40 }, { 158, 40 }, { 144, 40 }, { 130, 40 }, { 116, 40 }, { 102, 40 }, { 88, 40 }, { 74, 40 }, { 60, 40 }, { 46, 40 }, { 32, 40 }, { 13, 40 },
+ { 217, 30 }, { 199, 30 }, { 181, 30 }, { 165, 30 }, { 151, 30 }, { 137, 30 }, { 123, 30 }, { 109, 30 }, { 95, 30 }, { 81, 30 }, { 67, 30 }, { 53, 30 }, { 39, 30 }, { 25, 30 }, { 9, 30 },
+ { 217, 20 }, { 196, 20 }, { 175, 20 }, { 161, 20 }, { 147, 20 }, { 133, 20 }, { 119, 20 }, { 105, 20 }, { 91, 20 }, { 77, 20 }, { 63, 20 }, { 49, 20 }, { 35, 20 }, { 21, 20 }, { 7, 20 },
+ { 217, 5 }, { 196, 5 }, { 182, 5 }, { 168, 5 }, { 154, 5 }, { 133, 5 }, { 119, 5 }, { 105, 5 }, { 91, 5 }, { 70, 5 }, { 56, 5 }, { 42, 5 }, { 28, 5 }, { 7, 5 },
+
+ { 14, 14 }, { 42, 14 }, { 98, 14 }, { 154, 14 }, { 182, 14 }, { 210, 14 }, { 210, 25 }, { 210, 40 },
+ { 210, 55 },{ 182, 55 },{ 126, 55 },{ 98, 55 }, { 42, 55 }, { 14, 55 }, { 14, 40 }, { 14, 25 }
+}, {
+ 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+} };
+#endif
diff --git a/keyboards/mwstudio/mw75/mw75.h b/keyboards/mwstudio/mw75/mw75.h
new file mode 100644
index 000000000000..a322ed4a1b63
--- /dev/null
+++ b/keyboards/mwstudio/mw75/mw75.h
@@ -0,0 +1,36 @@
+/* Copyright 2021 TW59420
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT( \
+ K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014,\
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114,\
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214,\
+ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314,\
+ K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K414,\
+ K500, K501, K502, K503, K504, K506, K510, K511, K512, K513, K514\
+) { \
+ { KC_NO, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 },\
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 },\
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 },\
+ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314 },\
+ { K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K414 },\
+ { K500, K501, K502, K503, K504, KC_NO, K506, KC_NO, KC_NO, KC_NO, K510, K511, K512, K513, K514 },\
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
+}
diff --git a/keyboards/mwstudio/mw75/readme.md b/keyboards/mwstudio/mw75/readme.md
new file mode 100644
index 000000000000..ecabf568aa55
--- /dev/null
+++ b/keyboards/mwstudio/mw75/readme.md
@@ -0,0 +1,22 @@
+# MW75
+
+![MW75](https://i.imgur.com/TdVxYNE.jpg?2)
+
+Support Atmega32u4 keyboard.
+
+* Keyboard Maintainer: [TW59420](https://github.com/TW59420)
+* Hardware Supported: Atmega32u4
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mwstudio/mw75:default
+
+Flashing example for this keyboard:
+
+ make mwstudio/mw75: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
+* **Physical reset button**: Short press the button on the back of the PCB to enter the Bootloader and flash the firmware
+* **Keycode in layout**: Press the key mapped to RESET if it is available
diff --git a/keyboards/mwstudio/mw75/rules.mk b/keyboards/mwstudio/mw75/rules.mk
new file mode 100644
index 000000000000..58d8da3e898b
--- /dev/null
+++ b/keyboards/mwstudio/mw75/rules.mk
@@ -0,0 +1,24 @@
+# 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
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
+ENCODER_ENABLE = yes
diff --git a/keyboards/mwstudio/readme.md b/keyboards/mwstudio/readme.md
new file mode 100644
index 000000000000..1962a97d8215
--- /dev/null
+++ b/keyboards/mwstudio/readme.md
@@ -0,0 +1,7 @@
+# MWStudio pcb
+
+This is a series of PCB
+* MW75 The chip is ATmega32U4
+* MW65_RGB The chip is ATmega32U4
+
+
diff --git a/keyboards/neokeys/g67/element_hs/config.h b/keyboards/neokeys/g67/element_hs/config.h
new file mode 100644
index 000000000000..3efc322d8d15
--- /dev/null
+++ b/keyboards/neokeys/g67/element_hs/config.h
@@ -0,0 +1,66 @@
+/* Copyright 2021 MechMerlin
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4E4B // "NK"
+#define PRODUCT_ID 0x5049
+#define DEVICE_VER 0x0100
+#define MANUFACTURER NEO Keys
+#define PRODUCT Element G67 Hotswap
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { B0, B1, B2, B3, F7 }
+#define MATRIX_COL_PINS { C7, F6, F5, F4, F1, B7, D5, D1, D2, D3, D4, D0, D6, D7, B4 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#if defined(RGBLIGHT_ENABLE)
+ #define RGB_DI_PIN F0
+ #define RGBLED_NUM 77
+ #define RGBLIGHT_HUE_STEP 8
+ #define RGBLIGHT_SAT_STEP 8
+ #define RGBLIGHT_VAL_STEP 8
+ #define RGBLIGHT_LIMIT_VAL 150 /* The maximum brightness level */
+ #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+/*== all animations enable ==*/
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+#endif
diff --git a/keyboards/neokeys/g67/element_hs/element_hs.c b/keyboards/neokeys/g67/element_hs/element_hs.c
new file mode 100644
index 000000000000..c5dd40fe6a9b
--- /dev/null
+++ b/keyboards/neokeys/g67/element_hs/element_hs.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 MechMerlin
+ *
+ * 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 "element_hs.h"
diff --git a/keyboards/neokeys/g67/element_hs/element_hs.h b/keyboards/neokeys/g67/element_hs/element_hs.h
new file mode 100644
index 000000000000..cfb7d67b60c1
--- /dev/null
+++ b/keyboards/neokeys/g67/element_hs/element_hs.h
@@ -0,0 +1,34 @@
+/* Copyright 2021 MechMerlin
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_65_ansi_blocker( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K43, K46, K4A, K4B, K4C, K4D, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, KC_NO, K43, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E }, \
+}
+
diff --git a/keyboards/neokeys/g67/element_hs/info.json b/keyboards/neokeys/g67/element_hs/info.json
new file mode 100644
index 000000000000..3b20d1040246
--- /dev/null
+++ b/keyboards/neokeys/g67/element_hs/info.json
@@ -0,0 +1,82 @@
+{
+ "keyboard_name": "NEO Keys Element Hotswap",
+ "url": "",
+ "maintainer": "qmk",
+ "layouts": {
+ "LAYOUT_65_ansi_blocker": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0, "w":2},
+ {"x":15, "y":0},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+ {"x":15, "y":1},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+ {"x":15, "y":2},
+
+ {"x":0, "y":3, "w":2.25},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":1.75},
+ {"x":14, "y":3},
+ {"x":15, "y":3},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"x":10, "y":4, "w":1.25},
+ {"x":11.25, "y":4, "w":1.25},
+ {"x":13, "y":4},
+ {"x":14, "y":4},
+ {"x":15, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/neokeys/g67/element_hs/keymaps/default/keymap.c b/keyboards/neokeys/g67/element_hs/keymaps/default/keymap.c
new file mode 100644
index 000000000000..e617a80b5236
--- /dev/null
+++ b/keyboards/neokeys/g67/element_hs/keymaps/default/keymap.c
@@ -0,0 +1,34 @@
+/* Copyright 2021 MechMerlin
+ *
+ * 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_65_ansi_blocker(
+ 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_TILD,
+ 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_65_ansi_blocker(
+ _______, 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_HOME,
+ _______, RGB_TOG, KC_UP, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_END,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, _______, KC_PGUP,
+ _______, RESET, BL_DEC, BL_TOGG, BL_INC, KC_VOLD, KC_MUTE, KC_VOLU, _______, KC_DEL, KC_END, KC_PGDN, _______, KC_PGDN,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/neokeys/g67/element_hs/keymaps/via/keymap.c b/keyboards/neokeys/g67/element_hs/keymaps/via/keymap.c
new file mode 100644
index 000000000000..5fb2edac5e0c
--- /dev/null
+++ b/keyboards/neokeys/g67/element_hs/keymaps/via/keymap.c
@@ -0,0 +1,49 @@
+/* Copyright 2021 MechMerlin
+ *
+ * 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_65_ansi_blocker(
+ 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_TILD,
+ 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_65_ansi_blocker(
+ _______, 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_HOME,
+ _______, RGB_TOG, KC_UP, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_END,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, _______, KC_PGUP,
+ _______, RESET, BL_DEC, BL_TOGG, BL_INC, KC_VOLD, KC_MUTE, KC_VOLU, _______, KC_DEL, KC_END, KC_PGDN, _______, KC_PGDN,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT_65_ansi_blocker(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+
+ ),
+ [3] = LAYOUT_65_ansi_blocker(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/neokeys/g67/element_hs/keymaps/via/rules.mk b/keyboards/neokeys/g67/element_hs/keymaps/via/rules.mk
new file mode 100644
index 000000000000..152460f30478
--- /dev/null
+++ b/keyboards/neokeys/g67/element_hs/keymaps/via/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
+KEY_LOCK_ENABLE = no
diff --git a/keyboards/neokeys/g67/element_hs/readme.md b/keyboards/neokeys/g67/element_hs/readme.md
new file mode 100644
index 000000000000..02f63e9f9e48
--- /dev/null
+++ b/keyboards/neokeys/g67/element_hs/readme.md
@@ -0,0 +1,19 @@
+# Element G67 Hotswap
+
+A blockered 65% with per-key RGB, underglow, and USB Type C.
+
+* Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin)
+* Hardware Supported: Element G67 Hotswap (ATmega32U4)
+* Hardware Availability: [NEO Keys](https://www.neokeys.net/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make neokeys/g67/element_hs:default
+
+Flashing example for this keyboard:
+
+ make neokeys/g67/element_hs:default:flash
+
+To reset the board into bootloader mode, hold the key at the top left of the keyboard while connecting the USB cable (also erases persistent settings).
+
+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/neokeys/g67/element_hs/rules.mk b/keyboards/neokeys/g67/element_hs/rules.mk
new file mode 100644
index 000000000000..bf105353e171
--- /dev/null
+++ b/keyboards/neokeys/g67/element_hs/rules.mk
@@ -0,0 +1,25 @@
+# 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
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+KEY_LOCK_ENABLE = yes # Enable KC_LOCK support
+
+LAYOUTS = 65_ansi_blocker
diff --git a/keyboards/nullbitsco/nibble/bitc_led.c b/keyboards/nullbitsco/common/bitc_led.c
similarity index 97%
rename from keyboards/nullbitsco/nibble/bitc_led.c
rename to keyboards/nullbitsco/common/bitc_led.c
index 60ffeea27895..64d7c7160a78 100644
--- a/keyboards/nullbitsco/nibble/bitc_led.c
+++ b/keyboards/nullbitsco/common/bitc_led.c
@@ -1,4 +1,4 @@
-/* Copyright 2020 Jay Greco
+/* Copyright 2021 Jay Greco
*
* 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
diff --git a/keyboards/nullbitsco/nibble/bitc_led.h b/keyboards/nullbitsco/common/bitc_led.h
similarity index 96%
rename from keyboards/nullbitsco/nibble/bitc_led.h
rename to keyboards/nullbitsco/common/bitc_led.h
index b3552a7d1989..14cd4f15b7d0 100644
--- a/keyboards/nullbitsco/nibble/bitc_led.h
+++ b/keyboards/nullbitsco/common/bitc_led.h
@@ -1,4 +1,4 @@
-/* Copyright 2020 Jay Greco
+/* Copyright 2021 Jay Greco
*
* 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
diff --git a/keyboards/nullbitsco/nibble/remote_kb.c b/keyboards/nullbitsco/common/remote_kb.c
similarity index 99%
rename from keyboards/nullbitsco/nibble/remote_kb.c
rename to keyboards/nullbitsco/common/remote_kb.c
index 7a914993f310..89cbf9a92a9d 100644
--- a/keyboards/nullbitsco/nibble/remote_kb.c
+++ b/keyboards/nullbitsco/common/remote_kb.c
@@ -1,4 +1,4 @@
-/* Copyright 2020 Jay Greco
+/* Copyright 2021 Jay Greco
*
* 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
diff --git a/keyboards/nullbitsco/nibble/remote_kb.h b/keyboards/nullbitsco/common/remote_kb.h
similarity index 98%
rename from keyboards/nullbitsco/nibble/remote_kb.h
rename to keyboards/nullbitsco/common/remote_kb.h
index f4b5c43f5dae..6270e8f9f1e7 100644
--- a/keyboards/nullbitsco/nibble/remote_kb.h
+++ b/keyboards/nullbitsco/common/remote_kb.h
@@ -1,4 +1,4 @@
-/* Copyright 2020 Jay Greco
+/* Copyright 2021 Jay Greco
*
* 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
diff --git a/keyboards/nullbitsco/nibble/big_led.c b/keyboards/nullbitsco/nibble/big_led.c
index 9fd06a5de17d..d66a80815394 100644
--- a/keyboards/nullbitsco/nibble/big_led.c
+++ b/keyboards/nullbitsco/nibble/big_led.c
@@ -1,4 +1,4 @@
-/* Copyright 2020 Jay Greco
+/* Copyright 2021 Jay Greco
*
* 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
diff --git a/keyboards/nullbitsco/nibble/big_led.h b/keyboards/nullbitsco/nibble/big_led.h
index b4b0650787ac..4ebcc35f08e2 100644
--- a/keyboards/nullbitsco/nibble/big_led.h
+++ b/keyboards/nullbitsco/nibble/big_led.h
@@ -1,4 +1,4 @@
-/* Copyright 2020 Jay Greco
+/* Copyright 2021 Jay Greco
*
* 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
diff --git a/keyboards/nullbitsco/nibble/config.h b/keyboards/nullbitsco/nibble/config.h
index 3e0adce454a4..b88d4bc360f8 100644
--- a/keyboards/nullbitsco/nibble/config.h
+++ b/keyboards/nullbitsco/nibble/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2020 Jay Greco
+/* Copyright 2021 Jay Greco
*
* 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
diff --git a/keyboards/nullbitsco/nibble/keymaps/default/keymap.c b/keyboards/nullbitsco/nibble/keymaps/default/keymap.c
index beac1c55a20d..f9fc56e70264 100644
--- a/keyboards/nullbitsco/nibble/keymaps/default/keymap.c
+++ b/keyboards/nullbitsco/nibble/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2020 Jay Greco
+/* Copyright 2021 Jay Greco
*
* 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
diff --git a/keyboards/nullbitsco/nibble/keymaps/iso/keymap.c b/keyboards/nullbitsco/nibble/keymaps/iso/keymap.c
index 270350ca0f7a..0f0ed590a4eb 100644
--- a/keyboards/nullbitsco/nibble/keymaps/iso/keymap.c
+++ b/keyboards/nullbitsco/nibble/keymaps/iso/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2020 Jay Greco
+/* Copyright 2021 Jay Greco
*
* 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
diff --git a/keyboards/nullbitsco/nibble/keymaps/oled/keymap.c b/keyboards/nullbitsco/nibble/keymaps/oled/keymap.c
index 0e0a152ec13b..14f79f5fbfa5 100644
--- a/keyboards/nullbitsco/nibble/keymaps/oled/keymap.c
+++ b/keyboards/nullbitsco/nibble/keymaps/oled/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2020 Jay Greco
+/* Copyright 2021 Jay Greco
*
* 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
diff --git a/keyboards/nullbitsco/nibble/keymaps/via/keymap.c b/keyboards/nullbitsco/nibble/keymaps/via/keymap.c
index 67a53f241ba1..b1c9242b9ad4 100644
--- a/keyboards/nullbitsco/nibble/keymaps/via/keymap.c
+++ b/keyboards/nullbitsco/nibble/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2020 Jay Greco
+/* Copyright 2021 Jay Greco
*
* 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
diff --git a/keyboards/nullbitsco/nibble/matrix.c b/keyboards/nullbitsco/nibble/matrix.c
index 8ec9da2844c4..496c5dbe322f 100644
--- a/keyboards/nullbitsco/nibble/matrix.c
+++ b/keyboards/nullbitsco/nibble/matrix.c
@@ -1,4 +1,4 @@
-/* Copyright 2020 Jay Greco
+/* Copyright 2021 Jay Greco
*
* 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
diff --git a/keyboards/nullbitsco/nibble/nibble.c b/keyboards/nullbitsco/nibble/nibble.c
index 409edd44a015..43918c13e645 100644
--- a/keyboards/nullbitsco/nibble/nibble.c
+++ b/keyboards/nullbitsco/nibble/nibble.c
@@ -1,4 +1,4 @@
-/* Copyright 2020 Jay Greco
+/* Copyright 2021 Jay Greco
*
* 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
@@ -14,7 +14,6 @@
* along with this program. If not, see .
*/
#include QMK_KEYBOARD_H
-#include "bitc_led.h"
// Use Bit-C LED to show CAPS LOCK status
bool led_update_kb(led_t led_state) {
diff --git a/keyboards/nullbitsco/nibble/nibble.h b/keyboards/nullbitsco/nibble/nibble.h
index b974edaba5c4..58ac80445118 100644
--- a/keyboards/nullbitsco/nibble/nibble.h
+++ b/keyboards/nullbitsco/nibble/nibble.h
@@ -1,4 +1,4 @@
-/* Copyright 2020 Jay Greco
+/* Copyright 2021 Jay Greco
*
* 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
@@ -18,7 +18,8 @@
#define ___ KC_NO
#include "quantum.h"
-#include "remote_kb.h"
+#include "common/remote_kb.h"
+#include "common/bitc_led.h"
#define LAYOUT_all( \
K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \
diff --git a/keyboards/nullbitsco/nibble/rules.mk b/keyboards/nullbitsco/nibble/rules.mk
index dd4d36c981c8..ab20cfa2461f 100644
--- a/keyboards/nullbitsco/nibble/rules.mk
+++ b/keyboards/nullbitsco/nibble/rules.mk
@@ -23,7 +23,7 @@ CUSTOM_MATRIX = lite # Lite custom matrix
# Project specific files
SRC += matrix.c \
- bitc_led.c \
+ common/bitc_led.c \
big_led.c \
- remote_kb.c
+ common/remote_kb.c
QUANTUM_LIB_SRC += uart.c
diff --git a/keyboards/nullbitsco/scramble/config.h b/keyboards/nullbitsco/scramble/config.h
index 949c280263fd..811f28e6be17 100644
--- a/keyboards/nullbitsco/scramble/config.h
+++ b/keyboards/nullbitsco/scramble/config.h
@@ -1,5 +1,5 @@
/*
-Copyright 2020 Jay Greco
+Copyright 2021 Jay Greco
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
diff --git a/keyboards/nullbitsco/scramble/keymaps/default/keymap.c b/keyboards/nullbitsco/scramble/keymaps/default/keymap.c
index b80214110a62..a798bd3cb803 100644
--- a/keyboards/nullbitsco/scramble/keymaps/default/keymap.c
+++ b/keyboards/nullbitsco/scramble/keymaps/default/keymap.c
@@ -1,5 +1,5 @@
/*
-Copyright 2020 Jay Greco
+Copyright 2021 Jay Greco
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
diff --git a/keyboards/nullbitsco/scramble/keymaps/oled/config.h b/keyboards/nullbitsco/scramble/keymaps/oled/config.h
index 5bfc9cff759d..cd980b09366c 100644
--- a/keyboards/nullbitsco/scramble/keymaps/oled/config.h
+++ b/keyboards/nullbitsco/scramble/keymaps/oled/config.h
@@ -1,5 +1,5 @@
/*
-Copyright 2020 Jay Greco
+Copyright 2021 Jay Greco
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
diff --git a/keyboards/nullbitsco/scramble/keymaps/oled/keymap.c b/keyboards/nullbitsco/scramble/keymaps/oled/keymap.c
index 41356631af20..109da78ad6fb 100644
--- a/keyboards/nullbitsco/scramble/keymaps/oled/keymap.c
+++ b/keyboards/nullbitsco/scramble/keymaps/oled/keymap.c
@@ -1,5 +1,5 @@
/*
-Copyright 2020 Jay Greco
+Copyright 2021 Jay Greco
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
diff --git a/keyboards/nullbitsco/scramble/keymaps/via/keymap.c b/keyboards/nullbitsco/scramble/keymaps/via/keymap.c
index d5b97855a5f0..4c0ffbe2ebee 100644
--- a/keyboards/nullbitsco/scramble/keymaps/via/keymap.c
+++ b/keyboards/nullbitsco/scramble/keymaps/via/keymap.c
@@ -1,5 +1,5 @@
/*
-Copyright 2020 Jay Greco
+Copyright 2021 Jay Greco
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
diff --git a/keyboards/nullbitsco/scramble/scramble.c b/keyboards/nullbitsco/scramble/scramble.c
index 3e981cfbb327..f9f28d2c31bc 100644
--- a/keyboards/nullbitsco/scramble/scramble.c
+++ b/keyboards/nullbitsco/scramble/scramble.c
@@ -1,5 +1,5 @@
/*
-Copyright 2020 Jay Greco
+Copyright 2021 Jay Greco
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
diff --git a/keyboards/nullbitsco/scramble/scramble.h b/keyboards/nullbitsco/scramble/scramble.h
index 5d3e1b010354..101645e51d25 100644
--- a/keyboards/nullbitsco/scramble/scramble.h
+++ b/keyboards/nullbitsco/scramble/scramble.h
@@ -1,4 +1,4 @@
-/* Copyright 2020 Jay Greco
+/* Copyright 2021 Jay Greco
*
* 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
diff --git a/keyboards/ok60/rules.mk b/keyboards/ok60/rules.mk
index e1e858b349b3..b8967270096a 100644
--- a/keyboards/ok60/rules.mk
+++ b/keyboards/ok60/rules.mk
@@ -12,7 +12,6 @@ MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
# CONSOLE_ENABLE = yes # Console for debug
# COMMAND_ENABLE = yes # Commands for debug and configuration
-KEYBOARD_LOCK_ENABLE = yes # Allow locking of keyboard via magic key
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable the RGB backlight
diff --git a/keyboards/orthodox/keymaps/shaymdev/config.h b/keyboards/orthodox/keymaps/shaymdev/config.h
new file mode 100644
index 000000000000..749302284a29
--- /dev/null
+++ b/keyboards/orthodox/keymaps/shaymdev/config.h
@@ -0,0 +1,60 @@
+/*
+This is the c configuration file for the keymap
+
+Copyright 2012 Jun Wako
+Copyright 2015 Jack Humbert
+Copyright 2017 Art Ortenburger
+
+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 .
+*/
+
+#pragma once
+
+/* Use I2C or Serial, not both */
+#define USE_SERIAL
+// #define USE_I2C
+
+#define EE_HANDS
+
+#undef RGBLED_NUM
+#define RGBLED_NUM 14
+// #define RGBLIGHT_ANIMATIONS
+
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_KNIGHT
+
+// #define RGBLED_SPLIT { 5, 5 }
+#undef RGB_DI_PIN
+#define RGB_DI_PIN D3
+#define RGBLIGHT_LAYERS
+#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF
+#define RGBLIGHT_SLEEP
+
+#ifdef AUDIO_ENABLE
+ #define STARTUP_SONG SONG(PLANCK_SOUND)
+ // #define STARTUP_SONG SONG(NO_SOUND)
+
+ #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
+ SONG(COLEMAK_SOUND), \
+ SONG(DVORAK_SOUND) \
+ }
+#endif
+
+#define COMBO_COUNT 1
+
+#define IGNORE_MOD_TAP_INTERRUPT
+#define TAPPING_TERM 220
+
diff --git a/keyboards/orthodox/keymaps/shaymdev/keymap.c b/keyboards/orthodox/keymaps/shaymdev/keymap.c
new file mode 100644
index 000000000000..54ae7e397287
--- /dev/null
+++ b/keyboards/orthodox/keymaps/shaymdev/keymap.c
@@ -0,0 +1,196 @@
+/*
+This is the keymap for the keyboard
+
+Copyright 2012 Jun Wako
+Copyright 2015 Jack Humbert
+Copyright 2017 Art Ortenburger
+
+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
+
+enum orthodox_layers
+{
+ _DVORAK,
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
+
+enum combos //match combo_count in config.h
+{
+ EU_ENT,
+};
+
+const uint16_t PROGMEM eu_combo[] = {KC_E, KC_U, COMBO_END};
+
+combo_t key_combos[COMBO_COUNT] = {
+ [EU_ENT] = COMBO_ACTION(eu_combo),
+};
+
+void process_combo_event(uint16_t combo_index, bool pressed) {
+ switch(combo_index) {
+ case EU_ENT:
+ if (pressed) {
+ tap_code16(KC_ENT);
+ }
+ break;
+ }
+}
+
+
+enum custom_keycodes {
+ DVORAK = SAFE_RANGE,
+ QWERTY,
+ VELOCI
+};
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+
+#define TO_DV TO(_DVORAK)
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+
+[_DVORAK] = LAYOUT(
+ KC_ESC, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH,
+ KC_TAB, GUI_T(KC_A), ALT_T(KC_O), KC_E, KC_U, KC_I, KC_ENT, KC_LALT, KC_DEL, KC_LGUI, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS,
+ KC_EQL, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, TT(LOWER), KC_LSFT, KC_LCTL, KC_BSPC, ALT_T(KC_SPC), TT(RAISE), KC_B, KC_M, KC_W, KC_V, KC_Z, KC_BSLS
+),
+
+[_QWERTY] = LAYOUT(
+ KC_ESC, 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_SCLN, KC_QUOT,
+ KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, _______, _______, _______, _______, _______, _______, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT
+),
+
+[_LOWER] = LAYOUT(
+ _______, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_AMPR, _______, KC_P7, KC_P8, KC_P9, KC_PMNS, _______,
+ _______, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_ASTR, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_PPLS, _______,
+ _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_GRV, _______, _______, _______, _______, _______, KC_KP_0, _______, KC_P1, KC_P2, KC_P3, KC_PENT, _______
+),
+
+[_RAISE] = LAYOUT(
+ _______, KC_PSCR, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_VOLU, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX,
+ KC_CAPS, KC_INS, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, _______, _______, _______, KC_VOLD, KC_F4, KC_F5, KC_F6, KC_F11, XXXXXXX,
+ _______, KC_NLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_F1, KC_F2, KC_F3, KC_F12, XXXXXXX
+),
+
+[_ADJUST] = LAYOUT(
+ TO_DV, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SLEP,
+ RGB_TOG, RGB_MOD, VLK_TOG, AU_ON, AU_OFF, AG_NORM, _______, _______, _______, _______, AG_SWAP, QWERTY, DVORAK, _______, _______, _______,
+ RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+)
+
+
+};
+
+const key_override_t delete_key_override = ko_make_basic(MOD_MASK_SHIFT, KC_BSPACE, KC_DELETE);
+
+// This globally defines all key overrides to be used
+const key_override_t **key_overrides = (const key_override_t *[]){
+ &delete_key_override,
+ NULL // Null terminate the array of overrides!
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case QWERTY:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_QWERTY);
+ }
+ return false;
+ break;
+ case DVORAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_DVORAK);
+ }
+ return false;
+ break;
+// case VELOCI:
+// #ifdef VELOCIKEY_ENABLE
+// velocikey_toggle();
+// return false;
+// #endif
+// break;
+ }
+ return true;
+}
+
+#ifdef RGBLIGHT_ENABLE
+
+const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {4, 6, HSV_RED} // Light 6 LEDs, starting with LED 4
+);
+
+const rgblight_segment_t PROGMEM my_qwerty_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 3, HSV_CHARTREUSE} // Light 3 LEDs, starting with LED 0
+);
+
+const rgblight_segment_t PROGMEM my_lower_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {4, 3, HSV_BLUE} // Light LEDs 5-6
+);
+
+const rgblight_segment_t PROGMEM my_raise_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {7, 3, HSV_ORANGE} // Light LEDs 7-8
+);
+
+const rgblight_segment_t PROGMEM my_adjust_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {4, 6, HSV_GREEN} // Light 10 LEDs, starting with LED 0
+);
+
+
+// Later layers take precedence. This array corresponds to the magic numbers used in rgblight_set_layer_state(i, onOff)
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ my_capslock_layer,
+ my_qwerty_layer, // Overrides other layers
+ my_lower_layer, // Overrides other layers
+ my_raise_layer, // Overrides other layers
+ my_adjust_layer // Overrides other layers
+);
+
+void keyboard_post_init_user(void) {
+ // Enable the LED layers
+ rgblight_layers = my_rgb_layers;
+ rgblight_enable_noeeprom(); // Enables RGB, without saving settings
+ //rgblight_sethsv_noeeprom(HSV_CYAN);
+ //rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
+ rgblight_mode_noeeprom(RGBLIGHT_MODE_RAINBOW_SWIRL);
+}
+
+bool led_update_user(led_t led_state) {
+ rgblight_set_layer_state(0, led_state.caps_lock);
+ return true;
+}
+
+layer_state_t default_layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(1, layer_state_cmp(state, _QWERTY));
+ return state;
+}
+
+#endif
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ state = update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+
+#ifdef RGBLIGHT_ENABLE
+ rgblight_set_layer_state(2, layer_state_cmp(state, _LOWER));
+ rgblight_set_layer_state(3, layer_state_cmp(state, _RAISE));
+ rgblight_set_layer_state(4, layer_state_cmp(state, _ADJUST));
+#endif
+
+ return state;
+}
diff --git a/keyboards/orthodox/keymaps/shaymdev/rules.mk b/keyboards/orthodox/keymaps/shaymdev/rules.mk
new file mode 100644
index 000000000000..c6ecb2372fbb
--- /dev/null
+++ b/keyboards/orthodox/keymaps/shaymdev/rules.mk
@@ -0,0 +1,6 @@
+MOUSEKEY_ENABLE = no
+RGBLIGHT_ENABLE = yes
+VELOCIKEY_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+COMBO_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/planck/keymaps/ajp10304/readme.md b/keyboards/planck/keymaps/ajp10304/readme.md
index 97f0a0093198..c68ba49283b6 100644
--- a/keyboards/planck/keymaps/ajp10304/readme.md
+++ b/keyboards/planck/keymaps/ajp10304/readme.md
@@ -7,9 +7,7 @@ the second is the output when shift is applied.
**Note:** The below tables assume a UK layout.
#### Flashing
-Rev <=5: `make planck:ajp10304:flash`
-
-Rev 6: `make planck/rev6:ajp10304:flash`
+Refer to the README.md of the keyboard you want to flash.
##### Main Qwerty Layer
@@ -103,7 +101,7 @@ Activated when `fn` and `raise` held together.
| | | | | | | | | | | | |
| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
-| ESC | | | | | | | | BTN3 | | | |
+| ESC | | | | | | W_L | W_UP | BTN3 | W_DWN| W_R | |
| ACC0 | ACC1 | ACC2 | | | | | BTN1 | UP | BTN2 | | |
| ACC0 | ACC1 | ACC2 | | | | | LEFT | DOWN | RIGHT| | |
| | | | | | | | | | | | |
diff --git a/keyboards/planck/keymaps/copface/keymap.c b/keyboards/planck/keymaps/copface/keymap.c
index 0754a0c742d3..b448d9c7dd27 100644
--- a/keyboards/planck/keymaps/copface/keymap.c
+++ b/keyboards/planck/keymaps/copface/keymap.c
@@ -85,7 +85,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_META] = LAYOUT_planck_grid(
XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SRC, XXXXXXX,
- XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ KC_CAPS, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, KC_F10, KC_F11, KC_F12, HK_AF9, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
),
@@ -167,6 +167,10 @@ void matrix_scan_user(void) {
SEQ_ONE_KEY(KC_S) {
tap_code16(G(C(S(KC_4))));
}
+ // Record Screen
+ SEQ_TWO_KEYS(KC_S, KC_S) {
+ tap_code16(S(G(KC_5)));
+ }
// 1Pass browser
SEQ_ONE_KEY(KC_A) {
tap_code16(G(A(KC_BSLS)));
@@ -187,5 +191,13 @@ void matrix_scan_user(void) {
SEQ_ONE_KEY(KC_ENT) {
tap_code16(S(G(A(KC_F))));
}
+ // Focus file tree
+ SEQ_ONE_KEY(KC_TAB) {
+ tap_code16(G(KC_1));
+ }
+ // Caps-lock
+ SEQ_TWO_KEYS(KC_TAB, KC_TAB) {
+ tap_code16(KC_CAPS);
+ }
}
}
diff --git a/keyboards/planck/keymaps/dvz/config.h b/keyboards/planck/keymaps/dvz/config.h
new file mode 100644
index 000000000000..5535c3ca1948
--- /dev/null
+++ b/keyboards/planck/keymaps/dvz/config.h
@@ -0,0 +1,73 @@
+ /* Copyright 2021 Milan Düwel
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#ifdef AUDIO_ENABLE
+ #define STARTUP_SONG SONG(PLANCK_SOUND)
+ // #define STARTUP_SONG SONG(NO_SOUND)
+
+ /*#define DEFAULT_LAYER_SONGS {
+ SONG(QWERTY_SOUND), \
+ SONG(COLEMAK_SOUND), \
+ SONG(DVORAK_SOUND) \
+ }*/
+
+ #define PING_SOUND Q__NOTE(_A6), WD_NOTE(_E7)
+#endif
+
+/*
+ * MIDI options
+ */
+
+/* enable basic MIDI features:
+ - MIDI notes can be sent when in Music mode is on
+*/
+
+//#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+ - MIDI notes can be added to the keymap
+ - Octave shift and transpose
+ - Virtual sustain, portamento, and modulation wheel
+ - etc.
+*/
+//#define MIDI_ADVANCED
+
+// Most tactile encoders have detents every 4 stages
+#define ENCODER_RESOLUTION 4
+
+#define COMBO_COUNT 4
+
+#ifdef AUDIO_ENABLE
+ #define DAC_SAMPLE_MAX 65535/2
+#endif
+
+#define RGBLIGHT_LAYERS
+#define RGBLIGHT_SAT_STEP 5
+#define RGBLIGHT_VAL_STEP 8
+#define RGBLIGHT_SLEEP
+#define RGBLED_NUM 9
+
+#undef RGBLIGHT_ANIMATIONS
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+
+#define RGBLIGHT_RAINBOW_SWIRL_RANGE 127
diff --git a/keyboards/planck/keymaps/dvz/keymap.c b/keyboards/planck/keymaps/dvz/keymap.c
new file mode 100644
index 000000000000..f1d213b42cd4
--- /dev/null
+++ b/keyboards/planck/keymaps/dvz/keymap.c
@@ -0,0 +1,280 @@
+/* Copyright 2015-2017 Jack Humbert
+ *
+ * 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
+#include "muse.h"
+#include "keymap_german.h"
+
+enum combos {
+ AE,
+ OE,
+ UE,
+ SZ
+};
+
+const uint16_t PROGMEM ae_combo[] = {KC_A, KC_E, COMBO_END};
+const uint16_t PROGMEM oe_combo[] = {KC_O, KC_E, COMBO_END};
+const uint16_t PROGMEM ue_combo[] = {KC_U, KC_E, COMBO_END};
+const uint16_t PROGMEM sz_combo[] = {KC_S, DE_Z, COMBO_END};
+
+combo_t key_combos[COMBO_COUNT] = {
+ [AE] = COMBO(ae_combo, DE_AE),
+ [OE] = COMBO(oe_combo, DE_OE),
+ [UE] = COMBO(ue_combo, DE_UE),
+ [SZ] = COMBO(sz_combo, DE_SS)
+};
+
+enum planck_layers {
+ _QWERTZ,
+ _NUMPD,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
+
+enum planck_keycodes {
+ QWERTZ = SAFE_RANGE,
+ NUMPD,
+ SCROLL
+};
+
+bool scroll = false;
+
+#ifdef AUDIO_ENABLE
+ float ping_song[][2] = SONG(PING_SOUND);
+#endif
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* QWERTZ
+ * ,-----------------------------------------------------------------------------------.
+ * | RtEnc| Q | W | E | R | T | Z | U | I | O | P | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Esc | A | S | D | F | G | H | J | K | L | + | - |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | SfTab| Y | X | C | V | B | N | M | , | . | Up |SfEnt |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | GUI | NumPd| Alt | Num | Space | Sym | Del | Left | Down |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTZ] = LAYOUT_planck_grid(
+ SCROLL, KC_Q, KC_W, KC_E, KC_R, KC_T, DE_Z, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, DE_PLUS, DE_MINS,
+LSFT_T(KC_TAB),DE_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_SFTENT,
+ KC_LCTL, KC_LGUI, NUMPD, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT
+),
+
+/* Numpad
+ * ,-----------------------------------------------------------------------------------.
+ * | | 7 | 8 | 9 | / | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | NLCK | 4 | 5 | 6 | - | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | 1 | 2 | 3 | + | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | . | 0 | , |NumOFF| Enter |Raise | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_NUMPD] = LAYOUT_planck_grid(
+ SFT_T(KC_PASTE),KC_P7, KC_P8, KC_P9, DE_SLSH, _______, _______, _______, _______, _______, _______, _______,
+ KC_NLCK, KC_P4, KC_P5, KC_P6, DE_MINS, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_P1, KC_P2, KC_P3, DE_PLUS, _______, _______, _______, _______, _______, _______, _______,
+ CTL_T(KC_COPY),KC_DOT, KC_P0, KC_COMM, NUMPD, KC_ENT, KC_ENT, _______, _______, _______, _______, _______
+),
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | ^ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | F10 | F11 | F12 | F13 | F14 | F15 | | | |Pg Up | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | Home |Pg Dn | End |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LOWER] = LAYOUT_planck_grid(
+ _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
+ 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_F13, KC_F14, KC_F15, _______, _______, _______, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
+),
+
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * | | ! | " | § | $ | % | & | / | ( | ) | = | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | ° | | | | | | | | ? | [ | ] | ' | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | \ | < | > | { | } | Vol+ | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | Brt- | Vol- | Brt+ |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RAISE] = LAYOUT_planck_grid(
+ _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, DE_SLSH, DE_LPRN, DE_RPRN, DE_EQL, KC_BSPC,
+ KC_TILD, _______, _______, _______, _______, _______, DE_PIPE, DE_QUES, DE_LBRC, DE_RBRC, DE_QUOT, DE_HASH,
+ _______, _______, _______, _______, _______, DE_BSLS, DE_LABK, DE_RABK, DE_LCBR, DE_RCBR, KC_VOLU, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BRID, KC_VOLD, KC_BRIU
+),
+
+/* Adjust (Lower + Raise)
+ * v------------------------RGB CONTROL--------------------v
+ * ,-----------------------------------------------------------------------------------.
+ * | | Reset|Debug | RGB |RGBMOD| HUE+ | HUE- | SAT+ | SAT- |BRGTH+|BRGTH-| Del |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |PowOff| |MUSmod|Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof|TermOn|TermOf| | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJUST] = LAYOUT_planck_grid(
+ _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ KC_POWER,_______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______,
+ _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+)
+
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ /*case QWERTY:
+ if (record->event.pressed) {
+ print("mode just switched to qwerty and this is a huge string\n");
+ set_single_persistent_default_layer(_QWERTY);
+ }
+ return false;
+ break;
+ case COLEMAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_COLEMAK);
+ }
+ return false;
+ break;
+ case DVORAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_DVORAK);
+ }
+ return false;
+ break;*/
+ case NUMPD:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ PLAY_SONG(ping_song);
+ #endif
+ if (layer_state_is(_NUMPD)) {
+ layer_off(_NUMPD);
+ } else {
+ layer_on(_NUMPD);
+ }
+ }
+ return false;
+ break;
+ case SCROLL:
+ if (record->event.pressed) {
+ scroll = true;
+ } else {
+ scroll = false;
+ }
+ default:
+ return true;
+ }
+}
+
+void encoder_update(bool clockwise) {
+ if (layer_state_is(_NUMPD)){
+ if (clockwise) {
+ tap_code(KC_RIGHT);
+ } else {
+ tap_code(KC_LEFT);
+ }
+ } else if (scroll) { //scroll fast mode
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ } else {
+ if (clockwise) {
+ #ifdef MOUSEKEY_ENABLE
+ tap_code(KC_MS_WH_DOWN);
+ #else
+ tap_code(KC_PGDN);
+ #endif
+ } else {
+ #ifdef MOUSEKEY_ENABLE
+ tap_code(KC_MS_WH_UP);
+ #else
+ tap_code(KC_PGUP);
+ #endif
+ }
+ }
+}
+
+void matrix_scan_user(void) {
+}
+
+bool music_mask_user(uint16_t keycode) {
+ switch (keycode) {
+ case RAISE:
+ case LOWER:
+ return false;
+ default:
+ return true;
+ }
+}
+const rgblight_segment_t PROGMEM numbers_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {3, 4, HSV_GREEN}
+);
+const rgblight_segment_t PROGMEM symbols_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {2, 5, HSV_PURPLE}
+);
+const rgblight_segment_t PROGMEM numpad_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {5, 4, HSV_RED} // Light 4 LEDs, starting with LED 6
+);
+const rgblight_segment_t PROGMEM config_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {2, 6, HSV_YELLOW}
+);
+
+// Now define the array of layers. Later layers take precedence
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ numbers_layer,
+ symbols_layer,
+ numpad_layer, // Overrides other layers
+ config_layer
+);
+
+void keyboard_post_init_user(void) {
+ // Enable the LED layers
+ rgblight_layers = my_rgb_layers;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ if (!(layer_state_is(_NUMPD))) {
+ state = update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+ }
+ rgblight_set_layer_state(2, layer_state_cmp(state, 1));
+ rgblight_set_layer_state(0, layer_state_cmp(state, 2));
+ rgblight_set_layer_state(1, layer_state_cmp(state, 3));
+ rgblight_set_layer_state(3, layer_state_cmp(state, 4));
+ return state;
+}
diff --git a/keyboards/planck/keymaps/dvz/readme.md b/keyboards/planck/keymaps/dvz/readme.md
new file mode 100644
index 000000000000..f4c1eb6ad81b
--- /dev/null
+++ b/keyboards/planck/keymaps/dvz/readme.md
@@ -0,0 +1,11 @@
+# devilzmods's german Planck Layout
+
+- QWERTZ
+- Lefthand Numpad layer (toggle)
+- Standard Numbers (left)
+- Symbols (right)
+- Settings
+
+This layout feature "rolling umlauts". Typing ae, oe, ue, sz respectively gets recognized and spits out ä, ö, ü, ß. For this, your systems keyboard layout/language has to be set to DE/German
+
+The layout is also designed around a rotary encoder in the top left corner that switches between slow and fast scrolling in the default layer by pressing it down while turning. In the numpad layer it scrolls left/right and pressing it down holds shift to select while scrolling.
diff --git a/keyboards/planck/keymaps/dvz/rules.mk b/keyboards/planck/keymaps/dvz/rules.mk
new file mode 100644
index 000000000000..7216951bf964
--- /dev/null
+++ b/keyboards/planck/keymaps/dvz/rules.mk
@@ -0,0 +1,5 @@
+SRC += muse.c
+
+COMBO_ENABLE = yes
+#VIA_ENABLE = yes
+AUDIO_ENABLE = yes
diff --git a/keyboards/planck/keymaps/jimmysjolund/config.h b/keyboards/planck/keymaps/jimmysjolund/config.h
new file mode 100644
index 000000000000..5606510d4981
--- /dev/null
+++ b/keyboards/planck/keymaps/jimmysjolund/config.h
@@ -0,0 +1,49 @@
+/* Copyright 2021 Jimmy Sjölund
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#ifdef AUDIO_ENABLE
+ #define STARTUP_SONG SONG(PLANCK_SOUND)
+ // #define STARTUP_SONG SONG(NO_SOUND)
+
+ #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
+ SONG(COLEMAK_SOUND), \
+ SONG(DVORAK_SOUND) \
+ }
+#endif
+
+/*
+ * MIDI options
+ */
+
+/* enable basic MIDI features:
+ - MIDI notes can be sent when in Music mode is on
+*/
+
+#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+ - MIDI notes can be added to the keymap
+ - Octave shift and transpose
+ - Virtual sustain, portamento, and modulation wheel
+ - etc.
+*/
+//#define MIDI_ADVANCED
+
+// Most tactile encoders have detents every 4 stages
+#define ENCODER_RESOLUTION 4
+
diff --git a/keyboards/planck/keymaps/jimmysjolund/keymap.c b/keyboards/planck/keymaps/jimmysjolund/keymap.c
new file mode 100644
index 000000000000..6b89b99540b6
--- /dev/null
+++ b/keyboards/planck/keymaps/jimmysjolund/keymap.c
@@ -0,0 +1,367 @@
+/* Copyright 2015-2017 Jack Humbert
+ *
+ * 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
+#include "muse.h"
+
+
+enum planck_layers {
+ _QWERTY,
+ _COLEMAK,
+ _DVORAK,
+ _LOWER,
+ _RAISE,
+ _PLOVER,
+ _ADJUST
+};
+
+enum planck_keycodes {
+ QWERTY = SAFE_RANGE,
+ COLEMAK,
+ DVORAK,
+ PLOVER,
+ BACKLIT,
+ EXT_PLV
+};
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty - Original
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc | A | S | D | F | G | H | J | K | L | ; | " |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+/* Qwerty - jimmysjolund 2021-09-22
+ * ,-----------------------------------------------------------------------------------.
+ * | Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Tab | A | S | D | F | G | H | J | K | L | ; | " |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | N | M | , | . | / |Shift |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Del | Ctrl | GUI | Alt |Lower |Raise |Enter |Space |AltGr | Down | Up |Enter |
+ * `-----------------------------------------------------------------------------------'
+ */
+
+[_QWERTY] = LAYOUT_planck_grid(
+ KC_ESC, 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_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_RSFT,
+ KC_DEL, KC_LCTL, KC_LGUI, KC_LALT, LOWER, RAISE, KC_ENT, KC_SPC, KC_ALGR, KC_DOWN, KC_UP, KC_ENT
+),
+
+/* Colemak Original
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc | A | R | S | T | D | H | N | E | I | O | " |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+/* Colemak jimmysjolund
+ * ,-----------------------------------------------------------------------------------.
+ * | Esc | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Tab | A | R | S | T | D | H | N | E | I | O | " |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | K | M | , | . | / |Shift |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Del | Ctrl | GUI | Alt |Lower |Raise |Enter |Space |AltGr | Down | Up |Enter |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_COLEMAK] = LAYOUT_planck_grid(
+ KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
+ KC_TAB, 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_RSFT,
+ KC_DEL, KC_LCTL, KC_LGUI, KC_LALT, LOWER, RAISE, KC_ENT, KC_SPC, KC_ALGR, KC_DOWN, KC_UP, KC_ENT
+),
+
+/* Dvorak
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc | A | O | E | U | I | D | H | T | N | S | / |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_DVORAK] = LAYOUT_planck_grid(
+ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
+ KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
+ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT ,
+ BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+),
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |Pg Up |Pg Dn | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LOWER] = LAYOUT_planck_grid(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+),
+
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RAISE] = LAYOUT_planck_grid(
+ 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_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+),
+
+
+/* Plover layer (http://opensteno.org)
+ * ,-----------------------------------------------------------------------------------.
+ * | # | # | # | # | # | # | # | # | # | # | # | # |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | S | T | P | H | * | * | F | P | L | T | D |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | S | K | W | R | * | * | R | B | G | S | Z |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Exit | | | A | O | | E | U | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_PLOVER] = LAYOUT_planck_grid(
+ KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 ,
+ XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
+ XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX
+),
+
+/* Adjust (Lower + Raise)
+ * ,-----------------------------------------------------------------------------------.
+ * | | Reset| | | | | | | | | | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJUST] = LAYOUT_planck_grid(
+ _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______,
+ _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+)
+
+};
+
+#ifdef AUDIO_ENABLE
+ float plover_song[][2] = SONG(PLOVER_SOUND);
+ float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND);
+#endif
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case QWERTY:
+ if (record->event.pressed) {
+ print("mode just switched to qwerty and this is a huge string\n");
+ set_single_persistent_default_layer(_QWERTY);
+ }
+ return false;
+ break;
+ case COLEMAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_COLEMAK);
+ }
+ return false;
+ break;
+ case DVORAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_DVORAK);
+ }
+ return false;
+ break;
+ case BACKLIT:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+ #ifdef BACKLIGHT_ENABLE
+ backlight_step();
+ #endif
+ #ifdef KEYBOARD_planck_rev5
+ PORTE &= ~(1<<6);
+ #endif
+ } else {
+ unregister_code(KC_RSFT);
+ #ifdef KEYBOARD_planck_rev5
+ PORTE |= (1<<6);
+ #endif
+ }
+ return false;
+ break;
+ case PLOVER:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ stop_all_notes();
+ PLAY_SONG(plover_song);
+ #endif
+ layer_off(_RAISE);
+ layer_off(_LOWER);
+ layer_off(_ADJUST);
+ layer_on(_PLOVER);
+ if (!eeconfig_is_enabled()) {
+ eeconfig_init();
+ }
+ keymap_config.raw = eeconfig_read_keymap();
+ keymap_config.nkro = 1;
+ eeconfig_update_keymap(keymap_config.raw);
+ }
+ return false;
+ break;
+ case EXT_PLV:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ PLAY_SONG(plover_gb_song);
+ #endif
+ layer_off(_PLOVER);
+ }
+ return false;
+ break;
+ }
+ return true;
+}
+
+bool muse_mode = false;
+uint8_t last_muse_note = 0;
+uint16_t muse_counter = 0;
+uint8_t muse_offset = 70;
+uint16_t muse_tempo = 50;
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (muse_mode) {
+ if (IS_LAYER_ON(_RAISE)) {
+ if (clockwise) {
+ muse_offset++;
+ } else {
+ muse_offset--;
+ }
+ } else {
+ if (clockwise) {
+ muse_tempo+=1;
+ } else {
+ muse_tempo-=1;
+ }
+ }
+ } else {
+ if (clockwise) {
+ #ifdef MOUSEKEY_ENABLE
+ tap_code(KC_MS_WH_DOWN);
+ #else
+ tap_code(KC_PGDN);
+ #endif
+ } else {
+ #ifdef MOUSEKEY_ENABLE
+ tap_code(KC_MS_WH_UP);
+ #else
+ tap_code(KC_PGUP);
+ #endif
+ }
+ }
+ return false;
+}
+
+bool dip_update_user(uint8_t index, bool active) {
+ switch (index) {
+ case 0:
+ if (active) {
+ #ifdef AUDIO_ENABLE
+ PLAY_SONG(plover_song);
+ #endif
+ layer_on(_ADJUST);
+ } else {
+ #ifdef AUDIO_ENABLE
+ PLAY_SONG(plover_gb_song);
+ #endif
+ layer_off(_ADJUST);
+ }
+ break;
+ case 1:
+ if (active) {
+ muse_mode = true;
+ } else {
+ muse_mode = false;
+ #ifdef AUDIO_ENABLE
+ stop_all_notes();
+ #endif
+ }
+ }
+ return false;
+}
+
+void matrix_scan_user(void) {
+ #ifdef AUDIO_ENABLE
+ if (muse_mode) {
+ if (muse_counter == 0) {
+ uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()];
+ if (muse_note != last_muse_note) {
+ stop_note(compute_freq_for_midi_note(last_muse_note));
+ play_note(compute_freq_for_midi_note(muse_note), 0xF);
+ last_muse_note = muse_note;
+ }
+ }
+ muse_counter = (muse_counter + 1) % muse_tempo;
+ }
+ #endif
+}
+
+bool music_mask_user(uint16_t keycode) {
+ switch (keycode) {
+ case RAISE:
+ case LOWER:
+ return false;
+ default:
+ return true;
+ }
+}
diff --git a/keyboards/planck/keymaps/jimmysjolund/readme.md b/keyboards/planck/keymaps/jimmysjolund/readme.md
new file mode 100644
index 000000000000..de9680b49851
--- /dev/null
+++ b/keyboards/planck/keymaps/jimmysjolund/readme.md
@@ -0,0 +1,2 @@
+# The Default Planck Layout
+
diff --git a/keyboards/planck/keymaps/jimmysjolund/rules.mk b/keyboards/planck/keymaps/jimmysjolund/rules.mk
new file mode 100644
index 000000000000..dcf16bef3994
--- /dev/null
+++ b/keyboards/planck/keymaps/jimmysjolund/rules.mk
@@ -0,0 +1 @@
+SRC += muse.c
diff --git a/keyboards/planck/keymaps/pjanx/config.h b/keyboards/planck/keymaps/pjanx/config.h
new file mode 100644
index 000000000000..b38db026e06c
--- /dev/null
+++ b/keyboards/planck/keymaps/pjanx/config.h
@@ -0,0 +1,49 @@
+/* Copyright 2015-2018 Jack Humbert
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#ifdef AUDIO_ENABLE
+ #define STARTUP_SONG SONG(PLANCK_SOUND)
+ // #define STARTUP_SONG SONG(NO_SOUND)
+
+ #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
+ SONG(COLEMAK_SOUND), \
+ SONG(DVORAK_SOUND) \
+ }
+#endif
+
+/*
+ * MIDI options
+ */
+
+/* enable basic MIDI features:
+ - MIDI notes can be sent when in Music mode is on
+*/
+
+#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+ - MIDI notes can be added to the keymap
+ - Octave shift and transpose
+ - Virtual sustain, portamento, and modulation wheel
+ - etc.
+*/
+//#define MIDI_ADVANCED
+
+// Most tactile encoders have detents every 4 stages
+#define ENCODER_RESOLUTION 4
+
diff --git a/keyboards/planck/keymaps/pjanx/keymap.c b/keyboards/planck/keymaps/pjanx/keymap.c
new file mode 100644
index 000000000000..cf2e52623d26
--- /dev/null
+++ b/keyboards/planck/keymaps/pjanx/keymap.c
@@ -0,0 +1,354 @@
+/* Copyright 2015-2017 Jack Humbert
+ * Copyright 2021 Přemysl Eric Janouch
+ *
+ * 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
+#include "muse.h"
+
+
+enum planck_layers {
+ _QWERTY,
+ _COLEMAK,
+ _DVORAK,
+ _LOWER,
+ _RAISE,
+ _PLOVER,
+ _ADJUST
+};
+
+enum planck_keycodes {
+ QWERTY = SAFE_RANGE,
+ COLEMAK,
+ DVORAK,
+ PLOVER,
+ BACKLIT,
+ EXT_PLV
+};
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |LCtrl | A | S | D | F | G | H | J | K | L | ; | " |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |LShift| Z | X | C | V | B | N | M | , | . | / |RShift|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Esc | Caps | LGUI | LAlt |Lower | Space |Raise | RAlt | Down | Up |Enter |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTY] = LAYOUT_planck_grid(
+ 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_LCTL, 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_RSFT,
+ KC_ESC, KC_CAPS, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_RALT, KC_DOWN, KC_UP, KC_ENT
+),
+
+/* Colemak
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Esc | A | R | S | T | D | H | N | E | I | O | " |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_COLEMAK] = LAYOUT_planck_grid(
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
+ 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 ,
+ BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+),
+
+/* Dvorak
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Esc | A | O | E | U | I | D | H | T | N | S | / |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_DVORAK] = LAYOUT_planck_grid(
+ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
+ KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
+ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT ,
+ BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+),
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Ins |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |RCtrl | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | RGUI | | | | | | Left | Vol- | Vol+ | Right|
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LOWER] = LAYOUT_planck_grid(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_INS,
+ KC_RCTL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______,
+ _______, KC_RGUI, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_VOLD, KC_VOLU, KC_RGHT
+),
+
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |RCtrl | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | PgDn | PgUp | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | App | | | | | | Left | Vol- | Vol+ | Right|
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RAISE] = LAYOUT_planck_grid(
+ 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_RCTL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGDN, KC_PGUP, _______,
+ _______, KC_APP, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_VOLD, KC_VOLU, KC_RGHT
+),
+
+/* Plover layer (http://opensteno.org)
+ * ,-----------------------------------------------------------------------------------.
+ * | # | # | # | # | # | # | # | # | # | # | # | # |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | S | T | P | H | * | * | F | P | L | T | D |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | S | K | W | R | * | * | R | B | G | S | Z |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Exit | | | A | O | | E | U | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_PLOVER] = LAYOUT_planck_grid(
+ KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 ,
+ XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
+ XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX
+),
+
+/* Adjust (Lower + Raise)
+ * v------------------------RGB CONTROL--------------------v
+ * ,-----------------------------------------------------------------------------------.
+ * | | Reset|Debug | RGB |RGBMOD| HUE+ | HUE- | SAT+ | SAT- |BRGTH+|BRGTH-| Del |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | |MUSmod|Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof|TermOn|TermOf| | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | M1 | M2 | M3 | | | | | <- | vv | ^^ | -> |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJUST] = LAYOUT_planck_grid(
+ _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______,
+ _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______,
+ KC_MS_BTN1, KC_MS_BTN2, KC_MS_BTN3, _______, _______, _______, _______, _______, KC_MS_LEFT, KC_MS_DOWN, KC_MS_UP, KC_MS_RIGHT
+)
+
+};
+
+#ifdef AUDIO_ENABLE
+ float plover_song[][2] = SONG(PLOVER_SOUND);
+ float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND);
+#endif
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case QWERTY:
+ if (record->event.pressed) {
+ print("mode just switched to qwerty and this is a huge string\n");
+ set_single_persistent_default_layer(_QWERTY);
+ }
+ return false;
+ break;
+ case COLEMAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_COLEMAK);
+ }
+ return false;
+ break;
+ case DVORAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_DVORAK);
+ }
+ return false;
+ break;
+ case BACKLIT:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+ #ifdef BACKLIGHT_ENABLE
+ backlight_step();
+ #endif
+ #ifdef KEYBOARD_planck_rev5
+ writePinLow(E6);
+ #endif
+ } else {
+ unregister_code(KC_RSFT);
+ #ifdef KEYBOARD_planck_rev5
+ writePinHigh(E6);
+ #endif
+ }
+ return false;
+ break;
+ case PLOVER:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ stop_all_notes();
+ PLAY_SONG(plover_song);
+ #endif
+ layer_off(_RAISE);
+ layer_off(_LOWER);
+ layer_off(_ADJUST);
+ layer_on(_PLOVER);
+ if (!eeconfig_is_enabled()) {
+ eeconfig_init();
+ }
+ keymap_config.raw = eeconfig_read_keymap();
+ keymap_config.nkro = 1;
+ eeconfig_update_keymap(keymap_config.raw);
+ }
+ return false;
+ break;
+ case EXT_PLV:
+ if (record->event.pressed) {
+ #ifdef AUDIO_ENABLE
+ PLAY_SONG(plover_gb_song);
+ #endif
+ layer_off(_PLOVER);
+ }
+ return false;
+ break;
+ }
+ return true;
+}
+
+bool muse_mode = false;
+uint8_t last_muse_note = 0;
+uint16_t muse_counter = 0;
+uint8_t muse_offset = 70;
+uint16_t muse_tempo = 50;
+
+bool encoder_update(bool clockwise) {
+ if (muse_mode) {
+ if (IS_LAYER_ON(_RAISE)) {
+ if (clockwise) {
+ muse_offset++;
+ } else {
+ muse_offset--;
+ }
+ } else {
+ if (clockwise) {
+ muse_tempo+=1;
+ } else {
+ muse_tempo-=1;
+ }
+ }
+ } else {
+ if (clockwise) {
+ #ifdef MOUSEKEY_ENABLE
+ tap_code(KC_MS_WH_DOWN);
+ #else
+ tap_code(KC_PGDN);
+ #endif
+ } else {
+ #ifdef MOUSEKEY_ENABLE
+ tap_code(KC_MS_WH_UP);
+ #else
+ tap_code(KC_PGUP);
+ #endif
+ }
+ }
+ return true;
+}
+
+bool dip_switch_update_user(uint8_t index, bool active) {
+ switch (index) {
+ case 0: {
+#ifdef AUDIO_ENABLE
+ static bool play_sound = false;
+#endif
+ if (active) {
+#ifdef AUDIO_ENABLE
+ if (play_sound) { PLAY_SONG(plover_song); }
+#endif
+ layer_on(_ADJUST);
+ } else {
+#ifdef AUDIO_ENABLE
+ if (play_sound) { PLAY_SONG(plover_gb_song); }
+#endif
+ layer_off(_ADJUST);
+ }
+#ifdef AUDIO_ENABLE
+ play_sound = true;
+#endif
+ break;
+ }
+ case 1:
+ if (active) {
+ muse_mode = true;
+ } else {
+ muse_mode = false;
+ }
+ }
+ return true;
+}
+
+void matrix_scan_user(void) {
+#ifdef AUDIO_ENABLE
+ if (muse_mode) {
+ if (muse_counter == 0) {
+ uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()];
+ if (muse_note != last_muse_note) {
+ stop_note(compute_freq_for_midi_note(last_muse_note));
+ play_note(compute_freq_for_midi_note(muse_note), 0xF);
+ last_muse_note = muse_note;
+ }
+ }
+ muse_counter = (muse_counter + 1) % muse_tempo;
+ } else {
+ if (muse_counter) {
+ stop_all_notes();
+ muse_counter = 0;
+ }
+ }
+#endif
+}
+
+bool music_mask_user(uint16_t keycode) {
+ switch (keycode) {
+ case RAISE:
+ case LOWER:
+ return false;
+ default:
+ return true;
+ }
+}
diff --git a/keyboards/planck/keymaps/pjanx/readme.md b/keyboards/planck/keymaps/pjanx/readme.md
new file mode 100644
index 000000000000..e53397847d6a
--- /dev/null
+++ b/keyboards/planck/keymaps/pjanx/readme.md
@@ -0,0 +1,2 @@
+# Modified Default Planck Layout
+
diff --git a/keyboards/planck/keymaps/pjanx/rules.mk b/keyboards/planck/keymaps/pjanx/rules.mk
new file mode 100644
index 000000000000..3a551bd429bc
--- /dev/null
+++ b/keyboards/planck/keymaps/pjanx/rules.mk
@@ -0,0 +1,2 @@
+SRC += muse.c
+MOUSEKEY_ENABLE = yes
diff --git a/keyboards/playkbtw/pk64rgb/config.h b/keyboards/playkbtw/pk64rgb/config.h
new file mode 100644
index 000000000000..0e63f9204d1d
--- /dev/null
+++ b/keyboards/playkbtw/pk64rgb/config.h
@@ -0,0 +1,99 @@
+/* Copyright 2021 Play Keyboard
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x706B // Play Keyboard
+#define PRODUCT_ID 0x3634
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Play Keyboard
+#define PRODUCT Play Keyboard 64 RGB
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 14
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { D7, D6, D5, D3, D2 }
+#define MATRIX_COL_PINS { B5, B6, C6, C7, F7, F6, F5, F4, F1, F0, B1, B2, B3, B7 }
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+#ifdef RGB_MATRIX_ENABLE
+ #define RGB_MATRIX_KEYPRESSES
+ #define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+ #define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
+ #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 160
+ #define RGB_MATRIX_LED_PROCESS_LIMIT 20
+ #define RGB_MATRIX_LED_FLUSH_LIMIT 26
+ #define DRIVER_ADDR_1 0b1010000
+ #define DRIVER_COUNT 1
+ #define DRIVER_LED_TOTAL 64
+
+
+#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+#define DISABLE_RGB_MATRIX_BAND_SAT
+#define DISABLE_RGB_MATRIX_BAND_VAL
+#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+#endif
+
+#define RGB_DI_PIN B0
+#ifdef RGB_DI_PIN
+# define RGBLIGHT_EFFECT_BREATHING
+# define RGBLIGHT_EFFECT_RAINBOW_MOOD
+# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+# define RGBLIGHT_EFFECT_SNAKE
+# define RGBLIGHT_EFFECT_KNIGHT
+# define RGBLIGHT_EFFECT_CHRISTMAS
+# define RGBLIGHT_EFFECT_STATIC_GRADIENT
+// # define RGBLIGHT_EFFECT_ALTERNATING
+# define RGBLIGHT_EFFECT_TWINKLE
+# define RGBLED_NUM 18
+# define RGBLIGHT_HUE_STEP 5
+# define RGBLIGHT_SAT_STEP 5
+# define RGBLIGHT_VAL_STEP 5
+# define RGBLIGHT_SLEEP
+#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* VIA related config */
+#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 2
diff --git a/keyboards/playkbtw/pk64rgb/info.json b/keyboards/playkbtw/pk64rgb/info.json
new file mode 100644
index 000000000000..bc973f1b4cf0
--- /dev/null
+++ b/keyboards/playkbtw/pk64rgb/info.json
@@ -0,0 +1,83 @@
+{
+ "keyboard_name": "PK64RGB",
+ "url": "",
+ "maintainer": "yj7272098",
+ "layouts": {
+ "LAYOUT_64_ansi": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0, "w":2},
+
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+
+
+ {"x":0, "y":3, "w":2},
+ {"x":2, "y":3},
+ {"x":3, "y":3},
+ {"x":4, "y":3},
+ {"x":5, "y":3},
+ {"x":6, "y":3},
+ {"x":7, "y":3},
+ {"x":8, "y":3},
+ {"x":9, "y":3},
+ {"x":10, "y":3},
+ {"x":11, "y":3},
+ {"x":12, "y":3},
+ {"x":13, "y":3},
+ {"x":14, "y":3},
+
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"x":10, "y":4},
+ {"x":11, "y":4},
+ {"x":12, "y":4},
+ {"x":13, "y":4},
+ {"x":14, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/playkbtw/pk64rgb/keymaps/default/keymap.c b/keyboards/playkbtw/pk64rgb/keymaps/default/keymap.c
new file mode 100644
index 000000000000..9cfbc3c287fb
--- /dev/null
+++ b/keyboards/playkbtw/pk64rgb/keymaps/default/keymap.c
@@ -0,0 +1,44 @@
+/* Copyright 2021 Play Keyboard
+ *
+ * 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_64_ansi(
+ 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_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_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_DEL,
+ KC_LCTL, KC_LALT, KC_LWIN, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_64_ansi(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9 , KC_F10, KC_F11, KC_F12, _______,
+ _______, _______,_______,_______, _______,_______, _______, _______,_______,_______, _______,_______,_______, _______,
+ RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, _______, _______,_______, _______,
+ _______, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T, _______,_______,_______,_______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
+
+void rgb_matrix_indicators_user(void) {
+ if (layer_state_is(1)) {
+ rgb_matrix_set_color(77,0xFF, 0x80, 0x00);
+ }
+ if (host_keyboard_led_state().caps_lock) {
+ rgb_matrix_set_color(28, 0xFF, 0xFF, 0xFF);
+ }
+}
\ No newline at end of file
diff --git a/keyboards/playkbtw/pk64rgb/keymaps/default/readme.md b/keyboards/playkbtw/pk64rgb/keymaps/default/readme.md
new file mode 100644
index 000000000000..9875a6a41f71
--- /dev/null
+++ b/keyboards/playkbtw/pk64rgb/keymaps/default/readme.md
@@ -0,0 +1,3 @@
+# Default PK64RGB Layout
+
+This is the default 64_ansi layout that comes flashed on every PK64RGB.
\ No newline at end of file
diff --git a/keyboards/playkbtw/pk64rgb/keymaps/via/keymap.c b/keyboards/playkbtw/pk64rgb/keymaps/via/keymap.c
new file mode 100644
index 000000000000..3d18f60ddb3f
--- /dev/null
+++ b/keyboards/playkbtw/pk64rgb/keymaps/via/keymap.c
@@ -0,0 +1,55 @@
+/* Copyright 2021 Play Keyboard
+ *
+ * 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_64_ansi(
+ 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_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_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_DEL,
+ KC_LCTL, KC_LALT, KC_LWIN, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] =LAYOUT_64_ansi(
+ 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, KC_UP, KC_TRNS, KC_TRNS, RGB_SAI, RGB_SAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,RGB_VAI, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, KC_TRNS, RGB_MOD, RGB_HUI, RGB_VAD, RGB_HUD),
+ [2] = LAYOUT_64_ansi(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ [3] = LAYOUT_64_ansi(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+};
+
+void rgb_matrix_indicators_user(void) {
+ if (layer_state_is(1)) {
+ rgb_matrix_set_color(77,0xFF, 0x80, 0x00);
+ }
+ if (host_keyboard_led_state().caps_lock) {
+ rgb_matrix_set_color(28, 0xFF, 0xFF, 0xFF);
+ }
+}
\ No newline at end of file
diff --git a/keyboards/playkbtw/pk64rgb/keymaps/via/rules.mk b/keyboards/playkbtw/pk64rgb/keymaps/via/rules.mk
new file mode 100644
index 000000000000..f39e053c66ea
--- /dev/null
+++ b/keyboards/playkbtw/pk64rgb/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+SPACE_CADET_ENABLE = no
diff --git a/keyboards/playkbtw/pk64rgb/pk64rgb.c b/keyboards/playkbtw/pk64rgb/pk64rgb.c
new file mode 100644
index 000000000000..244a479672e7
--- /dev/null
+++ b/keyboards/playkbtw/pk64rgb/pk64rgb.c
@@ -0,0 +1,117 @@
+/* Copyright 2021 Play Keyboard
+ *
+ * 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 "pk64rgb.h"
+
+#ifdef RGB_MATRIX_ENABLE
+const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
+ /* Refer to IS31 manual for these locations
+ * driver
+ * | R location
+ * | | G location
+ * | | | B location
+ * | | | | */
+
+ {0, A_1, B_1, C_1},
+ {0, D_1, E_1, F_1},
+ {0, G_1, H_1, I_1},
+ {0, J_1, K_1, L_1},
+ {0, A_6, B_6, C_6},
+ {0, D_6, E_6, F_6},
+ {0, G_6, H_6, I_6},
+ {0, J_6, K_6, L_6},
+ {0, A_11, B_11, C_11},
+ {0, D_11, E_11, F_11},
+ {0, G_11, H_11, I_11},
+ {0, J_11, K_11, L_11},
+ {0, A_16, B_16, C_16},
+ {0, D_16, E_16, F_16},
+
+ {0, A_2, B_2, C_2},
+ {0, D_2, E_2, F_2},
+ {0, G_2, H_2, I_2},
+ {0, J_2, K_2, L_2},
+ {0, A_7, B_7, C_7},
+ {0, D_7, E_7, F_7},
+ {0, G_7, H_7, I_7},
+ {0, J_7, K_7, L_7},
+ {0, A_12, B_12, C_12},
+ {0, D_12, E_12, F_12},
+ {0, G_12, H_12, I_12},
+ {0, J_12, K_12, L_12},
+ {0, G_16, H_16, I_16},
+ {0, J_16, K_16, L_16},
+
+ {0, A_3, B_3, C_3},
+ {0, D_3, E_3, F_3},
+ {0, G_3, H_3, I_3},
+ {0, J_3, K_3, L_3},
+ {0, A_8, B_8, C_8},
+ {0, D_8, E_8, F_8},
+ {0, G_8, H_8, I_8},
+ {0, J_8, K_8, L_8},
+ {0, A_13, B_13, C_13},
+ {0, D_13, E_13, F_13},
+ {0, G_13, H_13, I_13},
+ {0, J_13, K_13, L_13},
+ {0, A_15, B_15, C_15},
+
+ {0, A_4, B_4, C_4},
+ {0, D_4, E_4, F_4},
+ {0, G_4, H_4, I_4},
+ {0, J_4, K_4, L_4},
+ {0, A_9, B_9, C_9},
+ {0, D_9, E_9, F_9},
+ {0, G_9, H_9, I_9},
+ {0, J_9, K_9, L_9},
+ {0, A_14, B_14, C_14},
+ {0, D_14, E_14, F_14},
+ {0, G_14, H_14, I_14},
+ {0, J_14, K_14, L_14},
+ {0, D_15, E_15, F_15},
+ {0, G_15, H_15, I_15},
+
+ {0, A_5, B_5, C_5},
+ {0, D_5, E_5, F_5},
+ {0, G_5, H_5, I_5},
+ {0, J_5, K_5, L_5},
+ {0, A_10, B_10, C_10},
+ {0, D_10, E_10, F_10},
+ {0, G_10, H_10, I_10},
+ {0, J_10, K_10, L_10},
+ {0, J_15, K_15, L_15}
+};
+
+led_config_t g_led_config = {{
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 },
+ { 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27 },
+ { 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40},
+ { 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54 },
+ { 55, 56, 57, 58, 59, 60, 61, 62, 63}
+}, {
+ { 0, 0 }, { 16, 0 }, { 32, 0 }, { 48, 0 }, { 64, 0 }, { 80, 0 }, { 96, 0 }, { 112, 0 }, { 128, 0 }, { 144, 0 }, { 160, 0 }, { 176, 0 }, { 192, 0 }, { 216, 0 },
+ { 4, 16 }, { 18, 16 }, { 34, 16 }, { 50, 16 }, { 66, 16 }, { 82, 16 }, { 98, 16 }, { 114, 16 }, { 130, 16 }, { 146, 16 }, { 162, 16 }, { 178, 16 }, { 194, 16 }, { 220, 16 },
+ { 6, 32 }, { 20, 32 }, { 36, 32 }, { 52, 32 }, { 68, 32 }, { 84, 32 }, { 100, 32 }, { 116, 32 }, { 132, 32 }, { 148, 32 }, { 164, 32 }, { 180, 32 }, { 212, 32 },
+ { 9, 48 }, { 27, 48 }, { 43, 48 }, { 59, 48 }, { 75, 48 }, { 91, 48 }, { 107, 48 }, { 123, 48 }, { 139, 48 }, { 155, 48 }, { 171, 48 }, { 187, 48 }, { 203, 48 }, { 219, 48 },
+ { 2, 64 }, { 16, 64 }, { 32, 64 }, { 64, 64 }, { 114, 64 }, { 130, 64 }, { 146, 64 }, { 204, 64 }, { 224, 64 }
+}, {
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 1, 1, 4, 1, 1, 4, 4, 4,
+}};
+#endif
\ No newline at end of file
diff --git a/keyboards/playkbtw/pk64rgb/pk64rgb.h b/keyboards/playkbtw/pk64rgb/pk64rgb.h
new file mode 100644
index 000000000000..be0ee0a011c6
--- /dev/null
+++ b/keyboards/playkbtw/pk64rgb/pk64rgb.h
@@ -0,0 +1,33 @@
+/* Copyright 2021 Play Keyboard
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_64_ansi( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
+ K40, K41, K42, K45, K48, K4A, K4B, K4C, K4D \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, KC_NO }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
+ { K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, K48, K4A, K4B, K4C, K4D } \
+}
diff --git a/keyboards/playkbtw/pk64rgb/readme.md b/keyboards/playkbtw/pk64rgb/readme.md
new file mode 100644
index 000000000000..29871af7a6f0
--- /dev/null
+++ b/keyboards/playkbtw/pk64rgb/readme.md
@@ -0,0 +1,25 @@
+# Play Keyboard 64RGB
+
+![PK64RGB](https://cdn.store-assets.com/s/409567/i/25281841.png)
+
+A 60% RGB hotswap keyboard PCB made by Play Keyboard.
+
+* Keyboard Maintainer: [Barry Huang](https://github.com/yj7272098)
+* Hardware Supported: Play Keyboard 64 RGB
+* Hardware Availability: [Play Keyboard](http://play-keyboard.store/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make playkbtw/pk64rgb:default
+
+## 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 `RESET` if it is available
+
+You can get into bootloader by pressing the reset button from the back of PCB.
+
+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).
\ No newline at end of file
diff --git a/keyboards/playkbtw/pk64rgb/rules.mk b/keyboards/playkbtw/pk64rgb/rules.mk
new file mode 100644
index 000000000000..b7e077924bd7
--- /dev/null
+++ b/keyboards/playkbtw/pk64rgb/rules.mk
@@ -0,0 +1,28 @@
+# 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 = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+RGB_MATRIX_ENABLE = yes # Use RGB matrix
+RGB_MATRIX_DRIVER = IS31FL3733
+
+AUDIO_ENABLE = no # Audio output
+
+LAYOUTS = 64_ansi
+
+LTO_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/ploopyco/trackball_nano/readme.md b/keyboards/ploopyco/trackball_nano/readme.md
index 8a293602a8e2..a82b3bc71111 100644
--- a/keyboards/ploopyco/trackball_nano/readme.md
+++ b/keyboards/ploopyco/trackball_nano/readme.md
@@ -2,7 +2,7 @@
# Ploopy Trackball Nano
-![Ploopyco Trackball Nano](https://www.ploopy.co/uploads/b/113cb4122f867acc306a72a2741c5237a9b1d0db13abfe4e8e394cd466c4a311/_MG_7710_1614037372.jpg)
+![Ploopyco Trackball Nano](https://ploopy.co/wp-content/uploads/2021/06/2.jpg)
It's a DIY, QMK Powered Trackball...Nano!
@@ -28,7 +28,7 @@ Occasionally, new revisions of the PCB will be released. Every board comes with
Match the firmware that you flash onto the board with the designator on the board.
-# Customzing your Ploopy Nano Trackball
+# Customizing your Ploopy Nano Trackball
You can change the DPI/CPI or speed of the trackball by calling `adns_set_cpi` at any time. Additionally, there is a `DPI_CONFIG` macro that will cycle through an array of options for the DPI. This is set to 375, 750, and 1375, but can be changed. 750 is the default.
@@ -51,4 +51,4 @@ When flashing the bootloader, use the following fuse settings:
|----------|-------------|
| Low | `0x5E` |
| High | `0x99` |
-| Extended | `0xC3` |
\ No newline at end of file
+| Extended | `0xC3` |
diff --git a/keyboards/pluckey/config.h b/keyboards/pluckey/config.h
new file mode 100644
index 000000000000..295fe93a8536
--- /dev/null
+++ b/keyboards/pluckey/config.h
@@ -0,0 +1,90 @@
+/*
+Copyright 2021 floookay
+
+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 .
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xF100
+#define PRODUCT_ID 0x91CE
+#define DEVICE_VER 0x0001
+#define MANUFACTURER floookay
+#define PRODUCT pluckey
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 7
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { B4, F5, F6, B6, B5 }
+#define MATRIX_COL_PINS { D1, D0, D4, C6, D7, E6, F7 }
+#define UNUSED_PINS { F4, B1 }
+#define DIODE_DIRECTION COL2ROW
+
+/* encoder support */
+#define ENCODERS_PAD_A { B3 }
+#define ENCODERS_PAD_B { B2 }
+#define ENCODER_RESOLUTION 2
+#define ENCODERS_PAD_A_RIGHT { B2 }
+#define ENCODERS_PAD_B_RIGHT { B3 }
+#define ENCODER_RESOLUTION_RIGHT 2
+
+/* communication between sides */
+#define USE_SERIAL
+#define SOFT_SERIAL_PIN D2
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/pluckey/info.json b/keyboards/pluckey/info.json
new file mode 100644
index 000000000000..0a6bd1832dfd
--- /dev/null
+++ b/keyboards/pluckey/info.json
@@ -0,0 +1,149 @@
+{
+ "keyboard_name": "pluckey",
+ "url": "https://github.com/floookay/pluckey",
+ "maintainer": "floookay",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"x":3.5, "y":0},
+ {"x":15, "y":0},
+ {"x":2.5, "y":0.125},
+ {"x":4.5, "y":0.125},
+ {"x":14, "y":0.125},
+ {"x":16, "y":0.125},
+ {"x":5.5, "y":0.25},
+ {"x":6.5, "y":0.25},
+ {"x":12, "y":0.25},
+ {"x":13, "y":0.25},
+ {"x":0, "y":0.625, "w":1.5},
+ {"x":1.5, "y":0.625},
+ {"x":17, "y":0.625},
+ {"x":18, "y":0.625, "w":1.5},
+ {"x":3.5, "y":1.0},
+ {"x":15, "y":1.0},
+ {"x":2.5, "y":1.125},
+ {"x":4.5, "y":1.125},
+ {"x":14, "y":1.125},
+ {"x":16, "y":1.125},
+ {"x":5.5, "y":1.25},
+ {"x":6.5, "y":1.25},
+ {"x":12, "y":1.25},
+ {"x":13, "y":1.25},
+ {"x":0, "y":1.625, "w":1.5},
+ {"x":1.5, "y":1.625},
+ {"x":17, "y":1.625},
+ {"x":18, "y":1.625, "w":1.5},
+ {"x":3.5, "y":2},
+ {"x":15, "y":2},
+ {"x":2.5, "y":2.125},
+ {"x":4.5, "y":2.125},
+ {"x":14, "y":2.125},
+ {"x":16, "y":2.125},
+ {"x":5.5, "y":2.25},
+ {"x":6.5, "y":2.25},
+ {"x":12, "y":2.25},
+ {"x":13, "y":2.25},
+ {"x":0, "y":2.625, "w":1.5},
+ {"x":1.5, "y":2.625},
+ {"x":17, "y":2.625},
+ {"x":18, "y":2.625, "w":1.5},
+ {"x":6.5, "y":3.25},
+ {"x":12, "y":3.25},
+ {"x":3.5, "y":3},
+ {"x":15, "y":3},
+ {"x":2.5, "y":3.125},
+ {"x":4.5, "y":3.125},
+ {"x":14, "y":3.125},
+ {"x":16, "y":3.125},
+ {"x":5.5, "y":3.25},
+ {"x":13, "y":3.25},
+ {"x":0, "y":3.625, "w":1.5},
+ {"x":1.5, "y":3.625},
+ {"x":17, "y":3.625},
+ {"x":18, "y":3.625, "w":1.5},
+ {"x":7.5, "y":3.75},
+ {"x":11, "y":3.75},
+ {"x":3.5, "y":4},
+ {"x":15, "y":4},
+ {"x":2.5, "y":4.125},
+ {"x":4.5, "y":4.125},
+ {"x":14, "y":4.125},
+ {"x":16, "y":4.125},
+ {"x":5.75, "y":4.5, "w":1.5},
+ {"x":12.25, "y":4.5, "w":1.5},
+ {"x":7.25, "y":4.75},
+ {"x":11.25, "y":4.75}
+ ]
+ },
+ "LAYOUT_ergo": {
+ "layout": [
+ {"x":3.5, "y":0},
+ {"x":15, "y":0},
+ {"x":2.5, "y":0.125},
+ {"x":4.5, "y":0.125},
+ {"x":14, "y":0.125},
+ {"x":16, "y":0.125},
+ {"x":5.5, "y":0.25},
+ {"x":6.5, "y":0.25},
+ {"x":12, "y":0.25},
+ {"x":13, "y":0.25},
+ {"x":0, "y":0.625, "w":1.5},
+ {"x":1.5, "y":0.625},
+ {"x":17, "y":0.625},
+ {"x":18, "y":0.625, "w":1.5},
+ {"x":3.5, "y":1.0},
+ {"x":15, "y":1.0},
+ {"x":2.5, "y":1.125},
+ {"x":4.5, "y":1.125},
+ {"x":14, "y":1.125},
+ {"x":16, "y":1.125},
+ {"x":5.5, "y":1.25},
+ {"x":6.5, "y":1.25, "h":1.5},
+ {"x":12, "y":1.25, "h":1.5},
+ {"x":13, "y":1.25},
+ {"x":0, "y":1.625, "w":1.5},
+ {"x":1.5, "y":1.625},
+ {"x":17, "y":1.625},
+ {"x":18, "y":1.625, "w":1.5},
+ {"x":3.5, "y":2},
+ {"x":15, "y":2},
+ {"x":2.5, "y":2.125},
+ {"x":4.5, "y":2.125},
+ {"x":14, "y":2.125},
+ {"x":16, "y":2.125},
+ {"x":5.5, "y":2.25},
+ {"x":13, "y":2.25},
+ {"x":0, "y":2.625, "w":1.5},
+ {"x":1.5, "y":2.625},
+ {"x":17, "y":2.625},
+ {"x":18, "y":2.625, "w":1.5},
+ {"x":6.5, "y":2.75, "h":1.5},
+ {"x":12, "y":2.75, "h":1.5},
+ {"x":3.5, "y":3},
+ {"x":15, "y":3},
+ {"x":2.5, "y":3.125},
+ {"x":4.5, "y":3.125},
+ {"x":14, "y":3.125},
+ {"x":16, "y":3.125},
+ {"x":5.5, "y":3.25},
+ {"x":13, "y":3.25},
+ {"x":0, "y":3.625, "w":1.5},
+ {"x":1.5, "y":3.625},
+ {"x":17, "y":3.625},
+ {"x":18, "y":3.625, "w":1.5},
+ {"x":7.5, "y":3.75},
+ {"x":11, "y":3.75},
+ {"x":3.5, "y":4},
+ {"x":15, "y":4},
+ {"x":2.5, "y":4.125},
+ {"x":4.5, "y":4.125},
+ {"x":14, "y":4.125},
+ {"x":16, "y":4.125},
+ {"x":5.75, "y":4.5, "w":1.5},
+ {"x":12.25, "y":4.5, "w":1.5},
+ {"x":7.25, "y":4.75},
+ {"x":11.25, "y":4.75}
+ ]
+ }
+ }
+}
diff --git a/keyboards/pluckey/keymaps/default/keymap.c b/keyboards/pluckey/keymaps/default/keymap.c
new file mode 100644
index 000000000000..31042fc6925c
--- /dev/null
+++ b/keyboards/pluckey/keymaps/default/keymap.c
@@ -0,0 +1,77 @@
+/* Copyright 2021 floookay
+ *
+ * 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
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+ M_ARROW
+};
+
+#define MO_LOW MO(_LOWER)
+#define MO_RAIS MO(_RAISE)
+#define MO_ADJU MO(_ADJUST)
+#define MO_CURR _______
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [_BASE] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LPRN, KC_RPRN, 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_LCBR, KC_HOME, KC_END, KC_RCBR, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LGUI, KC_LALT, MO_LOW, KC_SPC, KC_BSPC, KC_ENT, KC_SPC, MO_RAIS, KC_RALT, KC_MEH
+ ),
+ [_LOWER] = LAYOUT(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_PSCR,
+ _______, _______, _______, _______, KC_PIPE, KC_UNDS, KC_LPRN, KC_RPRN, KC_PLUS, KC_PIPE, _______, _______, _______, _______,
+ _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_LPRN, KC_RPRN, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
+ _______, _______, _______, _______, _______, _______, M_ARROW, KC_PGUP, KC_PGDN, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, MO_CURR, _______, KC_DEL, _______, _______, MO_ADJU, _______, _______
+ ),
+ [_RAISE] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, _______, _______,
+ _______, _______, _______, KC_VOLU, _______, _______, KC_LPRN, KC_RPRN, _______, KC_BTN4, KC_UP, KC_BTN5, _______, _______,
+ _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_LPRN, KC_RPRN, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, _______,
+ _______, _______, _______, KC_VOLD, _______, _______, M_ARROW, KC_PGUP, KC_PGDN, _______, _______, _______, KC_PGDN, _______, _______, _______,
+ _______, _______, MO_ADJU, _______, KC_DEL, _______, _______, MO_CURR, _______, _______
+ ),
+ [_ADJUST] = LAYOUT(
+ KC_SLEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_U, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_L, KC_WH_D, KC_WH_R, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, KC_CLR, _______, _______, _______, _______, _______
+ )
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case M_ARROW:
+ if (record->event.pressed) {
+ SEND_STRING("->");
+ }
+ break;
+ }
+ return true;
+}
diff --git a/keyboards/pluckey/keymaps/default/readme.md b/keyboards/pluckey/keymaps/default/readme.md
new file mode 100644
index 000000000000..d94d03e5887b
--- /dev/null
+++ b/keyboards/pluckey/keymaps/default/readme.md
@@ -0,0 +1,4 @@
+# Default keymap
+
+![keymap](https://gist.githubusercontent.com/floookay/ea7313862e407c9b5aaea3d6ed3ce233/raw/0a37fe682f76bbaa55cbc56527e4666bedbf5761/layout.png)
+[Keyboard-Layout-Editor](http://www.keyboard-layout-editor.com/#/gists/13c9d00bd0c0c9e3fe3b3d8d98672ef9) [(raw)](https://gist.github.com/floookay/13c9d00bd0c0c9e3fe3b3d8d98672ef9)
diff --git a/keyboards/pluckey/pluckey.c b/keyboards/pluckey/pluckey.c
new file mode 100644
index 000000000000..d9025726fd59
--- /dev/null
+++ b/keyboards/pluckey/pluckey.c
@@ -0,0 +1,38 @@
+/* Copyright 2021 floookay
+ *
+ * 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 "pluckey.h"
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (index == 0) {
+ if (clockwise) {
+ tap_code_delay(KC_VOLU, 10);
+ } else {
+ tap_code_delay(KC_VOLD, 10);
+ }
+ }
+ else if (index == 1) {
+ if (clockwise) {
+ tap_code(KC_WH_U);
+ } else {
+ tap_code(KC_WH_D);
+ }
+ }
+ return true;
+}
+#endif
diff --git a/keyboards/pluckey/pluckey.h b/keyboards/pluckey/pluckey.h
new file mode 100644
index 000000000000..628a89baa9a1
--- /dev/null
+++ b/keyboards/pluckey/pluckey.h
@@ -0,0 +1,46 @@
+/* Copyright 2021 floookay
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is 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.
+ */
+#define LAYOUT( \
+ l00, l01, l02, l03, l04, l05, l06, r00, r01, r02, r03, r04, r05, r06, \
+ l10, l11, l12, l13, l14, l15, l16, r10, r11, r12, r13, r14, r15, r16, \
+ l20, l21, l22, l23, l24, l25, l26, r20, r21, r22, r23, r24, r25, r26, \
+ l30, l31, l32, l33, l34, l35, l36, l41, r45, r30, r31, r32, r33, r34, r35, r36, \
+ l42, l43, l44, l45, l46, r40, r41, r42, r43, r44 \
+){ \
+ { l00, l01, l02, l03, l04, l05, l06 }, \
+ { l10, l11, l12, l13, l14, l15, l16 }, \
+ { l20, l21, l22, l23, l24, l25, l26 }, \
+ { l30, l31, l32, l33, l34, l35, l36 }, \
+ { KC_NO, l41, l42, l43, l44, l45, l46 }, \
+ { r06, r05, r04, r03, r02, r01, r00 }, \
+ { r16, r15, r14, r13, r12, r11, r10 }, \
+ { r26, r25, r24, r23, r22, r21, r20 }, \
+ { r36, r35, r34, r33, r32, r31, r30 }, \
+ { KC_NO, r45, r44, r43, r42, r41, r40 } \
+}
diff --git a/keyboards/pluckey/readme.md b/keyboards/pluckey/readme.md
new file mode 100644
index 000000000000..b0a1af99b88a
--- /dev/null
+++ b/keyboards/pluckey/readme.md
@@ -0,0 +1,19 @@
+# Pluckey
+
+![pluckey](https://gist.githubusercontent.com/floookay/ea7313862e407c9b5aaea3d6ed3ce233/raw/1757078b1adf7ac4d51d74f445107bdb46e013a3/sandwich%2520angle.jpg)
+
+The pluckey is an ergodox like split keyboard with moderate columnal stagger and a horizontal space key.
+
+* Keyboard Maintainer: [floookay](https://github.com/floookay)
+* Hardware Supported: pluckey pcbs with pro micro controllers
+* Hardware Availability: [pcb & case files](https://github.com/floookay/pluckey)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make pluckey:default
+
+Flashing example for this keyboard:
+
+ make pluckey: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).
diff --git a/keyboards/pluckey/rules.mk b/keyboards/pluckey/rules.mk
new file mode 100644
index 000000000000..4f4954434b29
--- /dev/null
+++ b/keyboards/pluckey/rules.mk
@@ -0,0 +1,23 @@
+# 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
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes
+SPLIT_KEYBOARD = yes
diff --git a/keyboards/plx/info.json b/keyboards/plx/info.json
index a338f1de2c6d..47f73ada61c0 100644
--- a/keyboards/plx/info.json
+++ b/keyboards/plx/info.json
@@ -1,10 +1,219 @@
{
- "keyboard_name": "PLX",
- "url": "https://peac.design/",
- "maintainer": "2Moons",
+ "keyboard_name": "PLX",
+ "url": "https://peac.design/",
+ "maintainer": "2Moons-JP",
+ "layout_aliases": {
+ "LAYOUT": "LAYOUT_60_ansi_tsangan"
+ },
"layouts": {
- "LAYOUT": {
- "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.25}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.25}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Win", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}]
+ "LAYOUT_60_ansi_tsangan": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2@", "x":2, "y":0},
+ {"label":"3#", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":7, "y":0},
+ {"label":"8*", "x":8, "y":0},
+ {"label":"9(", "x":9, "y":0},
+ {"label":"0)", "x":10, "y":0},
+ {"label":"-_", "x":11, "y":0},
+ {"label":"=+", "x":12, "y":0},
+ {"label":"Backspace", "x":13, "y":0, "w":2},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[{", "x":11.5, "y":1},
+ {"label":"]}", "x":12.5, "y":1},
+ {"label":"\\|", "x":13.5, "y":1, "w":1.5},
+
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";:", "x":10.75, "y":2},
+ {"label":"'\"", "x":11.75, "y":2},
+ {"label":"Enter", "x":12.75, "y":2, "w":2.25},
+
+ {"label":"Shift", "x":0, "y":3, "w":2.25},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",<", "x":9.25, "y":3},
+ {"label":".>", "x":10.25, "y":3},
+ {"label":"/?", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":2.75},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.5},
+ {"label":"Win", "x":1.5, "y":4},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.5},
+ {"label":"Space", "x":4, "y":4, "w":7},
+ {"label":"Alt", "x":11, "y":4, "w":1.5},
+ {"label":"Win", "x":12.5, "y":4},
+ {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}
+ ]
+ },
+ "LAYOUT_60_iso_tsangan": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2\"", "x":2, "y":0},
+ {"label":"3\u00a3", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":7, "y":0},
+ {"label":"8*", "x":8, "y":0},
+ {"label":"9(", "x":9, "y":0},
+ {"label":"0)", "x":10, "y":0},
+ {"label":"-_", "x":11, "y":0},
+ {"label":"=+", "x":12, "y":0},
+ {"label":"Backspace", "x":13, "y":0, "w":2},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[{", "x":11.5, "y":1},
+ {"label":"]}", "x":12.5, "y":1},
+
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";:", "x":10.75, "y":2},
+ {"label":"'@", "x":11.75, "y":2},
+ {"label":"#~", "x":12.75, "y":2},
+ {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2},
+
+ {"label":"Shift", "x":0, "y":3, "w":1.25},
+ {"label":"\\|", "x":1.25, "y":3},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",<", "x":9.25, "y":3},
+ {"label":".>", "x":10.25, "y":3},
+ {"label":"/?", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":2.75},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.5},
+ {"label":"Win", "x":1.5, "y":4},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.5},
+ {"label":"Space", "x":4, "y":4, "w":7},
+ {"label":"Alt", "x":11, "y":4, "w":1.5},
+ {"label":"Win", "x":12.5, "y":4},
+ {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}
+ ]
+ },
+ "LAYOUT_all": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2@", "x":2, "y":0},
+ {"label":"3#", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":7, "y":0},
+ {"label":"8*", "x":8, "y":0},
+ {"label":"9(", "x":9, "y":0},
+ {"label":"0)", "x":10, "y":0},
+ {"label":"-_", "x":11, "y":0},
+ {"label":"=+", "x":12, "y":0},
+ {"label":"Backspace", "x":13, "y":0},
+ {"label":"Backspace", "x":14, "y":0},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[{", "x":11.5, "y":1},
+ {"label":"]}", "x":12.5, "y":1},
+ {"label":"\\|", "x":13.5, "y":1, "w":1.5},
+
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";:", "x":10.75, "y":2},
+ {"label":"'\"", "x":11.75, "y":2},
+ {"label":"#~", "x":12.75, "y":2},
+ {"label":"Enter", "x":13.75, "y":2, "w":1.25},
+
+ {"label":"Shift", "x":0, "y":3, "w":1.25},
+ {"label":"\\|", "x":1.25, "y":3},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",<", "x":9.25, "y":3},
+ {"label":".>", "x":10.25, "y":3},
+ {"label":"/?", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":1.75},
+ {"label":"Fn", "x":14, "y":3},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.5},
+ {"label":"Win", "x":1.5, "y":4},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.5},
+ {"label":"Space", "x":4, "y":4, "w":7},
+ {"label":"Alt", "x":11, "y":4, "w":1.5},
+ {"label":"Win", "x":12.5, "y":4},
+ {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}
+ ]
}
}
-}
\ No newline at end of file
+}
diff --git a/keyboards/plx/keymaps/default/keymap.c b/keyboards/plx/keymaps/default/keymap.c
index 9702b27bd23e..31273405f83d 100644
--- a/keyboards/plx/keymaps/default/keymap.c
+++ b/keyboards/plx/keymaps/default/keymap.c
@@ -20,30 +20,31 @@
enum layer_names {
_BASE,
_FN,
- _MEDIA };
+ _MEDIA
+};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_BASE] = LAYOUT(
- 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_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_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
- ),
+ [_BASE] = LAYOUT_60_ansi_tsangan(
+ 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_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_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
+ ),
- [_FN] = LAYOUT(
- 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, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______
- ),
+ [_FN] = LAYOUT_60_ansi_tsangan(
+ 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, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ ),
- [_MEDIA] = LAYOUT(
- 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, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______
- )
+ [_MEDIA] = LAYOUT_60_ansi_tsangan(
+ 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, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ )
};
diff --git a/keyboards/plx/keymaps/default_all/keymap.c b/keyboards/plx/keymaps/default_all/keymap.c
index 40350c4759c7..cf460e52340a 100644
--- a/keyboards/plx/keymaps/default_all/keymap.c
+++ b/keyboards/plx/keymaps/default_all/keymap.c
@@ -20,30 +20,31 @@
enum layer_names {
_BASE,
_FN,
- _MEDIA };
+ _MEDIA
+};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_BASE] = LAYOUT(
- 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_HOME,
- 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_BSLS, KC_ENT,
- KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN),
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
- ),
+ [_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_HOME,
+ 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_BSLS, KC_ENT,
+ KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
+ ),
- [_FN] = LAYOUT(
- 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, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______
- ),
+ [_FN] = 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, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ ),
- [_MEDIA] = LAYOUT(
- 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, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______
- )
+ [_MEDIA] = 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, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ )
};
diff --git a/keyboards/plx/keymaps/via/keymap.c b/keyboards/plx/keymaps/via/keymap.c
index e988833c2ece..cf460e52340a 100644
--- a/keyboards/plx/keymaps/via/keymap.c
+++ b/keyboards/plx/keymaps/via/keymap.c
@@ -20,31 +20,31 @@
enum layer_names {
_BASE,
_FN,
- _MEDIA,
+ _MEDIA
};
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_HOME,
- 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_BSLS, KC_ENT,
- KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN),
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
- ),
+ [_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_HOME,
+ 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_BSLS, KC_ENT,
+ KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
+ ),
- [_FN] = 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, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______
- ),
+ [_FN] = 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, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ ),
- [_MEDIA] = 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, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______
- )
+ [_MEDIA] = 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, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ )
};
diff --git a/keyboards/plx/plx.h b/keyboards/plx/plx.h
index 9776905f8047..22d7bd021388 100644
--- a/keyboards/plx/plx.h
+++ b/keyboards/plx/plx.h
@@ -17,7 +17,21 @@
#include "quantum.h"
-#define XXX KC_NO//readabilty
+#define XXX KC_NO // readability
+
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───────┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0E │ │0D │ 2u Backspace
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ └─┬─────┤
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │ │ │
+ * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ┌──┴┐2D │ ISO Enter
+ * LShift │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D │ │2C │ │
+ * ┌────────┐ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌─┴───┴────┤
+ * │30 │ │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │ │3C │ 2.75u RShift
+ * └────────┘ ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ └──────────┘
+ * │40 │41 │42 │46 │4B │4C │4D │
+ * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
+ */
/* This a shortcut to help you visually see your layout.
*
@@ -27,7 +41,7 @@
* The second converts the arguments into a two-dimensional array which
* represents the switch matrix.
*/
-#define LAYOUT( \
+#define LAYOUT_60_ansi_tsangan( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2D, \
@@ -42,6 +56,21 @@
{ k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, XXX, k4B, k4C, k4D} \
}
+#define LAYOUT_60_iso_tsangan( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, \
+ k40, k41, k42, k46, k4B, k4C, k4D \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, XXX}, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, XXX}, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D}, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, XXX}, \
+ { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, XXX, k4B, k4C, k4D} \
+}
+
#define LAYOUT_all( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
diff --git a/keyboards/plx/rules.mk b/keyboards/plx/rules.mk
index a3ee6657564c..419033f64c96 100644
--- a/keyboards/plx/rules.mk
+++ b/keyboards/plx/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
diff --git a/keyboards/preonic/rev3_drop/matrix.c b/keyboards/preonic/rev3_drop/matrix.c
index 392997e0a52c..07171a39e9d1 100644
--- a/keyboards/preonic/rev3_drop/matrix.c
+++ b/keyboards/preonic/rev3_drop/matrix.c
@@ -24,13 +24,15 @@
#include "debug.h"
#include "matrix.h"
+typedef uint16_t matrix_col_t;
+
/*
* col: { B11, B10, B2, B1, A7, B0 }
* row: { A10, A9, A8, B15, C13, C14, C15, A2 }
*/
/* matrix state(1:on, 0:off) */
static matrix_row_t matrix[MATRIX_ROWS];
-static matrix_row_t matrix_debouncing[MATRIX_COLS];
+static matrix_col_t matrix_debouncing[MATRIX_COLS];
static bool debouncing = false;
static uint16_t debouncing_time = 0;
@@ -66,7 +68,7 @@ void matrix_init(void) {
palSetPadMode(GPIOA, 6, PAL_MODE_INPUT_PULLDOWN);
memset(matrix, 0, MATRIX_ROWS * sizeof(matrix_row_t));
- memset(matrix_debouncing, 0, MATRIX_COLS * sizeof(matrix_row_t));
+ memset(matrix_debouncing, 0, MATRIX_COLS * sizeof(matrix_col_t));
matrix_init_quantum();
}
@@ -74,7 +76,7 @@ void matrix_init(void) {
uint8_t matrix_scan(void) {
// actual matrix
for (int col = 0; col < MATRIX_COLS; col++) {
- matrix_row_t data = 0;
+ matrix_col_t data = 0;
// strobe col { B11, B10, B2, B1, A7, B0 }
switch (col) {
diff --git a/keyboards/projectcain/vault35/config.h b/keyboards/projectcain/vault35/config.h
new file mode 100644
index 000000000000..5eccd57172aa
--- /dev/null
+++ b/keyboards/projectcain/vault35/config.h
@@ -0,0 +1,149 @@
+/*
+Copyright 2021 projectcain
+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 .
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x6060
+#define DEVICE_VER 0x0001
+#define MANUFACTURER projectcain
+#define PRODUCT vault35
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 11
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { B4, D4, B0, C7 }
+#define MATRIX_COL_PINS { B1, D3, F0, F1, F4, F5, F6, F7, C6, B6, B5 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+//#define LED_NUM_LOCK_PIN B0
+//#define LED_CAPS_LOCK_PIN B1
+//#define LED_SCROLL_LOCK_PIN B2
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+//#define BACKLIGHT_PIN B7
+//#define BACKLIGHT_LEVELS 3
+//#define BACKLIGHT_BREATHING
+
+//#define RGB_DI_PIN E2
+//#ifdef RGB_DI_PIN
+//# define RGBLED_NUM 16
+//# define RGBLIGHT_HUE_STEP 8
+//# define RGBLIGHT_SAT_STEP 8
+//# define RGBLIGHT_VAL_STEP 8
+//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+/*== all animations enable ==*/
+//# define RGBLIGHT_ANIMATIONS
+/*== or choose animations ==*/
+//# define RGBLIGHT_EFFECT_BREATHING
+//# define RGBLIGHT_EFFECT_RAINBOW_MOOD
+//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+//# define RGBLIGHT_EFFECT_SNAKE
+//# define RGBLIGHT_EFFECT_KNIGHT
+//# define RGBLIGHT_EFFECT_CHRISTMAS
+//# define RGBLIGHT_EFFECT_STATIC_GRADIENT
+//# define RGBLIGHT_EFFECT_RGB_TEST
+//# define RGBLIGHT_EFFECT_ALTERNATING
+/*== customize breathing effect ==*/
+/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+/*==== use exp() and sin() ====*/
+//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+//#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
\ No newline at end of file
diff --git a/keyboards/projectcain/vault35/info.json b/keyboards/projectcain/vault35/info.json
new file mode 100644
index 000000000000..e842e35e41a5
--- /dev/null
+++ b/keyboards/projectcain/vault35/info.json
@@ -0,0 +1,22 @@
+{
+ "keyboard_name": "Vault 35",
+ "url": "",
+ "maintainer": "projectcain",
+ "layouts": {
+ "LAYOUT_split_4space": {
+ "layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"Y", "x":5, "y":0}, {"label":"U", "x":6, "y":0}, {"label":"I", "x":7, "y":0}, {"label":"O", "x":8, "y":0}, {"label":"P", "x":9, "y":0}, {"label":"BACK
SPACE", "x":10, "y":0}, {"label":"TAB", "x":0, "y":1, "w":1.25}, {"label":"S", "x":1.25, "y":1}, {"label":"D", "x":2.25, "y":1}, {"label":"F", "x":3.25, "y":1}, {"label":"G", "x":4.25, "y":1}, {"label":"H", "x":5.25, "y":1}, {"label":"J", "x":6.25, "y":1}, {"label":"K", "x":7.25, "y":1}, {"label":"L", "x":8.25, "y":1}, {"label":"ENTER", "x":9.25, "y":1, "w":1.75}, {"label":"SHIFT", "x":0, "y":2, "w":1.75}, {"label":"X", "x":1.75, "y":2}, {"label":"C", "x":2.75, "y":2}, {"label":"V", "x":3.75, "y":2}, {"label":"B", "x":4.75, "y":2}, {"label":"N", "x":5.75, "y":2}, {"label":"M", "x":6.75, "y":2}, {"label":"<", "x":7.75, "y":2}, {"label":">", "x":8.75, "y":2}, {"label":"SHIFT", "x":9.75, "y":2, "w":1.25}, {"label":"CTRL", "x":1.5, "y":3}, {"label":"LOWER", "x":2.5, "y":3, "w":1.25}, {"x":3.75, "y":3, "w":1.75}, {"x":5.5, "y":3, "w":1.75}, {"label":"RAISE", "x":7.25, "y":3, "w":1.25}, {"label":"ALT", "x":8.5, "y":3}]
+ },
+
+ "LAYOUT_split_3space": {
+ "layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"Y", "x":5, "y":0}, {"label":"U", "x":6, "y":0}, {"label":"I", "x":7, "y":0}, {"label":"O", "x":8, "y":0}, {"label":"P", "x":9, "y":0}, {"label":"BACK
SPACE", "x":10, "y":0}, {"label":"TAB", "x":0, "y":1, "w":1.25}, {"label":"S", "x":1.25, "y":1}, {"label":"D", "x":2.25, "y":1}, {"label":"F", "x":3.25, "y":1}, {"label":"G", "x":4.25, "y":1}, {"label":"H", "x":5.25, "y":1}, {"label":"J", "x":6.25, "y":1}, {"label":"K", "x":7.25, "y":1}, {"label":"L", "x":8.25, "y":1}, {"label":"ENTER", "x":9.25, "y":1, "w":1.75}, {"label":"SHIFT", "x":0, "y":2, "w":1.75}, {"label":"X", "x":1.75, "y":2}, {"label":"C", "x":2.75, "y":2}, {"label":"V", "x":3.75, "y":2}, {"label":"B", "x":4.75, "y":2}, {"label":"N", "x":5.75, "y":2}, {"label":"M", "x":6.75, "y":2}, {"label":"<", "x":7.75, "y":2}, {"label":">", "x":8.75, "y":2}, {"label":"SHIFT", "x":9.75, "y":2, "w":1.25}, {"label":"CTRL", "x":1.5, "y":3}, {"x":2.5, "y":3, "w":2.25}, {"label":"FN", "x":4.75, "y":3}, {"x":5.75, "y":3, "w":2.75}, {"label":"ALT", "x":8.5, "y":3}]
+ },
+
+ "LAYOUT_split_2space": {
+ "layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"Y", "x":5, "y":0}, {"label":"U", "x":6, "y":0}, {"label":"I", "x":7, "y":0}, {"label":"O", "x":8, "y":0}, {"label":"P", "x":9, "y":0}, {"label":"BACK
SPACE", "x":10, "y":0}, {"label":"TAB", "x":0, "y":1, "w":1.25}, {"label":"S", "x":1.25, "y":1}, {"label":"D", "x":2.25, "y":1}, {"label":"F", "x":3.25, "y":1}, {"label":"G", "x":4.25, "y":1}, {"label":"H", "x":5.25, "y":1}, {"label":"J", "x":6.25, "y":1}, {"label":"K", "x":7.25, "y":1}, {"label":"L", "x":8.25, "y":1}, {"label":"ENTER", "x":9.25, "y":1, "w":1.75}, {"label":"SHIFT", "x":0, "y":2, "w":1.75}, {"label":"X", "x":1.75, "y":2}, {"label":"C", "x":2.75, "y":2}, {"label":"V", "x":3.75, "y":2}, {"label":"B", "x":4.75, "y":2}, {"label":"N", "x":5.75, "y":2}, {"label":"M", "x":6.75, "y":2}, {"label":"<", "x":7.75, "y":2}, {"label":">", "x":8.75, "y":2}, {"label":"SHIFT", "x":9.75, "y":2, "w":1.25}, {"label":"CTRL", "x":1.5, "y":3}, {"x":2.5, "y":3, "w":3}, {"x":5.5, "y":3, "w":3}, {"label":"ALT", "x":8.5, "y":3}]
+ },
+
+ "LAYOUT_full_space": {
+ "layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"Y", "x":5, "y":0}, {"label":"U", "x":6, "y":0}, {"label":"I", "x":7, "y":0}, {"label":"O", "x":8, "y":0}, {"label":"P", "x":9, "y":0}, {"label":"BACK
SPACE", "x":10, "y":0}, {"label":"TAB", "x":0, "y":1, "w":1.25}, {"label":"S", "x":1.25, "y":1}, {"label":"D", "x":2.25, "y":1}, {"label":"F", "x":3.25, "y":1}, {"label":"G", "x":4.25, "y":1}, {"label":"H", "x":5.25, "y":1}, {"label":"J", "x":6.25, "y":1}, {"label":"K", "x":7.25, "y":1}, {"label":"L", "x":8.25, "y":1}, {"label":"ENTER", "x":9.25, "y":1, "w":1.75}, {"label":"SHIFT", "x":0, "y":2, "w":1.75}, {"label":"X", "x":1.75, "y":2}, {"label":"C", "x":2.75, "y":2}, {"label":"V", "x":3.75, "y":2}, {"label":"B", "x":4.75, "y":2}, {"label":"N", "x":5.75, "y":2}, {"label":"M", "x":6.75, "y":2}, {"label":"<", "x":7.75, "y":2}, {"label":">", "x":8.75, "y":2}, {"label":"SHIFT", "x":9.75, "y":2, "w":1.25}, {"label":"CTRL", "x":1.5, "y":3}, {"x":2.5, "y":3, "w":6}, {"label":"ALT", "x":8.5, "y":3}]
+ }
+ }
+}
diff --git a/keyboards/projectcain/vault35/keymaps/default/config.h b/keyboards/projectcain/vault35/keymaps/default/config.h
new file mode 100644
index 000000000000..35f670c86b42
--- /dev/null
+++ b/keyboards/projectcain/vault35/keymaps/default/config.h
@@ -0,0 +1,24 @@
+/* Copyright 2021 projectcain
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#define ENCODERS_PAD_A { D6 }
+#define ENCODERS_PAD_B { D7 }
+#define ENCODER_RESOLUTION 2
+#define COMBO_COUNT 2
+#define COMBO_TERM 50
+#define TAPPING_FORCE_HOLD
diff --git a/keyboards/projectcain/vault35/keymaps/default/keymap.c b/keyboards/projectcain/vault35/keymaps/default/keymap.c
new file mode 100644
index 000000000000..05fb05b76082
--- /dev/null
+++ b/keyboards/projectcain/vault35/keymaps/default/keymap.c
@@ -0,0 +1,66 @@
+
+ /* Copyright 2021 projectcain
+ *
+ * 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
+enum layers{
+ BASE,
+ NUM,
+ SYM,
+ META
+};
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [BASE] = LAYOUT_split_4space(
+
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOTE,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ LALT(KC_TAB), MO(1), SFT_T(KC_BSPC), KC_SPACE, MO(2), RESET
+ ),
+
+ [NUM] = LAYOUT_split_4space(
+
+ KC_PGUP, KC_HOME, KC_UP, KC_END, KC_WBAK, KC_PSLS, KC_7, KC_8, KC_9, KC_PMNS, KC_DEL,
+ KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_WFWD, KC_PAST, KC_4, KC_5, KC_6, KC_PPLS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0, KC_1, KC_2, KC_3, KC_PDOT,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RALT(KC_F4), RALT(KC_F4)
+ ),
+
+ [SYM] = LAYOUT_split_4space(
+
+ S(KC_GRV), KC_GRV, KC_BSLS, S(KC_BSLS), KC_TRNS, KC_TRNS, S(KC_MINS), KC_EQL, KC_TRNS, C(KC_W), C(KC_T),
+ S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), KC_SCLN, S(KC_SCLN),
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NUMLOCK, KC_TRNS
+ ),
+
+};
+
+
+enum combos {
+ KL_SLSH,
+ JK_MINUS
+};
+
+const uint16_t PROGMEM kl_combo[] = {KC_K, KC_L, COMBO_END};
+const uint16_t PROGMEM jk_combo[] = {KC_J, KC_K, COMBO_END};
+
+combo_t key_combos[COMBO_COUNT] = {
+ [KL_SLSH] = COMBO(kl_combo, S(KC_SLSH)),
+ [JK_MINUS] = COMBO(jk_combo, KC_MINUS)
+};
diff --git a/keyboards/projectcain/vault35/keymaps/default/readme.md b/keyboards/projectcain/vault35/keymaps/default/readme.md
new file mode 100644
index 000000000000..608072276767
--- /dev/null
+++ b/keyboards/projectcain/vault35/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for vault35
diff --git a/keyboards/projectcain/vault35/keymaps/default/rules.mk b/keyboards/projectcain/vault35/keymaps/default/rules.mk
new file mode 100644
index 000000000000..dca6713d4fa6
--- /dev/null
+++ b/keyboards/projectcain/vault35/keymaps/default/rules.mk
@@ -0,0 +1,2 @@
+ENCODER_ENABLE = yes
+COMBO_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/projectcain/vault35/readme.md b/keyboards/projectcain/vault35/readme.md
new file mode 100644
index 000000000000..88d3ebc73ebf
--- /dev/null
+++ b/keyboards/projectcain/vault35/readme.md
@@ -0,0 +1,21 @@
+# vault35
+
+![vault35](https://i.imgur.com/yw3Fvjxh.jpg)
+
+This is a 30% HHKB-style variant of the vault45 with several bottom row options and rotary encoder support.
+
+* Keyboard Maintainer: [projectcain](https://github.com/projectcain)
+* Hardware Supported: Vault 35 PCB
+* Hardware Availability: mechvault.net
+
+To reset the keyboard into bootloader mode, short the two pads labeled "Reset" on the left side of the pcb
+
+Make example for this keyboard (after setting up your build environment):
+
+ make projectcain/vault35:default
+
+Flashing example for this keyboard:
+
+ make projectcain/vault35: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).
diff --git a/keyboards/projectcain/vault35/rules.mk b/keyboards/projectcain/vault35/rules.mk
new file mode 100644
index 000000000000..9906266f4822
--- /dev/null
+++ b/keyboards/projectcain/vault35/rules.mk
@@ -0,0 +1,21 @@
+# 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
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/projectcain/vault35/vault35.c b/keyboards/projectcain/vault35/vault35.c
new file mode 100644
index 000000000000..2bb1675a1f84
--- /dev/null
+++ b/keyboards/projectcain/vault35/vault35.c
@@ -0,0 +1,29 @@
+/* Copyright 2021 projectcain
+ *
+ * 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 "vault35.h"
+
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (index == 0) { /* First encoder */
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ }
+ return true;
+}
\ No newline at end of file
diff --git a/keyboards/projectcain/vault35/vault35.h b/keyboards/projectcain/vault35/vault35.h
new file mode 100644
index 000000000000..af5577f3142e
--- /dev/null
+++ b/keyboards/projectcain/vault35/vault35.h
@@ -0,0 +1,80 @@
+/* Copyright 2021 projectcain
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is 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.
+ */
+
+#define LAYOUT_split_4space( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, \
+ K301, K302, K303, K305, K306, K307 \
+) \
+{ \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, KC_NO }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, KC_NO }, \
+ { KC_NO, K301, K302, K303, KC_NO, K305, K306, K307, KC_NO, KC_NO, KC_NO } \
+}
+
+#define LAYOUT_split_3space( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, \
+ K301, K303, K304, K305, K307 \
+) \
+{ \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, KC_NO }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, KC_NO }, \
+ { KC_NO, K301, KC_NO, K303, K304, K305, KC_NO, K307, KC_NO, KC_NO, KC_NO } \
+}
+
+#define LAYOUT_split_2space( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, \
+ K301, K303, K305, K307 \
+) \
+{ \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, KC_NO }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, KC_NO }, \
+ { KC_NO, K301, KC_NO, K303, KC_NO, K305, KC_NO, K307, KC_NO, KC_NO, KC_NO } \
+}
+
+#define LAYOUT_full_space( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, \
+ K301, K304, K307 \
+) \
+{ \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, KC_NO }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, KC_NO }, \
+ { KC_NO, K301, KC_NO, KC_NO, K304, KC_NO, KC_NO, K307, KC_NO, KC_NO, KC_NO } \
+}
diff --git a/keyboards/projectcain/vault45/info.json b/keyboards/projectcain/vault45/info.json
index c70600019204..de2f299b64d2 100644
--- a/keyboards/projectcain/vault45/info.json
+++ b/keyboards/projectcain/vault45/info.json
@@ -1,58 +1,29 @@
{
- "keyboard_name": "vault 45",
- "url": "",
- "maintainer": "projectcain",
- "layouts": {
- "LAYOUT": {
- "layout": [
- { "label": "Tab", "x": 0, "y": 0 },
- { "label": "Q", "x": 1, "y": 0 },
- { "label": "W", "x": 2, "y": 0 },
- { "label": "E", "x": 3, "y": 0 },
- { "label": "R", "x": 4, "y": 0 },
- { "label": "T", "x": 5, "y": 0 },
- { "label": "Y", "x": 6, "y": 0 },
- { "label": "U", "x": 7, "y": 0 },
- { "label": "I", "x": 8, "y": 0 },
- { "label": "O", "x": 9, "y": 0 },
- { "label": "P", "x": 10, "y": 0 },
- { "label": "Back
Space", "x": 11, "y": 0 },
- { "x": 12, "y": 0 },
- { "label": "Caps", "x": 0, "y": 1, "w": 1.25 },
- { "label": "A", "x": 1.25, "y": 1 },
- { "label": "S", "x": 2.25, "y": 1 },
- { "label": "D", "x": 3.25, "y": 1 },
- { "label": "F", "x": 4.25, "y": 1 },
- { "label": "G", "x": 5.25, "y": 1 },
- { "label": "H", "x": 6.25, "y": 1 },
- { "label": "J", "x": 7.25, "y": 1 },
- { "label": "K", "x": 8.25, "y": 1 },
- { "label": "L", "x": 9.25, "y": 1 },
- { "label": ":", "x": 10.25, "y": 1 },
- { "label": "Enter", "x": 11.25, "y": 1, "w": 1.75 },
- { "label": "Shift", "x": 0, "y": 2, "w": 1.75 },
- { "label": "Z", "x": 1.75, "y": 2 },
- { "label": "X", "x": 2.75, "y": 2 },
- { "label": "C", "x": 3.75, "y": 2 },
- { "label": "V", "x": 4.75, "y": 2 },
- { "label": "B", "x": 5.75, "y": 2 },
- { "label": "N", "x": 6.75, "y": 2 },
- { "label": "M", "x": 7.75, "y": 2 },
- { "label": "<", "x": 8.75, "y": 2 },
- { "label": ">", "x": 9.75, "y": 2 },
- { "label": "?", "x": 10.75, "y": 2 },
- { "label": "Shift", "x": 11.75, "y": 2, "w": 1.25 },
- { "label": "Hyper", "x": 0, "y": 3, "w": 1.25 },
- { "label": "Super", "x": 1.25, "y": 3 },
- { "label": "Meta", "x": 2.25, "y": 3, "w": 1.25 },
- { "label": "Alt", "x": 3.5, "y": 3, "w": 1.25 },
- { "x": 4.75, "y": 3, "w": 1.75 },
- { "x": 6.5, "y": 3, "w": 1.75 },
- { "label": "Meta", "x": 8.25, "y": 3, "w": 1.25 },
- { "label": "Super", "x": 9.5, "y": 3, "w": 1.25 },
- { "label": "Fn2", "x": 10.75, "y": 3 },
- { "label": "Ctrl", "x": 11.75, "y": 3, "w": 1.25 }
- ]
+ "keyboard_name": "Vault 45",
+ "url": "",
+ "maintainer": "projectcain",
+ "layout_aliases": {
+ "LAYOUT": "LAYOUT_all"
+ },
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [{"label":"ESC", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"DEL", "x":11, "y":0}, {"label":"BACK
SPACE", "x":12, "y":0}, {"label":"TAB", "x":0, "y":1, "w":1.25}, {"label":"A", "x":1.25, "y":1}, {"label":"S", "x":2.25, "y":1}, {"label":"D", "x":3.25, "y":1}, {"label":"F", "x":4.25, "y":1}, {"label":"G", "x":5.25, "y":1}, {"label":"H", "x":6.25, "y":1}, {"label":"J", "x":7.25, "y":1}, {"label":"K", "x":8.25, "y":1}, {"label":"L", "x":9.25, "y":1}, {"label":":", "x":10.25, "y":1}, {"label":"ENTER", "x":11.25, "y":1, "w":1.75}, {"label":"SHIFT", "x":0, "y":2, "w":1.75}, {"label":"Z", "x":1.75, "y":2}, {"label":"X", "x":2.75, "y":2}, {"label":"C", "x":3.75, "y":2}, {"label":"V", "x":4.75, "y":2}, {"label":"B", "x":5.75, "y":2}, {"label":"N", "x":6.75, "y":2}, {"label":"M", "x":7.75, "y":2}, {"label":"<", "x":8.75, "y":2}, {"label":">", "x":9.75, "y":2}, {"label":"?", "x":10.75, "y":2}, {"label":"SHIFT", "x":11.75, "y":2, "w":1.25}, {"label":"CTRL", "x":1.25, "y":3}, {"label":"ALT", "x":2.25, "y":3, "w":1.25}, {"label":"SYS", "x":3.5, "y":3, "w":1.25}, {"x":4.75, "y":3, "w":1.25}, {"x":6, "y":3}, {"x":7, "y":3, "w":1.25}, {"label":"FN", "x":8.25, "y":3, "w":1.25}, {"label":"ALT", "x":9.5, "y":3, "w":1.25}, {"label":"CTRL", "x":10.75, "y":3}]
+ },
+
+ "LAYOUT_split_4space": {
+ "layout": [{"label":"ESC", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"DEL", "x":11, "y":0}, {"label":"BACK
SPACE", "x":12, "y":0}, {"label":"TAB", "x":0, "y":1, "w":1.25}, {"label":"A", "x":1.25, "y":1}, {"label":"S", "x":2.25, "y":1}, {"label":"D", "x":3.25, "y":1}, {"label":"F", "x":4.25, "y":1}, {"label":"G", "x":5.25, "y":1}, {"label":"H", "x":6.25, "y":1}, {"label":"J", "x":7.25, "y":1}, {"label":"K", "x":8.25, "y":1}, {"label":"L", "x":9.25, "y":1}, {"label":":", "x":10.25, "y":1}, {"label":"ENTER", "x":11.25, "y":1, "w":1.75}, {"label":"SHIFT", "x":0, "y":2, "w":1.75}, {"label":"Z", "x":1.75, "y":2}, {"label":"X", "x":2.75, "y":2}, {"label":"C", "x":3.75, "y":2}, {"label":"V", "x":4.75, "y":2}, {"label":"B", "x":5.75, "y":2}, {"label":"N", "x":6.75, "y":2}, {"label":"M", "x":7.75, "y":2}, {"label":"<", "x":8.75, "y":2}, {"label":">", "x":9.75, "y":2}, {"label":"?", "x":10.75, "y":2}, {"label":"SHIFT", "x":11.75, "y":2, "w":1.25}, {"label":"CTRL", "x":1.25, "y":3}, {"label":"ALT", "x":2.25, "y":3, "w":1.25}, {"label":"SYS", "x":3.5, "y":3, "w":1.25}, {"x":4.75, "y":3, "w":1.75}, {"x":6.5, "y":3, "w":1.75}, {"label":"FN", "x":8.25, "y":3, "w":1.25}, {"label":"ALT", "x":9.5, "y":3, "w":1.25}, {"label":"CTRL", "x":10.75, "y":3}]
+ },
+
+ "LAYOUT_split_3space": {
+ "layout": [{"label":"ESC", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"DEL", "x":11, "y":0}, {"label":"BACK
SPACE", "x":12, "y":0}, {"label":"TAB", "x":0, "y":1, "w":1.25}, {"label":"A", "x":1.25, "y":1}, {"label":"S", "x":2.25, "y":1}, {"label":"D", "x":3.25, "y":1}, {"label":"F", "x":4.25, "y":1}, {"label":"G", "x":5.25, "y":1}, {"label":"H", "x":6.25, "y":1}, {"label":"J", "x":7.25, "y":1}, {"label":"K", "x":8.25, "y":1}, {"label":"L", "x":9.25, "y":1}, {"label":":", "x":10.25, "y":1}, {"label":"ENTER", "x":11.25, "y":1, "w":1.75}, {"label":"SHIFT", "x":0, "y":2, "w":1.75}, {"label":"Z", "x":1.75, "y":2}, {"label":"X", "x":2.75, "y":2}, {"label":"C", "x":3.75, "y":2}, {"label":"V", "x":4.75, "y":2}, {"label":"B", "x":5.75, "y":2}, {"label":"N", "x":6.75, "y":2}, {"label":"M", "x":7.75, "y":2}, {"label":"<", "x":8.75, "y":2}, {"label":">", "x":9.75, "y":2}, {"label":"?", "x":10.75, "y":2}, {"label":"SHIFT", "x":11.75, "y":2, "w":1.25}, {"label":"CTRL", "x":1.25, "y":3}, {"label":"ALT", "x":2.25, "y":3, "w":1.25}, {"x":3.5, "y":3, "w":2.25}, {"x":5.75, "y":3}, {"x":6.75, "y":3, "w":2.75}, {"label":"ALT", "x":9.5, "y":3, "w":1.25}, {"label":"CTRL", "x":10.75, "y":3}]
+ },
+
+ "LAYOUT_split_2space": {
+ "layout": [{"label":"ESC", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"DEL", "x":11, "y":0}, {"label":"BACK
SPACE", "x":12, "y":0}, {"label":"TAB", "x":0, "y":1, "w":1.25}, {"label":"A", "x":1.25, "y":1}, {"label":"S", "x":2.25, "y":1}, {"label":"D", "x":3.25, "y":1}, {"label":"F", "x":4.25, "y":1}, {"label":"G", "x":5.25, "y":1}, {"label":"H", "x":6.25, "y":1}, {"label":"J", "x":7.25, "y":1}, {"label":"K", "x":8.25, "y":1}, {"label":"L", "x":9.25, "y":1}, {"label":":", "x":10.25, "y":1}, {"label":"ENTER", "x":11.25, "y":1, "w":1.75}, {"label":"SHIFT", "x":0, "y":2, "w":1.75}, {"label":"Z", "x":1.75, "y":2}, {"label":"X", "x":2.75, "y":2}, {"label":"C", "x":3.75, "y":2}, {"label":"V", "x":4.75, "y":2}, {"label":"B", "x":5.75, "y":2}, {"label":"N", "x":6.75, "y":2}, {"label":"M", "x":7.75, "y":2}, {"label":"<", "x":8.75, "y":2}, {"label":">", "x":9.75, "y":2}, {"label":"?", "x":10.75, "y":2}, {"label":"SHIFT", "x":11.75, "y":2, "w":1.25}, {"label":"CTRL", "x":1.25, "y":3}, {"label":"ALT", "x":2.25, "y":3, "w":1.25}, {"x":3.5, "y":3, "w":3}, {"x":6.5, "y":3, "w":3}, {"label":"ALT", "x":9.5, "y":3, "w":1.25}, {"label":"CTRL", "x":10.75, "y":3}]
+ },
+
+ "LAYOUT_full_space": {
+ "layout": [{"label":"ESC", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"DEL", "x":11, "y":0}, {"label":"BACK
SPACE", "x":12, "y":0}, {"label":"TAB", "x":0, "y":1, "w":1.25}, {"label":"A", "x":1.25, "y":1}, {"label":"S", "x":2.25, "y":1}, {"label":"D", "x":3.25, "y":1}, {"label":"F", "x":4.25, "y":1}, {"label":"G", "x":5.25, "y":1}, {"label":"H", "x":6.25, "y":1}, {"label":"J", "x":7.25, "y":1}, {"label":"K", "x":8.25, "y":1}, {"label":"L", "x":9.25, "y":1}, {"label":":", "x":10.25, "y":1}, {"label":"ENTER", "x":11.25, "y":1, "w":1.75}, {"label":"SHIFT", "x":0, "y":2, "w":1.75}, {"label":"Z", "x":1.75, "y":2}, {"label":"X", "x":2.75, "y":2}, {"label":"C", "x":3.75, "y":2}, {"label":"V", "x":4.75, "y":2}, {"label":"B", "x":5.75, "y":2}, {"label":"N", "x":6.75, "y":2}, {"label":"M", "x":7.75, "y":2}, {"label":"<", "x":8.75, "y":2}, {"label":">", "x":9.75, "y":2}, {"label":"?", "x":10.75, "y":2}, {"label":"SHIFT", "x":11.75, "y":2, "w":1.25}, {"label":"CTRL", "x":1.25, "y":3}, {"label":"ALT", "x":2.25, "y":3, "w":1.25}, {"x":3.5, "y":3, "w":6}, {"label":"ALT", "x":9.5, "y":3, "w":1.25}, {"label":"CTRL", "x":10.75, "y":3}]
}
}
}
diff --git a/keyboards/projectcain/vault45/keymaps/default/keymap.c b/keyboards/projectcain/vault45/keymaps/default/keymap.c
index 9307370200a8..6955320e7783 100644
--- a/keyboards/projectcain/vault45/keymaps/default/keymap.c
+++ b/keyboards/projectcain/vault45/keymaps/default/keymap.c
@@ -21,25 +21,25 @@ enum layers{
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [BASE] = LAYOUT(
+ [BASE] = LAYOUT_split_4space(
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_F5,
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOTE, LT(SYM, KC_ENT),
RCTL_T(S(KC_9)), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, S(KC_0),
- LALT(KC_TAB), LALT(KC_TAB), MO(1), SFT_T(KC_BSPC), KC_SPACE, KC_SPACE, MO(2), KC_LGUI, G(KC_TAB)
+ LALT(KC_TAB), LALT(KC_TAB), MO(1), SFT_T(KC_BSPC), KC_SPACE, MO(2), KC_LGUI, G(KC_TAB)
),
- [NUM] = LAYOUT(
+ [NUM] = LAYOUT_split_4space(
KC_TRNS, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_WBAK, KC_PSLS, KC_7, KC_8, KC_9, KC_PMNS, KC_DEL, RESET,
KC_TRNS, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_WFWD, KC_PAST, KC_4, KC_5, KC_6, KC_PPLS, KC_TRNS,
KC_LBRC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0, KC_1, KC_2, KC_3, KC_PDOT, KC_RBRC,
- KC_PSCR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, S(KC_RCTRL), RALT(KC_F4), RALT(KC_F4)
+ KC_PSCR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, S(KC_RCTRL), RALT(KC_F4), RALT(KC_F4)
),
- [SYM] = LAYOUT(
+ [SYM] = LAYOUT_split_4space(
RGB_TOG, S(KC_GRV), KC_GRV, KC_BSLS, S(KC_BSLS), KC_TRNS, KC_TRNS, S(KC_MINS), KC_EQL, KC_TRNS, C(KC_W), C(KC_T), KC_TRNS,
KC_TRNS, S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), KC_SCLN, S(KC_SCLN), KC_TRNS,
S(KC_LBRC), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, S(KC_RBRC),
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_CAPSLOCK, KC_NUMLOCK, KC_TRNS
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_CAPSLOCK, KC_NUMLOCK, KC_TRNS
),
};
diff --git a/keyboards/projectcain/vault45/vault45.h b/keyboards/projectcain/vault45/vault45.h
index 031de0003a41..b1217d6d06a8 100644
--- a/keyboards/projectcain/vault45/vault45.h
+++ b/keyboards/projectcain/vault45/vault45.h
@@ -26,7 +26,8 @@
* The second converts the arguments into a two-dimensional array which
* represents the switch matrix.
*/
-#define LAYOUT( \
+
+#define LAYOUT_all( \
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, \
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K112, \
K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \
@@ -36,5 +37,54 @@
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012 }, \
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, KC_NO, K112 }, \
{ K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212 }, \
- { KC_NO, K301, K302, KC_NO, K304, K305, K306, K307, K308, KC_NO, K310, K311, KC_NO }, \
+ { KC_NO, K301, K302, KC_NO, K304, K305, K306, K307, K308, KC_NO, K310, K311, KC_NO } \
+}
+
+#define LAYOUT_split_4space( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K112, \
+ K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \
+ K301, K302, K304, K305, K307, K308, K310, K311 \
+) \
+{ \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, KC_NO, K112 }, \
+ { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212 }, \
+ { KC_NO, K301, K302, KC_NO, K304, K305, KC_NO, K307, K308, KC_NO, K310, K311, KC_NO } \
+}
+#define LAYOUT_split_3space( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K112, \
+ K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \
+ K301, K302, K305, K306, K307, K310, K311 \
+) \
+{ \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, KC_NO, K112 }, \
+ { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212 }, \
+ { KC_NO, K301, K302, KC_NO, KC_NO, K305, K306, K307, KC_NO, KC_NO, K310, K311, KC_NO } \
+}
+#define LAYOUT_split_2space( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K112, \
+ K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \
+ K301, K302, K305, K307, K310, K311 \
+) \
+{ \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, KC_NO, K112 }, \
+ { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212 }, \
+ { KC_NO, K301, K302, KC_NO, KC_NO, K305, KC_NO, K307, KC_NO, KC_NO, K310, K311, KC_NO } \
+}
+#define LAYOUT_full_space( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K112, \
+ K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \
+ K301, K302, K306, K310, K311 \
+) \
+{ \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, KC_NO, K112 }, \
+ { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212 }, \
+ { KC_NO, K301, K302, KC_NO, KC_NO, KC_NO, K306, KC_NO, KC_NO, KC_NO, K310, K311, KC_NO } \
}
diff --git a/keyboards/pteron36/info.json b/keyboards/pteron36/info.json
index b493879bf2d2..e191dc616fd6 100644
--- a/keyboards/pteron36/info.json
+++ b/keyboards/pteron36/info.json
@@ -1,13 +1,95 @@
{
"keyboard_name": "Pteron36",
"url": "",
- "maintainer": "Harshit Goel",
+ "maintainer": "harshitgoel96",
"layouts": {
"LAYOUT_split_3x5_3": {
- "layout": [{"x":2, "y":0}, {"x":12.5, "y":0}, {"x":1, "y":0.5}, {"x":3, "y":0.5}, {"x":11.5, "y":0.5}, {"x":13.5, "y":0.5}, {"x":4, "y":0.75}, {"x":10.5, "y":0.75}, {"x":0, "y":1}, {"x":2, "y":1}, {"x":12.5, "y":1}, {"x":14.5, "y":1}, {"x":1, "y":1.5}, {"x":3, "y":1.5}, {"x":11.5, "y":1.5}, {"x":13.5, "y":1.5}, {"x":4, "y":1.75}, {"x":10.5, "y":1.75}, {"x":0, "y":2}, {"x":2, "y":2}, {"x":12.5, "y":2}, {"x":14.5, "y":2}, {"x":1, "y":2.5}, {"x":3, "y":2.5}, {"x":11.5, "y":2.5}, {"x":13.5, "y":2.5}, {"x":4, "y":2.75}, {"x":10.5, "y":2.75}, {"x":0, "y":3}, {"x":14.5, "y":3}, {"x":4, "y":4}, {"x":5, "y":4}, {"x":6, "y":4}, {"x":8.5, "y":4}, {"x":9.5, "y":4}, {"x":10.5, "y":4}]
+ "layout": [
+ {"x":0, "y":1},
+ {"x":1, "y":0.5},
+ {"x":2, "y":0},
+ {"x":3, "y":0.5},
+ {"x":4, "y":0.75},
+ {"x":10, "y":0.75},
+ {"x":11, "y":0.5},
+ {"x":12, "y":0},
+ {"x":13, "y":0.5},
+ {"x":14, "y":1},
+
+ {"x":0, "y":2},
+ {"x":1, "y":1.5},
+ {"x":2, "y":1},
+ {"x":3, "y":1.5},
+ {"x":4, "y":1.75},
+ {"x":10, "y":1.75},
+ {"x":11, "y":1.5},
+ {"x":12, "y":1},
+ {"x":13, "y":1.5},
+ {"x":14, "y":2},
+
+ {"x":0, "y":3},
+ {"x":1, "y":2.5},
+ {"x":2, "y":2},
+ {"x":3, "y":2.5},
+ {"x":4, "y":2.75},
+ {"x":10, "y":2.75},
+ {"x":11, "y":2.5},
+ {"x":12, "y":2},
+ {"x":13, "y":2.5},
+ {"x":14, "y":3},
+
+ {"x":4, "y":4},
+ {"x":5, "y":4},
+ {"x":6, "y":4},
+ {"x":8, "y":4},
+ {"x":9, "y":4},
+ {"x":10, "y":4}
+ ]
},
"LAYOUT_split_3x5_3_encoder": {
- "layout": [{"x":2, "y":0}, {"x":12.5, "y":0}, {"x":1, "y":0.5}, {"x":3, "y":0.5}, {"x":11.5, "y":0.5}, {"x":13.5, "y":0.5}, {"x":4, "y":0.75}, {"x":10.5, "y":0.75}, {"x":0, "y":1}, {"x":2, "y":1}, {"x":12.5, "y":1}, {"x":14.5, "y":1}, {"x":1, "y":1.5}, {"x":3, "y":1.5}, {"x":11.5, "y":1.5}, {"x":13.5, "y":1.5}, {"x":4, "y":1.75}, {"x":10.5, "y":1.75}, {"x":0, "y":2}, {"x":2, "y":2}, {"x":12.5, "y":2}, {"x":14.5, "y":2}, {"x":1, "y":2.5}, {"x":3, "y":2.5}, {"x":11.5, "y":2.5}, {"x":13.5, "y":2.5}, {"x":4, "y":2.75}, {"label":"enc1", "x":5.5, "y":2.75}, {"label":"enc2", "x":9, "y":2.75}, {"x":10.5, "y":2.75}, {"x":0, "y":3}, {"x":14.5, "y":3}, {"x":4, "y":4}, {"x":5, "y":4}, {"x":6, "y":4}, {"x":8.5, "y":4}, {"x":9.5, "y":4}, {"x":10.5, "y":4}]
+ "layout": [
+ {"x":0, "y":1},
+ {"x":1, "y":0.5},
+ {"x":2, "y":0},
+ {"x":3, "y":0.5},
+ {"x":4, "y":0.75},
+ {"x":10, "y":0.75},
+ {"x":11, "y":0.5},
+ {"x":12, "y":0},
+ {"x":13, "y":0.5},
+ {"x":14, "y":1},
+
+ {"x":0, "y":2},
+ {"x":1, "y":1.5},
+ {"x":2, "y":1},
+ {"x":3, "y":1.5},
+ {"x":4, "y":1.75},
+ {"x":10, "y":1.75},
+ {"x":11, "y":1.5},
+ {"x":12, "y":1},
+ {"x":13, "y":1.5},
+ {"x":14, "y":2},
+
+ {"x":0, "y":3},
+ {"x":1, "y":2.5},
+ {"x":2, "y":2},
+ {"x":3, "y":2.5},
+ {"x":4, "y":2.75},
+ {"label":"enc1", "x":5.5, "y":2.75},
+ {"label":"enc2", "x":8.5, "y":2.75},
+ {"x":10, "y":2.75},
+ {"x":11, "y":2.5},
+ {"x":12, "y":2},
+ {"x":13, "y":2.5},
+ {"x":14, "y":3},
+
+ {"x":4, "y":4},
+ {"x":5, "y":4},
+ {"x":6, "y":4},
+ {"x":8, "y":4},
+ {"x":9, "y":4},
+ {"x":10, "y":4}
+ ]
}
}
}
diff --git a/keyboards/pteron36/keymaps/default/keymap.c b/keyboards/pteron36/keymaps/default/keymap.c
index 0cc0e2b4716a..14b4e5979b24 100644
--- a/keyboards/pteron36/keymaps/default/keymap.c
+++ b/keyboards/pteron36/keymaps/default/keymap.c
@@ -27,9 +27,10 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_QWERTY] = LAYOUT_split_3x5_3_encoder(
- KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
- KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
- KC_Z, KC_X, KC_C, KC_V, KC_B,KC_LBRACKET, KC_RBRACKET, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
- KC_LGUI, KC_BSPC, KC_SPC, KC_SPC, KC_ENT, KC_RALT
- )};
+ [_QWERTY] = LAYOUT_split_3x5_3_encoder(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ KC_LGUI, KC_BSPC, KC_SPC, KC_SPC, KC_ENT, KC_RALT
+ )
+};
diff --git a/keyboards/pteron36/keymaps/via/keymap.c b/keyboards/pteron36/keymaps/via/keymap.c
index 9e467dcde529..ce96ea6c5987 100644
--- a/keyboards/pteron36/keymaps/via/keymap.c
+++ b/keyboards/pteron36/keymaps/via/keymap.c
@@ -33,53 +33,54 @@ enum layer_names {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_QWERTY] = LAYOUT_split_3x5_3_encoder(
- KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
- KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
- KC_Z, KC_X, KC_C, KC_V, KC_B,KC_LBRACKET, KC_RBRACKET, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
- KC_LGUI, KC_BSPC, KC_SPC, KC_SPC, KC_ENT, KC_RALT
- ),
-
- [_SYMB] = LAYOUT_split_3x5_3_encoder(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
- ),
-
- [_NAV] = LAYOUT_split_3x5_3_encoder(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
- ),
-
- [_ADJUST] = LAYOUT_split_3x5_3_encoder(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
- ),
- [_MOUSE] = LAYOUT_split_3x5_3_encoder(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
- ),
-
- [_NUMB] = LAYOUT_split_3x5_3_encoder(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
- ),
-
- [_FNR] = LAYOUT_split_3x5_3_encoder(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
- )
+ [_QWERTY] = LAYOUT_split_3x5_3_encoder(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ KC_LGUI, KC_BSPC, KC_SPC, KC_SPC, KC_ENT, KC_RALT
+ ),
+
+ [_SYMB] = LAYOUT_split_3x5_3_encoder(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [_NAV] = LAYOUT_split_3x5_3_encoder(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [_ADJUST] = LAYOUT_split_3x5_3_encoder(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [_MOUSE] = LAYOUT_split_3x5_3_encoder(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [_NUMB] = LAYOUT_split_3x5_3_encoder(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [_FNR] = LAYOUT_split_3x5_3_encoder(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/pteron36/readme.md b/keyboards/pteron36/readme.md
index a68c7a55b4fe..0e430db24326 100644
--- a/keyboards/pteron36/readme.md
+++ b/keyboards/pteron36/readme.md
@@ -2,11 +2,12 @@
![Pteron36](https://i.imgur.com/PuXPWYfh.jpg)
-A 36 key keyboard with a bit more natural thumb cluster.
+A 36-key keyboard with a bit more natural thumb cluster.
* Keyboard Maintainer: [Harshit Goel](https://github.com/harshitgoel96)
* Hardware Supported: Pteron36 using promicro.
-* Hardware Availability: Hardware is opensource, you can simply send the gerber to a PCB manufacturere and them made. File are availalbe in [pteron36 repository](https://github.com/harshitgoel96/pteron36-split-keyboard/releases/tag/v1.2.0)
+* Hardware Availability: Files are available in the [pteron36 repository](https://github.com/harshitgoel96/pteron36-split-keyboard/releases/tag/v1.2.0)
+ * The hardware is open source; you can simply send the Gerber to a PCB manufacturer and have them made.
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/pteron36/rules.mk b/keyboards/pteron36/rules.mk
index 278246b37134..a12be263511a 100644
--- a/keyboards/pteron36/rules.mk
+++ b/keyboards/pteron36/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
+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
diff --git a/keyboards/quark/keymaps/ajp10304/readme.md b/keyboards/quark/keymaps/ajp10304/readme.md
index 12090ccd4469..83af702e2a79 100644
--- a/keyboards/quark/keymaps/ajp10304/readme.md
+++ b/keyboards/quark/keymaps/ajp10304/readme.md
@@ -7,8 +7,7 @@ the second is the output when shift is applied.
**Note:** The below tables assume a UK layout.
#### Flashing
-
-`make quark:ajp10304:flash`
+Refer to the README.md of the keyboard you want to flash.
##### Main Qwerty Layer
@@ -102,7 +101,7 @@ Activated when `fn` and `raise` held together.
| | | | | | | | | | | | |
| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
-| ESC | | | | | | | | BTN3 | | | |
+| ESC | | | | | | W_L | W_UP | BTN3 | W_DWN| W_R | |
| ACC0 | ACC1 | ACC2 | | | | | BTN1 | UP | BTN2 | | |
| ACC0 | ACC1 | ACC2 | | | | | LEFT | DOWN | RIGHT| | |
| | | | | | | | | | | | |
diff --git a/keyboards/rart/rart67m/config.h b/keyboards/rart/rart67m/config.h
new file mode 100644
index 000000000000..02ee4817d9d4
--- /dev/null
+++ b/keyboards/rart/rart67m/config.h
@@ -0,0 +1,57 @@
+/*Copyright 2021 Alabahuy
+
+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 .
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+#define VENDOR_ID 0x414C
+#define PRODUCT_ID 0x6067
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Alabahuy
+#define PRODUCT RART67M
+
+/* key matrix size */
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 8
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14*/
+#define MATRIX_ROW_PINS { D3, D2, D4, F6, B3, B4, B2, B5 }
+#define MATRIX_COL_PINS { F4, F5, C6, F7, D7, B1, E6, B6 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+#define OLED_TIMEOUT 600000
diff --git a/keyboards/rart/rart67m/info.json b/keyboards/rart/rart67m/info.json
new file mode 100644
index 000000000000..a8398b041d8b
--- /dev/null
+++ b/keyboards/rart/rart67m/info.json
@@ -0,0 +1,79 @@
+{
+ "keyboard_name": "RART67M",
+ "url": "",
+ "maintainer": "Alabahuy",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0, "w":2},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+ {"x":15, "y":2},
+
+ {"x":0, "y":3, "w":2.25},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":1.75},
+ {"x":14, "y":3},
+ {"x":15, "y":3},
+
+ {"x":0, "y":4, "w":1.5},
+ {"x":1.5, "y":4, "w":1.5},
+ {"x":3, "y":4, "w":7},
+ {"x":10, "y":4, "w":1.5},
+ {"x":11.5, "y":4, "w":1.5},
+ {"x":13, "y":4},
+ {"x":14, "y":4},
+ {"x":15, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/rart/rart67m/keymaps/default/keymap.c b/keyboards/rart/rart67m/keymaps/default/keymap.c
new file mode 100644
index 000000000000..fcb55816c87f
--- /dev/null
+++ b/keyboards/rart/rart67m/keymaps/default/keymap.c
@@ -0,0 +1,49 @@
+/* Copyright 2021 Alabahuy
+ * 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_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_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_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [2] = 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
+ ),
+
+ [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
+ ),
+};
\ No newline at end of file
diff --git a/keyboards/rart/rart67m/keymaps/default/rules.mk b/keyboards/rart/rart67m/keymaps/default/rules.mk
new file mode 100644
index 000000000000..7e2126efab6a
--- /dev/null
+++ b/keyboards/rart/rart67m/keymaps/default/rules.mk
@@ -0,0 +1,2 @@
+WPM_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/rart/rart67m/keymaps/via/keymap.c b/keyboards/rart/rart67m/keymaps/via/keymap.c
new file mode 100644
index 000000000000..fcb55816c87f
--- /dev/null
+++ b/keyboards/rart/rart67m/keymaps/via/keymap.c
@@ -0,0 +1,49 @@
+/* Copyright 2021 Alabahuy
+ * 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_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_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_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [2] = 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
+ ),
+
+ [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
+ ),
+};
\ No newline at end of file
diff --git a/keyboards/rart/rart67m/keymaps/via/rules.mk b/keyboards/rart/rart67m/keymaps/via/rules.mk
new file mode 100644
index 000000000000..2a9abbb4ddab
--- /dev/null
+++ b/keyboards/rart/rart67m/keymaps/via/rules.mk
@@ -0,0 +1,3 @@
+WPM_ENABLE = yes
+VIA_ENABLE = yes
+LTO_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/rart/rart67m/rart67m.c b/keyboards/rart/rart67m/rart67m.c
new file mode 100644
index 000000000000..6b2c6dffbbb8
--- /dev/null
+++ b/keyboards/rart/rart67m/rart67m.c
@@ -0,0 +1,134 @@
+/* Copyright 2021 Alabahuy
+ * 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 "rart67m.h"
+
+#define IDLE_FRAMES 5
+#define IDLE_SPEED 30
+#define TAP_FRAMES 2
+#define TAP_SPEED 40
+#define ANIM_FRAME_DURATION 200
+#define ANIM_SIZE 512
+#ifdef OLED_ENABLE
+__attribute__((weak)) oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ return OLED_ROTATION_180;
+}
+
+__attribute__((weak)) void oled_task_user(void) {
+static uint32_t anim_timer = 0;
+static uint32_t anim_sleep = 0;
+static uint8_t current_idle_frame = 0;
+static uint8_t current_tap_frame = 0;
+
+ static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = {
+
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,16,8,8,4,4,4,8,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,100,130,2,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,
+ 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,56,4,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ },
+
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,16,8,8,4,4,4,8,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,100,130,2,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,
+ 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,56,4,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,
+ 7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ },
+
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,64,64,64,64,32,32,32,32,16,8,4,2,2,4,24,96,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,194,1,1,2,2,4,4,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,96,0,129,130,130,132,8,16,32,64,128,0,0,0,0,128,128,128,128,64,64,64,64,32,
+ 32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,25,6,0,0,0,0,0,0,0,24,24,24,27,3,0,64,160,34,36,20,18,18,18,11,8,8,8,8,5,5,9,9,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ },
+
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,
+ 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,
+ 7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ },
+
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,8,4,2,2,2,4,56,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,226,1,1,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,64,64,
+ 32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ }
+
+ };
+
+ static const char PROGMEM prep[][ANIM_SIZE] = {
+
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,129,128,128,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,225,26,6,9,49,53,1,138,124,0,0,128,128,128,128,64,64,
+ 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,24,6,5,152,153,132,195,124,65,65,64,64,32,33,34,18,17,17,17,9,8,8,8,8,4,4,4,4,4,4,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ }
+
+ };
+
+ static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = {
+
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,248,248,248,248,0,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,129,128,128,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,1,2,4,8,16,32,67,135,7,1,0,184,188,190,159,
+ 95,95,79,76,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,24,6,5,152,153,132,67,124,65,65,64,64,32,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,61,124,252,252,252,252,252,60,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,
+ 1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ },
+
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,225,26,6,9,49,53,1,138,124,0,0,128,128,128,128,64,64,64,64,32,
+ 32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,0,0,0,1,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,4,4,4,4,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,122,122,121,121,121,121,57,49,2,2,4,4,8,8,8,136,136,135,128,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ }
+
+ };
+
+ void animation_phase(void) {
+
+ if (get_current_wpm() <=IDLE_SPEED) {
+ current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES;
+ oled_write_raw_P(idle[abs((IDLE_FRAMES-1)-current_idle_frame)], ANIM_SIZE);
+ }
+
+ if (get_current_wpm() >IDLE_SPEED && get_current_wpm() =TAP_SPEED) {
+ current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES;
+ oled_write_raw_P(tap[abs((TAP_FRAMES-1)-current_tap_frame)], ANIM_SIZE);
+ }
+ }
+
+ if (get_current_wpm() > 0) {
+
+ oled_on();
+
+ if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
+ anim_timer = timer_read32();
+ animation_phase();
+ }
+
+ anim_sleep = timer_read32();
+ } else {
+ if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) {
+ oled_off();
+ } else {
+ if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
+ anim_timer = timer_read32();
+ animation_phase();
+ }
+ }
+ }
+
+}
+
+#endif
\ No newline at end of file
diff --git a/keyboards/rart/rart67m/rart67m.h b/keyboards/rart/rart67m/rart67m.h
new file mode 100644
index 000000000000..6547a1fa3042
--- /dev/null
+++ b/keyboards/rart/rart67m/rart67m.h
@@ -0,0 +1,37 @@
+/* Copyright 2021 Alabahuy
+ *
+ * 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 .
+ */
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_all(\
+ K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K16, \
+ K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K26, K36, \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K46, K56, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K66, K76, \
+ K07, K17, K27, K37, K47, K57, K67, K77 \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07 }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17 }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27 }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37 }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47 }, \
+ { K50, K51, K52, K53, K54, K55, K56, K57 }, \
+ { K60, K61, K62, K63, K64, K65, K66, K67 }, \
+ { K70, K71, K72, K73, K74, K75, K76, K77 } \
+}
diff --git a/keyboards/rart/rart67m/readme.md b/keyboards/rart/rart67m/readme.md
new file mode 100644
index 000000000000..b8c8c1124893
--- /dev/null
+++ b/keyboards/rart/rart67m/readme.md
@@ -0,0 +1,24 @@
+# RART67M
+
+![67M](https://user-images.githubusercontent.com/30220306/133432676-2722f5fe-4ddb-4ee4-aa6d-de70371b4a1c.png)
+
+
+65% mechanical keyboard with arduino pro micro and oled
+
+* Keyboard Maintainer: Alabahuy
+* Hardware Supported: Arduino Pro Micro, Oled
+* Hardware Availability: Private GB
+
+Make example for this keyboard (after setting up your build environment):
+
+ make rart/rart67m:default
+
+Flashing example for this keyboard:
+
+ make rart/rart67m:default:flash
+
+## Bootloader
+
+To Enter the bootloader you can double click reset button on board when you flash the firmware
+
+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/rart/rart67m/rules.mk b/keyboards/rart/rart67m/rules.mk
new file mode 100644
index 000000000000..d524f32847e9
--- /dev/null
+++ b/keyboards/rart/rart67m/rules.mk
@@ -0,0 +1,24 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # 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
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+UNICODE_ENABLE = yes
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
diff --git a/keyboards/redox_media/config.h b/keyboards/redox_media/config.h
index 70fb2aa16490..0d4ac16b5f43 100644
--- a/keyboards/redox_media/config.h
+++ b/keyboards/redox_media/config.h
@@ -24,7 +24,7 @@ along with this program. If not, see .
#define PRODUCT_ID 0x0000
#define DEVICE_VER 0x0100
#define MANUFACTURER shiftux
-#define PRODUCT The Redox Keyboard
+#define PRODUCT Redox Media
/* key matrix size */
// Rows are doubled-up
@@ -57,4 +57,4 @@ along with this program. If not, see .
#define ENCODERS_PAD_A { F4 }
#define ENCODERS_PAD_B { F5 }
-#define ENCODER_RESOLUTION 4
\ No newline at end of file
+#define ENCODER_RESOLUTION 4
diff --git a/keyboards/redox_media/info.json b/keyboards/redox_media/info.json
new file mode 100644
index 000000000000..e13487e791cf
--- /dev/null
+++ b/keyboards/redox_media/info.json
@@ -0,0 +1,89 @@
+{
+ "keyboard_name": "Redox Media",
+ "url": "",
+ "maintainer": "shiftux",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"Mute", "x":5.25, "y":0.15},
+ {"label":"Play", "x":12.25, "y":0.15},
+ {"label":"Next", "x":13.5, "y":0},
+
+ {"label":"_Nav || `", "x":0, "y":1.375, "w":1.25},
+ {"label":"1", "x":1.25, "y":1.375},
+ {"label":"2", "x":2.25, "y":1.125},
+ {"label":"3", "x":3.25, "y":1},
+ {"label":"4", "x":4.25, "y":1.125},
+ {"label":"5", "x":5.25, "y":1.25},
+ {"label":"6", "x":12.25, "y":1.25},
+ {"label":"7", "x":13.25, "y":1.125},
+ {"label":"8", "x":14.25, "y":1},
+ {"label":"9", "x":15.25, "y":1.125},
+ {"label":"0", "x":16.25, "y":1.375},
+ {"label":"_Nav || -", "x":17.25, "y":1.375, "w":1.25},
+
+ {"label":"Tab", "x":0, "y":2.375, "w":1.25},
+ {"label":"Q", "x":1.25, "y":2.375},
+ {"label":"W", "x":2.25, "y":2.125},
+ {"label":"E", "x":3.25, "y":2},
+ {"label":"R", "x":4.25, "y":2.125},
+ {"label":"T", "x":5.25, "y":2.25},
+ {"label":"MO(_SYMB)", "x":6.25, "y":1.75},
+ {"label":"MO(_SYMB)", "x":11.25, "y":1.75},
+ {"label":"Y", "x":12.25, "y":2.25},
+ {"label":"U", "x":13.25, "y":2.125},
+ {"label":"I", "x":14.25, "y":2},
+ {"label":"O", "x":15.25, "y":2.125},
+ {"label":"P", "x":16.25, "y":2.375},
+ {"label":"=", "x":17.25, "y":2.375, "w":1.25},
+
+ {"label":"Esc", "x":0, "y":3.375, "w":1.25},
+ {"label":"A", "x":1.25, "y":3.375},
+ {"label":"S", "x":2.25, "y":3.125},
+ {"label":"D", "x":3.25, "y":3},
+ {"label":"F", "x":4.25, "y":3.125},
+ {"label":"G", "x":5.25, "y":3.25},
+ {"label":"[", "x":6.25, "y":3},
+ {"label":"]", "x":11.25, "y":3},
+ {"label":"H", "x":12.25, "y":3.25},
+ {"label":"J", "x":13.25, "y":3.125},
+ {"label":"K", "x":14.25, "y":3},
+ {"label":"L", "x":15.25, "y":3.125},
+ {"label":";", "x":16.25, "y":3.375},
+ {"label":"'", "x":17.25, "y":3.375, "w":1.25},
+
+ {"label":"Shift", "x":0, "y":4.375, "w":1.25},
+ {"label":"Z", "x":1.25, "y":4.375},
+ {"label":"X", "x":2.25, "y":4.125},
+ {"label":"C", "x":3.25, "y":4},
+ {"label":"V", "x":4.25, "y":4.125},
+ {"label":"B", "x":5.25, "y":4.25},
+ {"label":"_Adjust/Page Up", "x":6.75, "y":4.75},
+ {"label":"Page Down", "x":7.75, "y":4.75},
+ {"label":"Home", "x":9.75, "y":4.75},
+ {"label":"_Adjust/End", "x":10.75, "y":4.75},
+ {"label":"N", "x":12.25, "y":4.25},
+ {"label":"M", "x":13.25, "y":4.125},
+ {"label":",", "x":14.25, "y":4},
+ {"label":",", "x":15.25, "y":4.125},
+ {"label":"\\", "x":16.25, "y":4.375},
+ {"label":"Shift", "x":17.25, "y":4.375, "w":1.25},
+
+ {"label":"LGUI", "x":0.25, "y":5.375},
+ {"label":"P+", "x":1.25, "y":5.375},
+ {"label":"P-", "x":2.25, "y":5.125},
+ {"label":"LAlt || P*", "x":3.25, "y":5},
+ {"label":"LCtrl || P/", "x":5.5, "y":6.25, "w":1.25},
+ {"label":"Backspace", "x":6.75, "y":5.75, "h":1.5},
+ {"label":"Delete", "x":7.75, "y":5.75, "h":1.5},
+ {"label":"Enter", "x":9.75, "y":5.75, "h":1.5},
+ {"label":"Space", "x":10.75, "y":5.75, "h":1.5},
+ {"label":"RAlt", "x":11.75, "y":6.25, "w":1.25},
+ {"label":"Left", "x":14.25, "y":5},
+ {"label":"Down", "x":15.25, "y":5.125},
+ {"label":"Up", "x":16.25, "y":5.375},
+ {"label":"Right", "x":17.25, "y":5.375}
+ ]
+ }
+ }
+}
diff --git a/keyboards/redox_media/redox_media.h b/keyboards/redox_media/redox_media.h
index 6188aa9a107c..8cd13c63f2f2 100644
--- a/keyboards/redox_media/redox_media.h
+++ b/keyboards/redox_media/redox_media.h
@@ -19,28 +19,51 @@ along with this program. If not, see .
#include "quantum.h"
+#define XXX KC_NO
+
+/*
+ * ┌───┐ ┌───┐┌───┐
+ * │56 │ │B6 ││B5 │
+ * └───┘ └───┘└───┘
+ * ┌───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┐
+ * │00 │01 │02 │03 │04 │05 │ │65 │64 │63 │62 │61 │60 │
+ * ├───┼───┼───┼───┼───┼───┼───┐ ┌───┼───┼───┼───┼───┼───┼───┤
+ * │10 │11 │12 │13 │14 │15 │06 │ │66 │75 │74 │73 │72 │71 │70 │
+ * ├───┼───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┼───┤
+ * │20 │21 │22 │23 │24 │25 │16 │ │76 │85 │84 │83 │82 │81 │80 │
+ * ├───┼───┼───┼───┼───┼───┼───┘ └───┼───┼───┼───┼───┼───┼───┤
+ * │30 │31 │32 │33 │34 │35 │ ┌───┬───┐ ┌───┬───┐ │95 │94 │93 │92 │91 │90 │
+ * ├───┼───┼───┼───┼───┴───┘ │26 │36 │ │96 │86 │ └───┴───┼───┼───┼───┼───┤
+ * │40 │41 │42 │43 │ ├───┼───┤ ├───┼───┤ │A3 │A2 │A1 │A0 │
+ * └───┴───┴───┴───┘ ┌────┤ │ │ │ │ ├────┐ └───┴───┴───┴───┘
+ * │44 │45 │46 │ │A6 │A5 │A4 │
+ * └────┴───┴───┘ └───┴───┴────┘
+ *
+ *
+ */
+
// rows are doubled
// clang-format off
#define LAYOUT( \
- R5C6, R11C6, R11C5, \
- R0C0, R0C1, R0C2, R0C3, R0C4, R0C5, R6C5, R6C4, R6C3, R6C2, R6C1, R6C0, \
- R1C0, R1C1, R1C2, R1C3, R1C4, R1C5, R0C6, R6C6, R7C5, R7C4, R7C3, R7C2, R7C1, R7C0, \
- R2C0, R2C1, R2C2, R2C3, R2C4, R2C5, R1C6, R7C6, R8C5, R8C4, R8C3, R8C2, R8C1, R8C0, \
- R3C0, R3C1, R3C2, R3C3, R3C4, R3C5, R2C6, R3C6, R9C6, R8C6, R9C5, R9C4, R9C3, R9C2, R9C1, R9C0, \
- R4C0, R4C1, R4C2, R4C3, R4C4, R4C5, R4C6, R10C6, R10C5, R10C4, R10C3, R10C2, R10C1, R10C0 \
+ K56, KB6, KB5, \
+ K00, K01, K02, K03, K04, K05, K65, K64, K63, K62, K61, K60, \
+ K10, K11, K12, K13, K14, K15, K06, K66, K75, K74, K73, K72, K71, K70, \
+ K20, K21, K22, K23, K24, K25, K16, K76, K85, K84, K83, K82, K81, K80, \
+ K30, K31, K32, K33, K34, K35, K26, K36, K96, K86, K95, K94, K93, K92, K91, K90, \
+ K40, K41, K42, K43, K44, K45, K46, KA6, KA5, KA4, KA3, KA2, KA1, KA0 \
) \
{ \
- { R0C0, R0C1, R0C2, R0C3, R0C4, R0C5, R0C6 }, \
- { R1C0, R1C1, R1C2, R1C3, R1C4, R1C5, R1C6 }, \
- { R2C0, R2C1, R2C2, R2C3, R2C4, R2C5, R2C6 }, \
- { R3C0, R3C1, R3C2, R3C3, R3C4, R3C5, R3C6 }, \
- { R4C0, R4C1, R4C2, R4C3, R4C4, R4C5, R4C6 }, \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, R5C6 }, \
+ { K00, K01, K02, K03, K04, K05, K06 }, \
+ { K10, K11, K12, K13, K14, K15, K16 }, \
+ { K20, K21, K22, K23, K24, K25, K26 }, \
+ { K30, K31, K32, K33, K34, K35, K36 }, \
+ { K40, K41, K42, K43, K44, K45, K46 }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, K56 }, \
\
- { R6C0, R6C1, R6C2, R6C3, R6C4, R6C5, R6C6 }, \
- { R7C0, R7C1, R7C2, R7C3, R7C4, R7C5, R7C6 }, \
- { R8C0, R8C1, R8C2, R8C3, R8C4, R8C5, R8C6 }, \
- { R9C0, R9C1, R9C2, R9C3, R9C4, R9C5, R9C6 }, \
- { R10C0, R10C1, R10C2, R10C3, R10C4, R10C5, R10C6 }, \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, R11C5, R11C6 } \
+ { K60, K61, K62, K63, K64, K65, K66 }, \
+ { K70, K71, K72, K73, K74, K75, K76 }, \
+ { K80, K81, K82, K83, K84, K85, K86 }, \
+ { K90, K91, K92, K93, K94, K95, K96 }, \
+ { KA0, KA1, KA2, KA3, KA4, KA5, KA6 }, \
+ { XXX, XXX, XXX, XXX, XXX, KB5, KB6 } \
}
diff --git a/keyboards/redox_w/keymaps/manna-harbour_miryoku/config.h b/keyboards/redox_w/keymaps/manna-harbour_miryoku/config.h
index f426e2f79f04..ffc0d9879873 100644
--- a/keyboards/redox_w/keymaps/manna-harbour_miryoku/config.h
+++ b/keyboards/redox_w/keymaps/manna-harbour_miryoku/config.h
@@ -1,6 +1,6 @@
// Copyright 2019 Manna Harbour
// https://github.com/manna-harbour/miryoku
-// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*-
+// generated -*- buffer-read-only: t -*-
// 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 .
diff --git a/keyboards/redox_w/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/redox_w/keymaps/manna-harbour_miryoku/keymap.c
index 1520387e8887..7c5717a0fee0 100644
--- a/keyboards/redox_w/keymaps/manna-harbour_miryoku/keymap.c
+++ b/keyboards/redox_w/keymaps/manna-harbour_miryoku/keymap.c
@@ -1,5 +1,5 @@
// Copyright 2019 Manna Harbour
// https://github.com/manna-harbour/miryoku
-// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*-
+// generated -*- buffer-read-only: t -*-
// 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 .
diff --git a/keyboards/rocketboard_16/info.json b/keyboards/rocketboard_16/info.json
index 4d9c99bc6c9f..1ff728bfb770 100644
--- a/keyboards/rocketboard_16/info.json
+++ b/keyboards/rocketboard_16/info.json
@@ -2,6 +2,9 @@
"keyboard_name": "Rocketboard-16",
"url": "",
"maintainer": "fl3tching101",
+ "layout_aliases": {
+ "LAYOUT_default": "LAYOUT"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/rocketboard_16/keymaps/default/keymap.c b/keyboards/rocketboard_16/keymaps/default/keymap.c
index 050ab9f5b1bf..761816cae55d 100644
--- a/keyboards/rocketboard_16/keymaps/default/keymap.c
+++ b/keyboards/rocketboard_16/keymaps/default/keymap.c
@@ -33,19 +33,19 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_BASE] = LAYOUT_default(
- RGB_MODE_FORWARD, KC_NUMLOCK,
- KC_KP_7, KC_KP_8, KC_KP_9, KC_DELETE,
- KC_KP_4, KC_KP_5, KC_KP_6, KC_END,
- KC_KP_1, KC_KP_2, KC_KP_3, KC_F13,
- KC_KP_0, MO(1), KC_KP_DOT, KC_KP_ENTER
+ [_BASE] = LAYOUT(
+ RGB_MOD, KC_NLCK,
+ KC_P7, KC_P8, KC_P9, KC_DEL,
+ KC_P4, KC_P5, KC_P6, KC_END,
+ KC_P1, KC_P2, KC_P3, KC_F13,
+ KC_P0, MO(1), KC_PDOT, KC_PENT
),
- [_SPEC] = LAYOUT_default(
- RGB_MODE_REVERSE, KC_AUDIO_MUTE,
- KC_NO, KC_NO, KC_NO, KC_EXAM,
- KC_NO, KC_NO, KC_NO, KC_NO,
- RESET, RGB_TOG, RGB_SPI, RGB_SPD,
- KC_NO, _______, KC_NO, KC_NO
+ [_SPEC] = LAYOUT(
+ RGB_RMOD, KC_MUTE,
+ KC_NO, KC_NO, KC_NO, KC_EXAM,
+ KC_NO, KC_NO, KC_NO, KC_NO,
+ RESET, RGB_TOG, RGB_SPI, RGB_SPD,
+ KC_NO, _______, KC_NO, KC_NO
)
};
diff --git a/keyboards/rocketboard_16/keymaps/via/keymap.c b/keyboards/rocketboard_16/keymaps/via/keymap.c
index 050ab9f5b1bf..761816cae55d 100644
--- a/keyboards/rocketboard_16/keymaps/via/keymap.c
+++ b/keyboards/rocketboard_16/keymaps/via/keymap.c
@@ -33,19 +33,19 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_BASE] = LAYOUT_default(
- RGB_MODE_FORWARD, KC_NUMLOCK,
- KC_KP_7, KC_KP_8, KC_KP_9, KC_DELETE,
- KC_KP_4, KC_KP_5, KC_KP_6, KC_END,
- KC_KP_1, KC_KP_2, KC_KP_3, KC_F13,
- KC_KP_0, MO(1), KC_KP_DOT, KC_KP_ENTER
+ [_BASE] = LAYOUT(
+ RGB_MOD, KC_NLCK,
+ KC_P7, KC_P8, KC_P9, KC_DEL,
+ KC_P4, KC_P5, KC_P6, KC_END,
+ KC_P1, KC_P2, KC_P3, KC_F13,
+ KC_P0, MO(1), KC_PDOT, KC_PENT
),
- [_SPEC] = LAYOUT_default(
- RGB_MODE_REVERSE, KC_AUDIO_MUTE,
- KC_NO, KC_NO, KC_NO, KC_EXAM,
- KC_NO, KC_NO, KC_NO, KC_NO,
- RESET, RGB_TOG, RGB_SPI, RGB_SPD,
- KC_NO, _______, KC_NO, KC_NO
+ [_SPEC] = LAYOUT(
+ RGB_RMOD, KC_MUTE,
+ KC_NO, KC_NO, KC_NO, KC_EXAM,
+ KC_NO, KC_NO, KC_NO, KC_NO,
+ RESET, RGB_TOG, RGB_SPI, RGB_SPD,
+ KC_NO, _______, KC_NO, KC_NO
)
};
diff --git a/keyboards/rocketboard_16/rocketboard_16.h b/keyboards/rocketboard_16/rocketboard_16.h
index 87965906a4e6..927e21f7e614 100644
--- a/keyboards/rocketboard_16/rocketboard_16.h
+++ b/keyboards/rocketboard_16/rocketboard_16.h
@@ -4,7 +4,7 @@
#define KNO KC_NO
-#define LAYOUT_default( \
+#define LAYOUT( \
K00, K01, \
K02, K03, K04, K05, \
K06, K07, K08, K09, \
diff --git a/keyboards/sawnsprojects/krush/krush60/readme.md b/keyboards/sawnsprojects/krush/krush60/readme.md
new file mode 100644
index 000000000000..515040f9044b
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/readme.md
@@ -0,0 +1,25 @@
+# Krush60
+
+A 60% keyboard sold in several variants.
+
+1. [Solder](solder/): 06/2021. Atmega32u4 soldered keyboard. Sold under the name "Krush60" with krush keyboard case. Compatible with some 60% case, Singa, Bakeneko.
+
+ **Firmware files are SPECIFIC to each board. Firmware files from one, will not work on the other.** Please use the `.hex` or `.bin` appropriate for your board.
+
+* Keyboard Maintainer: [SawnsProjects](https://github.com/MaiTheSan)
+* Hardware Supported: Krush60, SINGA, Bakeneko, 60% traymount case
+* Hardware Availability: [Mechkey.store](https://mechkey.store/)
+
+Make examples for this keyboard (after setting up your build environment):
+
+ make sawnsprojects/krush/krush60/solder:default
+
+## 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 `RESET` if it is available
+
+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).
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/config.h b/keyboards/sawnsprojects/krush/krush60/solder/config.h
new file mode 100644
index 000000000000..b15361ed147d
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/config.h
@@ -0,0 +1,60 @@
+/* Copyright 2021 SawnsProjects
+ *
+ * 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 .
+ */
+
+#pragma once
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x5350
+#define PRODUCT_ID 0x6B32
+#define DEVICE_VER 0x0001
+#define MANUFACTURER SawnsProjects
+#define PRODUCT Krush60 - Solder
+
+/* key matrix size */
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 8
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { B1, B2, D1, D2, D4, D6, F6, F7, F5, F4 }
+#define MATRIX_COL_PINS { C7, C6, B6, B5, B4, D7, D5, D3 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+/* Caps Lock */
+#define LED_CAPS_LOCK_PIN F0
+
+#define RGB_DI_PIN F1
+#ifdef RGB_DI_PIN
+ #define RGBLED_NUM 20
+ #define RGBLIGHT_HUE_STEP 8
+ #define RGBLIGHT_SAT_STEP 8
+ #define RGBLIGHT_VAL_STEP 8
+ #define RGBLIGHT_LIMIT_VAL 200 /* The maximum brightness level */
+ #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+/*== all animations enable ==*/
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+#endif
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/info.json b/keyboards/sawnsprojects/krush/krush60/solder/info.json
new file mode 100644
index 000000000000..884b768eb6d5
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/info.json
@@ -0,0 +1,1274 @@
+{
+ "keyboard_name": "Krush60 Solder",
+ "url": "",
+ "maintainer": "MaiTheSan",
+ "layouts": {
+ "LAYOUT_60_ansi": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0, "w":2},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+
+ {"x":0, "y":3, "w":2.25},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":2.75},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"x":10, "y":4, "w":1.25},
+ {"x":11.25, "y":4, "w":1.25},
+ {"x":12.5, "y":4, "w":1.25},
+ {"x":13.75, "y":4, "w":1.25}
+ ]
+ },
+ "LAYOUT_60_ansi_arrow": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0, "w":2},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+
+ {"x":0, "y":3, "w":2.25},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3, "w":1.75},
+ {"x":13, "y":3},
+ {"x":14, "y":3},
+
+ {"x":0, "y": 4, "w": 1.25},
+ {"x":1.25, "y": 4, "w": 1.25},
+ {"x":2.5, "y": 4, "w": 1.25},
+ {"x":3.75, "y": 4, "w": 6.25},
+ {"x":10, "y": 4},
+ {"x":11, "y": 4},
+ {"x":12, "y": 4},
+ {"x":13, "y": 4},
+ {"x":14, "y": 4}
+ ]
+ },
+ "LAYOUT_60_ansi_arrow_split_bs_7u_spc": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0},
+ {"x":14, "y":0},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+
+ {"x":0, "y":3, "w":2.25},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3, "w":1.75},
+ {"x":13, "y":3},
+ {"x":14, "y":3},
+
+ {"x":0, "y": 4, "w": 1.5},
+ {"x":1.5, "y": 4},
+ {"x":2.5, "y": 4, "w": 1.5},
+ {"x":4, "y": 4, "w": 7},
+ {"x":11, "y": 4},
+ {"x":12, "y": 4},
+ {"x":13, "y": 4},
+ {"x":14, "y": 4}
+ ]
+ },
+ "LAYOUT_60_ansi_split_bs": {
+ "layout": [
+ {"x":0, "y": 0},
+ {"x":1, "y": 0},
+ {"x":2, "y": 0},
+ {"x":3, "y": 0},
+ {"x":4, "y": 0},
+ {"x":5, "y": 0},
+ {"x":6, "y": 0},
+ {"x":7, "y": 0},
+ {"x":8, "y": 0},
+ {"x":9, "y": 0},
+ {"x":10, "y": 0},
+ {"x":11, "y": 0},
+ {"x":12, "y": 0},
+ {"x":13, "y": 0},
+ {"x":14, "y": 0},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+
+ {"x":0, "y":3, "w":2.25},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":2.75},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"x":10, "y":4, "w":1.25},
+ {"x":11.25, "y":4, "w":1.25},
+ {"x":12.5, "y":4, "w":1.25},
+ {"x":13.75, "y":4, "w":1.25}
+ ]
+ },
+ "LAYOUT_60_ansi_split_spc": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0, "w":2},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+
+ {"x":0, "y":3, "w":2.25},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":2.75},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":2.25},
+ {"x":6, "y":4, "w":1.25},
+ {"x":7.25, "y":4, "w":2.75},
+ {"x":10, "y":4, "w":1.25},
+ {"x":11.25, "y":4, "w":1.25},
+ {"x":12.5, "y":4, "w":1.25},
+ {"x":13.75, "y":4, "w":1.25}
+ ]
+ },
+ "LAYOUT_60_ansi_split_bs_spc": {
+ "layout": [
+ {"x":0, "y": 0},
+ {"x":1, "y": 0},
+ {"x":2, "y": 0},
+ {"x":3, "y": 0},
+ {"x":4, "y": 0},
+ {"x":5, "y": 0},
+ {"x":6, "y": 0},
+ {"x":7, "y": 0},
+ {"x":8, "y": 0},
+ {"x":9, "y": 0},
+ {"x":10, "y": 0},
+ {"x":11, "y": 0},
+ {"x":12, "y": 0},
+ {"x":13, "y": 0},
+ {"x":14, "y": 0},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+
+ {"x":0, "y":3, "w":2.25},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":2.75},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":2.25},
+ {"x":6, "y":4, "w":1.25},
+ {"x":7.25, "y":4, "w":2.75},
+ {"x":10, "y":4, "w":1.25},
+ {"x":11.25, "y":4, "w":1.25},
+ {"x":12.5, "y":4, "w":1.25},
+ {"x":13.75, "y":4, "w":1.25}
+ ]
+ },
+ "LAYOUT_60_ansi_7u_spc": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0, "w":2},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+
+ {"x":0, "y":3, "w":2.25},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":2.75},
+
+ {"x":0, "y": 4, "w": 1.5},
+ {"x":1.5, "y": 4},
+ {"x":2.5, "y": 4, "w": 1.5},
+ {"x":4, "y": 4, "w": 7},
+ {"x":11, "y": 4, "w": 1.5},
+ {"x":12.5, "y": 4},
+ {"x":13.5, "y": 4, "w": 1.5},
+ ]
+ },
+ "LAYOUT_60_ansi_split_bs_7u_spc": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0},
+ {"x":14, "y":0},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+
+ {"x":0, "y":3, "w":2.25},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":2.75},
+
+ {"x": 0, "y": 4, "w": 1.5},
+ {"x": 1.5, "y": 4},
+ {"x": 2.5, "y": 4, "w": 1.5},
+ {"x": 4, "y": 4, "w": 7},
+ {"x": 11, "y": 4, "w": 1.5},
+ {"x": 12.5, "y": 4},
+ {"x": 13.5, "y": 4, "w": 1.5},
+ ]
+ },
+ "LAYOUT_60_ansi_arrow_split_bs": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0},
+ {"x":14, "y":0},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+
+ {"x":0, "y":3, "w":2.25},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3, "w":1.75},
+ {"x":13, "y":3},
+ {"x":14, "y":3},
+
+ {"x":0, "y": 4, "w": 1.25},
+ {"x":1.25, "y": 4, "w": 1.25},
+ {"x":2.5, "y": 4, "w": 1.25},
+ {"x":3.75, "y": 4, "w": 6.25},
+ {"x":10, "y": 4},
+ {"x":11, "y": 4},
+ {"x":12, "y": 4},
+ {"x":13, "y": 4},
+ {"x":14, "y": 4}
+ ]
+ },
+ "LAYOUT_60_ansi_arrow_split_spc": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0, "w":2},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+
+ {"x":0, "y":3, "w":2.25},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3, "w":1.75},
+ {"x":13, "y":3},
+ {"x":14, "y":3},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":2.25},
+ {"x":6, "y":4, "w":1.25},
+ {"x":7.25, "y":4, "w":2.75},
+ {"x":10, "y": 4},
+ {"x":11, "y": 4},
+ {"x":12, "y": 4},
+ {"x":13, "y": 4},
+ {"x":14, "y": 4}
+ ]
+ },
+ "LAYOUT_60_ansi_arrow_split_bs_spc": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0},
+ {"x":14, "y":0},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+
+ {"x":0, "y":3, "w":2.25},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3, "w":1.75},
+ {"x":13, "y":3},
+ {"x":14, "y":3},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":2.25},
+ {"x":6, "y":4, "w":1.25},
+ {"x":7.25, "y":4, "w":2.75},
+ {"x":10, "y": 4},
+ {"x":11, "y": 4},
+ {"x":12, "y": 4},
+ {"x":13, "y": 4},
+ {"x":14, "y": 4}
+ ]
+ },
+ "LAYOUT_60_ansi_arrow_7u_spc": {
+ "layout": [
+ {"x": 0, "y": 0},
+ {"x": 1, "y": 0},
+ {"x": 2, "y": 0},
+ {"x": 3, "y": 0},
+ {"x": 4, "y": 0},
+ {"x": 5, "y": 0},
+ {"x": 6, "y": 0},
+ {"x": 7, "y": 0},
+ {"x": 8, "y": 0},
+ {"x": 9, "y": 0},
+ {"x": 10, "y": 0},
+ {"x": 11, "y": 0},
+ {"x": 12, "y": 0},
+ {"x": 13, "y": 0, "w": 2},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+
+ {"x":0, "y":3, "w":2.25},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3, "w":1.75},
+ {"x":13, "y":3},
+ {"x":14, "y":3},
+
+ {"x":0, "y": 4, "w": 1.5},
+ {"x":1.5, "y": 4},
+ {"x":2.5, "y": 4, "w": 1.5},
+ {"x":4, "y": 4, "w": 7},
+ {"x":11, "y": 4},
+ {"x":12, "y": 4},
+ {"x":13, "y": 4},
+ {"x":14, "y": 4}
+ ]
+ },
+ "LAYOUT_60_ansi_tsangan": {
+ "layout": [
+ {"x": 0, "y": 0},
+ {"x": 1, "y": 0},
+ {"x": 2, "y": 0},
+ {"x": 3, "y": 0},
+ {"x": 4, "y": 0},
+ {"x": 5, "y": 0},
+ {"x": 6, "y": 0},
+ {"x": 7, "y": 0},
+ {"x": 8, "y": 0},
+ {"x": 9, "y": 0},
+ {"x": 10, "y": 0},
+ {"x": 11, "y": 0},
+ {"x": 12, "y": 0},
+ {"x": 13, "y": 0, "w": 2},
+
+ {"x": 0, "y": 1, "w": 1.5},
+ {"x": 1.5, "y": 1},
+ {"x": 2.5, "y": 1},
+ {"x": 3.5, "y": 1},
+ {"x": 4.5, "y": 1},
+ {"x": 5.5, "y": 1},
+ {"x": 6.5, "y": 1},
+ {"x": 7.5, "y": 1},
+ {"x": 8.5, "y": 1},
+ {"x": 9.5, "y": 1},
+ {"x": 10.5, "y": 1},
+ {"x": 11.5, "y": 1},
+ {"x": 12.5, "y": 1},
+ {"x": 13.5, "y": 1, "w": 1.5},
+
+ {"x": 0, "y": 2, "w": 1.75},
+ {"x": 1.75, "y": 2},
+ {"x": 2.75, "y": 2},
+ {"x": 3.75, "y": 2},
+ {"x": 4.75, "y": 2},
+ {"x": 5.75, "y": 2},
+ {"x": 6.75, "y": 2},
+ {"x": 7.75, "y": 2},
+ {"x": 8.75, "y": 2},
+ {"x": 9.75, "y": 2},
+ {"x": 10.75, "y": 2},
+ {"x": 11.75, "y": 2},
+ {"x": 12.75, "y": 2, "w": 2.25},
+
+ {"x": 0, "y": 3, "w": 2.25},
+ {"x": 2.25, "y": 3},
+ {"x": 3.25, "y": 3},
+ {"x": 4.25, "y": 3},
+ {"x": 5.25, "y": 3},
+ {"x": 6.25, "y": 3},
+ {"x": 7.25, "y": 3},
+ {"x": 8.25, "y": 3},
+ {"x": 9.25, "y": 3},
+ {"x": 10.25, "y": 3},
+ {"x": 11.25, "y": 3},
+ {"x": 12.25, "y": 3, "w": 1.75},
+ {"x": 14, "y": 3},
+
+ {"x": 0, "y": 4, "w": 1.5},
+ {"x": 1.5, "y": 4},
+ {"x": 2.5, "y": 4, "w": 1.5},
+ {"x": 4, "y": 4, "w": 7},
+ {"x": 11, "y": 4, "w": 1.5},
+ {"x": 12.5, "y": 4},
+ {"x": 13.5, "y": 4, "w": 1.5},
+ ]
+ },
+ "LAYOUT_60_ansi_tsangan_split_bs": {
+ "layout": [
+ {"x": 0, "y": 0},
+ {"x": 1, "y": 0},
+ {"x": 2, "y": 0},
+ {"x": 3, "y": 0},
+ {"x": 4, "y": 0},
+ {"x": 5, "y": 0},
+ {"x": 6, "y": 0},
+ {"x": 7, "y": 0},
+ {"x": 8, "y": 0},
+ {"x": 9, "y": 0},
+ {"x": 10, "y": 0},
+ {"x": 11, "y": 0},
+ {"x": 12, "y": 0},
+ {"x": 13, "y": 0},
+ {"x": 14, "y": 0},
+
+ {"x": 0, "y": 1, "w": 1.5},
+ {"x": 1.5, "y": 1},
+ {"x": 2.5, "y": 1},
+ {"x": 3.5, "y": 1},
+ {"x": 4.5, "y": 1},
+ {"x": 5.5, "y": 1},
+ {"x": 6.5, "y": 1},
+ {"x": 7.5, "y": 1},
+ {"x": 8.5, "y": 1},
+ {"x": 9.5, "y": 1},
+ {"x": 10.5, "y": 1},
+ {"x": 11.5, "y": 1},
+ {"x": 12.5, "y": 1},
+ {"x": 13.5, "y": 1, "w": 1.5},
+
+ {"x": 0, "y": 2, "w": 1.75},
+ {"x": 1.75, "y": 2},
+ {"x": 2.75, "y": 2},
+ {"x": 3.75, "y": 2},
+ {"x": 4.75, "y": 2},
+ {"x": 5.75, "y": 2},
+ {"x": 6.75, "y": 2},
+ {"x": 7.75, "y": 2},
+ {"x": 8.75, "y": 2},
+ {"x": 9.75, "y": 2},
+ {"x": 10.75, "y": 2},
+ {"x": 11.75, "y": 2},
+ {"x": 12.75, "y": 2, "w": 2.25},
+
+ {"x": 0, "y": 3, "w": 2.25},
+ {"x": 2.25, "y": 3},
+ {"x": 3.25, "y": 3},
+ {"x": 4.25, "y": 3},
+ {"x": 5.25, "y": 3},
+ {"x": 6.25, "y": 3},
+ {"x": 7.25, "y": 3},
+ {"x": 8.25, "y": 3},
+ {"x": 9.25, "y": 3},
+ {"x": 10.25, "y": 3},
+ {"x": 11.25, "y": 3},
+ {"x": 12.25, "y": 3, "w": 1.75},
+ {"x": 14, "y": 3},
+
+ {"x": 0, "y": 4, "w": 1.5},
+ {"x": 1.5, "y": 4},
+ {"x": 2.5, "y": 4, "w": 1.5},
+ {"x": 4, "y": 4, "w": 7},
+ {"x": 11, "y": 4, "w": 1.5},
+ {"x": 12.5, "y": 4},
+ {"x": 13.5, "y": 4, "w": 1.5},
+ ]
+ },
+ "LAYOUT_60_iso_tsangan": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0, "w":2},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2},
+ {"x":13.75, "y":1, "w":1.25, "h":2},
+
+ {"x": 0, "y": 3, "w": 2.25},
+ {"x": 2.25, "y": 3},
+ {"x": 3.25, "y": 3},
+ {"x": 4.25, "y": 3},
+ {"x": 5.25, "y": 3},
+ {"x": 6.25, "y": 3},
+ {"x": 7.25, "y": 3},
+ {"x": 8.25, "y": 3},
+ {"x": 9.25, "y": 3},
+ {"x": 10.25, "y": 3},
+ {"x": 11.25, "y": 3},
+ {"x": 12.25, "y": 3, "w": 1.75},
+ {"x": 14, "y": 3},
+
+ {"x":0, "y": 4, "w": 1.5},
+ {"x":1.5, "y": 4},
+ {"x":2.5, "y": 4, "w": 1.5},
+ {"x":4, "y": 4, "w": 7},
+ {"x":11, "y": 4, "w": 1.5},
+ {"x":12.5, "y": 4},
+ {"x":13.5, "y": 4, "w": 1.5},
+ ]
+ },
+ "LAYOUT_60_iso": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0},
+ {"x":14, "y":0},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2},
+ {"x":13.75, "y":1, "w":1.25, "h":2},
+
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":2.75},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"x":10, "y":4, "w":1.25},
+ {"x":11.25, "y":4, "w":1.25},
+ {"x":12.5, "y":4, "w":1.25},
+ {"x":13.75, "y":4, "w":1.25}
+ ]
+ },
+ "LAYOUT_60_iso_tsangan": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0},
+ {"x":14, "y":0},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2},
+ {"x":13.75, "y":1, "w":1.25, "h":2},
+
+ {"x": 0, "y": 3, "w": 2.25},
+ {"x": 2.25, "y": 3},
+ {"x": 3.25, "y": 3},
+ {"x": 4.25, "y": 3},
+ {"x": 5.25, "y": 3},
+ {"x": 6.25, "y": 3},
+ {"x": 7.25, "y": 3},
+ {"x": 8.25, "y": 3},
+ {"x": 9.25, "y": 3},
+ {"x": 10.25, "y": 3},
+ {"x": 11.25, "y": 3},
+ {"x": 12.25, "y": 3, "w": 1.75},
+ {"x": 14, "y": 3},
+
+ {"x":0, "y": 4, "w": 1.5},
+ {"x":1.5, "y": 4},
+ {"x":2.5, "y": 4, "w": 1.5},
+ {"x":4, "y": 4, "w": 7},
+ {"x":11, "y": 4, "w": 1.5},
+ {"x":12.5, "y": 4},
+ {"x":13.5, "y": 4, "w": 1.5},
+ ]
+ },
+ "LAYOUT_60_all": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0, "w":2},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2},
+ {"x":13.75, "y":1, "w":1.25, "h":2},
+
+ {"x":0, "y":3, "w":2},
+ {"x":2, "y":3},
+ {"x":3, "y":3},
+ {"x":4, "y":3},
+ {"x":5, "y":3},
+ {"x":6, "y":3},
+ {"x":7, "y":3},
+ {"x":8, "y":3},
+ {"x":9, "y":3},
+ {"x":10, "y":3},
+ {"x":11, "y":3},
+ {"x":12, "y":3},
+ {"x":13, "y":3},
+ {"x":14, "y":3},
+
+ {"x":0, "y": 4, "w": 1.5},
+ {"x":1.5, "y": 4},
+ {"x":2.5, "y": 4, "w": 1.5},
+ {"x":4, "y": 4, "w": 7},
+ {"x":11, "y": 4, "w": 1.5},
+ {"x":12.5, "y": 4},
+ {"x":13.5, "y": 4, "w": 1.5},
+ ]
+ }
+ }
+}
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_all/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_all/keymap.c
new file mode 100644
index 000000000000..b8b48194a69a
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_all/keymap.c
@@ -0,0 +1,35 @@
+/* Copyright 2021 SawnsProjects
+ *
+ * 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_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_BSPC,
+ 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_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_SLSH,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = 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_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/sawnsprojects/krush/krush60/solder/keymaps/60_all/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_all/readme.md
new file mode 100644
index 000000000000..e8ab0065f22e
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_all/readme.md
@@ -0,0 +1 @@
+# The keymap for krush60 solder full layout
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_7u/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_7u/keymap.c
new file mode 100644
index 000000000000..3d454579cb1c
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_7u/keymap.c
@@ -0,0 +1,37 @@
+/* Copyright 2021 SawnsProjects
+ *
+ * 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_60_ansi_7u_spc(
+ 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_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_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL
+ )
+ [1] = LAYOUT_60_ansi_7u_spc(
+ 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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
+
+
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_7u/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_7u/readme.md
new file mode 100644
index 000000000000..b7ec93ca7b73
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_7u/readme.md
@@ -0,0 +1 @@
+# The keymap for krush60 solder layout ansi 7U
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow/keymap.c
new file mode 100644
index 000000000000..b6fb88bb8afe
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow/keymap.c
@@ -0,0 +1,35 @@
+/* Copyright 2021 SawnsProjects
+ *
+ * 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_60_ansi_arrow(
+ 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_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_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ )
+ [1] = LAYOUT_60_ansi_arrow(
+ 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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow/readme.md
new file mode 100644
index 000000000000..561b615d2485
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow/readme.md
@@ -0,0 +1 @@
+# The keymap for krush60 solder layout ansi arrow
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_7u/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_7u/keymap.c
new file mode 100644
index 000000000000..f22e073bf5ac
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_7u/keymap.c
@@ -0,0 +1,35 @@
+/* Copyright 2021 SawnsProjects
+ *
+ * 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_60_ansi_arrow_7u_spc(
+ 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_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_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ )
+ [1] = LAYOUT_60_ansi_arrow_7u_spc(
+ 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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_7u/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_7u/readme.md
new file mode 100644
index 000000000000..578753b3ae8a
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_7u/readme.md
@@ -0,0 +1 @@
+# The keymap for krush60 solder layout ansi 7U arrow
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs/keymap.c
new file mode 100644
index 000000000000..8ba292cfd440
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs/keymap.c
@@ -0,0 +1,35 @@
+/* Copyright 2021 SawnsProjects
+ *
+ * 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_60_ansi_arrow_split_bs(
+ 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_BSPC,
+ 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_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ )
+ [1] = LAYOUT_60_ansi_arrow_split_bs(
+ 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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, 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/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs/readme.md
new file mode 100644
index 000000000000..505c1ec9bc37
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs/readme.md
@@ -0,0 +1 @@
+# The keymap for krush60 solder layout ansi arrow split backspace
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_7u/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_7u/keymap.c
new file mode 100644
index 000000000000..56a713d56e93
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_7u/keymap.c
@@ -0,0 +1,35 @@
+/* Copyright 2021 SawnsProjects
+ *
+ * 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_60_ansi_arrow_split_bs_7u_spc(
+ 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_BSPC,
+ 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_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ )
+ [1] = LAYOUT_60_ansi_arrow_split_bs_7u_spc(
+ 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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_7u/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_7u/readme.md
new file mode 100644
index 000000000000..059534d5df14
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_7u/readme.md
@@ -0,0 +1 @@
+# The keymap for krush60 solder layout ansi arrow, 7u spacebar & split backspace
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_spc/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_spc/keymap.c
new file mode 100644
index 000000000000..8673ce02d1d1
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_spc/keymap.c
@@ -0,0 +1,35 @@
+/* Copyright 2021 SawnsProjects
+ *
+ * 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_60_ansi_arrow_split_bs_spc(
+ 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_BSPC,
+ 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_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ )
+ [1] = LAYOUT_60_ansi_arrow_split_bs_spc(
+ 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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, 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/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_spc/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_spc/readme.md
new file mode 100644
index 000000000000..2355c409a026
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_bs_spc/readme.md
@@ -0,0 +1 @@
+# The keymap for krush60 solder layout ansi arrow, split spacebar & split backspace
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_spc/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_spc/keymap.c
new file mode 100644
index 000000000000..1da11323e446
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_spc/keymap.c
@@ -0,0 +1,37 @@
+/* Copyright 2021 SawnsProjects
+ *
+ * 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_60_ansi_arrow_split_spc(
+ 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_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_ENT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_UP, KC_SLSH,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ )
+ [1] = LAYOUT_60_ansi_arrow_split_spc(
+ 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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, 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/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_spc/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_spc/readme.md
new file mode 100644
index 000000000000..af2fce05c2a9
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_arrow_splt_spc/readme.md
@@ -0,0 +1 @@
+# The keymap for krush60 solder layout ansi arrow & split spacebar
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs/keymap.c
new file mode 100644
index 000000000000..ff0fd21debc5
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs/keymap.c
@@ -0,0 +1,35 @@
+/* Copyright 2021 SawnsProjects
+ *
+ * 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_60_ansi_split_bs(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
+ 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_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL),
+
+ [0] = LAYOUT_60_ansi_split_bs(
+ 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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
+
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs/readme.md
new file mode 100644
index 000000000000..80634c350fba
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs/readme.md
@@ -0,0 +1 @@
+# The keymap for krush60 solder layout split backspace
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_7u/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_7u/keymap.c
new file mode 100644
index 000000000000..431fb483fd8d
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_7u/keymap.c
@@ -0,0 +1,35 @@
+/* Copyright 2021 SawnsProjects
+ *
+ * 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_60_ansi_split_bs_7u_spc(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
+ 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_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL),
+
+ [0] = LAYOUT_60_ansi_split_bs_7u_spc(
+ 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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
+
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_7u/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_7u/readme.md
new file mode 100644
index 000000000000..70b3a8617b67
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_7u/readme.md
@@ -0,0 +1 @@
+# The keymap for krush60 solder layout 7u spacebar & split backspace
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_spc/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_spc/keymap.c
new file mode 100644
index 000000000000..e3982e2507f5
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_spc/keymap.c
@@ -0,0 +1,35 @@
+/* Copyright 2021 SawnsProjects
+ *
+ * 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_60_ansi_split_bs_spc(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
+ 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_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL),
+
+ [1] = LAYOUT_60_ansi_split_bs_spc(
+ 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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_PGDN, 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/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_spc/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_spc/readme.md
new file mode 100644
index 000000000000..6e1981c3ce82
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_bs_spc/readme.md
@@ -0,0 +1 @@
+# The keymap for krush60 solder layout split spacebar & split backspace
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_spc/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_spc/keymap.c
new file mode 100644
index 000000000000..abcd186ccc89
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_spc/keymap.c
@@ -0,0 +1,35 @@
+/* Copyright 2021 SawnsProjects
+ *
+ * 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_60_ansi_split_spc(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_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_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL),
+
+ [1] = LAYOUT_60_ansi_split_spc(
+ 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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_PGDN, 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/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_spc/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_spc/readme.md
new file mode 100644
index 000000000000..80634c350fba
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_ansi_splt_spc/readme.md
@@ -0,0 +1 @@
+# The keymap for krush60 solder layout split backspace
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan/keymap.c
new file mode 100644
index 000000000000..cc8067cc9995
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2021 SawnsProjects
+ *
+ * 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_60_ansi_tsangan(
+ 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_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_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, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
+ )
+ [1] = LAYOUT_60_ansi_tsangan(
+ 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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
+
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan/readme.md
new file mode 100644
index 000000000000..5bdb4a102612
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan/readme.md
@@ -0,0 +1 @@
+# The keymap for krush60 solder Tsangan
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan_splt_bs/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan_splt_bs/keymap.c
new file mode 100644
index 000000000000..9fba9e6bf344
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan_splt_bs/keymap.c
@@ -0,0 +1,35 @@
+/* Copyright 2021 REPLACE_WITH_YOUR_NAME
+ *
+ * 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_60_ansi_tsangan_split_bs(
+ 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_BSPC,
+ 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_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, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
+ )
+ [1] = LAYOUT_60_ansi_tsangan_split_bs(
+ 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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan_splt_bs/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan_splt_bs/readme.md
new file mode 100644
index 000000000000..03c0444cc6fe
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/60_tsangan_splt_bs/readme.md
@@ -0,0 +1 @@
+# The keymap for krush60 solder Tsangan & split backspace
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/default/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/default/keymap.c
new file mode 100644
index 000000000000..f1ef9911dd40
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/default/keymap.c
@@ -0,0 +1,40 @@
+/* Copyright 2021 REPLACE_WITH_YOUR_NAME
+ *
+ * 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] = {
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
+ * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │Ctrl│GUI │Alt │ │ Alt│ GUI│Menu│Ctrl│
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+ [0] = LAYOUT_60_ansi(
+ 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_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_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL
+ )
+};
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/default/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/default/readme.md
new file mode 100644
index 000000000000..88157e507eaa
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The keymap default for krush60
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/via/keymap.c b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/via/keymap.c
new file mode 100644
index 000000000000..a6e005bbbb2e
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/via/keymap.c
@@ -0,0 +1,49 @@
+/* Copyright 2021 REPLACE_WITH_YOUR_NAME
+ *
+ * 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_all(
+ 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_BSPC,
+ 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_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_RSFT, KC_SLSH,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(0), KC_LEFT, KC_LALT, KC_LCTL
+ ),
+ [1] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/via/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/via/readme.md
new file mode 100644
index 000000000000..8f8d7a19bda0
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/via/readme.md
@@ -0,0 +1 @@
+# The keymap VIA for krush60
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/keymaps/via/rules.mk b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/via/rules.mk
new file mode 100644
index 000000000000..036bd6d1c3ec
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/readme.md b/keyboards/sawnsprojects/krush/krush60/solder/readme.md
new file mode 100644
index 000000000000..36da34d372f7
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/readme.md
@@ -0,0 +1,15 @@
+# Krush60 solder
+
+![Krush60](https://cdn.discordapp.com/attachments/898507964942536715/906171092916391956/252763374_2899749087003964_8763371038132517512_n.png)
+
+A 60% keyboard PCB made and sold by SawnsProjects with Nuxros in [Facebook](https://www.facebook.com/groups/vnmkmarket/posts/1412997345762674).
+
+* Keyboard Maintainer: [Mai The San](https://github.com/MaiTheSan)
+* Hardware Supported: 60% keyboard case
+* Hardware Availability: [Facebook](https://www.facebook.com/groups/vnmkmarket/posts/1412997345762674)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make sawnsprojects/krush60/solder: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).
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/rules.mk b/keyboards/sawnsprojects/krush/krush60/solder/rules.mk
new file mode 100644
index 000000000000..439db87a5843
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/rules.mk
@@ -0,0 +1,22 @@
+# 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 = yes # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+
+LAYOUTS = 60_ansi 60_ansi_arrow 60_ansi_arrow_split_bs_7u_spc
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/solder.c b/keyboards/sawnsprojects/krush/krush60/solder/solder.c
new file mode 100644
index 000000000000..2fb9b24f8c2d
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/solder.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 SawnsProjects
+ *
+ * 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 "solder.h"
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/solder.h b/keyboards/sawnsprojects/krush/krush60/solder/solder.h
new file mode 100644
index 000000000000..d442776c9df3
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush60/solder/solder.h
@@ -0,0 +1,333 @@
+/* Copyright 2021 SawnsProjects
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#include "quantum.h"
+#define XXX KC_NO
+//x
+#define LAYOUT_all( \
+ K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, \
+ K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K66, K77, \
+ K80, K90, K81, K82, K92, K84, K94, K85, K86, K95, K97 \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, XXX }, \
+ { K10, K11, K12, K13, K14, K15, XXX, K17 }, \
+ { K20, K21, K22, K23, K24, K25, K26, XXX }, \
+ { K30, K31, K32, K33, K34, K35, K36, XXX }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47 }, \
+ { K50, K51, K52, K53, K54, K55, XXX, XXX }, \
+ { K60, K61, K62, K63, K64, K65, K66, XXX }, \
+ { K70, K71, K72, K73, K74, K75, XXX, K77 }, \
+ { K80, K81, K82, XXX, K84, K85, K86, XXX }, \
+ { K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \
+}
+
+//LAYOUT_60_ansi
+//x
+#define LAYOUT_60_ansi( \
+ K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, \
+ K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, \
+ K80, K90, K81, K92, K94, K85, K95, K97 \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, XXX }, \
+ { K10, K11, K12, K13, K14, K15, XXX, XXX }, \
+ { K20, K21, K22, K23, K24, K25, K26, XXX }, \
+ { K30, K31, K32, K33, K34, K35, K36, XXX }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47 }, \
+ { K50, K51, K52, K53, K54, K55, XXX, XXX }, \
+ { K60, K61, K62, K63, K64, K65, K66, XXX }, \
+ { K70, K71, K72, K73, K74, XXX, XXX, XXX }, \
+ { K80, K81, XXX, XXX, XXX, K85, XXX, XXX }, \
+ { K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \
+}
+//LAYOUT_60_iso
+//x
+#define LAYOUT_60_iso(\
+ K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, \
+ K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, \
+ K80, K90, K81, K92, K94, K85, K95, K97 \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, XXX }, \
+ { K10, K11, K12, K13, K14, K15, XXX, XXX }, \
+ { K20, K21, K22, K23, K24, K25, K26, XXX }, \
+ { K30, K31, K32, K33, K34, K35, K36, XXX }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47 }, \
+ { K50, K51, K52, K53, K54, K55, XXX, XXX }, \
+ { K60, K61, K62, K63, K64, K65, K66, XXX }, \
+ { K70, K71, K72, K73, K74, XXX, XXX, XXX }, \
+ { K80, K81, XXX, XXX, XXX, K85, XXX, XXX }, \
+ { K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \
+}
+//LAYOUT_60_ansi_split_bs
+#define LAYOUT_60_ansi_split_bs( \
+ K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, \
+ K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, \
+ K80, K90, K81, K92, K94, K85, K95, K97 \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, XXX }, \
+ { K10, K11, K12, K13, K14, K15, XXX, K17 }, \
+ { K20, K21, K22, K23, K24, K25, K26, XXX }, \
+ { K30, K31, K32, K33, K34, K35, K36, XXX }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47 }, \
+ { K50, K51, K52, K53, K54, K55, XXX, XXX }, \
+ { K60, K61, K62, K63, K64, K65, K66, XXX }, \
+ { K70, K71, K72, K73, K74, XXX, XXX, XXX }, \
+ { K80, K81, XXX, XXX, XXX, K85, XXX, XXX }, \
+ { K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \
+}
+//LAYOUT_60_ansi_split_spc
+#define LAYOUT_60_ansi_split_spc( \
+ K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, \
+ K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, \
+ K80, K90, K81, K82, K92, K84, K94, K85, K95, K97 \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, XXX }, \
+ { K10, K11, K12, K13, K14, K15, XXX, XXX }, \
+ { K20, K21, K22, K23, K24, K25, K26, XXX }, \
+ { K30, K31, K32, K33, K34, K35, K36, XXX }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47 }, \
+ { K50, K51, K52, K53, K54, K55, XXX, XXX }, \
+ { K60, K61, K62, K63, K64, K65, K66, XXX }, \
+ { K70, K71, K72, K73, K74, XXX, XXX, XXX }, \
+ { K80, K81, K82, XXX, K84, K85, XXX, XXX }, \
+ { K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \
+}
+//LAYOUT_60_ansi_split_bs_spc
+#define LAYOUT_60_ansi_split_bs_spc( \
+ K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, \
+ K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, \
+ K80, K90, K81, K82, K92, K84, K94, K85, K95, K97 \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, XXX }, \
+ { K10, K11, K12, K13, K14, K15, XXX, K17 }, \
+ { K20, K21, K22, K23, K24, K25, K26, XXX }, \
+ { K30, K31, K32, K33, K34, K35, K36, XXX }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47 }, \
+ { K50, K51, K52, K53, K54, K55, XXX, XXX }, \
+ { K60, K61, K62, K63, K64, K65, K66, XXX }, \
+ { K70, K71, K72, K73, K74, XXX, XXX, XXX }, \
+ { K80, K81, K82, XXX, K84, K85, XXX, XXX }, \
+ { K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \
+}
+//LAYOUT_60_ansi_7u_spc
+#define LAYOUT_60_ansi_7u_spc( \
+ K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, \
+ K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, \
+ K80, K90, K81, K92, K85, K95, K97 \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, XXX }, \
+ { K10, K11, K12, K13, K14, K15, XXX, XXX }, \
+ { K20, K21, K22, K23, K24, K25, K26, XXX }, \
+ { K30, K31, K32, K33, K34, K35, K36, XXX }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47 }, \
+ { K50, K51, K52, K53, K54, K55, XXX, XXX }, \
+ { K60, K61, K62, K63, K64, K65, K66, XXX }, \
+ { K70, K71, K72, K73, K74, XXX, XXX, XXX }, \
+ { K80, K81, XXX, XXX, XXX, K85, XXX, XXX }, \
+ { K90, XXX, K92, XXX, XXX, K95, XXX, K97 }, \
+}
+//LAYOUT_60_ansi_split_7u_spc
+#define LAYOUT_60_ansi_split_bs_7u_spc( \
+ K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, \
+ K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, \
+ K80, K90, K81, K92, K85, K95, K97 \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, XXX }, \
+ { K10, K11, K12, K13, K14, K15, XXX, K17 }, \
+ { K20, K21, K22, K23, K24, K25, K26, XXX }, \
+ { K30, K31, K32, K33, K34, K35, K36, XXX }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47 }, \
+ { K50, K51, K52, K53, K54, K55, XXX, XXX }, \
+ { K60, K61, K62, K63, K64, K65, K66, XXX }, \
+ { K70, K71, K72, K73, K74, XXX, XXX, XXX }, \
+ { K80, K81, XXX, XXX, XXX, K85, XXX, XXX }, \
+ { K90, XXX, K92, XXX, XXX, K95, XXX, K97 }, \
+}
+//LAYOUT_60_ansi_arrow_split_bs
+#define LAYOUT_60_ansi_arrow_split_bs( \
+ K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, \
+ K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K75, K66, K77, \
+ K80, K90, K81, K92, K94, K85, K86, K95, K97 \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, XXX }, \
+ { K10, K11, K12, K13, K14, K15, XXX, K17 }, \
+ { K20, K21, K22, K23, K24, K25, K26, XXX }, \
+ { K30, K31, K32, K33, K34, K35, K36, XXX }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47 }, \
+ { K50, K51, K52, K53, K54, K55, XXX, XXX }, \
+ { K60, K61, K62, K63, K64, XXX, K66, XXX }, \
+ { K70, K71, K72, K73, K74, K75, XXX, K77 }, \
+ { K80, K81, XXX, XXX, XXX, K85, K86, XXX }, \
+ { K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \
+}
+//LAYOUT_60_ansi_arrow_split_spc
+#define LAYOUT_60_ansi_arrow_split_spc( \
+ K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, \
+ K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K75, K66, K77, \
+ K80, K90, K81, K82, K92, K84, K94, K85, K86, K95, K97 \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, XXX }, \
+ { K10, K11, K12, K13, K14, K15, XXX, XXX }, \
+ { K20, K21, K22, K23, K24, K25, K26, XXX }, \
+ { K30, K31, K32, K33, K34, K35, K36, XXX }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47 }, \
+ { K50, K51, K52, K53, K54, K55, XXX, XXX }, \
+ { K60, K61, K62, K63, K64, XXX, K66, XXX }, \
+ { K70, K71, K72, K73, K74, K75, XXX, K77 }, \
+ { K80, K81, K82, XXX, K84, K85, K86, XXX }, \
+ { K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \
+}
+//LAYOUT_60_ansi_arrow_split_bs_spc
+#define LAYOUT_60_ansi_arrow_split_bs_spc( \
+ K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, \
+ K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K75, K66, K77, \
+ K80, K90, K81, K82, K92, K84, K94, K85, K86, K95, K97 \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, XXX }, \
+ { K10, K11, K12, K13, K14, K15, XXX, K17 }, \
+ { K20, K21, K22, K23, K24, K25, K26, XXX }, \
+ { K30, K31, K32, K33, K34, K35, K36, XXX }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47 }, \
+ { K50, K51, K52, K53, K54, K55, XXX, XXX }, \
+ { K60, K61, K62, K63, K64, XXX, K66, XXX }, \
+ { K70, K71, K72, K73, K74, K75, XXX, K77 }, \
+ { K80, K81, K82, XXX, K84, K85, K86, XXX }, \
+ { K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \
+}
+//LAYOUT_60_ansi_arrow_7u_spc
+#define LAYOUT_60_ansi_arrow_7u_spc( \
+ K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, \
+ K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K75, K66, K77, \
+ K80, K90, K81, K92, K85, K86, K95, K97 \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, XXX }, \
+ { K10, K11, K12, K13, K14, K15, XXX, XXX }, \
+ { K20, K21, K22, K23, K24, K25, K26, XXX }, \
+ { K30, K31, K32, K33, K34, K35, K36, XXX }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47 }, \
+ { K50, K51, K52, K53, K54, K55, XXX, XXX }, \
+ { K60, K61, K62, K63, K64, XXX, K66, XXX }, \
+ { K70, K71, K72, K73, K74, K75, XXX, K77 }, \
+ { K80, K81, XXX, XXX, XXX, K85, K86, XXX }, \
+ { K90, XXX, K92, XXX, XXX, K95, XXX, K97 }, \
+}
+//LAYOUT_60_ansi_arrow
+//x
+#define LAYOUT_60_ansi_arrow( \
+ K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, \
+ K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K75, K66, K77, \
+ K80, K90, K81, K92, K94, K85, K86, K95, K97 \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, XXX }, \
+ { K10, K11, K12, K13, K14, K15, XXX, XXX }, \
+ { K20, K21, K22, K23, K24, K25, K26, XXX }, \
+ { K30, K31, K32, K33, K34, K35, K36, XXX }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47 }, \
+ { K50, K51, K52, K53, K54, K55, XXX, XXX }, \
+ { K60, K61, K62, K63, K64, XXX, K66, XXX }, \
+ { K70, K71, K72, K73, K74, K75, XXX, K77 }, \
+ { K80, K81, XXX, XXX, XXX, K85, K86, XXX }, \
+ { K90, XXX, K92, XXX, K94, K95, XXX, K97 }, \
+}
+//x
+//LAYOUT_60_ansi_arrow_split_bs_7u_spc
+#define LAYOUT_60_ansi_arrow_split_bs_7u_spc( \
+ K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, \
+ K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K75, K66, K77, \
+ K80, K90, K81, K92, K85, K86, K95, K97 \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, XXX }, \
+ { K10, K11, K12, K13, K14, K15, XXX, K17 }, \
+ { K20, K21, K22, K23, K24, K25, K26, XXX }, \
+ { K30, K31, K32, K33, K34, K35, K36, XXX }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47 }, \
+ { K50, K51, K52, K53, K54, K55, XXX, XXX }, \
+ { K60, K61, K62, K63, K64, XXX, K66, XXX }, \
+ { K70, K71, K72, K73, K74, K75, XXX, K77 }, \
+ { K80, K81, XXX, XXX, XXX, K85, K86, XXX }, \
+ { K90, XXX, K92, XXX, XXX, K95, XXX, K97 }, \
+}
+//LAYOUT_60_ansi_tsangan
+#define LAYOUT_60_ansi_tsangan( \
+ K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, \
+ K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, K77, \
+ K80, K90, K81, K92, K85, K95, K97 \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, XXX }, \
+ { K10, K11, K12, K13, K14, K15, XXX, XXX }, \
+ { K20, K21, K22, K23, K24, K25, K26, XXX }, \
+ { K30, K31, K32, K33, K34, K35, K36, XXX }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47 }, \
+ { K50, K51, K52, K53, K54, K55, XXX, XXX }, \
+ { K60, K61, K62, K63, K64, K65, K66, XXX }, \
+ { K70, K71, K72, K73, K74, XXX, XXX, K77 }, \
+ { K80, K81, XXX, XXX, XXX, K85, XXX, XXX }, \
+ { K90, XXX, K92, XXX, XXX, K95, XXX, K97 }, \
+}
+//LAYOUT_60_ansi_tsangan_split_bs
+#define LAYOUT_60_ansi_tsangan_split_bs( \
+ K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, \
+ K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K66, K77, \
+ K80, K90, K81, K92, K85, K95, K97 \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, XXX }, \
+ { K10, K11, K12, K13, K14, K15, XXX, K17 }, \
+ { K20, K21, K22, K23, K24, K25, K26, XXX }, \
+ { K30, K31, K32, K33, K34, K35, K36, XXX }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47 }, \
+ { K50, K51, K52, K53, K54, K55, XXX, XXX }, \
+ { K60, K61, K62, K63, K64, K65, K66, XXX }, \
+ { K70, K71, K72, K73, K74, XXX, XXX, K77 }, \
+ { K80, K81, XXX, XXX, XXX, K85, XXX, XXX }, \
+ { K90, XXX, K92, XXX, XXX, K95, XXX, K97 }, \
+}
+//LAYOUT_60_iso_tsangan
+#define LAYOUT_60_iso_tsangan LAYOUT_60_ansi_tsangan
+//LAYOUT_60_iso_tsangan_split_bs
+#define LAYOUT_60_iso_tsangan_split_bs LAYOUT_60_ansi_tsangan_split_bs
diff --git a/keyboards/sawnsprojects/krush/krush65/readme.md b/keyboards/sawnsprojects/krush/krush65/readme.md
new file mode 100644
index 000000000000..34e996f0bf2e
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush65/readme.md
@@ -0,0 +1,25 @@
+# Krush65
+
+A 65% keyboard sold in several variants.
+
+1. [Solder](solder/): 06/2021. Atmega32u4 soldered keyboard. Sold under the name "Krush65" with krush keyboard case. Compatible with some KBD67 case.
+
+ **Firmware files are SPECIFIC to each board. Firmware files from one, will not work on the other.** Please use the `.hex` or `.bin` appropriate for your board.
+
+* Keyboard Maintainer: [SawnsProjects](https://github.com/MaiTheSan)
+* Hardware Supported: Krush65
+* Hardware Availability: [Mechkey.store](https://mechkey.store/)
+
+Make examples for this keyboard (after setting up your build environment):
+
+ make sawnsprojects/krush/krush65/solder:default
+
+## 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 `RESET` if it is available
+
+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).
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush65/solder/config.h b/keyboards/sawnsprojects/krush/krush65/solder/config.h
new file mode 100644
index 000000000000..9356e6cfba2f
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush65/solder/config.h
@@ -0,0 +1,68 @@
+/* Copyright 2021 SawnsProjects
+ *
+ * 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 .
+ */
+
+#pragma once
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x5350
+#define PRODUCT_ID 0x6B31
+#define DEVICE_VER 0x0001
+#define MANUFACTURER SawnsProjects
+#define PRODUCT Krush65 - Solder
+
+/* key matrix size */
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 8
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { B1, B2, D1, D2, D4, D6, F6, F7, F5, F4 }
+#define MATRIX_COL_PINS { C7, C6, B6, B5, B4, D7, D5, D3 }
+#define UNUSED_PINS
+
+/* indicator */
+// #define LED_CAPS_LOCK_PIN F0
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+/* Caps Lock */
+#define LED_CAPS_LOCK_PIN F0
+
+/* rotary */
+#define ENCODERS_PAD_A { D0 }
+#define ENCODERS_PAD_B { B3 }
+#define ENCODER_RESOLUTION 4
+
+#define RGB_DI_PIN F1
+#ifdef RGB_DI_PIN
+ #define RGBLED_NUM 20
+ #define RGBLIGHT_HUE_STEP 8
+ #define RGBLIGHT_SAT_STEP 8
+ #define RGBLIGHT_VAL_STEP 8
+ #define RGBLIGHT_LIMIT_VAL 200 /* The maximum brightness level */
+ #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+/*== all animations enable ==*/
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+#endif
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush65/solder/encoder_actions.c b/keyboards/sawnsprojects/krush/krush65/solder/encoder_actions.c
new file mode 100644
index 000000000000..039f8739b4d1
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush65/solder/encoder_actions.c
@@ -0,0 +1,58 @@
+/* Copyright 2020 Neil Brian Ramirez
+ * Copyright 2021 drashna jael're (@drashna)
+ * Copyright 2021 uybv
+ * Copyright 2021 SawnsProjects
+ *
+ * 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 .
+ */
+
+#include "encoder_actions.h"
+
+#ifdef ENCODER_ENABLE
+
+# ifdef ENCODERS
+static uint8_t encoder_state[ENCODERS] = {0};
+static keypos_t encoder_cw[ENCODERS] = ENCODERS_CW_KEY;
+static keypos_t encoder_ccw[ENCODERS] = ENCODERS_CCW_KEY;
+# endif
+
+void encoder_action_unregister(void) {
+# ifdef ENCODERS
+ for (int index = 0; index < ENCODERS; ++index) {
+ if (encoder_state[index]) {
+ keyevent_t encoder_event = (keyevent_t) {
+ .key = encoder_state[index] >> 1 ? encoder_cw[index] : encoder_ccw[index],
+ .pressed = false,
+ .time = (timer_read() | 1)
+ };
+ encoder_state[index] = 0;
+ action_exec(encoder_event);
+ }
+ }
+# endif
+}
+
+void encoder_action_register(uint8_t index, bool clockwise) {
+# ifdef ENCODERS
+ keyevent_t encoder_event = (keyevent_t) {
+ .key = clockwise ? encoder_cw[index] : encoder_ccw[index],
+ .pressed = true,
+ .time = (timer_read() | 1)
+ };
+ encoder_state[index] = (clockwise ^ 1) | (clockwise << 1);
+ action_exec(encoder_event);
+# endif
+}
+
+#endif
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush65/solder/encoder_actions.h b/keyboards/sawnsprojects/krush/krush65/solder/encoder_actions.h
new file mode 100644
index 000000000000..098210d40c4f
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush65/solder/encoder_actions.h
@@ -0,0 +1,21 @@
+/* Copyright 2020 Neil Brian Ramirez
+ *
+ * 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 .
+ */
+
+#include "quantum.h"
+
+void encoder_action_unregister(void);
+
+void encoder_action_register(uint8_t index, bool clockwise);
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush65/solder/info.json b/keyboards/sawnsprojects/krush/krush65/solder/info.json
new file mode 100644
index 000000000000..6c10d660e237
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush65/solder/info.json
@@ -0,0 +1,299 @@
+{
+ "keyboard_name": "Krush65 Solder",
+ "url": "",
+ "maintainer": "MaiTheSan",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ { "label": "K00 (B1,C7)", "x": 0, "y": 0 },
+ { "label": "K10 (B2,C7)", "x": 1, "y": 0 },
+ { "label": "K01 (B1,C6)", "x": 2, "y": 0 },
+ { "label": "K11 (B2,C6)", "x": 3, "y": 0 },
+ { "label": "K02 (B1,B6)", "x": 4, "y": 0 },
+ { "label": "K12 (B2,B6)", "x": 5, "y": 0 },
+ { "label": "K03 (B1,B5)", "x": 6, "y": 0 },
+ { "label": "K13 (B2,B5)", "x": 7, "y": 0 },
+ { "label": "K04 (B1,B4)", "x": 8, "y": 0 },
+ { "label": "K14 (B2,B4)", "x": 9, "y": 0 },
+ { "label": "K05 (B1,D7)", "x": 10, "y": 0 },
+ { "label": "K15 (B2,D7)", "x": 11, "y": 0 },
+ { "label": "K06 (B1,D5)", "x": 12, "y": 0 },
+ { "label": "K26 (D1,D5)", "x": 13, "y": 0 },
+ { "label": "K17 (B2,D3)", "x": 14, "y": 0 },
+ { "label": "K07 (B1,D3)", "x": 15, "y": 0 },
+ { "label": "K20 (D1,C7)", "x": 0, "y": 1, "w": 1.5 },
+ { "label": "K30 (D2,C7)", "x": 1.5, "y": 1 },
+ { "label": "K21 (D1,C6)", "x": 2.5, "y": 1 },
+ { "label": "K31 (D2,C6)", "x": 3.5, "y": 1 },
+ { "label": "K22 (D1,B6)", "x": 4.5, "y": 1 },
+ { "label": "K32 (D2,B6)", "x": 5.5, "y": 1 },
+ { "label": "K23 (D1,B5)", "x": 6.5, "y": 1 },
+ { "label": "K33 (D2,B5)", "x": 7.5, "y": 1 },
+ { "label": "K24 (D1,B4)", "x": 8.5, "y": 1 },
+ { "label": "K34 (D2,B4)", "x": 9.5, "y": 1 },
+ { "label": "K25 (D1,D7)", "x": 10.5, "y": 1 },
+ { "label": "K35 (D2,D7)", "x": 11.5, "y": 1 },
+ { "label": "K36 (D2,D5)", "x": 12.5, "y": 1 },
+ { "label": "K46 (D4,D5)", "x": 13.5, "y": 1, "w": 1.5 },
+ { "label": "K37 (D2,D3)", "x": 15, "y": 1 },
+ { "label": "K40 (D4,C7)", "x": 0, "y": 2, "w": 1.75 },
+ { "label": "K50 (D6,C7)", "x": 1.75, "y": 2 },
+ { "label": "K41 (D4,C6)", "x": 2.75, "y": 2 },
+ { "label": "K51 (D6,C6)", "x": 3.75, "y": 2 },
+ { "label": "K42 (D4,B6)", "x": 4.75, "y": 2 },
+ { "label": "K52 (D6,B6)", "x": 5.75, "y": 2 },
+ { "label": "K43 (D4,B5)", "x": 6.75, "y": 2 },
+ { "label": "K53 (D6,B5)", "x": 7.75, "y": 2 },
+ { "label": "K44 (D4,B4)", "x": 8.75, "y": 2 },
+ { "label": "K54 (D6,B4)", "x": 9.75, "y": 2 },
+ { "label": "K45 (D4,D7)", "x": 10.75, "y": 2 },
+ { "label": "K55 (D6,D7)", "x": 11.75, "y": 2 },
+ { "label": "K47 (D4,D3)", "x": 12.75, "y": 2, "w": 2.25 },
+ { "label": "K57 (D6,D3)", "x": 15, "y": 2 },
+ { "label": "K60 (F6,C7)", "x": 0, "y": 3, "w": 2.25 },
+ { "label": "K70 (F7,C7)", "x": 2.25, "y": 3 },
+ { "label": "K61 (F6,C6)", "x": 3.25, "y": 3 },
+ { "label": "K71 (F7,C6)", "x": 4.25, "y": 3 },
+ { "label": "K62 (F6,B6)", "x": 5.25, "y": 3 },
+ { "label": "K72 (F7,B6)", "x": 6.25, "y": 3 },
+ { "label": "K63 (F6,B5)", "x": 7.25, "y": 3 },
+ { "label": "K73 (F7,B5)", "x": 8.25, "y": 3 },
+ { "label": "K64 (F6,B4)", "x": 9.25, "y": 3 },
+ { "label": "K74 (F7,B4)", "x": 10.25, "y": 3 },
+ { "label": "K65 (F6,D7)", "x": 11.25, "y": 3 },
+ { "label": "K75 (F7,D7)", "x": 12.25, "y": 3, "w": 1.75 },
+ { "label": "K77 (F7,D3)", "x": 14, "y": 3 },
+ { "label": "K67 (F6,D3)", "x": 15, "y": 3 },
+ { "label": "K80 (F5,C7)", "x": 0, "y": 4, "w": 1.25 },
+ { "label": "K90 (F4,C7)", "x": 1.25, "y": 4, "w": 1.25 },
+ { "label": "K81 (F5,C6)", "x": 2.5, "y": 4, "w": 1.25 },
+ { "label": "K82 (F5,B6)", "x": 3.75, "y": 4, "w": 2.25 },
+ { "label": "K92 (F4,B6)", "x": 6, "y": 4, "w": 1.25 },
+ { "label": "K93 (F4,B5)", "x": 7.25, "y": 4, "w": 2.75 },
+ { "label": "K94 (F4,B4)", "x": 10, "y": 4, "w": 1.25 },
+ { "label": "K85 (F5,D7)", "x": 11.25, "y": 4, "w": 1.25 },
+ { "label": "K95 (F4,D7)", "x": 13, "y": 4 },
+ { "label": "K97 (F4,D3)", "x": 14, "y": 4 },
+ { "label": "K87 (F5,D3)", "x": 15, "y": 4 }
+ ]
+ },
+ "LAYOUT_65_ansi_blocker_split_bs_sp": {
+ "layout": [
+ { "label": "K00 (B1,C7)", "x": 0, "y": 0 },
+ { "label": "K10 (B2,C7)", "x": 1, "y": 0 },
+ { "label": "K01 (B1,C6)", "x": 2, "y": 0 },
+ { "label": "K11 (B2,C6)", "x": 3, "y": 0 },
+ { "label": "K02 (B1,B6)", "x": 4, "y": 0 },
+ { "label": "K12 (B2,B6)", "x": 5, "y": 0 },
+ { "label": "K03 (B1,B5)", "x": 6, "y": 0 },
+ { "label": "K13 (B2,B5)", "x": 7, "y": 0 },
+ { "label": "K04 (B1,B4)", "x": 8, "y": 0 },
+ { "label": "K14 (B2,B4)", "x": 9, "y": 0 },
+ { "label": "K05 (B1,D7)", "x": 10, "y": 0 },
+ { "label": "K15 (B2,D7)", "x": 11, "y": 0 },
+ { "label": "K06 (B1,D5)", "x": 12, "y": 0 },
+ { "label": "K26 (D1,D5)", "x": 13, "y": 0 },
+ { "label": "K17 (B2,D3)", "x": 14, "y": 0 },
+ { "label": "K07 (B1,D3)", "x": 15, "y": 0 },
+ { "label": "K20 (D1,C7)", "x": 0, "y": 1, "w": 1.5 },
+ { "label": "K30 (D2,C7)", "x": 1.5, "y": 1 },
+ { "label": "K21 (D1,C6)", "x": 2.5, "y": 1 },
+ { "label": "K31 (D2,C6)", "x": 3.5, "y": 1 },
+ { "label": "K22 (D1,B6)", "x": 4.5, "y": 1 },
+ { "label": "K32 (D2,B6)", "x": 5.5, "y": 1 },
+ { "label": "K23 (D1,B5)", "x": 6.5, "y": 1 },
+ { "label": "K33 (D2,B5)", "x": 7.5, "y": 1 },
+ { "label": "K24 (D1,B4)", "x": 8.5, "y": 1 },
+ { "label": "K34 (D2,B4)", "x": 9.5, "y": 1 },
+ { "label": "K25 (D1,D7)", "x": 10.5, "y": 1 },
+ { "label": "K35 (D2,D7)", "x": 11.5, "y": 1 },
+ { "label": "K36 (D2,D5)", "x": 12.5, "y": 1 },
+ { "label": "K46 (D4,D5)", "x": 13.5, "y": 1, "w": 1.5 },
+ { "label": "K37 (D2,D3)", "x": 15, "y": 1 },
+ { "label": "K40 (D4,C7)", "x": 0, "y": 2, "w": 1.75 },
+ { "label": "K50 (D6,C7)", "x": 1.75, "y": 2 },
+ { "label": "K41 (D4,C6)", "x": 2.75, "y": 2 },
+ { "label": "K51 (D6,C6)", "x": 3.75, "y": 2 },
+ { "label": "K42 (D4,B6)", "x": 4.75, "y": 2 },
+ { "label": "K52 (D6,B6)", "x": 5.75, "y": 2 },
+ { "label": "K43 (D4,B5)", "x": 6.75, "y": 2 },
+ { "label": "K53 (D6,B5)", "x": 7.75, "y": 2 },
+ { "label": "K44 (D4,B4)", "x": 8.75, "y": 2 },
+ { "label": "K54 (D6,B4)", "x": 9.75, "y": 2 },
+ { "label": "K45 (D4,D7)", "x": 10.75, "y": 2 },
+ { "label": "K55 (D6,D7)", "x": 11.75, "y": 2 },
+ { "label": "K47 (D4,D3)", "x": 12.75, "y": 2, "w": 2.25 },
+ { "label": "K57 (D6,D3)", "x": 15, "y": 2 },
+ { "label": "K60 (F6,C7)", "x": 0, "y": 3, "w": 2.25 },
+ { "label": "K70 (F7,C7)", "x": 2.25, "y": 3 },
+ { "label": "K61 (F6,C6)", "x": 3.25, "y": 3 },
+ { "label": "K71 (F7,C6)", "x": 4.25, "y": 3 },
+ { "label": "K62 (F6,B6)", "x": 5.25, "y": 3 },
+ { "label": "K72 (F7,B6)", "x": 6.25, "y": 3 },
+ { "label": "K63 (F6,B5)", "x": 7.25, "y": 3 },
+ { "label": "K73 (F7,B5)", "x": 8.25, "y": 3 },
+ { "label": "K64 (F6,B4)", "x": 9.25, "y": 3 },
+ { "label": "K74 (F7,B4)", "x": 10.25, "y": 3 },
+ { "label": "K65 (F6,D7)", "x": 11.25, "y": 3 },
+ { "label": "K75 (F7,D7)", "x": 12.25, "y": 3, "w": 1.75 },
+ { "label": "K77 (F7,D3)", "x": 14, "y": 3 },
+ { "label": "K67 (F6,D3)", "x": 15, "y": 3 },
+ { "label": "K80 (F5,C7)", "x": 0, "y": 4, "w": 1.25 },
+ { "label": "K90 (F4,C7)", "x": 1.25, "y": 4, "w": 1.25 },
+ { "label": "K81 (F5,C6)", "x": 2.5, "y": 4, "w": 1.25 },
+ { "label": "K82 (F5,B6)", "x": 3.75, "y": 4, "w": 2.25 },
+ { "label": "K92 (F4,B6)", "x": 6, "y": 4, "w": 1.25 },
+ { "label": "K93 (F4,B5)", "x": 7.25, "y": 4, "w": 2.75 },
+ { "label": "K94 (F4,B4)", "x": 10, "y": 4, "w": 1.25 },
+ { "label": "K85 (F5,D7)", "x": 11.25, "y": 4, "w": 1.25 },
+ { "label": "K95 (F4,D7)", "x": 13, "y": 4 },
+ { "label": "K97 (F4,D3)", "x": 14, "y": 4 },
+ { "label": "K87 (F5,D3)", "x": 15, "y": 4 }
+ ]
+ },
+
+ "LAYOUT_65_ansi_blocker": {
+ "layout": [
+ { "label": "K00 (B1,C7)", "x": 0, "y": 0 },
+ { "label": "K10 (B2,C7)", "x": 1, "y": 0 },
+ { "label": "K01 (B1,C6)", "x": 2, "y": 0 },
+ { "label": "K11 (B2,C6)", "x": 3, "y": 0 },
+ { "label": "K02 (B1,B6)", "x": 4, "y": 0 },
+ { "label": "K12 (B2,B6)", "x": 5, "y": 0 },
+ { "label": "K03 (B1,B5)", "x": 6, "y": 0 },
+ { "label": "K13 (B2,B5)", "x": 7, "y": 0 },
+ { "label": "K04 (B1,B4)", "x": 8, "y": 0 },
+ { "label": "K14 (B2,B4)", "x": 9, "y": 0 },
+ { "label": "K05 (B1,D7)", "x": 10, "y": 0 },
+ { "label": "K15 (B2,D7)", "x": 11, "y": 0 },
+ { "label": "K06 (B1,D5)", "x": 12, "y": 0 },
+ { "label": "K26 (D1,D5)", "x": 13, "y": 0, "w": 2 },
+ { "label": "K07 (B1,D3)", "x": 15, "y": 0 },
+ { "label": "K20 (D1,C7)", "x": 0, "y": 1, "w": 1.5 },
+ { "label": "K30 (D2,C7)", "x": 1.5, "y": 1 },
+ { "label": "K21 (D1,C6)", "x": 2.5, "y": 1 },
+ { "label": "K31 (D2,C6)", "x": 3.5, "y": 1 },
+ { "label": "K22 (D1,B6)", "x": 4.5, "y": 1 },
+ { "label": "K32 (D2,B6)", "x": 5.5, "y": 1 },
+ { "label": "K23 (D1,B5)", "x": 6.5, "y": 1 },
+ { "label": "K33 (D2,B5)", "x": 7.5, "y": 1 },
+ { "label": "K24 (D1,B4)", "x": 8.5, "y": 1 },
+ { "label": "K34 (D2,B4)", "x": 9.5, "y": 1 },
+ { "label": "K25 (D1,D7)", "x": 10.5, "y": 1 },
+ { "label": "K35 (D2,D7)", "x": 11.5, "y": 1 },
+ { "label": "K36 (D2,D5)", "x": 12.5, "y": 1 },
+ { "label": "K46 (D4,D5)", "x": 13.5, "y": 1, "w": 1.5 },
+ { "label": "K37 (D2,D3)", "x": 15, "y": 1 },
+ { "label": "K40 (D4,C7)", "x": 0, "y": 2, "w": 1.75 },
+ { "label": "K50 (D6,C7)", "x": 1.75, "y": 2 },
+ { "label": "K41 (D4,C6)", "x": 2.75, "y": 2 },
+ { "label": "K51 (D6,C6)", "x": 3.75, "y": 2 },
+ { "label": "K42 (D4,B6)", "x": 4.75, "y": 2 },
+ { "label": "K52 (D6,B6)", "x": 5.75, "y": 2 },
+ { "label": "K43 (D4,B5)", "x": 6.75, "y": 2 },
+ { "label": "K53 (D6,B5)", "x": 7.75, "y": 2 },
+ { "label": "K44 (D4,B4)", "x": 8.75, "y": 2 },
+ { "label": "K54 (D6,B4)", "x": 9.75, "y": 2 },
+ { "label": "K45 (D4,D7)", "x": 10.75, "y": 2 },
+ { "label": "K55 (D6,D7)", "x": 11.75, "y": 2 },
+ { "label": "K47 (D4,D3)", "x": 12.75, "y": 2, "w": 2.25 },
+ { "label": "K57 (D6,D3)", "x": 15, "y": 2 },
+ { "label": "K60 (F6,C7)", "x": 0, "y": 3, "w": 2.25 },
+ { "label": "K70 (F7,C7)", "x": 2.25, "y": 3 },
+ { "label": "K61 (F6,C6)", "x": 3.25, "y": 3 },
+ { "label": "K71 (F7,C6)", "x": 4.25, "y": 3 },
+ { "label": "K62 (F6,B6)", "x": 5.25, "y": 3 },
+ { "label": "K72 (F7,B6)", "x": 6.25, "y": 3 },
+ { "label": "K63 (F6,B5)", "x": 7.25, "y": 3 },
+ { "label": "K73 (F7,B5)", "x": 8.25, "y": 3 },
+ { "label": "K64 (F6,B4)", "x": 9.25, "y": 3 },
+ { "label": "K74 (F7,B4)", "x": 10.25, "y": 3 },
+ { "label": "K65 (F6,D7)", "x": 11.25, "y": 3 },
+ { "label": "K75 (F7,D7)", "x": 12.25, "y": 3, "w": 1.75 },
+ { "label": "K77 (F7,D3)", "x": 14, "y": 3 },
+ { "label": "K67 (F6,D3)", "x": 15, "y": 3 },
+ { "label": "K80 (F5,C7)", "x": 0, "y": 4, "w": 1.25 },
+ { "label": "K90 (F4,C7)", "x": 1.25, "y": 4, "w": 1.25 },
+ { "label": "K81 (F5,C6)", "x": 2.5, "y": 4, "w": 1.25 },
+ { "label": "K92 (F4,B6)", "x": 3.75, "y": 4, "w": 6.25 },
+ { "label": "K94 (F4,B4)", "x": 10, "y": 4, "w": 1.25 },
+ { "label": "K85 (F5,D7)", "x": 11.25, "y": 4, "w": 1.25 },
+ { "label": "K95 (F4,D7)", "x": 13, "y": 4 },
+ { "label": "K97 (F4,D3)", "x": 14, "y": 4 },
+ { "label": "K87 (F5,D3)", "x": 15, "y": 4 }
+ ]
+ },
+ "LAYOUT_65_ansi_blocker_split_bs": {
+ "layout": [
+ { "label": "K00 (B1,C7)", "x": 0, "y": 0 },
+ { "label": "K10 (B2,C7)", "x": 1, "y": 0 },
+ { "label": "K01 (B1,C6)", "x": 2, "y": 0 },
+ { "label": "K11 (B2,C6)", "x": 3, "y": 0 },
+ { "label": "K02 (B1,B6)", "x": 4, "y": 0 },
+ { "label": "K12 (B2,B6)", "x": 5, "y": 0 },
+ { "label": "K03 (B1,B5)", "x": 6, "y": 0 },
+ { "label": "K13 (B2,B5)", "x": 7, "y": 0 },
+ { "label": "K04 (B1,B4)", "x": 8, "y": 0 },
+ { "label": "K14 (B2,B4)", "x": 9, "y": 0 },
+ { "label": "K05 (B1,D7)", "x": 10, "y": 0 },
+ { "label": "K15 (B2,D7)", "x": 11, "y": 0 },
+ { "label": "K06 (B1,D5)", "x": 12, "y": 0 },
+ { "label": "K26 (D1,D5)", "x": 13, "y": 0 },
+ { "label": "K17 (B2,D3)", "x": 14, "y": 0 },
+ { "label": "K07 (B1,D3)", "x": 15, "y": 0 },
+ { "label": "K20 (D1,C7)", "x": 0, "y": 1, "w": 1.5 },
+ { "label": "K30 (D2,C7)", "x": 1.5, "y": 1 },
+ { "label": "K21 (D1,C6)", "x": 2.5, "y": 1 },
+ { "label": "K31 (D2,C6)", "x": 3.5, "y": 1 },
+ { "label": "K22 (D1,B6)", "x": 4.5, "y": 1 },
+ { "label": "K32 (D2,B6)", "x": 5.5, "y": 1 },
+ { "label": "K23 (D1,B5)", "x": 6.5, "y": 1 },
+ { "label": "K33 (D2,B5)", "x": 7.5, "y": 1 },
+ { "label": "K24 (D1,B4)", "x": 8.5, "y": 1 },
+ { "label": "K34 (D2,B4)", "x": 9.5, "y": 1 },
+ { "label": "K25 (D1,D7)", "x": 10.5, "y": 1 },
+ { "label": "K35 (D2,D7)", "x": 11.5, "y": 1 },
+ { "label": "K36 (D2,D5)", "x": 12.5, "y": 1 },
+ { "label": "K46 (D4,D5)", "x": 13.5, "y": 1, "w": 1.5 },
+ { "label": "K37 (D2,D3)", "x": 15, "y": 1 },
+ { "label": "K40 (D4,C7)", "x": 0, "y": 2, "w": 1.75 },
+ { "label": "K50 (D6,C7)", "x": 1.75, "y": 2 },
+ { "label": "K41 (D4,C6)", "x": 2.75, "y": 2 },
+ { "label": "K51 (D6,C6)", "x": 3.75, "y": 2 },
+ { "label": "K42 (D4,B6)", "x": 4.75, "y": 2 },
+ { "label": "K52 (D6,B6)", "x": 5.75, "y": 2 },
+ { "label": "K43 (D4,B5)", "x": 6.75, "y": 2 },
+ { "label": "K53 (D6,B5)", "x": 7.75, "y": 2 },
+ { "label": "K44 (D4,B4)", "x": 8.75, "y": 2 },
+ { "label": "K54 (D6,B4)", "x": 9.75, "y": 2 },
+ { "label": "K45 (D4,D7)", "x": 10.75, "y": 2 },
+ { "label": "K55 (D6,D7)", "x": 11.75, "y": 2 },
+ { "label": "K47 (D4,D3)", "x": 12.75, "y": 2, "w": 2.25 },
+ { "label": "K57 (D6,D3)", "x": 15, "y": 2 },
+ { "label": "K60 (F6,C7)", "x": 0, "y": 3, "w": 2.25 },
+ { "label": "K70 (F7,C7)", "x": 2.25, "y": 3 },
+ { "label": "K61 (F6,C6)", "x": 3.25, "y": 3 },
+ { "label": "K71 (F7,C6)", "x": 4.25, "y": 3 },
+ { "label": "K62 (F6,B6)", "x": 5.25, "y": 3 },
+ { "label": "K72 (F7,B6)", "x": 6.25, "y": 3 },
+ { "label": "K63 (F6,B5)", "x": 7.25, "y": 3 },
+ { "label": "K73 (F7,B5)", "x": 8.25, "y": 3 },
+ { "label": "K64 (F6,B4)", "x": 9.25, "y": 3 },
+ { "label": "K74 (F7,B4)", "x": 10.25, "y": 3 },
+ { "label": "K65 (F6,D7)", "x": 11.25, "y": 3 },
+ { "label": "K75 (F7,D7)", "x": 12.25, "y": 3, "w": 1.75 },
+ { "label": "K77 (F7,D3)", "x": 14, "y": 3 },
+ { "label": "K67 (F6,D3)", "x": 15, "y": 3 },
+ { "label": "K80 (F5,C7)", "x": 0, "y": 4, "w": 1.25 },
+ { "label": "K90 (F4,C7)", "x": 1.25, "y": 4, "w": 1.25 },
+ { "label": "K81 (F5,C6)", "x": 2.5, "y": 4, "w": 1.25 },
+ { "label": "K92 (F4,B6)", "x": 3.75, "y": 4, "w": 6.25 },
+ { "label": "K94 (F4,B4)", "x": 10, "y": 4, "w": 1.25 },
+ { "label": "K85 (F5,D7)", "x": 11.25, "y": 4, "w": 1.25 },
+ { "label": "K95 (F4,D7)", "x": 13, "y": 4 },
+ { "label": "K97 (F4,D3)", "x": 14, "y": 4 },
+ { "label": "K87 (F5,D3)", "x": 15, "y": 4 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker/keymap.c b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker/keymap.c
new file mode 100644
index 000000000000..99c42be9540b
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker/keymap.c
@@ -0,0 +1,39 @@
+/* Copyright 2021 SawnsProjects
+ *
+ * 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_65_ansi_blocker(
+ 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_GRV,
+ 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_SPC, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_65_ansi_blocker(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker/readme.md b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker/readme.md
new file mode 100644
index 000000000000..181cc9a013f8
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker/readme.md
@@ -0,0 +1 @@
+# The keymap for krush65 solder layout ansi blocker
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_all/keymap.c b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_all/keymap.c
new file mode 100644
index 000000000000..b2019e5ec828
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_all/keymap.c
@@ -0,0 +1,38 @@
+/* Copyright 2021 SawnsProjects
+ *
+ * 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_65_ansi_blocker_split_bs_sp(
+ 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_GRV, KC_PSCR,
+ 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_LALT, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_65_ansi_blocker_split_bs_sp(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_all/readme.md b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_all/readme.md
new file mode 100644
index 000000000000..b6d1da89aa15
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_all/readme.md
@@ -0,0 +1 @@
+# The keymap for krush65 solder layout ansi blocker with split backspace and split spacebar
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_bs/keymap.c b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_bs/keymap.c
new file mode 100644
index 000000000000..6cd8dd4bafb1
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_bs/keymap.c
@@ -0,0 +1,39 @@
+/* Copyright 2021 SawnsProjects
+ *
+ * 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_65_ansi_blocker_split_bs(
+ 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_GRV, KC_PSCR,
+ 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_65_ansi_blocker_split_bs(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_bs/readme.md b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_bs/readme.md
new file mode 100644
index 000000000000..162da7a90345
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/ansi_blocker_split_bs/readme.md
@@ -0,0 +1 @@
+# The keymap for krush65 solder layout ansi blocker with split backspace
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/default/keymap.c b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/default/keymap.c
new file mode 100644
index 000000000000..eecb1e5f8f95
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/default/keymap.c
@@ -0,0 +1,39 @@
+/* Copyright 2021 SawnsProjects
+ *
+ * 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_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_GRV, KC_PSCR,
+ 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_LALT, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_all(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/sawnsprojects/krush/krush65/solder/keymaps/default/readme.md b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/default/readme.md
new file mode 100644
index 000000000000..1f98b857ce58
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for krush65 solder
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/sawns/keymap.c b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/sawns/keymap.c
new file mode 100644
index 000000000000..3a7fa10cfa4f
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/sawns/keymap.c
@@ -0,0 +1,75 @@
+/* Copyright 2021 SawnsProjects
+ *
+ * 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_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_GRV, KC_PSCR,
+ 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_LALT, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_all(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+};
+
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (index == 0) {
+ switch (get_highest_layer(layer_state)) {
+ case 0:
+ // main layer - move mouse right (CW) and left (CCW)
+ if (clockwise) {
+ tap_code_delay(KC_VOLU, 10);
+ } else {
+ tap_code_delay(KC_VOLD, 10);
+ }
+ break;
+ default:
+ // other layers - =/+ (quals/plus) (CW) and -/_ (minus/underscore) (CCW)
+ if (clockwise) {
+ tap_code16(C(KC_EQL));
+ } else {
+ tap_code16(C(KC_MINS));
+ }
+ break;
+ }
+ }
+ return false;
+}
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/sawns/readme.md b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/sawns/readme.md
new file mode 100644
index 000000000000..ff710c521f08
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/sawns/readme.md
@@ -0,0 +1 @@
+#custom keymap for MikeTheSan
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/sawns/rules.mk b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/sawns/rules.mk
new file mode 100644
index 000000000000..036bd6d1c3ec
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/sawns/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/via/keymap.c b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/via/keymap.c
new file mode 100644
index 000000000000..8036529c91ab
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/via/keymap.c
@@ -0,0 +1,51 @@
+/* Copyright 2021 SawnsProjects
+ *
+ * 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_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_GRV, KC_PSCR,
+ 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_LALT, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_all(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+};
diff --git a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/via/readme.md b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/via/readme.md
new file mode 100644
index 000000000000..2c88050060d5
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/via/readme.md
@@ -0,0 +1 @@
+# The VIA keymap for krush65 solder
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush65/solder/keymaps/via/rules.mk b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/via/rules.mk
new file mode 100644
index 000000000000..36b7ba9cbc98
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush65/solder/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/sawnsprojects/krush/krush65/solder/readme.md b/keyboards/sawnsprojects/krush/krush65/solder/readme.md
new file mode 100644
index 000000000000..27af715eda2c
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush65/solder/readme.md
@@ -0,0 +1,15 @@
+# Krush65 solder
+
+![Krush65](https://cdn.shopify.com/s/files/1/0299/9497/5365/files/4_-_2BS9fH2_2048x2048.jpg)
+
+A 65% keyboard PCB made and sold by SawnsProjects with Nuxros in [mechkey.store](https://mechkey.store/blogs/store-updates/introducing-krush-65).
+
+* Keyboard Maintainer: [Mai The San](https://github.com/MaiTheSan)
+* Hardware Supported: Krush65
+* Hardware Availability: [Facebook](https://www.facebook.com/groups/vnmkmarket/posts/1410794482649627)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make sawnsprojects/krush65/solder: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).
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush65/solder/rules.mk b/keyboards/sawnsprojects/krush/krush65/solder/rules.mk
new file mode 100644
index 000000000000..1adb99650428
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush65/solder/rules.mk
@@ -0,0 +1,23 @@
+# 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 = yes # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+ENCODER_ENABLE = yes
+
+LAYOUTS = 65_ansi_blocker 65_ansi_blocker_split_bs
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush65/solder/solder.c b/keyboards/sawnsprojects/krush/krush65/solder/solder.c
new file mode 100644
index 000000000000..b8a7729725ca
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush65/solder/solder.c
@@ -0,0 +1,53 @@
+/* Copyright 2021 SawnsProjects
+ *
+ * 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 "solder.h"
+#include "encoder_actions.h"
+
+ /* Custom encoder control - handles CW/CCW turning of encoder
+ * Default behavior:
+ * main layer:
+ * CW: move mouse right
+ * CCW: move mouse left
+ * other layers:
+ * CW: = (equals/plus - increase slider in Adobe products)
+ * CCW: - (minus/underscore - decrease slider in adobe products)
+ */
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (index == 0) {
+ switch (get_highest_layer(layer_state)) {
+
+ case 0:
+ // main layer - move mouse right (CW) and left (CCW)
+ if (clockwise) {
+ tap_code_delay(KC_VOLU, 10);
+ } else {
+ tap_code_delay(KC_VOLD, 10);
+ }
+ break;
+ default:
+ // other layers - =/+ (quals/plus) (CW) and -/_ (minus/underscore) (CCW)
+ if (clockwise) {
+ tap_code16(C(KC_EQL));
+ } else {
+ tap_code16(C(KC_MINS));
+ }
+ break;
+ }
+ }
+ return true;
+}
\ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush65/solder/solder.h b/keyboards/sawnsprojects/krush/krush65/solder/solder.h
new file mode 100644
index 000000000000..58f6bed57b1d
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush65/solder/solder.h
@@ -0,0 +1,93 @@
+/* Copyright 2021 SawnsProjects
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_all( \
+ K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, K07, \
+ K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, K37, \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, K57, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K77, K67, \
+ K80, K90, K81, K82, K92, K93, K94, K85, K95, K97, K87 \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07 }, \
+ { K10, K11, K12, K13, K14, K15, KC_NO, K17 }, \
+ { K20, K21, K22, K23, K24, K25, K26, KC_NO }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37 }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47 }, \
+ { K50, K51, K52, K53, K54, K55, KC_NO, K57 }, \
+ { K60, K61, K62, K63, K64, K65, KC_NO, K67 }, \
+ { K70, K71, K72, K73, K74, K75, KC_NO, K77 }, \
+ { K80, K81, K82, KC_NO, KC_NO, K85, KC_NO, K87 }, \
+ { K90, KC_NO, K92, K93, K94, K95, KC_NO, K97 }, \
+}
+#define LAYOUT_65_ansi_blocker( \
+ K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K07, \
+ K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, K37, \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, K57, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K77, K67, \
+ K80, K90, K81, K92, K94, K85, K95, K97, K87 \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07 }, \
+ { K10, K11, K12, K13, K14, K15, KC_NO, KC_NO }, \
+ { K20, K21, K22, K23, K24, K25, K26, KC_NO }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37 }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47 }, \
+ { K50, K51, K52, K53, K54, K55, KC_NO, K57 }, \
+ { K60, K61, K62, K63, K64, K65, KC_NO, K67 }, \
+ { K70, K71, K72, K73, K74, K75, KC_NO, K77 }, \
+ { K80, K81, KC_NO, KC_NO, KC_NO, K85, KC_NO, K87 }, \
+ { K90, KC_NO, K92, KC_NO, K94, K95, KC_NO, K97 }, \
+}
+#define LAYOUT_65_ansi_blocker_split_bs( \
+ K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, K07, \
+ K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, K37, \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, K57, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K77, K67, \
+ K80, K90, K81, K92, K94, K85, K95, K97, K87 \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07 }, \
+ { K10, K11, K12, K13, K14, K15, KC_NO, K17 }, \
+ { K20, K21, K22, K23, K24, K25, K26, KC_NO }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37 }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47 }, \
+ { K50, K51, K52, K53, K54, K55, KC_NO, K57 }, \
+ { K60, K61, K62, K63, K64, K65, KC_NO, K67 }, \
+ { K70, K71, K72, K73, K74, K75, KC_NO, K77 }, \
+ { K80, K81, KC_NO, KC_NO, KC_NO, K85, KC_NO, K87 }, \
+ { K90, KC_NO, K92, KC_NO, K94, K95, KC_NO, K97 }, \
+}
+#define LAYOUT_65_ansi_blocker_split_bs_sp( \
+ K00, K10, K01, K11, K02, K12, K03, K13, K04, K14, K05, K15, K06, K26, K17, K07, \
+ K20, K30, K21, K31, K22, K32, K23, K33, K24, K34, K25, K35, K36, K46, K37, \
+ K40, K50, K41, K51, K42, K52, K43, K53, K44, K54, K45, K55, K47, K57, \
+ K60, K70, K61, K71, K62, K72, K63, K73, K64, K74, K65, K75, K77, K67, \
+ K80, K90, K81, K82, K92, K93, K94, K85, K95, K97, K87 \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07 }, \
+ { K10, K11, K12, K13, K14, K15, KC_NO, K17 }, \
+ { K20, K21, K22, K23, K24, K25, K26, KC_NO }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37 }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47 }, \
+ { K50, K51, K52, K53, K54, K55, KC_NO, K57 }, \
+ { K60, K61, K62, K63, K64, K65, KC_NO, K67 }, \
+ { K70, K71, K72, K73, K74, K75, KC_NO, K77 }, \
+ { K80, K81, K82, KC_NO, KC_NO, K85, KC_NO, K87 }, \
+ { K90, KC_NO, K92, K93, K94, K95, KC_NO, K97 }, \
+}
+
diff --git a/keyboards/senselessclay/ck60/ck60.c b/keyboards/senselessclay/ck60/ck60.c
new file mode 100644
index 000000000000..a2fe38aac799
--- /dev/null
+++ b/keyboards/senselessclay/ck60/ck60.c
@@ -0,0 +1,17 @@
+/* Copyright 2020 Hadi Iskandarani
+ *
+ * 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 "ck60.h"
\ No newline at end of file
diff --git a/keyboards/senselessclay/ck60/ck60.h b/keyboards/senselessclay/ck60/ck60.h
new file mode 100644
index 000000000000..fa83202dfa57
--- /dev/null
+++ b/keyboards/senselessclay/ck60/ck60.h
@@ -0,0 +1,35 @@
+/* Copyright 2020 Hadi Iskandarani
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define ____ KC_NO
+
+#define LAYOUT( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, \
+ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, \
+ K400, K401, K402, K406, K410, K411, K412, K413 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113 }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, ____ }, \
+ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, ____ }, \
+ { K400, K401, K402, ____, ____, ____, K406, ____, ____, ____, K410, K411, K412, K413 } \
+}
diff --git a/keyboards/senselessclay/ck60/config.h b/keyboards/senselessclay/ck60/config.h
new file mode 100644
index 000000000000..7e4a493701a6
--- /dev/null
+++ b/keyboards/senselessclay/ck60/config.h
@@ -0,0 +1,119 @@
+/*
+Copyright 2020 Hadi Iskandarani
+
+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 .
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4849 // HI
+#define PRODUCT_ID 0x0601 // 60rgb (1)
+#define DEVICE_VER 0x0000 // rev0
+#define MANUFACTURER senselessclay
+#define PRODUCT ck60
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 14
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+/* rev0 */
+#define MATRIX_ROW_PINS { B3, B2, F1, F4, F5 }
+#define MATRIX_COL_PINS { F0, D5, D3, D2, D1, D0, C7, C6, B6, B5, B4, D7, D6, D4 }
+
+//#define UNUSED_PINS { B0, B7, E6 }
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
+
+/* RGB Backlighting */
+#define RGB_DI_PIN B1
+#define RGBLED_NUM 62
+#define RGBLIGHT_ANIMATIONS
+#define RGBLIGHT_LIMIT_VAL 128
+#define RGBLIGHT_SLEEP
+#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL+5
\ No newline at end of file
diff --git a/keyboards/senselessclay/ck60/info.json b/keyboards/senselessclay/ck60/info.json
new file mode 100644
index 000000000000..e188740c3c23
--- /dev/null
+++ b/keyboards/senselessclay/ck60/info.json
@@ -0,0 +1,10 @@
+{
+ "keyboard_name": "CK60",
+ "url": "https://candykeys.com",
+ "maintainer": "hadi",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.75, "y":1, "w":1.25, "h":2}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":2.75}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}]
+ }
+ }
+}
\ No newline at end of file
diff --git a/keyboards/senselessclay/ck60/keymaps/default/keymap.c b/keyboards/senselessclay/ck60/keymaps/default/keymap.c
new file mode 100644
index 000000000000..2ac1e069817e
--- /dev/null
+++ b/keyboards/senselessclay/ck60/keymaps/default/keymap.c
@@ -0,0 +1,51 @@
+/* Copyright 2020 Hadi Iskandarani
+ *
+ * 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
+
+enum layers {
+ _0,
+ _1,
+ _2,
+ _3,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_0] = LAYOUT(
+ /*Base*/
+ 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS,
+ KC_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL),
+ [_1] = LAYOUT(
+ 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS,
+ KC_CAPS, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_DOWN, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ [_2] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ [_3] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
\ No newline at end of file
diff --git a/keyboards/senselessclay/ck60/keymaps/via/keymap.c b/keyboards/senselessclay/ck60/keymaps/via/keymap.c
new file mode 100644
index 000000000000..2ac1e069817e
--- /dev/null
+++ b/keyboards/senselessclay/ck60/keymaps/via/keymap.c
@@ -0,0 +1,51 @@
+/* Copyright 2020 Hadi Iskandarani
+ *
+ * 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
+
+enum layers {
+ _0,
+ _1,
+ _2,
+ _3,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_0] = LAYOUT(
+ /*Base*/
+ 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS,
+ KC_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL),
+ [_1] = LAYOUT(
+ 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS,
+ KC_CAPS, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_DOWN, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ [_2] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ [_3] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
\ No newline at end of file
diff --git a/keyboards/senselessclay/ck60/keymaps/via/rules.mk b/keyboards/senselessclay/ck60/keymaps/via/rules.mk
new file mode 100644
index 000000000000..036bd6d1c3ec
--- /dev/null
+++ b/keyboards/senselessclay/ck60/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/senselessclay/ck60/readme.md b/keyboards/senselessclay/ck60/readme.md
new file mode 100644
index 000000000000..32700967da2c
--- /dev/null
+++ b/keyboards/senselessclay/ck60/readme.md
@@ -0,0 +1,19 @@
+# ck60
+
+A 60% keyboard implementation based around the ATMEGA32u4 with per-key RGB.
+
+* Keyboard Maintainer: [hadi](https://github.com/senselessclay)
+* Hardware Supported: CK60 PCB
+* Hardware Availability: https://candykeys.com/
+
+Make example for this keyboard (after setting up your build environment):
+
+ make senselessclay/ck60:default
+
+Flashing example for this keyboard:
+
+ make senselessclay/ck60: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).
+
+If you'd like to reset the board into bootloader mode for flashing using [QMK Toolbox](https://github.com/qmk/qmk_toolbox), simply press the reset button directly above the controller assembly on the bottom side of the PCB.
\ No newline at end of file
diff --git a/keyboards/senselessclay/ck60/rules.mk b/keyboards/senselessclay/ck60/rules.mk
new file mode 100644
index 000000000000..56ba35b4b857
--- /dev/null
+++ b/keyboards/senselessclay/ck60/rules.mk
@@ -0,0 +1,21 @@
+# 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 = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
\ No newline at end of file
diff --git a/keyboards/senselessclay/ck65/ck65.c b/keyboards/senselessclay/ck65/ck65.c
new file mode 100644
index 000000000000..77128d9bf824
--- /dev/null
+++ b/keyboards/senselessclay/ck65/ck65.c
@@ -0,0 +1,17 @@
+/* Copyright 2020 Hadi Iskandarani
+ *
+ * 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 "ck65.h"
\ No newline at end of file
diff --git a/keyboards/senselessclay/ck65/ck65.h b/keyboards/senselessclay/ck65/ck65.h
new file mode 100644
index 000000000000..1d258ee34652
--- /dev/null
+++ b/keyboards/senselessclay/ck65/ck65.h
@@ -0,0 +1,35 @@
+/* Copyright 2020 Hadi Iskandarani
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define ____ KC_NO
+
+#define LAYOUT( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K214, \
+ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, \
+ K400, K401, K402, K406, K409, K410, K411, K412, K413, K414 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, ____, K214 }, \
+ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314 }, \
+ { K400, K401, K402, ____, ____, ____, K406, ____, ____, K409, K410, K411, K412, K413, K414 } \
+}
diff --git a/keyboards/senselessclay/ck65/config.h b/keyboards/senselessclay/ck65/config.h
new file mode 100644
index 000000000000..772b2e410a2a
--- /dev/null
+++ b/keyboards/senselessclay/ck65/config.h
@@ -0,0 +1,119 @@
+/*
+Copyright 2020 Hadi Iskandarani
+
+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 .
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x4849 // HI
+#define PRODUCT_ID 0x0651 // 65rgb (1)
+#define DEVICE_VER 0x0000 // rev0
+#define MANUFACTURER senselessclay
+#define PRODUCT ck65
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+/* rev0 */
+#define MATRIX_ROW_PINS { B3, B2, F1, F4, F5 }
+#define MATRIX_COL_PINS { F0, D5, D3, D2, D1, D0, F7, C7, C6, B6, B5, B4, D7, D6, D4 }
+
+//#define UNUSED_PINS { B0, B7, E6 }
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
+
+/* RGB Backlighting */
+#define RGB_DI_PIN B1
+#define RGBLED_NUM 69
+#define RGBLIGHT_ANIMATIONS
+#define RGBLIGHT_LIMIT_VAL 122
+#define RGBLIGHT_SLEEP
+#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL+5
\ No newline at end of file
diff --git a/keyboards/senselessclay/ck65/info.json b/keyboards/senselessclay/ck65/info.json
new file mode 100644
index 000000000000..fbcc95937615
--- /dev/null
+++ b/keyboards/senselessclay/ck65/info.json
@@ -0,0 +1,10 @@
+{
+ "keyboard_name": "CK65",
+ "url": "https://candykeys.com",
+ "maintainer": "hadi",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":15, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.75, "y":1, "w":1.25, "h":2}, {"x":15, "y":1}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":15, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}]
+ }
+ }
+}
\ No newline at end of file
diff --git a/keyboards/senselessclay/ck65/keymaps/default/keymap.c b/keyboards/senselessclay/ck65/keymaps/default/keymap.c
new file mode 100644
index 000000000000..be627f899df0
--- /dev/null
+++ b/keyboards/senselessclay/ck65/keymaps/default/keymap.c
@@ -0,0 +1,51 @@
+/* Copyright 2020 Hadi Iskandarani
+ *
+ * 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
+
+enum layers {
+ _0,
+ _1,
+ _2,
+ _3,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_0] = LAYOUT(
+ /*Base*/
+ 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_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, KC_END,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_PGUP,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT),
+ [_1] = LAYOUT(
+ 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_CAPS, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ [_2] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ [_3] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
\ No newline at end of file
diff --git a/keyboards/senselessclay/ck65/keymaps/via/keymap.c b/keyboards/senselessclay/ck65/keymaps/via/keymap.c
new file mode 100644
index 000000000000..be627f899df0
--- /dev/null
+++ b/keyboards/senselessclay/ck65/keymaps/via/keymap.c
@@ -0,0 +1,51 @@
+/* Copyright 2020 Hadi Iskandarani
+ *
+ * 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
+
+enum layers {
+ _0,
+ _1,
+ _2,
+ _3,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_0] = LAYOUT(
+ /*Base*/
+ 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_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, KC_END,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_PGUP,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT),
+ [_1] = LAYOUT(
+ 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_CAPS, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ [_2] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ [_3] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
\ No newline at end of file
diff --git a/keyboards/senselessclay/ck65/keymaps/via/rules.mk b/keyboards/senselessclay/ck65/keymaps/via/rules.mk
new file mode 100644
index 000000000000..036bd6d1c3ec
--- /dev/null
+++ b/keyboards/senselessclay/ck65/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/senselessclay/ck65/readme.md b/keyboards/senselessclay/ck65/readme.md
new file mode 100644
index 000000000000..653266a59f64
--- /dev/null
+++ b/keyboards/senselessclay/ck65/readme.md
@@ -0,0 +1,19 @@
+# ck65
+
+A 65% keyboard implementation based around the ATMEGA32u4 with per-key RGB.
+
+* Keyboard Maintainer: [hadi](https://github.com/senselessclay)
+* Hardware Supported: CK65 PCB
+* Hardware Availability: https://candykeys.com/
+
+Make example for this keyboard (after setting up your build environment):
+
+ make senselessclay/ck65:default
+
+Flashing example for this keyboard:
+
+ make senselessclay/ck65: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).
+
+If you'd like to reset the board into bootloader mode for flashing using [QMK Toolbox](https://github.com/qmk/qmk_toolbox), simply press the reset button directly above the controller assembly on the bottom side of the PCB.
\ No newline at end of file
diff --git a/keyboards/senselessclay/ck65/rules.mk b/keyboards/senselessclay/ck65/rules.mk
new file mode 100644
index 000000000000..56ba35b4b857
--- /dev/null
+++ b/keyboards/senselessclay/ck65/rules.mk
@@ -0,0 +1,21 @@
+# 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 = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
\ No newline at end of file
diff --git a/keyboards/sets3n/kk980/info.json b/keyboards/sets3n/kk980/info.json
index 5c1cabafe220..dad5530d444b 100644
--- a/keyboards/sets3n/kk980/info.json
+++ b/keyboards/sets3n/kk980/info.json
@@ -106,11 +106,10 @@
{"label":"DOWN", "x": 14.25, "y": 5.75},
{"label":"RIGHT", "x": 15.25, "y": 5.75},
{"label":"0", "x": 16.5, "y": 5.5},
- {"label":".DEL", "x": 17.5, "y": 5.5,},
+ {"label":".DEL", "x": 17.5, "y": 5.5},
{"label":"ENTER", "x": 18.5, "y": 4.5, "h": 2}
]
}
}
}
-
diff --git a/keyboards/sets3n/kk980/keymaps/default/keymap.c b/keyboards/sets3n/kk980/keymaps/default/keymap.c
index 171cdb21277d..f4255f450582 100644
--- a/keyboards/sets3n/kk980/keymaps/default/keymap.c
+++ b/keyboards/sets3n/kk980/keymaps/default/keymap.c
@@ -18,22 +18,23 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT(
- 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_DEL, KC_INS, KC_PGDN, KC_PGUP,
- 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_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_BSPC, KC_BSLS, KC_RALT, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
-
- [1] = LAYOUT(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_TOGG, BL_DEC, BL_INC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
-
+ [0] = LAYOUT(
+ 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_DEL, KC_INS, KC_PGDN, KC_PGUP,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT
+ ),
+
+ [1] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_TOGG, BL_DEC, BL_INC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, 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/sets3n/kk980/keymaps/via/keymap.c b/keyboards/sets3n/kk980/keymaps/via/keymap.c
index 171cdb21277d..f4255f450582 100644
--- a/keyboards/sets3n/kk980/keymaps/via/keymap.c
+++ b/keyboards/sets3n/kk980/keymaps/via/keymap.c
@@ -18,22 +18,23 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT(
- 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_DEL, KC_INS, KC_PGDN, KC_PGUP,
- 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_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
- 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_P7, KC_P8, KC_P9,
- KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
- 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_P1, KC_P2, KC_P3,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_BSPC, KC_BSLS, KC_RALT, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
-
- [1] = LAYOUT(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_TOGG, BL_DEC, BL_INC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
-
+ [0] = LAYOUT(
+ 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_DEL, KC_INS, KC_PGDN, KC_PGUP,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ 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_P1, KC_P2, KC_P3,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT
+ ),
+
+ [1] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_TOGG, BL_DEC, BL_INC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, 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/sets3n/kk980/kk980.h b/keyboards/sets3n/kk980/kk980.h
index 238d124bebe1..c7589e8c4008 100644
--- a/keyboards/sets3n/kk980/kk980.h
+++ b/keyboards/sets3n/kk980/kk980.h
@@ -1,15 +1,15 @@
/* Copyright 2021 Sets3n
- *
+ *
* 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 .
*/
@@ -17,18 +17,38 @@
#include "quantum.h"
+#define XXX KC_NO
+
+/*
+ * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐
+ * │00 │ │01 │02 │03 │04 │ │05 │06 │07 │08 │ │09 │0A │0B │0C │ │0D │0E │0F │0G │
+ * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┬───┐
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │56 │ │1D │1E │1F │1G │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┼───┤
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │57 │ │2D │2E │2F │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ├───┼───┼───┤3G │
+ * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │ │3D │3E │3F │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┘ ├───┼───┼───┼───┤
+ * │40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │4A │4B │┌───┐│4D │4E │4F │ │
+ * ├────┬───┼───┴┬──┴───┴───┴───┴───┴───┴─┬─┴─┬─┴─┬─┴──┬───┘│4C │└───┼───┼───┤5G │
+ * │50 │51 │52 │55 │58 │59 │5A │┌───┼───┼───┐│5E │5F │ │
+ * └────┴───┴────┴────────────────────────┴───┴───┴────┘│5B │5C │5D │└───┴───┴───┘
+ * └───┴───┴───┘
+ */
+
#define LAYOUT( \
- K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, \
- K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, \
- K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, \
- K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, K316, \
- K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K414, K415, \
- K500, K501, K502, K505, K506, K507, K508, K509, K510, K511, K512, K513, K514, K515, K516 \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K56, K1D, K1E, K1F, K1G, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K57, K2D, K2E, K2F, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F, \
+ K50, K51, K52, K55, K58, K59, K5A, K5B, K5C, K5D, K5E, K5F, K5G \
) { \
- { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016 }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116 }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, KC_NO }, \
- { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, K315, K316 }, \
- { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K414, K415, KC_NO }, \
- { K500, K501, K502, KC_NO, KC_NO, K505, K506, K507, K508, K509, K510, K511, K512, K513, K514, K515, K516 } \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, XXX }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F, XXX }, \
+ { K50, K51, K52, XXX, XXX, K55, K56, K57, K58, K59, K5A, K5B, K5C, K5D, K5E, K5F, K5G } \
}
diff --git a/keyboards/sofle/keyhive/config.h b/keyboards/sofle/keyhive/config.h
new file mode 100755
index 000000000000..14303be411b3
--- /dev/null
+++ b/keyboards/sofle/keyhive/config.h
@@ -0,0 +1,105 @@
+/* Copyright
+ * 2021 solartempest
+ * 2021 QMK
+ *
+ * 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 .
+ */
+
+#pragma once
+#include "config_common.h"
+
+// USB Device descriptor parameter
+
+#define VENDOR_ID 0xFC32
+#define PRODUCT_ID 0x1287
+#define DEVICE_VER 0x0002
+#define MANUFACTURER Keyhive
+#define PRODUCT Sofle // VIA version for this PCB is incorrect for the bottom row
+
+// Key matrix size
+// Rows are doubled-up. Added extra column for rotary encoder VIA mapping.
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 6
+
+// wiring of each half
+#define MATRIX_ROW_PINS \
+ { C6, D7, E6, B4, B5 }
+#define MATRIX_COL_PINS \
+ { B6, B2, B3, B1, F7, F6 }
+#define MATRIX_ROW_PINS_RIGHT \
+ { C6, D7, E6, B4, B5 }
+#define MATRIX_COL_PINS_RIGHT \
+ { F6, F7, B1, B3, B2, B6 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define DEBOUNCE 5
+
+// Encoder support
+#define ENCODERS_PAD_A \
+ { F5 }
+#define ENCODERS_PAD_B \
+ { F4 }
+#define ENCODERS_PAD_A_RIGHT \
+ { F4 }
+#define ENCODERS_PAD_B_RIGHT \
+ { F5 }
+#define ENCODER_RESOLUTIONS \
+ { 4, 2 } // Left encoder seems to have double-output issue but right does not.
+
+#define TAP_CODE_DELAY 10
+
+// Communication between sides
+#define SOFT_SERIAL_PIN D2
+
+// OLED settings
+#define OLED_TIMEOUT 80000
+#define OLED_BRIGHTNESS 90
+
+#define SPLIT_WPM_ENABLE
+#define SPLIT_OLED_ENABLE
+#define SPLIT_TRANSPORT_MIRROR
+
+// Add RGB underglow
+#define RGB_DI_PIN D3
+#define RGBLED_NUM 74
+#define RGBLED_SPLIT \
+ { 37, 37 }
+
+#define RGBLIGHT_LIMIT_VAL 160 // Power draw may exceed 0.6A at max brightness with white colour.
+#define RGBLIGHT_LAYERS
+#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF
+#define RGBLIGHT_SLEEP
+
+#define DRIVER_LED_TOTAL RGBLED_NUM
+#define RGB_MATRIX_SPLIT RGBLED_SPLIT
+
+#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
+#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
+// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
+// # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
+#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+// # define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
+// # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
+#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
+
+#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_GRADIENT_LEFT_RIGHT
+
+#define RGB_MATRIX_HUE_STEP 8
+#define RGB_MATRIX_SAT_STEP 8
+#define RGB_MATRIX_VAL_STEP 8
+#define RGB_MATRIX_SPD_STEP 10
diff --git a/keyboards/sofle/keyhive/info.json b/keyboards/sofle/keyhive/info.json
new file mode 100644
index 000000000000..e2cbf0c716ee
--- /dev/null
+++ b/keyboards/sofle/keyhive/info.json
@@ -0,0 +1,14 @@
+{
+ "keyboard_name": "Sofle",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"x":0, "y":0.5}, {"x":1, "y":0.375}, {"x":2, "y":0.125}, {"x":3, "y":0}, {"x":4, "y":0.125}, {"x":5, "y":0.25}, {"x":10.5, "y":0.25}, {"x":11.5, "y":0.125}, {"x":12.5, "y":0}, {"x":13.5, "y":0.125}, {"x":14.5, "y":0.375}, {"x":15.5, "y":0.5},
+ {"x":0, "y":1.5}, {"x":1, "y":1.375}, {"x":2, "y":1.125}, {"x":3, "y":1}, {"x":4, "y":1.125}, {"x":5, "y":1.25}, {"x":10.5, "y":1.25}, {"x":11.5, "y":1.125}, {"x":12.5, "y":1}, {"x":13.5, "y":1.125}, {"x":14.5, "y":1.375}, {"x":15.5, "y":1.5},
+ {"x":0, "y":2.5}, {"x":1, "y":2.375}, {"x":2, "y":2.125}, {"x":3, "y":2}, {"x":4, "y":2.125}, {"x":5, "y":2.25}, {"x":10.5, "y":2.25}, {"x":11.5, "y":2.125}, {"x":12.5, "y":2}, {"x":13.5, "y":2.125}, {"x":14.5, "y":2.375}, {"x":15.5, "y":2.5},
+ {"x":0, "y":3.5}, {"x":1, "y":3.375}, {"x":2, "y":3.125}, {"x":3, "y":3}, {"x":4, "y":3.125}, {"x":5, "y":3.25}, {"x":6, "y":2.75}, {"x":9.5, "y":2.75}, {"x":10.5, "y":3.25}, {"x":11.5, "y":3.125}, {"x":12.5, "y":3}, {"x":13.5, "y":3.125}, {"x":14.5, "y":3.375}, {"x":15.5, "y":3.5},
+ {"x":1.5, "y":4.375}, {"x":2.5, "y":4.125}, {"x":3.5, "y":4.15}, {"x":4.5, "y":4.25}, {"x":6, "y":4.25, "h":1.5}, {"x":9.5, "y":4.25, "h":1.5}, {"x":11, "y":4.25}, {"x":12, "y":4.15}, {"x":13, "y":4.125}, {"x":14, "y":4.375}
+ ]
+ }
+ }
+}
diff --git a/keyboards/sofle/keyhive/keyhive.c b/keyboards/sofle/keyhive/keyhive.c
new file mode 100755
index 000000000000..c7ad9887612b
--- /dev/null
+++ b/keyboards/sofle/keyhive/keyhive.c
@@ -0,0 +1,90 @@
+/* Copyright
+ * 2021 solartempest
+ * 2021 QMK
+ *
+ * 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 "keyhive.h"
+#ifdef RGB_MATRIX_ENABLE
+// Physical Layout
+// Columns
+// 0 1 2 3 4 5 6 7 8 9 10 11 12 13
+// ROWS
+// 12 13 22 23 32 33 33 32 23 22 13 12 0
+// 02 03 04 04 03 02
+// 11 14 21 24 31 34 34 31 24 21 14 11 1
+// 01 01
+// 10 15 20 25 30 35 35 30 25 20 15 10 2
+//
+// 09 16 19 26 29 36 36 29 26 19 16 09 3
+//
+// 08 17 18 27 28 28 27 18 17 08 4
+// 07 06 05 05 06 07
+
+// clang-format off
+
+led_config_t g_led_config = {
+ {
+ { 11, 12, 21, 22, 31, 32 },
+ { 10, 13, 20, 23, 30, 33 },
+ { 9, 14, 19, 24, 29, 34},
+ { 8, 15, 18, 25, 28, 35},
+ { 7, 16, 17, 26, 27, NO_LED },
+ { 47, 48, 57, 58, 67, 68},
+ { 46, 49, 56, 59, 66, 69},
+ { 45, 50, 55, 60, 65, 70},
+ { 44, 51, 54, 61, 64, 71},
+ { 43, 52, 53, 62, 63, NO_LED }
+ },
+ {
+ // Left side underglow
+ {96, 40}, {16, 20}, {48, 10}, {80, 18}, {88, 60}, {56, 57}, {24,60},
+ // Left side Matrix
+ {32, 57}, { 0, 48}, { 0, 36}, { 0, 24}, { 0, 12},
+ {16, 12}, {16, 24}, {16, 36}, {16, 48}, {48, 55},
+ {64, 57}, {32, 45}, {32, 33}, {32, 21}, {32, 9},
+ {48, 7}, {48, 19}, {48, 31}, {48, 43}, {80, 59},
+ {96, 64}, {64, 45}, {64, 33}, {64, 21}, {64, 9},
+ {80, 10}, {80, 22}, {80, 34}, {80, 47},
+
+
+ // Right side underglow
+ {128, 40}, {208, 20}, {176, 10}, {144, 18}, {136, 60}, {168, 57}, {200,60},
+ // Right side Matrix
+ {192, 57}, {224, 48}, {224, 36}, {224, 24}, {224, 12},
+ {208, 12}, {208, 24}, {208, 36}, {208, 48}, {176, 55},
+ {160, 57}, {192, 45}, {192, 33}, {192, 21}, {192, 9},
+ {176, 7}, {176, 19}, {176, 31}, {176, 43}, {144, 59},
+ {128, 64}, {160, 45}, {160, 33}, {160, 21}, {160, 9},
+ {144, 10}, {144, 22}, {144, 34}, {144, 47},
+ },
+ {
+ LED_FLAG_NONE, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW,
+ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
+ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
+ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
+ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
+ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
+ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
+ LED_FLAG_NONE, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW,
+ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
+ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
+ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
+ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
+ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
+ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT
+ }
+};
+#endif
diff --git a/keyboards/sofle/keyhive/keyhive.h b/keyboards/sofle/keyhive/keyhive.h
new file mode 100755
index 000000000000..d8b21e16d756
--- /dev/null
+++ b/keyboards/sofle/keyhive/keyhive.h
@@ -0,0 +1,47 @@
+/* Copyright
+ * 2021 solartempest
+ * 2021 QMK
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+// clang-format off
+// Extra keys are added for rotary encoder support in VIA
+#define LAYOUT( \
+ LA1, LA2, LA3, LA4, LA5, LA6, RA6, RA5, RA4, RA3, RA2, RA1, \
+ LB1, LB2, LB3, LB4, LB5, LB6, RB6, RB5, RB4, RB3, RB2, RB1, \
+ LC1, LC2, LC3, LC4, LC5, LC6, RC6, RC5, RC4, RC3, RC2, RC1, \
+ LD1, LD2, LD3, LD4, LD5, LD6, LE1, RE6, RD6, RD5, RD4, RD3, RD2, RD1, \
+ LE2, LE3, LE4, LE5, LE6, RE5, RE4, RE3, RE2, RE1 \
+ ) \
+ { \
+ { LA1, LA2, LA3, LA4, LA5, LA6 }, \
+ { LB1, LB2, LB3, LB4, LB5, LB6 }, \
+ { LC1, LC2, LC3, LC4, LC5, LC6 }, \
+ { LD1, LD2, LD3, LD4, LD5, LD6 }, \
+ { LE1, LE2, LE3, LE4, LE5, LE6 }, \
+ { RA1, RA2, RA3, RA4, RA5, RA6 }, \
+ { RB1, RB2, RB3, RB4, RB5, RB6 }, \
+ { RC1, RC2, RC3, RC4, RC5, RC6 }, \
+ { RD1, RD2, RD3, RD4, RD5, RD6 }, \
+ { RE1, RE2, RE3, RE4, RE5, RE6 } \
+ }
+
+
+//RGB LED Conversion macro from physical array to electric array (+146 to firmware size)
+// clang-format on
diff --git a/keyboards/sofle/keyhive/readme.md b/keyboards/sofle/keyhive/readme.md
new file mode 100755
index 000000000000..43813b856a5c
--- /dev/null
+++ b/keyboards/sofle/keyhive/readme.md
@@ -0,0 +1,66 @@
+# Sofle Keyboard
+
+![SofleKeyboard version 2.1 RGB Keyhive](https://i.imgur.com/WH9OoWuh.jpg)
+
+Sofle is 6×4+5 keys column-staggered split keyboard. Based on Lily58, Corne and Helix keyboards.
+
+For detailed instructions on using VIA and flashing, please refer to the sections further down the page!
+
+For details about the keyboard design, refer to Josef's blog: [Sofle Keyboard - a split keyboard based on Lily58 and Crkbd](https://josef-adamcik.cz/electronics/let-me-introduce-you-sofle-keyboard-split-keyboard-based-on-lily58.html)
+
+Build guide: [Keyhive Sofle RGB build guide](https://github.com/keyhive/build_guides/blob/master/docs/keyboards/sofle-rgb.md)
+
+* Keyboard Maintainer: [Solartempest]
+* Hardware Supported: SofleKeyboard V2.1 RGB PCB, ProMicro / Elite-C
+* Hardware Availability: [Keyhive](https://keyhive.xyz/shop/sofle)
+
+# Custom Features:
+
+### OLED Features:
+- Includes Snakey keyboard pet! Slithers according to WPM, bites, and sticks its tongue out at you!
+- OLED displays current layer, lock key status, WPM, custom logo, and custom name.
+- OLED shuts off on idle and when computer is sleeping.
+- Includes working Luna keyboard pet.
+- Includes working Bongocat (disable RGB for sufficient space).
+- Includes stock OLED code as well.
+
+### RGB Features:
+- Adds custom layer lighting with custom gradients for each layer.
+- RGB underglow support and remapped to physical locations (nicer gradients and effects).
+- Adds white caps lock, scroll lock, and num lock key indicators using the top row/underglow LEDs.
+
+### Rotary Encoder and VIA Features:
+- Fully emappable left encoder controls volume up/down/mute. Right encoder PGUP/PGDOWN.
+- Allows for live remapping of per-layer rotary encoder functions in VIA.
+- VIA support included by default.
+- This fixes the Keyhive left bottom row offset issue in VIA. You will need to import sofle.json in VIA.
+- Custom macro key in VIA for Super Alt Tab, which is fully compatible with rotary encoders.
+- Custom macro key in VIA for moving windows to other monitors in Windows, which is fully compatible with rotary encoders.
+
+### Tap and Other Features:
+- Push left-shift + backspace to delete whole words. Right-shift + backspace to delete whole words in the opposite direction.
+- Double tap layers to stay on a layer instead of momentary push.
+- Adds key combo functionality.
+- Symmetric modifiers (CMD/Super, Alt/Opt, Ctrl, Shift).
+
+## Using with VIA
+
+- After flashing, in VIA make sure to Import Keymap, which is "sofle VIA keymap.json". This will alow VIA to recognize the updated layout and custom functions. VIA will not auto-recognize the keyboard with this firmware because of the necessary customization.
+- Go to Save+Load to Load Saved Layout. You can import my own layout "sofle VIA layout.json" or just use the Keymap tab to assign your own keys. Having another keyboard connected can be handy for doing this step.
+- It is a good idea to Save Current Layout after you decide on your mapping.
+
+
+Make example for this keyboard (after setting up your build environment):
+
+ make sofle/keyhive:default
+
+Flashing example for this keyboard:
+
+ make sofle/keyhive:default:flash
+
+Press reset button on he keyboard when asked.
+
+Disconnect the first half, connect the second one and repeat the process.
+
+
+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/sofle/keyhive/rules.mk b/keyboards/sofle/keyhive/rules.mk
new file mode 100755
index 000000000000..44846f97ccaf
--- /dev/null
+++ b/keyboards/sofle/keyhive/rules.mk
@@ -0,0 +1,26 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes
+LTO_ENABLE = yes
+SPLIT_KEYBOARD = yes
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
diff --git a/keyboards/sofle/keymaps/manna-harbour_miryoku/config.h b/keyboards/sofle/keymaps/manna-harbour_miryoku/config.h
index 53825775cc69..8372e1016849 100644
--- a/keyboards/sofle/keymaps/manna-harbour_miryoku/config.h
+++ b/keyboards/sofle/keymaps/manna-harbour_miryoku/config.h
@@ -1,6 +1,6 @@
// Copyright 2019 Manna Harbour
// https://github.com/manna-harbour/miryoku
-// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*-
+// generated -*- buffer-read-only: t -*-
// 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 .
diff --git a/keyboards/sofle/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/sofle/keymaps/manna-harbour_miryoku/keymap.c
index 1520387e8887..7c5717a0fee0 100644
--- a/keyboards/sofle/keymaps/manna-harbour_miryoku/keymap.c
+++ b/keyboards/sofle/keymaps/manna-harbour_miryoku/keymap.c
@@ -1,5 +1,5 @@
// Copyright 2019 Manna Harbour
// https://github.com/manna-harbour/miryoku
-// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*-
+// generated -*- buffer-read-only: t -*-
// 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 .
diff --git a/keyboards/sofle/keymaps/via/config.h b/keyboards/sofle/keymaps/via/config.h
index c2e48ea7d259..77ce4f259018 100644
--- a/keyboards/sofle/keymaps/via/config.h
+++ b/keyboards/sofle/keymaps/via/config.h
@@ -1,19 +1,19 @@
- /* Copyright 2020 Josef Adamcik
- * Modification for VIA support and RGB underglow by Jens Bonk-Wiltfang
- *
- * 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 .
- */
+/* Copyright 2020 Josef Adamcik
+ * Modification for VIA support and RGB underglow by Jens Bonk-Wiltfang
+ *
+ * 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 .
+ */
#pragma once
@@ -22,16 +22,21 @@ see https://docs.qmk.fm/#/feature_split_keyboard?id=setting-handedness
for more options.
*/
-//Add RGB underglow and top facing lighting
-#define RGB_DI_PIN D3
-#ifdef RGB_MATRIX_ENABLE
-#define RGBLED_NUM 36 // Number of LEDs
-#define DRIVER_LED_TOTAL RGBLED_NUM
+#if defined(KEYBOARD_sofle_rev1)
+// Add RGB underglow and top facing lighting
+# define RGB_DI_PIN D3
+# define RGBLED_NUM 70
+# define RGBLED_SPLIT \
+ { 36, 36 }
+# ifdef RGB_MATRIX_ENABLE
+# define DRIVER_LED_TOTAL RGBLED_NUM
+# define RGB_MATRIX_SPLIT RGBLED_SPLIT
+# define SPLIT_TRANSPORT_MIRROR
+# else
+# define RGBLIGHT_ANIMATIONS
+# define RGBLIGHT_LIMIT_VAL 120
+# define RGBLIGHT_HUE_STEP 10
+# define RGBLIGHT_SAT_STEP 17
+# define RGBLIGHT_VAL_STEP 17
+# endif
#endif
-#define RGBLED_NUM 70
-#define RGBLED_SPLIT {36,36}
-#define RGBLIGHT_ANIMATIONS
-#define RGBLIGHT_LIMIT_VAL 120
-#define RGBLIGHT_HUE_STEP 10
-#define RGBLIGHT_SAT_STEP 17
-#define RGBLIGHT_VAL_STEP 17
diff --git a/keyboards/sofle/rev1/config.h b/keyboards/sofle/rev1/config.h
index ab0e0b39d4a0..831387e99088 100644
--- a/keyboards/sofle/rev1/config.h
+++ b/keyboards/sofle/rev1/config.h
@@ -36,4 +36,3 @@
#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION
-
diff --git a/keyboards/sofle/sofle.h b/keyboards/sofle/sofle.h
index 67bd529a1bb1..90ee00bfd791 100644
--- a/keyboards/sofle/sofle.h
+++ b/keyboards/sofle/sofle.h
@@ -1,5 +1,7 @@
#pragma once
-#ifdef KEYBOARD_sofle_rev1
- #include "rev1.h"
+#if defined(KEYBOARD_sofle_rev1)
+# include "rev1.h"
+#elif defined(KEYBOARD_sofle_keyhive)
+# include "keyhive.h"
#endif
diff --git a/keyboards/spiderisland/split78/config.h b/keyboards/spiderisland/split78/config.h
index e15e5d193d38..b67b3fafffcc 100644
--- a/keyboards/spiderisland/split78/config.h
+++ b/keyboards/spiderisland/split78/config.h
@@ -35,3 +35,5 @@ along with this program. If not, see .
#define BACKLIGHT_BREATHING
#define DEBOUNCE 50
+
+#define I2C_START_RETRY_COUNT 1
diff --git a/keyboards/spiderisland/winry25tc/config.h b/keyboards/spiderisland/winry25tc/config.h
new file mode 100644
index 000000000000..1e7ff4c63b2a
--- /dev/null
+++ b/keyboards/spiderisland/winry25tc/config.h
@@ -0,0 +1,41 @@
+/* Copyright 2021 Andrzej Ressel (andrzej.ressel@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 .
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x0000
+#define DEVICE_VER 0x0001
+#define MANUFACTURER SpiderIsland
+#define PRODUCT Winry 25tc
+
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 5
+
+#define MATRIX_ROW_PINS { E6, F0, D6, D2, B6 }
+#define MATRIX_COL_PINS { F5, C7, B7, B2, B4 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define RGB_DI_PIN D5
+#define RGBLED_NUM 40
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+#define RGBLIGHT_LIMIT_VAL 150 /* The maximum brightness level */
diff --git a/keyboards/spiderisland/winry25tc/info.json b/keyboards/spiderisland/winry25tc/info.json
new file mode 100644
index 000000000000..8e503bc74a15
--- /dev/null
+++ b/keyboards/spiderisland/winry25tc/info.json
@@ -0,0 +1,36 @@
+{
+ "keyboard_name": "Winry 25tc",
+ "url": "",
+ "maintainer": "qmk",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"K00 (E6,F5)", "x":0, "y":0},
+ {"label":"K01 (E6,C7)", "x":1, "y":0},
+ {"label":"K02 (E6,B7)", "x":2, "y":0},
+ {"label":"K03 (E6,B2)", "x":3, "y":0},
+ {"label":"K04 (E6,B4)", "x":4, "y":0},
+ {"label":"K10 (F0,F5)", "x":0, "y":1},
+ {"label":"K11 (F0,C7)", "x":1, "y":1},
+ {"label":"K12 (F0,B7)", "x":2, "y":1},
+ {"label":"K13 (F0,B2)", "x":3, "y":1},
+ {"label":"K14 (F0,B4)", "x":4, "y":1},
+ {"label":"K20 (D6,F5)", "x":0, "y":2},
+ {"label":"K21 (D6,C7)", "x":1, "y":2},
+ {"label":"K22 (D6,B7)", "x":2, "y":2},
+ {"label":"K23 (D6,B2)", "x":3, "y":2},
+ {"label":"K24 (D6,B4)", "x":4, "y":2},
+ {"label":"K30 (D2,F5)", "x":0, "y":3},
+ {"label":"K31 (D2,C7)", "x":1, "y":3},
+ {"label":"K32 (D2,B7)", "x":2, "y":3},
+ {"label":"K33 (D2,B2)", "x":3, "y":3},
+ {"label":"K34 (D2,B4)", "x":4, "y":3},
+ {"label":"K40 (B6,F5)", "x":0, "y":4},
+ {"label":"K41 (B6,C7)", "x":1, "y":4},
+ {"label":"K42 (B6,B7)", "x":2, "y":4},
+ {"label":"K43 (B6,B2)", "x":3, "y":4},
+ {"label":"K44 (B6,B4)", "x":4, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/spiderisland/winry25tc/keymaps/default/keymap.c b/keyboards/spiderisland/winry25tc/keymaps/default/keymap.c
new file mode 100644
index 000000000000..ec1d0f42edc9
--- /dev/null
+++ b/keyboards/spiderisland/winry25tc/keymaps/default/keymap.c
@@ -0,0 +1,39 @@
+/* Copyright 2021 Andrzej Ressel (andrzej.ressel@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 .
+ */
+
+#include QMK_KEYBOARD_H
+
+enum my_layers {
+ _FIRST_LAYER,
+ _SECOND_LAYER
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_FIRST_LAYER] = LAYOUT(
+ KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_ESC,
+ KC_P7, KC_P8, KC_P9, KC_PPLS, RGB_TOG,
+ KC_P4, KC_P5, KC_P6, KC_PENT, RGB_MOD,
+ KC_P1, KC_P2, KC_P3, KC_UP, MO(_SECOND_LAYER),
+ KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [_SECOND_LAYER] = LAYOUT(
+ 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_MUTE, KC_VOLD, KC_VOLU,
+ KC_MPLY, KC_MSTP, KC_MPRV, KC_MNXT, _______,
+ KC_RSFT, KC_RALT, KC_RGUI, KC_APP, KC_RCTL
+ ),
+};
diff --git a/keyboards/spiderisland/winry25tc/readme.md b/keyboards/spiderisland/winry25tc/readme.md
new file mode 100644
index 000000000000..45ba0bd5a42a
--- /dev/null
+++ b/keyboards/spiderisland/winry25tc/readme.md
@@ -0,0 +1,14 @@
+# SpiderIsland 25-key RGB Backlight Hot Swap Mechanical Keyboard
+
+Keyboard from [SpiderIsland on AliExpress](https://a.aliexpress.com/_dVJsSpR). Seller provides [kbfirmware](https://kbfirmware.com/) JSON config that was converted to QMK.
+
+* Keyboard Maintainer: [andrzejressel](https://github.com/andrzejressel)
+* Hardware Availability: https://aliexpress.com/item/1005001523579896.html
+
+Make example for this keyboard (after setting up your build environment):
+
+ make spiderisland/winry25tc:default
+
+**Reset Key**: Located on the other side of the keyboard.
+
+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).
\ No newline at end of file
diff --git a/keyboards/spiderisland/winry25tc/rules.mk b/keyboards/spiderisland/winry25tc/rules.mk
new file mode 100644
index 000000000000..4eb00f7407b4
--- /dev/null
+++ b/keyboards/spiderisland/winry25tc/rules.mk
@@ -0,0 +1,22 @@
+# 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 = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+
+KEY_LOCK_ENABLE = yes # Enable KC_LOCK support
diff --git a/keyboards/spiderisland/winry25tc/winry25tc.c b/keyboards/spiderisland/winry25tc/winry25tc.c
new file mode 100644
index 000000000000..938dadaf8fc9
--- /dev/null
+++ b/keyboards/spiderisland/winry25tc/winry25tc.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 Andrzej Ressel (andrzej.ressel@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 .
+ */
+
+#include "winry25tc.h"
diff --git a/keyboards/spiderisland/winry25tc/winry25tc.h b/keyboards/spiderisland/winry25tc/winry25tc.h
new file mode 100644
index 000000000000..5498dd8d6bb2
--- /dev/null
+++ b/keyboards/spiderisland/winry25tc/winry25tc.h
@@ -0,0 +1,33 @@
+/* Copyright 2021 Andrzej Ressel (andrzej.ressel@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 .
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT( \
+ K00, K01, K02, K03, K04, \
+ K10, K11, K12, K13, K14, \
+ K20, K21, K22, K23, K24, \
+ K30, K31, K32, K33, K34, \
+ K40, K41, K42, K43, K44 \
+) { \
+ { K00, K01, K02, K03, K04 }, \
+ { K10, K11, K12, K13, K14 }, \
+ { K20, K21, K22, K23, K24 }, \
+ { K30, K31, K32, K33, K34 }, \
+ { K40, K41, K42, K43, K44 }, \
+}
diff --git a/keyboards/splitkb/kyria/keymaps/drashna/keymap.c b/keyboards/splitkb/kyria/keymaps/drashna/keymap.c
index 2dc934644250..6c7ac34d5127 100644
--- a/keyboards/splitkb/kyria/keymaps/drashna/keymap.c
+++ b/keyboards/splitkb/kyria/keymaps/drashna/keymap.c
@@ -92,8 +92,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_wrapper(
KC_MAKE, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, KC_RESET,
VRSN, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, EEP_RST,
- _______, _________________ADJUST_L3_________________, HPT_TOG, HPT_FBK, MG_NKRO, UC_MOD, _________________ADJUST_R3_________________, TG_MODS,
- _______, _______, _______, KC_NUKE, _______, _______, _______, _______, _______, _______
+ UC_MOD, _________________ADJUST_L3_________________, HPT_TOG, HPT_FBK, MG_NKRO, UC_MOD, _________________ADJUST_R3_________________, TG_MODS,
+ _______, _______, KEYLOCK, KC_NUKE, _______, _______, _______, _______, _______, _______
),
// [_LAYERINDEX] = LAYOUT_wrapper(
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/splitkb/kyria/keymaps/drashna/rules.mk b/keyboards/splitkb/kyria/keymaps/drashna/rules.mk
index b51cc1b626be..6accf8cc0382 100644
--- a/keyboards/splitkb/kyria/keymaps/drashna/rules.mk
+++ b/keyboards/splitkb/kyria/keymaps/drashna/rules.mk
@@ -1,23 +1,19 @@
-OLED_ENABLE = yes
-OLED_DRIVER = SSD1306 # Enables the use of OLED displays
-ENCODER_ENABLE = yes # ENables the use of one or more encoders
-RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-RGBLIGHT_STARTUP_ANIMATION = no
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # USB Nkey Rollover
+UNICODE_ENABLE = yes # Unicode
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306 # Enables the use of OLED displays
+ENCODER_ENABLE = yes # Enables the use of one or more encoders
-BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
-MOUSEKEY_ENABLE = no # 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 = yes # USB Nkey Rollover
-UNICODE_ENABLE = no # Unicode
-KEY_LOCK_ENABLE = no
-
-
-BOOTLOADER = hid
-BOOTLOADER_SIZE = 512
-PROGRAM_CMD = $(HID_BOOTLOADER_CLI) -mmcu=$(MCU) -w -v $(BUILD_DIR)/$(TARGET).hex
-# TAP_DANCE_ENABLE = yes
-
-WPM_ENABLE = yes
-SWAP_HANDS_ENABLE = yes
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+RGBLIGHT_STARTUP_ANIMATION = yes
+RGB_MATRIX_ENABLE = yes
+TAP_DANCE_ENABLE = yes
+KEY_LOCK_ENABLE = no
+WPM_ENABLE = yes
+SWAP_HANDS_ENABLE = yes
+LTO_ENABLE = no
diff --git a/keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/config.h b/keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/config.h
index c04bee9b4fd8..495b3032c644 100644
--- a/keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/config.h
+++ b/keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/config.h
@@ -1,6 +1,6 @@
// Copyright 2019 Manna Harbour
// https://github.com/manna-harbour/miryoku
-// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*-
+// generated -*- buffer-read-only: t -*-
// 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 .
diff --git a/keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/keymap.c
index 1520387e8887..7c5717a0fee0 100644
--- a/keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/keymap.c
+++ b/keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/keymap.c
@@ -1,5 +1,5 @@
// Copyright 2019 Manna Harbour
// https://github.com/manna-harbour/miryoku
-// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*-
+// generated -*- buffer-read-only: t -*-
// 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 .
diff --git a/keyboards/splitkb/kyria/keymaps/zigotica/config.h b/keyboards/splitkb/kyria/keymaps/zigotica/config.h
new file mode 100644
index 000000000000..b59e04474b68
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/zigotica/config.h
@@ -0,0 +1,44 @@
+/* Copyright 2020 Sergi Meseguer
+
+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 .
+*/
+
+#pragma once
+
+#define SPLIT_LAYER_STATE_ENABLE
+#define SPLIT_LED_STATE_ENABLE
+#define MASTER_RIGHT// EE_HANDS MASTER_RIGHT
+
+// these should work better for homerow modifiers
+#define TAPPING_TERM 350
+#define PERMISSIVE_HOLD
+#define IGNORE_MOD_TAP_INTERRUPT
+#define TAPPING_FORCE_HOLD
+
+#define LEADER_PER_KEY_TIMING
+#define LEADER_TIMEOUT 300
+
+#ifdef OLED_ENABLE
+ #define OLED_DISPLAY_128X64
+ #define OLED_TIMEOUT 10000
+#endif
+
+#ifdef ENCODER_ENABLE
+ // EC11K encoders have a different resolution than other EC11 encoders.
+ // When using the default resolution of 4, if you notice your encoder skipping
+ // every other tick, lower the resolution to 2.
+ #define ENCODER_RESOLUTION 2
+ // Also, flip direction
+ #define ENCODER_DIRECTION_FLIP
+#endif
diff --git a/keyboards/splitkb/kyria/keymaps/zigotica/keymap.c b/keyboards/splitkb/kyria/keymaps/zigotica/keymap.c
new file mode 100644
index 000000000000..2671f074636b
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/zigotica/keymap.c
@@ -0,0 +1,58 @@
+/* Copyright 2020 Sergi Meseguer
+
+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 "zigotica.h"
+
+#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [BASE] = LAYOUT_wrapper(
+ _______, _STENAI_L1, _STENAI_R1, _______,
+ _______, _STENAI_L2, _STENAI_R2, _______,
+ _______, _STENAI_L3, _______, _______, _______, _______, _STENAI_R3, _______,
+ _______, _______, _STENAI_LT, _______, _______, _STENAI_RT, _______, _______
+ ),
+
+ [_NUM] = LAYOUT_wrapper(
+ _______, ____NUM_L1, ____NUM_R1, _______,
+ _______, ____NUM_L2, ____NUM_R2, _______,
+ _______, ____NUM_L3, _______, _______, _______, _______, ____NUM_R3, _______,
+ _______, _______, ____NUM_LT, _______, _______, ____NUM_RT, _______, _______
+ ),
+
+ [_NAV] = LAYOUT_wrapper(
+ _______, ____NAV_L1, ____NAV_R1, _______,
+ _______, ____NAV_L2, ____NAV_R2, _______,
+ _______, ____NAV_L3, _______, _______, _______, _______, ____NAV_R3, _______,
+ _______, _______, ____NAV_LT, _______, _______, ____NAV_RT, _______, _______
+ ),
+
+ [_SYM] = LAYOUT_wrapper(
+ _______, ____SYM_L1, ____SYM_R1, _______,
+ _______, ____SYM_L2, ____SYM_R2, _______,
+ _______, ____SYM_L3, _______, _______, _______, _______, ____SYM_R3, _______,
+ _______, _______, ____SYM_LT, _______, _______, ____SYM_RT, _______, _______
+ ),
+
+ [_FN] = LAYOUT_wrapper(
+ _______, ____FN_L1, ____FN_R1, _______,
+ _______, ____FN_L2, ____FN_R2, _______,
+ _______, ____FN_L3, _______, _______, _______, _______, ____FN_R3, _______,
+ _______, _______, ____FN_LT, _______, _______, ____FN_RT, _______, _______
+ ),
+};
+
diff --git a/keyboards/splitkb/kyria/keymaps/zigotica/oled.c b/keyboards/splitkb/kyria/keymaps/zigotica/oled.c
new file mode 100644
index 000000000000..46bb2c3cea41
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/zigotica/oled.c
@@ -0,0 +1,87 @@
+/* Copyright 2020 Sergi Meseguer
+
+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 "zigotica.h"
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ return OLED_ROTATION_180;
+}
+
+static void render_kyria_logo(void) {
+ static const char PROGMEM kyria_logo[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,231,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,240,252,255, 31, 7, 1, 0, 0,192,240,252,254,255,247,243,177,176, 48, 48, 48, 48, 48, 48, 48,120,254,135, 1, 0, 0,255,255, 0, 0, 1,135,254,120, 48, 48, 48, 48, 48, 48, 48,176,177,243,247,255,254,252,240,192, 0, 0, 1, 7, 31,255,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,254,255,255, 1, 1, 7, 30,120,225,129,131,131,134,134,140,140,152,152,177,183,254,248,224,255,255,224,248,254,183,177,152,152,140,140,134,134,131,131,129,225,120, 30, 7, 1, 1,255,255,254, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0,255,255, 0, 0,192,192, 48, 48, 0, 0,240,240, 0, 0, 0, 0, 0, 0,240,240, 0, 0,240,240,192,192, 48, 48, 48, 48,192,192, 0, 0, 48, 48,243,243, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48,192,192, 0, 0, 0, 0, 0,
+ 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,127,255,255,128,128,224,120, 30,135,129,193,193, 97, 97, 49, 49, 25, 25,141,237,127, 31, 7,255,255, 7, 31,127,237,141, 25, 25, 49, 49, 97, 97,193,193,129,135, 30,120,224,128,128,255,255,127, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 63, 63, 3, 3, 12, 12, 48, 48, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 15, 15, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 63, 63, 48, 48, 0, 0, 12, 12, 51, 51, 51, 51, 51, 51, 63, 63, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 15, 63,255,248,224,128, 0, 0, 3, 15, 63,127,255,239,207,141, 13, 12, 12, 12, 12, 12, 12, 12, 30,127,225,128, 0, 0,255,255, 0, 0,128,225,127, 30, 12, 12, 12, 12, 12, 12, 12, 13,141,207,239,255,127, 63, 15, 3, 0, 0,128,224,248,255, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3, 7, 15, 62,124,248,240,224,192,128, 1, 3, 7, 15, 30, 28, 60, 56,120,112,112,224,224,225,231,254,248,255,255,248,254,231,225,224,224,112,112,120, 56, 60, 28, 30, 15, 7, 3, 1,128,192,224,240,248,124, 62, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 15, 14, 30, 28, 60, 56,120,112,112,112,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,112,112,112,120, 56, 60, 28, 30, 14, 15, 7, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ };
+ oled_write_raw_P(kyria_logo, sizeof(kyria_logo));
+}
+
+static void render_qmk_logo(void) {
+ static const char PROGMEM qmk_logo[] = {
+ 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
+ 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
+ 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0};
+
+ oled_write_P(qmk_logo, false);
+}
+
+static void render_status(void) {
+ // QMK Logo and version information
+ render_qmk_logo();
+ oled_write_P(PSTR("Kyria v1.2\n\n"), false);
+
+ // Host Keyboard Layer Status
+ oled_write_P(PSTR("Layer: "), false);
+ switch (get_highest_layer(layer_state)) {
+ case BASE:
+ oled_write_P(PSTR("STENAI\n"), false);
+ break;
+ case _NUM:
+ oled_write_P(PSTR("NUM\n"), false);
+ break;
+ case _NAV:
+ oled_write_P(PSTR("NAV\n"), false);
+ break;
+ case _SYM:
+ oled_write_P(PSTR("SYM\n"), false);
+ break;
+ case _FN:
+ oled_write_P(PSTR("FN\n"), false);
+ break;
+ default:
+ oled_write_P(PSTR("Undef\n"), false);
+ }
+
+ // Host Keyboard LED Status
+ led_t led_state = host_keyboard_led_state();
+ oled_write_P(led_state.num_lock ? PSTR("NUMLCK ") : PSTR(" "), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLCK ") : PSTR(" "), false);
+}
+
+void oled_task_user(void) {
+ if (!is_keyboard_left()) {
+ render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
+ } else {
+ render_kyria_logo();
+ }
+}
+
diff --git a/keyboards/splitkb/kyria/keymaps/zigotica/oled.h b/keyboards/splitkb/kyria/keymaps/zigotica/oled.h
new file mode 100644
index 000000000000..2422c68f2869
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/zigotica/oled.h
@@ -0,0 +1,18 @@
+/* Copyright 2020 Sergi Meseguer
+
+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 .
+*/
+
+#pragma once
+#include "zigotica.h"
diff --git a/keyboards/splitkb/kyria/keymaps/zigotica/rules.mk b/keyboards/splitkb/kyria/keymaps/zigotica/rules.mk
new file mode 100644
index 000000000000..29d98d7019bf
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/zigotica/rules.mk
@@ -0,0 +1,10 @@
+OLED_ENABLE = yes
+ENCODER_ENABLE = no
+RGBLIGHT_ENABLE = no
+
+COMBO_ENABLE = yes
+TAP_DANCE_ENABLE = yes
+LEADER_ENABLE = no
+UNICODE_ENABLE = no
+MOUSEKEY_ENABLE = yes
+
diff --git a/keyboards/splitkb/zima/keymaps/drashna/config.h b/keyboards/splitkb/zima/keymaps/drashna/config.h
index 133ab6a91474..8d0908182e35 100644
--- a/keyboards/splitkb/zima/keymaps/drashna/config.h
+++ b/keyboards/splitkb/zima/keymaps/drashna/config.h
@@ -32,3 +32,6 @@
#define OLED_LOGO_SCIFI
#define ENCODER_RESOLUTION 2
+
+#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_TWINKLE+4
+#define RGBLIGHT_DEFAULT_HUE 213
diff --git a/keyboards/steal_this_keyboard/info.json b/keyboards/steal_this_keyboard/info.json
index 0a0ab13e6c47..7a4eabdb5575 100644
--- a/keyboards/steal_this_keyboard/info.json
+++ b/keyboards/steal_this_keyboard/info.json
@@ -3,7 +3,7 @@
"url": "https://github.com/obosob/steal_this_keyboard",
"maintainer": "@obosob",
"layouts": {
- "LAYOUT": {
+ "LAYOUT_split_3x5_2": {
"layout": [
{"x": 0, "y": 0.93},
{"x": 1, "y": 0.31},
diff --git a/keyboards/superuser/ext/ext.h b/keyboards/superuser/ext/ext.h
index f83b5bed1952..3bed0782d2db 100644
--- a/keyboards/superuser/ext/ext.h
+++ b/keyboards/superuser/ext/ext.h
@@ -17,16 +17,88 @@
#include "quantum.h"
-#define LAYOUT_tkl(\
- KF10, KF11, K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K312, K114, K115, K116, \
- KF20, KF21, K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, \
- KF30, KF31, K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, \
- KF40, KF41, K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K415, \
- KF50, KF51, K500, K501, K502, K506, K511, K512, K513, K514, K515, K516 \
+#define ___ KC_NO
+
+/*
+ * ┌───┬───┐┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐┌───┬───┬───┐ ┌───────┐
+ * │00 │01 ││02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0E │0F │2E ││0G │0H │0I │ │0F │ 2u Backspace
+ * ├───┼───┤├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤├───┼───┼───┤ └─┬─────┤
+ * │10 │11 ││12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │1E │1F ││1G │1H │1I │ │ │
+ * 2.25u ├───┼───┤├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤└───┴───┴───┘ ┌──┴┐2F │ ISO Enter
+ * LShift │20 │21 ││22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2D │2F │ │1F │ │
+ * ┌────────┐ ├───┼───┤├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ ┌─┴───┴────┤
+ * │32 │ │30 │31 ││32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │3E │3F │ │3H │ │3E │ 2.75u RShift
+ * └────────┘ ├───┼───┤├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤┌───┼───┼───┐ └──────────┘
+ * │40 │41 ││42 │43 │44 │48 │4D │4E │4F ││4G │4H │4I │
+ * └───┴───┘└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘└───┴───┴───┘
+ */
+
+#define LAYOUT_all(\
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K2E, K0G, K0H, K0I, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H, K1I, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2F, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3H, \
+ K40, K41, K42, K43, K44, K48, K4D, K4E, K4F, K4G, K4H, K4I \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H, K0I }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H, K1I }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, ___, ___, ___ }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, ___, K3H, ___ }, \
+ { K40, K41, K42, K43, K44, ___, ___, ___, K48, ___, ___, ___, ___, K4D, K4E, K4F, K4G, K4H, K4I } \
+}
+
+#define LAYOUT_ansi(\
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H, K0I, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H, K1I, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2F, \
+ K30, K31, K32, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3H, \
+ K40, K41, K42, K43, K44, K48, K4D, K4E, K4F, K4G, K4H, K4I \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H, K0I }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H, K1I }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, ___, K2F, ___, ___, ___ }, \
+ { K30, K31, K32, ___, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, ___, ___, K3H, ___ }, \
+ { K40, K41, K42, K43, K44, ___, ___, ___, K48, ___, ___, ___, ___, K4D, K4E, K4F, K4G, K4H, K4I } \
+}
+
+#define LAYOUT_ansi_split_bs_rshift(\
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K2E, K0G, K0H, K0I, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H, K1I, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2F, \
+ K30, K31, K32, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3H, \
+ K40, K41, K42, K43, K44, K48, K4D, K4E, K4F, K4G, K4H, K4I \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H, K0I }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H, K1I }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, ___, ___, ___ }, \
+ { K30, K31, K32, ___, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, ___, K3H, ___ }, \
+ { K40, K41, K42, K43, K44, ___, ___, ___, K48, ___, ___, ___, ___, K4D, K4E, K4F, K4G, K4H, K4I } \
+}
+
+#define LAYOUT_iso(\
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H, K0I, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1G, K1H, K1I, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K1F, K2F, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3H, \
+ K40, K41, K42, K43, K44, K48, K4D, K4E, K4F, K4G, K4H, K4I \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H, K0I }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H, K1I }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, ___, K2F, ___, ___, ___ }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, ___, ___, K3H, ___ }, \
+ { K40, K41, K42, K43, K44, ___, ___, ___, K48, ___, ___, ___, ___, K4D, K4E, K4F, K4G, K4H, K4I } \
+}
+
+#define LAYOUT_iso_split_bs_rshift(\
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K2E, K0G, K0H, K0I, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1G, K1H, K1I, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K1F, K2F, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3H, \
+ K40, K41, K42, K43, K44, K48, K4D, K4E, K4F, K4G, K4H, K4I \
) { \
- { KF10, KF11, K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116 }, \
- { KF20, KF21, K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216 }, \
- { KF30, KF31, K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, KC_NO, KC_NO, KC_NO }, \
- { KF40, KF41, K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, KC_NO, K415, KC_NO }, \
- { KF50, KF51, K500, K501, K502, KC_NO, KC_NO, KC_NO, K506, KC_NO, KC_NO, KC_NO, KC_NO, K511, K512, K513, K514, K515, K516 } \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H, K0I }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H, K1I }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, ___, ___, ___ }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, ___, K3H, ___ }, \
+ { K40, K41, K42, K43, K44, ___, ___, ___, K48, ___, ___, ___, ___, K4D, K4E, K4F, K4G, K4H, K4I } \
}
diff --git a/keyboards/superuser/ext/info.json b/keyboards/superuser/ext/info.json
index 272df98a9a38..c19fc3a91334 100644
--- a/keyboards/superuser/ext/info.json
+++ b/keyboards/superuser/ext/info.json
@@ -1,10 +1,459 @@
{
"keyboard_name": "ext",
"url": "",
- "maintainer": "superuser",
+ "maintainer": "kaylanm",
+ "layout_aliases": {
+ "LAYOUT_tkl": "LAYOUT_all"
+ },
"layouts": {
- "LAYOUT": {
- "layout": [{"label":"F1", "x":0, "y":0}, {"label":"F2", "x":1, "y":0}, {"label":"~", "x":2.25, "y":0}, {"label":"!", "x":3.25, "y":0}, {"label":"@", "x":4.25, "y":0}, {"label":"#", "x":5.25, "y":0}, {"label":"$", "x":6.25, "y":0}, {"label":"%", "x":7.25, "y":0}, {"label":"^", "x":8.25, "y":0}, {"label":"&", "x":9.25, "y":0}, {"label":"*", "x":10.25, "y":0}, {"label":"(", "x":11.25, "y":0}, {"label":")", "x":12.25, "y":0}, {"label":"_", "x":13.25, "y":0}, {"label":"+", "x":14.25, "y":0}, {"label":"Bksp", "x":15.25, "y":0}, {"label":"Bksp", "x":16.25, "y":0}, {"label":"Insert", "x":17.5, "y":0}, {"label":"Home", "x":18.5, "y":0}, {"label":"PgUp", "x":19.5, "y":0}, {"label":"F3", "x":0, "y":1}, {"label":"F4", "x":1, "y":1}, {"label":"Tab", "x":2.25, "y":1, "w":1.5}, {"label":"Q", "x":3.75, "y":1}, {"label":"W", "x":4.75, "y":1}, {"label":"E", "x":5.75, "y":1}, {"label":"R", "x":6.75, "y":1}, {"label":"T", "x":7.75, "y":1}, {"label":"Y", "x":8.75, "y":1}, {"label":"U", "x":9.75, "y":1}, {"label":"I", "x":10.75, "y":1}, {"label":"O", "x":11.75, "y":1}, {"label":"P", "x":12.75, "y":1}, {"label":"{", "x":13.75, "y":1}, {"label":"}", "x":14.75, "y":1}, {"label":"|", "x":15.75, "y":1, "w":1.5}, {"label":"Delete", "x":17.5, "y":1}, {"label":"End", "x":18.5, "y":1}, {"label":"PgDn", "x":19.5, "y":1}, {"label":"F5", "x":0, "y":2}, {"label":"F6", "x":1, "y":2}, {"label":"Caps Lock", "x":2.25, "y":2, "w":1.75}, {"label":"A", "x":4, "y":2}, {"label":"S", "x":5, "y":2}, {"label":"D", "x":6, "y":2}, {"label":"F", "x":7, "y":2}, {"label":"G", "x":8, "y":2}, {"label":"H", "x":9, "y":2}, {"label":"J", "x":10, "y":2}, {"label":"K", "x":11, "y":2}, {"label":"L", "x":12, "y":2}, {"label":":", "x":13, "y":2}, {"label":"\"", "x":14, "y":2}, {"label":"Enter", "x":15, "y":2, "w":2.25}, {"label":"F7", "x":0, "y":3}, {"label":"F8", "x":1, "y":3}, {"label":"Shift", "x":2.25, "y":3, "w":1.25}, {"label":"|", "x":3.5, "y":3}, {"label":"Z", "x":4.5, "y":3}, {"label":"X", "x":5.5, "y":3}, {"label":"C", "x":6.5, "y":3}, {"label":"V", "x":7.5, "y":3}, {"label":"B", "x":8.5, "y":3}, {"label":"N", "x":9.5, "y":3}, {"label":"M", "x":10.5, "y":3}, {"label":"<", "x":11.5, "y":3}, {"label":">", "x":12.5, "y":3}, {"label":"?", "x":13.5, "y":3}, {"label":"Shift", "x":14.5, "y":3, "w":1.75}, {"label":"Fn", "x":16.25, "y":3}, {"label":"\u2191", "x":18.5, "y":3}, {"label":"F9", "x":0, "y":4}, {"label":"F10", "x":1, "y":4}, {"label":"Ctrl", "x":2.25, "y":4, "w":1.5}, {"label":"Win", "x":3.75, "y":4}, {"label":"Alt", "x":4.75, "y":4, "w":1.5}, {"x":6.25, "y":4, "w":7}, {"label":"Alt", "x":13.25, "y":4, "w":1.5}, {"label":"Win", "x":14.75, "y":4}, {"label":"Ctrl", "x":15.75, "y":4, "w":1.5}, {"label":"\u2190", "x":17.5, "y":4}, {"label":"\u2193", "x":18.5, "y":4}, {"label":"\u2192", "x":19.5, "y":4}]
+ "LAYOUT_all": {
+ "layout": [
+ {"label":"F1", "x":0, "y":0},
+ {"label":"F2", "x":1, "y":0},
+ {"label":"`~", "x":2.25, "y":0},
+ {"label":"1!", "x":3.25, "y":0},
+ {"label":"2@", "x":4.25, "y":0},
+ {"label":"3#", "x":5.25, "y":0},
+ {"label":"4$", "x":6.25, "y":0},
+ {"label":"5%", "x":7.25, "y":0},
+ {"label":"6^", "x":8.25, "y":0},
+ {"label":"7&", "x":9.25, "y":0},
+ {"label":"8*", "x":10.25, "y":0},
+ {"label":"9(", "x":11.25, "y":0},
+ {"label":"0)", "x":12.25, "y":0},
+ {"label":"-_", "x":13.25, "y":0},
+ {"label":"=+", "x":14.25, "y":0},
+ {"label":"Bksp", "x":15.25, "y":0},
+ {"label":"Bksp", "x":16.25, "y":0},
+ {"label":"Insert", "x":17.5, "y":0},
+ {"label":"Home", "x":18.5, "y":0},
+ {"label":"PgUp", "x":19.5, "y":0},
+
+ {"label":"F3", "x":0, "y":1},
+ {"label":"F4", "x":1, "y":1},
+ {"label":"Tab", "x":2.25, "y":1, "w":1.5},
+ {"label":"Q", "x":3.75, "y":1},
+ {"label":"W", "x":4.75, "y":1},
+ {"label":"E", "x":5.75, "y":1},
+ {"label":"R", "x":6.75, "y":1},
+ {"label":"T", "x":7.75, "y":1},
+ {"label":"Y", "x":8.75, "y":1},
+ {"label":"U", "x":9.75, "y":1},
+ {"label":"I", "x":10.75, "y":1},
+ {"label":"O", "x":11.75, "y":1},
+ {"label":"P", "x":12.75, "y":1},
+ {"label":"[{", "x":13.75, "y":1},
+ {"label":"]}", "x":14.75, "y":1},
+ {"label":"\\|", "x":15.75, "y":1, "w":1.5},
+ {"label":"Delete", "x":17.5, "y":1},
+ {"label":"End", "x":18.5, "y":1},
+ {"label":"PgDn", "x":19.5, "y":1},
+
+ {"label":"F5", "x":0, "y":2},
+ {"label":"F6", "x":1, "y":2},
+ {"label":"Caps Lock", "x":2.25, "y":2, "w":1.75},
+ {"label":"A", "x":4, "y":2},
+ {"label":"S", "x":5, "y":2},
+ {"label":"D", "x":6, "y":2},
+ {"label":"F", "x":7, "y":2},
+ {"label":"G", "x":8, "y":2},
+ {"label":"H", "x":9, "y":2},
+ {"label":"J", "x":10, "y":2},
+ {"label":"K", "x":11, "y":2},
+ {"label":"L", "x":12, "y":2},
+ {"label":";:", "x":13, "y":2},
+ {"label":"'\"", "x":14, "y":2},
+ {"label":"Enter", "x":15, "y":2, "w":2.25},
+
+ {"label":"F7", "x":0, "y":3},
+ {"label":"F8", "x":1, "y":3},
+ {"label":"Shift", "x":2.25, "y":3, "w":1.25},
+ {"label":"\\|", "x":3.5, "y":3},
+ {"label":"Z", "x":4.5, "y":3},
+ {"label":"X", "x":5.5, "y":3},
+ {"label":"C", "x":6.5, "y":3},
+ {"label":"V", "x":7.5, "y":3},
+ {"label":"B", "x":8.5, "y":3},
+ {"label":"N", "x":9.5, "y":3},
+ {"label":"M", "x":10.5, "y":3},
+ {"label":",<", "x":11.5, "y":3},
+ {"label":".>", "x":12.5, "y":3},
+ {"label":"/?", "x":13.5, "y":3},
+ {"label":"Shift", "x":14.5, "y":3, "w":1.75},
+ {"label":"Fn", "x":16.25, "y":3},
+ {"label":"\u2191", "x":18.5, "y":3},
+
+ {"label":"F9", "x":0, "y":4},
+ {"label":"F10", "x":1, "y":4},
+ {"label":"Ctrl", "x":2.25, "y":4, "w":1.5},
+ {"label":"Win", "x":3.75, "y":4},
+ {"label":"Alt", "x":4.75, "y":4, "w":1.5},
+ {"label":"Space", "x":6.25, "y":4, "w":7},
+ {"label":"Alt", "x":13.25, "y":4, "w":1.5},
+ {"label":"Win", "x":14.75, "y":4},
+ {"label":"Ctrl", "x":15.75, "y":4, "w":1.5},
+ {"label":"\u2190", "x":17.5, "y":4},
+ {"label":"\u2193", "x":18.5, "y":4},
+ {"label":"\u2192", "x":19.5, "y":4}
+ ]
+ },
+ "LAYOUT_ansi": {
+ "layout": [
+ {"label":"F1", "x":0, "y":0},
+ {"label":"F2", "x":1, "y":0},
+ {"label":"`~", "x":2.25, "y":0},
+ {"label":"1!", "x":3.25, "y":0},
+ {"label":"2@", "x":4.25, "y":0},
+ {"label":"3#", "x":5.25, "y":0},
+ {"label":"4$", "x":6.25, "y":0},
+ {"label":"5%", "x":7.25, "y":0},
+ {"label":"6^", "x":8.25, "y":0},
+ {"label":"7&", "x":9.25, "y":0},
+ {"label":"8*", "x":10.25, "y":0},
+ {"label":"9(", "x":11.25, "y":0},
+ {"label":"0)", "x":12.25, "y":0},
+ {"label":"-_", "x":13.25, "y":0},
+ {"label":"=+", "x":14.25, "y":0},
+ {"label":"Bksp", "x":15.25, "y":0, "w":2},
+ {"label":"Insert", "x":17.5, "y":0},
+ {"label":"Home", "x":18.5, "y":0},
+ {"label":"PgUp", "x":19.5, "y":0},
+
+ {"label":"F3", "x":0, "y":1},
+ {"label":"F4", "x":1, "y":1},
+ {"label":"Tab", "x":2.25, "y":1, "w":1.5},
+ {"label":"Q", "x":3.75, "y":1},
+ {"label":"W", "x":4.75, "y":1},
+ {"label":"E", "x":5.75, "y":1},
+ {"label":"R", "x":6.75, "y":1},
+ {"label":"T", "x":7.75, "y":1},
+ {"label":"Y", "x":8.75, "y":1},
+ {"label":"U", "x":9.75, "y":1},
+ {"label":"I", "x":10.75, "y":1},
+ {"label":"O", "x":11.75, "y":1},
+ {"label":"P", "x":12.75, "y":1},
+ {"label":"[{", "x":13.75, "y":1},
+ {"label":"]}", "x":14.75, "y":1},
+ {"label":"\\|", "x":15.75, "y":1, "w":1.5},
+ {"label":"Delete", "x":17.5, "y":1},
+ {"label":"End", "x":18.5, "y":1},
+ {"label":"PgDn", "x":19.5, "y":1},
+
+ {"label":"F5", "x":0, "y":2},
+ {"label":"F6", "x":1, "y":2},
+ {"label":"Caps Lock", "x":2.25, "y":2, "w":1.75},
+ {"label":"A", "x":4, "y":2},
+ {"label":"S", "x":5, "y":2},
+ {"label":"D", "x":6, "y":2},
+ {"label":"F", "x":7, "y":2},
+ {"label":"G", "x":8, "y":2},
+ {"label":"H", "x":9, "y":2},
+ {"label":"J", "x":10, "y":2},
+ {"label":"K", "x":11, "y":2},
+ {"label":"L", "x":12, "y":2},
+ {"label":";:", "x":13, "y":2},
+ {"label":"'\"", "x":14, "y":2},
+ {"label":"Enter", "x":15, "y":2, "w":2.25},
+
+ {"label":"F7", "x":0, "y":3},
+ {"label":"F8", "x":1, "y":3},
+ {"label":"Shift", "x":2.25, "y":3, "w":2.25},
+ {"label":"Z", "x":4.5, "y":3},
+ {"label":"X", "x":5.5, "y":3},
+ {"label":"C", "x":6.5, "y":3},
+ {"label":"V", "x":7.5, "y":3},
+ {"label":"B", "x":8.5, "y":3},
+ {"label":"N", "x":9.5, "y":3},
+ {"label":"M", "x":10.5, "y":3},
+ {"label":",<", "x":11.5, "y":3},
+ {"label":".>", "x":12.5, "y":3},
+ {"label":"/?", "x":13.5, "y":3},
+ {"label":"Shift", "x":14.5, "y":3, "w":2.75},
+ {"label":"\u2191", "x":18.5, "y":3},
+
+ {"label":"F9", "x":0, "y":4},
+ {"label":"F10", "x":1, "y":4},
+ {"label":"Ctrl", "x":2.25, "y":4, "w":1.5},
+ {"label":"Win", "x":3.75, "y":4},
+ {"label":"Alt", "x":4.75, "y":4, "w":1.5},
+ {"label":"Space", "x":6.25, "y":4, "w":7},
+ {"label":"Alt", "x":13.25, "y":4, "w":1.5},
+ {"label":"Win", "x":14.75, "y":4},
+ {"label":"Ctrl", "x":15.75, "y":4, "w":1.5},
+ {"label":"\u2190", "x":17.5, "y":4},
+ {"label":"\u2193", "x":18.5, "y":4},
+ {"label":"\u2192", "x":19.5, "y":4}
+ ]
+ },
+ "LAYOUT_ansi_split_bs_rshift": {
+ "layout": [
+ {"label":"F1", "x":0, "y":0},
+ {"label":"F2", "x":1, "y":0},
+ {"label":"`~", "x":2.25, "y":0},
+ {"label":"1!", "x":3.25, "y":0},
+ {"label":"2@", "x":4.25, "y":0},
+ {"label":"3#", "x":5.25, "y":0},
+ {"label":"4$", "x":6.25, "y":0},
+ {"label":"5%", "x":7.25, "y":0},
+ {"label":"6^", "x":8.25, "y":0},
+ {"label":"7&", "x":9.25, "y":0},
+ {"label":"8*", "x":10.25, "y":0},
+ {"label":"9(", "x":11.25, "y":0},
+ {"label":"0)", "x":12.25, "y":0},
+ {"label":"-_", "x":13.25, "y":0},
+ {"label":"=+", "x":14.25, "y":0},
+ {"label":"Bksp", "x":15.25, "y":0},
+ {"label":"Bksp", "x":16.25, "y":0},
+ {"label":"Insert", "x":17.5, "y":0},
+ {"label":"Home", "x":18.5, "y":0},
+ {"label":"PgUp", "x":19.5, "y":0},
+
+ {"label":"F3", "x":0, "y":1},
+ {"label":"F4", "x":1, "y":1},
+ {"label":"Tab", "x":2.25, "y":1, "w":1.5},
+ {"label":"Q", "x":3.75, "y":1},
+ {"label":"W", "x":4.75, "y":1},
+ {"label":"E", "x":5.75, "y":1},
+ {"label":"R", "x":6.75, "y":1},
+ {"label":"T", "x":7.75, "y":1},
+ {"label":"Y", "x":8.75, "y":1},
+ {"label":"U", "x":9.75, "y":1},
+ {"label":"I", "x":10.75, "y":1},
+ {"label":"O", "x":11.75, "y":1},
+ {"label":"P", "x":12.75, "y":1},
+ {"label":"[{", "x":13.75, "y":1},
+ {"label":"]}", "x":14.75, "y":1},
+ {"label":"\\|", "x":15.75, "y":1, "w":1.5},
+ {"label":"Delete", "x":17.5, "y":1},
+ {"label":"End", "x":18.5, "y":1},
+ {"label":"PgDn", "x":19.5, "y":1},
+
+ {"label":"F5", "x":0, "y":2},
+ {"label":"F6", "x":1, "y":2},
+ {"label":"Caps Lock", "x":2.25, "y":2, "w":1.75},
+ {"label":"A", "x":4, "y":2},
+ {"label":"S", "x":5, "y":2},
+ {"label":"D", "x":6, "y":2},
+ {"label":"F", "x":7, "y":2},
+ {"label":"G", "x":8, "y":2},
+ {"label":"H", "x":9, "y":2},
+ {"label":"J", "x":10, "y":2},
+ {"label":"K", "x":11, "y":2},
+ {"label":"L", "x":12, "y":2},
+ {"label":";:", "x":13, "y":2},
+ {"label":"'\"", "x":14, "y":2},
+ {"label":"Enter", "x":15, "y":2, "w":2.25},
+
+ {"label":"F7", "x":0, "y":3},
+ {"label":"F8", "x":1, "y":3},
+ {"label":"Shift", "x":2.25, "y":3, "w":2.25},
+ {"label":"Z", "x":4.5, "y":3},
+ {"label":"X", "x":5.5, "y":3},
+ {"label":"C", "x":6.5, "y":3},
+ {"label":"V", "x":7.5, "y":3},
+ {"label":"B", "x":8.5, "y":3},
+ {"label":"N", "x":9.5, "y":3},
+ {"label":"M", "x":10.5, "y":3},
+ {"label":",<", "x":11.5, "y":3},
+ {"label":".>", "x":12.5, "y":3},
+ {"label":"/?", "x":13.5, "y":3},
+ {"label":"Shift", "x":14.5, "y":3, "w":1.75},
+ {"label":"Fn", "x":16.25, "y":3},
+ {"label":"\u2191", "x":18.5, "y":3},
+
+ {"label":"F9", "x":0, "y":4},
+ {"label":"F10", "x":1, "y":4},
+ {"label":"Ctrl", "x":2.25, "y":4, "w":1.5},
+ {"label":"Win", "x":3.75, "y":4},
+ {"label":"Alt", "x":4.75, "y":4, "w":1.5},
+ {"label":"Space", "x":6.25, "y":4, "w":7},
+ {"label":"Alt", "x":13.25, "y":4, "w":1.5},
+ {"label":"Win", "x":14.75, "y":4},
+ {"label":"Ctrl", "x":15.75, "y":4, "w":1.5},
+ {"label":"\u2190", "x":17.5, "y":4},
+ {"label":"\u2193", "x":18.5, "y":4},
+ {"label":"\u2192", "x":19.5, "y":4}
+ ]
+ },
+ "LAYOUT_iso": {
+ "layout": [
+ {"label":"F1", "x":0, "y":0},
+ {"label":"F2", "x":1, "y":0},
+ {"label":"`\u00ac", "x":2.25, "y":0},
+ {"label":"1!", "x":3.25, "y":0},
+ {"label":"2\"", "x":4.25, "y":0},
+ {"label":"3\u00a3", "x":5.25, "y":0},
+ {"label":"4$", "x":6.25, "y":0},
+ {"label":"5%", "x":7.25, "y":0},
+ {"label":"6^", "x":8.25, "y":0},
+ {"label":"7&", "x":9.25, "y":0},
+ {"label":"8*", "x":10.25, "y":0},
+ {"label":"9(", "x":11.25, "y":0},
+ {"label":"0)", "x":12.25, "y":0},
+ {"label":"-_", "x":13.25, "y":0},
+ {"label":"=+", "x":14.25, "y":0},
+ {"label":"Bksp", "x":15.25, "y":0, "w":2},
+ {"label":"Insert", "x":17.5, "y":0},
+ {"label":"Home", "x":18.5, "y":0},
+ {"label":"PgUp", "x":19.5, "y":0},
+
+ {"label":"F3", "x":0, "y":1},
+ {"label":"F4", "x":1, "y":1},
+ {"label":"Tab", "x":2.25, "y":1, "w":1.5},
+ {"label":"Q", "x":3.75, "y":1},
+ {"label":"W", "x":4.75, "y":1},
+ {"label":"E", "x":5.75, "y":1},
+ {"label":"R", "x":6.75, "y":1},
+ {"label":"T", "x":7.75, "y":1},
+ {"label":"Y", "x":8.75, "y":1},
+ {"label":"U", "x":9.75, "y":1},
+ {"label":"I", "x":10.75, "y":1},
+ {"label":"O", "x":11.75, "y":1},
+ {"label":"P", "x":12.75, "y":1},
+ {"label":"[{", "x":13.75, "y":1},
+ {"label":"]}", "x":14.75, "y":1},
+ {"label":"Delete", "x":17.5, "y":1},
+ {"label":"End", "x":18.5, "y":1},
+ {"label":"PgDn", "x":19.5, "y":1},
+
+ {"label":"F5", "x":0, "y":2},
+ {"label":"F6", "x":1, "y":2},
+ {"label":"Caps Lock", "x":2.25, "y":2, "w":1.75},
+ {"label":"A", "x":4, "y":2},
+ {"label":"S", "x":5, "y":2},
+ {"label":"D", "x":6, "y":2},
+ {"label":"F", "x":7, "y":2},
+ {"label":"G", "x":8, "y":2},
+ {"label":"H", "x":9, "y":2},
+ {"label":"J", "x":10, "y":2},
+ {"label":"K", "x":11, "y":2},
+ {"label":"L", "x":12, "y":2},
+ {"label":";:", "x":13, "y":2},
+ {"label":"'@", "x":14, "y":2},
+ {"label":"#~", "x":15, "y":2},
+ {"label":"Enter", "x":16, "y":1, "w":1.25, "h":2},
+
+ {"label":"F7", "x":0, "y":3},
+ {"label":"F8", "x":1, "y":3},
+ {"label":"Shift", "x":2.25, "y":3, "w":1.25},
+ {"label":"\\|", "x":3.5, "y":3},
+ {"label":"Z", "x":4.5, "y":3},
+ {"label":"X", "x":5.5, "y":3},
+ {"label":"C", "x":6.5, "y":3},
+ {"label":"V", "x":7.5, "y":3},
+ {"label":"B", "x":8.5, "y":3},
+ {"label":"N", "x":9.5, "y":3},
+ {"label":"M", "x":10.5, "y":3},
+ {"label":",<", "x":11.5, "y":3},
+ {"label":".>", "x":12.5, "y":3},
+ {"label":"/?", "x":13.5, "y":3},
+ {"label":"Shift", "x":14.5, "y":3, "w":2.75},
+ {"label":"\u2191", "x":18.5, "y":3},
+
+ {"label":"F9", "x":0, "y":4},
+ {"label":"F10", "x":1, "y":4},
+ {"label":"Ctrl", "x":2.25, "y":4, "w":1.5},
+ {"label":"Win", "x":3.75, "y":4},
+ {"label":"Alt", "x":4.75, "y":4, "w":1.5},
+ {"label":"Space", "x":6.25, "y":4, "w":7},
+ {"label":"Alt", "x":13.25, "y":4, "w":1.5},
+ {"label":"Win", "x":14.75, "y":4},
+ {"label":"Ctrl", "x":15.75, "y":4, "w":1.5},
+ {"label":"\u2190", "x":17.5, "y":4},
+ {"label":"\u2193", "x":18.5, "y":4},
+ {"label":"\u2192", "x":19.5, "y":4}
+ ]
+ },
+ "LAYOUT_iso_split_bs_rshift": {
+ "layout": [
+ {"label":"F1", "x":0, "y":0},
+ {"label":"F2", "x":1, "y":0},
+ {"label":"`\u00ac", "x":2.25, "y":0},
+ {"label":"1!", "x":3.25, "y":0},
+ {"label":"2\"", "x":4.25, "y":0},
+ {"label":"3\u00a3", "x":5.25, "y":0},
+ {"label":"4$", "x":6.25, "y":0},
+ {"label":"5%", "x":7.25, "y":0},
+ {"label":"6^", "x":8.25, "y":0},
+ {"label":"7&", "x":9.25, "y":0},
+ {"label":"8*", "x":10.25, "y":0},
+ {"label":"9(", "x":11.25, "y":0},
+ {"label":"0)", "x":12.25, "y":0},
+ {"label":"-_", "x":13.25, "y":0},
+ {"label":"=+", "x":14.25, "y":0},
+ {"label":"Bksp", "x":15.25, "y":0},
+ {"label":"Bksp", "x":16.25, "y":0},
+ {"label":"Insert", "x":17.5, "y":0},
+ {"label":"Home", "x":18.5, "y":0},
+ {"label":"PgUp", "x":19.5, "y":0},
+
+ {"label":"F3", "x":0, "y":1},
+ {"label":"F4", "x":1, "y":1},
+ {"label":"Tab", "x":2.25, "y":1, "w":1.5},
+ {"label":"Q", "x":3.75, "y":1},
+ {"label":"W", "x":4.75, "y":1},
+ {"label":"E", "x":5.75, "y":1},
+ {"label":"R", "x":6.75, "y":1},
+ {"label":"T", "x":7.75, "y":1},
+ {"label":"Y", "x":8.75, "y":1},
+ {"label":"U", "x":9.75, "y":1},
+ {"label":"I", "x":10.75, "y":1},
+ {"label":"O", "x":11.75, "y":1},
+ {"label":"P", "x":12.75, "y":1},
+ {"label":"[{", "x":13.75, "y":1},
+ {"label":"]}", "x":14.75, "y":1},
+ {"label":"Delete", "x":17.5, "y":1},
+ {"label":"End", "x":18.5, "y":1},
+ {"label":"PgDn", "x":19.5, "y":1},
+
+ {"label":"F5", "x":0, "y":2},
+ {"label":"F6", "x":1, "y":2},
+ {"label":"Caps Lock", "x":2.25, "y":2, "w":1.75},
+ {"label":"A", "x":4, "y":2},
+ {"label":"S", "x":5, "y":2},
+ {"label":"D", "x":6, "y":2},
+ {"label":"F", "x":7, "y":2},
+ {"label":"G", "x":8, "y":2},
+ {"label":"H", "x":9, "y":2},
+ {"label":"J", "x":10, "y":2},
+ {"label":"K", "x":11, "y":2},
+ {"label":"L", "x":12, "y":2},
+ {"label":";:", "x":13, "y":2},
+ {"label":"'@", "x":14, "y":2},
+ {"label":"#~", "x":15, "y":2},
+ {"label":"Enter", "x":16, "y":1, "w":1.25, "h":2},
+
+ {"label":"F7", "x":0, "y":3},
+ {"label":"F8", "x":1, "y":3},
+ {"label":"Shift", "x":2.25, "y":3, "w":1.25},
+ {"label":"\\|", "x":3.5, "y":3},
+ {"label":"Z", "x":4.5, "y":3},
+ {"label":"X", "x":5.5, "y":3},
+ {"label":"C", "x":6.5, "y":3},
+ {"label":"V", "x":7.5, "y":3},
+ {"label":"B", "x":8.5, "y":3},
+ {"label":"N", "x":9.5, "y":3},
+ {"label":"M", "x":10.5, "y":3},
+ {"label":",<", "x":11.5, "y":3},
+ {"label":".>", "x":12.5, "y":3},
+ {"label":"/?", "x":13.5, "y":3},
+ {"label":"Shift", "x":14.5, "y":3, "w":1.75},
+ {"label":"Fn", "x":16.25, "y":3},
+ {"label":"\u2191", "x":18.5, "y":3},
+
+ {"label":"F9", "x":0, "y":4},
+ {"label":"F10", "x":1, "y":4},
+ {"label":"Ctrl", "x":2.25, "y":4, "w":1.5},
+ {"label":"Win", "x":3.75, "y":4},
+ {"label":"Alt", "x":4.75, "y":4, "w":1.5},
+ {"label":"Space", "x":6.25, "y":4, "w":7},
+ {"label":"Alt", "x":13.25, "y":4, "w":1.5},
+ {"label":"Win", "x":14.75, "y":4},
+ {"label":"Ctrl", "x":15.75, "y":4, "w":1.5},
+ {"label":"\u2190", "x":17.5, "y":4},
+ {"label":"\u2193", "x":18.5, "y":4},
+ {"label":"\u2192", "x":19.5, "y":4}
+ ]
}
}
}
diff --git a/keyboards/superuser/ext/keymaps/default/keymap.c b/keyboards/superuser/ext/keymaps/default/keymap.c
index cc3259cd5872..85a9bb91f6bd 100644
--- a/keyboards/superuser/ext/keymaps/default/keymap.c
+++ b/keyboards/superuser/ext/keymaps/default/keymap.c
@@ -17,14 +17,14 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT_tkl(
+ [0] = LAYOUT_all(
KC_F1, KC_F2, 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_BSPC, KC_INS, KC_HOME, KC_PGUP,
KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_F7, KC_F8, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP,
KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [1] = LAYOUT_tkl(
+ [1] = 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,
diff --git a/keyboards/superuser/ext/keymaps/via/keymap.c b/keyboards/superuser/ext/keymaps/via/keymap.c
index 919c45d88436..78b258d526b8 100644
--- a/keyboards/superuser/ext/keymaps/via/keymap.c
+++ b/keyboards/superuser/ext/keymaps/via/keymap.c
@@ -17,28 +17,28 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT_tkl(
+ [0] = LAYOUT_all(
KC_F1, KC_F2, 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_BSPC, KC_INS, KC_HOME, KC_PGUP,
KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_F7, KC_F8, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP,
KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [1] = LAYOUT_tkl(
+ [1] = 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
- [2] = LAYOUT_tkl(
+ [2] = 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
- [3] = LAYOUT_tkl(
+ [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,
diff --git a/keyboards/superuser/ext/readme.md b/keyboards/superuser/ext/readme.md
index 1468d21dc15a..3abd75faf8e3 100644
--- a/keyboards/superuser/ext/readme.md
+++ b/keyboards/superuser/ext/readme.md
@@ -2,7 +2,7 @@
An EXT TKL PCB supporting 7u bottom row only.
-* Keyboard Maintainer: superuser
+* Keyboard Maintainer: [kaylanm](https://github.com/kaylanm)
* Hardware Supported: superuser ext
* Hardware Availability: Group buy
diff --git a/keyboards/superuser/tkl/info.json b/keyboards/superuser/tkl/info.json
index 0a8f2a3cdec5..4ffe5281767b 100644
--- a/keyboards/superuser/tkl/info.json
+++ b/keyboards/superuser/tkl/info.json
@@ -1,10 +1,494 @@
{
"keyboard_name": "tkl",
"url": "",
- "maintainer": "superuser",
+ "maintainer": "kaylanm",
+ "layout_aliases": {
+ "LAYOUT_tkl": "LAYOUT_all"
+ },
"layouts": {
- "LAYOUT": {
- "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"label":"Bksp", "x":13, "y":1.25}, {"label":"Bksp", "x":14, "y":1.25}, {"label":"Insert", "x":15.25, "y":1.25}, {"label":"Home", "x":16.25, "y":1.25}, {"label":"PgUp", "x":17.25, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"{", "x":11.5, "y":2.25}, {"label":"}", "x":12.5, "y":2.25}, {"label":"|", "x":13.5, "y":2.25, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.25}, {"label":"End", "x":16.25, "y":2.25}, {"label":"PgDn", "x":17.25, "y":2.25}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":":", "x":10.75, "y":3.25}, {"label":"\"", "x":11.75, "y":3.25}, {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, {"label":"Shift", "x":0, "y":4.25, "w":1.25}, {"label":"|", "x":1.25, "y":4.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":1.75}, {"label":"Fn", "x":14, "y":4.25}, {"label":"\u2191", "x":16.25, "y":4.25}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.5}, {"label":"Win", "x":1.5, "y":5.25}, {"label":"Alt", "x":2.5, "y":5.25, "w":1.5}, {"x":4, "y":5.25, "w":7}, {"label":"Alt", "x":11, "y":5.25, "w":1.5}, {"label":"Win", "x":12.5, "y":5.25}, {"label":"Ctrl", "x":13.5, "y":5.25, "w":1.5}, {"label":"\u2190", "x":15.25, "y":5.25}, {"label":"\u2193", "x":16.25, "y":5.25}, {"label":"\u2192", "x":17.25, "y":5.25}]
+ "LAYOUT_all": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":2, "y":0},
+ {"label":"F2", "x":3, "y":0},
+ {"label":"F3", "x":4, "y":0},
+ {"label":"F4", "x":5, "y":0},
+ {"label":"F5", "x":6.5, "y":0},
+ {"label":"F6", "x":7.5, "y":0},
+ {"label":"F7", "x":8.5, "y":0},
+ {"label":"F8", "x":9.5, "y":0},
+ {"label":"F9", "x":11, "y":0},
+ {"label":"F10", "x":12, "y":0},
+ {"label":"F11", "x":13, "y":0},
+ {"label":"F12", "x":14, "y":0},
+ {"label":"PrtSc", "x":15.25, "y":0},
+ {"label":"Scroll Lock", "x":16.25, "y":0},
+ {"label":"Pause", "x":17.25, "y":0},
+
+ {"label":"`~", "x":0, "y":1.25},
+ {"label":"1!", "x":1, "y":1.25},
+ {"label":"2@", "x":2, "y":1.25},
+ {"label":"3#", "x":3, "y":1.25},
+ {"label":"4$", "x":4, "y":1.25},
+ {"label":"5%", "x":5, "y":1.25},
+ {"label":"6^", "x":6, "y":1.25},
+ {"label":"7&", "x":7, "y":1.25},
+ {"label":"8*", "x":8, "y":1.25},
+ {"label":"9(", "x":9, "y":1.25},
+ {"label":"0)", "x":10, "y":1.25},
+ {"label":"-_", "x":11, "y":1.25},
+ {"label":"=+", "x":12, "y":1.25},
+ {"label":"Bksp", "x":13, "y":1.25},
+ {"label":"Bksp", "x":14, "y":1.25},
+ {"label":"Insert", "x":15.25, "y":1.25},
+ {"label":"Home", "x":16.25, "y":1.25},
+ {"label":"PgUp", "x":17.25, "y":1.25},
+
+ {"label":"Tab", "x":0, "y":2.25, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.25},
+ {"label":"W", "x":2.5, "y":2.25},
+ {"label":"E", "x":3.5, "y":2.25},
+ {"label":"R", "x":4.5, "y":2.25},
+ {"label":"T", "x":5.5, "y":2.25},
+ {"label":"Y", "x":6.5, "y":2.25},
+ {"label":"U", "x":7.5, "y":2.25},
+ {"label":"I", "x":8.5, "y":2.25},
+ {"label":"O", "x":9.5, "y":2.25},
+ {"label":"P", "x":10.5, "y":2.25},
+ {"label":"[{", "x":11.5, "y":2.25},
+ {"label":"]}", "x":12.5, "y":2.25},
+ {"label":"\\|", "x":13.5, "y":2.25, "w":1.5},
+ {"label":"Delete", "x":15.25, "y":2.25},
+ {"label":"End", "x":16.25, "y":2.25},
+ {"label":"PgDn", "x":17.25, "y":2.25},
+
+ {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.25},
+ {"label":"S", "x":2.75, "y":3.25},
+ {"label":"D", "x":3.75, "y":3.25},
+ {"label":"F", "x":4.75, "y":3.25},
+ {"label":"G", "x":5.75, "y":3.25},
+ {"label":"H", "x":6.75, "y":3.25},
+ {"label":"J", "x":7.75, "y":3.25},
+ {"label":"K", "x":8.75, "y":3.25},
+ {"label":"L", "x":9.75, "y":3.25},
+ {"label":";:", "x":10.75, "y":3.25},
+ {"label":"'\"", "x":11.75, "y":3.25},
+ {"label":"Enter", "x":12.75, "y":3.25, "w":2.25},
+
+ {"label":"Shift", "x":0, "y":4.25, "w":1.25},
+ {"label":"\\|", "x":1.25, "y":4.25},
+ {"label":"Z", "x":2.25, "y":4.25},
+ {"label":"X", "x":3.25, "y":4.25},
+ {"label":"C", "x":4.25, "y":4.25},
+ {"label":"V", "x":5.25, "y":4.25},
+ {"label":"B", "x":6.25, "y":4.25},
+ {"label":"N", "x":7.25, "y":4.25},
+ {"label":"M", "x":8.25, "y":4.25},
+ {"label":",<", "x":9.25, "y":4.25},
+ {"label":".>", "x":10.25, "y":4.25},
+ {"label":"/?", "x":11.25, "y":4.25},
+ {"label":"Shift", "x":12.25, "y":4.25, "w":1.75},
+ {"label":"Fn", "x":14, "y":4.25},
+ {"label":"\u2191", "x":16.25, "y":4.25},
+
+ {"label":"Ctrl", "x":0, "y":5.25, "w":1.5},
+ {"label":"Win", "x":1.5, "y":5.25},
+ {"label":"Alt", "x":2.5, "y":5.25, "w":1.5},
+ {"label":"Space", "x":4, "y":5.25, "w":7},
+ {"label":"Alt", "x":11, "y":5.25, "w":1.5},
+ {"label":"Win", "x":12.5, "y":5.25},
+ {"label":"Ctrl", "x":13.5, "y":5.25, "w":1.5},
+ {"label":"\u2190", "x":15.25, "y":5.25},
+ {"label":"\u2193", "x":16.25, "y":5.25},
+ {"label":"\u2192", "x":17.25, "y":5.25}
+ ]
+ },
+ "LAYOUT_tkl_ansi_tsangan": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":2, "y":0},
+ {"label":"F2", "x":3, "y":0},
+ {"label":"F3", "x":4, "y":0},
+ {"label":"F4", "x":5, "y":0},
+ {"label":"F5", "x":6.5, "y":0},
+ {"label":"F6", "x":7.5, "y":0},
+ {"label":"F7", "x":8.5, "y":0},
+ {"label":"F8", "x":9.5, "y":0},
+ {"label":"F9", "x":11, "y":0},
+ {"label":"F10", "x":12, "y":0},
+ {"label":"F11", "x":13, "y":0},
+ {"label":"F12", "x":14, "y":0},
+ {"label":"PrtSc", "x":15.25, "y":0},
+ {"label":"Scroll Lock", "x":16.25, "y":0},
+ {"label":"Pause", "x":17.25, "y":0},
+
+ {"label":"`~", "x":0, "y":1.25},
+ {"label":"1!", "x":1, "y":1.25},
+ {"label":"2@", "x":2, "y":1.25},
+ {"label":"3#", "x":3, "y":1.25},
+ {"label":"4$", "x":4, "y":1.25},
+ {"label":"5%", "x":5, "y":1.25},
+ {"label":"6^", "x":6, "y":1.25},
+ {"label":"7&", "x":7, "y":1.25},
+ {"label":"8*", "x":8, "y":1.25},
+ {"label":"9(", "x":9, "y":1.25},
+ {"label":"0)", "x":10, "y":1.25},
+ {"label":"-_", "x":11, "y":1.25},
+ {"label":"=+", "x":12, "y":1.25},
+ {"label":"Bksp", "x":13, "y":1.25, "w":2},
+ {"label":"Insert", "x":15.25, "y":1.25},
+ {"label":"Home", "x":16.25, "y":1.25},
+ {"label":"PgUp", "x":17.25, "y":1.25},
+
+ {"label":"Tab", "x":0, "y":2.25, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.25},
+ {"label":"W", "x":2.5, "y":2.25},
+ {"label":"E", "x":3.5, "y":2.25},
+ {"label":"R", "x":4.5, "y":2.25},
+ {"label":"T", "x":5.5, "y":2.25},
+ {"label":"Y", "x":6.5, "y":2.25},
+ {"label":"U", "x":7.5, "y":2.25},
+ {"label":"I", "x":8.5, "y":2.25},
+ {"label":"O", "x":9.5, "y":2.25},
+ {"label":"P", "x":10.5, "y":2.25},
+ {"label":"[{", "x":11.5, "y":2.25},
+ {"label":"]}", "x":12.5, "y":2.25},
+ {"label":"\\|", "x":13.5, "y":2.25, "w":1.5},
+ {"label":"Delete", "x":15.25, "y":2.25},
+ {"label":"End", "x":16.25, "y":2.25},
+ {"label":"PgDn", "x":17.25, "y":2.25},
+
+ {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.25},
+ {"label":"S", "x":2.75, "y":3.25},
+ {"label":"D", "x":3.75, "y":3.25},
+ {"label":"F", "x":4.75, "y":3.25},
+ {"label":"G", "x":5.75, "y":3.25},
+ {"label":"H", "x":6.75, "y":3.25},
+ {"label":"J", "x":7.75, "y":3.25},
+ {"label":"K", "x":8.75, "y":3.25},
+ {"label":"L", "x":9.75, "y":3.25},
+ {"label":";:", "x":10.75, "y":3.25},
+ {"label":"'\"", "x":11.75, "y":3.25},
+ {"label":"Enter", "x":12.75, "y":3.25, "w":2.25},
+
+ {"label":"Shift", "x":0, "y":4.25, "w":2.25},
+ {"label":"Z", "x":2.25, "y":4.25},
+ {"label":"X", "x":3.25, "y":4.25},
+ {"label":"C", "x":4.25, "y":4.25},
+ {"label":"V", "x":5.25, "y":4.25},
+ {"label":"B", "x":6.25, "y":4.25},
+ {"label":"N", "x":7.25, "y":4.25},
+ {"label":"M", "x":8.25, "y":4.25},
+ {"label":",<", "x":9.25, "y":4.25},
+ {"label":".>", "x":10.25, "y":4.25},
+ {"label":"/?", "x":11.25, "y":4.25},
+ {"label":"Shift", "x":12.25, "y":4.25, "w":2.75},
+ {"label":"\u2191", "x":16.25, "y":4.25},
+
+ {"label":"Ctrl", "x":0, "y":5.25, "w":1.5},
+ {"label":"Win", "x":1.5, "y":5.25},
+ {"label":"Alt", "x":2.5, "y":5.25, "w":1.5},
+ {"label":"Space", "x":4, "y":5.25, "w":7},
+ {"label":"Alt", "x":11, "y":5.25, "w":1.5},
+ {"label":"Win", "x":12.5, "y":5.25},
+ {"label":"Ctrl", "x":13.5, "y":5.25, "w":1.5},
+ {"label":"\u2190", "x":15.25, "y":5.25},
+ {"label":"\u2193", "x":16.25, "y":5.25},
+ {"label":"\u2192", "x":17.25, "y":5.25}
+ ]
+ },
+ "LAYOUT_tkl_ansi_tsangan_split_bs_rshift": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":2, "y":0},
+ {"label":"F2", "x":3, "y":0},
+ {"label":"F3", "x":4, "y":0},
+ {"label":"F4", "x":5, "y":0},
+ {"label":"F5", "x":6.5, "y":0},
+ {"label":"F6", "x":7.5, "y":0},
+ {"label":"F7", "x":8.5, "y":0},
+ {"label":"F8", "x":9.5, "y":0},
+ {"label":"F9", "x":11, "y":0},
+ {"label":"F10", "x":12, "y":0},
+ {"label":"F11", "x":13, "y":0},
+ {"label":"F12", "x":14, "y":0},
+ {"label":"PrtSc", "x":15.25, "y":0},
+ {"label":"Scroll Lock", "x":16.25, "y":0},
+ {"label":"Pause", "x":17.25, "y":0},
+
+ {"label":"`~", "x":0, "y":1.25},
+ {"label":"1!", "x":1, "y":1.25},
+ {"label":"2@", "x":2, "y":1.25},
+ {"label":"3#", "x":3, "y":1.25},
+ {"label":"4$", "x":4, "y":1.25},
+ {"label":"5%", "x":5, "y":1.25},
+ {"label":"6^", "x":6, "y":1.25},
+ {"label":"7&", "x":7, "y":1.25},
+ {"label":"8*", "x":8, "y":1.25},
+ {"label":"9(", "x":9, "y":1.25},
+ {"label":"0)", "x":10, "y":1.25},
+ {"label":"-_", "x":11, "y":1.25},
+ {"label":"=+", "x":12, "y":1.25},
+ {"label":"Bksp", "x":13, "y":1.25},
+ {"label":"Bksp", "x":14, "y":1.25},
+ {"label":"Insert", "x":15.25, "y":1.25},
+ {"label":"Home", "x":16.25, "y":1.25},
+ {"label":"PgUp", "x":17.25, "y":1.25},
+
+ {"label":"Tab", "x":0, "y":2.25, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.25},
+ {"label":"W", "x":2.5, "y":2.25},
+ {"label":"E", "x":3.5, "y":2.25},
+ {"label":"R", "x":4.5, "y":2.25},
+ {"label":"T", "x":5.5, "y":2.25},
+ {"label":"Y", "x":6.5, "y":2.25},
+ {"label":"U", "x":7.5, "y":2.25},
+ {"label":"I", "x":8.5, "y":2.25},
+ {"label":"O", "x":9.5, "y":2.25},
+ {"label":"P", "x":10.5, "y":2.25},
+ {"label":"[{", "x":11.5, "y":2.25},
+ {"label":"]}", "x":12.5, "y":2.25},
+ {"label":"\\|", "x":13.5, "y":2.25, "w":1.5},
+ {"label":"Delete", "x":15.25, "y":2.25},
+ {"label":"End", "x":16.25, "y":2.25},
+ {"label":"PgDn", "x":17.25, "y":2.25},
+
+ {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.25},
+ {"label":"S", "x":2.75, "y":3.25},
+ {"label":"D", "x":3.75, "y":3.25},
+ {"label":"F", "x":4.75, "y":3.25},
+ {"label":"G", "x":5.75, "y":3.25},
+ {"label":"H", "x":6.75, "y":3.25},
+ {"label":"J", "x":7.75, "y":3.25},
+ {"label":"K", "x":8.75, "y":3.25},
+ {"label":"L", "x":9.75, "y":3.25},
+ {"label":";:", "x":10.75, "y":3.25},
+ {"label":"'\"", "x":11.75, "y":3.25},
+ {"label":"Enter", "x":12.75, "y":3.25, "w":2.25},
+
+ {"label":"Shift", "x":0, "y":4.25, "w":2.25},
+ {"label":"Z", "x":2.25, "y":4.25},
+ {"label":"X", "x":3.25, "y":4.25},
+ {"label":"C", "x":4.25, "y":4.25},
+ {"label":"V", "x":5.25, "y":4.25},
+ {"label":"B", "x":6.25, "y":4.25},
+ {"label":"N", "x":7.25, "y":4.25},
+ {"label":"M", "x":8.25, "y":4.25},
+ {"label":",<", "x":9.25, "y":4.25},
+ {"label":".>", "x":10.25, "y":4.25},
+ {"label":"/?", "x":11.25, "y":4.25},
+ {"label":"Shift", "x":12.25, "y":4.25, "w":1.75},
+ {"label":"Fn", "x":14, "y":4.25},
+ {"label":"\u2191", "x":16.25, "y":4.25},
+
+ {"label":"Ctrl", "x":0, "y":5.25, "w":1.5},
+ {"label":"Win", "x":1.5, "y":5.25},
+ {"label":"Alt", "x":2.5, "y":5.25, "w":1.5},
+ {"label":"Space", "x":4, "y":5.25, "w":7},
+ {"label":"Alt", "x":11, "y":5.25, "w":1.5},
+ {"label":"Win", "x":12.5, "y":5.25},
+ {"label":"Ctrl", "x":13.5, "y":5.25, "w":1.5},
+ {"label":"\u2190", "x":15.25, "y":5.25},
+ {"label":"\u2193", "x":16.25, "y":5.25},
+ {"label":"\u2192", "x":17.25, "y":5.25}
+ ]
+ },
+ "LAYOUT_tkl_iso_tsangan": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":2, "y":0},
+ {"label":"F2", "x":3, "y":0},
+ {"label":"F3", "x":4, "y":0},
+ {"label":"F4", "x":5, "y":0},
+ {"label":"F5", "x":6.5, "y":0},
+ {"label":"F6", "x":7.5, "y":0},
+ {"label":"F7", "x":8.5, "y":0},
+ {"label":"F8", "x":9.5, "y":0},
+ {"label":"F9", "x":11, "y":0},
+ {"label":"F10", "x":12, "y":0},
+ {"label":"F11", "x":13, "y":0},
+ {"label":"F12", "x":14, "y":0},
+ {"label":"PrtSc", "x":15.25, "y":0},
+ {"label":"Scroll Lock", "x":16.25, "y":0},
+ {"label":"Pause", "x":17.25, "y":0},
+
+ {"label":"`\u00ac", "x":0, "y":1.25},
+ {"label":"1!", "x":1, "y":1.25},
+ {"label":"2\"", "x":2, "y":1.25},
+ {"label":"3\u00a3", "x":3, "y":1.25},
+ {"label":"4$", "x":4, "y":1.25},
+ {"label":"5%", "x":5, "y":1.25},
+ {"label":"6^", "x":6, "y":1.25},
+ {"label":"7&", "x":7, "y":1.25},
+ {"label":"8*", "x":8, "y":1.25},
+ {"label":"9(", "x":9, "y":1.25},
+ {"label":"0)", "x":10, "y":1.25},
+ {"label":"-_", "x":11, "y":1.25},
+ {"label":"=+", "x":12, "y":1.25},
+ {"label":"Bksp", "x":13, "y":1.25, "w":2},
+ {"label":"Insert", "x":15.25, "y":1.25},
+ {"label":"Home", "x":16.25, "y":1.25},
+ {"label":"PgUp", "x":17.25, "y":1.25},
+
+ {"label":"Tab", "x":0, "y":2.25, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.25},
+ {"label":"W", "x":2.5, "y":2.25},
+ {"label":"E", "x":3.5, "y":2.25},
+ {"label":"R", "x":4.5, "y":2.25},
+ {"label":"T", "x":5.5, "y":2.25},
+ {"label":"Y", "x":6.5, "y":2.25},
+ {"label":"U", "x":7.5, "y":2.25},
+ {"label":"I", "x":8.5, "y":2.25},
+ {"label":"O", "x":9.5, "y":2.25},
+ {"label":"P", "x":10.5, "y":2.25},
+ {"label":"[{", "x":11.5, "y":2.25},
+ {"label":"]}", "x":12.5, "y":2.25},
+ {"label":"Delete", "x":15.25, "y":2.25},
+ {"label":"End", "x":16.25, "y":2.25},
+ {"label":"PgDn", "x":17.25, "y":2.25},
+
+ {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.25},
+ {"label":"S", "x":2.75, "y":3.25},
+ {"label":"D", "x":3.75, "y":3.25},
+ {"label":"F", "x":4.75, "y":3.25},
+ {"label":"G", "x":5.75, "y":3.25},
+ {"label":"H", "x":6.75, "y":3.25},
+ {"label":"J", "x":7.75, "y":3.25},
+ {"label":"K", "x":8.75, "y":3.25},
+ {"label":"L", "x":9.75, "y":3.25},
+ {"label":";:", "x":10.75, "y":3.25},
+ {"label":"'@", "x":11.75, "y":3.25},
+ {"label":"#~", "x":12.75, "y":3.25},
+ {"label":"Enter", "x":13.75, "y":2.25, "w":1.25, "h":2},
+
+ {"label":"Shift", "x":0, "y":4.25, "w":1.25},
+ {"label":"\\|", "x":1.25, "y":4.25},
+ {"label":"Z", "x":2.25, "y":4.25},
+ {"label":"X", "x":3.25, "y":4.25},
+ {"label":"C", "x":4.25, "y":4.25},
+ {"label":"V", "x":5.25, "y":4.25},
+ {"label":"B", "x":6.25, "y":4.25},
+ {"label":"N", "x":7.25, "y":4.25},
+ {"label":"M", "x":8.25, "y":4.25},
+ {"label":",<", "x":9.25, "y":4.25},
+ {"label":".>", "x":10.25, "y":4.25},
+ {"label":"/?", "x":11.25, "y":4.25},
+ {"label":"Shift", "x":12.25, "y":4.25, "w":2.75},
+ {"label":"\u2191", "x":16.25, "y":4.25},
+
+ {"label":"Ctrl", "x":0, "y":5.25, "w":1.5},
+ {"label":"Win", "x":1.5, "y":5.25},
+ {"label":"Alt", "x":2.5, "y":5.25, "w":1.5},
+ {"label":"Space", "x":4, "y":5.25, "w":7},
+ {"label":"Alt", "x":11, "y":5.25, "w":1.5},
+ {"label":"Win", "x":12.5, "y":5.25},
+ {"label":"Ctrl", "x":13.5, "y":5.25, "w":1.5},
+ {"label":"\u2190", "x":15.25, "y":5.25},
+ {"label":"\u2193", "x":16.25, "y":5.25},
+ {"label":"\u2192", "x":17.25, "y":5.25}
+ ]
+ },
+ "LAYOUT_tkl_iso_tsangan_split_bs_rshift": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":2, "y":0},
+ {"label":"F2", "x":3, "y":0},
+ {"label":"F3", "x":4, "y":0},
+ {"label":"F4", "x":5, "y":0},
+ {"label":"F5", "x":6.5, "y":0},
+ {"label":"F6", "x":7.5, "y":0},
+ {"label":"F7", "x":8.5, "y":0},
+ {"label":"F8", "x":9.5, "y":0},
+ {"label":"F9", "x":11, "y":0},
+ {"label":"F10", "x":12, "y":0},
+ {"label":"F11", "x":13, "y":0},
+ {"label":"F12", "x":14, "y":0},
+ {"label":"PrtSc", "x":15.25, "y":0},
+ {"label":"Scroll Lock", "x":16.25, "y":0},
+ {"label":"Pause", "x":17.25, "y":0},
+
+ {"label":"`\u00ac", "x":0, "y":1.25},
+ {"label":"1!", "x":1, "y":1.25},
+ {"label":"2\"", "x":2, "y":1.25},
+ {"label":"3\u00a3", "x":3, "y":1.25},
+ {"label":"4$", "x":4, "y":1.25},
+ {"label":"5%", "x":5, "y":1.25},
+ {"label":"6^", "x":6, "y":1.25},
+ {"label":"7&", "x":7, "y":1.25},
+ {"label":"8*", "x":8, "y":1.25},
+ {"label":"9(", "x":9, "y":1.25},
+ {"label":"0)", "x":10, "y":1.25},
+ {"label":"-_", "x":11, "y":1.25},
+ {"label":"=+", "x":12, "y":1.25},
+ {"label":"Bksp", "x":13, "y":1.25},
+ {"label":"Bksp", "x":14, "y":1.25},
+ {"label":"Insert", "x":15.25, "y":1.25},
+ {"label":"Home", "x":16.25, "y":1.25},
+ {"label":"PgUp", "x":17.25, "y":1.25},
+
+ {"label":"Tab", "x":0, "y":2.25, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.25},
+ {"label":"W", "x":2.5, "y":2.25},
+ {"label":"E", "x":3.5, "y":2.25},
+ {"label":"R", "x":4.5, "y":2.25},
+ {"label":"T", "x":5.5, "y":2.25},
+ {"label":"Y", "x":6.5, "y":2.25},
+ {"label":"U", "x":7.5, "y":2.25},
+ {"label":"I", "x":8.5, "y":2.25},
+ {"label":"O", "x":9.5, "y":2.25},
+ {"label":"P", "x":10.5, "y":2.25},
+ {"label":"[{", "x":11.5, "y":2.25},
+ {"label":"]}", "x":12.5, "y":2.25},
+ {"label":"Delete", "x":15.25, "y":2.25},
+ {"label":"End", "x":16.25, "y":2.25},
+ {"label":"PgDn", "x":17.25, "y":2.25},
+
+ {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.25},
+ {"label":"S", "x":2.75, "y":3.25},
+ {"label":"D", "x":3.75, "y":3.25},
+ {"label":"F", "x":4.75, "y":3.25},
+ {"label":"G", "x":5.75, "y":3.25},
+ {"label":"H", "x":6.75, "y":3.25},
+ {"label":"J", "x":7.75, "y":3.25},
+ {"label":"K", "x":8.75, "y":3.25},
+ {"label":"L", "x":9.75, "y":3.25},
+ {"label":";:", "x":10.75, "y":3.25},
+ {"label":"'@", "x":11.75, "y":3.25},
+ {"label":"#~", "x":12.75, "y":3.25},
+ {"label":"Enter", "x":13.75, "y":2.25, "w":1.25, "h":2},
+
+ {"label":"Shift", "x":0, "y":4.25, "w":1.25},
+ {"label":"\\|", "x":1.25, "y":4.25},
+ {"label":"Z", "x":2.25, "y":4.25},
+ {"label":"X", "x":3.25, "y":4.25},
+ {"label":"C", "x":4.25, "y":4.25},
+ {"label":"V", "x":5.25, "y":4.25},
+ {"label":"B", "x":6.25, "y":4.25},
+ {"label":"N", "x":7.25, "y":4.25},
+ {"label":"M", "x":8.25, "y":4.25},
+ {"label":",<", "x":9.25, "y":4.25},
+ {"label":".>", "x":10.25, "y":4.25},
+ {"label":"/?", "x":11.25, "y":4.25},
+ {"label":"Shift", "x":12.25, "y":4.25, "w":1.75},
+ {"label":"Fn", "x":14, "y":4.25},
+ {"label":"\u2191", "x":16.25, "y":4.25},
+
+ {"label":"Ctrl", "x":0, "y":5.25, "w":1.5},
+ {"label":"Win", "x":1.5, "y":5.25},
+ {"label":"Alt", "x":2.5, "y":5.25, "w":1.5},
+ {"label":"Space", "x":4, "y":5.25, "w":7},
+ {"label":"Alt", "x":11, "y":5.25, "w":1.5},
+ {"label":"Win", "x":12.5, "y":5.25},
+ {"label":"Ctrl", "x":13.5, "y":5.25, "w":1.5},
+ {"label":"\u2190", "x":15.25, "y":5.25},
+ {"label":"\u2193", "x":16.25, "y":5.25},
+ {"label":"\u2192", "x":17.25, "y":5.25}
+ ]
}
}
}
diff --git a/keyboards/superuser/tkl/keymaps/default/keymap.c b/keyboards/superuser/tkl/keymaps/default/keymap.c
index 6eada87c843a..b0ab538247cd 100644
--- a/keyboards/superuser/tkl/keymaps/default/keymap.c
+++ b/keyboards/superuser/tkl/keymaps/default/keymap.c
@@ -17,7 +17,7 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT_tkl(
+ [0] = LAYOUT_all(
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_SLCK, 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_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,
@@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [1] = LAYOUT_tkl(
+ [1] = 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,
diff --git a/keyboards/superuser/tkl/keymaps/via/keymap.c b/keyboards/superuser/tkl/keymaps/via/keymap.c
index f828ccc51500..a2bea4e6e112 100644
--- a/keyboards/superuser/tkl/keymaps/via/keymap.c
+++ b/keyboards/superuser/tkl/keymaps/via/keymap.c
@@ -17,7 +17,7 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT_tkl(
+ [0] = LAYOUT_all(
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_SLCK, 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_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,
@@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
- [1] = LAYOUT_tkl(
+ [1] = 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,
@@ -33,7 +33,7 @@ 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, KC_TRNS),
- [2] = LAYOUT_tkl(
+ [2] = 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,
@@ -41,7 +41,7 @@ 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, KC_TRNS),
- [3] = LAYOUT_tkl(
+ [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,
diff --git a/keyboards/superuser/tkl/readme.md b/keyboards/superuser/tkl/readme.md
index be5a2cc3a52e..1c9ad5b3cc4b 100644
--- a/keyboards/superuser/tkl/readme.md
+++ b/keyboards/superuser/tkl/readme.md
@@ -2,7 +2,7 @@
An F12 TKL PCB supporting 7u bottom row only.
-* Keyboard Maintainer: superuser
+* Keyboard Maintainer: [kaylanm](https://github.com/kaylanm)
* Hardware Supported: superuser tkl
* Hardware Availability: Group buy
diff --git a/keyboards/superuser/tkl/tkl.h b/keyboards/superuser/tkl/tkl.h
index 31ed941d3e6a..e84cd597375b 100644
--- a/keyboards/superuser/tkl/tkl.h
+++ b/keyboards/superuser/tkl/tkl.h
@@ -17,18 +17,100 @@
#include "quantum.h"
-#define LAYOUT_tkl(\
- K000, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, \
- K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K312, K114, K115, K116, \
- K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, \
- K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, \
- K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, K415, \
- K500, K501, K502, K506, K511, K512, K513, K514, K515, K516 \
+#define ___ KC_NO
+/*
+ * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
+ * │00 │ │02 │03 │04 │05 │ │06 │07 │08 │09 │ │0A │0B │0C │0D │ │0E │0F │0G │
+ * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ ┌───────┐
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │3C │ │1E │1F │1G │ │1D │ 2u Backspace
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ └─┬─────┤
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2D │ │2E │2F │2G │ │ │
+ * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ┌──┴┐3D │ ISO Enter
+ * LShift │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D │ │2D │ │
+ * ┌────────┐ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ ┌─┴───┴────┤
+ * │40 │ │40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │4A │4B │4C │4D │ │4F │ │4C │ 2.75u RShift
+ * └────────┘ ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐ └──────────┘
+ * │50 │51 │52 │56 │5B │5C │5D │ │5E │5F │5G │
+ * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘
+ */
+
+#define LAYOUT_all(\
+ K00, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K3C, K1E, K1F, K1G, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4F, \
+ K50, K51, K52, K56, K5B, K5C, K5D, K5E, K5F, K5G \
+) { \
+ { K00, ___, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, ___, ___, ___ }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, ___, K4F, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, ___, ___, K5B, K5C, K5D, K5E, K5F, K5G } \
+}
+
+#define LAYOUT_tkl_ansi_tsangan( \
+ K00, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \
+ K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4F, \
+ K50, K51, K52, K56, K5B, K5C, K5D, K5E, K5F, K5G \
+) { \
+ { K00, ___, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, ___, ___, ___ }, \
+ { K40, ___, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, ___, ___, K4F, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, ___, ___, K5B, K5C, K5D, K5E, K5F, K5G } \
+}
+
+#define LAYOUT_tkl_ansi_tsangan_split_bs_rshift( \
+ K00, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K3C, K1E, K1F, K1G, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \
+ K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4F, \
+ K50, K51, K52, K56, K5B, K5C, K5D, K5E, K5F, K5G \
+) { \
+ { K00, ___, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, ___, ___, ___ }, \
+ { K40, ___, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, ___, K4F, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, ___, ___, K5B, K5C, K5D, K5E, K5F, K5G } \
+}
+
+#define LAYOUT_tkl_iso_tsangan( \
+ K00, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, K2F, K2G, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K2D, K3D, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4F, \
+ K50, K51, K52, K56, K5B, K5C, K5D, K5E, K5F, K5G \
+) { \
+ { K00, ___, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, ___, ___, ___ }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, ___, ___, K4F, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, ___, ___, K5B, K5C, K5D, K5E, K5F, K5G } \
+}
+
+#define LAYOUT_tkl_iso_tsangan_split_bs_rshift( \
+ K00, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K3C, K1E, K1F, K1G, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, K2F, K2G, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K2D, K3D, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4F, \
+ K50, K51, K52, K56, K5B, K5C, K5D, K5E, K5F, K5G \
) { \
- { K000, KC_NO, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016 }, \
- { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116 }, \
- { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216 }, \
- { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, KC_NO, KC_NO, KC_NO }, \
- { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K413, KC_NO, K415, KC_NO }, \
- { K500, K501, K502, KC_NO, KC_NO, KC_NO, K506, KC_NO, KC_NO, KC_NO, KC_NO, K511, K512, K513, K514, K515, K516 } \
+ { K00, ___, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, ___, ___, ___ }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, ___, K4F, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, ___, ___, K5B, K5C, K5D, K5E, K5F, K5G } \
}
diff --git a/keyboards/takashicompany/center_enter/center_enter.c b/keyboards/takashicompany/center_enter/center_enter.c
new file mode 100644
index 000000000000..4973e6a643e5
--- /dev/null
+++ b/keyboards/takashicompany/center_enter/center_enter.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 takashicompany
+ *
+ * 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 "center_enter.h"
diff --git a/keyboards/takashicompany/center_enter/center_enter.h b/keyboards/takashicompany/center_enter/center_enter.h
new file mode 100644
index 000000000000..0bd576f43288
--- /dev/null
+++ b/keyboards/takashicompany/center_enter/center_enter.h
@@ -0,0 +1,37 @@
+/* Copyright 2021 takashicompany
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is 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.
+ */
+#define LAYOUT( \
+ k00, k01, k02, k03, k04, k05, k07, k08, k09, k0a, k0b, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b \
+) { \
+ { k00, k01, k02, k03, k04, k05, KC_NO, k07, k08, k09, k0a, k0b }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b } \
+}
diff --git a/keyboards/takashicompany/center_enter/config.h b/keyboards/takashicompany/center_enter/config.h
new file mode 100644
index 000000000000..94868bde1e76
--- /dev/null
+++ b/keyboards/takashicompany/center_enter/config.h
@@ -0,0 +1,153 @@
+/*
+Copyright 2021 takashicompany
+
+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 .
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x7463 // tc = takashicompany
+#define PRODUCT_ID 0x0012
+#define DEVICE_VER 0x0001
+#define MANUFACTURER takashicompany
+#define PRODUCT Center x Enter
+
+/* key matrix size */
+#define MATRIX_ROWS 3
+#define MATRIX_COLS 12
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { E6, B4, B5 }
+#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, D7, B2, B6, D0, D4, C6}
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+#define ENCODER_RESOLUTION 1
+#define ENCODERS_PAD_A { D2 }
+#define ENCODERS_PAD_B { D1 }
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+//#define LED_NUM_LOCK_PIN B0
+//#define LED_CAPS_LOCK_PIN B1
+//#define LED_SCROLL_LOCK_PIN B2
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+//#define BACKLIGHT_PIN B7
+//#define BACKLIGHT_LEVELS 3
+//#define BACKLIGHT_BREATHING
+
+#define RGB_DI_PIN D3
+#ifdef RGB_DI_PIN
+# define RGBLED_NUM 16
+# define RGBLIGHT_HUE_STEP 8
+# define RGBLIGHT_SAT_STEP 8
+# define RGBLIGHT_VAL_STEP 8
+# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+# define RGBLIGHT_EFFECT_BREATHING
+# define RGBLIGHT_EFFECT_RAINBOW_MOOD
+# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+# define RGBLIGHT_EFFECT_SNAKE
+# define RGBLIGHT_EFFECT_KNIGHT
+# define RGBLIGHT_EFFECT_CHRISTMAS
+# define RGBLIGHT_EFFECT_STATIC_GRADIENT
+# define RGBLIGHT_EFFECT_RGB_TEST
+# define RGBLIGHT_EFFECT_ALTERNATING
+/*== customize breathing effect ==*/
+/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+/*==== use exp() and sin() ====*/
+//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/takashicompany/center_enter/info.json b/keyboards/takashicompany/center_enter/info.json
new file mode 100644
index 000000000000..f0f3af1f390e
--- /dev/null
+++ b/keyboards/takashicompany/center_enter/info.json
@@ -0,0 +1,191 @@
+{
+ "keyboard_name": "Center x Enter",
+ "url": "",
+ "maintainer": "takashicompany",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {
+ "label": "201",
+ "x": 0,
+ "y": 0,
+ "w": 1.5
+ },
+ {
+ "label": "1",
+ "x": 1.5,
+ "y": 0
+ },
+ {
+ "label": "2",
+ "x": 2.5,
+ "y": 0
+ },
+ {
+ "label": "3",
+ "x": 3.5,
+ "y": 0
+ },
+ {
+ "label": "4",
+ "x": 4.5,
+ "y": 0
+ },
+ {
+ "label": "5",
+ "x": 5.5,
+ "y": 0
+ },
+ {
+ "label": "901",
+ "x": 6.75,
+ "y": 0,
+ "w": 1.25,
+ "h": 2
+ },
+ {
+ "label": "6",
+ "x": 8,
+ "y": 0
+ },
+ {
+ "label": "7",
+ "x": 9,
+ "y": 0
+ },
+ {
+ "label": "8",
+ "x": 10,
+ "y": 0
+ },
+ {
+ "label": "9",
+ "x": 11,
+ "y": 0
+ },
+ {
+ "label": "10",
+ "x": 12,
+ "y": 0
+ },
+ {
+ "label": "301",
+ "x": 0,
+ "y": 1,
+ "w": 1.75
+ },
+ {
+ "label": "11",
+ "x": 1.75,
+ "y": 1
+ },
+ {
+ "label": "12",
+ "x": 2.75,
+ "y": 1
+ },
+ {
+ "label": "13",
+ "x": 3.75,
+ "y": 1
+ },
+ {
+ "label": "14",
+ "x": 4.75,
+ "y": 1
+ },
+ {
+ "label": "15",
+ "x": 5.75,
+ "y": 1
+ },
+ {
+ "label": "16",
+ "x": 8,
+ "y": 1
+ },
+ {
+ "label": "17",
+ "x": 9,
+ "y": 1
+ },
+ {
+ "label": "18",
+ "x": 10,
+ "y": 1
+ },
+ {
+ "label": "19",
+ "x": 11,
+ "y": 1
+ },
+ {
+ "label": "20",
+ "x": 12,
+ "y": 1
+ },
+ {
+ "label": "401",
+ "x": 0,
+ "y": 2,
+ "w": 2
+ },
+ {
+ "label": "21",
+ "x": 2,
+ "y": 2
+ },
+ {
+ "label": "22",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "23",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "24",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "25",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "31",
+ "x": 7,
+ "y": 2
+ },
+ {
+ "label": "26",
+ "x": 8,
+ "y": 2
+ },
+ {
+ "label": "27",
+ "x": 9,
+ "y": 2
+ },
+ {
+ "label": "28",
+ "x": 10,
+ "y": 2
+ },
+ {
+ "label": "29",
+ "x": 11,
+ "y": 2
+ },
+ {
+ "label": "30",
+ "x": 12,
+ "y": 2
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/keyboards/takashicompany/center_enter/keymaps/default/keymap.c b/keyboards/takashicompany/center_enter/keymaps/default/keymap.c
new file mode 100644
index 000000000000..1003d0558cfb
--- /dev/null
+++ b/keyboards/takashicompany/center_enter/keymaps/default/keymap.c
@@ -0,0 +1,97 @@
+/* Copyright 2021 takashicompany
+ *
+ * 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
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+ SWITCH_LANG
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ LAYOUT(
+ KC_TAB, LT(2, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, ALT_T(KC_P),
+ KC_LCTL, KC_A, KC_S, LT(2, KC_D), KC_F, KC_G, SWITCH_LANG, KC_H, KC_J, LT(2, KC_K), KC_L, KC_ENT,
+ KC_LSFT, KC_Z, GUI_T(KC_X), ALT_T(KC_C), LT(1, KC_V), KC_B, KC_SPC, KC_N, LT(1, KC_M), KC_COMM, CTL_T(KC_DOT), KC_BSPC
+ ),
+
+ LAYOUT(
+ KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_TRNS, KC_EQL, KC_LBRC, KC_SLSH, KC_MINS, KC_RO, KC_TRNS, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_JYEN,
+ KC_TRNS, KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_LSFT, KC_TRNS, KC_SPC, KC_LANG1, KC_TRNS, KC_TRNS, KC_DEL
+ ),
+
+ LAYOUT(
+ KC_TRNS, KC_ESC, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO,
+ KC_TRNS, KC_LCTL, KC_TRNS, KC_QUES, KC_EXLM, KC_NO, KC_TRNS, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO,
+ KC_TRNS, KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_TRNS, KC_TRNS, KC_TRNS, KC_LANG1, KC_NO, MO(3), KC_DEL
+ ),
+
+ LAYOUT(
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
+ KC_TRNS, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
+ KC_TRNS, RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T, RGB_M_T, KC_TRNS, KC_F11, KC_F12, KC_CAPS, KC_NO, KC_NO
+ ),
+
+ LAYOUT(
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+ ),
+};
+
+bool is_lang1 = false;
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case SWITCH_LANG:
+ if (record->event.pressed) {
+
+ if (is_lang1) {
+ register_code(KC_LANG1);
+ is_lang1 = false;
+ }
+ else {
+ register_code(KC_LANG2);
+ is_lang1 = true;
+ }
+ }
+ break;
+ case KC_LANG1:
+ if (record->event.pressed) {
+ is_lang1 = false;
+ }
+ break;
+
+ case KC_LANG2:
+ if (record->event.pressed) {
+ is_lang1 = true;
+ }
+ break;
+ }
+ return true;
+}
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+
+ if (clockwise) {
+ tap_code(KC_MS_WH_UP);
+ } else {
+ tap_code(KC_MS_WH_DOWN);
+ }
+
+ return true;
+}
diff --git a/keyboards/takashicompany/center_enter/keymaps/via/config.h b/keyboards/takashicompany/center_enter/keymaps/via/config.h
new file mode 100644
index 000000000000..ec7c614382d1
--- /dev/null
+++ b/keyboards/takashicompany/center_enter/keymaps/via/config.h
@@ -0,0 +1 @@
+#define DYNAMIC_KEYMAP_LAYER_COUNT 8
\ No newline at end of file
diff --git a/keyboards/takashicompany/center_enter/keymaps/via/keymap.c b/keyboards/takashicompany/center_enter/keymaps/via/keymap.c
new file mode 100644
index 000000000000..cc11ca18a817
--- /dev/null
+++ b/keyboards/takashicompany/center_enter/keymaps/via/keymap.c
@@ -0,0 +1,91 @@
+/* Copyright 2021 takashicompany
+ *
+ * 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
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+ SWITCH_LANG
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ LAYOUT(
+ KC_TAB, LT(2, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, ALT_T(KC_P),
+ KC_LCTL, KC_A, KC_S, LT(2, KC_D), KC_F, KC_G, SWITCH_LANG, KC_H, KC_J, LT(2, KC_K), KC_L, KC_ENT,
+ KC_LSFT, KC_Z, GUI_T(KC_X), ALT_T(KC_C), LT(1, KC_V), KC_B, KC_SPC, KC_N, LT(1, KC_M), KC_COMM, CTL_T(KC_DOT), KC_BSPC
+ ),
+
+ LAYOUT(
+ KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_TRNS, KC_EQL, KC_LBRC, KC_SLSH, KC_MINS, KC_RO, KC_TRNS, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_JYEN,
+ KC_TRNS, KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_LSFT, KC_TRNS, KC_SPC, KC_LANG1, KC_TRNS, KC_TRNS, KC_DEL
+ ),
+
+ LAYOUT(
+ KC_TRNS, KC_ESC, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO,
+ KC_TRNS, KC_LCTL, KC_TRNS, KC_QUES, KC_EXLM, KC_NO, KC_TRNS, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO,
+ KC_TRNS, KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_TRNS, KC_TRNS, KC_TRNS, KC_LANG1, KC_NO, MO(3), KC_DEL
+ ),
+
+ LAYOUT(
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
+ KC_TRNS, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
+ KC_TRNS, RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T, RGB_M_T, KC_TRNS, KC_F11, KC_F12, KC_CAPS, KC_NO, KC_NO
+ )
+};
+
+bool is_lang1 = false;
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case SWITCH_LANG:
+ if (record->event.pressed) {
+
+ if (is_lang1) {
+ register_code(KC_LANG1);
+ is_lang1 = false;
+ }
+ else {
+ register_code(KC_LANG2);
+ is_lang1 = true;
+ }
+ }
+ break;
+ case KC_LANG1:
+ if (record->event.pressed) {
+ is_lang1 = false;
+ }
+ break;
+
+ case KC_LANG2:
+ if (record->event.pressed) {
+ is_lang1 = true;
+ }
+ break;
+ }
+ return true;
+}
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+
+ if (clockwise) {
+ tap_code(KC_MS_WH_UP);
+ } else {
+ tap_code(KC_MS_WH_DOWN);
+ }
+
+ return true;
+}
diff --git a/keyboards/takashicompany/center_enter/keymaps/via/rules.mk b/keyboards/takashicompany/center_enter/keymaps/via/rules.mk
new file mode 100644
index 000000000000..036bd6d1c3ec
--- /dev/null
+++ b/keyboards/takashicompany/center_enter/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/takashicompany/center_enter/readme.md b/keyboards/takashicompany/center_enter/readme.md
new file mode 100644
index 000000000000..d8db5cc7eb36
--- /dev/null
+++ b/keyboards/takashicompany/center_enter/readme.md
@@ -0,0 +1,29 @@
+# Center x Enter
+
+![image](https://raw.githubusercontent.com/takashicompany/center-enter/master/images/qmk.jpg)
+
+A 30% keyboard with the enter key placed in the center.
+Option to install a rotary encoder is also available.
+VIA (Remap) is also supported.
+
+* Keyboard Maintainer: [takashicompany](https://github.com/takashicompany)
+* Hardware Supported: Center x Enter PCB, Pro Micro
+* Hardware Availability: https://github.com/takashicompany/center-enter
+
+Make example for this keyboard (after setting up your build environment):
+
+ make takashicompany/center_enter:default
+
+Flashing example for this keyboard:
+
+ make takashicompany/center_enter: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 `RESET` if it is available
diff --git a/keyboards/takashicompany/center_enter/rules.mk b/keyboards/takashicompany/center_enter/rules.mk
new file mode 100644
index 000000000000..d8e321ce2ec8
--- /dev/null
+++ b/keyboards/takashicompany/center_enter/rules.mk
@@ -0,0 +1,23 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# 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
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+ENCODER_ENABLE = yes
diff --git a/keyboards/takashicompany/compacx/compacx.c b/keyboards/takashicompany/compacx/compacx.c
new file mode 100644
index 000000000000..cf23638920cd
--- /dev/null
+++ b/keyboards/takashicompany/compacx/compacx.c
@@ -0,0 +1,28 @@
+/* Copyright 2021 takashicompany
+ *
+ * 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 "compacx.h"
+
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (!clockwise) {
+ tap_code(KC_MS_WH_UP);
+ } else {
+ tap_code(KC_MS_WH_DOWN);
+ }
+
+ return true;
+}
diff --git a/keyboards/takashicompany/compacx/compacx.h b/keyboards/takashicompany/compacx/compacx.h
new file mode 100644
index 000000000000..61447abeb8f5
--- /dev/null
+++ b/keyboards/takashicompany/compacx/compacx.h
@@ -0,0 +1,46 @@
+/* Copyright 2021 takashicompany
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is 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.
+ */
+#define LAYOUT( \
+ l001, l002, l003, l004, l005, l006, l007, l008, r001, r002, r003, r004, r005, r006, r007, r008, \
+ l201, l009, l010, l011, l012, l013, l901, r201, r009, r010, r011, r012, r013, r901, \
+ l301, l014, l015, l016, l017, l018, r301, r014, r015, r016, r017, r018, \
+ l401, l019, l020, l021, l022, l023, l024, r401, r019, r020, r021, r022, r023, r024, \
+ l025, l101, l102, l026, l103, l104, l027, r025, r101, r102, r026, r103, r104, r027 \
+) { \
+ { l001, l002, l003, l004, l005, l006, l007 }, \
+ { l201, l009, l010, l011, l012, l013, l008 }, \
+ { l301, l014, l015, l016, l017, l018, l901 }, \
+ { l401, l019, l020, l021, l022, l023, l024 }, \
+ { l025, l101, l102, l026, l103, l104, l027 }, \
+ { r001, r002, r003, r004, r005, r006, r007 }, \
+ { r201, r009, r010, r011, r012, r013, r008 }, \
+ { r301, r014, r015, r016, r017, r018, r901 }, \
+ { r401, r019, r020, r021, r022, r023, r024 }, \
+ { r025, r101, r102, r026, r103, r104, r027 } \
+}
diff --git a/keyboards/takashicompany/compacx/config.h b/keyboards/takashicompany/compacx/config.h
new file mode 100644
index 000000000000..5428482ed3b9
--- /dev/null
+++ b/keyboards/takashicompany/compacx/config.h
@@ -0,0 +1,149 @@
+/*
+Copyright 2021 takashicompany
+
+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 .
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x7463 // tc = takashicompany
+#define PRODUCT_ID 0x0014
+#define DEVICE_VER 0x0001
+#define MANUFACTURER takashicompany
+#define PRODUCT Compacx
+
+/* key matrix size */
+#define MATRIX_ROWS 5 * 2
+#define MATRIX_COLS 7
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { D1, D0, D4, C6, D7 }
+#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+#define ENCODER_RESOLUTION 4
+#define ENCODERS_PAD_A { E6, B6 }
+#define ENCODERS_PAD_B { B4, B5 }
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D2 // or D1, D2, D3, E6
+
+//#define LED_NUM_LOCK_PIN B0
+//#define LED_CAPS_LOCK_PIN B1
+//#define LED_SCROLL_LOCK_PIN B2
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+//#define BACKLIGHT_PIN B7
+//#define BACKLIGHT_LEVELS 3
+//#define BACKLIGHT_BREATHING
+
+#define RGB_DI_PIN D3
+#ifdef RGB_DI_PIN
+# define RGBLED_NUM 12
+# define RGBLED_SPLIT {6, 6}
+# define RGBLIGHT_HUE_STEP 8
+# define RGBLIGHT_SAT_STEP 8
+# define RGBLIGHT_VAL_STEP 8
+# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/takashicompany/compacx/info.json b/keyboards/takashicompany/compacx/info.json
new file mode 100644
index 000000000000..431579feb167
--- /dev/null
+++ b/keyboards/takashicompany/compacx/info.json
@@ -0,0 +1,309 @@
+{
+ "keyboard_name": "Compacx",
+ "url": "https://github.com/takashicompany/compacx",
+ "maintainer": "takashicompany",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {
+ "x": 0,
+ "y": 0
+ },
+ {
+ "x": 1,
+ "y": 0
+ },
+ {
+ "x": 2,
+ "y": 0
+ },
+ {
+ "x": 3,
+ "y": 0
+ },
+ {
+ "x": 4,
+ "y": 0
+ },
+ {
+ "x": 5,
+ "y": 0
+ },
+ {
+ "x": 6,
+ "y": 0
+ },
+ {
+ "x": 7,
+ "y": 0
+ },
+ {
+ "x": 9,
+ "y": 0
+ },
+ {
+ "x": 10,
+ "y": 0
+ },
+ {
+ "x": 11,
+ "y": 0
+ },
+ {
+ "x": 12,
+ "y": 0
+ },
+ {
+ "x": 13,
+ "y": 0
+ },
+ {
+ "x": 14,
+ "y": 0
+ },
+ {
+ "x": 15,
+ "y": 0
+ },
+ {
+ "x": 16,
+ "y": 0
+ },
+ {
+ "x": 0,
+ "y": 1,
+ "w": 1.5
+ },
+ {
+ "x": 1.5,
+ "y": 1
+ },
+ {
+ "x": 2.5,
+ "y": 1
+ },
+ {
+ "x": 3.5,
+ "y": 1
+ },
+ {
+ "x": 4.5,
+ "y": 1
+ },
+ {
+ "x": 5.5,
+ "y": 1
+ },
+ {
+ "x": 6.75,
+ "y": 1,
+ "w": 1.25,
+ "h": 2
+ },
+ {
+ "x": 9,
+ "y": 1,
+ "w": 1.5
+ },
+ {
+ "x": 10.5,
+ "y": 1
+ },
+ {
+ "x": 11.5,
+ "y": 1
+ },
+ {
+ "x": 12.5,
+ "y": 1
+ },
+ {
+ "x": 13.5,
+ "y": 1
+ },
+ {
+ "x": 14.5,
+ "y": 1
+ },
+ {
+ "x": 15.75,
+ "y": 1,
+ "w": 1.25,
+ "h": 2
+ },
+ {
+ "x": 0,
+ "y": 2,
+ "w": 1.75
+ },
+ {
+ "x": 1.75,
+ "y": 2
+ },
+ {
+ "x": 2.75,
+ "y": 2
+ },
+ {
+ "x": 3.75,
+ "y": 2
+ },
+ {
+ "x": 4.75,
+ "y": 2
+ },
+ {
+ "x": 5.75,
+ "y": 2
+ },
+ {
+ "x": 9,
+ "y": 2,
+ "w": 1.75
+ },
+ {
+ "x": 10.75,
+ "y": 2
+ },
+ {
+ "x": 11.75,
+ "y": 2
+ },
+ {
+ "x": 12.75,
+ "y": 2
+ },
+ {
+ "x": 13.75,
+ "y": 2
+ },
+ {
+ "x": 14.75,
+ "y": 2
+ },
+ {
+ "x": 0,
+ "y": 3,
+ "w": 2
+ },
+ {
+ "x": 2,
+ "y": 3
+ },
+ {
+ "x": 3,
+ "y": 3
+ },
+ {
+ "x": 4,
+ "y": 3
+ },
+ {
+ "x": 5,
+ "y": 3
+ },
+ {
+ "x": 6,
+ "y": 3
+ },
+ {
+ "x": 7,
+ "y": 3
+ },
+ {
+ "x": 9,
+ "y": 3,
+ "w": 2
+ },
+ {
+ "x": 11,
+ "y": 3
+ },
+ {
+ "x": 12,
+ "y": 3
+ },
+ {
+ "x": 13,
+ "y": 3
+ },
+ {
+ "x": 14,
+ "y": 3
+ },
+ {
+ "x": 15,
+ "y": 3
+ },
+ {
+ "x": 16,
+ "y": 3
+ },
+ {
+ "x": 0,
+ "y": 4
+ },
+ {
+ "x": 1,
+ "y": 4,
+ "w": 1.25
+ },
+ {
+ "x": 2.25,
+ "y": 4,
+ "w": 1.25
+ },
+ {
+ "x": 3.5,
+ "y": 4
+ },
+ {
+ "x": 4.5,
+ "y": 4,
+ "w": 1.25
+ },
+ {
+ "x": 5.75,
+ "y": 4,
+ "w": 1.25
+ },
+ {
+ "x": 7,
+ "y": 4
+ },
+ {
+ "x": 9,
+ "y": 4
+ },
+ {
+ "x": 10,
+ "y": 4,
+ "w": 1.25
+ },
+ {
+ "x": 11.25,
+ "y": 4,
+ "w": 1.25
+ },
+ {
+ "x": 12.5,
+ "y": 4
+ },
+ {
+ "x": 13.5,
+ "y": 4,
+ "w": 1.25
+ },
+ {
+ "x": 14.75,
+ "y": 4,
+ "w": 1.25
+ },
+ {
+ "x": 16,
+ "y": 4
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/keyboards/takashicompany/compacx/keymaps/default/keymap.c b/keyboards/takashicompany/compacx/keymaps/default/keymap.c
new file mode 100644
index 000000000000..068f621ff817
--- /dev/null
+++ b/keyboards/takashicompany/compacx/keymaps/default/keymap.c
@@ -0,0 +1,68 @@
+/* Copyright 2021 takashicompany
+ *
+ * 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] = {
+
+ LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_BSPC, KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_JYEN, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_ENT, KC_TAB, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_ENT,
+ KC_CAPS, KC_A, KC_S, LT(2, KC_D), KC_F, KC_G, KC_RCTL, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DEL, KC_RSFT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO,
+ TG(2), LT(3 ,KC_PSCR), KC_LCTL, KC_LGUI, LSFT_T(KC_TAB), LALT_T(KC_LANG2), KC_SPC, KC_SPC, LT(1, KC_LANG1), KC_RALT, KC_RGUI, KC_RCTL, MO(3), KC_DEL
+ ),
+
+ LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SCLN, KC_QUOT, KC_NUHS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_TRNS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PCMM, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS,
+ KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PEQL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_P0, KC_PDOT, KC_PENT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS, KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
+ KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS,
+ KC_TRNS, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T, RGB_M_T, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, 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/takashicompany/compacx/keymaps/via/config.h b/keyboards/takashicompany/compacx/keymaps/via/config.h
new file mode 100644
index 000000000000..d04cb9a0d269
--- /dev/null
+++ b/keyboards/takashicompany/compacx/keymaps/via/config.h
@@ -0,0 +1,18 @@
+/* Copyright 2021 takashicompany
+ *
+ * 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 .
+ */
+#pragma once
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 6
\ No newline at end of file
diff --git a/keyboards/takashicompany/compacx/keymaps/via/keymap.c b/keyboards/takashicompany/compacx/keymaps/via/keymap.c
new file mode 100644
index 000000000000..068f621ff817
--- /dev/null
+++ b/keyboards/takashicompany/compacx/keymaps/via/keymap.c
@@ -0,0 +1,68 @@
+/* Copyright 2021 takashicompany
+ *
+ * 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] = {
+
+ LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_BSPC, KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_JYEN, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_ENT, KC_TAB, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_ENT,
+ KC_CAPS, KC_A, KC_S, LT(2, KC_D), KC_F, KC_G, KC_RCTL, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DEL, KC_RSFT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO,
+ TG(2), LT(3 ,KC_PSCR), KC_LCTL, KC_LGUI, LSFT_T(KC_TAB), LALT_T(KC_LANG2), KC_SPC, KC_SPC, LT(1, KC_LANG1), KC_RALT, KC_RGUI, KC_RCTL, MO(3), KC_DEL
+ ),
+
+ LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SCLN, KC_QUOT, KC_NUHS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_TRNS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PCMM, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS,
+ KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PEQL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_P0, KC_PDOT, KC_PENT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS, KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
+ KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS,
+ KC_TRNS, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T, RGB_M_T, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, 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/takashicompany/compacx/keymaps/via/rules.mk b/keyboards/takashicompany/compacx/keymaps/via/rules.mk
new file mode 100644
index 000000000000..1e5b99807cb7
--- /dev/null
+++ b/keyboards/takashicompany/compacx/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/takashicompany/compacx/readme.md b/keyboards/takashicompany/compacx/readme.md
new file mode 100644
index 000000000000..ac5cfee16933
--- /dev/null
+++ b/keyboards/takashicompany/compacx/readme.md
@@ -0,0 +1,29 @@
+# Compacx
+
+![image](https://github.com/takashicompany/compacx/blob/master/images/qmk.jpg?raw=true)
+
+"Compacx" is a 35-key keyboard with an ISO enter key.
+It is the perfect size for a macro pad or a one-handed gaming keyboard.
+It can also be used as a split keyboard by combining two units.
+
+* Keyboard Maintainer: [takashicompany](https://github.com/takashicompany)
+* Hardware Supported: PCB, Pro Micro
+* Hardware Availability: https://github.com/takashicompany/compacx
+
+Make example for this keyboard (after setting up your build environment):
+
+ make takashicompany/compacx:default
+
+Flashing example for this keyboard:
+
+ make takashicompany/compacx: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 `RESET` if it is available
diff --git a/keyboards/takashicompany/compacx/rules.mk b/keyboards/takashicompany/compacx/rules.mk
new file mode 100644
index 000000000000..ed3cc7866fc0
--- /dev/null
+++ b/keyboards/takashicompany/compacx/rules.mk
@@ -0,0 +1,24 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# 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
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+SPLIT_KEYBOARD=yes
+ENCODER_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/takashicompany/heavy_left/config.h b/keyboards/takashicompany/heavy_left/config.h
new file mode 100644
index 000000000000..e7f37f251c85
--- /dev/null
+++ b/keyboards/takashicompany/heavy_left/config.h
@@ -0,0 +1,145 @@
+/*
+Copyright 2021 takashicompany
+
+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 .
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x7463 // tc = takashicompany
+#define PRODUCT_ID 0x0015
+#define DEVICE_VER 0x0001
+#define MANUFACTURER takashicompany
+#define PRODUCT Heavy Left
+
+/* key matrix size */
+#define MATRIX_ROWS 5 * 2
+#define MATRIX_COLS 10
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4 }
+#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6, D1, D0 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D2 // or D1, D2, D3, E6
+
+//#define LED_NUM_LOCK_PIN B0
+//#define LED_CAPS_LOCK_PIN B1
+//#define LED_SCROLL_LOCK_PIN B2
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+//#define BACKLIGHT_PIN B7
+//#define BACKLIGHT_LEVELS 3
+//#define BACKLIGHT_BREATHING
+
+#define RGB_DI_PIN D3
+#ifdef RGB_DI_PIN
+# define RGBLED_NUM 6 * 2
+# define RGBLED_SPLIT {6, 6}
+# define RGBLIGHT_HUE_STEP 8
+# define RGBLIGHT_SAT_STEP 8
+# define RGBLIGHT_VAL_STEP 8
+# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/takashicompany/heavy_left/heavy_left.c b/keyboards/takashicompany/heavy_left/heavy_left.c
new file mode 100644
index 000000000000..2af6d3fe6167
--- /dev/null
+++ b/keyboards/takashicompany/heavy_left/heavy_left.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 takashicompany
+ *
+ * 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 "heavy_left.h"
diff --git a/keyboards/takashicompany/heavy_left/heavy_left.h b/keyboards/takashicompany/heavy_left/heavy_left.h
new file mode 100644
index 000000000000..a54f88b30394
--- /dev/null
+++ b/keyboards/takashicompany/heavy_left/heavy_left.h
@@ -0,0 +1,46 @@
+/* Copyright 2021 takashicompany
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is 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.
+ */
+#define LAYOUT( \
+ l06, l07, l08, l09, l00, l01, l02, l03, l04, l05, r00, r01, r02, r03, r04, r05, r06, r07, r08, r09, \
+ l16, l17, l18, l19, l10, l11, l12, l13, l14, l15, r10, r11, r12, r13, r14, r15, r16, r17, r18, \
+ l26, l27, l28, l29, l20, l21, l22, l23, l24, l25, r20, r21, r22, r23, r24, r25, r26, r27, \
+ l36, l37, l38, l39, l30, l31, l32, l33, l34, l35, r30, r31, r32, r33, r34, r35, r36, r37, r38, \
+ l46, l47, l48, l49, l40, l41, l42, l43, l44, l45, r40, r41, r42, r43, r44, r45, r46, r47, r48 \
+) { \
+ { l00, l01, l02, l03, l04, l05, l06, l07, l08, l09 }, \
+ { l10, l11, l12, l13, l14, l15, l16, l17, l18, l19 }, \
+ { l20, l21, l22, l23, l24, l25, l26, l27, l28, l29 }, \
+ { l30, l31, l32, l33, l34, l35, l36, l37, l38, l39 }, \
+ { l40, l41, l42, l43, l44, l45, l46, l47, l48, l49 }, \
+ { r00, r01, r02, r03, r04, r05, r06, r07, r09, KC_NO }, \
+ { r10, r11, r12, r13, r14, r15, r16, r08, r18, KC_NO }, \
+ { r20, r21, r22, r23, r24, r25, r26, r17, r27, KC_NO }, \
+ { r30, r31, r32, r33, r34, r35, r36, r37, r38, KC_NO }, \
+ { r40, r41, r42, r43, r44, r45, r46, r47, r48, KC_NO } \
+}
diff --git a/keyboards/takashicompany/heavy_left/info.json b/keyboards/takashicompany/heavy_left/info.json
new file mode 100644
index 000000000000..878618e63d65
--- /dev/null
+++ b/keyboards/takashicompany/heavy_left/info.json
@@ -0,0 +1,496 @@
+{
+ "keyboard_name": "heavy_left",
+ "url": "",
+ "maintainer": "takashicompany",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {
+ "label": "24",
+ "x": 0,
+ "y": 0
+ },
+ {
+ "label": "25",
+ "x": 1,
+ "y": 0
+ },
+ {
+ "label": "26",
+ "x": 2,
+ "y": 0
+ },
+ {
+ "label": "27",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "1",
+ "x": 4.25,
+ "y": 0
+ },
+ {
+ "label": "2",
+ "x": 5.25,
+ "y": 0
+ },
+ {
+ "label": "3",
+ "x": 6.25,
+ "y": 0
+ },
+ {
+ "label": "4",
+ "x": 7.25,
+ "y": 0
+ },
+ {
+ "label": "5",
+ "x": 8.25,
+ "y": 0
+ },
+ {
+ "label": "6",
+ "x": 9.25,
+ "y": 0
+ },
+ {
+ "label": "44",
+ "x": 10.75,
+ "y": 0
+ },
+ {
+ "label": "45",
+ "x": 11.75,
+ "y": 0
+ },
+ {
+ "label": "46",
+ "x": 12.75,
+ "y": 0
+ },
+ {
+ "label": "47",
+ "x": 13.75,
+ "y": 0
+ },
+ {
+ "label": "48",
+ "x": 14.75,
+ "y": 0
+ },
+ {
+ "label": "49",
+ "x": 15.75,
+ "y": 0
+ },
+ {
+ "label": "50",
+ "x": 16.75,
+ "y": 0
+ },
+ {
+ "label": "51",
+ "x": 17.75,
+ "y": 0
+ },
+ {
+ "label": "52",
+ "x": 18.75,
+ "y": 0
+ },
+ {
+ "label": "82",
+ "x": 20,
+ "y": 0
+ },
+ {
+ "label": "28",
+ "x": 0,
+ "y": 1
+ },
+ {
+ "label": "29",
+ "x": 1,
+ "y": 1
+ },
+ {
+ "label": "30",
+ "x": 2,
+ "y": 1
+ },
+ {
+ "label": "31",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "201",
+ "x": 4.25,
+ "y": 1,
+ "w": 1.5
+ },
+ {
+ "label": "7",
+ "x": 5.75,
+ "y": 1
+ },
+ {
+ "label": "8",
+ "x": 6.75,
+ "y": 1
+ },
+ {
+ "label": "9",
+ "x": 7.75,
+ "y": 1
+ },
+ {
+ "label": "10",
+ "x": 8.75,
+ "y": 1
+ },
+ {
+ "label": "11",
+ "x": 9.75,
+ "y": 1
+ },
+ {
+ "label": "53",
+ "x": 11.25,
+ "y": 1
+ },
+ {
+ "label": "54",
+ "x": 12.25,
+ "y": 1
+ },
+ {
+ "label": "55",
+ "x": 13.25,
+ "y": 1
+ },
+ {
+ "label": "56",
+ "x": 14.25,
+ "y": 1
+ },
+ {
+ "label": "57",
+ "x": 15.25,
+ "y": 1
+ },
+ {
+ "label": "58",
+ "x": 16.25,
+ "y": 1
+ },
+ {
+ "label": "59",
+ "x": 17.25,
+ "y": 1
+ },
+ {
+ "label": "901",
+ "x": 18.5,
+ "y": 1,
+ "w": 1.25,
+ "h": 2
+ },
+ {
+ "label": "83",
+ "x": 20,
+ "y": 1
+ },
+ {
+ "label": "32",
+ "x": 0,
+ "y": 2
+ },
+ {
+ "label": "33",
+ "x": 1,
+ "y": 2
+ },
+ {
+ "label": "34",
+ "x": 2,
+ "y": 2
+ },
+ {
+ "label": "35",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "301",
+ "x": 4.25,
+ "y": 2,
+ "w": 1.75
+ },
+ {
+ "label": "12",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "13",
+ "x": 7,
+ "y": 2
+ },
+ {
+ "label": "14",
+ "x": 8,
+ "y": 2
+ },
+ {
+ "label": "15",
+ "x": 9,
+ "y": 2
+ },
+ {
+ "label": "16",
+ "x": 10,
+ "y": 2
+ },
+ {
+ "label": "60",
+ "x": 11.5,
+ "y": 2
+ },
+ {
+ "label": "61",
+ "x": 12.5,
+ "y": 2
+ },
+ {
+ "label": "62",
+ "x": 13.5,
+ "y": 2
+ },
+ {
+ "label": "63",
+ "x": 14.5,
+ "y": 2
+ },
+ {
+ "label": "64",
+ "x": 15.5,
+ "y": 2
+ },
+ {
+ "label": "65",
+ "x": 16.5,
+ "y": 2
+ },
+ {
+ "label": "66",
+ "x": 17.5,
+ "y": 2
+ },
+ {
+ "label": "84",
+ "x": 20,
+ "y": 2
+ },
+ {
+ "label": "36",
+ "x": 0,
+ "y": 3
+ },
+ {
+ "label": "37",
+ "x": 1,
+ "y": 3
+ },
+ {
+ "label": "38",
+ "x": 2,
+ "y": 3
+ },
+ {
+ "label": "39",
+ "x": 3,
+ "y": 3
+ },
+ {
+ "label": "601",
+ "x": 4.25,
+ "y": 3,
+ "w": 2.25
+ },
+ {
+ "label": "17",
+ "x": 6.5,
+ "y": 3
+ },
+ {
+ "label": "18",
+ "x": 7.5,
+ "y": 3
+ },
+ {
+ "label": "19",
+ "x": 8.5,
+ "y": 3
+ },
+ {
+ "label": "20",
+ "x": 9.5,
+ "y": 3
+ },
+ {
+ "label": "21",
+ "x": 10.5,
+ "y": 3
+ },
+ {
+ "label": "67",
+ "x": 11.75,
+ "y": 3
+ },
+ {
+ "label": "68",
+ "x": 12.75,
+ "y": 3
+ },
+ {
+ "label": "69",
+ "x": 13.75,
+ "y": 3
+ },
+ {
+ "label": "70",
+ "x": 14.75,
+ "y": 3
+ },
+ {
+ "label": "71",
+ "x": 15.75,
+ "y": 3
+ },
+ {
+ "label": "72",
+ "x": 16.75,
+ "y": 3
+ },
+ {
+ "label": "73",
+ "x": 17.75,
+ "y": 3
+ },
+ {
+ "label": "74",
+ "x": 18.75,
+ "y": 3
+ },
+ {
+ "label": "85",
+ "x": 20,
+ "y": 3
+ },
+ {
+ "label": "40",
+ "x": 0,
+ "y": 4
+ },
+ {
+ "label": "41",
+ "x": 1,
+ "y": 4
+ },
+ {
+ "label": "42",
+ "x": 2,
+ "y": 4
+ },
+ {
+ "label": "43",
+ "x": 3,
+ "y": 4
+ },
+ {
+ "label": "101",
+ "x": 4.25,
+ "y": 4,
+ "w": 1.25
+ },
+ {
+ "label": "22",
+ "x": 5.5,
+ "y": 4
+ },
+ {
+ "label": "102",
+ "x": 6.5,
+ "y": 4,
+ "w": 1.25
+ },
+ {
+ "label": "23",
+ "x": 7.75,
+ "y": 4
+ },
+ {
+ "label": "103",
+ "x": 8.75,
+ "y": 4,
+ "w": 1.25
+ },
+ {
+ "label": "104",
+ "x": 10,
+ "y": 4,
+ "w": 1.25
+ },
+ {
+ "label": "75",
+ "x": 11.5,
+ "y": 4
+ },
+ {
+ "label": "105",
+ "x": 12.5,
+ "y": 4,
+ "w": 1.25
+ },
+ {
+ "label": "76",
+ "x": 13.75,
+ "y": 4
+ },
+ {
+ "label": "77",
+ "x": 14.75,
+ "y": 4
+ },
+ {
+ "label": "78",
+ "x": 15.75,
+ "y": 4
+ },
+ {
+ "label": "79",
+ "x": 16.75,
+ "y": 4
+ },
+ {
+ "label": "80",
+ "x": 17.75,
+ "y": 4
+ },
+ {
+ "label": "81",
+ "x": 18.75,
+ "y": 4
+ },
+ {
+ "label": "86",
+ "x": 20,
+ "y": 4
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/keyboards/takashicompany/heavy_left/keymaps/default/keymap.c b/keyboards/takashicompany/heavy_left/keymaps/default/keymap.c
new file mode 100644
index 000000000000..31ac47c047d5
--- /dev/null
+++ b/keyboards/takashicompany/heavy_left/keymaps/default/keymap.c
@@ -0,0 +1,53 @@
+/* Copyright 2021 takashicompany
+ *
+ * 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
+#include "keymap_jp.h"
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+ KC_00 = SAFE_RANGE
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ LAYOUT(
+ KC_ESC, KC_PSLS, KC_PAST, KC_PMNS, 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_JYEN, KC_BSPC, KC_DEL,
+ KC_P7, KC_P8, KC_P9, KC_PPLS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, KC_HOME,
+ KC_P4, KC_P5, KC_P6, KC_PCMM, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_END,
+ KC_P1, KC_P2, KC_P3, KC_PEQL, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, JP_BSLS, KC_UP, KC_RSFT, KC_PGUP,
+ KC_P0, KC_00, KC_PDOT, KC_PENT, KC_TILD, KC_LCTL, KC_LGUI, KC_LALT, KC_LANG2, KC_SPC, KC_SPC, KC_LANG1, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, MO(1)
+ ),
+
+ LAYOUT(
+ KC_NLCK, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T, RGB_M_T, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_00:
+ if (record->event.pressed) {
+ SEND_STRING("00");
+ }
+ return false;
+ }
+ return true;
+}
\ No newline at end of file
diff --git a/keyboards/takashicompany/heavy_left/keymaps/via/keymap.c b/keyboards/takashicompany/heavy_left/keymaps/via/keymap.c
new file mode 100644
index 000000000000..796d27914daa
--- /dev/null
+++ b/keyboards/takashicompany/heavy_left/keymaps/via/keymap.c
@@ -0,0 +1,69 @@
+/* Copyright 2021 takashicompany
+ *
+ * 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
+#include "keymap_jp.h"
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+ KC_00 = USER00,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ LAYOUT(
+ KC_ESC, KC_PSLS, KC_PAST, KC_PMNS, 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_JYEN, KC_BSPC, KC_DEL,
+ KC_P7, KC_P8, KC_P9, KC_PPLS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, KC_HOME,
+ KC_P4, KC_P5, KC_P6, KC_PCMM, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_END,
+ KC_P1, KC_P2, KC_P3, KC_PEQL, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, JP_BSLS, KC_UP, KC_RSFT, KC_PGUP,
+ KC_P0, KC_00, KC_PDOT, KC_PENT, KC_TILD, KC_LCTL, KC_LGUI, KC_LALT, KC_LANG2, KC_SPC, KC_SPC, KC_LANG1, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, MO(1)
+ ),
+
+ LAYOUT(
+ KC_NLCK, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T, RGB_M_T, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_00:
+ if (record->event.pressed) {
+ SEND_STRING("00");
+ }
+ return false;
+ }
+ return true;
+}
\ No newline at end of file
diff --git a/keyboards/takashicompany/heavy_left/keymaps/via/rules.mk b/keyboards/takashicompany/heavy_left/keymaps/via/rules.mk
new file mode 100644
index 000000000000..036bd6d1c3ec
--- /dev/null
+++ b/keyboards/takashicompany/heavy_left/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/takashicompany/heavy_left/readme.md b/keyboards/takashicompany/heavy_left/readme.md
new file mode 100644
index 000000000000..4cd0e1b0cc56
--- /dev/null
+++ b/keyboards/takashicompany/heavy_left/readme.md
@@ -0,0 +1,33 @@
+# heavy_left
+
+![heavy_left](https://github.com/takashicompany/heavy_left/blob/master/images/qmk.jpg)
+
+This is a 95-key split type Japanese keyboard.
+It has a numeric keypad on the left hand side, which can be used not only for entering numbers but also as a dedicated macro pad.
+It also supports key switch replacement with MX sockets and LED underglow.
+
+95キーの分割型の日本語配列のキーボードです。
+左手側にテンキーが備え付けられており、数字の入力だけでなく専用のマクロパッドとしても使用が可能です。
+MXソケットによるキースイッチの付替えや、LEDによるアンダーグロウにも対応しています。
+
+* Keyboard Maintainer: [takashicompany](https://github.com/yourusername)
+* Hardware Supported: PCB, Pro Micro
+* Hardware Availability: https://github.com/takashicompany/heavy_left
+
+Make example for this keyboard (after setting up your build environment):
+
+ make takashicompany/heavy_left:default
+
+Flashing example for this keyboard:
+
+ make takashicompany/heavy_left: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 `RESET` if it is available
diff --git a/keyboards/takashicompany/heavy_left/rules.mk b/keyboards/takashicompany/heavy_left/rules.mk
new file mode 100644
index 000000000000..d4e19e654655
--- /dev/null
+++ b/keyboards/takashicompany/heavy_left/rules.mk
@@ -0,0 +1,23 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# 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
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+SPLIT_KEYBOARD=yes
\ No newline at end of file
diff --git a/keyboards/takashicompany/qoolee/config.h b/keyboards/takashicompany/qoolee/config.h
new file mode 100644
index 000000000000..99c8ce01428e
--- /dev/null
+++ b/keyboards/takashicompany/qoolee/config.h
@@ -0,0 +1,153 @@
+/*
+Copyright 2021 takashicompany
+
+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 .
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x7463 // tc = takashicompany
+#define PRODUCT_ID 0x0013
+#define DEVICE_VER 0x0001
+#define MANUFACTURER takashicompany
+#define PRODUCT QooLee
+
+/* key matrix size */
+#define MATRIX_ROWS 3
+#define MATRIX_COLS 12
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { E6, B4, B5 }
+#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6, D0, D4, C6, D7}
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+#define ENCODER_RESOLUTION 1
+#define ENCODERS_PAD_A { D2 }
+#define ENCODERS_PAD_B { D1 }
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+//#define LED_NUM_LOCK_PIN B0
+//#define LED_CAPS_LOCK_PIN B1
+//#define LED_SCROLL_LOCK_PIN B2
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+//#define BACKLIGHT_PIN B7
+//#define BACKLIGHT_LEVELS 3
+//#define BACKLIGHT_BREATHING
+
+#define RGB_DI_PIN D3
+#ifdef RGB_DI_PIN
+# define RGBLED_NUM 16
+# define RGBLIGHT_HUE_STEP 8
+# define RGBLIGHT_SAT_STEP 8
+# define RGBLIGHT_VAL_STEP 8
+# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
+# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+# define RGBLIGHT_EFFECT_BREATHING
+# define RGBLIGHT_EFFECT_RAINBOW_MOOD
+# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+# define RGBLIGHT_EFFECT_SNAKE
+# define RGBLIGHT_EFFECT_KNIGHT
+# define RGBLIGHT_EFFECT_CHRISTMAS
+# define RGBLIGHT_EFFECT_STATIC_GRADIENT
+# define RGBLIGHT_EFFECT_RGB_TEST
+# define RGBLIGHT_EFFECT_ALTERNATING
+/*== customize breathing effect ==*/
+/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+/*==== use exp() and sin() ====*/
+//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
\ No newline at end of file
diff --git a/keyboards/takashicompany/qoolee/info.json b/keyboards/takashicompany/qoolee/info.json
new file mode 100644
index 000000000000..b2245a91c719
--- /dev/null
+++ b/keyboards/takashicompany/qoolee/info.json
@@ -0,0 +1,156 @@
+{
+ "keyboard_name": "QooLee",
+ "url": "https://github.com/takashicompany/qoolee",
+ "maintainer": "takachicompany",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {
+ "x": 0,
+ "y": 0,
+ "w": 1.5
+ },
+ {
+ "x": 1.5,
+ "y": 0
+ },
+ {
+ "x": 2.5,
+ "y": 0
+ },
+ {
+ "x": 3.5,
+ "y": 0
+ },
+ {
+ "x": 4.5,
+ "y": 0
+ },
+ {
+ "x": 5.5,
+ "y": 0
+ },
+ {
+ "x": 6.5,
+ "y": 0
+ },
+ {
+ "x": 7.5,
+ "y": 0
+ },
+ {
+ "x": 8.5,
+ "y": 0
+ },
+ {
+ "x": 9.5,
+ "y": 0
+ },
+ {
+ "x": 10.5,
+ "y": 0
+ },
+ {
+ "x": 11.75,
+ "y": 0,
+ "w": 1.25,
+ "h": 2
+ },
+ {
+ "x": 0,
+ "y": 1,
+ "w": 1.75
+ },
+ {
+ "x": 1.75,
+ "y": 1
+ },
+ {
+ "x": 2.75,
+ "y": 1
+ },
+ {
+ "x": 3.75,
+ "y": 1
+ },
+ {
+ "x": 4.75,
+ "y": 1
+ },
+ {
+ "x": 5.75,
+ "y": 1
+ },
+ {
+ "x": 6.75,
+ "y": 1
+ },
+ {
+ "x": 7.75,
+ "y": 1
+ },
+ {
+ "x": 8.75,
+ "y": 1
+ },
+ {
+ "x": 9.75,
+ "y": 1
+ },
+ {
+ "x": 10.75,
+ "y": 1
+ },
+ {
+ "x": 0,
+ "y": 2,
+ "w": 2
+ },
+ {
+ "x": 2,
+ "y": 2
+ },
+ {
+ "x": 3,
+ "y": 2
+ },
+ {
+ "x": 4,
+ "y": 2
+ },
+ {
+ "x": 5,
+ "y": 2
+ },
+ {
+ "x": 6,
+ "y": 2
+ },
+ {
+ "x": 7,
+ "y": 2
+ },
+ {
+ "x": 8,
+ "y": 2
+ },
+ {
+ "x": 9,
+ "y": 2
+ },
+ {
+ "x": 10,
+ "y": 2
+ },
+ {
+ "x": 11,
+ "y": 2
+ },
+ {
+ "x": 12,
+ "y": 2
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/keyboards/takashicompany/qoolee/keymaps/default/keymap.c b/keyboards/takashicompany/qoolee/keymaps/default/keymap.c
new file mode 100644
index 000000000000..64d6ff7aea58
--- /dev/null
+++ b/keyboards/takashicompany/qoolee/keymaps/default/keymap.c
@@ -0,0 +1,79 @@
+/* Copyright 2021 takashicompany
+ *
+ * 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] = {
+
+ LAYOUT(
+ KC_TAB, LT(2, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, GUI_T(KC_O), ALT_T(KC_P),
+ KC_LCTL, KC_A, KC_S, LT(2, KC_D), KC_F, KC_G, KC_H, KC_J, LT(2, KC_K), KC_L, KC_SCLN, KC_ENT,
+ KC_LSFT, KC_Z, GUI_T(KC_X), ALT_T(KC_C), LT(1, KC_V), KC_B, KC_N, LT(1, KC_M), KC_COMM, CTL_T(KC_DOT), KC_SLSH, KC_BSPC
+ ),
+
+ LAYOUT(
+ KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_TRNS, KC_EQL, KC_LBRC, KC_SLSH, KC_MINS, KC_RO, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_JYEN, KC_TRNS,
+ KC_TRNS, KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_LSFT, KC_SPC, KC_LANG1, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_TRNS, KC_ESC, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO,
+ KC_TRNS, KC_LCTL, LALT(KC_C), KC_QUES, KC_EXLM, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_TRNS,
+ KC_TRNS, KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_TRNS, KC_TRNS, KC_LANG1, KC_NO, MO(3), KC_DEL, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
+ KC_TRNS, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS,
+ KC_TRNS, RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T, RGB_M_T, KC_F11, KC_F12, KC_CAPS, KC_NO, KC_NO, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+
+ if (clockwise) {
+ tap_code(KC_MS_WH_UP);
+ } else {
+ tap_code(KC_MS_WH_DOWN);
+ }
+
+ return true;
+}
+
diff --git a/keyboards/takashicompany/qoolee/keymaps/via/config.h b/keyboards/takashicompany/qoolee/keymaps/via/config.h
new file mode 100644
index 000000000000..ed834d1aefbb
--- /dev/null
+++ b/keyboards/takashicompany/qoolee/keymaps/via/config.h
@@ -0,0 +1,20 @@
+/*
+Copyright 2021 takashicompany
+
+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 .
+*/
+
+#pragma once
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 8
\ No newline at end of file
diff --git a/keyboards/takashicompany/qoolee/keymaps/via/keymap.c b/keyboards/takashicompany/qoolee/keymaps/via/keymap.c
new file mode 100644
index 000000000000..64d6ff7aea58
--- /dev/null
+++ b/keyboards/takashicompany/qoolee/keymaps/via/keymap.c
@@ -0,0 +1,79 @@
+/* Copyright 2021 takashicompany
+ *
+ * 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] = {
+
+ LAYOUT(
+ KC_TAB, LT(2, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, GUI_T(KC_O), ALT_T(KC_P),
+ KC_LCTL, KC_A, KC_S, LT(2, KC_D), KC_F, KC_G, KC_H, KC_J, LT(2, KC_K), KC_L, KC_SCLN, KC_ENT,
+ KC_LSFT, KC_Z, GUI_T(KC_X), ALT_T(KC_C), LT(1, KC_V), KC_B, KC_N, LT(1, KC_M), KC_COMM, CTL_T(KC_DOT), KC_SLSH, KC_BSPC
+ ),
+
+ LAYOUT(
+ KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_TRNS, KC_EQL, KC_LBRC, KC_SLSH, KC_MINS, KC_RO, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_JYEN, KC_TRNS,
+ KC_TRNS, KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_LSFT, KC_SPC, KC_LANG1, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_TRNS, KC_ESC, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO,
+ KC_TRNS, KC_LCTL, LALT(KC_C), KC_QUES, KC_EXLM, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_TRNS,
+ KC_TRNS, KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_TRNS, KC_TRNS, KC_LANG1, KC_NO, MO(3), KC_DEL, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
+ KC_TRNS, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS,
+ KC_TRNS, RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T, RGB_M_T, KC_F11, KC_F12, KC_CAPS, KC_NO, KC_NO, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+
+ if (clockwise) {
+ tap_code(KC_MS_WH_UP);
+ } else {
+ tap_code(KC_MS_WH_DOWN);
+ }
+
+ return true;
+}
+
diff --git a/keyboards/takashicompany/qoolee/keymaps/via/rules.mk b/keyboards/takashicompany/qoolee/keymaps/via/rules.mk
new file mode 100644
index 000000000000..036bd6d1c3ec
--- /dev/null
+++ b/keyboards/takashicompany/qoolee/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/takashicompany/qoolee/qoolee.c b/keyboards/takashicompany/qoolee/qoolee.c
new file mode 100644
index 000000000000..5a86c3c5bfab
--- /dev/null
+++ b/keyboards/takashicompany/qoolee/qoolee.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 takashicompany
+ *
+ * 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 "qoolee.h"
diff --git a/keyboards/takashicompany/qoolee/qoolee.h b/keyboards/takashicompany/qoolee/qoolee.h
new file mode 100644
index 000000000000..986e7e3ec390
--- /dev/null
+++ b/keyboards/takashicompany/qoolee/qoolee.h
@@ -0,0 +1,37 @@
+/* Copyright 2021 takashicompany
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is 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.
+ */
+#define LAYOUT( \
+ k00, k01, k02, k03, k04, k05, k07, k08, k09, k0a, k0b, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b \
+) { \
+ { k00, k01, k02, k03, k04, k05, k07, k08, k09, k0a, k0b, KC_NO }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b } \
+}
diff --git a/keyboards/takashicompany/qoolee/readme.md b/keyboards/takashicompany/qoolee/readme.md
new file mode 100644
index 000000000000..35ee431c1cad
--- /dev/null
+++ b/keyboards/takashicompany/qoolee/readme.md
@@ -0,0 +1,30 @@
+# qoolee
+
+![qoolee](https://github.com/takashicompany/qoolee/raw/master/images/qmk.jpg?raw=true)
+
+QooLee is a keyboard with a 30% layout with ISO Enter.
+It can also be equipped with a rotary encoder.
+It supports hot-swapping of keyswitches with MX sockets and mounting of LEDs.
+VIA (Remap) firmware is also available.
+
+* Keyboard Maintainer: [takashicompany](https://github.com/takashicompany)
+* Hardware Supported: PCB, Pro Micro
+* Hardware Availability: https://github.com/takashicompany/qoolee
+
+Make example for this keyboard (after setting up your build environment):
+
+ make takashicomoany/qoolee:default
+
+Flashing example for this keyboard:
+
+ make takashicompany/qoolee: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 `RESET` if it is available
diff --git a/keyboards/takashicompany/qoolee/rules.mk b/keyboards/takashicompany/qoolee/rules.mk
new file mode 100644
index 000000000000..314fa981186d
--- /dev/null
+++ b/keyboards/takashicompany/qoolee/rules.mk
@@ -0,0 +1,23 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# 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
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+ENCODER_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/teleport/numpad/config.h b/keyboards/teleport/numpad/config.h
new file mode 100644
index 000000000000..f3573483b700
--- /dev/null
+++ b/keyboards/teleport/numpad/config.h
@@ -0,0 +1,39 @@
+/*
+Copyright 2021 Moritz Plattner
+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 .
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x7470 //"tp"
+#define PRODUCT_ID 0x0001
+#define DEVICE_VER 0x0001
+#define MANUFACTURER tlprt
+#define PRODUCT NumPad
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 4
+
+/* Keyboard Matrix Assignments */
+#define MATRIX_ROW_PINS { D7, D4, D6, B4, B5 }
+#define MATRIX_COL_PINS { F6, F5, F7, F4 }
+#define UNUSED_PINS { B0, B1, B2, B3, B6, B7, D0, D1, D2, D3, D5, F0, F1, E6, C6, C7 }
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
diff --git a/keyboards/teleport/numpad/info.json b/keyboards/teleport/numpad/info.json
new file mode 100644
index 000000000000..a05b7440bafc
--- /dev/null
+++ b/keyboards/teleport/numpad/info.json
@@ -0,0 +1,27 @@
+{
+ "keyboard_name": "tlprt_NumPad",
+ "maintainer": "ebastler",
+ "layouts": {
+ "LAYOUT_numpad_5x4": {
+ "layout": [
+ {"label":"Num Lock", "x":0, "y":0},
+ {"label":"/", "x":1, "y":0},
+ {"label":"*", "x":2, "y":0},
+ {"label":"-", "x":3, "y":0},
+ {"label":"7", "x":0, "y":1},
+ {"label":"8", "x":1, "y":1},
+ {"label":"9", "x":2, "y":1},
+ {"label":"4", "x":0, "y":2},
+ {"label":"5", "x":1, "y":2},
+ {"label":"6", "x":2, "y":2},
+ {"label":"+", "x":3, "y":1, "h":2},
+ {"label":"1", "x":0, "y":3},
+ {"label":"2", "x":1, "y":3},
+ {"label":"3", "x":2, "y":3},
+ {"label":"0", "x":0, "y":4, "w":2},
+ {"label":",", "x":2, "y":4},
+ {"label":"Enter", "x":3, "y":3, "h":2}
+ ]
+ }
+ }
+}
diff --git a/keyboards/teleport/numpad/keymaps/default/keymap.c b/keyboards/teleport/numpad/keymaps/default/keymap.c
new file mode 100644
index 000000000000..539a046ee850
--- /dev/null
+++ b/keyboards/teleport/numpad/keymaps/default/keymap.c
@@ -0,0 +1,35 @@
+/* Copyright 2021 Moritz Plattner
+ *
+ * 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_numpad_5x4(
+ LT(1, KC_NLCK), 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
+ ),
+
+ [1] = LAYOUT_numpad_5x4(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, RESET
+ ),
+};
diff --git a/keyboards/teleport/numpad/keymaps/via/keymap.c b/keyboards/teleport/numpad/keymaps/via/keymap.c
new file mode 100644
index 000000000000..8eea06c76eee
--- /dev/null
+++ b/keyboards/teleport/numpad/keymaps/via/keymap.c
@@ -0,0 +1,51 @@
+/* Copyright 2021 Moritz Plattner
+ *
+ * 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_numpad_5x4(
+ LT(1, KC_NLCK), 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
+ ),
+
+ [1] = LAYOUT_numpad_5x4(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, RESET
+ ),
+
+ [2] = LAYOUT_numpad_5x4(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, RESET
+ ),
+
+ [3] = LAYOUT_numpad_5x4(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, RESET
+ ),
+};
diff --git a/keyboards/teleport/numpad/keymaps/via/rules.mk b/keyboards/teleport/numpad/keymaps/via/rules.mk
new file mode 100644
index 000000000000..036bd6d1c3ec
--- /dev/null
+++ b/keyboards/teleport/numpad/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/teleport/numpad/numpad.c b/keyboards/teleport/numpad/numpad.c
new file mode 100644
index 000000000000..375e240589a0
--- /dev/null
+++ b/keyboards/teleport/numpad/numpad.c
@@ -0,0 +1,16 @@
+/* Copyright 2021 Moritz Plattner
+ *
+ * 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 "numpad.h"
diff --git a/keyboards/teleport/numpad/numpad.h b/keyboards/teleport/numpad/numpad.h
new file mode 100644
index 000000000000..9c7413cd8e90
--- /dev/null
+++ b/keyboards/teleport/numpad/numpad.h
@@ -0,0 +1,33 @@
+/* Copyright 2021 Moritz Plattner
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_numpad_5x4( \
+ K00, K01, K02, K03, \
+ K10, K11, K12, \
+ K20, K21, K22, K13, \
+ K30, K31, K32, \
+ K40, K41, K42 \
+) { \
+ { K00, K01, K02, K03 }, \
+ { K10, K11, K12, K13 }, \
+ { K20, K21, K22, KC_NO }, \
+ { K30, K31, K32, KC_NO }, \
+ { K40, K41, K42, KC_NO }, \
+}
diff --git a/keyboards/teleport/numpad/readme.md b/keyboards/teleport/numpad/readme.md
new file mode 100644
index 000000000000..aebde6f16017
--- /dev/null
+++ b/keyboards/teleport/numpad/readme.md
@@ -0,0 +1,20 @@
+# The Teleport NumPad
+
+* Keyboard Maintainer: [ebastler](https://github.com/ebastler)
+* Hardware Supported: Teleport NumPad
+* Hardware Availability: [TheTeleport.de](https://www.theteleport.de/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make teleport/numpad:default
+
+Flash example for this keyboard:
+
+ make teleport/numpad: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 (In this case NumLock) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the key mapped to `RESET` (With the default keymap, hold NumLock, then press Enter)
\ No newline at end of file
diff --git a/keyboards/teleport/numpad/rules.mk b/keyboards/teleport/numpad/rules.mk
new file mode 100644
index 000000000000..d13c9980f7bf
--- /dev/null
+++ b/keyboards/teleport/numpad/rules.mk
@@ -0,0 +1,22 @@
+# 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 = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+
+LAYOUTS = numpad_5x4
diff --git a/keyboards/the_uni/keymaps/default/keymap.c b/keyboards/the_uni/keymaps/default/keymap.c
index 01674d948699..492c7a3c9422 100644
--- a/keyboards/the_uni/keymaps/default/keymap.c
+++ b/keyboards/the_uni/keymaps/default/keymap.c
@@ -19,59 +19,18 @@ along with this program. If not, see .
#include "keymap_steno.h"
enum uni_layers {
-/*
- _QWERTY,
- _CHOOSE,
-*/
- _PLOVER,
-};
-
-/*
-enum uni_keycodes {
- PLOVER,
- QWERTY
+ _PLOVER,
};
-*/
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/*
- [_QWERTY] = LAYOUT(
- KC_Q, KC_W, KC_E, KC_R, LT(_CHOOSE, KC_T), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
- KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
- KC_1, KC_C, KC_V, KC_N, KC_M, KC_2),
- [_CHOOSE] = LAYOUT(
- _______, _______, _______, _______, _______, PLOVER, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______),
-*/
- [_PLOVER] = LAYOUT(
- STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR ,
- STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR ,
- STN_N1, STN_A, STN_O, STN_E, STN_U, STN_N2),
+ [_PLOVER] = LAYOUT(
+ STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR ,
+ STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR ,
+ STN_N1, STN_A, STN_O, STN_E, STN_U, STN_N2),
};
-/*
-switch (keycode) {
- bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- case PLOVER:
- if (!record->event.pressed) {
- layer_on(_PLOVER);
- }
- return false;
- break;
- case QWERTY:
- if (!record->event.pressed) {
- layer_on(_QWERTY);
- }
- return false;
- break;
- }
- return true;
- }
-*/
-
void matrix_init_user() {
- steno_set_mode(STENO_MODE_GEMINI); // or STENO_MODE_BOLT
+ steno_set_mode(STENO_MODE_GEMINI); // or STENO_MODE_BOLT
}
diff --git a/keyboards/the_uni/keymaps/qwerty/keymap.c b/keyboards/the_uni/keymaps/qwerty/keymap.c
index 3eaac57f3dff..b2f03a361353 100644
--- a/keyboards/the_uni/keymaps/qwerty/keymap.c
+++ b/keyboards/the_uni/keymaps/qwerty/keymap.c
@@ -16,62 +16,15 @@ along with this program. If not, see .
*/
#include QMK_KEYBOARD_H
-//#include "keymap_steno.h"
enum uni_layers {
- _QWERTY,
-/*
- _CHOOSE,
- _PLOVER,
-*/
+ _QWERTY,
};
-/*
-enum uni_keycodes {
- PLOVER,
- QWERTY
-};
-*/
-
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_QWERTY] = LAYOUT(
- KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
- KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
- KC_1, KC_C, KC_V, KC_N, KC_M, KC_2),
-/*
-
- [_CHOOSE] = LAYOUT(
- _______, _______, _______, _______, _______, PLOVER, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______),
- [_PLOVER] = LAYOUT(
- STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR ,
- STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR ,
- STN_N1, STN_A, STN_O, STN_E, STN_U, STN_N2),
-*/
+ [_QWERTY] = LAYOUT(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_1, KC_C, KC_V, KC_N, KC_M, KC_2),
};
-
-/*
-switch (keycode) {
- bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- case PLOVER:
- if (!record->event.pressed) {
- layer_on(_PLOVER);
- }
- return false;
- break;
- case QWERTY:
- if (!record->event.pressed) {
- layer_on(_QWERTY);
- }
- return false;
- break;
- }
- return true;
- }
-*/
-
- void matrix_init_user() {
- //steno_set_mode(STENO_MODE_GEMINI); // or STENO_MODE_BOLT
- }
diff --git a/keyboards/the_uni/config.h b/keyboards/the_uni/pro_micro/config.h
similarity index 100%
rename from keyboards/the_uni/config.h
rename to keyboards/the_uni/pro_micro/config.h
diff --git a/keyboards/the_uni/pro_micro/pro_micro.c b/keyboards/the_uni/pro_micro/pro_micro.c
new file mode 100644
index 000000000000..3d5b3b23bb47
--- /dev/null
+++ b/keyboards/the_uni/pro_micro/pro_micro.c
@@ -0,0 +1,18 @@
+/*
+Copyright 2021 Peter C. Park
+
+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 "pro_micro.h"
diff --git a/keyboards/the_uni/the_uni.h b/keyboards/the_uni/pro_micro/pro_micro.h
similarity index 100%
rename from keyboards/the_uni/the_uni.h
rename to keyboards/the_uni/pro_micro/pro_micro.h
diff --git a/keyboards/the_uni/pro_micro/readme.md b/keyboards/the_uni/pro_micro/readme.md
new file mode 100644
index 000000000000..d6b623156162
--- /dev/null
+++ b/keyboards/the_uni/pro_micro/readme.md
@@ -0,0 +1,20 @@
+# The Uni
+
+- Keyboard Maintainer: [Peter](https://github.com/petercpark)
+- Link to Keyboard Files: [The_Uni](https://github.com/petercpark/The_Uni)
+- Hardware Supported:
+ - The Uni v1 and v2 (pro_micro)
+- Hardware Availability: [https://www.stenokeyboards.com](https://www.stenokeyboards.com)
+
+# Bootloader
+
+Enter the bootloader by:
+
+* **Physical reset button**: On the Uni v3, briefly press the button on the back of the PCB.
+* **Reset Pads**: Uni v1 and v2 have pins/pads you must short instead (RST to GND).
+
+Make examples for this keyboard (after setting up your build environment):
+
+ make the_uni/pro_micro: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/the_uni/pro_micro/rules.mk b/keyboards/the_uni/pro_micro/rules.mk
new file mode 100644
index 000000000000..1a595e91e422
--- /dev/null
+++ b/keyboards/the_uni/pro_micro/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+STENO_ENABLE = yes
diff --git a/keyboards/the_uni/readme.md b/keyboards/the_uni/readme.md
index 730ea2483d1a..cd1c99e43575 100644
--- a/keyboards/the_uni/readme.md
+++ b/keyboards/the_uni/readme.md
@@ -1,19 +1,31 @@
# The Uni
-![The Uni](https://raw.githubusercontent.com/petercpark/The_Uni/main/Pics/layout.png)
-![The Uni Closeup](https://github.com/petercpark/The_Uni/blob/main/Pics/close-up-uni.jpg?raw=true)
+
+![Layout](https://docs.stenokeyboards.com/images/uni-layout.png)
+![The Uni v2](https://github.com/petercpark/The_Uni/blob/main/Pics/uni%20v2/uni-v2.JPG?raw=true)
A compact unibody split ortholinear keyboard made specifically for stenography.
-- Keyboard Maintainer: [Peter C. Park](https://github.com/petercpark)
-- Link to Keyboard Files: [The_Uni](https://github.com/petercpark/The_Uni)
-- Hardware Supported: The Uni v1 and v2 (pro micro or equivalent)
-- Hardware Availability: [website](https://www.stenokeyboards.com)
+- Keyboard Maintainer: [Peter](https://github.com/petercpark)
+- Link to Keyboard Files (pro_micro version): [https://github.com/petercpark/The_Uni](https://github.com/petercpark/The_Uni)
+- Hardware Supported:
-Make example for this keyboard (after setting up your build environment):
+ - The Uni v1 and v2 (pro_micro)
+ - The Uni v3 (usb_c)
- make the_uni:default
+- Hardware Availability: [https://www.stenokeyboards.com](https://www.stenokeyboards.com)
-To enter the bootloader, short the rst and gnd pins with a conductive material such as a tweezer or a wire. Uni v2 will have reset pads next to the pro micro so you can short these pads to reset the pro micro.
+# Bootloader
+
+Enter the bootloader by:
+
+* **Physical reset button**: On the Uni v3, briefly press the button on the back of the PCB.
+* **Reset Pads**: Uni v1 and v2 have pins/pads you must short instead (RST to GND).
+
+Make examples for this keyboard (after setting up your build environment):
+
+ make the_uni/pro_micro:default
+
+ make the_uni/usb_c: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/the_uni/rules.mk b/keyboards/the_uni/rules.mk
deleted file mode 100644
index 36c52b6777ae..000000000000
--- a/keyboards/the_uni/rules.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# MCU name
-MCU = atmega32u4
-
-# Bootloader selection
-BOOTLOADER = atmel-dfu
-
-
-# Build Options
-# comment out to disable the options.
-#
-BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
-CONSOLE_ENABLE = no # Console for debug
-COMMAND_ENABLE = no # Commands for debug and configuration
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = no
-FORCE_NKRO = yes
-EXTRAKEY_ENABLE = no
-MOUSEKEY_ENABLE = no # Mouse keys
-STENO_ENABLE = yes
diff --git a/keyboards/the_uni/usb_c/config.h b/keyboards/the_uni/usb_c/config.h
new file mode 100644
index 000000000000..3110c0d82181
--- /dev/null
+++ b/keyboards/the_uni/usb_c/config.h
@@ -0,0 +1,52 @@
+/*
+Copyright 2021 Peter C. Park
+
+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 .
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x9000
+#define PRODUCT_ID 0x0001
+#define DEVICE_VER 0x0002
+#define MANUFACTURER stenokeyboards
+#define PRODUCT The Uni
+
+/* key matrix size */
+#define MATRIX_ROWS 3
+#define MATRIX_COLS 11
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { B7, D6, C7 }
+#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, D5, D3, D2, D1, D0, D4 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+
+/*force the nkro if it does not work*/
+#define FORCE_NKRO
diff --git a/keyboards/the_uni/usb_c/readme.md b/keyboards/the_uni/usb_c/readme.md
new file mode 100644
index 000000000000..23895db39fb6
--- /dev/null
+++ b/keyboards/the_uni/usb_c/readme.md
@@ -0,0 +1,20 @@
+# The Uni v3 Firmware
+
+- Keyboard Maintainer: [Peter](https://github.com/petercpark)
+- Link to Keyboard Files: Not Available
+- Hardware Supported:
+ - The Uni v3 (usb_c)
+- Hardware Availability: [https://www.stenokeyboards.com](https://www.stenokeyboards.com)
+
+## Bootloader
+
+Enter the bootloader by:
+
+* **Physical reset button**: On the Uni v3, briefly press the button on the back of the PCB.
+* **Reset Pads**: Uni v1 and v2 have pins/pads you must short instead (RST to GND).
+
+Make examples for this keyboard (after setting up your build environment):
+
+ make the_uni/usb_c: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/the_uni/usb_c/rules.mk b/keyboards/the_uni/usb_c/rules.mk
new file mode 100644
index 000000000000..e5d2f2e0422f
--- /dev/null
+++ b/keyboards/the_uni/usb_c/rules.mk
@@ -0,0 +1,22 @@
+# 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 = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+STENO_ENABLE = yes
diff --git a/keyboards/the_uni/the_uni.c b/keyboards/the_uni/usb_c/usb_c.c
similarity index 96%
rename from keyboards/the_uni/the_uni.c
rename to keyboards/the_uni/usb_c/usb_c.c
index b99b06830c63..e690d0a886d3 100644
--- a/keyboards/the_uni/the_uni.c
+++ b/keyboards/the_uni/usb_c/usb_c.c
@@ -15,4 +15,4 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#include "the_uni.h"
+#include "usb_c.h"
diff --git a/keyboards/the_uni/usb_c/usb_c.h b/keyboards/the_uni/usb_c/usb_c.h
new file mode 100644
index 000000000000..9371c3a241d6
--- /dev/null
+++ b/keyboards/the_uni/usb_c/usb_c.h
@@ -0,0 +1,30 @@
+/*
+Copyright 2021 Peter C. Park
+
+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 .
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, \
+ K202, K203, K204, K205, K206, K207 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110 }, \
+ { KC_NO, KC_NO, K202, K203, K204, K205, K206, K207, KC_NO, KC_NO, KC_NO } \
+}
diff --git a/keyboards/thevankeyboards/minivan/keymaps/danbee/rules.mk b/keyboards/thevankeyboards/minivan/keymaps/danbee/rules.mk
index b1434f75c84b..0a5b666e8557 100644
--- a/keyboards/thevankeyboards/minivan/keymaps/danbee/rules.mk
+++ b/keyboards/thevankeyboards/minivan/keymaps/danbee/rules.mk
@@ -1,2 +1 @@
MOUSEKEY_ENABLE = no
-KEYBOARD_LOCK_ENABLE = yes
diff --git a/keyboards/torn/keymaps/manna-harbour_miryoku/config.h b/keyboards/torn/keymaps/manna-harbour_miryoku/config.h
index 60ae65d5056b..89a67474ca4c 100644
--- a/keyboards/torn/keymaps/manna-harbour_miryoku/config.h
+++ b/keyboards/torn/keymaps/manna-harbour_miryoku/config.h
@@ -1,6 +1,6 @@
// Copyright 2019 Manna Harbour
// https://github.com/manna-harbour/miryoku
-// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*-
+// generated -*- buffer-read-only: t -*-
// 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 .
diff --git a/keyboards/torn/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/torn/keymaps/manna-harbour_miryoku/keymap.c
index 1520387e8887..7c5717a0fee0 100644
--- a/keyboards/torn/keymaps/manna-harbour_miryoku/keymap.c
+++ b/keyboards/torn/keymaps/manna-harbour_miryoku/keymap.c
@@ -1,5 +1,5 @@
// Copyright 2019 Manna Harbour
// https://github.com/manna-harbour/miryoku
-// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*-
+// generated -*- buffer-read-only: t -*-
// 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 .
diff --git a/keyboards/undead60m/info.json b/keyboards/undead60m/info.json
deleted file mode 100644
index 81f5a220afe2..000000000000
--- a/keyboards/undead60m/info.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "keyboard_name": "Undead-60M",
- "url": "",
- "maintainer": "qmk",
- "layouts": {
- "LAYOUT": {
- "layout": [
- {"label": "F1", "x": 0, "y": 0}, {"label": "F2", "x": 1, "y": 0}, {"label": "Esc", "x": 3.5, "y": 0}, {"label": "1", "x": 4.5, "y": 0}, {"label": "2", "x": 5.5, "y": 0}, {"label": "3", "x": 6.5, "y": 0}, {"label": "4", "x": 7.5, "y": 0}, {"label": "5", "x": 8.5, "y": 0}, {"label": "6", "x": 9.5, "y": 0}, {"label": "7", "x": 10.5, "y": 0}, {"label": "8", "x": 11.5, "y": 0}, {"label": "9", "x": 12.5, "y": 0}, {"label": "0", "x": 13.5, "y": 0}, {"label": "-", "x": 14.5, "y": 0}, {"label": "=", "x": 15.5, "y": 0}, {"label": "Backspace", "x": 16.5, "y": 0},
- {"label": "F2", "x": 0, "y": 1}, {"label": "F3", "x": 1, "y": 1}, {"label": "Tab", "x": 3.5, "y": 1}, {"label": "Q", "x": 5, "y": 1}, {"label": "W", "x": 6, "y": 1}, {"label": "E", "x": 7, "y": 1}, {"label": "R", "x": 8, "y": 1}, {"label": "T", "x": 9, "y": 1}, {"label": "Y", "x": 10, "y": 1}, {"label": "U", "x": 11, "y": 1}, {"label": "I", "x": 12, "y": 1}, {"label": "O", "x": 13, "y": 1}, {"label": "P", "x": 14, "y": 1}, {"label": "[", "x": 15, "y": 1}, {"label": "]", "x": 16, "y": 1}, {"label": "|", "x": 17, "y": 1},
- {"label": "F4", "x": 0, "y": 2}, {"label": "F5", "x": 1, "y": 2}, {"label": "Caps", "x": 3.5, "y": 2}, {"label": "A", "x": 5.25, "y": 2}, {"label": "S", "x": 6.25, "y": 2}, {"label": "D", "x": 7.25, "y": 2}, {"label": "F", "x": 8.25, "y": 2}, {"label": "G", "x": 9.25, "y": 2}, {"label": "H", "x": 10.25, "y": 2}, {"label": "J", "x": 11.25, "y": 2}, {"label": "K", "x": 12.25, "y": 2}, {"label": "L", "x": 13.25, "y": 2}, {"label": ";", "x": 14.25, "y": 2}, {"label": "'", "x": 15.25, "y": 2}, {"label": "Enter", "x": 16.25, "y": 2},
- {"label": "F6", "x": 0, "y": 3}, {"label": "F7", "x": 1, "y": 3}, {"label": "Shift", "x": 3.5, "y": 3}, {"label": "Z", "x": 5.5, "y": 3}, {"label": "X", "x": 6.5, "y": 3}, {"label": "C", "x": 7.5, "y": 3}, {"label": "V", "x": 8.5, "y": 3}, {"label": "B", "x": 9.5, "y": 3}, {"label": "N", "x": 10.5, "y": 3}, {"label": "M", "x": 11.5, "y": 3}, {"label": ",", "x": 12.5, "y": 3}, {"label": ".", "x": 13.5, "y": 3}, {"label": "/", "x": 14.5, "y": 3}, {"label": "Shift", "x": 15.5, "y": 3},
- {"label": "F1", "x": 0, "y": 4}, {"label": "F2", "x": 1, "y": 4}, {"label": "Ctrl", "x": 3.5, "y": 4}, {"label": "OS", "x": 4.75, "y": 4}, {"label": "Alt", "x": 6, "y": 4}, {"label": "Space", "x": 7.25, "y": 4}, {"label": "Alt", "x": 13.5, "y": 4}, {"label": "OS", "x": 14.75, "y": 4}, {"label": "Ctrl", "x": 16, "y": 4}, {"label": "Fn", "x": 17.25, "y": 4}
- ]
- }
- }
-}
diff --git a/keyboards/wolf/kuku65/config.h b/keyboards/wolf/kuku65/config.h
new file mode 100644
index 000000000000..7c5afed524d8
--- /dev/null
+++ b/keyboards/wolf/kuku65/config.h
@@ -0,0 +1,56 @@
+/*
+Copyright 2020
+
+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 .
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x5453 // TS - ToastyStoemp
+#define PRODUCT_ID 0x0052 // kuku65
+#define DEVICE_VER 0x0001 // Version 1
+#define MANUFACTURER ToastyStoemp
+#define PRODUCT kuku65
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+*/
+
+// Checked with Eagle Schematic
+#define MATRIX_ROW_PINS { B3, B2, B1, B0, B7 }
+#define MATRIX_COL_PINS { D0, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
diff --git a/keyboards/wolf/kuku65/info.json b/keyboards/wolf/kuku65/info.json
new file mode 100644
index 000000000000..1cd162aa3257
--- /dev/null
+++ b/keyboards/wolf/kuku65/info.json
@@ -0,0 +1,288 @@
+{
+ "keyboard_name": "kuku65",
+ "url": "",
+ "maintainer": "ToastyStoemp",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {
+ "x": 0,
+ "y": 0
+ },
+ {
+ "x": 1,
+ "y": 0
+ },
+ {
+ "x": 2,
+ "y": 0
+ },
+ {
+ "x": 3,
+ "y": 0
+ },
+ {
+ "x": 4,
+ "y": 0
+ },
+ {
+ "x": 5,
+ "y": 0
+ },
+ {
+ "x": 6,
+ "y": 0
+ },
+ {
+ "x": 7,
+ "y": 0
+ },
+ {
+ "x": 8,
+ "y": 0
+ },
+ {
+ "x": 9,
+ "y": 0
+ },
+ {
+ "x": 10,
+ "y": 0
+ },
+ {
+ "x": 11,
+ "y": 0
+ },
+ {
+ "x": 12,
+ "y": 0
+ },
+ {
+ "x": 13,
+ "y": 0,
+ "w": 2
+ },
+ {
+ "x": 0,
+ "y": 1,
+ "w": 1.5
+ },
+ {
+ "x": 1.5,
+ "y": 1
+ },
+ {
+ "x": 2.5,
+ "y": 1
+ },
+ {
+ "x": 3.5,
+ "y": 1
+ },
+ {
+ "x": 4.5,
+ "y": 1
+ },
+ {
+ "x": 5.5,
+ "y": 1
+ },
+ {
+ "x": 6.5,
+ "y": 1
+ },
+ {
+ "x": 7.5,
+ "y": 1
+ },
+ {
+ "x": 8.5,
+ "y": 1
+ },
+ {
+ "x": 9.5,
+ "y": 1
+ },
+ {
+ "x": 10.5,
+ "y": 1
+ },
+ {
+ "x": 11.5,
+ "y": 1
+ },
+ {
+ "x": 12.5,
+ "y": 1
+ },
+ {
+ "x": 13.5,
+ "y": 1,
+ "w": 1.5
+ },
+ {
+ "x": 15,
+ "y": 1
+ },
+ {
+ "x": 0,
+ "y": 2,
+ "w": 1.75
+ },
+ {
+ "x": 1.75,
+ "y": 2
+ },
+ {
+ "x": 2.75,
+ "y": 2
+ },
+ {
+ "x": 3.75,
+ "y": 2
+ },
+ {
+ "x": 4.75,
+ "y": 2
+ },
+ {
+ "x": 5.75,
+ "y": 2
+ },
+ {
+ "x": 6.75,
+ "y": 2
+ },
+ {
+ "x": 7.75,
+ "y": 2
+ },
+ {
+ "x": 8.75,
+ "y": 2
+ },
+ {
+ "x": 9.75,
+ "y": 2
+ },
+ {
+ "x": 10.75,
+ "y": 2
+ },
+ {
+ "x": 11.75,
+ "y": 2
+ },
+ {
+ "x": 12.75,
+ "y": 2,
+ "w": 2.25
+ },
+ {
+ "x": 15,
+ "y": 2
+ },
+ {
+ "x": 0,
+ "y": 3,
+ "w": 2.25
+ },
+ {
+ "x": 2.25,
+ "y": 3
+ },
+ {
+ "x": 3.25,
+ "y": 3
+ },
+ {
+ "x": 4.25,
+ "y": 3
+ },
+ {
+ "x": 5.25,
+ "y": 3
+ },
+ {
+ "x": 6.25,
+ "y": 3
+ },
+ {
+ "x": 7.25,
+ "y": 3
+ },
+ {
+ "x": 8.25,
+ "y": 3
+ },
+ {
+ "x": 9.25,
+ "y": 3
+ },
+ {
+ "x": 10.25,
+ "y": 3
+ },
+ {
+ "x": 11.25,
+ "y": 3
+ },
+ {
+ "x": 12.25,
+ "y": 3,
+ "w": 1.75
+ },
+ {
+ "x": 14,
+ "y": 3
+ },
+ {
+ "x": 15,
+ "y": 3
+ },
+ {
+ "x": 0,
+ "y": 4,
+ "w": 1.25
+ },
+ {
+ "x": 1.25,
+ "y": 4,
+ "w": 1.25
+ },
+ {
+ "x": 2.5,
+ "y": 4,
+ "w": 1.25
+ },
+ {
+ "x": 3.75,
+ "y": 4,
+ "w": 6.25
+ },
+ {
+ "x": 10,
+ "y": 4,
+ "w": 1.25
+ },
+ {
+ "x": 11.25,
+ "y": 4,
+ "w": 1.25
+ },
+ {
+ "x": 13,
+ "y": 4
+ },
+ {
+ "x": 14,
+ "y": 4
+ },
+ {
+ "x": 15,
+ "y": 4
+ }
+ ]
+ }
+ }
+}
diff --git a/keyboards/wolf/kuku65/keymaps/default/keymap.c b/keyboards/wolf/kuku65/keymaps/default/keymap.c
new file mode 100644
index 000000000000..11d9f26ff5df
--- /dev/null
+++ b/keyboards/wolf/kuku65/keymaps/default/keymap.c
@@ -0,0 +1,67 @@
+/*
+Copyright 2020
+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
+
+enum layers {
+ _LAYER0,
+ _LAYER1,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Hom│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │PgU│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │ Ctrl │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │PgD│
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │Ctrl│GUI │Alt │ │Alt │FN │ │ ← │ ↓ │ → │
+ * └────┴────┴────┴────────────────────────┴────┴────┴─┴───┴───┴───┘
+ */
+
+ [_LAYER0] = LAYOUT(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ * │ ` │ F1│ F2│ F3│ F4│ F5│ F6│ F7│ F8│ F9│F10│F11│F12│ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ │ │ │ │ │Res│ │ │ │ │ │ │ V+│ V0│
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │ │ │ │ │ │ │ │ PT│ V-│ NT│
+ * └────┴────┴────┴────────────────────────┴────┴────┴─┴───┴───┴───┘
+ */
+
+ [_LAYER1] = LAYOUT(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_AUDIO_VOL_UP, KC_AUDIO_MUTE,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK
+ )
+};
diff --git a/keyboards/wolf/kuku65/keymaps/via/keymap.c b/keyboards/wolf/kuku65/keymaps/via/keymap.c
new file mode 100644
index 000000000000..44618f676b79
--- /dev/null
+++ b/keyboards/wolf/kuku65/keymaps/via/keymap.c
@@ -0,0 +1,85 @@
+/*
+Copyright 2020
+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
+
+enum layers {
+ _LAYER0,
+ _LAYER1,
+ _LAYER2,
+ _LAYER3,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Hom│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │PgU│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │ Ctrl │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │PgD│
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │Ctrl│GUI │Alt │ │Alt │FN │ │ ← │ ↓ │ → │
+ * └────┴────┴────┴────────────────────────┴────┴────┴─┴───┴───┴───┘
+ */
+
+ [_LAYER0] = LAYOUT(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
+ * │ ` │ F1│ F2│ F3│ F4│ F5│ F6│ F7│ F8│ F9│F10│F11│F12│ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ │ │ │ │ │Res│ │ │ │ │ │ │ V+│ V0│
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │ │ │ │ │ │ │ │ PT│ V-│ NT│
+ * └────┴────┴────┴────────────────────────┴────┴────┴─┴───┴───┴───┘
+ */
+
+ [_LAYER1] = LAYOUT(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_AUDIO_VOL_UP, KC_AUDIO_MUTE,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK
+ ),
+
+ [_LAYER2] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [_LAYER3] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/wolf/kuku65/keymaps/via/rules.mk b/keyboards/wolf/kuku65/keymaps/via/rules.mk
new file mode 100644
index 000000000000..1e5b99807cb7
--- /dev/null
+++ b/keyboards/wolf/kuku65/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/wolf/kuku65/kuku65.c b/keyboards/wolf/kuku65/kuku65.c
new file mode 100644
index 000000000000..9c1be8cb83f7
--- /dev/null
+++ b/keyboards/wolf/kuku65/kuku65.c
@@ -0,0 +1,14 @@
+/*
+Copyright 2020
+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 "kuku65.h"
diff --git a/keyboards/wolf/kuku65/kuku65.h b/keyboards/wolf/kuku65/kuku65.h
new file mode 100644
index 000000000000..d8ad847274df
--- /dev/null
+++ b/keyboards/wolf/kuku65/kuku65.h
@@ -0,0 +1,32 @@
+/*
+Copyright 2020
+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 .
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+/* kuku65 Keymap Definitions */
+#define LAYOUT( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K42, K46, K49, K4A, K4C, K4D, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, KC_NO }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, K2E }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, K49, K4A, KC_NO, K4C, K4D, K4E } \
+}
diff --git a/keyboards/wolf/kuku65/readme.md b/keyboards/wolf/kuku65/readme.md
new file mode 100644
index 000000000000..34c4f3342281
--- /dev/null
+++ b/keyboards/wolf/kuku65/readme.md
@@ -0,0 +1,22 @@
+# kuku65
+
+The following is the QMK Firmware for the kuku65 Hotswap PCB.
+
+The PCB features:
+* QMK & VIA compatibility
+* Hotswap
+
+---
+
+* Keyboard Maintainer: [ToastyStoemp](https://github.com/ToastyStoemp)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make wolf/kuku65: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).
+
+## Bootloader Enter the bootloader in 3 ways:
+* **Bootmagic reset**: Hold down the key ESC key and plug in the keyboard (Top Left most switch)
+* **Physical reset button**: Briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the B key on layer 1 which is mapped to `RESET`
diff --git a/keyboards/wolf/kuku65/rules.mk b/keyboards/wolf/kuku65/rules.mk
new file mode 100644
index 000000000000..8fc7be19c1fa
--- /dev/null
+++ b/keyboards/wolf/kuku65/rules.mk
@@ -0,0 +1,24 @@
+# MCU name
+MCU = atmega32u4
+
+# Processor frequency
+F_CPU = 8000000
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wolf/ts60/config.h b/keyboards/wolf/ts60/config.h
new file mode 100644
index 000000000000..8074f6fc580a
--- /dev/null
+++ b/keyboards/wolf/ts60/config.h
@@ -0,0 +1,78 @@
+/*
+Copyright 2020
+
+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 .
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x5453 // TS - ToastyStoemp
+#define PRODUCT_ID 0x0050 // TS60
+#define DEVICE_VER 0x0001 // Version 1
+#define MANUFACTURER ToastyStoemp
+#define PRODUCT TS60
+
+/* key matrix size */
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 8
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+*/
+
+// Checked with Eagle Schematic
+#define MATRIX_ROW_PINS { D2, D3, D6, D4, F6, F7, F5, F0, F4, F1 }
+#define MATRIX_COL_PINS { D1, D5, C7, C6, B6, B5, B4, D7}
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+
+/* Define RGB Underglow */
+#define RGB_DI_PIN D0
+#define RGBLED_NUM 16
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLIGHT_SLEEP
+#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL
+
+/* Define Per Key Backlight */
+#define BACKLIGHT_PIN B7
+#define BACKLIGHT_LEVELS 6
+#define BACKLIGHT_DEFAULT_LEVEL 6
+
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
\ No newline at end of file
diff --git a/keyboards/wolf/ts60/info.json b/keyboards/wolf/ts60/info.json
new file mode 100644
index 000000000000..d7d3bfe49766
--- /dev/null
+++ b/keyboards/wolf/ts60/info.json
@@ -0,0 +1,273 @@
+{
+ "keyboard_name": "TS60",
+ "url": "https://www.vwolf.be/",
+ "maintainer": "ToastyStoemp",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":12, "y":3}, {"x":13, "y":3}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":2.25}, {"x":6, "y":4, "w":1.25}, {"x":7.25, "y":4, "w":2.75}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}]
+ },
+ "LAYOUT_60_ansi": {
+ "layout": [
+ {
+ "x": 0,
+ "y": 0
+ },
+ {
+ "x": 1,
+ "y": 0
+ },
+ {
+ "x": 2,
+ "y": 0
+ },
+ {
+ "x": 3,
+ "y": 0
+ },
+ {
+ "x": 4,
+ "y": 0
+ },
+ {
+ "x": 5,
+ "y": 0
+ },
+ {
+ "x": 6,
+ "y": 0
+ },
+ {
+ "x": 7,
+ "y": 0
+ },
+ {
+ "x": 8,
+ "y": 0
+ },
+ {
+ "x": 9,
+ "y": 0
+ },
+ {
+ "x": 10,
+ "y": 0
+ },
+ {
+ "x": 11,
+ "y": 0
+ },
+ {
+ "x": 12,
+ "y": 0
+ },
+ {
+ "x": 13,
+ "y": 0,
+ "w": 2
+ },
+ {
+ "x": 0,
+ "y": 1,
+ "w": 1.5
+ },
+ {
+ "x": 1.5,
+ "y": 1
+ },
+ {
+ "x": 2.5,
+ "y": 1
+ },
+ {
+ "x": 3.5,
+ "y": 1
+ },
+ {
+ "x": 4.5,
+ "y": 1
+ },
+ {
+ "x": 5.5,
+ "y": 1
+ },
+ {
+ "x": 6.5,
+ "y": 1
+ },
+ {
+ "x": 7.5,
+ "y": 1
+ },
+ {
+ "x": 8.5,
+ "y": 1
+ },
+ {
+ "x": 9.5,
+ "y": 1
+ },
+ {
+ "x": 10.5,
+ "y": 1
+ },
+ {
+ "x": 11.5,
+ "y": 1
+ },
+ {
+ "x": 12.5,
+ "y": 1
+ },
+ {
+ "x": 13.5,
+ "y": 1,
+ "w": 1.5
+ },
+ {
+ "x": 0,
+ "y": 2,
+ "w": 1.75
+ },
+ {
+ "x": 1.75,
+ "y": 2
+ },
+ {
+ "x": 2.75,
+ "y": 2
+ },
+ {
+ "x": 3.75,
+ "y": 2
+ },
+ {
+ "x": 4.75,
+ "y": 2
+ },
+ {
+ "x": 5.75,
+ "y": 2
+ },
+ {
+ "x": 6.75,
+ "y": 2
+ },
+ {
+ "x": 7.75,
+ "y": 2
+ },
+ {
+ "x": 8.75,
+ "y": 2
+ },
+ {
+ "x": 9.75,
+ "y": 2
+ },
+ {
+ "x": 10.75,
+ "y": 2
+ },
+ {
+ "x": 11.75,
+ "y": 2
+ },
+ {
+ "x": 12.75,
+ "y": 2,
+ "w": 2.25
+ },
+ {
+ "x": 0,
+ "y": 3,
+ "w": 2.25
+ },
+ {
+ "x": 2.25,
+ "y": 3
+ },
+ {
+ "x": 3.25,
+ "y": 3
+ },
+ {
+ "x": 4.25,
+ "y": 3
+ },
+ {
+ "x": 5.25,
+ "y": 3
+ },
+ {
+ "x": 6.25,
+ "y": 3
+ },
+ {
+ "x": 7.25,
+ "y": 3
+ },
+ {
+ "x": 8.25,
+ "y": 3
+ },
+ {
+ "x": 9.25,
+ "y": 3
+ },
+ {
+ "x": 10.25,
+ "y": 3
+ },
+ {
+ "x": 11.25,
+ "y": 3
+ },
+ {
+ "x": 12.25,
+ "y": 3,
+ "w": 2.75
+ },
+ {
+ "x": 0,
+ "y": 4,
+ "w": 1.25
+ },
+ {
+ "x": 1.25,
+ "y": 4,
+ "w": 1.25
+ },
+ {
+ "x": 2.5,
+ "y": 4,
+ "w": 1.25
+ },
+ {
+ "x": 3.75,
+ "y": 4,
+ "w": 6.25
+ },
+ {
+ "x": 10,
+ "y": 4,
+ "w": 1.25
+ },
+ {
+ "x": 11.25,
+ "y": 4,
+ "w": 1.25
+ },
+ {
+ "x": 12.5,
+ "y": 4,
+ "w": 1.25
+ },
+ {
+ "x": 13.75,
+ "y": 4,
+ "w": 1.25
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/keyboards/wolf/ts60/keymaps/default/keymap.c b/keyboards/wolf/ts60/keymaps/default/keymap.c
new file mode 100644
index 000000000000..fa2ac4696482
--- /dev/null
+++ b/keyboards/wolf/ts60/keymaps/default/keymap.c
@@ -0,0 +1,39 @@
+/*
+Copyright 2020
+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
+
+enum layers {
+ _LAYER0,
+ _LAYER1,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_LAYER0] = LAYOUT_60_ansi(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_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_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL
+ ),
+
+ [_LAYER1] = LAYOUT_60_ansi(
+ 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,
+ _______, RGB_TOG, KC_UP, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/wolf/ts60/keymaps/via/keymap.c b/keyboards/wolf/ts60/keymaps/via/keymap.c
new file mode 100644
index 000000000000..9d1b9aab625d
--- /dev/null
+++ b/keyboards/wolf/ts60/keymaps/via/keymap.c
@@ -0,0 +1,58 @@
+/*
+Copyright 2020
+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
+
+enum layers {
+ _LAYER0,
+ _LAYER1,
+ _LAYER2,
+ _LAYER3,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_LAYER0] = LAYOUT_60_ansi(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_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_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL
+ ),
+
+ [_LAYER1] = LAYOUT_60_ansi(
+ 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,
+ _______, RGB_TOG, KC_UP, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [_LAYER2] = LAYOUT_60_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [_LAYER3] = LAYOUT_60_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ )
+
+};
\ No newline at end of file
diff --git a/keyboards/wolf/ts60/keymaps/via/rules.mk b/keyboards/wolf/ts60/keymaps/via/rules.mk
new file mode 100644
index 000000000000..1e5b99807cb7
--- /dev/null
+++ b/keyboards/wolf/ts60/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/wolf/ts60/readme.md b/keyboards/wolf/ts60/readme.md
new file mode 100644
index 000000000000..6883617cb180
--- /dev/null
+++ b/keyboards/wolf/ts60/readme.md
@@ -0,0 +1,25 @@
+# Wolf - TS 60
+
+The following is the QMK Firmware for the TS60 PCB.
+
+The PCB features:
+* QMK & VIA compatibility
+* RGB underglow
+* Per-Key LEDs
+
+---
+
+* Keyboard Maintainer: [ToastyStoemp](https://github.com/ToastyStoemp)
+* Hardware Supported: TF60 ANSI SOLDER
+
+
+Make example for this keyboard (after setting up your build environment):
+
+ make wolf/ts60: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).
+
+## Bootloader Enter the bootloader in 3 ways:
+* **Bootmagic reset**: Hold down the key ESC key and plug in the keyboard (Top Left most switch)
+* **Physical reset button**: Briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the Enter key on layer 1 which is mapped to `RESET`
\ No newline at end of file
diff --git a/keyboards/wolf/ts60/rules.mk b/keyboards/wolf/ts60/rules.mk
new file mode 100644
index 000000000000..8edf0f7658d5
--- /dev/null
+++ b/keyboards/wolf/ts60/rules.mk
@@ -0,0 +1,27 @@
+# MCU name
+MCU = atmega32u4
+
+# Processor frequency
+F_CPU = 8000000
+
+# 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
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+
+LAYOUTS = 60_ansi
diff --git a/keyboards/wolf/ts60/ts60.c b/keyboards/wolf/ts60/ts60.c
new file mode 100644
index 000000000000..199c79c9469b
--- /dev/null
+++ b/keyboards/wolf/ts60/ts60.c
@@ -0,0 +1,14 @@
+/*
+Copyright 2020
+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 "ts60.h"
diff --git a/keyboards/wolf/ts60/ts60.h b/keyboards/wolf/ts60/ts60.h
new file mode 100644
index 000000000000..a402d954830f
--- /dev/null
+++ b/keyboards/wolf/ts60/ts60.h
@@ -0,0 +1,82 @@
+/*
+Copyright 2020
+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 .
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+/* LAYOUT
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │0e │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
+ * │10 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │20 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2d │
+ * ├───┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬───┬───┤
+ * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │3e │
+ * ├───┴┬──┴─┬─┴──┬┴───┴───┼───┴┬──┴───┴───┼───┼───┼───┼───┼───┤
+ * │40 │41 │42 │44 │46 │48 │4a │4b │4c │4d │4e │
+ * └────┴────┴────┴────────┴────┴──────────┴───┴───┴───┴───┴───┘
+*/
+#define LAYOUT( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0a, K0b, K0c, K0d, K0e, \
+ K10, K12, K13, K14, K15, K16, K17, K18, K19, K1a, K1b, K1c, K1d, K1e, \
+ K20, K22, K23, K24, K25, K26, K27, K28, K29, K2a, K2b, K2c, K2d, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3a, K3b, K3c, K3d, K3e, \
+ K40, K41, K42, K44, K46, K48, K4a, K4b, K4c, K4d, K4e \
+) { \
+ { K00, K02, K04, K06, K08, K0a, K0c, K0d }, \
+ { K01, K03, K05, K07, K09, K0b, KC_NO, K0e }, \
+ { K10, K12, K14, K16, K18, K1a, K1c, K1d }, \
+ { KC_NO, K13, K15, K17, K19, K1b, KC_NO, K1e }, \
+ { K20, K22, K24, K26, K28, K2a, K2c, K2d }, \
+ { KC_NO, K23, K25, K27, K29, K2b, KC_NO, K2e }, \
+ { K30, K32, K34, K36, K38, K3a, K3c, K3d }, \
+ { K31, K33, K35, K37, K39, K3b, KC_NO, K3e }, \
+ { K40, K42, K44, K46, K48, K4a, K4c, K4d }, \
+ { K41, KC_NO, KC_NO, KC_NO, KC_NO, K4b, KC_NO, K4e } \
+}
+
+/* LAYOUT_60_ansi
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0e │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │10 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │1e │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │20 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2d │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
+ * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3d │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │40 │41 │42 │46 │4a │4b │4d │4e │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+ #define LAYOUT_60_ansi( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0a, K0b, K0c, K0e, \
+ K10, K12, K13, K14, K15, K16, K17, K18, K19, K1a, K1b, K1c, K1d, K1e, \
+ K20, K22, K23, K24, K25, K26, K27, K28, K29, K2a, K2b, K2c, K2d, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3a, K3b, K3d, \
+ K40, K41, K42, K46, K4a, K4b, K4d, K4e \
+ ) { \
+ { K00, K02, K04, K06, K08, K0a, K0c, K0e }, \
+ { K01, K03, K05, K07, K09, K0b, KC_NO, KC_NO }, \
+ { K10, K12, K14, K16, K18, K1a, K1c, K1d }, \
+ { KC_NO, K13, K15, K17, K19, K1b, KC_NO, K1e }, \
+ { K20, K22, K24, K26, K28, K2a, K2c, KC_NO }, \
+ { KC_NO, K23, K25, K27, K29, K2b, KC_NO, K2d }, \
+ { K30, K32, K34, K36, K38, K3a, KC_NO, K3d }, \
+ { KC_NO, K33, K35, K37, K39, K3b, KC_NO, KC_NO }, \
+ { K40, K42, KC_NO, K46, KC_NO, K4a, KC_NO, K4d }, \
+ { K41, KC_NO, KC_NO, KC_NO, KC_NO, K4b, KC_NO, K4e } \
+}
+
diff --git a/keyboards/work_louder/work_board/keymaps/drashna/config.h b/keyboards/work_louder/work_board/keymaps/drashna/config.h
new file mode 100644
index 000000000000..5ea4dc7e4836
--- /dev/null
+++ b/keyboards/work_louder/work_board/keymaps/drashna/config.h
@@ -0,0 +1,17 @@
+/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna)
+ *
+ * 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 .
+ */
+
+#pragma once
diff --git a/keyboards/work_louder/work_board/keymaps/drashna/keymap.c b/keyboards/work_louder/work_board/keymaps/drashna/keymap.c
new file mode 100644
index 000000000000..fb86275da910
--- /dev/null
+++ b/keyboards/work_louder/work_board/keymaps/drashna/keymap.c
@@ -0,0 +1,217 @@
+/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna)
+ *
+ * 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 "drashna.h"
+
+#define PLNK_1 SP_LWER
+#define PLNK_2 BK_LWER
+#define PLNK_3 DL_RAIS
+#define PLNK_4 ET_RAIS
+
+/*
+ * The `LAYOUT_ortho_4x12_base` macro is a template to allow the use of identical
+ * modifiers for the default layouts (eg QWERTY, Colemak, Dvorak, etc), so
+ * that there is no need to set them up for each layout, and modify all of
+ * them if I want to change them. This helps to keep consistency and ease
+ * of use. K## is a placeholder to pass through the individual keycodes
+ */
+// clang-format off
+#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
+#define LAYOUT_base( \
+ K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
+ K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
+ K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
+ ) \
+ LAYOUT_wrapper( \
+ KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_DEL, KC_MUTE, \
+ LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(K1B), \
+ KC_MLSF, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), KC_ENT, \
+ OS_LSFT, OS_LCTL, OS_LALT, OS_LGUI, PLNK_1, PLNK_2, PLNK_3, PLNK_4, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+ )
+#define LAYOUT_base_wrapper(...) LAYOUT_base(__VA_ARGS__)
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_DEFAULT_LAYER_1] = LAYOUT_base_wrapper(
+ _________________QWERTY_L1_________________, _________________QWERTY_R1_________________,
+ _________________QWERTY_L2_________________, _________________QWERTY_R2_________________,
+ _________________QWERTY_L3_________________, _________________QWERTY_R3_________________
+ ),
+
+ [_DEFAULT_LAYER_2] = LAYOUT_base_wrapper(
+ ______________COLEMAK_MOD_DH_L1____________, ______________COLEMAK_MOD_DH_R1____________,
+ ______________COLEMAK_MOD_DH_L2____________, ______________COLEMAK_MOD_DH_R2____________,
+ ______________COLEMAK_MOD_DH_L3____________, ______________COLEMAK_MOD_DH_R3____________
+ ),
+ [_DEFAULT_LAYER_3] = LAYOUT_base_wrapper(
+ _________________COLEMAK_L1________________, _________________COLEMAK_R1________________,
+ _________________COLEMAK_L2________________, _________________COLEMAK_R2________________,
+ _________________COLEMAK_L3________________, _________________COLEMAK_R3________________
+ ),
+
+ [_DEFAULT_LAYER_4] = LAYOUT_base_wrapper(
+ _________________DVORAK_L1_________________, _________________DVORAK_R1_________________,
+ _________________DVORAK_L2_________________, _________________DVORAK_R2_________________,
+ _________________DVORAK_L3_________________, _________________DVORAK_R3_________________
+ ),
+
+ [_LOWER] = LAYOUT_wrapper(
+ KC_TILD, _________________LOWER_L1__________________, _________________LOWER_R1__________________, KC_BSPC, _______,
+ KC_DEL, _________________LOWER_L2__________________, _________________LOWER_R2__________________, KC_PIPE,
+ _______, _________________LOWER_L3__________________, _________________LOWER_R3__________________, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [_RAISE] = LAYOUT_wrapper(
+ KC_GRV, _________________RAISE_L1__________________, _________________RAISE_R1__________________, KC_BSPC, _______,
+ KC_DEL, _________________RAISE_L2__________________, _________________RAISE_R2__________________, KC_BSLS,
+ _______, _________________RAISE_L3__________________, _________________RAISE_R3__________________, _______,
+ _______, _______, _______, _______, _______, _______, _______, _________________RAISE_R3__________________
+ ),
+
+ [_ADJUST] = LAYOUT_wrapper(
+ KC_MAKE, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, KC_RST, _______,
+ VRSN, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, EEP_RST,
+ _______, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, RGB_IDL,
+ KEYLOCK, _______, _______, _______, _______, KC_NUKE, _______, _______, _______, _______, _______, TG_MODS
+ )
+
+};
+
+#ifdef ENCODER_ENABLE
+# ifdef ENCODER_MAP_ENABLE
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_DEFAULT_LAYER_1] = { { KC_DOWN, KC_UP } },
+ [_DEFAULT_LAYER_2] = { { _______, _______ } },
+ [_DEFAULT_LAYER_3] = { { _______, _______ } },
+ [_DEFAULT_LAYER_4] = { { _______, _______ } },
+ [_GAMEPAD] = { { _______, _______ } },
+ [_DIABLO] = { { _______, _______ } },
+ [_MOUSE] = { { KC_WH_D, KC_WH_U } },
+ [_MEDIA] = { { _______, _______ } },
+ [_RAISE] = { { KC_VOLD, KC_VOLU } },
+ [_LOWER] = { { RGB_MOD, RGB_RMOD} },
+ [_ADJUST] = { { CK_DOWN, CK_UP } },
+};
+// clang-format on
+# else
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ switch (get_highest_layer(layer_state)) {
+ case _RAISE:
+ clockwise ? rgblight_step() : rgblight_step_reverse();
+ break;
+ case _LOWER:
+ clockwise ? rgb_matrix_step() : rgb_matrix_step_reverse();
+ break;
+ default:
+ clockwise ? tap_code(KC_VOLD) : tap_code(KC_VOLU);
+ break;
+ }
+ return false;
+}
+# endif // ENCODER_ENABLE
+
+#endif
+
+void rgb_matrix_indicators_user(void) {}
+
+void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
+ uint8_t this_mod = get_mods();
+ uint8_t this_led = host_keyboard_leds();
+ uint8_t this_osm = get_oneshot_mods();
+#define THUMB_LED 6
+#define RGB_MATRIX_INDICATOR_SET_COLOR_wrapper(...) RGB_MATRIX_INDICATOR_SET_COLOR(__VA_ARGS__)
+ if (!userspace_config.rgb_layer_change) {
+ switch (get_highest_layer(layer_state | default_layer_state)) {
+ case _GAMEPAD:
+ rgb_matrix_layer_helper(HSV_ORANGE, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
+ break;
+ case _DIABLO:
+ rgb_matrix_layer_helper(HSV_RED, 1, rgb_matrix_config.speed * 8, LED_FLAG_MODIFIER, led_min, led_max);
+ break;
+ case _RAISE:
+ rgb_matrix_layer_helper(HSV_YELLOW, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
+ break;
+ case _LOWER:
+ rgb_matrix_layer_helper(HSV_GREEN, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
+ break;
+ case _ADJUST:
+ rgb_matrix_layer_helper(HSV_RED, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
+ break;
+ case _DEFAULT_LAYER_1:
+ rgb_matrix_layer_helper(DEFAULT_LAYER_1_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
+ break;
+ case _DEFAULT_LAYER_2:
+ rgb_matrix_layer_helper(DEFAULT_LAYER_2_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
+ break;
+ case _DEFAULT_LAYER_3:
+ rgb_matrix_layer_helper(DEFAULT_LAYER_3_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
+ break;
+ case _DEFAULT_LAYER_4:
+ rgb_matrix_layer_helper(DEFAULT_LAYER_4_HSV, 0, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
+ break;
+ }
+ }
+
+ extern bool host_driver_disabled;
+ if (host_driver_disabled) {
+ RGB_MATRIX_INDICATOR_SET_COLOR_wrapper(THUMB_LED, RGB_OFF);
+ } else {
+ switch (get_highest_layer(default_layer_state)) {
+ case _DEFAULT_LAYER_1:
+ RGB_MATRIX_INDICATOR_SET_COLOR_wrapper(THUMB_LED, DEFAULT_LAYER_1_RGB);
+ break;
+ case _DEFAULT_LAYER_2:
+ RGB_MATRIX_INDICATOR_SET_COLOR_wrapper(THUMB_LED, DEFAULT_LAYER_2_RGB);
+ break;
+ case _DEFAULT_LAYER_3:
+ RGB_MATRIX_INDICATOR_SET_COLOR_wrapper(THUMB_LED, DEFAULT_LAYER_3_RGB);
+ break;
+ case _DEFAULT_LAYER_4:
+ RGB_MATRIX_INDICATOR_SET_COLOR_wrapper(THUMB_LED, DEFAULT_LAYER_4_RGB);
+ break;
+ }
+ }
+
+ if ((this_mod | this_osm) & MOD_MASK_SHIFT || this_led & (1 << USB_LED_CAPS_LOCK)) {
+ if (!layer_state_is(_ADJUST)) {
+ RGB_MATRIX_INDICATOR_SET_COLOR(12, 0x00, 0xFF, 0x00);
+ RGB_MATRIX_INDICATOR_SET_COLOR(13, 0x00, 0xFF, 0x00);
+ }
+ RGB_MATRIX_INDICATOR_SET_COLOR(24, 0x00, 0xFF, 0x00);
+ }
+ if ((this_mod | this_osm) & MOD_MASK_CTRL) {
+ RGB_MATRIX_INDICATOR_SET_COLOR(11, 0xFF, 0x00, 0x00);
+ RGB_MATRIX_INDICATOR_SET_COLOR(23, 0xFF, 0x00, 0x00);
+ RGB_MATRIX_INDICATOR_SET_COLOR(14, 0xFF, 0x00, 0x00);
+ }
+ if ((this_mod | this_osm) & MOD_MASK_GUI) {
+ RGB_MATRIX_INDICATOR_SET_COLOR(9, 0xFF, 0xD9, 0x00);
+ }
+ if ((this_mod | this_osm) & MOD_MASK_ALT) {
+ RGB_MATRIX_INDICATOR_SET_COLOR(10, 0x00, 0x00, 0xFF);
+ RGB_MATRIX_INDICATOR_SET_COLOR(25, 0x00, 0x00, 0xFF);
+ RGB_MATRIX_INDICATOR_SET_COLOR(36, 0x00, 0x00, 0xFF);
+ }
+ if (layer_state_is(_LOWER)) {
+ RGB_MATRIX_INDICATOR_SET_COLOR(7, 0x00, 0xFF, 0x00);
+ RGB_MATRIX_INDICATOR_SET_COLOR(8, 0x00, 0xFF, 0x00);
+ }
+ if (layer_state_is(_RAISE)) {
+ RGB_MATRIX_INDICATOR_SET_COLOR(4, 0xFF, 0xFF, 0x00);
+ RGB_MATRIX_INDICATOR_SET_COLOR(5, 0xFF, 0xFF, 0x00);
+ }
+}
diff --git a/keyboards/work_louder/work_board/keymaps/drashna/rules.mk b/keyboards/work_louder/work_board/keymaps/drashna/rules.mk
new file mode 100644
index 000000000000..6a4558aa0e09
--- /dev/null
+++ b/keyboards/work_louder/work_board/keymaps/drashna/rules.mk
@@ -0,0 +1,6 @@
+BOOTMAGIC_ENABLE = lite
+EXTRAKEY_ENABLE = yes
+TAP_DANCE_ENABLE = no
+NKRO_ENABLE = yes
+RGBLIGHT_STARTUP_ANIMATION = yes
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/wuque/ikki68_aurora/readme.md b/keyboards/wuque/ikki68_aurora/readme.md
index 298d7e00ed95..98674d0d728f 100644
--- a/keyboards/wuque/ikki68_aurora/readme.md
+++ b/keyboards/wuque/ikki68_aurora/readme.md
@@ -19,7 +19,7 @@ Flashing example for this keyboard:
To reset the board into bootloader mode, do one of the following:
-* Tap the Reset switch mounted on the PCB
+* Under the **space1** key short the pins on the PCB as shown [here]( https://media.discordapp.net/attachments/768892137205923850/862663262180999218/image0.jpg?width=2520&height=910)
* In the case of the default keymap, use the key combination Fn + PageUp
* Hold the Esc key while connecting the USB cable (also erases persistent settings)
diff --git a/keyboards/wuque/mammoth75x/config.h b/keyboards/wuque/mammoth75x/config.h
new file mode 100644
index 000000000000..019a70f50d97
--- /dev/null
+++ b/keyboards/wuque/mammoth75x/config.h
@@ -0,0 +1,57 @@
+/*
+Copyright 2021 wuquestudio
+
+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 .
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xA06B
+#define PRODUCT_ID 0x0004
+#define DEVICE_VER 0x0001
+#define MANUFACTURER wuque studio
+#define PRODUCT mammoth75x
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 16
+
+#define MATRIX_ROW_PINS { B0, C7, D2, F7, D1, D0 }
+#define MATRIX_COL_PINS { D3, D5, D4, D6, D7, B4, B5, E6, F0, F1, F4, F5, F6, C6, B7, B3 }
+
+#define DIODE_DIRECTION COL2ROW
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* Enable encoder */
+#define ENCODERS_PAD_A { B2 }
+#define ENCODERS_PAD_B { B1 }
+
+#define ENCODERS 1
+// Note: array is { col, row )
+#define ENCODERS_CW_KEY { { 5, 5 } }
+#define ENCODERS_CCW_KEY { { 3, 5 } }
+
+#define LED_CAPS_LOCK_PIN B6
+#define LED_PIN_ON_STATE 0
diff --git a/keyboards/wuque/mammoth75x/info.json b/keyboards/wuque/mammoth75x/info.json
new file mode 100644
index 000000000000..4e65f8353729
--- /dev/null
+++ b/keyboards/wuque/mammoth75x/info.json
@@ -0,0 +1,571 @@
+{
+ "keyboard_name": "mammoth75x",
+ "url": "https://shop.wuquestudio.com/",
+ "maintainer": "spbgzh",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ { "label": "Esc", "x": 0, "y": 0 },
+ { "label": "F1", "x": 1.5, "y": 0 },
+ { "label": "F2", "x": 2.5, "y": 0 },
+ { "label": "F3", "x": 3.5, "y": 0 },
+ { "label": "F4", "x": 4.5, "y": 0 },
+ { "label": "F5", "x": 6, "y": 0 },
+ { "label": "F6", "x": 7, "y": 0 },
+ { "label": "F7", "x": 8, "y": 0 },
+ { "label": "F8", "x": 9, "y": 0 },
+ { "label": "F9", "x": 10.5, "y": 0 },
+ { "label": "F10", "x": 11.5, "y": 0 },
+ { "label": "F11", "x": 12.5, "y": 0 },
+ { "label": "F12", "x": 13.5, "y": 0 },
+ { "label": "Delete", "x": 15, "y": 0 },
+ { "label": "EncoderRotateL", "x": 15.25, "y": 1.25, "w": 0.25 },
+ { "label": "EncoderClick", "x": 15.75, "y": 1.25 },
+ { "label": "EncoderRotateR", "x": 16.75, "y": 1.25, "w": 0.25 },
+
+ { "label": "~", "x": 0, "y": 1.25 },
+ { "label": "1", "x": 1, "y": 1.25 },
+ { "label": "2", "x": 2, "y": 1.25 },
+ { "label": "3", "x": 3, "y": 1.25 },
+ { "label": "4", "x": 4, "y": 1.25 },
+ { "label": "5", "x": 5, "y": 1.25 },
+ { "label": "6", "x": 6, "y": 1.25 },
+ { "label": "7", "x": 7, "y": 1.25 },
+ { "label": "8", "x": 8, "y": 1.25 },
+ { "label": "9", "x": 9, "y": 1.25 },
+ { "label": "0", "x": 10, "y": 1.25 },
+ { "label": "-", "x": 11, "y": 1.25 },
+ { "label": "=", "x": 12, "y": 1.25 },
+ { "label": "Backspace", "x": 13, "y": 1.25 },
+
+ { "label": "Tab", "x": 0, "y": 2.25, "w": 1.5 },
+ { "label": "Q", "x": 1.5, "y": 2.25 },
+ { "label": "W", "x": 2.5, "y": 2.25 },
+ { "label": "E", "x": 3.5, "y": 2.25 },
+ { "label": "R", "x": 4.5, "y": 2.25 },
+ { "label": "T", "x": 5.5, "y": 2.25 },
+ { "label": "Y", "x": 6.5, "y": 2.25 },
+ { "label": "U", "x": 7.5, "y": 2.25 },
+ { "label": "I", "x": 8.5, "y": 2.25 },
+ { "label": "O", "x": 9.5, "y": 2.25 },
+ { "label": "P", "x": 10.5, "y": 2.25 },
+ { "label": "[", "x": 11.5, "y": 2.25 },
+ { "label": "]", "x": 12.5, "y": 2.25 },
+ { "label": "\\", "x": 13.5,"y": 2.25, "w": 1.5 },
+ { "label": "Home", "x": 15.25, "y": 2.25 },
+ { "label": "PageUp", "x": 16.25, "y": 2.25 },
+
+ { "label": "Caps Lock", "x": 0, "y": 3.25, "w": 1.75 },
+ { "label": "A", "x": 1.75, "y": 3.25 },
+ { "label": "S", "x": 2.75, "y": 3.25 },
+ { "label": "D", "x": 3.75, "y": 3.25 },
+ { "label": "F", "x": 4.75, "y": 3.25 },
+ { "label": "G", "x": 5.75, "y": 3.25 },
+ { "label": "H", "x": 6.75, "y": 3.25 },
+ { "label": "J", "x": 7.75, "y": 3.25 },
+ { "label": "K", "x": 8.75, "y": 3.25 },
+ { "label": "L", "x": 9.75, "y": 3.25 },
+ { "label": ";", "x": 10.75, "y": 3.25 },
+ { "label": "'", "x": 11.75, "y": 3.25 },
+ { "label": "Enter", "x": 12.75, "y": 3.25, "w": 2.25 },
+ { "label": "Backspace1", "x": 14, "y": 1.25 },
+ { "label": "End", "x": 15.25, "y": 3.25 },
+ { "label": "PageDown", "x": 16.25, "y": 3.25 },
+
+ { "label": "Shift1", "x": 0, "y": 4.25, "w": 1.25 },
+ { "label": "Shift2", "x": 1.25, "y": 4.25 },
+ { "label": "Z", "x": 2.25, "y": 4.25 },
+ { "label": "X", "x": 3.25, "y": 4.25 },
+ { "label": "C", "x": 4.25, "y": 4.25 },
+ { "label": "V", "x": 5.25, "y": 4.25 },
+ { "label": "B", "x": 6.25, "y": 4.25 },
+ { "label": "N", "x": 7.25, "y": 4.25 },
+ { "label": "M", "x": 8.25, "y": 4.25 },
+ { "label": ",", "x": 9.25, "y": 4.25 },
+ { "label": ".", "x": 10.25, "y": 4.25 },
+ { "label": "/", "x": 11.25, "y": 4.25 },
+ { "label": "Shift1", "x": 12.25, "y": 4.25, "w": 1.75 },
+ { "label": "Shift2", "x": 14, "y": 4.25 },
+ { "label": "\u2191", "x": 15.25, "y": 4.25 },
+
+ { "label": "Ctrl", "x": 0, "y": 5.25, "w": 1.25 },
+ { "label": "Win", "x": 1.25, "y": 5.25, "w": 1.25 },
+ { "label": "Alt", "x": 2.5, "y": 5.25, "w": 1.25 },
+ { "label": "Space","x": 3.75, "y": 5.25, "w": 2.25 },
+ { "label": "Space","x": 6, "y": 5.25, "w": 1.25 },
+ { "label": "Space","x": 7.25, "y": 5.25, "w": 2.75 },
+ { "label": "Alt", "x": 10, "y": 5.25, "w": 1.25 },
+ { "label": "Ctrl", "x": 11.25, "y": 5.25, "w": 1.25 },
+ { "label": "Menu", "x": 12.5, "y": 5.25, "w": 1.25 },
+ { "label": "\u2190", "x": 14.25, "y": 5.25 },
+ { "label": "\u2193", "x": 15.25, "y": 5.25 },
+ { "label": "\u2192", "x": 16.25, "y": 5.25 }
+ ]
+ },
+ "LAYOUT_75_ansi": {
+ "layout": [
+ { "label": "Esc", "x": 0, "y": 0 },
+ { "label": "F1", "x": 1.5, "y": 0 },
+ { "label": "F2", "x": 2.5, "y": 0 },
+ { "label": "F3", "x": 3.5, "y": 0 },
+ { "label": "F4", "x": 4.5, "y": 0 },
+ { "label": "F5", "x": 6, "y": 0 },
+ { "label": "F6", "x": 7, "y": 0 },
+ { "label": "F7", "x": 8, "y": 0 },
+ { "label": "F8", "x": 9, "y": 0 },
+ { "label": "F9", "x": 10.5, "y": 0 },
+ { "label": "F10", "x": 11.5, "y": 0 },
+ { "label": "F11", "x": 12.5, "y": 0 },
+ { "label": "F12", "x": 13.5, "y": 0 },
+ { "label": "Delete", "x": 15, "y": 0 },
+ { "label": "EncoderClick", "x": 15.75, "y": 1.25 },
+
+ { "label": "~", "x": 0, "y": 1.25 },
+ { "label": "1", "x": 1, "y": 1.25 },
+ { "label": "2", "x": 2, "y": 1.25 },
+ { "label": "3", "x": 3, "y": 1.25 },
+ { "label": "4", "x": 4, "y": 1.25 },
+ { "label": "5", "x": 5, "y": 1.25 },
+ { "label": "6", "x": 6, "y": 1.25 },
+ { "label": "7", "x": 7, "y": 1.25 },
+ { "label": "8", "x": 8, "y": 1.25 },
+ { "label": "9", "x": 9, "y": 1.25 },
+ { "label": "0", "x": 10, "y": 1.25 },
+ { "label": "-", "x": 11, "y": 1.25 },
+ { "label": "=", "x": 12, "y": 1.25 },
+ { "label": "Backspace", "x": 13, "y": 1.25, "w":2},
+
+ { "label": "Tab", "x": 0, "y": 2.25, "w": 1.5 },
+ { "label": "Q", "x": 1.5, "y": 2.25 },
+ { "label": "W", "x": 2.5, "y": 2.25 },
+ { "label": "E", "x": 3.5, "y": 2.25 },
+ { "label": "R", "x": 4.5, "y": 2.25 },
+ { "label": "T", "x": 5.5, "y": 2.25 },
+ { "label": "Y", "x": 6.5, "y": 2.25 },
+ { "label": "U", "x": 7.5, "y": 2.25 },
+ { "label": "I", "x": 8.5, "y": 2.25 },
+ { "label": "O", "x": 9.5, "y": 2.25 },
+ { "label": "P", "x": 10.5, "y": 2.25 },
+ { "label": "[", "x": 11.5, "y": 2.25 },
+ { "label": "]", "x": 12.5, "y": 2.25 },
+ { "label": "\\", "x": 13.5,"y": 2.25, "w": 1.5 },
+ { "label": "Home", "x": 15.25, "y": 2.25 },
+ { "label": "PageUp", "x": 16.25, "y": 2.25 },
+
+ { "label": "Caps Lock", "x": 0, "y": 3.25, "w": 1.75 },
+ { "label": "A", "x": 1.75, "y": 3.25 },
+ { "label": "S", "x": 2.75, "y": 3.25 },
+ { "label": "D", "x": 3.75, "y": 3.25 },
+ { "label": "F", "x": 4.75, "y": 3.25 },
+ { "label": "G", "x": 5.75, "y": 3.25 },
+ { "label": "H", "x": 6.75, "y": 3.25 },
+ { "label": "J", "x": 7.75, "y": 3.25 },
+ { "label": "K", "x": 8.75, "y": 3.25 },
+ { "label": "L", "x": 9.75, "y": 3.25 },
+ { "label": ";", "x": 10.75, "y": 3.25 },
+ { "label": "'", "x": 11.75, "y": 3.25 },
+ { "label": "Enter", "x": 12.75, "y": 3.25, "w": 2.25 },
+ { "label": "End", "x": 15.25, "y": 3.25 },
+ { "label": "PageDown", "x": 16.25, "y": 3.25 },
+
+ { "label": "Shift", "x": 0, "y": 4.25, "w": 2.25 },
+ { "label": "Z", "x": 2.25, "y": 4.25 },
+ { "label": "X", "x": 3.25, "y": 4.25 },
+ { "label": "C", "x": 4.25, "y": 4.25 },
+ { "label": "V", "x": 5.25, "y": 4.25 },
+ { "label": "B", "x": 6.25, "y": 4.25 },
+ { "label": "N", "x": 7.25, "y": 4.25 },
+ { "label": "M", "x": 8.25, "y": 4.25 },
+ { "label": ",", "x": 9.25, "y": 4.25 },
+ { "label": ".", "x": 10.25, "y": 4.25 },
+ { "label": "/", "x": 11.25, "y": 4.25 },
+ { "label": "Shift", "x": 12.25, "y": 4.25, "w": 2.75 },
+ { "label": "\u2191", "x": 15.25, "y": 4.25 },
+
+ { "label": "Ctrl", "x": 0, "y": 5.25, "w": 1.25 },
+ { "label": "Win", "x": 1.25, "y": 5.25, "w": 1.25 },
+ { "label": "Alt", "x": 2.5, "y": 5.25, "w": 1.25 },
+ { "label": "Space","x": 3.75, "y": 5.25, "w": 6.25 },
+ { "label": "Alt", "x": 10, "y": 5.25, "w": 1.25 },
+ { "label": "Ctrl", "x": 11.25, "y": 5.25, "w": 1.25 },
+ { "label": "Menu", "x": 12.5, "y": 5.25, "w": 1.25 },
+ { "label": "\u2190", "x": 14.25, "y": 5.25 },
+ { "label": "\u2193", "x": 15.25, "y": 5.25 },
+ { "label": "\u2192", "x": 16.25, "y": 5.25 }
+ ]
+ },
+ "LAYOUT_75_ansi_split_lshift": {
+ "layout": [
+ { "label": "Esc", "x": 0, "y": 0 },
+ { "label": "F1", "x": 1.5, "y": 0 },
+ { "label": "F2", "x": 2.5, "y": 0 },
+ { "label": "F3", "x": 3.5, "y": 0 },
+ { "label": "F4", "x": 4.5, "y": 0 },
+ { "label": "F5", "x": 6, "y": 0 },
+ { "label": "F6", "x": 7, "y": 0 },
+ { "label": "F7", "x": 8, "y": 0 },
+ { "label": "F8", "x": 9, "y": 0 },
+ { "label": "F9", "x": 10.5, "y": 0 },
+ { "label": "F10", "x": 11.5, "y": 0 },
+ { "label": "F11", "x": 12.5, "y": 0 },
+ { "label": "F12", "x": 13.5, "y": 0 },
+ { "label": "Delete", "x": 15, "y": 0 },
+ { "label": "EncoderClick", "x": 15.75, "y": 1.25 },
+
+ { "label": "~", "x": 0, "y": 1.25 },
+ { "label": "1", "x": 1, "y": 1.25 },
+ { "label": "2", "x": 2, "y": 1.25 },
+ { "label": "3", "x": 3, "y": 1.25 },
+ { "label": "4", "x": 4, "y": 1.25 },
+ { "label": "5", "x": 5, "y": 1.25 },
+ { "label": "6", "x": 6, "y": 1.25 },
+ { "label": "7", "x": 7, "y": 1.25 },
+ { "label": "8", "x": 8, "y": 1.25 },
+ { "label": "9", "x": 9, "y": 1.25 },
+ { "label": "0", "x": 10, "y": 1.25 },
+ { "label": "-", "x": 11, "y": 1.25 },
+ { "label": "=", "x": 12, "y": 1.25 },
+ { "label": "Backspace", "x": 13, "y": 1.25, "w":2},
+
+ { "label": "Tab", "x": 0, "y": 2.25, "w": 1.5 },
+ { "label": "Q", "x": 1.5, "y": 2.25 },
+ { "label": "W", "x": 2.5, "y": 2.25 },
+ { "label": "E", "x": 3.5, "y": 2.25 },
+ { "label": "R", "x": 4.5, "y": 2.25 },
+ { "label": "T", "x": 5.5, "y": 2.25 },
+ { "label": "Y", "x": 6.5, "y": 2.25 },
+ { "label": "U", "x": 7.5, "y": 2.25 },
+ { "label": "I", "x": 8.5, "y": 2.25 },
+ { "label": "O", "x": 9.5, "y": 2.25 },
+ { "label": "P", "x": 10.5, "y": 2.25 },
+ { "label": "[", "x": 11.5, "y": 2.25 },
+ { "label": "]", "x": 12.5, "y": 2.25 },
+ { "label": "\\", "x": 13.5,"y": 2.25, "w": 1.5 },
+ { "label": "Home", "x": 15.25, "y": 2.25 },
+ { "label": "PageUp", "x": 16.25, "y": 2.25 },
+
+ { "label": "Caps Lock", "x": 0, "y": 3.25, "w": 1.75 },
+ { "label": "A", "x": 1.75, "y": 3.25 },
+ { "label": "S", "x": 2.75, "y": 3.25 },
+ { "label": "D", "x": 3.75, "y": 3.25 },
+ { "label": "F", "x": 4.75, "y": 3.25 },
+ { "label": "G", "x": 5.75, "y": 3.25 },
+ { "label": "H", "x": 6.75, "y": 3.25 },
+ { "label": "J", "x": 7.75, "y": 3.25 },
+ { "label": "K", "x": 8.75, "y": 3.25 },
+ { "label": "L", "x": 9.75, "y": 3.25 },
+ { "label": ";", "x": 10.75, "y": 3.25 },
+ { "label": "'", "x": 11.75, "y": 3.25 },
+ { "label": "Enter", "x": 12.75, "y": 3.25, "w": 2.25 },
+ { "label": "End", "x": 15.25, "y": 3.25 },
+ { "label": "PageDown", "x": 16.25, "y": 3.25 },
+
+ { "label": "Shift1", "x": 0, "y": 4.25, "w": 1.25 },
+ { "label": "Shift2", "x": 1.25, "y": 4.25 },
+ { "label": "Z", "x": 2.25, "y": 4.25 },
+ { "label": "X", "x": 3.25, "y": 4.25 },
+ { "label": "C", "x": 4.25, "y": 4.25 },
+ { "label": "V", "x": 5.25, "y": 4.25 },
+ { "label": "B", "x": 6.25, "y": 4.25 },
+ { "label": "N", "x": 7.25, "y": 4.25 },
+ { "label": "M", "x": 8.25, "y": 4.25 },
+ { "label": ",", "x": 9.25, "y": 4.25 },
+ { "label": ".", "x": 10.25, "y": 4.25 },
+ { "label": "/", "x": 11.25, "y": 4.25 },
+ { "label": "Shift", "x": 12.25, "y": 4.25, "w": 2.75 },
+ { "label": "\u2191", "x": 15.25, "y": 4.25 },
+
+ { "label": "Ctrl", "x": 0, "y": 5.25, "w": 1.25 },
+ { "label": "Win", "x": 1.25, "y": 5.25, "w": 1.25 },
+ { "label": "Alt", "x": 2.5, "y": 5.25, "w": 1.25 },
+ { "label": "Space","x": 3.75, "y": 5.25, "w": 6.25 },
+ { "label": "Alt", "x": 10, "y": 5.25, "w": 1.25 },
+ { "label": "Ctrl", "x": 11.25, "y": 5.25, "w": 1.25 },
+ { "label": "Menu", "x": 12.5, "y": 5.25, "w": 1.25 },
+ { "label": "\u2190", "x": 14.25, "y": 5.25 },
+ { "label": "\u2193", "x": 15.25, "y": 5.25 },
+ { "label": "\u2192", "x": 16.25, "y": 5.25 }
+ ]
+ },
+ "LAYOUT_75_ansi_split_rshift": {
+ "layout": [
+ { "label": "Esc", "x": 0, "y": 0 },
+ { "label": "F1", "x": 1.5, "y": 0 },
+ { "label": "F2", "x": 2.5, "y": 0 },
+ { "label": "F3", "x": 3.5, "y": 0 },
+ { "label": "F4", "x": 4.5, "y": 0 },
+ { "label": "F5", "x": 6, "y": 0 },
+ { "label": "F6", "x": 7, "y": 0 },
+ { "label": "F7", "x": 8, "y": 0 },
+ { "label": "F8", "x": 9, "y": 0 },
+ { "label": "F9", "x": 10.5, "y": 0 },
+ { "label": "F10", "x": 11.5, "y": 0 },
+ { "label": "F11", "x": 12.5, "y": 0 },
+ { "label": "F12", "x": 13.5, "y": 0 },
+ { "label": "Delete", "x": 15, "y": 0 },
+ { "label": "EncoderClick", "x": 15.75, "y": 1.25 },
+
+ { "label": "~", "x": 0, "y": 1.25 },
+ { "label": "1", "x": 1, "y": 1.25 },
+ { "label": "2", "x": 2, "y": 1.25 },
+ { "label": "3", "x": 3, "y": 1.25 },
+ { "label": "4", "x": 4, "y": 1.25 },
+ { "label": "5", "x": 5, "y": 1.25 },
+ { "label": "6", "x": 6, "y": 1.25 },
+ { "label": "7", "x": 7, "y": 1.25 },
+ { "label": "8", "x": 8, "y": 1.25 },
+ { "label": "9", "x": 9, "y": 1.25 },
+ { "label": "0", "x": 10, "y": 1.25 },
+ { "label": "-", "x": 11, "y": 1.25 },
+ { "label": "=", "x": 12, "y": 1.25 },
+ { "label": "Backspace", "x": 13, "y": 1.25, "w":2},
+
+ { "label": "Tab", "x": 0, "y": 2.25, "w": 1.5 },
+ { "label": "Q", "x": 1.5, "y": 2.25 },
+ { "label": "W", "x": 2.5, "y": 2.25 },
+ { "label": "E", "x": 3.5, "y": 2.25 },
+ { "label": "R", "x": 4.5, "y": 2.25 },
+ { "label": "T", "x": 5.5, "y": 2.25 },
+ { "label": "Y", "x": 6.5, "y": 2.25 },
+ { "label": "U", "x": 7.5, "y": 2.25 },
+ { "label": "I", "x": 8.5, "y": 2.25 },
+ { "label": "O", "x": 9.5, "y": 2.25 },
+ { "label": "P", "x": 10.5, "y": 2.25 },
+ { "label": "[", "x": 11.5, "y": 2.25 },
+ { "label": "]", "x": 12.5, "y": 2.25 },
+ { "label": "\\", "x": 13.5,"y": 2.25, "w": 1.5 },
+ { "label": "Home", "x": 15.25, "y": 2.25 },
+ { "label": "PageUp", "x": 16.25, "y": 2.25 },
+
+ { "label": "Caps Lock", "x": 0, "y": 3.25, "w": 1.75 },
+ { "label": "A", "x": 1.75, "y": 3.25 },
+ { "label": "S", "x": 2.75, "y": 3.25 },
+ { "label": "D", "x": 3.75, "y": 3.25 },
+ { "label": "F", "x": 4.75, "y": 3.25 },
+ { "label": "G", "x": 5.75, "y": 3.25 },
+ { "label": "H", "x": 6.75, "y": 3.25 },
+ { "label": "J", "x": 7.75, "y": 3.25 },
+ { "label": "K", "x": 8.75, "y": 3.25 },
+ { "label": "L", "x": 9.75, "y": 3.25 },
+ { "label": ";", "x": 10.75, "y": 3.25 },
+ { "label": "'", "x": 11.75, "y": 3.25 },
+ { "label": "Enter", "x": 12.75, "y": 3.25, "w": 2.25 },
+ { "label": "End", "x": 15.25, "y": 3.25 },
+ { "label": "PageDown", "x": 16.25, "y": 3.25 },
+
+ { "label": "Shift", "x": 0, "y": 4.25, "w": 2.25 },
+ { "label": "Z", "x": 2.25, "y": 4.25 },
+ { "label": "X", "x": 3.25, "y": 4.25 },
+ { "label": "C", "x": 4.25, "y": 4.25 },
+ { "label": "V", "x": 5.25, "y": 4.25 },
+ { "label": "B", "x": 6.25, "y": 4.25 },
+ { "label": "N", "x": 7.25, "y": 4.25 },
+ { "label": "M", "x": 8.25, "y": 4.25 },
+ { "label": ",", "x": 9.25, "y": 4.25 },
+ { "label": ".", "x": 10.25, "y": 4.25 },
+ { "label": "/", "x": 11.25, "y": 4.25 },
+ { "label": "Shift1", "x": 12.25, "y": 4.25, "w": 1.75 },
+ { "label": "Shift2", "x": 14, "y": 4.25 },
+ { "label": "\u2191", "x": 15.25, "y": 4.25 },
+
+ { "label": "Ctrl", "x": 0, "y": 5.25, "w": 1.25 },
+ { "label": "Win", "x": 1.25, "y": 5.25, "w": 1.25 },
+ { "label": "Alt", "x": 2.5, "y": 5.25, "w": 1.25 },
+ { "label": "Space","x": 3.75, "y": 5.25, "w": 6.25 },
+ { "label": "Alt", "x": 10, "y": 5.25, "w": 1.25 },
+ { "label": "Ctrl", "x": 11.25, "y": 5.25, "w": 1.25 },
+ { "label": "Menu", "x": 12.5, "y": 5.25, "w": 1.25 },
+ { "label": "\u2190", "x": 14.25, "y": 5.25 },
+ { "label": "\u2193", "x": 15.25, "y": 5.25 },
+ { "label": "\u2192", "x": 16.25, "y": 5.25 }
+ ]
+ },
+ "LAYOUT_75_ansi_split_bs": {
+ "layout": [
+ { "label": "Esc", "x": 0, "y": 0 },
+ { "label": "F1", "x": 1.5, "y": 0 },
+ { "label": "F2", "x": 2.5, "y": 0 },
+ { "label": "F3", "x": 3.5, "y": 0 },
+ { "label": "F4", "x": 4.5, "y": 0 },
+ { "label": "F5", "x": 6, "y": 0 },
+ { "label": "F6", "x": 7, "y": 0 },
+ { "label": "F7", "x": 8, "y": 0 },
+ { "label": "F8", "x": 9, "y": 0 },
+ { "label": "F9", "x": 10.5, "y": 0 },
+ { "label": "F10", "x": 11.5, "y": 0 },
+ { "label": "F11", "x": 12.5, "y": 0 },
+ { "label": "F12", "x": 13.5, "y": 0 },
+ { "label": "Delete", "x": 15, "y": 0 },
+ { "label": "EncoderClick", "x": 15.75, "y": 1.25 },
+
+ { "label": "~", "x": 0, "y": 1.25 },
+ { "label": "1", "x": 1, "y": 1.25 },
+ { "label": "2", "x": 2, "y": 1.25 },
+ { "label": "3", "x": 3, "y": 1.25 },
+ { "label": "4", "x": 4, "y": 1.25 },
+ { "label": "5", "x": 5, "y": 1.25 },
+ { "label": "6", "x": 6, "y": 1.25 },
+ { "label": "7", "x": 7, "y": 1.25 },
+ { "label": "8", "x": 8, "y": 1.25 },
+ { "label": "9", "x": 9, "y": 1.25 },
+ { "label": "0", "x": 10, "y": 1.25 },
+ { "label": "-", "x": 11, "y": 1.25 },
+ { "label": "=", "x": 12, "y": 1.25 },
+ { "label": "Backspace", "x": 13, "y": 1.25},
+
+ { "label": "Tab", "x": 0, "y": 2.25, "w": 1.5 },
+ { "label": "Q", "x": 1.5, "y": 2.25 },
+ { "label": "W", "x": 2.5, "y": 2.25 },
+ { "label": "E", "x": 3.5, "y": 2.25 },
+ { "label": "R", "x": 4.5, "y": 2.25 },
+ { "label": "T", "x": 5.5, "y": 2.25 },
+ { "label": "Y", "x": 6.5, "y": 2.25 },
+ { "label": "U", "x": 7.5, "y": 2.25 },
+ { "label": "I", "x": 8.5, "y": 2.25 },
+ { "label": "O", "x": 9.5, "y": 2.25 },
+ { "label": "P", "x": 10.5, "y": 2.25 },
+ { "label": "[", "x": 11.5, "y": 2.25 },
+ { "label": "]", "x": 12.5, "y": 2.25 },
+ { "label": "\\", "x": 13.5,"y": 2.25, "w": 1.5 },
+ { "label": "Home", "x": 15.25, "y": 2.25 },
+ { "label": "PageUp", "x": 16.25, "y": 2.25 },
+
+ { "label": "Caps Lock", "x": 0, "y": 3.25, "w": 1.75 },
+ { "label": "A", "x": 1.75, "y": 3.25 },
+ { "label": "S", "x": 2.75, "y": 3.25 },
+ { "label": "D", "x": 3.75, "y": 3.25 },
+ { "label": "F", "x": 4.75, "y": 3.25 },
+ { "label": "G", "x": 5.75, "y": 3.25 },
+ { "label": "H", "x": 6.75, "y": 3.25 },
+ { "label": "J", "x": 7.75, "y": 3.25 },
+ { "label": "K", "x": 8.75, "y": 3.25 },
+ { "label": "L", "x": 9.75, "y": 3.25 },
+ { "label": ";", "x": 10.75, "y": 3.25 },
+ { "label": "'", "x": 11.75, "y": 3.25 },
+ { "label": "Enter", "x": 12.75, "y": 3.25, "w": 2.25 },
+ { "label": "Backspace1", "x": 14, "y": 1.25 },
+ { "label": "End", "x": 15.25, "y": 3.25 },
+ { "label": "PageDown", "x": 16.25, "y": 3.25 },
+
+ { "label": "Shift", "x": 0, "y": 4.25, "w": 2.25 },
+ { "label": "Z", "x": 2.25, "y": 4.25 },
+ { "label": "X", "x": 3.25, "y": 4.25 },
+ { "label": "C", "x": 4.25, "y": 4.25 },
+ { "label": "V", "x": 5.25, "y": 4.25 },
+ { "label": "B", "x": 6.25, "y": 4.25 },
+ { "label": "N", "x": 7.25, "y": 4.25 },
+ { "label": "M", "x": 8.25, "y": 4.25 },
+ { "label": ",", "x": 9.25, "y": 4.25 },
+ { "label": ".", "x": 10.25, "y": 4.25 },
+ { "label": "/", "x": 11.25, "y": 4.25 },
+ { "label": "Shift", "x": 12.25, "y": 4.25, "w": 2.75 },
+ { "label": "\u2191", "x": 15.25, "y": 4.25 },
+
+ { "label": "Ctrl", "x": 0, "y": 5.25, "w": 1.25 },
+ { "label": "Win", "x": 1.25, "y": 5.25, "w": 1.25 },
+ { "label": "Alt", "x": 2.5, "y": 5.25, "w": 1.25 },
+ { "label": "Space","x": 3.75, "y": 5.25, "w": 6.25 },
+ { "label": "Alt", "x": 10, "y": 5.25, "w": 1.25 },
+ { "label": "Ctrl", "x": 11.25, "y": 5.25, "w": 1.25 },
+ { "label": "Menu", "x": 12.5, "y": 5.25, "w": 1.25 },
+ { "label": "\u2190", "x": 14.25, "y": 5.25 },
+ { "label": "\u2193", "x": 15.25, "y": 5.25 },
+ { "label": "\u2192", "x": 16.25, "y": 5.25 }
+ ]
+ },
+ "LAYOUT_75_ansi_split_space": {
+ "layout": [
+ { "label": "Esc", "x": 0, "y": 0 },
+ { "label": "F1", "x": 1.5, "y": 0 },
+ { "label": "F2", "x": 2.5, "y": 0 },
+ { "label": "F3", "x": 3.5, "y": 0 },
+ { "label": "F4", "x": 4.5, "y": 0 },
+ { "label": "F5", "x": 6, "y": 0 },
+ { "label": "F6", "x": 7, "y": 0 },
+ { "label": "F7", "x": 8, "y": 0 },
+ { "label": "F8", "x": 9, "y": 0 },
+ { "label": "F9", "x": 10.5, "y": 0 },
+ { "label": "F10", "x": 11.5, "y": 0 },
+ { "label": "F11", "x": 12.5, "y": 0 },
+ { "label": "F12", "x": 13.5, "y": 0 },
+ { "label": "Delete", "x": 15, "y": 0 },
+ { "label": "EncoderClick", "x": 15.75, "y": 1.25 },
+
+ { "label": "~", "x": 0, "y": 1.25 },
+ { "label": "1", "x": 1, "y": 1.25 },
+ { "label": "2", "x": 2, "y": 1.25 },
+ { "label": "3", "x": 3, "y": 1.25 },
+ { "label": "4", "x": 4, "y": 1.25 },
+ { "label": "5", "x": 5, "y": 1.25 },
+ { "label": "6", "x": 6, "y": 1.25 },
+ { "label": "7", "x": 7, "y": 1.25 },
+ { "label": "8", "x": 8, "y": 1.25 },
+ { "label": "9", "x": 9, "y": 1.25 },
+ { "label": "0", "x": 10, "y": 1.25 },
+ { "label": "-", "x": 11, "y": 1.25 },
+ { "label": "=", "x": 12, "y": 1.25 },
+ { "label": "Backspace", "x": 13, "y": 1.25, "w":2},
+
+ { "label": "Tab", "x": 0, "y": 2.25, "w": 1.5 },
+ { "label": "Q", "x": 1.5, "y": 2.25 },
+ { "label": "W", "x": 2.5, "y": 2.25 },
+ { "label": "E", "x": 3.5, "y": 2.25 },
+ { "label": "R", "x": 4.5, "y": 2.25 },
+ { "label": "T", "x": 5.5, "y": 2.25 },
+ { "label": "Y", "x": 6.5, "y": 2.25 },
+ { "label": "U", "x": 7.5, "y": 2.25 },
+ { "label": "I", "x": 8.5, "y": 2.25 },
+ { "label": "O", "x": 9.5, "y": 2.25 },
+ { "label": "P", "x": 10.5, "y": 2.25 },
+ { "label": "[", "x": 11.5, "y": 2.25 },
+ { "label": "]", "x": 12.5, "y": 2.25 },
+ { "label": "\\", "x": 13.5,"y": 2.25, "w": 1.5 },
+ { "label": "Home", "x": 15.25, "y": 2.25 },
+ { "label": "PageUp", "x": 16.25, "y": 2.25 },
+
+ { "label": "Caps Lock", "x": 0, "y": 3.25, "w": 1.75 },
+ { "label": "A", "x": 1.75, "y": 3.25 },
+ { "label": "S", "x": 2.75, "y": 3.25 },
+ { "label": "D", "x": 3.75, "y": 3.25 },
+ { "label": "F", "x": 4.75, "y": 3.25 },
+ { "label": "G", "x": 5.75, "y": 3.25 },
+ { "label": "H", "x": 6.75, "y": 3.25 },
+ { "label": "J", "x": 7.75, "y": 3.25 },
+ { "label": "K", "x": 8.75, "y": 3.25 },
+ { "label": "L", "x": 9.75, "y": 3.25 },
+ { "label": ";", "x": 10.75, "y": 3.25 },
+ { "label": "'", "x": 11.75, "y": 3.25 },
+ { "label": "Enter", "x": 12.75, "y": 3.25, "w": 2.25 },
+ { "label": "End", "x": 15.25, "y": 3.25 },
+ { "label": "PageDown", "x": 16.25, "y": 3.25 },
+
+ { "label": "Shift", "x": 0, "y": 4.25, "w": 2.25 },
+ { "label": "Z", "x": 2.25, "y": 4.25 },
+ { "label": "X", "x": 3.25, "y": 4.25 },
+ { "label": "C", "x": 4.25, "y": 4.25 },
+ { "label": "V", "x": 5.25, "y": 4.25 },
+ { "label": "B", "x": 6.25, "y": 4.25 },
+ { "label": "N", "x": 7.25, "y": 4.25 },
+ { "label": "M", "x": 8.25, "y": 4.25 },
+ { "label": ",", "x": 9.25, "y": 4.25 },
+ { "label": ".", "x": 10.25, "y": 4.25 },
+ { "label": "/", "x": 11.25, "y": 4.25 },
+ { "label": "Shift", "x": 12.25, "y": 4.25, "w": 2.75 },
+ { "label": "\u2191", "x": 15.25, "y": 4.25 },
+
+ { "label": "Ctrl", "x": 0, "y": 5.25, "w": 1.25 },
+ { "label": "Win", "x": 1.25, "y": 5.25, "w": 1.25 },
+ { "label": "Alt", "x": 2.5, "y": 5.25, "w": 1.25 },
+ { "label": "Space","x": 3.75, "y": 5.25, "w": 2.25 },
+ { "label": "Space","x": 6, "y": 5.25, "w": 1.25 },
+ { "label": "Space","x": 7.25, "y": 5.25, "w": 2.75 },
+ { "label": "Alt", "x": 10, "y": 5.25, "w": 1.25 },
+ { "label": "Ctrl", "x": 11.25, "y": 5.25, "w": 1.25 },
+ { "label": "Menu", "x": 12.5, "y": 5.25, "w": 1.25 },
+ { "label": "\u2190", "x": 14.25, "y": 5.25 },
+ { "label": "\u2193", "x": 15.25, "y": 5.25 },
+ { "label": "\u2192", "x": 16.25, "y": 5.25 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/wuque/mammoth75x/keymaps/75_ansi/keymap.c b/keyboards/wuque/mammoth75x/keymaps/75_ansi/keymap.c
new file mode 100644
index 000000000000..a35038348ea8
--- /dev/null
+++ b/keyboards/wuque/mammoth75x/keymaps/75_ansi/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2021 wuquestudio
+ *
+ * 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_75_ansi(
+ 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_DEL, KC_MUTE,
+ 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_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_INS, KC_PGUP,
+ 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_END, KC_PGDN,
+ 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, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_75_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/wuque/mammoth75x/keymaps/75_ansi/readme.md b/keyboards/wuque/mammoth75x/keymaps/75_ansi/readme.md
new file mode 100644
index 000000000000..b6b384197aff
--- /dev/null
+++ b/keyboards/wuque/mammoth75x/keymaps/75_ansi/readme.md
@@ -0,0 +1 @@
+# The 75_ansi keymap for mammoth75x
diff --git a/keyboards/wuque/mammoth75x/keymaps/75_split_bs/keymap.c b/keyboards/wuque/mammoth75x/keymaps/75_split_bs/keymap.c
new file mode 100644
index 000000000000..c1717e6d2218
--- /dev/null
+++ b/keyboards/wuque/mammoth75x/keymaps/75_split_bs/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2021 wuquestudio
+ *
+ * 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_75_ansi_split_bs(
+ 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_DEL, KC_MUTE,
+ 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_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_INS, KC_PGUP,
+ 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_BSPC, KC_END, KC_PGDN,
+ 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, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_75_ansi_split_bs(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/wuque/mammoth75x/keymaps/75_split_bs/readme.md b/keyboards/wuque/mammoth75x/keymaps/75_split_bs/readme.md
new file mode 100644
index 000000000000..ef0bf98c57f8
--- /dev/null
+++ b/keyboards/wuque/mammoth75x/keymaps/75_split_bs/readme.md
@@ -0,0 +1 @@
+# The 75_split_bs keymap for mammoth75x
diff --git a/keyboards/wuque/mammoth75x/keymaps/75_split_lshift/keymap.c b/keyboards/wuque/mammoth75x/keymaps/75_split_lshift/keymap.c
new file mode 100644
index 000000000000..611e1a2642c6
--- /dev/null
+++ b/keyboards/wuque/mammoth75x/keymaps/75_split_lshift/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2021 wuquestudio
+ *
+ * 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_75_ansi_split_lshift(
+ 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_DEL, KC_MUTE,
+ 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_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_INS, KC_PGUP,
+ 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_END, KC_PGDN,
+ KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_75_ansi_split_lshift(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/wuque/mammoth75x/keymaps/75_split_lshift/readme.md b/keyboards/wuque/mammoth75x/keymaps/75_split_lshift/readme.md
new file mode 100644
index 000000000000..cd6640f912b3
--- /dev/null
+++ b/keyboards/wuque/mammoth75x/keymaps/75_split_lshift/readme.md
@@ -0,0 +1 @@
+# The 75_split_lshift keymap for mammoth75x
diff --git a/keyboards/wuque/mammoth75x/keymaps/75_split_rshift/keymap.c b/keyboards/wuque/mammoth75x/keymaps/75_split_rshift/keymap.c
new file mode 100644
index 000000000000..1debfe81b74c
--- /dev/null
+++ b/keyboards/wuque/mammoth75x/keymaps/75_split_rshift/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2021 wuquestudio
+ *
+ * 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_75_ansi_split_rshift(
+ 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_DEL, KC_MUTE,
+ 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_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_INS, KC_PGUP,
+ 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_END, KC_PGDN,
+ 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_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_75_ansi_split_rshift(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/wuque/mammoth75x/keymaps/75_split_rshift/readme.md b/keyboards/wuque/mammoth75x/keymaps/75_split_rshift/readme.md
new file mode 100644
index 000000000000..cd6640f912b3
--- /dev/null
+++ b/keyboards/wuque/mammoth75x/keymaps/75_split_rshift/readme.md
@@ -0,0 +1 @@
+# The 75_split_lshift keymap for mammoth75x
diff --git a/keyboards/wuque/mammoth75x/keymaps/75_split_space/keymap.c b/keyboards/wuque/mammoth75x/keymaps/75_split_space/keymap.c
new file mode 100644
index 000000000000..2182216060c8
--- /dev/null
+++ b/keyboards/wuque/mammoth75x/keymaps/75_split_space/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2021 wuquestudio
+ *
+ * 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_75_ansi_split_space(
+ 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_DEL, KC_MUTE,
+ 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_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_INS, KC_PGUP,
+ 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_END, KC_PGDN,
+ 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_SPC, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_75_ansi_split_space(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/wuque/mammoth75x/keymaps/75_split_space/readme.md b/keyboards/wuque/mammoth75x/keymaps/75_split_space/readme.md
new file mode 100644
index 000000000000..c2057660f9f5
--- /dev/null
+++ b/keyboards/wuque/mammoth75x/keymaps/75_split_space/readme.md
@@ -0,0 +1 @@
+# The 75_split_space keymap for mammoth75x
diff --git a/keyboards/wuque/mammoth75x/keymaps/default/keymap.c b/keyboards/wuque/mammoth75x/keymaps/default/keymap.c
new file mode 100644
index 000000000000..9f998a3dd6ba
--- /dev/null
+++ b/keyboards/wuque/mammoth75x/keymaps/default/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2021 wuquestudio
+ *
+ * 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_all(
+ 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_DEL, KC_VOLD, KC_MUTE,KC_VOLU,
+ 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_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_INS, KC_PGUP,
+ 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_BSPC, KC_END, KC_PGDN,
+ KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/wuque/mammoth75x/keymaps/default/readme.md b/keyboards/wuque/mammoth75x/keymaps/default/readme.md
new file mode 100644
index 000000000000..73cba9c7b900
--- /dev/null
+++ b/keyboards/wuque/mammoth75x/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for mammoth75x
diff --git a/keyboards/wuque/mammoth75x/keymaps/via/keymap.c b/keyboards/wuque/mammoth75x/keymaps/via/keymap.c
new file mode 100644
index 000000000000..d35ff6bccc2a
--- /dev/null
+++ b/keyboards/wuque/mammoth75x/keymaps/via/keymap.c
@@ -0,0 +1,52 @@
+/* Copyright 2021 wuquestudio
+ *
+ * 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_all(
+ 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_DEL, KC_VOLD, KC_MUTE,KC_VOLU,
+ 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_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_INS, KC_PGUP,
+ 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_BSPC, KC_END, KC_PGDN,
+ KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/wuque/mammoth75x/keymaps/via/readme.md b/keyboards/wuque/mammoth75x/keymaps/via/readme.md
new file mode 100644
index 000000000000..e6ea1cf87d99
--- /dev/null
+++ b/keyboards/wuque/mammoth75x/keymaps/via/readme.md
@@ -0,0 +1 @@
+# The via keymap for mammoth75x
diff --git a/keyboards/wuque/mammoth75x/keymaps/via/rules.mk b/keyboards/wuque/mammoth75x/keymaps/via/rules.mk
new file mode 100644
index 000000000000..36b7ba9cbc98
--- /dev/null
+++ b/keyboards/wuque/mammoth75x/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/wuque/mammoth75x/mammoth75x.c b/keyboards/wuque/mammoth75x/mammoth75x.c
new file mode 100644
index 000000000000..6f14657f8899
--- /dev/null
+++ b/keyboards/wuque/mammoth75x/mammoth75x.c
@@ -0,0 +1,67 @@
+/* Copyright 2021 wuquestudio
+ *
+ * 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 "mammoth75x.h"
+
+#ifdef VIA_ENABLE
+static uint8_t encoder_state[ENCODERS] = {0};
+static keypos_t encoder_cw[ENCODERS] = ENCODERS_CW_KEY;
+static keypos_t encoder_ccw[ENCODERS] = ENCODERS_CCW_KEY;
+
+void encoder_action_unregister(void)
+{
+ for (int index = 0; index < ENCODERS; ++index)
+ {
+ if (encoder_state[index])
+ {
+ keyevent_t encoder_event = (keyevent_t){
+ .key = encoder_state[index] >> 1 ? encoder_cw[index] : encoder_ccw[index],
+ .pressed = false,
+ .time = (timer_read() | 1)};
+ encoder_state[index] = 0;
+ action_exec(encoder_event);
+ }
+ }
+}
+void encoder_action_register(uint8_t index, bool clockwise)
+{
+ keyevent_t encoder_event = (keyevent_t){
+ .key = clockwise ? encoder_cw[index] : encoder_ccw[index],
+ .pressed = true,
+ .time = (timer_read() | 1)};
+ encoder_state[index] = (clockwise ^ 1) | (clockwise << 1);
+ action_exec(encoder_event);
+}
+
+void matrix_scan_kb(void)
+{
+ encoder_action_unregister();
+ matrix_scan_user();
+}
+
+bool encoder_update_kb(uint8_t index, bool clockwise)
+{
+ encoder_action_register(index, clockwise);
+ return true;
+};
+#else
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ tap_code_delay(clockwise ? KC_VOLU : KC_VOLD, 10);
+ return true;
+}
+#endif
+
diff --git a/keyboards/wuque/mammoth75x/mammoth75x.h b/keyboards/wuque/mammoth75x/mammoth75x.h
new file mode 100644
index 000000000000..a3ab71caa168
--- /dev/null
+++ b/keyboards/wuque/mammoth75x/mammoth75x.h
@@ -0,0 +1,223 @@
+/* Copyright 2021 wuquestudio
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+
+/* Standard Arrangement
+ * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐
+ * │00 ││01 │02 │03 │04 ││05 │06 │07 │08 ││09 │0a │0b │0c ││0d │
+ * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ◯
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │3d │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ┌───┬───┐
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2d │ │2e │2f │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ├───┼───┤
+ * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │ │3e │3f │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ └───┴───┘
+ * │40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │4a │4b │4c │4d │ ┌───┐
+ * ├────┼───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴───┼───┴┬────┬┴───┘ │4e │
+ * │50 │51 │52 │54 │56 │58 │5a │5b │5c │ ┌───┼───┼───┐
+ * └────┴────┴────┴────────┴────┴──────────┴────┴────┴────┘ │5d │5e │5f │
+ * └───┴───┴───┘
+ */
+#define LAYOUT_all( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K53, K0E, K55, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, \
+ K50, K51, K52, K54, K56, K58, K5A, K5B, K5C, K5D, K5E, K5F \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, KC_NO }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO, KC_NO }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, KC_NO }, \
+ { K50, K51, K52, K53, K54, K55, K56, KC_NO, K58, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F }, \
+}
+
+
+/* LAYOUT_75_ansi
+ * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐
+ * │00 ││01 │02 │03 │04 ││05 │06 │07 │08 ││09 │0a │0b │0c ││0d │
+ * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ◯
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ┌───┬───┐
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2d │ │2e │2f │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ├───┼───┤
+ * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │ │3e │3f │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ └───┴───┘
+ * │40 │42 │43 │44 │45 │46 │47 │48 │49 │4a │4b │4c │ ┌───┐
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┘ │4e │
+ * │50 │51 │52 │56 │5a │5b │5c │ ┌───┼───┼───┐
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┘ │5d │5e │5f │
+ * └───┴───┴───┘
+ */
+#define LAYOUT_75_ansi( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, K3F, \
+ K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4E, \
+ K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, KC_NO }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO, KC_NO }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO, K3E, K3F }, \
+ { K40, KC_NO, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, KC_NO, K4E, KC_NO }, \
+ { K50, K51, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F }, \
+}
+
+
+/* LAYOUT_75_ansi_split_lshift
+ * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐
+ * │00 ││01 │02 │03 │04 ││05 │06 │07 │08 ││09 │0a │0b │0c ││0d │
+ * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ◯
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ┌───┬───┐
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2d │ │2e │2f │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ├───┼───┤
+ * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │ │3e │3f │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ └───┴───┘
+ * │40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │4a │4b │4c │ ┌───┐
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┘ │4e │
+ * │50 │51 │52 │56 │5a │5b │5c │ ┌───┼───┼───┐
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┘ │5d │5e │5f │
+ * └───┴───┴───┘
+ */
+#define LAYOUT_75_ansi_split_lshift( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, K3F, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4E, \
+ K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, KC_NO }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO, KC_NO }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO, K3E, K3F }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, KC_NO, K4E, KC_NO }, \
+ { K50, K51, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F }, \
+}
+
+
+/* LAYOUT_75_ansi_split_rshift
+ * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐
+ * │00 ││01 │02 │03 │04 ││05 │06 │07 │08 ││09 │0a │0b │0c ││0d │
+ * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ◯
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ┌───┬───┐
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2d │ │2e │2f │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ├───┼───┤
+ * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │ │3e │3f │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ └───┴───┘
+ * │40 │42 │43 │44 │45 │46 │47 │48 │49 │4a │4b │4c │4d │ ┌───┐
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┘ │4e │
+ * │50 │51 │52 │56 │5a │5b │5c │ ┌───┼───┼───┐
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┘ │5d │5e │5f │
+ * └───┴───┴───┘
+ */
+#define LAYOUT_75_ansi_split_rshift( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, K3F, \
+ K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, \
+ K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, KC_NO }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO, KC_NO }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO, K3E, K3F }, \
+ { K40, KC_NO, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, KC_NO }, \
+ { K50, K51, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F }, \
+}
+
+
+/* LAYOUT_75_ansi_split_bs
+ * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐
+ * │00 ││01 │02 │03 │04 ││05 │06 │07 │08 ││09 │0a │0b │0c ││0d │
+ * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ◯
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │3d │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ┌───┬───┐
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2d │ │2e │2f │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ├───┼───┤
+ * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │ │3e │3f │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ └───┴───┘
+ * │40 │42 │43 │44 │45 │46 │47 │48 │49 │4a │4b │4c │ ┌───┐
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┘ │4e │
+ * │50 │51 │52 │56 │5a │5b │5c │ ┌───┼───┼───┐
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┘ │5d │5e │5f │
+ * └───┴───┴───┘
+ */
+#define LAYOUT_75_ansi_split_bs( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, \
+ K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4E, \
+ K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, KC_NO }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO, KC_NO }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F }, \
+ { K40, KC_NO, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, KC_NO, K4E, KC_NO }, \
+ { K50, K51, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F }, \
+}
+
+
+/* LAYOUT_75_ansi_split_space
+ * ┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┐
+ * │00 ││01 │02 │03 │04 ││05 │06 │07 │08 ││09 │0a │0b │0c ││0d │
+ * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ◯
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ┌───┬───┐
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │2d │ │2e │2f │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ├───┼───┤
+ * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │ │3e │3f │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ └───┴───┘
+ * │40 │42 │43 │44 │45 │46 │47 │48 │49 │4a │4b │4c │ ┌───┐
+ * ├────┬───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴───┼───┴┬────┬────┘ │4e │
+ * │50 │51 │52 │54 │56 │58 │5a │5b │5c │ ┌───┼───┼───┐
+ * └────┴────┴────┴────────┴────┴──────────┴────┴────┴────┘ │5d │5e │5f │
+ * └───┴───┴───┘
+ */
+#define LAYOUT_75_ansi_split_space( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, K3F, \
+ K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4E, \
+ K50, K51, K52, K54, K56, K58, K5A, K5B, K5C, K5D, K5E, K5F \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, KC_NO }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, KC_NO, KC_NO }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO, K3E, K3F }, \
+ { K40, KC_NO, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, KC_NO, K4E, KC_NO }, \
+ { K50, K51, K52, KC_NO, K54, KC_NO, K56, KC_NO, K58, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F }, \
+}
diff --git a/keyboards/wuque/mammoth75x/readme.md b/keyboards/wuque/mammoth75x/readme.md
new file mode 100644
index 000000000000..9528552fb17e
--- /dev/null
+++ b/keyboards/wuque/mammoth75x/readme.md
@@ -0,0 +1,25 @@
+# mammoth75x
+
+![mammoth75x](https://i.imgur.com/mhIKh2P.jpeg)
+
+More Info at [wuquestudio](https://shop.wuquestudio.com/).
+
+* Keyboard Maintainer: [spbgzh](https://github.com/spbgzh)
+* Hardware Supported: mammoth75x Standard
+* Hardware Availability: [mammoth75x](https://shop.wuquestudio.com/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make wuque/mammoth75x:default
+
+Flashing example for this keyboard:
+
+ make wuque/mammoth75x:default:flash
+
+To reset the board into bootloader mode, do one of the following:
+
+* Tap the Reset switch mounted on the PCB
+* In the case of the default keymap, use the key combination Fn + PageUp
+* Hold the Esc key while connecting the USB cable (also erases persistent settings)
+
+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/wuque/mammoth75x/rules.mk b/keyboards/wuque/mammoth75x/rules.mk
new file mode 100644
index 000000000000..d34c14e73faa
--- /dev/null
+++ b/keyboards/wuque/mammoth75x/rules.mk
@@ -0,0 +1,22 @@
+# 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 = yes # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes # Enable Encoder
diff --git a/keyboards/xelus/dawn60/info.json b/keyboards/xelus/dawn60/info.json
index dad605152aec..346422b92add 100644
--- a/keyboards/xelus/dawn60/info.json
+++ b/keyboards/xelus/dawn60/info.json
@@ -2,8 +2,11 @@
"keyboard_name": "Dawn60",
"url": "",
"maintainer": "Xelus22",
+ "layout_aliases": {
+ "LAYOUT_60_all": "LAYOUT_all"
+ },
"layouts": {
- "LAYOUT_60_all": {
+ "LAYOUT_all": {
"layout": [
{"label":"Esc", "x":0, "y":0},
{"label":"1", "x":1, "y":0},
@@ -70,6 +73,147 @@
{"label":"Down", "x":13, "y":4},
{"label":"Right", "x":14, "y":4}
]
+ },
+ "LAYOUT_60_ansi_arrow": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2@", "x":2, "y":0},
+ {"label":"3#", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":7, "y":0},
+ {"label":"8*", "x":8, "y":0},
+ {"label":"9(", "x":9, "y":0},
+ {"label":"0)", "x":10, "y":0},
+ {"label":"-_", "x":11, "y":0},
+ {"label":"=+", "x":12, "y":0},
+ {"label":"Backspace", "x":13, "y":0, "w":2},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[{", "x":11.5, "y":1},
+ {"label":"]}", "x":12.5, "y":1},
+ {"label":"\\|", "x":13.5, "y":1, "w":1.5},
+
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";:", "x":10.75, "y":2},
+ {"label":"'\"", "x":11.75, "y":2},
+ {"label":"Enter", "x":12.75, "y":2, "w":2.25},
+
+ {"label":"Shift", "x":0, "y":3, "w":2.25},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",<", "x":9.25, "y":3},
+ {"label":".>", "x":10.25, "y":3},
+ {"label":"Shift", "x":11.25, "y":3, "w":1.75},
+ {"label":"Up", "x":13, "y":3},
+ {"label":"Fn", "x":14, "y":3},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.25},
+ {"label":"GUI", "x":1.25, "y":4, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.25},
+ {"label":"Space", "x":3.75, "y":4, "w":6.25},
+ {"label":"Alt", "x":10, "y":4},
+ {"label":"Ctrl", "x":11, "y":4},
+ {"label":"Left", "x":12, "y":4},
+ {"label":"Down", "x":13, "y":4},
+ {"label":"Right", "x":14, "y":4}
+ ]
+ },
+ "LAYOUT_60_tsangan_hhkb": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"1!", "x":1, "y":0},
+ {"label":"2@", "x":2, "y":0},
+ {"label":"3#", "x":3, "y":0},
+ {"label":"4$", "x":4, "y":0},
+ {"label":"5%", "x":5, "y":0},
+ {"label":"6^", "x":6, "y":0},
+ {"label":"7&", "x":7, "y":0},
+ {"label":"8*", "x":8, "y":0},
+ {"label":"9(", "x":9, "y":0},
+ {"label":"0)", "x":10, "y":0},
+ {"label":"-_", "x":11, "y":0},
+ {"label":"=+", "x":12, "y":0},
+ {"label":"\\|", "x":13, "y":0},
+ {"label":"Delete", "x":14, "y":0},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.5},
+ {"label":"Q", "x":1.5, "y":1},
+ {"label":"W", "x":2.5, "y":1},
+ {"label":"E", "x":3.5, "y":1},
+ {"label":"R", "x":4.5, "y":1},
+ {"label":"T", "x":5.5, "y":1},
+ {"label":"Y", "x":6.5, "y":1},
+ {"label":"U", "x":7.5, "y":1},
+ {"label":"I", "x":8.5, "y":1},
+ {"label":"O", "x":9.5, "y":1},
+ {"label":"P", "x":10.5, "y":1},
+ {"label":"[{", "x":11.5, "y":1},
+ {"label":"]}", "x":12.5, "y":1},
+ {"label":"Backspace", "x":13.5, "y":1, "w":1.5},
+
+ {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
+ {"label":"A", "x":1.75, "y":2},
+ {"label":"S", "x":2.75, "y":2},
+ {"label":"D", "x":3.75, "y":2},
+ {"label":"F", "x":4.75, "y":2},
+ {"label":"G", "x":5.75, "y":2},
+ {"label":"H", "x":6.75, "y":2},
+ {"label":"J", "x":7.75, "y":2},
+ {"label":"K", "x":8.75, "y":2},
+ {"label":"L", "x":9.75, "y":2},
+ {"label":";:", "x":10.75, "y":2},
+ {"label":"'\"", "x":11.75, "y":2},
+ {"label":"Enter", "x":12.75, "y":2, "w":2.25},
+
+ {"label":"Shift", "x":0, "y":3, "w":2.25},
+ {"label":"Z", "x":2.25, "y":3},
+ {"label":"X", "x":3.25, "y":3},
+ {"label":"C", "x":4.25, "y":3},
+ {"label":"V", "x":5.25, "y":3},
+ {"label":"B", "x":6.25, "y":3},
+ {"label":"N", "x":7.25, "y":3},
+ {"label":"M", "x":8.25, "y":3},
+ {"label":",<", "x":9.25, "y":3},
+ {"label":".>", "x":10.25, "y":3},
+ {"label":"/?", "x":11.25, "y":3},
+ {"label":"Shift", "x":12.25, "y":3, "w":1.75},
+ {"label":"Fn", "x":14, "y":3},
+
+ {"label":"Ctrl", "x":0, "y":4, "w":1.5},
+ {"label":"GUI", "x":1.5, "y":4},
+ {"label":"Alt", "x":2.5, "y":4, "w":1.5},
+ {"label":"Space", "x":4, "y":4, "w":7},
+ {"label":"Alt", "x":11, "y":4, "w":1.5},
+ {"label":"Menu", "x":12.5, "y":4},
+ {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}
+ ]
}
}
}
diff --git a/keyboards/xelus/dawn60/keymaps/default/keymap.c b/keyboards/xelus/dawn60/keymaps/default/keymap.c
index 431a596c22d5..479764f3c376 100644
--- a/keyboards/xelus/dawn60/keymaps/default/keymap.c
+++ b/keyboards/xelus/dawn60/keymaps/default/keymap.c
@@ -12,7 +12,7 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Default layer: Pressing caps-lock momentarily switches to Layer 1.
// This is the default layer. Pressing an empty keycode on another layer will take you here.
- [0] = LAYOUT_60_all(
+ [0] = 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_BSLS, 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_BSPC,
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,
@@ -20,7 +20,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
- [1] = LAYOUT_60_all(
+ [1] = LAYOUT_all(
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_PSCR,
KC_CAPS, KC_TRNS, KC_UP , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE,
KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END
),
- [2] = LAYOUT_60_all(
+ [2] = 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,
@@ -36,7 +36,7 @@ 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
),
- [3] = LAYOUT_60_all(
+ [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,
diff --git a/keyboards/xelus/dawn60/keymaps/via/keymap.c b/keyboards/xelus/dawn60/keymaps/via/keymap.c
index 431a596c22d5..479764f3c376 100644
--- a/keyboards/xelus/dawn60/keymaps/via/keymap.c
+++ b/keyboards/xelus/dawn60/keymaps/via/keymap.c
@@ -12,7 +12,7 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Default layer: Pressing caps-lock momentarily switches to Layer 1.
// This is the default layer. Pressing an empty keycode on another layer will take you here.
- [0] = LAYOUT_60_all(
+ [0] = 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_BSLS, 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_BSPC,
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,
@@ -20,7 +20,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
- [1] = LAYOUT_60_all(
+ [1] = LAYOUT_all(
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_PSCR,
KC_CAPS, KC_TRNS, KC_UP , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE,
KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END
),
- [2] = LAYOUT_60_all(
+ [2] = 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,
@@ -36,7 +36,7 @@ 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
),
- [3] = LAYOUT_60_all(
+ [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,
diff --git a/keyboards/xelus/dawn60/rev1/rev1.h b/keyboards/xelus/dawn60/rev1/rev1.h
index 53d40e54990f..49fd9420f2b6 100644
--- a/keyboards/xelus/dawn60/rev1/rev1.h
+++ b/keyboards/xelus/dawn60/rev1/rev1.h
@@ -21,7 +21,24 @@
#define XXX KC_NO
-#define LAYOUT_60_all( \
+/* LAYOUT_all
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───────┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │2D │ │0D │ 2u Backspace
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ └───────┘
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤ ┌───┬──────┬───┐
+ * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3B │3C │3D │ │3B │3C │3D │ 1/1.75/1u
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤ └───┴──────┴───┘
+ * │40 │41 │42 │45 │49 │4A │4B │4C │4D │
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘
+ * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐
+ * │40 │41 │42 │45 │4A │4C │4D │ Tsangan
+ * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
+ */
+
+#define LAYOUT_all( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
@@ -34,3 +51,31 @@
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, XXX, K3B, K3C, K3D }, \
{ K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, K4B, K4C, K4D } \
}
+
+#define LAYOUT_60_ansi_arrow( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3B, K3C, K3D, \
+ K40, K41, K42, K45, K49, K4A, K4B, K4C, K4D \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, XXX, K3B, K3C, K3D }, \
+ { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, K4B, K4C, K4D } \
+}
+
+#define LAYOUT_60_tsangan_hhkb( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3B, K3C, K3D, \
+ K40, K41, K42, K45, K4A, K4C, K4D \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, XXX, K3B, K3C, K3D }, \
+ { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, XXX, K4A, XXX, K4C, K4D } \
+}
diff --git a/keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.h b/keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.h
index 3625ab1f1104..d5284c028008 100644
--- a/keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.h
+++ b/keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.h
@@ -19,7 +19,24 @@
#define XXX KC_NO
-#define LAYOUT_60_all( \
+/* LAYOUT_all
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───────┐
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │2D │ │0D │ 2u Backspace
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ └───────┘
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤ ┌───┬──────┬───┐
+ * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3B │3C │3D │ │3B │3C │3D │ 1/1.75/1u
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤ └───┴──────┴───┘
+ * │40 │41 │42 │45 │49 │4A │4B │4C │4D │
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘
+ * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐
+ * │40 │41 │42 │45 │4A │4C │4D │ Tsangan
+ * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
+ */
+
+#define LAYOUT_all( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
@@ -32,3 +49,31 @@
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, XXX, K3B, K3C, K3D }, \
{ K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, K4B, K4C, K4D } \
}
+
+#define LAYOUT_60_ansi_arrow( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3B, K3C, K3D, \
+ K40, K41, K42, K45, K49, K4A, K4B, K4C, K4D \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, XXX, K3B, K3C, K3D }, \
+ { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, K4B, K4C, K4D } \
+}
+
+#define LAYOUT_60_tsangan_hhkb( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3B, K3C, K3D, \
+ K40, K41, K42, K45, K4A, K4C, K4D \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, XXX, K3B, K3C, K3D }, \
+ { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, XXX, K4A, XXX, K4C, K4D } \
+}
diff --git a/keyboards/xelus/pachi/rgb/rgb.c b/keyboards/xelus/pachi/rgb/rgb.c
index 6f44b13e12ea..4f2f2c7b77c3 100644
--- a/keyboards/xelus/pachi/rgb/rgb.c
+++ b/keyboards/xelus/pachi/rgb/rgb.c
@@ -228,7 +228,11 @@ static void init(void) {
IS31FL3741_update_led_control_registers(DRIVER_ADDR_1, 0);
}
-static void flush(void) { IS31FL3741_update_pwm_buffers(DRIVER_ADDR_1, DRIVER_ADDR_2); }
+static void flush(void) {
+ IS31FL3741_update_pwm_buffers(DRIVER_ADDR_1, 0);
+ // Just for reference. Only first driver is used?
+ // IS31FL3741_update_pwm_buffers(DRIVER_ADDR_2, 1);
+}
const rgb_matrix_driver_t rgb_matrix_driver = {
.init = init,
diff --git a/keyboards/xiudi/xd60/keymaps/ansi_split_bs_rshift_space/keymap.c b/keyboards/xiudi/xd60/keymaps/ansi_split_bs_rshift_space/keymap.c
new file mode 100644
index 000000000000..e630851db50d
--- /dev/null
+++ b/keyboards/xiudi/xd60/keymaps/ansi_split_bs_rshift_space/keymap.c
@@ -0,0 +1,33 @@
+/* Copyright 2021 mizuho1998
+ *
+ * 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_60_ansi_split_bs_rshift_space(
+ 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_GRV,
+ 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_NO, KC_ENT,
+ KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_LSFT, KC_SPC, KC_ESC, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [1] = LAYOUT_60_ansi_split_bs_rshift_space(
+ RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14,
+ KC_NO, KC_WH_U, KC_UP, KC_WH_D, KC_BSPC,KC_HOME,KC_CALC,KC_NO, KC_INS, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL,
+ KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT,KC_DEL, KC_END, KC_PGDN,KC_NO, KC_NO, KC_NO, KC_HOME, KC_PGUP, KC_NO, KC_ENT,
+ KC_LSFT, KC_NO, KC_NO, KC_APP, BL_STEP,KC_NO, KC_NO, KC_VOLD,KC_VOLU,KC_MUTE, KC_END, KC_PGDN, KC_RSFT, KC_PGUP, KC_INS,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_LSFT, KC_SPC, KC_ESC, KC_RGUI, MO(1), KC_HOME, KC_PGDOWN,KC_END
+ )
+};
diff --git a/keyboards/xiudi/xd60/keymaps/ansi_split_bs_rshift_space/readme.md b/keyboards/xiudi/xd60/keymaps/ansi_split_bs_rshift_space/readme.md
new file mode 100644
index 000000000000..56f384f43661
--- /dev/null
+++ b/keyboards/xiudi/xd60/keymaps/ansi_split_bs_rshift_space/readme.md
@@ -0,0 +1,13 @@
+# Split Space Keymap for XIUDI's 60% XD60 PCB
+
+![Split Space Keymap for XD60](https://user-images.githubusercontent.com/39789796/140330345-2ccde096-dad5-49d0-b8a7-b231180018e6.png)
+
+
+* Keyboard Maintainer: [mizuho1998](https://github.com/mizuho1998)
+* Hardware Supported: xd60 PCB rev3
+
+Make example for this keyboard (after setting up your build environment):
+
+ make xiudi/xd60/rev3:ansi_split_bs_rshift_space
+
+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/xiudi/xd60/xd60.h b/keyboards/xiudi/xd60/xd60.h
index dc6a1080f9a2..cf698adcc137 100644
--- a/keyboards/xiudi/xd60/xd60.h
+++ b/keyboards/xiudi/xd60/xd60.h
@@ -60,6 +60,20 @@ inline void xd60_bl_led_off(void) { DDRF &= ~(1<<5); PORTF &= ~(1<<5); }
{ K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, K49, K4A, K4B, K4C, K4D } \
}
+#define LAYOUT_60_ansi_split_bs_rshift_space( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K49, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K47, K3D, K3C, \
+ K40, K41, K42, K46, K45, K44, K4A, K4B, K48, K4C, K4D \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
+ { K40, K41, K42, KC_NO, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D } \
+}
+
#define LAYOUT_60_iso( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \
diff --git a/keyboards/yanghu/unicorne/config.h b/keyboards/yanghu/unicorne/config.h
new file mode 100644
index 000000000000..652afeb3b473
--- /dev/null
+++ b/keyboards/yanghu/unicorne/config.h
@@ -0,0 +1,76 @@
+/* Copyright 2021 Yang Hu
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x0204
+#define DEVICE_VER 0x0001
+#define MANUFACTURER yanghu
+#define PRODUCT unicorne
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 12
+
+#define MATRIX_COL_PINS \
+ { A14, A15, B13, B14, B15, A13, A0, A1, A2, A3, A6, A7 }
+#define MATRIX_ROW_PINS \
+ { B9, B8, A10, A9 }
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+#define ENCODERS_PAD_A \
+ { B10, B2 }
+#define ENCODERS_PAD_B \
+ { B12, B0 }
+
+/* Audio */
+#define AUDIO_PIN A8
+#define AUDIO_PWM_PAL_MODE 1
+#define AUDIO_PWM_DRIVER PWMD1
+#define AUDIO_PWM_CHANNEL 1
+#define AUDIO_STATE_TIMER GPTD4
+
+/* RGB LED */
+#define RGB_DI_PIN B1
+#define RGBLED_NUM 8
+#define DRIVER_LED_TOTAL RGBLED_NUM
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+
+#define WS2812_PWM_DRIVER PWMD3
+#define WS2812_PWM_CHANNEL 4
+#define WS2812_PWM_PAL_MODE 2
+#define WS2812_DMA_STREAM STM32_DMA1_STREAM2
+#define WS2812_DMA_CHANNEL 5
+#define WS2812_EXTERNAL_PULLUP
+
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
diff --git a/keyboards/yanghu/unicorne/f411/halconf.h b/keyboards/yanghu/unicorne/f411/halconf.h
new file mode 100644
index 000000000000..d28ae12fde5e
--- /dev/null
+++ b/keyboards/yanghu/unicorne/f411/halconf.h
@@ -0,0 +1,27 @@
+/* Copyright 2020 QMK
+ *
+ * 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 .
+ */
+
+#pragma once
+
+/* PWM for AUDIO and RGB LED */
+#define HAL_USE_PWM TRUE
+/* GPT and PAL for Audio */
+#define HAL_USE_GPT TRUE
+#define HAL_USE_PAL TRUE
+/* I2C for OLED display */
+#define HAL_USE_I2C TRUE
+
+#include_next
diff --git a/keyboards/yanghu/unicorne/f411/mcuconf.h b/keyboards/yanghu/unicorne/f411/mcuconf.h
new file mode 100644
index 000000000000..f4dc31bff28a
--- /dev/null
+++ b/keyboards/yanghu/unicorne/f411/mcuconf.h
@@ -0,0 +1,34 @@
+/* Copyright 2020 QMK
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#include_next
+
+/* TIM1 PWM used for audio driver */
+#undef STM32_PWM_USE_TIM1
+#define STM32_PWM_USE_TIM1 TRUE
+/* TIM5 GPT used for audio driver */
+#undef STM32_GPT_USE_TIM4
+#define STM32_GPT_USE_TIM4 TRUE
+
+/* TIM3 used for WS2812 driver */
+#undef STM32_PWM_USE_TIM3
+#define STM32_PWM_USE_TIM3 TRUE
+
+/* I2C used for OLED display */
+#undef STM32_I2C_USE_I2C1
+#define STM32_I2C_USE_I2C1 TRUE
diff --git a/keyboards/yanghu/unicorne/f411/rules.mk b/keyboards/yanghu/unicorne/f411/rules.mk
new file mode 100644
index 000000000000..b32a8b7f5bda
--- /dev/null
+++ b/keyboards/yanghu/unicorne/f411/rules.mk
@@ -0,0 +1,5 @@
+# MCU name
+MCU = STM32F411
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
diff --git a/keyboards/yanghu/unicorne/glcdfont.c b/keyboards/yanghu/unicorne/glcdfont.c
new file mode 100644
index 000000000000..24c06471ff37
--- /dev/null
+++ b/keyboards/yanghu/unicorne/glcdfont.c
@@ -0,0 +1,247 @@
+/* Copyright 2021 Yang Hu
+ *
+ * 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 .
+ */
+#pragma once
+
+#include "progmem.h"
+
+// clang-format off
+const unsigned char font[] PROGMEM = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
+ 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
+ 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
+ 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
+ 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
+ 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
+ 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
+ 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
+ 0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
+ 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
+ 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
+ 0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
+ 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
+ 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
+ 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
+ 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
+ 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
+ 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
+ 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
+ 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
+ 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
+ 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
+ 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
+ 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
+ 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
+ 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
+ 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
+ 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
+ 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
+ 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
+ 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
+ 0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
+ 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
+ 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
+ 0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
+ 0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
+ 0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
+ 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
+ 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
+ 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
+ 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
+ 0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
+ 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
+ 0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
+ 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
+ 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
+ 0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
+ 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
+ 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
+ 0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
+ 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
+ 0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
+ 0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
+ 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
+ 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
+ 0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
+ 0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
+ 0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
+ 0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
+ 0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
+ 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
+ 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
+ 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
+ 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
+ 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
+ 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
+ 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
+ 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
+ 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
+ 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
+ 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
+ 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
+ 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
+ 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
+ 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
+ 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
+ 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
+ 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
+ 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
+ 0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
+ 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
+ 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
+ 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
+ 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
+ 0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
+ 0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
+ 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
+ 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
+ 0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
+ 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
+ 0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
+ 0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
+ 0x20, 0x54, 0x54, 0x78, 0x40, 0x00,
+ 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,
+ 0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
+ 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,
+ 0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
+ 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
+ 0x58, 0xA4, 0xA4, 0x9C, 0x78, 0x00,
+ 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,
+ 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,
+ 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
+ 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,
+ 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,
+ 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,
+ 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,
+ 0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
+ 0xFC, 0x18, 0x24, 0x24, 0x18, 0x00,
+ 0x18, 0x24, 0x24, 0x18, 0xFC, 0x00,
+ 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,
+ 0x48, 0x54, 0x54, 0x54, 0x24, 0x00,
+ 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,
+ 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,
+ 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
+ 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
+ 0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
+ 0x4C, 0x10, 0x10, 0x10, 0x7C, 0x00,
+ 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
+ 0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
+ 0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
+ 0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
+ 0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
+ 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
+ 0x00, 0x00, 0xF0, 0xF8, 0x9C, 0x0C,
+ 0x0C, 0x1C, 0xF8, 0xE0, 0x00, 0x00,
+ 0x00, 0xE0, 0xF8, 0x1C, 0x0C, 0x0C,
+ 0x9C, 0xF8, 0x60, 0x00, 0x00, 0x00,
+ 0x00, 0x0C, 0x0C, 0x0C, 0x3C, 0xF8,
+ 0xC0, 0x00, 0x00, 0x00, 0x00, 0x0C,
+ 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0,
+ 0xF0, 0xF8, 0xFC, 0xFC, 0xF8, 0xF0,
+ 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xC0, 0xE0, 0x70, 0x38,
+ 0x1C, 0x0C, 0x06, 0x86, 0x86, 0x86,
+ 0x86, 0x86, 0xC6, 0xC6, 0x0C, 0x1C,
+ 0x38, 0xF0, 0xE0, 0xC0, 0x00, 0x00,
+ 0x00, 0x60, 0xF8, 0x0C, 0x24, 0xE6,
+ 0xE6, 0x24, 0x06, 0x06, 0x24, 0xE6,
+ 0xE6, 0x24, 0x06, 0x06, 0x24, 0xE6,
+ 0xE6, 0x24, 0x0C, 0xF8, 0x60, 0x00,
+ 0x00, 0xE0, 0xF0, 0x18, 0x0C, 0x04,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x86, 0x86, 0xC6, 0x46, 0xE6, 0x66,
+ 0x04, 0x0C, 0x18, 0xF0, 0xE0, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xFE, 0x8A, 0x92, 0xA2, 0xC2,
+ 0xFE, 0xC2, 0xA2, 0x92, 0x0A, 0x02,
+ 0x82, 0xE2, 0x7A, 0x5A, 0x42, 0x42,
+ 0x42, 0xC2, 0xC2, 0x42, 0xFE, 0x00,
+ 0xFE, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x82, 0xE2, 0xFA, 0x7A,
+ 0xFA, 0xE2, 0x82, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0xFE, 0x00,
+ 0x00, 0x00, 0x00, 0x81, 0x81, 0xC3,
+ 0xC3, 0xC3, 0xFF, 0xFF, 0xC3, 0xC3,
+ 0xC3, 0xFF, 0xFF, 0xC3, 0xC3, 0xC3,
+ 0x81, 0x81, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x0F, 0x3C, 0xF0, 0xC0, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x06, 0x07, 0x07, 0x07, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x07, 0x07, 0x07, 0x06, 0x00,
+ 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x00, 0x00, 0x7F, 0xFF, 0xC1, 0xC1,
+ 0xC1, 0xC1, 0xFF, 0x7F, 0xE0, 0x80,
+ 0x80, 0xC0, 0xFF, 0x7F, 0x00, 0x00,
+ 0x00, 0xDB, 0xFF, 0x00, 0x00, 0x1F,
+ 0x3F, 0x70, 0xE0, 0xC0, 0xC0, 0xFF,
+ 0xFF, 0xC0, 0xC0, 0xE0, 0x70, 0x3F,
+ 0x1F, 0x00, 0x00, 0xFF, 0xDB, 0x00,
+ 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00,
+ 0xC0, 0xF8, 0xFE, 0xFF, 0xF9, 0xF1,
+ 0x61, 0x60, 0x3C, 0x07, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00,
+ 0x00, 0x00, 0xC0, 0xF0, 0x3C, 0x0E,
+ 0x0E, 0x3C, 0xF0, 0xC0, 0x00, 0x00,
+ 0x00, 0xFF, 0x48, 0x44, 0xC2, 0xE1,
+ 0x7F, 0x51, 0xC2, 0xC4, 0x4C, 0x06,
+ 0x03, 0x0F, 0x38, 0x60, 0xC0, 0xE0,
+ 0x38, 0x0F, 0x00, 0x00, 0xFF, 0x00,
+ 0xFF, 0x00, 0x00, 0x00, 0x80, 0xE0,
+ 0xF8, 0x7E, 0x67, 0x63, 0x60, 0x60,
+ 0x60, 0x63, 0x67, 0x7E, 0xF8, 0xE0,
+ 0x80, 0x00, 0x00, 0x00, 0xFF, 0x00,
+ 0x00, 0x00, 0x0F, 0x1F, 0x39, 0x30,
+ 0x30, 0x18, 0x1F, 0x07, 0x00, 0x00,
+ 0x00, 0x07, 0x1F, 0x38, 0x30, 0x30,
+ 0x39, 0x1F, 0x06, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F,
+ 0x3C, 0x30, 0x30, 0x30, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F,
+ 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F,
+ 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x03, 0x07, 0x0E,
+ 0x1C, 0x38, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x30, 0x38, 0x18, 0x18, 0x01,
+ 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x06, 0x1F, 0x30, 0x20, 0x60,
+ 0x60, 0x20, 0x64, 0x64, 0x26, 0x67,
+ 0x67, 0x26, 0x64, 0x64, 0x20, 0x60,
+ 0x60, 0x20, 0x30, 0x1F, 0x06, 0x00,
+ 0x00, 0x07, 0x0F, 0x18, 0x30, 0x23,
+ 0x63, 0x61, 0x61, 0x60, 0x60, 0x60,
+ 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
+ 0x20, 0x30, 0x18, 0x0F, 0x07, 0x00,
+ 0x0C, 0x0F, 0x03, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x03, 0x0F, 0x0C,
+ 0x00, 0x7F, 0x60, 0x71, 0x53, 0x5E,
+ 0x4C, 0x4E, 0x5B, 0x50, 0x60, 0x70,
+ 0x58, 0x4C, 0x46, 0x43, 0x41, 0x43,
+ 0x4E, 0x78, 0x70, 0x60, 0x7F, 0x00,
+ 0x7F, 0x40, 0x4C, 0x4E, 0x4F, 0x43,
+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x43,
+ 0x4F, 0x4E, 0x4C, 0x40, 0x7F, 0x00,
+};
+// clang-format on
diff --git a/keyboards/yanghu/unicorne/info.json b/keyboards/yanghu/unicorne/info.json
new file mode 100644
index 000000000000..995bed8a03b4
--- /dev/null
+++ b/keyboards/yanghu/unicorne/info.json
@@ -0,0 +1,62 @@
+{
+ "keyboard_name": "Unicorne",
+ "url": "https://github.com/yanghu/unicorne",
+ "maintainer": "yanghu",
+ "layouts": {
+ "LAYOUT_unicorne": {
+ "layout": [
+ {"label":"Tab", "x":0, "y":0.8},
+ {"label":"Q", "x":1, "y":0.8},
+ {"label":"W", "x":2, "y":0.1},
+ {"label":"E", "x":3, "y":0},
+ {"label":"R", "x":4, "y":0.1},
+ {"label":"T", "x":5, "y":0.2},
+
+ {"label":"Y", "x":9, "y":0.2},
+ {"label":"U", "x":10, "y":0.1},
+ {"label":"I", "x":11, "y":0},
+ {"label":"O", "x":12, "y":0.1},
+ {"label":"P", "x":13, "y":0.8},
+ {"label":"Back Space", "x":14, "y":0.8},
+
+ {"label":"Ctrl / Esc", "x":0, "y":1.8},
+ {"label":"A", "x":1, "y":1.8},
+ {"label":"S", "x":2, "y":1.1},
+ {"label":"D", "x":3, "y":1},
+ {"label":"F", "x":4, "y":1.1},
+ {"label":"G", "x":5, "y":1.2},
+
+ {"label":"H", "x":9, "y":1.2},
+ {"label":"J", "x":10, "y":1.1},
+ {"label":"K", "x":11, "y":1},
+ {"label":"L", "x":12, "y":1.1},
+ {"label":";", "x":13, "y":1.8},
+ {"label":"'", "x":14, "y":1.8},
+
+ {"label":"Shift", "x":0, "y":2.8},
+ {"label":"Z", "x":1, "y":2.8},
+ {"label":"X", "x":2, "y":2.1},
+ {"label":"C", "x":3, "y":2},
+ {"label":"V", "x":4, "y":2.1},
+ {"label":"B", "x":5, "y":2.2},
+
+ {"label":"N", "x":9, "y":2.2},
+ {"label":"M", "x":10, "y":2.1},
+ {"label":",", "x":11, "y":2},
+ {"label":".", "x":12, "y":2.1},
+ {"label":"/", "x":13, "y":2.8},
+ {"label":"Shift / Enter", "x":14, "y":2.8},
+
+ {"label":"Ctrl", "x":3, "y":3.7},
+ {"label":"Alt", "x":4, "y":3.7},
+ {"label":"Lower", "x":5, "y":3.7},
+ {"label":"Enter", "x":6, "y":3.2, "h":1.5},
+
+ {"label":"Backspace", "x":8, "y":3.2, "h":1.5},
+ {"label":"Space", "x":9, "y":3.7},
+ {"label":"Raise", "x":10, "y":3.7},
+ {"label":"RGUI", "x":11, "y":3.7}
+ ]
+ }
+ }
+}
diff --git a/keyboards/yanghu/unicorne/keymaps/default/config.h b/keyboards/yanghu/unicorne/keymaps/default/config.h
new file mode 100644
index 000000000000..e7ee9814efe6
--- /dev/null
+++ b/keyboards/yanghu/unicorne/keymaps/default/config.h
@@ -0,0 +1,22 @@
+/* Copyright 2021 Yang Hu
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#define OLED_FONT_H "keyboards/yanghu/unicorne/glcdfont.c"
+#define ENCODER_RESOLUTION 4
+#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_BREATHING
+#define RGBLIGHT_DEFAULT_COLOR HSV_BLUE
diff --git a/keyboards/yanghu/unicorne/keymaps/default/keymap.c b/keyboards/yanghu/unicorne/keymaps/default/keymap.c
new file mode 100644
index 000000000000..26fb01426097
--- /dev/null
+++ b/keyboards/yanghu/unicorne/keymaps/default/keymap.c
@@ -0,0 +1,92 @@
+/* Copyright 2021 Yang Hu
+ *
+ * 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
+#include "layers.h"
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+#define ADJUST MO(_ADJUST)
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_split_3x6_4(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ LCTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSFT_T(KC_ENT),
+ KC_LCTL, KC_LALT, LOWER, KC_ENT, KC_BSPC, KC_SPC, RAISE, KC_RGUI
+ ),
+
+ [_LOWER] = LAYOUT_split_3x6_4(
+ _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_GRV, KC_TILD,
+ _______, KC_ESC, KC_LGUI, KC_LALT, KC_CAPS, KC_DQUO, KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_PSCR, RSFT_T(KC_SPC),
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [_RAISE] = LAYOUT_split_3x6_4(
+ _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
+ _______, KC_ESC, KC_RGUI, KC_RALT, KC_CAPS, KC_QUOT, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [_ADJUST] = LAYOUT_split_3x6_4(
+ RGB_VAI, RGB_SAI, RGB_HUI, RGB_MOD, XXXXXXX, RGB_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ RGB_VAD, RGB_SAD, RGB_HUD, RGB_RMOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
+// clang-format on
+layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); }
+
+// Left encoder scrolls the mousewheel. Right encoder adjusts underglow hue.
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (index == 0) {
+ if (clockwise) {
+#ifdef MOUSEKEY_ENABLE
+ tap_code(KC_MS_WH_DOWN);
+#else
+ tap_code(KC_PGDN);
+#endif
+ } else {
+#ifdef MOUSEKEY_ENABLE
+ tap_code(KC_MS_WH_UP);
+#else
+ tap_code(KC_PGUP);
+#endif
+ }
+ } else { // index = 1: right encoder
+ if (clockwise) {
+#ifdef RGB_MATRIX_ENABLE
+ rgb_matrix_step();
+#else
+ rgblight_increase_hue_noeeprom();
+#endif
+ } else {
+#ifdef RGB_MATRIX_ENABLE
+ rgb_matrix_step_reverse();
+#else
+ rgblight_decrease_hue_noeeprom();
+#endif
+ }
+ }
+ return false;
+}
+
+// Set underglow color to blue.
+void keyboard_post_init_user(void) { rgblight_sethsv_noeeprom(RGBLIGHT_DEFAULT_COLOR); }
diff --git a/keyboards/yanghu/unicorne/keymaps/default/layers.h b/keyboards/yanghu/unicorne/keymaps/default/layers.h
new file mode 100644
index 000000000000..0505d4956bab
--- /dev/null
+++ b/keyboards/yanghu/unicorne/keymaps/default/layers.h
@@ -0,0 +1,24 @@
+/* Copyright 2021 Yang Hu
+ *
+ * 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 .
+ */
+
+#pragma once
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
diff --git a/keyboards/yanghu/unicorne/keymaps/default/oled.c b/keyboards/yanghu/unicorne/keymaps/default/oled.c
new file mode 100644
index 000000000000..417f573ff03c
--- /dev/null
+++ b/keyboards/yanghu/unicorne/keymaps/default/oled.c
@@ -0,0 +1,67 @@
+/* Copyright 2021 Yang Hu
+ *
+ * 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 .
+ */
+#ifdef OLED_ENABLE
+# include QMK_KEYBOARD_H
+# include "layers.h"
+
+// Some characters position:
+// alt: 84 85 86/a..../c...
+// shift:87 88 89/a.../c...
+// ctrl: b6 b6/d.../
+// capslock: 9c-9f/b.../d...
+// numlock: 98-9b/b.../d...
+// navigation logo: 92-95/b2.../d2...
+// symbol logo: 8a-8d/aa..../ca....
+// qmk logos; 8e-91/ae..../ce....
+void oled_render_layer(void) {
+ /* static const char PROGMEM cmd_logo[] = { */
+ /* 0x80, 0x81, 0x82, 0x83, 10, */
+ /* 0xa0, 0xa1, 0xa2, 0xa3, 10, */
+ /* 0xc0, 0xc1, 0xc2, 0xc3, 10, */
+ /* 0}; */
+ // clang-format off
+ static const char PROGMEM numlock_logo[] = {
+ 0x98, 0x99, 0x9a, 0x9b, 10,
+ 0xb8, 0xb9, 0xba, 0xbb, 10,
+ 0xd8, 0xd9, 0xda, 0xdb, 10, 0};
+ static const char PROGMEM symbol_logo[] = {
+ 0x8a, 0x8b, 0x8c, 0x8d, 10,
+ 0xaa, 0xab, 0xac, 0xad, 10,
+ 0xca, 0xcb, 0xcc, 0xcd, 10, 0};
+ static const char PROGMEM qmk_logo[] = {
+ 0x8e, 0x8f, 0x90, 0x91, 10,
+ 0xae, 0xaf, 0xb0, 0xb1, 10,
+ 0xce, 0xcf, 0xd0, 0xd1, 10, 0};
+ // clang-format on
+ if (IS_LAYER_ON(_LOWER)) {
+ oled_write_P(symbol_logo, false);
+ } else if (IS_LAYER_ON(_RAISE)) {
+ oled_write_P(numlock_logo, false);
+ } else if (IS_LAYER_ON(_BASE)) {
+ oled_write_P(qmk_logo, false);
+ } else {
+ if (IS_LAYER_ON(_ADJUST)) {
+ oled_write_ln("ADJ", false);
+ } else {
+ oled_write_ln("?????", false);
+ }
+ oled_write_ln(" ", false);
+ oled_write_ln(" ", false);
+ oled_write_ln(" ", false);
+ }
+}
+
+#endif
diff --git a/keyboards/yanghu/unicorne/keymaps/default/readme.md b/keyboards/yanghu/unicorne/keymaps/default/readme.md
new file mode 100644
index 000000000000..b6ce9e423758
--- /dev/null
+++ b/keyboards/yanghu/unicorne/keymaps/default/readme.md
@@ -0,0 +1,10 @@
+![keymap](https://imgur.com/48cFzA5.jpg)
+
+# Default Unicorne Layout
+
+This is the default layout for Unicorne. The "lower" layer consists of symbols
+and navigation, while "raises' has numbers, some other symbols and function
+keys.
+
+Press `lower` and `raise` together activates `adjust` layer, with RGB controls,
+as well as access to reset/bootloader.
diff --git a/keyboards/yanghu/unicorne/keymaps/default/rules.mk b/keyboards/yanghu/unicorne/keymaps/default/rules.mk
new file mode 100644
index 000000000000..dbfa81b6ce06
--- /dev/null
+++ b/keyboards/yanghu/unicorne/keymaps/default/rules.mk
@@ -0,0 +1 @@
+SRC += oled.c
diff --git a/keyboards/yanghu/unicorne/readme.md b/keyboards/yanghu/unicorne/readme.md
new file mode 100644
index 000000000000..3da5e97bf4f9
--- /dev/null
+++ b/keyboards/yanghu/unicorne/readme.md
@@ -0,0 +1,17 @@
+# Unicorne
+
+![Unicorne](https://imgur.com/g1nN3b4h.jpg)
+
+A compact 40% (3x6\_4) single-piece angled ortholinear ergo keyboard kit inspired by crkbd, Kyria, Ferris and Reviung41. Features OLED display, audio buzzer, RGB LED underglow as well as encoders.
+
+* Keyboard Maintainer: [Yang Hu](https://github.com/yanghu)
+* Hardware Supported: Unicorne PCB 1.0
+* Hardware Availability: Open source design at https://github.com/yanghu/unicorne
+
+To enter bootloader, long press the reset button for 3-5 seconds then release. More details can be found at [keyboard wiki](https://github.com/yanghu/unicorne/wiki/Build-guide#testing-the-board).
+
+Make example for this keyboard (after setting up your build environment):
+
+ make yanghu/unicorne: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/yanghu/unicorne/rules.mk b/keyboards/yanghu/unicorne/rules.mk
new file mode 100644
index 000000000000..17296a9bc2d4
--- /dev/null
+++ b/keyboards/yanghu/unicorne/rules.mk
@@ -0,0 +1,26 @@
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # 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
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = yes # Audio output
+ENCODER_ENABLE = yes
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
+
+WS2812_DRIVER = pwm
+AUDIO_DRIVER = pwm_hardware
+
+RGB_MATRIX_ENABLE = no # Do not enable with RGBLIGHT
+RGB_MATRIX_DRIVER = WS2812
+
+DEFAULT_FOLDER = yanghu/unicorne/f411
diff --git a/keyboards/yanghu/unicorne/unicorne.c b/keyboards/yanghu/unicorne/unicorne.c
new file mode 100644
index 000000000000..27b87253df25
--- /dev/null
+++ b/keyboards/yanghu/unicorne/unicorne.c
@@ -0,0 +1,148 @@
+/* Copyright 2021 Yang Hu
+ *
+ * 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 "unicorne.h"
+
+
+// Custom i2c init to enable internal pull up resistor for i2c.
+void i2c_init(void) {
+ static bool is_initialised = false;
+ if (!is_initialised) {
+ is_initialised = true;
+
+ // Try releasing special pins for a short time
+ palSetPadMode(I2C1_SCL_BANK, I2C1_SCL, PAL_MODE_INPUT);
+ palSetPadMode(I2C1_SDA_BANK, I2C1_SDA, PAL_MODE_INPUT);
+
+ chThdSleepMilliseconds(10);
+ // Use internal pull up since we do not have pull up on i2c pins in v1 design.
+ palSetPadMode(I2C1_SCL_BANK, I2C1_SCL, PAL_MODE_ALTERNATE(I2C1_SCL_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN | PAL_STM32_PUPDR_PULLUP);
+ palSetPadMode(I2C1_SDA_BANK, I2C1_SDA, PAL_MODE_ALTERNATE(I2C1_SDA_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN | PAL_STM32_PUPDR_PULLUP);
+ }
+}
+
+// LED matrix
+// physical location
+// 2 3 4 5
+//
+// 1 6
+// 0 7
+#ifdef RGB_MATRIX_ENABLE
+// clang-format off
+led_config_t g_led_config = {{
+ // Key Matrix to LED Index
+ // Since we only have 8 LEDs, map the keys near them to the same LED.
+ {2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5},
+ {2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5},
+ {1, 1, 1, 0, 0, 0, 7, 7, 7, 6, 6, 6},
+ {NO_LED, NO_LED, NO_LED, 0, 0, 0, 7, 7, 7, NO_LED, NO_LED, NO_LED},
+}, {// LED Index to Physical Position
+ {94, 60},
+ {18, 44},
+ {8, 10},
+ {94, 10},
+ {130,10},
+ {216, 10},
+ {208, 44},
+ {130, 60}
+}, {// LED Index to Flag
+ LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL,
+ LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL
+}};
+// clang-format on
+#endif
+
+#ifdef OLED_ENABLE
+// OLED shared code
+// The oled is vertical. Need to rotate 270 degrees.
+__attribute__((weak)) oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; }
+
+// Render layer status on OLED. To be re-implemented by keymaps since layers are
+// defined there.
+__attribute__((weak)) void oled_render_layer(void) { return; }
+
+// Oneshot mods status
+uint8_t osmods;
+
+__attribute__((weak)) void oled_render_mods(void) {
+ static const char PROGMEM ctrl[] = {0xb6, 0xb7, 10, 0xd6, 0xd7, 10, 0x20, 0x20, 10, 0};
+ static const char PROGMEM shift[] = {0x87, 0x88, 0x89, 10, 0xa7, 0xa8, 0xa9, 10, 0xc7, 0xc8, 0xc9, 10, 0};
+ static const char PROGMEM alt[] = {0x84, 0x85, 0x86, 10, 0xa4, 0xa5, 0xa6, 10, 0xc4, 0xc5, 0xc6, 10, 0};
+ static const char PROGMEM ctrl_alt[] = {0xb6, 0xb7, 0x84, 0x85, 0x86, 0xd6, 0xd7, 0xa4, 0xa5, 0xa6, 0x20, 0x20, 0xc4, 0xc5, 0xc6, 0};
+
+ static const char PROGMEM ctrl_shift[] = {0xb6, 0xb7, 0x87, 0x88, 0x89, 0xd6, 0xd7, 0xa7, 0xa8, 0xa9, 0x20, 0x20, 0xc7, 0xc8, 0xc9, 0};
+ static const char PROGMEM c_a_shift[] = {0xb6, 0xb7, 0x84, 0x85, 0x86, 0xd6, 0xd7, 0xa4, 0xa5, 0xa6, 0x20, 0x20, 0xc4, 0xc5, 0xc6, 0x87, 0x88, 0x89, 10, 0xa7, 0xa8, 0xa9, 10, 0xc7, 0xc8, 0xc9, 10, 0};
+ // Now check mod status and render.
+ static uint8_t mods;
+ mods = get_mods() | osmods;
+ if ((mods & MOD_MASK_CTRL) && (mods & MOD_MASK_ALT) && (mods & MOD_MASK_SHIFT)) {
+ oled_write_P(c_a_shift, false);
+ } else if ((mods & MOD_MASK_CTRL) && (mods & MOD_MASK_ALT)) {
+ oled_write_P(ctrl_alt, false);
+ } else if ((mods & MOD_MASK_CTRL) && (mods & MOD_MASK_SHIFT)) {
+ oled_write_P(ctrl_shift, false);
+ } else if ((mods & MOD_MASK_SHIFT) && (mods & MOD_MASK_ALT)) {
+ oled_write_P(alt, false);
+ oled_write_P(shift, false);
+ } else if (mods & MOD_MASK_CTRL) {
+ oled_write_P(ctrl, false);
+ } else if (mods & MOD_MASK_ALT) {
+ oled_write_P(alt, false);
+ } else if (mods & MOD_MASK_SHIFT) {
+ oled_write_P(shift, false);
+ } else {
+ for (int i = 0; i < 6; ++i) {
+ oled_write_ln(" ", false);
+ }
+ }
+ return;
+}
+
+void oneshot_mods_changed_user(uint8_t mods) { osmods = mods; }
+
+// Call this from "led_update_user" and use `led_state.caps_lock` to check
+// the status of capslock.
+__attribute__((weak)) void oled_render_capslock(bool caps_on) {
+ static const char PROGMEM capslock_logo[] = {0x9c, 0x9d, 0x9e, 0x9f, 10, 0xbc, 0xbd, 0xbe, 0xbf, 10, 0xdc, 0xdd, 0xde, 0xdf, 10, 0};
+ if (caps_on) {
+ oled_write_P(capslock_logo, false);
+ } else {
+ for (int i = 0; i < 3; ++i) {
+ oled_write_ln(" ", false);
+ }
+ }
+}
+
+char keylog_str[24] = {};
+
+const char code_to_name[60] = {' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'R', 'E', 'B', 'T', '_', '-', '=', '[', ']', '\\', '#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' '};
+
+void set_keylog(uint16_t keycode, keyrecord_t *record) {
+ if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) {
+ keycode = keycode & 0xFF;
+ }
+}
+
+__attribute__((weak)) void oled_render_keylog(void) { oled_write(keylog_str, false); }
+
+// Keymaps can override this function
+__attribute__((weak)) void oled_task_user(void) {
+ /* oled_render_keylog(); */
+ oled_render_layer();
+ oled_render_mods();
+ led_t led_state = host_keyboard_led_state();
+ oled_render_capslock(led_state.caps_lock);
+}
+#endif
diff --git a/keyboards/yanghu/unicorne/unicorne.h b/keyboards/yanghu/unicorne/unicorne.h
new file mode 100644
index 000000000000..f0b5685f1d8f
--- /dev/null
+++ b/keyboards/yanghu/unicorne/unicorne.h
@@ -0,0 +1,50 @@
+/* Copyright 2021 Yang Hu
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#ifdef OLED_ENABLE
+void oled_render_capslock(bool caps_on);
+void oled_render_mods(void);
+void oled_render_keylog(void);
+#endif
+/* 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.
+ */
+
+// clang-format off
+#define LAYOUT_split_3x6_4( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \
+ K30, K31, K32, K33, K34, K35, K36, K37 \
+) \
+{ \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B }, \
+ { KC_NO, KC_NO, K30, K31, K32, K33, K34, K35, K36, K37, KC_NO, KC_NO} \
+}
+// clang-format on
+
+#define LAYOUT LAYOUT_split_3x6_4
diff --git a/keyboards/z12/keymaps/zigotica/config.h b/keyboards/z12/keymaps/zigotica/config.h
new file mode 100644
index 000000000000..fbab76d5f0d6
--- /dev/null
+++ b/keyboards/z12/keymaps/zigotica/config.h
@@ -0,0 +1,30 @@
+/* Copyright 2020 Sergi Meseguer
+
+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 .
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+#ifdef OLED_ENABLE
+ #define OLED_DISPLAY_128X32
+#endif
+
+// EC11 encoders' resolution.
+// Reduce the value to 2 if you feel missing values:
+#define ENCODER_RESOLUTION 4
+
+// Allows correct registered values by rotary encoder:
+#define TAP_CODE_DELAY 10
diff --git a/keyboards/z12/keymaps/zigotica/encoder.c b/keyboards/z12/keymaps/zigotica/encoder.c
new file mode 100644
index 000000000000..49a3d859b66e
--- /dev/null
+++ b/keyboards/z12/keymaps/zigotica/encoder.c
@@ -0,0 +1,114 @@
+/* Copyright 2020 Sergi Meseguer
+
+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 "zigotica.h"
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ switch(get_highest_layer(layer_state)){
+ case _VIM:
+ if (index == 0) { // LEFT
+ // Cycle through buffers
+ if (clockwise) {
+ register_code(KC_ESC);
+ SEND_STRING(":bprevious");
+ register_code(KC_ENT);
+ unregister_code(KC_ESC);
+ unregister_code(KC_ENT);
+ } else {
+ register_code(KC_ESC);
+ SEND_STRING(":bnext");
+ register_code(KC_ENT);
+ unregister_code(KC_ESC);
+ unregister_code(KC_ENT);
+ }
+ } else { // RIGHT
+ // Scroll
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ }
+ break;
+ case _BROWSER:
+ if (index == 0) { // LEFT
+ // Cycle through Tabs
+ if (clockwise) {
+ tap_code16(C(KC_TAB));
+ /* register_code16(G(KC_RCBR)); */
+ /* unregister_code16(G(KC_RCBR)); */
+ } else {
+ tap_code16(S(C(KC_TAB)));
+ /* register_code16(G(KC_LCBR)); */
+ /* unregister_code16(G(KC_LCBR)); */
+ }
+ } else { // RIGHT
+ // Scroll up/down
+ if (clockwise) {
+ register_code(KC_WH_U);
+ unregister_code(KC_WH_U);
+ } else {
+ register_code(KC_WH_D);
+ unregister_code(KC_WH_D);
+ }
+ }
+ break;
+ case _FIGMA:
+ if (index == 0) { // LEFT
+ // Volume control.
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ } else { // RIGHT
+ // Zoom in/out
+ if (clockwise) {
+ register_code(KC_LGUI);
+ register_code(KC_WH_D);
+ unregister_code(KC_WH_D);
+ unregister_code(KC_LGUI);
+ } else {
+ register_code(KC_LGUI);
+ register_code(KC_WH_U);
+ unregister_code(KC_WH_U);
+ unregister_code(KC_LGUI);
+ }
+ }
+ break;
+ case _TERMINAL:
+ default:
+ if (index == 0) { // LEFT
+ // Volume control.
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ } else { // RIGHT
+ // Scroll
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ }
+ break;
+ }
+ return false;
+}
+
+
diff --git a/keyboards/z12/keymaps/zigotica/encoder.h b/keyboards/z12/keymaps/zigotica/encoder.h
new file mode 100644
index 000000000000..2422c68f2869
--- /dev/null
+++ b/keyboards/z12/keymaps/zigotica/encoder.h
@@ -0,0 +1,18 @@
+/* Copyright 2020 Sergi Meseguer
+
+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 .
+*/
+
+#pragma once
+#include "zigotica.h"
diff --git a/keyboards/z12/keymaps/zigotica/keymap.c b/keyboards/z12/keymaps/zigotica/keymap.c
new file mode 100644
index 000000000000..7e969de96ed6
--- /dev/null
+++ b/keyboards/z12/keymaps/zigotica/keymap.c
@@ -0,0 +1,126 @@
+/* Copyright 2020
+ Sergi Meseguer
+
+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 "zigotica.h"
+
+// Custom Keycodes
+#define MODE_1 TO(_TERMINAL)
+#define MODE_2 TO(_FIGMA)
+#define MODE_3 TO(_BROWSER)
+#define MODE_4 TO(_VIM)
+
+enum custom_keycodes {
+ VIM_SIP = SAFE_RANGE
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case VIM_SIP:
+ if (record->event.pressed) {
+ register_code(KC_ESC);
+ SEND_STRING(":Ag ");
+ } else {
+ // released
+ unregister_code(KC_ESC);
+ }
+ break;
+ }
+ return true;
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/*
+ * TERMINAL Layer
+ *
+ * ,-----------------------------.
+ * | | TERM | FIGM | |
+ * |-------+------+------+-------|
+ * | VOL | BROW | VIM | SCROLL|
+ * |-------+------+------+-------|
+ * |-------+-------+-------|
+ * | MEDIA | o | o |
+ * |-------+-------+-------|
+ * | o | o | o |
+ * |-------+-------+-------|
+ */
+ [_TERMINAL] = LAYOUT(
+ MODE_1, MODE_2,
+ ZK_MEDIA, MODE_3, MODE_4, _______,
+ _______, _______, _______,
+ _______, _______, _______
+ ),
+/*
+ * VIM Layer
+ *
+ * ,-----------------------------.
+ * | | TERM | FIGM | |
+ * |-------+------+------+-------|
+ * |BUFFER | BROW | VIM | SCROLL|
+ * |-------+------+------+-------|
+ * |-------+-------+-------|
+ * |SEARCH | o | o |
+ * |-------+-------+-------|
+ * | o | o | o |
+ * |-------+-------+-------|
+ */
+ [_VIM] = LAYOUT(
+ _______, _______,
+ _______, _______, _______, _______,
+ VIM_SIP, _______, _______,
+ _______, _______, _______
+ ),
+/*
+ * FIGMA Layer
+ *
+ * ,-----------------------------.
+ * | | TERM | FIGM | |
+ * |-------+------+------+-------|
+ * | VOL | BROW | VIM | ZOOM |
+ * |-------+------+------+-------|
+ * |-------+-------+-------|
+ * | ZOOM | GRIDS | FULL |
+ * |-------+-------+-------|
+ * | o | o | o |
+ * |-------+-------+-------|
+ */
+ [_FIGMA] = LAYOUT(
+ _______, _______,
+ _______, _______, _______, _______,
+ LSFT(KC_1), LCTL(KC_G), LGUI(KC_BSLS),
+ _______, _______, _______
+ ),
+/*
+ * BROWSER Layer
+ *
+ * ,-----------------------------.
+ * | | TERM | FIGM | |
+ * |-------+------+------+-------|
+ * | TABS | BROW | VIM | SCROLL|
+ * |-------+------+------+-------|
+ * |-------+-------+-------|
+ * |SEARCH | BOOKM | DEVTL |
+ * |-------+-------+-------|
+ * | o | o | o |
+ * |-------+-------+-------|
+ */
+ [_BROWSER] = LAYOUT(
+ _______, _______,
+ _______, _______, _______, _______,
+ G(KC_F), G(KC_D), G(A(KC_I)),
+ _______, _______, _______
+ ),
+};
diff --git a/keyboards/z12/keymaps/zigotica/oled.c b/keyboards/z12/keymaps/zigotica/oled.c
new file mode 100644
index 000000000000..4b428a42b1dc
--- /dev/null
+++ b/keyboards/z12/keymaps/zigotica/oled.c
@@ -0,0 +1,43 @@
+/* Copyright 2020 Sergi Meseguer
+
+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 "zigotica.h"
+
+static void render_status(void) {
+ oled_write_P(PSTR("z12 v1.0\n"), false);
+ oled_write_P(PSTR("Layer: "), false);
+ switch (get_highest_layer(layer_state)) {
+ case _VIM:
+ oled_write_P(PSTR("VIM\n\nBUFFER SCROLL"), false);
+ break;
+ case _FIGMA:
+ oled_write_P(PSTR("FIGMA\n\nVOLUME ZOOM"), false);
+ break;
+ case _BROWSER:
+ oled_write_P(PSTR("BROWSER\n\nTABS SCROLL"), false);
+ break;
+ case _TERMINAL:
+ oled_write_P(PSTR("TERMINAL\n\nVOLUME SCROLL"), false);
+ break;
+ default:
+ oled_write_P(PSTR("Undef\n"), false);
+ }
+}
+
+void oled_task_user(void) {
+ render_status();
+}
+
diff --git a/keyboards/z12/keymaps/zigotica/oled.h b/keyboards/z12/keymaps/zigotica/oled.h
new file mode 100644
index 000000000000..2422c68f2869
--- /dev/null
+++ b/keyboards/z12/keymaps/zigotica/oled.h
@@ -0,0 +1,18 @@
+/* Copyright 2020 Sergi Meseguer
+
+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 .
+*/
+
+#pragma once
+#include "zigotica.h"
diff --git a/keyboards/z12/keymaps/zigotica/rules.mk b/keyboards/z12/keymaps/zigotica/rules.mk
new file mode 100644
index 000000000000..02e37aa80b3c
--- /dev/null
+++ b/keyboards/z12/keymaps/zigotica/rules.mk
@@ -0,0 +1,4 @@
+OLED_ENABLE = yes # Enables the use of OLED displays
+RAW_ENABLE = yes
+TAP_DANCE_ENABLE = yes
+MOUSEKEY_ENABLE = yes
diff --git a/keyboards/z12/z12.c b/keyboards/z12/z12.c
index 99fe62ab931c..2af8836cab56 100644
--- a/keyboards/z12/z12.c
+++ b/keyboards/z12/z12.c
@@ -18,22 +18,6 @@
#ifdef ENCODER_ENABLE
bool encoder_update_kb(uint8_t index, bool clockwise) {
- if (!encoder_update_user(index, clockwise)) { return false; }
- if (index == 0) { // LEFT
- // Scroll
- if (clockwise) {
- tap_code_delay(KC_PGDN, 10);
- } else {
- tap_code_delay(KC_PGUP, 10);
- }
- } else { // RIGHT
- // Volume control.
- if (clockwise) {
- tap_code_delay(KC_VOLU, 10);
- } else {
- tap_code_delay(KC_VOLD, 10);
- }
- }
- return false;
+ return encoder_update_user(index, clockwise);
}
#endif
diff --git a/keyboards/z34/config.h b/keyboards/z34/config.h
new file mode 100644
index 000000000000..71d6528ce803
--- /dev/null
+++ b/keyboards/z34/config.h
@@ -0,0 +1,65 @@
+/* Copyright 2020 Sergi Meseguer
+
+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 .
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x7A74
+#define PRODUCT_ID 0x0002
+#define DEVICE_VER 0x0001
+#define MANUFACTURER zigotica
+#define PRODUCT z34
+
+/* key matrix size */
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 5
+
+/*Keyboard Matrix Assignments */
+
+#define DIRECT_PINS { \
+ { C6, F7, F6, F5, F4 }, \
+ { D7, B6, B2, B3, B1 }, \
+ { E6, D4, D0, D1, D3 }, \
+ { B4, B5, NO_PIN, NO_PIN, NO_PIN } \
+}
+
+#define DIRECT_PINS_RIGHT { \
+ { F4, F5, F6, F7, C6 }, \
+ { B1, B3, B2, B6, D7 }, \
+ { D3, D1, D0, D4, E6 }, \
+ { B5, B4, NO_PIN, NO_PIN, NO_PIN } \
+}
+
+#define UNUSED_PINS
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* Serial settings */
+#define USE_SERIAL
+/* serial.c configuration for split keyboard */
+#define SOFT_SERIAL_PIN D2
+
+// EE_HANDS MASTER_RIGHT MASTER_LEFT
+#define MASTER_RIGHT
+
diff --git a/keyboards/z34/info.json b/keyboards/z34/info.json
new file mode 100644
index 000000000000..4a6dce752545
--- /dev/null
+++ b/keyboards/z34/info.json
@@ -0,0 +1,52 @@
+{
+ "keyboard_name": "z34",
+ "url": "https://github.com/zigotica/mechanical-keyboards/tree/main/z34",
+ "maintainer": "@zigotica",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"x": 0, "y": 0.93},
+ {"x": 1, "y": 0.31},
+ {"x": 2, "y": 0},
+ {"x": 3, "y": 0.28},
+ {"x": 4, "y": 0.42},
+
+ {"x": 7, "y": 0.42},
+ {"x": 8, "y": 0.28},
+ {"x": 9, "y": 0},
+ {"x": 10, "y": 0.31},
+ {"x": 11, "y": 0.93},
+
+ {"x": 0, "y": 1.93},
+ {"x": 1, "y": 1.31},
+ {"x": 2, "y": 1},
+ {"x": 3, "y": 1.28},
+ {"x": 4, "y": 1.42},
+
+ {"x": 7, "y": 1.42},
+ {"x": 8, "y": 1.28},
+ {"x": 9, "y": 1},
+ {"x": 10, "y": 1.31},
+ {"x": 11, "y": 1.93},
+
+ {"x": 0, "y": 2.93},
+ {"x": 1, "y": 2.31},
+ {"x": 2, "y": 2},
+ {"x": 3, "y": 2.28},
+ {"x": 4, "y": 2.42},
+
+ {"x": 7, "y": 2.42},
+ {"x": 8, "y": 2.28},
+ {"x": 9, "y": 2},
+ {"x": 10, "y": 2.31},
+ {"x": 11, "y": 2.93},
+
+ {"x": 3.5, "y": 3.5},
+ {"x": 4.5, "y": 4},
+
+ {"x": 6.5, "y": 4},
+ {"x": 7.5, "y": 3.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/z34/keymaps/default/config.h b/keyboards/z34/keymaps/default/config.h
new file mode 100644
index 000000000000..ae9881d3abf9
--- /dev/null
+++ b/keyboards/z34/keymaps/default/config.h
@@ -0,0 +1,22 @@
+/* Copyright 2020 Sergi Meseguer
+
+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 .
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+// EE_HANDS MASTER_RIGHT MASTER_LEFT
+#define MASTER_RIGHT
diff --git a/keyboards/z34/keymaps/default/keymap.c b/keyboards/z34/keymaps/default/keymap.c
new file mode 100644
index 000000000000..973d24eafbc7
--- /dev/null
+++ b/keyboards/z34/keymaps/default/keymap.c
@@ -0,0 +1,77 @@
+/* Copyright 2020 Sergi Meseguer
+
+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
+
+enum layers {
+ BASE = 0
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/*
+ * Base Layer: BASE
+ *
+ * ,---------------------------------------. ,---------------------------------------.
+ * | | | | | | | | | | | |
+ * | Q | W | E | R | T | | Y | U | I | O | P |
+ * | | | | | | | | | | | |
+ * |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
+ * | | | | | | | | | | | |
+ * | A | S | D | F | G | | H | J | K | L | ' |
+ * | | | | | | | | | | | |
+ * |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
+ * | | | | | | | | | | | |
+ * | Z | X | C | V | B | | N | M | , | . | / |
+ * | | | | | | | | | | | |
+ * `-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------.
+ * | | | | | |
+ * | ESC | SPC | | ENTER | BSPC |
+ * | | | | | |
+ * `---------------' `---------------'
+ *
+ */
+ [BASE] = LAYOUT(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,
+ KC_ESC, KC_SPC, KC_ENT, KC_BSPC
+ ),
+
+/*
+ * TEMPLATE
+ *
+ * ,---------------------------------------. ,---------------------------------------.
+ * | | | | | | | | | | | |
+ * | | | | | | | | | | | |
+ * | | | | | | | | | | | |
+ * |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
+ * | | | | | | | | | | | |
+ * | | | | | | | | | | | |
+ * | | | | | | | | | | | |
+ * |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
+ * | | | | | | | | | | | |
+ * | | | | | | | | | | | |
+ * | | | | | | | | | | | |
+ * `-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------.
+ * | | | | | |
+ * | | | | | |
+ * | | | | | |
+ * `---------------' `---------------'
+ *
+ */
+
+};
+
diff --git a/keyboards/z34/keymaps/default/readme.md b/keyboards/z34/keymaps/default/readme.md
new file mode 100644
index 000000000000..c6a0115573ce
--- /dev/null
+++ b/keyboards/z34/keymaps/default/readme.md
@@ -0,0 +1,3 @@
+# Default z34 Layout
+
+This is the default QWERTY layout that comes flashed on every z34.
diff --git a/keyboards/z34/keymaps/default/rules.mk b/keyboards/z34/keymaps/default/rules.mk
new file mode 100644
index 000000000000..827811a36239
--- /dev/null
+++ b/keyboards/z34/keymaps/default/rules.mk
@@ -0,0 +1,3 @@
+# There are no extra pins, so we make sure to disable OLED and Encoders
+OLED_SUPPORTED = no
+ENCODER_SUPPORTED = no
diff --git a/keyboards/z34/keymaps/zigotica/config.h b/keyboards/z34/keymaps/zigotica/config.h
new file mode 100644
index 000000000000..1b223cb71d25
--- /dev/null
+++ b/keyboards/z34/keymaps/zigotica/config.h
@@ -0,0 +1,28 @@
+/* Copyright 2020 Sergi Meseguer
+
+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 .
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+#define MASTER_RIGHT
+
+// these should work better for homerow modifiers
+#define TAPPING_TERM 350
+#define PERMISSIVE_HOLD
+#define IGNORE_MOD_TAP_INTERRUPT
+#define TAPPING_FORCE_HOLD
+
diff --git a/keyboards/z34/keymaps/zigotica/keymap.c b/keyboards/z34/keymaps/zigotica/keymap.c
new file mode 100644
index 000000000000..88c6a3db1bb9
--- /dev/null
+++ b/keyboards/z34/keymaps/zigotica/keymap.c
@@ -0,0 +1,57 @@
+/* Copyright 2020 Sergi Meseguer
+
+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 "zigotica.h"
+
+#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [BASE] = LAYOUT_wrapper(
+ _STENAI_L1, _STENAI_R1,
+ _STENAI_L2, _STENAI_R2,
+ _STENAI_L3, _STENAI_R3,
+ _STENAI_LT, _STENAI_RT
+ ),
+
+ [_NUM] = LAYOUT_wrapper(
+ ____NUM_L1, ____NUM_R1,
+ ____NUM_L2, ____NUM_R2,
+ ____NUM_L3, ____NUM_R3,
+ ____NUM_LT, ____NUM_RT
+ ),
+
+ [_NAV] = LAYOUT_wrapper(
+ ____NAV_L1, ____NAV_R1,
+ ____NAV_L2, ____NAV_R2,
+ ____NAV_L3, ____NAV_R3,
+ ____NAV_LT, ____NAV_RT
+ ),
+
+ [_SYM] = LAYOUT_wrapper(
+ ____SYM_L1, ____SYM_R1,
+ ____SYM_L2, ____SYM_R2,
+ ____SYM_L3, ____SYM_R3,
+ ____SYM_LT, ____SYM_RT
+ ),
+
+ [_FN] = LAYOUT_wrapper(
+ ____FN_L1, ____FN_R1,
+ ____FN_L2, ____FN_R2,
+ ____FN_L3, ____FN_R3,
+ ____FN_LT, ____FN_RT
+ ),
+};
+
diff --git a/keyboards/z34/keymaps/zigotica/rules.mk b/keyboards/z34/keymaps/zigotica/rules.mk
new file mode 100644
index 000000000000..9abdfb40b493
--- /dev/null
+++ b/keyboards/z34/keymaps/zigotica/rules.mk
@@ -0,0 +1,7 @@
+# There are no extra pins, so we make sure to disable OLED and Encoders
+OLED_SUPPORTED = no
+ENCODER_SUPPORTED = no
+
+MOUSEKEY_ENABLE = yes
+COMBO_ENABLE = yes
+TAP_DANCE_ENABLE = yes
diff --git a/keyboards/z34/readme.md b/keyboards/z34/readme.md
new file mode 100644
index 000000000000..29bbf571a343
--- /dev/null
+++ b/keyboards/z34/readme.md
@@ -0,0 +1,3 @@
+# z34
+
+Firmware for [z34 split keyboard](https://github.com/zigotica/mechanical-keyboards/tree/main/z34) designed by @zigotica
diff --git a/keyboards/z34/rules.mk b/keyboards/z34/rules.mk
new file mode 100644
index 000000000000..6370c7a93f71
--- /dev/null
+++ b/keyboards/z34/rules.mk
@@ -0,0 +1,28 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+SPLIT_KEYBOARD = yes # Split common
+LTO_ENABLE = yes # Enables Link Time Optimization (LTO) which reduces the compiled size
+
+# There are no extra pins, so we make sure to disable OLED and Encoders
+OLED_SUPPORTED = no # Enables the use of OLED displays
+ENCODER_SUPPORTED = no # Enables the use of encoders
+
diff --git a/keyboards/z34/z34.c b/keyboards/z34/z34.c
new file mode 100644
index 000000000000..779562e630eb
--- /dev/null
+++ b/keyboards/z34/z34.c
@@ -0,0 +1,17 @@
+/* Copyright 2020 Sergi Meseguer
+ *
+ * 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 "z34.h"
diff --git a/keyboards/z34/z34.h b/keyboards/z34/z34.h
new file mode 100644
index 000000000000..3def2d4c2c8e
--- /dev/null
+++ b/keyboards/z34/z34.h
@@ -0,0 +1,39 @@
+/* Copyright 2020 Sergi Meseguer
+ *
+ * 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"
+
+/* This a shortcut to help you visually see your layout */
+
+#define ___ KC_NO
+
+#define LAYOUT( \
+ L05, L04, L03, L02, L01, R01, R02, R03, R04, R05, \
+ L10, L09, L08, L07, L06, R06, R07, R08, R09, R10, \
+ L15, L14, L13, L12, L11, R11, R12, R13, R14, R15, \
+ L17, L16, R16, R17 \
+ ) \
+ { \
+ { L05, L04, L03, L02, L01 }, \
+ { L10, L09, L08, L07, L06 }, \
+ { L15, L14, L13, L12, L11 }, \
+ { L17, L16, ___, ___ , ___}, \
+ { R01, R02, R03, R04, R05 }, \
+ { R06, R07, R08, R09, R10 }, \
+ { R11, R12, R13, R14, R15 }, \
+ { R16, R17, ___, ___, ___ } \
+ }
+
diff --git a/keyboards/ziggurat/config.h b/keyboards/ziggurat/config.h
new file mode 100644
index 000000000000..9c38f5e796af
--- /dev/null
+++ b/keyboards/ziggurat/config.h
@@ -0,0 +1,46 @@
+/*
+Copyright 2021 kb-elmo
+
+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 .
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x8F5D
+#define PRODUCT_ID 0x5258
+#define DEVICE_VER 0x0001
+#define MANUFACTURER LaminarWoob
+#define PRODUCT Ziggurat
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 18
+
+/* Keyboard Matrix Assignments */
+#define MATRIX_ROW_PINS { A2, A1, A0, F7, A3 }
+#define MATRIX_COL_PINS { F6, F5, F4, F3, F2, F1, B5, B6, C2, C3, C4, C5, C6, C7, A7, A6, A5, A4 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
diff --git a/keyboards/ziggurat/info.json b/keyboards/ziggurat/info.json
new file mode 100644
index 000000000000..77bb288dd667
--- /dev/null
+++ b/keyboards/ziggurat/info.json
@@ -0,0 +1,414 @@
+{
+ "keyboard_name": "ziggurat",
+ "url": "",
+ "maintainer": "kb-elmo",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2.5, "y":0},
+ {"x":3.5, "y":0},
+ {"x":4.5, "y":0},
+ {"x":5.5, "y":0},
+ {"x":6.5, "y":0},
+ {"x":7.5, "y":0},
+ {"x":8.5, "y":0},
+ {"x":9.5, "y":0},
+ {"x":10.5, "y":0},
+ {"x":11.5, "y":0},
+ {"x":12.5, "y":0},
+ {"x":13.5, "y":0},
+ {"x":14.5, "y":0},
+ {"x":15.5, "y":0},
+ {"x":16.5, "y":0},
+ {"x":17.5, "y":0},
+ {"x":0, "y":1},
+ {"x":1, "y":1},
+ {"x":2.5, "y":1, "w":1.5},
+ {"x":4, "y":1},
+ {"x":5, "y":1},
+ {"x":6, "y":1},
+ {"x":7, "y":1},
+ {"x":8, "y":1},
+ {"x":9, "y":1},
+ {"x":10, "y":1},
+ {"x":11, "y":1},
+ {"x":12, "y":1},
+ {"x":13, "y":1},
+ {"x":14, "y":1},
+ {"x":15, "y":1},
+ {"x":16, "y":1, "w":1.5},
+ {"x":17.5, "y":1},
+ {"x":0, "y":2},
+ {"x":1, "y":2},
+ {"x":2.5, "y":2, "w":1.75},
+ {"x":4.25, "y":2},
+ {"x":5.25, "y":2},
+ {"x":6.25, "y":2},
+ {"x":7.25, "y":2},
+ {"x":8.25, "y":2},
+ {"x":9.25, "y":2},
+ {"x":10.25, "y":2},
+ {"x":11.25, "y":2},
+ {"x":12.25, "y":2},
+ {"x":13.25, "y":2},
+ {"x":14.25, "y":2},
+ {"x":15.25, "y":2, "w":2.25},
+ {"x":17.5, "y":2},
+ {"x":0, "y":3},
+ {"x":1, "y":3},
+ {"x":2.5, "y":3, "w":1.25},
+ {"x":3.75, "y":3},
+ {"x":4.75, "y":3},
+ {"x":5.75, "y":3},
+ {"x":6.75, "y":3},
+ {"x":7.75, "y":3},
+ {"x":8.75, "y":3},
+ {"x":9.75, "y":3},
+ {"x":10.75, "y":3},
+ {"x":11.75, "y":3},
+ {"x":12.75, "y":3},
+ {"x":13.75, "y":3},
+ {"x":14.75, "y":3, "w":1.75},
+ {"x":16.5, "y":3},
+ {"x":17.5, "y":3},
+ {"x":0, "y":4},
+ {"x":1, "y":4},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":1.25},
+ {"x":5, "y":4, "w":1.25},
+ {"x":6.25, "y":4, "w":6.25},
+ {"x":12.5, "y":4, "w":1.25},
+ {"x":13.75, "y":4, "w":1.25},
+ {"x":15.5, "y":4},
+ {"x":16.5, "y":4},
+ {"x":17.5, "y":4}
+ ]
+ },
+ "LAYOUT_ansi": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2.5, "y":0},
+ {"x":3.5, "y":0},
+ {"x":4.5, "y":0},
+ {"x":5.5, "y":0},
+ {"x":6.5, "y":0},
+ {"x":7.5, "y":0},
+ {"x":8.5, "y":0},
+ {"x":9.5, "y":0},
+ {"x":10.5, "y":0},
+ {"x":11.5, "y":0},
+ {"x":12.5, "y":0},
+ {"x":13.5, "y":0},
+ {"x":14.5, "y":0},
+ {"x":15.5, "y":0, "w":2},
+ {"x":17.5, "y":0},
+ {"x":0, "y":1},
+ {"x":1, "y":1},
+ {"x":2.5, "y":1, "w":1.5},
+ {"x":4, "y":1},
+ {"x":5, "y":1},
+ {"x":6, "y":1},
+ {"x":7, "y":1},
+ {"x":8, "y":1},
+ {"x":9, "y":1},
+ {"x":10, "y":1},
+ {"x":11, "y":1},
+ {"x":12, "y":1},
+ {"x":13, "y":1},
+ {"x":14, "y":1},
+ {"x":15, "y":1},
+ {"x":16, "y":1, "w":1.5},
+ {"x":17.5, "y":1},
+ {"x":0, "y":2},
+ {"x":1, "y":2},
+ {"x":2.5, "y":2, "w":1.75},
+ {"x":4.25, "y":2},
+ {"x":5.25, "y":2},
+ {"x":6.25, "y":2},
+ {"x":7.25, "y":2},
+ {"x":8.25, "y":2},
+ {"x":9.25, "y":2},
+ {"x":10.25, "y":2},
+ {"x":11.25, "y":2},
+ {"x":12.25, "y":2},
+ {"x":13.25, "y":2},
+ {"x":14.25, "y":2},
+ {"x":15.25, "y":2, "w":2.25},
+ {"x":17.5, "y":2},
+ {"x":0, "y":3},
+ {"x":1, "y":3},
+ {"x":2.5, "y":3, "w":2.25},
+ {"x":4.75, "y":3},
+ {"x":5.75, "y":3},
+ {"x":6.75, "y":3},
+ {"x":7.75, "y":3},
+ {"x":8.75, "y":3},
+ {"x":9.75, "y":3},
+ {"x":10.75, "y":3},
+ {"x":11.75, "y":3},
+ {"x":12.75, "y":3},
+ {"x":13.75, "y":3},
+ {"x":14.75, "y":3, "w":1.75},
+ {"x":16.5, "y":3},
+ {"x":17.5, "y":3},
+ {"x":0, "y":4},
+ {"x":1, "y":4},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":1.25},
+ {"x":5, "y":4, "w":1.25},
+ {"x":6.25, "y":4, "w":6.25},
+ {"x":12.5, "y":4, "w":1.25},
+ {"x":13.75, "y":4, "w":1.25},
+ {"x":15.5, "y":4},
+ {"x":16.5, "y":4},
+ {"x":17.5, "y":4}
+ ]
+ },
+ "LAYOUT_ansi_tsangan": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2.5, "y":0},
+ {"x":3.5, "y":0},
+ {"x":4.5, "y":0},
+ {"x":5.5, "y":0},
+ {"x":6.5, "y":0},
+ {"x":7.5, "y":0},
+ {"x":8.5, "y":0},
+ {"x":9.5, "y":0},
+ {"x":10.5, "y":0},
+ {"x":11.5, "y":0},
+ {"x":12.5, "y":0},
+ {"x":13.5, "y":0},
+ {"x":14.5, "y":0},
+ {"x":15.5, "y":0, "w":2},
+ {"x":17.5, "y":0},
+ {"x":0, "y":1},
+ {"x":1, "y":1},
+ {"x":2.5, "y":1, "w":1.5},
+ {"x":4, "y":1},
+ {"x":5, "y":1},
+ {"x":6, "y":1},
+ {"x":7, "y":1},
+ {"x":8, "y":1},
+ {"x":9, "y":1},
+ {"x":10, "y":1},
+ {"x":11, "y":1},
+ {"x":12, "y":1},
+ {"x":13, "y":1},
+ {"x":14, "y":1},
+ {"x":15, "y":1},
+ {"x":16, "y":1, "w":1.5},
+ {"x":17.5, "y":1},
+ {"x":0, "y":2},
+ {"x":1, "y":2},
+ {"x":2.5, "y":2, "w":1.75},
+ {"x":4.25, "y":2},
+ {"x":5.25, "y":2},
+ {"x":6.25, "y":2},
+ {"x":7.25, "y":2},
+ {"x":8.25, "y":2},
+ {"x":9.25, "y":2},
+ {"x":10.25, "y":2},
+ {"x":11.25, "y":2},
+ {"x":12.25, "y":2},
+ {"x":13.25, "y":2},
+ {"x":14.25, "y":2},
+ {"x":15.25, "y":2, "w":2.25},
+ {"x":17.5, "y":2},
+ {"x":0, "y":3},
+ {"x":1, "y":3},
+ {"x":2.5, "y":3, "w":2.25},
+ {"x":4.75, "y":3},
+ {"x":5.75, "y":3},
+ {"x":6.75, "y":3},
+ {"x":7.75, "y":3},
+ {"x":8.75, "y":3},
+ {"x":9.75, "y":3},
+ {"x":10.75, "y":3},
+ {"x":11.75, "y":3},
+ {"x":12.75, "y":3},
+ {"x":13.75, "y":3},
+ {"x":14.75, "y":3, "w":1.75},
+ {"x":16.5, "y":3},
+ {"x":17.5, "y":3},
+ {"x":0, "y":4},
+ {"x":1, "y":4},
+ {"x":2.5, "y":4, "w":1.5},
+ {"x":4, "y":4},
+ {"x":5, "y":4, "w":1.5},
+ {"x":6.5, "y":4, "w":7},
+ {"x":13.5, "y":4, "w":1.5},
+ {"x":15.5, "y":4},
+ {"x":16.5, "y":4},
+ {"x":17.5, "y":4}
+ ]
+ },
+ "LAYOUT_iso": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2.5, "y":0},
+ {"x":3.5, "y":0},
+ {"x":4.5, "y":0},
+ {"x":5.5, "y":0},
+ {"x":6.5, "y":0},
+ {"x":7.5, "y":0},
+ {"x":8.5, "y":0},
+ {"x":9.5, "y":0},
+ {"x":10.5, "y":0},
+ {"x":11.5, "y":0},
+ {"x":12.5, "y":0},
+ {"x":13.5, "y":0},
+ {"x":14.5, "y":0},
+ {"x":15.5, "y":0, "w":2},
+ {"x":17.5, "y":0},
+ {"x":0, "y":1},
+ {"x":1, "y":1},
+ {"x":2.5, "y":1, "w":1.5},
+ {"x":4, "y":1},
+ {"x":5, "y":1},
+ {"x":6, "y":1},
+ {"x":7, "y":1},
+ {"x":8, "y":1},
+ {"x":9, "y":1},
+ {"x":10, "y":1},
+ {"x":11, "y":1},
+ {"x":12, "y":1},
+ {"x":13, "y":1},
+ {"x":14, "y":1},
+ {"x":15, "y":1},
+ {"x":17.5, "y":1},
+ {"x":0, "y":2},
+ {"x":1, "y":2},
+ {"x":2.5, "y":2, "w":1.75},
+ {"x":4.25, "y":2},
+ {"x":5.25, "y":2},
+ {"x":6.25, "y":2},
+ {"x":7.25, "y":2},
+ {"x":8.25, "y":2},
+ {"x":9.25, "y":2},
+ {"x":10.25, "y":2},
+ {"x":11.25, "y":2},
+ {"x":12.25, "y":2},
+ {"x":13.25, "y":2},
+ {"x":14.25, "y":2},
+ {"x":15.25, "y":2},
+ {"x":16.25, "y":1, "w":1.25, "h":2},
+ {"x":17.5, "y":2},
+ {"x":0, "y":3},
+ {"x":1, "y":3},
+ {"x":2.5, "y":3, "w":1.25},
+ {"x":3.75, "y":3},
+ {"x":4.75, "y":3},
+ {"x":5.75, "y":3},
+ {"x":6.75, "y":3},
+ {"x":7.75, "y":3},
+ {"x":8.75, "y":3},
+ {"x":9.75, "y":3},
+ {"x":10.75, "y":3},
+ {"x":11.75, "y":3},
+ {"x":12.75, "y":3},
+ {"x":13.75, "y":3},
+ {"x":14.75, "y":3, "w":1.75},
+ {"x":16.5, "y":3},
+ {"x":17.5, "y":3},
+ {"x":0, "y":4},
+ {"x":1, "y":4},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":1.25},
+ {"x":5, "y":4, "w":1.25},
+ {"x":6.25, "y":4, "w":6.25},
+ {"x":12.5, "y":4, "w":1.25},
+ {"x":13.75, "y":4, "w":1.25},
+ {"x":15.5, "y":4},
+ {"x":16.5, "y":4},
+ {"x":17.5, "y":4}
+ ]
+ },
+ "LAYOUT_iso_tsangan": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2.5, "y":0},
+ {"x":3.5, "y":0},
+ {"x":4.5, "y":0},
+ {"x":5.5, "y":0},
+ {"x":6.5, "y":0},
+ {"x":7.5, "y":0},
+ {"x":8.5, "y":0},
+ {"x":9.5, "y":0},
+ {"x":10.5, "y":0},
+ {"x":11.5, "y":0},
+ {"x":12.5, "y":0},
+ {"x":13.5, "y":0},
+ {"x":14.5, "y":0},
+ {"x":15.5, "y":0, "w":2},
+ {"x":17.5, "y":0},
+ {"x":0, "y":1},
+ {"x":1, "y":1},
+ {"x":2.5, "y":1, "w":1.5},
+ {"x":4, "y":1},
+ {"x":5, "y":1},
+ {"x":6, "y":1},
+ {"x":7, "y":1},
+ {"x":8, "y":1},
+ {"x":9, "y":1},
+ {"x":10, "y":1},
+ {"x":11, "y":1},
+ {"x":12, "y":1},
+ {"x":13, "y":1},
+ {"x":14, "y":1},
+ {"x":15, "y":1},
+ {"x":17.5, "y":1},
+ {"x":0, "y":2},
+ {"x":1, "y":2},
+ {"x":2.5, "y":2, "w":1.75},
+ {"x":4.25, "y":2},
+ {"x":5.25, "y":2},
+ {"x":6.25, "y":2},
+ {"x":7.25, "y":2},
+ {"x":8.25, "y":2},
+ {"x":9.25, "y":2},
+ {"x":10.25, "y":2},
+ {"x":11.25, "y":2},
+ {"x":12.25, "y":2},
+ {"x":13.25, "y":2},
+ {"x":14.25, "y":2},
+ {"x":15.25, "y":2},
+ {"x":16.25, "y":1, "w":1.25, "h":2},
+ {"x":17.5, "y":2},
+ {"x":0, "y":3},
+ {"x":1, "y":3},
+ {"x":2.5, "y":3, "w":1.25},
+ {"x":3.75, "y":3},
+ {"x":4.75, "y":3},
+ {"x":5.75, "y":3},
+ {"x":6.75, "y":3},
+ {"x":7.75, "y":3},
+ {"x":8.75, "y":3},
+ {"x":9.75, "y":3},
+ {"x":10.75, "y":3},
+ {"x":11.75, "y":3},
+ {"x":12.75, "y":3},
+ {"x":13.75, "y":3},
+ {"x":14.75, "y":3, "w":1.75},
+ {"x":16.5, "y":3},
+ {"x":17.5, "y":3},
+ {"x":0, "y":4},
+ {"x":1, "y":4},
+ {"x":2.5, "y":4, "w":1.5},
+ {"x":4, "y":4},
+ {"x":5, "y":4, "w":1.5},
+ {"x":6.5, "y":4, "w":7},
+ {"x":13.5, "y":4, "w":1.5},
+ {"x":15.5, "y":4},
+ {"x":16.5, "y":4},
+ {"x":17.5, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/ziggurat/keymaps/default/keymap.c b/keyboards/ziggurat/keymaps/default/keymap.c
new file mode 100644
index 000000000000..5a06fecca57a
--- /dev/null
+++ b/keyboards/ziggurat/keymaps/default/keymap.c
@@ -0,0 +1,33 @@
+/* Copyright 2021 kb-elmo
+ *
+ * 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_ansi(
+ KC_F1, KC_F2, 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_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME,
+ KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_ansi(
+ KC_TRNS, KC_TRNS, KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/ziggurat/keymaps/iso/keymap.c b/keyboards/ziggurat/keymaps/iso/keymap.c
new file mode 100644
index 000000000000..c994adb55f74
--- /dev/null
+++ b/keyboards/ziggurat/keymaps/iso/keymap.c
@@ -0,0 +1,33 @@
+/* Copyright 2021 kb-elmo
+ *
+ * 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_iso(
+ KC_F1, KC_F2, 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_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_HOME,
+ KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP,
+ KC_F7, KC_F8, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_iso(
+ KC_TRNS, KC_TRNS, KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/ziggurat/keymaps/via/keymap.c b/keyboards/ziggurat/keymaps/via/keymap.c
new file mode 100644
index 000000000000..92d3d80ed47d
--- /dev/null
+++ b/keyboards/ziggurat/keymaps/via/keymap.c
@@ -0,0 +1,47 @@
+/* Copyright 2021 kb-elmo
+ *
+ * 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_all(
+ KC_F1, KC_F2, 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_BSPC, KC_DEL,
+ KC_F3, KC_F4, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME,
+ KC_F5, KC_F6, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_F7, KC_F8, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
+ KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = 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, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [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, KC_TRNS, 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/ziggurat/keymaps/via/rules.mk b/keyboards/ziggurat/keymaps/via/rules.mk
new file mode 100644
index 000000000000..1e5b99807cb7
--- /dev/null
+++ b/keyboards/ziggurat/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/ziggurat/readme.md b/keyboards/ziggurat/readme.md
new file mode 100644
index 000000000000..85f88b536177
--- /dev/null
+++ b/keyboards/ziggurat/readme.md
@@ -0,0 +1,25 @@
+# Ziggurat
+
+
+
+An extended 65% keyboard
+
+* Keyboard Maintainer: [kb-elmo](https://github.com/kb-elmo)
+* Hardware Supported: Ziggurat PCB
+* Hardware Availability: future groupbuy
+
+Make example for this keyboard (after setting up your build environment):
+
+ make ziggurat:default
+
+Flashing example for this keyboard:
+
+ make ziggurat: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
+
+* **Bootmagic reset**: Hold down the top left key and plug in the keyboard
+* **Physical reset button**: Press the button labeled "SW1" on the back of the PCB
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/ziggurat/rules.mk b/keyboards/ziggurat/rules.mk
new file mode 100644
index 000000000000..98db987b2b32
--- /dev/null
+++ b/keyboards/ziggurat/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = at90usb1286
+
+# 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
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ziggurat/ziggurat.c b/keyboards/ziggurat/ziggurat.c
new file mode 100644
index 000000000000..11afa56b76fc
--- /dev/null
+++ b/keyboards/ziggurat/ziggurat.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 kb-elmo
+ *
+ * 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 "ziggurat.h"
diff --git a/keyboards/ziggurat/ziggurat.h b/keyboards/ziggurat/ziggurat.h
new file mode 100644
index 000000000000..9a8b51b99853
--- /dev/null
+++ b/keyboards/ziggurat/ziggurat.h
@@ -0,0 +1,91 @@
+/* Copyright 2021 kb-elmo
+ *
+ * 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 .
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define ____ KC_NO
+
+#define LAYOUT_all( \
+ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, k017, \
+ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k116, k117, \
+ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k215, k217, \
+ k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k314, k316, k317, \
+ k400, k401, k402, k403, k404, k408, k412, k413, k415, k416, k417 \
+) { \
+ { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k015, k016, k017 }, \
+ { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, ____, k116, k117 }, \
+ { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, ____, k215, ____, k217 }, \
+ { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k314, ____, k316, k317 }, \
+ { k400, k401, k402, k403, k404, ____, ____, ____, k408, ____, ____, ____, k412, k413, ____, k415, k416, k417 }, \
+}
+
+#define LAYOUT_ansi( \
+ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k016, k017, \
+ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k116, k117, \
+ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k215, k217, \
+ k300, k301, k302, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k314, k316, k317, \
+ k400, k401, k402, k403, k404, k408, k412, k413, k415, k416, k417 \
+) { \
+ { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, ____, k016, k017 }, \
+ { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, ____, k116, k117 }, \
+ { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, ____, k215, ____, k217 }, \
+ { k300, k301, k302, ____, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k314, ____, k316, k317 }, \
+ { k400, k401, k402, k403, k404, ____, ____, ____, k408, ____, ____, ____, k412, k413, ____, k415, k416, k417 }, \
+}
+
+#define LAYOUT_ansi_tsangan( \
+ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k016, k017, \
+ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k116, k117, \
+ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k215, k217, \
+ k300, k301, k302, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k314, k316, k317, \
+ k400, k401, k402, k403, k404, k408, k413, k415, k416, k417 \
+) { \
+ { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, ____, k016, k017 }, \
+ { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, ____, k116, k117 }, \
+ { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, ____, k215, ____, k217 }, \
+ { k300, k301, k302, ____, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k314, ____, k316, k317 }, \
+ { k400, k401, k402, k403, k404, ____, ____, ____, k408, ____, ____, ____, ____, k413, ____, k415, k416, k417 }, \
+}
+
+#define LAYOUT_iso( \
+ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k016, k017, \
+ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k117, \
+ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k215, k116, k217, \
+ k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k314, k316, k317, \
+ k400, k401, k402, k403, k404, k408, k412, k413, k415, k416, k417 \
+) { \
+ { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, ____, k016, k017 }, \
+ { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, ____, k116, k117 }, \
+ { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, ____, k215, ____, k217 }, \
+ { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k314, ____, k316, k317 }, \
+ { k400, k401, k402, k403, k404, ____, ____, ____, k408, ____, ____, ____, k412, k413, ____, k415, k416, k417 }, \
+}
+
+#define LAYOUT_iso_tsangan( \
+ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, k016, k017, \
+ k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, k117, \
+ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, k215, k116, k217, \
+ k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k314, k316, k317, \
+ k400, k401, k402, k403, k404, k408, k413, k415, k416, k417 \
+) { \
+ { k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014, ____, k016, k017 }, \
+ { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, k113, k114, ____, k116, k117 }, \
+ { k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, k212, k213, ____, k215, ____, k217 }, \
+ { k300, k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, k312, k313, k314, ____, k316, k317 }, \
+ { k400, k401, k402, k403, k404, ____, ____, ____, k408, ____, ____, ____, ____, k413, ____, k415, k416, k417 }, \
+}
diff --git a/layouts/community/60_ansi/manna-harbour_miryoku/config.h b/layouts/community/60_ansi/manna-harbour_miryoku/config.h
index 14bf842165ff..81f1ceb42f5d 100644
--- a/layouts/community/60_ansi/manna-harbour_miryoku/config.h
+++ b/layouts/community/60_ansi/manna-harbour_miryoku/config.h
@@ -1,6 +1,6 @@
// Copyright 2019 Manna Harbour
// https://github.com/manna-harbour/miryoku
-// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*-
+// generated -*- buffer-read-only: t -*-
// 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 .
@@ -9,7 +9,7 @@
#define XXX KC_NO
#if defined MIRYOKU_MAPPING_NOREVERSEANGLE
-#define LAYOUT_miryoku(\
+ #define LAYOUT_miryoku(\
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19,\
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,\
@@ -22,8 +22,38 @@ K00, K01, K02, K03, K04, XXX, XXX, XXX, K05, K06, K07, K08, K09, XX
XXX, K32, K33, K34, XXX, XXX, XXX, XXX, K35, K36, K37, XXX,\
XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX\
)
+#elif defined MIRYOKU_MAPPING_LITE
+ #if defined MIRYOKU_LAYERS_FLIP
+ #define LAYOUT_miryoku( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \
+ N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \
+) \
+LAYOUT_60_ansi( \
+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_TAB, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, KC_LBRC, KC_RBRC, KC_BSLS, \
+KC_CAPS, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KC_SCLN, KC_ENT, \
+KC_LSFT, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, KC_RSFT, \
+KC_LCTL, KC_LGUI, KC_LALT, K36, KC_RALT, KC_RGUI, KC_APP, KC_RCTL \
+)
+ #else
+ #define LAYOUT_miryoku( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \
+ N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \
+) \
+LAYOUT_60_ansi( \
+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_TAB, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, KC_LBRC, KC_RBRC, KC_BSLS, \
+KC_CAPS, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KC_SCLN, KC_ENT, \
+KC_LSFT, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, KC_RSFT, \
+KC_LCTL, KC_LGUI, KC_LALT, K33, KC_RALT, KC_RGUI, KC_APP, KC_RCTL \
+)
+ #endif
#else
-#define LAYOUT_miryoku(\
+ #define LAYOUT_miryoku(\
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19,\
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,\
diff --git a/layouts/community/60_ansi/manna-harbour_miryoku/keymap.c b/layouts/community/60_ansi/manna-harbour_miryoku/keymap.c
index 1520387e8887..7c5717a0fee0 100644
--- a/layouts/community/60_ansi/manna-harbour_miryoku/keymap.c
+++ b/layouts/community/60_ansi/manna-harbour_miryoku/keymap.c
@@ -1,5 +1,5 @@
// Copyright 2019 Manna Harbour
// https://github.com/manna-harbour/miryoku
-// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*-
+// generated -*- buffer-read-only: t -*-
// 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 .
diff --git a/layouts/community/60_ansi/mechmerlin-ansi/keymap.c b/layouts/community/60_ansi/mechmerlin-ansi/keymap.c
index 5ae09ec08691..97116462acb5 100644
--- a/layouts/community/60_ansi/mechmerlin-ansi/keymap.c
+++ b/layouts/community/60_ansi/mechmerlin-ansi/keymap.c
@@ -11,23 +11,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FL] = LAYOUT_60_ansi(
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, \
- BL_TOGG, BL_INC, BL_DEC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- VLK_TOG, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, MO(_CL), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ BL_TOGG, BL_INC, BL_DEC, BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, \
+ VLK_TOG, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, \
+ _______, _______, _______, MO(_CL), _______, _______, _______, _______),
[_AL] = LAYOUT_60_ansi(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT),
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, \
+ _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT),
[_CL] = LAYOUT_60_ansi(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, EEP_RST, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, EEP_RST, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, KC_VER, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/layouts/community/60_ansi/mechmerlin-ansi/readme.md b/layouts/community/60_ansi/mechmerlin-ansi/readme.md
index 1e8d6de597f4..5e9c4f1a881c 100644
--- a/layouts/community/60_ansi/mechmerlin-ansi/readme.md
+++ b/layouts/community/60_ansi/mechmerlin-ansi/readme.md
@@ -5,8 +5,7 @@ YouTube channel.
It is used on his
* [1up60HSE](https://github.com/qmk/qmk_firmware/tree/master/keyboards/1upkeyboards/1up60hse)
-* [dz60rgb-ansi](https://github.com/qmk/qmk_firmware/tree/master/keyboards/dztech/dz60rgb)
-* [HS60 V2](https://github.com/qmk/qmk_firmware/tree/master/keyboards/hs60/v2)
+* [DZ60rgb-ANSI V1](https://github.com/qmk/qmk_firmware/tree/master/keyboards/dztech/dz60rgb)
## Keymap Notes
- Arrow toggle switch is tapping the `FN` key once.
diff --git a/layouts/community/60_ansi_split_bs_rshift/mechmerlin-split/keymap.c b/layouts/community/60_ansi_split_bs_rshift/mechmerlin-split/keymap.c
index 2b822863810d..2cea4fd44ff4 100644
--- a/layouts/community/60_ansi_split_bs_rshift/mechmerlin-split/keymap.c
+++ b/layouts/community/60_ansi_split_bs_rshift/mechmerlin-split/keymap.c
@@ -11,23 +11,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FL] = LAYOUT_60_ansi_split_bs_rshift(
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_DEL, \
- BL_TOGG, BL_INC, BL_DEC, BL_STEP, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- VLK_TOG, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, MO(_CL), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ BL_TOGG, BL_INC, BL_DEC, BL_STEP, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, \
+ VLK_TOG, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, \
+ _______, _______, _______, MO(_CL), _______, _______, _______, _______),
[_AL] = LAYOUT_60_ansi_split_bs_rshift(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT),
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, \
+ _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT),
[_CL] = LAYOUT_60_ansi_split_bs_rshift(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, EEP_RST, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, EEP_RST, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, KC_VER, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______)
};
diff --git a/layouts/community/60_ansi_split_bs_rshift/mechmerlin-split/readme.md b/layouts/community/60_ansi_split_bs_rshift/mechmerlin-split/readme.md
index e3f6311b1912..f883a3d04697 100644
--- a/layouts/community/60_ansi_split_bs_rshift/mechmerlin-split/readme.md
+++ b/layouts/community/60_ansi_split_bs_rshift/mechmerlin-split/readme.md
@@ -10,6 +10,7 @@ It is used on his
* [Sentraq S60-X RGB](https://github.com/qmk/qmk_firmware/tree/master/keyboards/s60_x)
* [Waldo](https://github.com/qmk/qmk_firmware/tree/master/keyboards/waldo)
* [Zeal60 Rev4](https://github.com/qmk/qmk_firmware/tree/master/keyboards/zeal60)
+* [AN-C](https://github.com/qmk/qmk_firmware/tree/master/keyboards/cannonkeys/an_c)
## Keymap Notes
- Highly influenced by the KBP V60 and WKL B.Face standard layouts
diff --git a/layouts/community/65_ansi/mechmerlin/keymap.c b/layouts/community/65_ansi/mechmerlin/keymap.c
index df75b11f3f77..47990836617b 100644
--- a/layouts/community/65_ansi/mechmerlin/keymap.c
+++ b/layouts/community/65_ansi/mechmerlin/keymap.c
@@ -50,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, EEP_RST, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, KC_VER, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/layouts/community/65_ansi_blocker/mechmerlin/keymap.c b/layouts/community/65_ansi_blocker/mechmerlin/keymap.c
index 0ce4f38c64a8..d82a6327d19e 100644
--- a/layouts/community/65_ansi_blocker/mechmerlin/keymap.c
+++ b/layouts/community/65_ansi_blocker/mechmerlin/keymap.c
@@ -37,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, EEP_RST, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, KC_VER, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/layouts/community/65_ansi_blocker/mechmerlin/readme.md b/layouts/community/65_ansi_blocker/mechmerlin/readme.md
index 70ee6e385f49..1649c8897439 100644
--- a/layouts/community/65_ansi_blocker/mechmerlin/readme.md
+++ b/layouts/community/65_ansi_blocker/mechmerlin/readme.md
@@ -6,6 +6,7 @@ YouTube channel.
It is used on his
* [RGB Doro67](https://github.com/qmk/qmk_firmware/tree/master/keyboards/doro67/rgb)
* [KBD67 mkii](https://github.com/qmk/qmk_firmware/tree/master/keyboards/kbdfans/kbd67/mkiirgb/v1)
+* [Iron 165](https://github.com/qmk/qmk_firmware/tree/master/keyboards/cannonkeys/iron165)
### Build
To build the firmware file associated with this keymap, simply run `make your_keyboard:mechmerlin`.
\ No newline at end of file
diff --git a/layouts/community/66_ansi/mechmerlin/keymap.c b/layouts/community/66_ansi/mechmerlin/keymap.c
index 8de35811d9da..737b52e84cde 100644
--- a/layouts/community/66_ansi/mechmerlin/keymap.c
+++ b/layouts/community/66_ansi/mechmerlin/keymap.c
@@ -20,6 +20,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
BL_STEP,RGB_M_P,RGB_M_B,RGB_M_R,RGB_M_SW,RGB_M_SN,RGB_M_K,RGB_M_X,RGB_M_G,_______,_______,_______,_______, _______, RGB_VAI, \
_______,_______,_______,EEP_RST,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_VAD, \
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
- VLK_TOG, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, RGB_SAI, \
+ VLK_TOG, _______,_______,_______,KC_VER,_______,_______,_______,_______,_______,_______, _______, RGB_SAI, \
CK_TOGG,_______,_______, _______, _______,_______,_______,RGB_HUD,RGB_SAD,RGB_HUI),
};
diff --git a/layouts/community/68_ansi/mechmerlin/keymap.c b/layouts/community/68_ansi/mechmerlin/keymap.c
index b3789d84a436..19f30f8f0017 100644
--- a/layouts/community/68_ansi/mechmerlin/keymap.c
+++ b/layouts/community/68_ansi/mechmerlin/keymap.c
@@ -20,6 +20,6 @@ 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, EEP_RST, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VER, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};
\ No newline at end of file
diff --git a/layouts/community/75_ansi/mechmerlin-75_ansi/keymap.c b/layouts/community/75_ansi/mechmerlin-75_ansi/keymap.c
index c239e2683425..387f2d9edbe8 100644
--- a/layouts/community/75_ansi/mechmerlin-75_ansi/keymap.c
+++ b/layouts/community/75_ansi/mechmerlin-75_ansi/keymap.c
@@ -12,20 +12,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[_FL] = LAYOUT_75_ansi(\
- RESET, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- BL_TOGG, BL_INC, BL_DEC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- VLK_TOG, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, MO(_CL), KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END),
+ _______, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_TOGG, BL_INC, BL_DEC, BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ VLK_TOG, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, KC_PGUP, _______,
+ _______, _______, _______, MO(_CL), _______, _______, _______, KC_HOME, KC_PGDN, KC_END),
[_CL] = LAYOUT_75_ansi(\
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, EEP_RST, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
-
-
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, EEP_RST, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, KC_VER, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/layouts/community/75_ansi/mechmerlin-75_ansi/readme.md b/layouts/community/75_ansi/mechmerlin-75_ansi/readme.md
index d406155bc7f4..8205abe283ed 100644
--- a/layouts/community/75_ansi/mechmerlin-75_ansi/readme.md
+++ b/layouts/community/75_ansi/mechmerlin-75_ansi/readme.md
@@ -3,9 +3,7 @@
This is the 75% layout used by u/merlin36, host of the [MechMerlin](www.youtube.com/mechmerlin)
YouTube channel.
-It is used on his
-* [Duck Octagon V2](https://github.com/qmk/qmk_firmware/tree/master/keyboards/duck/octagon/v2)
-* [XD84](https://github.com/qmk/qmk_firmware/tree/master/keyboards/xd84)
+MechMerlin currently has no keyboard supporting this layout.
### Build
To build the firmware file associated with this keymap, simply run `make your_keyboard:mechmerlin-ansi`.
diff --git a/layouts/community/ergodox/drashna/keymap.c b/layouts/community/ergodox/drashna/keymap.c
index 430328fed7f5..dd47899d7ad5 100644
--- a/layouts/community/ergodox/drashna/keymap.c
+++ b/layouts/community/ergodox/drashna/keymap.c
@@ -174,7 +174,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_MAKE, _______, _______, _______, _______, _______, UC_MOD, KC_NUKE, _________________ADJUST_R1_________________, KC_RST,
VRSN, _________________ADJUST_L1_________________, _______, _______, _________________ADJUST_R1_________________, EEP_RST,
_______, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, RGB_IDL,
- _______, _________________ADJUST_L3_________________, _______, _______, _________________ADJUST_R3_________________, TG_MODS,
+ KEYLOCK, _________________ADJUST_L3_________________, _______, _______, _________________ADJUST_R3_________________, TG_MODS,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______,
_______, _______,
diff --git a/layouts/community/ergodox/french_hacker/keymap.c b/layouts/community/ergodox/french_hacker/keymap.c
index b4c8e37bd999..44b0c47860ee 100644
--- a/layouts/community/ergodox/french_hacker/keymap.c
+++ b/layouts/community/ergodox/french_hacker/keymap.c
@@ -7,82 +7,64 @@
#define BASE 0 // default Colemak Mod-DH layer
#define SYMB 1 // symbols
#define MDIA 2 // media keys
-#define ACC 3 // accented characters
-
-#define QCOPY 0 // Qubes OS VM to VM copy
-#define QPASTE 1 // Qubes OS VM to VM paste
-#define M_ACIRC 2 // â
-#define M_ECIRC 3 // ê
-#define M_ICIRC 4 // î
-#define M_OCIRC 5 // ô
-#define M_UCIRC 6 // û
-#define M_YCIRC 7 // ŷ
-#define M_AUMLT 8 // ä
-#define M_EUMLT 9 // ë
-#define M_IUMLT 10 // ï
-#define M_OUMLT 11 // ö
-#define M_UUMLT 12 // ü
-#define M_YUMLT 13 // ÿ
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 0: Base Colemak Mod-DH layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
- * | Esc | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | |
+ * | Esc | & _1 | é _2 | " _3 | ' _4 | ( _5 | | | | - _6 | è _7 | _ _8 | ç _9 | à _0 | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
- * | | Q | W | F | P | B | TO(0)| |TO(2) | J | L | U | Y | ; | |
+ * | | Q | W | F | P | B | TO(0)| |TO(2) | J | L | U | Y | ; | Ins |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | Tab | A | R | S | T | G |------| |------| M | N | E | I | O | Bcksp |
- * |--------+------+------+------+------+------| TO(1)| |OSL(3)|------+------+------+------+------+--------|
+ * |--------+------+------+------+------+------| TO(1)| | MEH |------+------+------+------+------+--------|
* | LShift | Z | X | C | D | V | | | | K | H | , | . | : | Rshift |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
- * | Ins | Caps | Left | Right| MO(2)| | MO(2)| Down | Up | PgDn | PgUp |
+ * | ù | | Left | Right| MO(2)| | MO(2)| Down | Up | PgDn | PgUp |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
- * |QCopy | Ralt | | Ralt |QPaste|
- * ,------|------|------| |------+------+------.
- * | | | Home | | End | | |
- * | Space| Ctrl |------| |------| Ctrl |Enter |
- * | | | LAlt | | LAlt | | |
- * `--------------------' `--------------------'
+ * | | Ralt | | Ralt | |
+ * ,-------|------|------| |------+------+------.
+ * | | | Home | | End | | |
+ * | Space | Ctrl |------| |------| Ctrl | Enter |
+ * | | | LAlt | | LAlt | | |
+ * `---------------------' `---------------------'
*/
- // If it accepts an argument (i.e, is a function), it doesn't need KC_.
-// Otherwise, it needs KC_*
[BASE] = LAYOUT_ergodox( // layer 0 : default
// left hand
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS,
- KC_TRNS, FR_Q, FR_W, KC_F, KC_P, KC_B, TO(BASE),
- KC_TAB, FR_A, KC_R, KC_S, KC_T, KC_G,
- KC_LSFT, FR_Z, KC_X, KC_C, KC_D, KC_V, TO(SYMB),
- KC_INS, KC_CAPS, KC_LEFT,KC_RIGHT, MO(SYMB),
- M(QCOPY), KC_RALT,
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_NO,
+ KC_NO, FR_Q, FR_W, KC_F, KC_P, KC_B, TO(BASE),
+ KC_TAB, FR_A, KC_R, KC_S, KC_T, KC_G,
+ KC_LSFT, FR_Z, KC_X, KC_C, KC_D, KC_V, TO(SYMB),
+ FR_UGRV, KC_NO, KC_LEFT, KC_RIGHT, MO(SYMB),
+ KC_NO, KC_RALT,
KC_HOME,
KC_SPC,KC_LCTRL, KC_LALT,
// right hand
- KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
- TO(MDIA), KC_J, KC_L, KC_U, KC_Y, FR_SCLN, KC_TRNS,
- FR_M, KC_N, KC_E, KC_I, KC_O, KC_BSPC,
- OSL(ACC), KC_K, KC_H, FR_COMM, FR_DOT, FR_COLN, KC_RSFT,
- MO(SYMB), KC_DOWN, KC_UP, KC_PGDN, KC_PGUP,
+ KC_NO, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NO,
+ TO(MDIA), KC_J, KC_L, KC_U, KC_Y, FR_SCLN, KC_INS,
+ FR_M, KC_N, KC_E, KC_I, KC_O, KC_BSPC,
+ OSM(MOD_MEH), KC_K, KC_H, FR_COMM, FR_DOT, FR_COLN, KC_RSFT,
+ MO(SYMB), KC_DOWN, KC_UP, KC_PGDN, KC_PGUP,
- KC_RALT, M(QPASTE),
+ KC_RALT, KC_NO,
KC_END,
KC_LALT,KC_RCTL, KC_ENT
),
/* Keymap 1: Symbol Layer
- * // TODO missing: ¤
+ *
* ,--------------------------------------------------. ,--------------------------------------------------.
* |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
- * | | § | < | { | \ | ~ | | | | % | @ | } | > | µ | F12 |
+ * | | § | < | { | \ | ~ | | | | % | @ | } | > | ¨ | F12 |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | ' | = | - | ( | + |------| |------| * | ) | _ | / | " | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | ` | ? | # | [ | | | | | | & | ] | $ | ! | ^ | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
- * | € | £ | $ | | | | | | | ß | |
+ * | € | £ | ¤ | ² | | | | ° | µ | ß | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
@@ -95,20 +77,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// SYMBOLS
[SYMB] = LAYOUT_ergodox(
// left hand
- M(0), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
- KC_TRNS,FR_SECT,FR_LABK, FR_LCBR,FR_BSLS,FR_TILD,KC_TRNS,
- KC_TRNS,FR_QUOT,FR_EQL, FR_MINS,FR_LPRN,FR_PLUS,
- KC_TRNS,FR_GRV,FR_QUES,FR_HASH,FR_LBRC,FR_PIPE,KC_TRNS,
- FR_EURO,FR_PND,FR_DLR,KC_TRNS,KC_TRNS,
+ M(0), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
+ KC_TRNS, FR_SECT, FR_LABK, FR_LCBR, FR_BSLS, FR_TILD, KC_TRNS,
+ KC_TRNS, FR_QUOT, FR_EQL, FR_MINS, FR_LPRN, FR_PLUS,
+ KC_TRNS, FR_GRV, FR_QUES, FR_HASH, FR_LBRC, FR_PIPE, KC_TRNS,
+ FR_EURO, FR_PND, FR_CURR, FR_SUP2, KC_TRNS,
KC_TRNS,KC_TRNS,
KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS,
// right hand
- KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
- KC_TRNS, FR_PERC, FR_AT, FR_RCBR, FR_RABK, FR_MICR, KC_F12,
- FR_ASTR, FR_RPRN, FR_UNDS, FR_SLSH, FR_DQUO, KC_TRNS,
- KC_TRNS, FR_AMPR, FR_RBRC, FR_DLR, FR_EXLM, FR_CIRC, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, ALGR(KC_S), KC_TRNS,
+ KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ KC_TRNS, FR_PERC, FR_AT, FR_RCBR, FR_RABK, FR_DIAE, KC_F12,
+ FR_ASTR, FR_RPRN, FR_UNDS, FR_SLSH, FR_DQUO, KC_TRNS,
+ KC_TRNS, FR_AMPR, FR_RBRC, FR_DLR, FR_EXLM, FR_CIRC, KC_TRNS,
+ KC_TRNS, FR_DEG, FR_MICR, ALGR(KC_S), KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
@@ -154,178 +136,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS,
KC_TRNS, KC_TRNS, KC_WBAK
),
-
-/* Keymap 3: accented characters
- *
- * ,--------------------------------------------------. ,--------------------------------------------------.
- * | | | | | | | | | | | | | | | |
- * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
- * | | | à | â | ä | | | | | | | î | ï | | |
- * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | | é | è | ê | ë | |------| |------| | | ô | ö | | |
- * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | | | ù | û | ü | | | | | | | ŷ | ÿ | | |
- * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
- * | | | | | | | | | | | |
- * `----------------------------------' `----------------------------------'
- * ,-------------. ,-------------.
- * | | | | | |
- * ,------|------|------| |------+------+------.
- * | | | | | | | |
- * | | |------| |------| | |
- * | | | | | | | |
- * `--------------------' `--------------------'
- */
-// ACCENTED CHARACTERS
-[ACC] = LAYOUT_ergodox(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
-
- KC_TRNS, KC_TRNS, FR_AGRV, M(M_ACIRC), M(M_AUMLT), KC_TRNS, KC_TRNS,
- KC_TRNS, FR_EACU, FR_EGRV, M(M_ECIRC), M(M_EUMLT), KC_TRNS,
- KC_TRNS, KC_TRNS, FR_UGRV, M(M_UCIRC), M(M_UUMLT), KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS,
- // right hand
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, M(M_ICIRC), M(M_IUMLT), KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, M(M_OCIRC), M(M_OUMLT), KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, M(M_YCIRC), M(M_YUMLT), KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS
-),
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
- // MACRODOWN only works in this function
- switch(id) {
- case QCOPY:
- if (record->event.pressed) {
- return MACRO(I(255),
- D(LCTRL),
- T(C),
- D(LSFT),
- T(C),
- U(LCTRL),
- U(LSFT),
- END);
- }
- break;
- case QPASTE:
- if (record->event.pressed) {
- return MACRO(I(255),
- D(LCTRL),
- D(LSFT),
- T(V),
- U(LCTRL),
- T(INS),
- U(LSFT),
- END);
- }
- break;
- case M_ACIRC:
- if (record->event.pressed) {
- return MACRO(T(LBRC), // FR_CIRC
- T(Q), // FR_A
- END);
- }
- break;
- case M_ECIRC:
- if (record->event.pressed) {
- return MACRO(T(LBRC), // FR_CIRC
- T(E),
- END);
- }
- break;
- case M_UCIRC:
- if (record->event.pressed) {
- return MACRO(T(LBRC), // FR_CIRC
- T(U),
- END);
- }
- break;
- case M_ICIRC:
- if (record->event.pressed) {
- return MACRO(T(LBRC), // FR_CIRC
- T(I),
- END);
- }
- break;
- case M_OCIRC:
- if (record->event.pressed) {
- return MACRO(T(LBRC), // FR_CIRC
- T(O),
- END);
- }
- break;
- case M_YCIRC:
- if (record->event.pressed) {
- return MACRO(T(LBRC), // FR_CIRC
- T(Y),
- END);
- }
- break;
- case M_AUMLT:
- if (record->event.pressed) {
- return MACRO(D(LSFT),
- T(LBRC),
- U(LSFT),
- T(Q),
- END);
- }
- break;
- case M_EUMLT:
- if (record->event.pressed) {
- return MACRO(D(LSFT),
- T(LBRC),
- U(LSFT),
- T(E),
- END);
- }
- break;
- case M_UUMLT:
- if (record->event.pressed) {
- return MACRO(D(LSFT),
- T(LBRC),
- U(LSFT),
- T(U),
- END);
- }
- break;
- case M_IUMLT:
- if (record->event.pressed) {
- return MACRO(D(LSFT),
- T(LBRC),
- U(LSFT),
- T(I),
- END);
- }
- break;
- case M_OUMLT:
- if (record->event.pressed) {
- return MACRO(D(LSFT),
- T(LBRC),
- U(LSFT),
- T(O),
- END);
- }
- break;
- case M_YUMLT:
- if (record->event.pressed) {
- return MACRO(D(LSFT),
- T(LBRC),
- U(LSFT),
- T(Y),
- END);
- }
- break;
-
- }
- return MACRO_NONE;
};
// Runs just one time when the keyboard initializes.
@@ -350,9 +160,6 @@ void matrix_scan_user(void) {
case MDIA:
ergodox_right_led_2_on();
break;
- case ACC:
- ergodox_right_led_3_on();
- break;
default:
// none
break;
diff --git a/layouts/community/ergodox/french_hacker/readme.md b/layouts/community/ergodox/french_hacker/readme.md
index 6b0575af1364..829013597a0d 100644
--- a/layouts/community/ergodox/french_hacker/readme.md
+++ b/layouts/community/ergodox/french_hacker/readme.md
@@ -1,30 +1,27 @@
# French hacker layout
-## Introduction
-
[Colemak Mod-DH](https://colemakmods.github.io/mod-dh/) layout for
users keeping an `azerty` layout configuration on their OS.
+## Introduction
+
This keymap is for users keeping their operating systems configured with
-`azerty` - for typing passwords or in their native languages - but who
-wants a Colemak Mod-DH layout on their mechanical.
+`azerty` - for typing passwords in their native languages, or for their laptop
+keyboard - but who wants a Colemak Mod-DH layout on their mechanical keyboard.
The symbols layers was done after analysing various programming
languages sources codes and should be close to optimal for typing
-confort.
-
-Special macros for [Qubes OS](https://www.qubes-os.org/) are included.
-
-There is an accented characters layer for infrequent typing of french
-accents.
+confort, see the link at the end of the README.
-Special macros for [Qubes OS](https://www.qubes-os.org/) are included.
+The design is done to minimize the usage of the pinky fingers and reduces stress
+on the hands, thus Alt and Ctrl keys are accessible for both hands.
-## Build
+## Flashing the firmware
- cd keyboards/ergodox
- make french_hacker
+```
+qmk flash -kb ergodox_ez -km french_hacker
+```
## Design explanations
-See my [blog post](http://dialectical-computing.de/blog/blog/2017/01/29/a-better-coder-layout-for-the-ergodox-ez-keyboard/).
+See my [blog post](http://www.dialectical-computing.de/blog/blog/2017/01/29/a-better-coder-layout-for-the-ergodox-ez-keyboard/).
diff --git a/layouts/community/ergodox/manna-harbour_miryoku/config.h b/layouts/community/ergodox/manna-harbour_miryoku/config.h
index 836193ddce31..10c61fdfdc76 100644
--- a/layouts/community/ergodox/manna-harbour_miryoku/config.h
+++ b/layouts/community/ergodox/manna-harbour_miryoku/config.h
@@ -1,6 +1,6 @@
// Copyright 2019 Manna Harbour
// https://github.com/manna-harbour/miryoku
-// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*-
+// generated -*- buffer-read-only: t -*-
// 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 .
diff --git a/layouts/community/ergodox/manna-harbour_miryoku/keymap.c b/layouts/community/ergodox/manna-harbour_miryoku/keymap.c
index 1520387e8887..7c5717a0fee0 100644
--- a/layouts/community/ergodox/manna-harbour_miryoku/keymap.c
+++ b/layouts/community/ergodox/manna-harbour_miryoku/keymap.c
@@ -1,5 +1,5 @@
// Copyright 2019 Manna Harbour
// https://github.com/manna-harbour/miryoku
-// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*-
+// generated -*- buffer-read-only: t -*-
// 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 .
diff --git a/layouts/community/ortho_4x10/manna-harbour_miryoku/config.h b/layouts/community/ortho_4x10/manna-harbour_miryoku/config.h
index 7142f2960d07..b1e9526f9917 100644
--- a/layouts/community/ortho_4x10/manna-harbour_miryoku/config.h
+++ b/layouts/community/ortho_4x10/manna-harbour_miryoku/config.h
@@ -1,20 +1,37 @@
// Copyright 2019 Manna Harbour
// https://github.com/manna-harbour/miryoku
-// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*-
+// generated -*- buffer-read-only: t -*-
// 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 .
#pragma once
+#define XXX KC_NO
+
+#if defined MIRYOKU_MAPPING_ROTATE
+#define LAYOUT_miryoku( \
+K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \
+K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \
+K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \
+N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \
+) \
+LAYOUT_ortho_4x10( \
+XXX, XXX, K37, K36, K35, K34, K33, K32, XXX, XXX, \
+K29, K28, K27, K26, K25, K24, K23, K22, K21, K20, \
+K19, K18, K17, K16, K15, K14, K13, K12, K11, K10, \
+K09, K08, K07, K06, K05, K04, K03, K02, K01, K00 \
+)
+#else
#define LAYOUT_miryoku(\
-K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\
-K10, K11, K12, K13, K14, K15, K16, K17, K18, K19,\
-K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,\
-N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\
-)\
-LAYOUT_ortho_4x10(\
-K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\
-K10, K11, K12, K13, K14, K15, K16, K17, K18, K19,\
-K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,\
-KC_NO, KC_NO, K32, K33, K34, K35, K36, K37, KC_NO, KC_NO\
+K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \
+K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \
+K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \
+N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \
+) \
+LAYOUT_ortho_4x10( \
+K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \
+K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \
+K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \
+XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX \
)
+#endif
diff --git a/layouts/community/ortho_4x10/manna-harbour_miryoku/keymap.c b/layouts/community/ortho_4x10/manna-harbour_miryoku/keymap.c
index 1520387e8887..7c5717a0fee0 100644
--- a/layouts/community/ortho_4x10/manna-harbour_miryoku/keymap.c
+++ b/layouts/community/ortho_4x10/manna-harbour_miryoku/keymap.c
@@ -1,5 +1,5 @@
// Copyright 2019 Manna Harbour
// https://github.com/manna-harbour/miryoku
-// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*-
+// generated -*- buffer-read-only: t -*-
// 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 .
diff --git a/layouts/community/ortho_4x12/ajp10304/keymap.c b/layouts/community/ortho_4x12/ajp10304/keymap.c
index c55e99af79b5..4d9ddb124533 100644
--- a/layouts/community/ortho_4x12/ajp10304/keymap.c
+++ b/layouts/community/ortho_4x12/ajp10304/keymap.c
@@ -111,7 +111,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Mouse
* ,-----------------------------------------------------------------------------------.
- * | ESC | | | | | | | | BTN3 | | | |
+ * | ESC | | | | | | WH_L | WH_UP| BTN3 | WH_D | WH_R | |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | ACC0 | ACC1 | ACC2 | | | | | BTN1 | UP | BTN2 | | |
* |------+------+------+------+------+------|------+------+------+------+------+------|
@@ -121,10 +121,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_MOUSE] = LAYOUT_ortho_4x12(
- KC_ESC , _______, _______, _______, _______, _______, _______, _______, KC_MS_BTN3, _______, _______, _______,
- KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, _______, _______, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, _______, _______,
- KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, _______, _______, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ KC_ESC , _______, _______, _______, _______, _______, KC_MS_WH_LEFT, KC_MS_WH_UP, KC_MS_BTN3, KC_MS_WH_DOWN, KC_MS_WH_RIGHT, _______,
+ KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, _______, _______, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, _______, _______,
+ KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, _______, _______, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/* Num Pad
diff --git a/layouts/community/ortho_4x12/ajp10304/readme.md b/layouts/community/ortho_4x12/ajp10304/readme.md
index be6afa6fe4ae..6db0b851d92b 100644
--- a/layouts/community/ortho_4x12/ajp10304/readme.md
+++ b/layouts/community/ortho_4x12/ajp10304/readme.md
@@ -101,7 +101,7 @@ Activated when `fn` and `raise` held together.
| | | | | | | | | | | | |
| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
-| ESC | | | | | | | | BTN3 | | | |
+| ESC | | | | | | W_L | W_UP | BTN3 | W_DWN| W_R | |
| ACC0 | ACC1 | ACC2 | | | | | BTN1 | UP | BTN2 | | |
| ACC0 | ACC1 | ACC2 | | | | | LEFT | DOWN | RIGHT| | |
| | | | | | | | | | | | |
diff --git a/layouts/community/ortho_4x12/drashna/keymap.c b/layouts/community/ortho_4x12/drashna/keymap.c
index cb3166c9403f..3ba9cf64f979 100644
--- a/layouts/community/ortho_4x12/drashna/keymap.c
+++ b/layouts/community/ortho_4x12/drashna/keymap.c
@@ -106,7 +106,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_MAKE, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, KC_RST,
VRSN, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, EEP_RST,
TH_LVL, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, RGB_IDL,
- HPT_TOG, _______, _______, _______, _______, KC_NUKE, _______, _______, _______, _______, _______, TG_MODS
+ KEYLOCK, _______, _______, _______, _______, KC_NUKE, _______, _______, _______, _______, _______, TG_MODS
)
};
diff --git a/layouts/community/ortho_4x12/manna-harbour_miryoku/config.h b/layouts/community/ortho_4x12/manna-harbour_miryoku/config.h
index 8ccab4da9f60..5d7ccd257f72 100644
--- a/layouts/community/ortho_4x12/manna-harbour_miryoku/config.h
+++ b/layouts/community/ortho_4x12/manna-harbour_miryoku/config.h
@@ -1,6 +1,6 @@
// Copyright 2019 Manna Harbour
// https://github.com/manna-harbour/miryoku
-// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*-
+// generated -*- buffer-read-only: t -*-
// 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 .
diff --git a/layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c b/layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c
index 1520387e8887..7c5717a0fee0 100644
--- a/layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c
+++ b/layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c
@@ -1,5 +1,5 @@
// Copyright 2019 Manna Harbour
// https://github.com/manna-harbour/miryoku
-// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*-
+// generated -*- buffer-read-only: t -*-
// 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 .
diff --git a/layouts/community/ortho_5x12/drashna/keymap.c b/layouts/community/ortho_5x12/drashna/keymap.c
index 01b06d627d4f..ab70be2822cd 100644
--- a/layouts/community/ortho_5x12/drashna/keymap.c
+++ b/layouts/community/ortho_5x12/drashna/keymap.c
@@ -124,7 +124,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_MAKE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RST,
VRSN, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, EEP_RST,
_______, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, RGB_IDL,
- _______, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, TG_MODS,
+ KEYLOCK, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, TG_MODS,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/layouts/community/ortho_5x12/manna-harbour_miryoku/config.h b/layouts/community/ortho_5x12/manna-harbour_miryoku/config.h
index 86b854db5c2a..927567fe4bec 100644
--- a/layouts/community/ortho_5x12/manna-harbour_miryoku/config.h
+++ b/layouts/community/ortho_5x12/manna-harbour_miryoku/config.h
@@ -1,6 +1,6 @@
// Copyright 2019 Manna Harbour
// https://github.com/manna-harbour/miryoku
-// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*-
+// generated -*- buffer-read-only: t -*-
// 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 .
diff --git a/layouts/community/ortho_5x12/manna-harbour_miryoku/keymap.c b/layouts/community/ortho_5x12/manna-harbour_miryoku/keymap.c
index 1520387e8887..7c5717a0fee0 100644
--- a/layouts/community/ortho_5x12/manna-harbour_miryoku/keymap.c
+++ b/layouts/community/ortho_5x12/manna-harbour_miryoku/keymap.c
@@ -1,5 +1,5 @@
// Copyright 2019 Manna Harbour
// https://github.com/manna-harbour/miryoku
-// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*-
+// generated -*- buffer-read-only: t -*-
// 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 .
diff --git a/layouts/community/ortho_5x12/riblee/keymap.c b/layouts/community/ortho_5x12/riblee/keymap.c
index eb5f1af80712..b72248375981 100644
--- a/layouts/community/ortho_5x12/riblee/keymap.c
+++ b/layouts/community/ortho_5x12/riblee/keymap.c
@@ -84,17 +84,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Esc | A | R | S | T | D | H | N | E | I | O | " |
* |------+------+------+------+------+------|------+------+------+------+------+------|
- * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
+ * | Shift| Z | X | C | V | B | K | M | , | . | Up |Enter |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | / | Left | Down |Right |
* `-----------------------------------------------------------------------------------'
*/
[_COLEMAK] = LAYOUT_ortho_5x12(
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL,
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,
- BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_UP, KC_ENT,
+ BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT
),
/* Dvorak
@@ -118,6 +118,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
+/* Workman
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Tab | Q | D | R | W | B | J | F | U | P | ; | Del |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Esc | A | S | H | T | G | Y | N | E | O | I | ' |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Shift| Z | X | M | C | V | K | L | , | . | Up |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | / | Left | Down |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_WORKMAN] = LAYOUT_ortho_5x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_TAB, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_DEL,
+ KC_ESC, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, KC_UP, KC_ENT,
+ BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT
+),
+
/* Lower
* ,-----------------------------------------------------------------------------------.
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
@@ -126,7 +147,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
* |------+------+------+------+------+------|------+------+------+------+------+------|
- * | | F7 | F8 | F9 | F10 | F11 | F12 | | Home | End | MS_U | BTN2 |
+ * | | F7 | F8 | F9 | F10 | F11 | F12 | Ins | Home | End | MS_U | BTN2 |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | BTN1 | BTN2 | | BTN1 | MS_L | MS_D | MS_R |
* `-----------------------------------------------------------------------------------'
@@ -135,7 +156,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LBRC, KC_RBRC, KC_DEL,
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_HOME, KC_END, KC_MS_U, KC_BTN2,
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_HOME, KC_END, KC_MS_U, KC_BTN2,
_______, _______, _______, _______, _______, KC_BTN1, KC_BTN2, _______, KC_BTN1, KC_MS_L, KC_MS_D, KC_MS_R
),
@@ -164,21 +185,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,-----------------------------------------------------------------------------------.
* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | |Reset |Debug | | | | | | | | | Del |
+ * | |Reset |Debug | | | | | | | Ins |Prt sc| Del |
* |------+------+------+------+------+-------------+------+------+------+------+------|
- * | | |Mu mod|Aud on|AudOff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| HUN | |
+ * | | |Mu mod|Aud on|AudOff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| HUN |Wrkmn |
* |------+------+------+------+------+------|------+------+------+------+------+------|
- * | | | | | | | NKRO | Swap |Un swp|UC Mod| | |
+ * | | | | | | | NKRO | Mac |Linux | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_5x12(
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
- _______, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL,
- _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, HUNGARIAN, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, LCG_SWP, LCG_NRM, UC_MOD, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ _______, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF, KC_INS, KC_PSCR, KC_DEL,
+ _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, HUNGARIAN, WORKMAN,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, CG_NORM, CG_SWAP, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
\ No newline at end of file
diff --git a/layouts/community/ortho_5x15/manna-harbour_miryoku/config.h b/layouts/community/ortho_5x15/manna-harbour_miryoku/config.h
index f9ccbdf2dfc8..42e03851699c 100644
--- a/layouts/community/ortho_5x15/manna-harbour_miryoku/config.h
+++ b/layouts/community/ortho_5x15/manna-harbour_miryoku/config.h
@@ -1,6 +1,6 @@
// Copyright 2019 Manna Harbour
// https://github.com/manna-harbour/miryoku
-// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*-
+// generated -*- buffer-read-only: t -*-
// 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 .
diff --git a/layouts/community/ortho_5x15/manna-harbour_miryoku/keymap.c b/layouts/community/ortho_5x15/manna-harbour_miryoku/keymap.c
index 1520387e8887..7c5717a0fee0 100644
--- a/layouts/community/ortho_5x15/manna-harbour_miryoku/keymap.c
+++ b/layouts/community/ortho_5x15/manna-harbour_miryoku/keymap.c
@@ -1,5 +1,5 @@
// Copyright 2019 Manna Harbour
// https://github.com/manna-harbour/miryoku
-// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*-
+// generated -*- buffer-read-only: t -*-
// 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 .
diff --git a/layouts/community/planck_mit/manna-harbour_miryoku/config.h b/layouts/community/planck_mit/manna-harbour_miryoku/config.h
index c1024d80128a..df24fbba0f80 100644
--- a/layouts/community/planck_mit/manna-harbour_miryoku/config.h
+++ b/layouts/community/planck_mit/manna-harbour_miryoku/config.h
@@ -1,6 +1,6 @@
// Copyright 2019 Manna Harbour
// https://github.com/manna-harbour/miryoku
-// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*-
+// generated -*- buffer-read-only: t -*-
// 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 .
diff --git a/layouts/community/planck_mit/manna-harbour_miryoku/keymap.c b/layouts/community/planck_mit/manna-harbour_miryoku/keymap.c
index 1520387e8887..7c5717a0fee0 100644
--- a/layouts/community/planck_mit/manna-harbour_miryoku/keymap.c
+++ b/layouts/community/planck_mit/manna-harbour_miryoku/keymap.c
@@ -1,5 +1,5 @@
// Copyright 2019 Manna Harbour
// https://github.com/manna-harbour/miryoku
-// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*-
+// generated -*- buffer-read-only: t -*-
// 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 .
diff --git a/layouts/community/split_3x5_3/manna-harbour_miryoku/config.h b/layouts/community/split_3x5_3/manna-harbour_miryoku/config.h
index ad9495a93445..b34f6ad18d03 100644
--- a/layouts/community/split_3x5_3/manna-harbour_miryoku/config.h
+++ b/layouts/community/split_3x5_3/manna-harbour_miryoku/config.h
@@ -1,6 +1,6 @@
// Copyright 2019 Manna Harbour
// https://github.com/manna-harbour/miryoku
-// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*-
+// generated -*- buffer-read-only: t -*-
// 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 .
diff --git a/layouts/community/split_3x5_3/manna-harbour_miryoku/keymap.c b/layouts/community/split_3x5_3/manna-harbour_miryoku/keymap.c
index 1520387e8887..7c5717a0fee0 100644
--- a/layouts/community/split_3x5_3/manna-harbour_miryoku/keymap.c
+++ b/layouts/community/split_3x5_3/manna-harbour_miryoku/keymap.c
@@ -1,5 +1,5 @@
// Copyright 2019 Manna Harbour
// https://github.com/manna-harbour/miryoku
-// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*-
+// generated -*- buffer-read-only: t -*-
// 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 .
diff --git a/layouts/community/split_3x6_3/drashna/keymap.c b/layouts/community/split_3x6_3/drashna/keymap.c
index a3145a4044ac..7c31972e3f8e 100644
--- a/layouts/community/split_3x6_3/drashna/keymap.c
+++ b/layouts/community/split_3x6_3/drashna/keymap.c
@@ -89,7 +89,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_split_3x6_3_wrapper( \
KC_MAKE, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, KC_RESET,
VRSN, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, EEP_RST,
- MG_NKRO, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, RGB_IDL,
+ KEYLOCK, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, RGB_IDL,
HPT_TOG, KC_NUKE, _______, _______, TG_MODS, HPT_FBK
)
};
diff --git a/layouts/community/split_3x6_3/manna-harbour_miryoku/config.h b/layouts/community/split_3x6_3/manna-harbour_miryoku/config.h
index f21188f33364..4ce96c760051 100644
--- a/layouts/community/split_3x6_3/manna-harbour_miryoku/config.h
+++ b/layouts/community/split_3x6_3/manna-harbour_miryoku/config.h
@@ -1,6 +1,6 @@
// Copyright 2019 Manna Harbour
// https://github.com/manna-harbour/miryoku
-// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*-
+// generated -*- buffer-read-only: t -*-
// 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 .
diff --git a/layouts/community/split_3x6_3/manna-harbour_miryoku/keymap.c b/layouts/community/split_3x6_3/manna-harbour_miryoku/keymap.c
index 1520387e8887..7c5717a0fee0 100644
--- a/layouts/community/split_3x6_3/manna-harbour_miryoku/keymap.c
+++ b/layouts/community/split_3x6_3/manna-harbour_miryoku/keymap.c
@@ -1,5 +1,5 @@
// Copyright 2019 Manna Harbour
// https://github.com/manna-harbour/miryoku
-// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*-
+// generated -*- buffer-read-only: t -*-
// 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 .
diff --git a/layouts/default/tkl_nofrow_ansi/default_tkl_nofrow_ansi/keymap.c b/layouts/default/tkl_nofrow_ansi/default_tkl_nofrow_ansi/keymap.c
new file mode 100644
index 000000000000..c2b7ecfeaf4c
--- /dev/null
+++ b/layouts/default/tkl_nofrow_ansi/default_tkl_nofrow_ansi/keymap.c
@@ -0,0 +1,24 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐
+ * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │Ins│Hom│PgU│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ │Del│End│PgD│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
+ * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐
+ * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐
+ * │Ctrl│GUI │Alt │ │ Alt│ GUI│Menu│Ctrl│ │ ← │ ↓ │ → │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘
+ */
+ [0] = LAYOUT_tkl_nofrow_ansi(
+ 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_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, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ )
+};
diff --git a/layouts/default/tkl_nofrow_ansi/info.json b/layouts/default/tkl_nofrow_ansi/info.json
new file mode 100644
index 000000000000..dfb0fc92b4eb
--- /dev/null
+++ b/layouts/default/tkl_nofrow_ansi/info.json
@@ -0,0 +1,90 @@
+{
+ "keyboard_name": "Tenkeyless No F-Row ANSI Layout",
+ "url": "",
+ "maintainer": "qmk",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":1, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6, "y":0},
+ {"x":7, "y":0},
+ {"x":8, "y":0},
+ {"x":9, "y":0},
+ {"x":10, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0, "w":2},
+
+ {"x":15.25, "y":0},
+ {"x":16.25, "y":0},
+ {"x":17.25, "y":0},
+
+ {"x":0, "y":1, "w":1.5},
+ {"x":1.5, "y":1},
+ {"x":2.5, "y":1},
+ {"x":3.5, "y":1},
+ {"x":4.5, "y":1},
+ {"x":5.5, "y":1},
+ {"x":6.5, "y":1},
+ {"x":7.5, "y":1},
+ {"x":8.5, "y":1},
+ {"x":9.5, "y":1},
+ {"x":10.5, "y":1},
+ {"x":11.5, "y":1},
+ {"x":12.5, "y":1},
+ {"x":13.5, "y":1, "w":1.5},
+
+ {"x":15.25, "y":1},
+ {"x":16.25, "y":1},
+ {"x":17.25, "y":1},
+
+ {"x":0, "y":2, "w":1.75},
+ {"x":1.75, "y":2},
+ {"x":2.75, "y":2},
+ {"x":3.75, "y":2},
+ {"x":4.75, "y":2},
+ {"x":5.75, "y":2},
+ {"x":6.75, "y":2},
+ {"x":7.75, "y":2},
+ {"x":8.75, "y":2},
+ {"x":9.75, "y":2},
+ {"x":10.75, "y":2},
+ {"x":11.75, "y":2},
+ {"x":12.75, "y":2, "w":2.25},
+
+ {"x":0, "y":3, "w":2.25},
+ {"x":2.25, "y":3},
+ {"x":3.25, "y":3},
+ {"x":4.25, "y":3},
+ {"x":5.25, "y":3},
+ {"x":6.25, "y":3},
+ {"x":7.25, "y":3},
+ {"x":8.25, "y":3},
+ {"x":9.25, "y":3},
+ {"x":10.25, "y":3},
+ {"x":11.25, "y":3},
+ {"x":12.25, "y":3, "w":2.75},
+
+ {"x":16.25, "y":3},
+
+ {"x":0, "y":4, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"x":10, "y":4, "w":1.25},
+ {"x":11.25, "y":4, "w":1.25},
+ {"x":12.5, "y":4, "w":1.25},
+ {"x":13.75, "y":4, "w":1.25},
+
+ {"x":15.25, "y":4},
+ {"x":16.25, "y":4},
+ {"x":17.25, "y":4}
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/layouts/default/tkl_nofrow_ansi/layout.json b/layouts/default/tkl_nofrow_ansi/layout.json
new file mode 100644
index 000000000000..b8f86b4ac22b
--- /dev/null
+++ b/layouts/default/tkl_nofrow_ansi/layout.json
@@ -0,0 +1,6 @@
+[{a:7},"","","","","","","","","","","","","",{w:2},"",{x:0.25},"","",""],
+[{w:1.5},"","","","","","","","","","","","","",{w:1.5},"",{x:0.25},"","",""],
+[{w:1.75},"","","","","","","","","","","","",{w:2.25},""],
+[{w:2.25},"","","","","","","","","","","",{w:2.75},"",{x:1.25},""],
+[{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:6.25},"",{w:1.25},"",{w:1.25},"",{w:1.25},"",{w:1.25},"",{x:0.25},"","",""]
+
diff --git a/layouts/default/tkl_nofrow_ansi/readme.md b/layouts/default/tkl_nofrow_ansi/readme.md
new file mode 100644
index 000000000000..693b1245e626
--- /dev/null
+++ b/layouts/default/tkl_nofrow_ansi/readme.md
@@ -0,0 +1,3 @@
+# tkl_nofrow_ansi
+
+ LAYOUT_tkl_nofrow_ansi
diff --git a/lib/python/qmk/cli/__init__.py b/lib/python/qmk/cli/__init__.py
index f45e33240c62..ea961315bdcb 100644
--- a/lib/python/qmk/cli/__init__.py
+++ b/lib/python/qmk/cli/__init__.py
@@ -31,6 +31,7 @@
subcommands = [
'qmk.cli.bux',
'qmk.cli.c2json',
+ 'qmk.cli.cd',
'qmk.cli.cformat',
'qmk.cli.chibios.confmigrate',
'qmk.cli.clean',
@@ -60,6 +61,7 @@
'qmk.cli.lint',
'qmk.cli.list.keyboards',
'qmk.cli.list.keymaps',
+ 'qmk.cli.list.layouts',
'qmk.cli.kle2json',
'qmk.cli.multibuild',
'qmk.cli.new.keyboard',
diff --git a/lib/python/qmk/cli/cd.py b/lib/python/qmk/cli/cd.py
new file mode 100755
index 000000000000..c62c3f56c6b0
--- /dev/null
+++ b/lib/python/qmk/cli/cd.py
@@ -0,0 +1,46 @@
+"""Open a shell in the QMK Home directory
+"""
+import sys
+import os
+
+from milc import cli
+
+from qmk.path import under_qmk_firmware
+
+
+@cli.subcommand('Go to QMK Home')
+def cd(cli):
+ """Go to QMK Home
+ """
+ if not sys.stdout.isatty():
+ cli.log.error("This command is for interactive usage only. For non-interactive usage, 'cd $(qmk env QMK_HOME)' is more robust.")
+ sys.exit(1)
+
+ if not under_qmk_firmware():
+ # Only do anything if the user is not under qmk_firmware already
+ # in order to reduce the possibility of starting multiple shells
+ cli.log.info("Spawning a subshell in your QMK_HOME directory.")
+ cli.log.info("Type 'exit' to get back to the parent shell.")
+ if not cli.platform.lower().startswith('windows'):
+ # For Linux/Mac/etc
+ # Check the user's login shell from 'passwd'
+ # alternatively fall back to $SHELL env var
+ # and finally to '/bin/bash'.
+ import getpass
+ import pwd
+ shell = pwd.getpwnam(getpass.getuser()).pw_shell
+ if not shell:
+ shell = os.environ.get('SHELL', '/bin/bash')
+ # Start the new subshell
+ os.execl(shell, shell)
+ else:
+ # For Windows
+ # Check the $SHELL env var
+ # and fall back to '/usr/bin/bash'.
+ qmk_env = os.environ.copy()
+ # Set the prompt for the new shell
+ qmk_env['MSYS2_PS1'] = qmk_env['PS1']
+ # Start the new subshell
+ cli.run([os.environ.get('SHELL', '/usr/bin/bash')], env=qmk_env)
+ else:
+ cli.log.info("Already within qmk_firmware directory.")
diff --git a/lib/python/qmk/cli/docs.py b/lib/python/qmk/cli/docs.py
index d8f9b045a12f..c24b914bc13f 100644
--- a/lib/python/qmk/cli/docs.py
+++ b/lib/python/qmk/cli/docs.py
@@ -2,6 +2,7 @@
"""
import http.server
import os
+import shutil
import webbrowser
from milc import cli
@@ -11,20 +12,33 @@
@cli.argument('-b', '--browser', action='store_true', help='Open the docs in the default browser.')
@cli.subcommand('Run a local webserver for QMK documentation.', hidden=False if cli.config.user.developer else True)
def docs(cli):
- """Spin up a local HTTPServer instance for the QMK docs.
+ """Spin up a local HTTP server for the QMK docs.
"""
os.chdir('docs')
- with http.server.HTTPServer(('', cli.config.docs.port), http.server.SimpleHTTPRequestHandler) as httpd:
- cli.log.info(f"Serving QMK docs at http://localhost:{cli.config.docs.port}/")
- cli.log.info("Press Control+C to exit.")
+ # If docsify-cli is installed, run that instead so we get live reload
+ if shutil.which('docsify'):
+ command = ['docsify', 'serve', '--port', f'{cli.config.docs.port}', '--open' if cli.config.docs.browser else '']
- if cli.config.docs.browser:
- webbrowser.open(f'http://localhost:{cli.config.docs.port}')
+ cli.log.info(f"Running {{fg_cyan}}{str.join(' ', command)}{{fg_reset}}")
+ cli.log.info("Press Control+C to exit.")
try:
- httpd.serve_forever()
+ cli.run(command, capture_output=False)
except KeyboardInterrupt:
cli.log.info("Stopping HTTP server...")
- finally:
- httpd.shutdown()
+ else:
+ # Fall back to Python HTTPServer
+ with http.server.HTTPServer(('', cli.config.docs.port), http.server.SimpleHTTPRequestHandler) as httpd:
+ cli.log.info(f"Serving QMK docs at http://localhost:{cli.config.docs.port}/")
+ cli.log.info("Press Control+C to exit.")
+
+ if cli.config.docs.browser:
+ webbrowser.open(f'http://localhost:{cli.config.docs.port}')
+
+ try:
+ httpd.serve_forever()
+ except KeyboardInterrupt:
+ cli.log.info("Stopping HTTP server...")
+ finally:
+ httpd.shutdown()
diff --git a/lib/python/qmk/cli/generate/rules_mk.py b/lib/python/qmk/cli/generate/rules_mk.py
index cdf17dfbcb91..dcaff29fae0a 100755
--- a/lib/python/qmk/cli/generate/rules_mk.py
+++ b/lib/python/qmk/cli/generate/rules_mk.py
@@ -26,7 +26,7 @@ def process_mapping_rule(kb_info_json, rules_key, info_dict):
except KeyError:
return None
- if key_type == 'array':
+ if key_type in ['array', 'list']:
return f'{rules_key} ?= {" ".join(rules_value)}'
elif key_type == 'bool':
return f'{rules_key} ?= {"on" if rules_value else "off"}'
diff --git a/lib/python/qmk/cli/list/layouts.py b/lib/python/qmk/cli/list/layouts.py
new file mode 100644
index 000000000000..8e07afeeca2b
--- /dev/null
+++ b/lib/python/qmk/cli/list/layouts.py
@@ -0,0 +1,18 @@
+"""List the keymaps for a specific keyboard
+"""
+from milc import cli
+
+from qmk.decorators import automagic_keyboard
+from qmk.keyboard import keyboard_completer, keyboard_folder
+from qmk.info import info_json
+
+
+@cli.argument("-kb", "--keyboard", type=keyboard_folder, completer=keyboard_completer, help="Specify keyboard name. Example: monarch")
+@cli.subcommand("List the layouts for a specific keyboard")
+@automagic_keyboard
+def list_layouts(cli):
+ """List the layouts for a specific keyboard
+ """
+ info_data = info_json(cli.config.list_layouts.keyboard)
+ for name in sorted(info_data.get('community_layouts', [])):
+ print(name)
diff --git a/lib/python/qmk/cli/new/keyboard.py b/lib/python/qmk/cli/new/keyboard.py
index 369d2bd7dafb..4093b8c90d06 100644
--- a/lib/python/qmk/cli/new/keyboard.py
+++ b/lib/python/qmk/cli/new/keyboard.py
@@ -1,10 +1,8 @@
"""This script automates the creation of new keyboard directories using a starter template.
"""
from datetime import date
-import fileinput
from pathlib import Path
import re
-import shutil
from qmk.commands import git_get_username
import qmk.path
@@ -32,6 +30,7 @@ def validate_keyboard_name(name):
@cli.argument('-kb', '--keyboard', help='Specify the name for the new keyboard directory', arg_only=True, type=keyboard_name)
@cli.argument('-t', '--type', help='Specify the keyboard type', arg_only=True, choices=KEYBOARD_TYPES)
@cli.argument('-u', '--username', help='Specify your username (default from Git config)', arg_only=True)
+@cli.argument('-n', '--realname', help='Specify your real name if you want to use that. Defaults to username', arg_only=True)
@cli.subcommand('Creates a new keyboard directory')
def new_keyboard(cli):
"""Creates a new keyboard.
@@ -69,7 +68,7 @@ def new_keyboard(cli):
# Get username
user_name = None
while not user_name:
- user_name = question('Your Name:', default=find_user_name())
+ user_name = question('Your GitHub User Name:', default=find_user_name())
if not user_name:
cli.log.error('You didn\'t provide a username, and we couldn\'t find one set in your QMK or Git configs. Please try again.')
@@ -78,26 +77,21 @@ def new_keyboard(cli):
if cli.args.username:
return False
- # Copy all the files
- copy_templates(keyboard_type, keyboard_path)
+ real_name = None
+ while not real_name:
+ real_name = question('Your real name:', default=user_name)
- # Replace all the placeholders
keyboard_basename = keyboard_path.name
- replacements = [
- ('%YEAR%', str(date.today().year)),
- ('%KEYBOARD%', keyboard_basename),
- ('%YOUR_NAME%', user_name),
- ]
- filenames = [
- keyboard_path / 'config.h',
- keyboard_path / 'info.json',
- keyboard_path / 'readme.md',
- keyboard_path / f'{keyboard_basename}.c',
- keyboard_path / f'{keyboard_basename}.h',
- keyboard_path / 'keymaps/default/readme.md',
- keyboard_path / 'keymaps/default/keymap.c',
- ]
- replace_placeholders(replacements, filenames)
+ replacements = {
+ "YEAR": str(date.today().year),
+ "KEYBOARD": keyboard_basename,
+ "USER_NAME": user_name,
+ "YOUR_NAME": real_name,
+ }
+
+ template_dir = Path('data/templates')
+ template_tree(template_dir / 'base', keyboard_path, replacements)
+ template_tree(template_dir / keyboard_type, keyboard_path, replacements)
cli.echo('')
cli.log.info(f'{{fg_green}}Created a new keyboard called {{fg_cyan}}{new_keyboard_name}{{fg_green}}.{{fg_reset}}')
@@ -114,29 +108,32 @@ def find_user_name():
return git_get_username()
-def copy_templates(keyboard_type, keyboard_path):
- """Copies the template files from data/templates to the new keyboard directory.
- """
- template_base_path = Path('data/templates')
- keyboard_basename = keyboard_path.name
+def template_tree(src: Path, dst: Path, replacements: dict):
+ """Recursively copy template and replace placeholders
- cli.log.info('Copying base template files...')
- shutil.copytree(template_base_path / 'base', keyboard_path)
+ Args:
+ src (Path)
+ The source folder to copy from
+ dst (Path)
+ The destination folder to copy to
+ replacements (dict)
+ a dictionary with "key":"value" pairs to replace.
- cli.log.info(f'Copying {{fg_cyan}}{keyboard_type}{{fg_reset}} template files...')
- shutil.copytree(template_base_path / keyboard_type, keyboard_path, dirs_exist_ok=True)
+ Raises:
+ FileExistsError
+ When trying to overwrite existing files
+ """
- cli.log.info(f'Renaming {{fg_cyan}}keyboard.[ch]{{fg_reset}} to {{fg_cyan}}{keyboard_basename}.[ch]{{fg_reset}}...')
- shutil.move(keyboard_path / 'keyboard.c', keyboard_path / f'{keyboard_basename}.c')
- shutil.move(keyboard_path / 'keyboard.h', keyboard_path / f'{keyboard_basename}.h')
+ dst.mkdir(parents=True, exist_ok=True)
+ for child in src.iterdir():
+ if child.is_dir():
+ template_tree(child, dst / child.name, replacements=replacements)
-def replace_placeholders(replacements, filenames):
- """Replaces the given placeholders in each template file.
- """
- for replacement in replacements:
- cli.log.info(f'Replacing {{fg_cyan}}{replacement[0]}{{fg_reset}} with {{fg_cyan}}{replacement[1]}{{fg_reset}}...')
+ if child.is_file():
+ file_name = dst / (child.name % replacements)
- with fileinput.input(files=filenames, inplace=True) as file:
- for line in file:
- print(line.replace(replacement[0], replacement[1]), end='')
+ with file_name.open(mode='x') as dst_f:
+ with child.open() as src_f:
+ template = src_f.read()
+ dst_f.write(template % replacements)
diff --git a/lib/python/qmk/info.py b/lib/python/qmk/info.py
index 1b4c42ff4127..cc9948451965 100644
--- a/lib/python/qmk/info.py
+++ b/lib/python/qmk/info.py
@@ -25,6 +25,13 @@ def _valid_community_layout(layout):
return (Path('layouts/default') / layout).exists()
+def _remove_newlines_from_labels(layouts):
+ for layout_name, layout_json in layouts.items():
+ for key in layout_json['layout']:
+ if '\n' in key['label']:
+ key['label'] = key['label'].split('\n')[0]
+
+
def info_json(keyboard):
"""Generate the info.json data for a specific keyboard.
"""
@@ -99,6 +106,9 @@ def info_json(keyboard):
# Check that the reported matrix size is consistent with the actual matrix size
_check_matrix(info_data)
+ # Remove newline characters from layout labels
+ _remove_newlines_from_labels(layouts)
+
return info_data
@@ -691,8 +701,8 @@ def merge_info_jsons(keyboard, info_data):
if layout_name in info_data['layouts']:
if len(info_data['layouts'][layout_name]['layout']) != len(layout['layout']):
- msg = '%s: %s: Number of elements in info.json does not match! info.json:%s != %s:%s'
- _log_error(info_data, msg % (info_data['keyboard_folder'], layout_name, len(layout['layout']), layout_name, len(info_data['layouts'][layout_name]['layout'])))
+ msg = 'Number of keys for %s does not match! info.json specifies %d keys, C macro specifies %d'
+ _log_error(info_data, msg % (layout_name, len(layout['layout']), len(info_data['layouts'][layout_name]['layout'])))
else:
for new_key, existing_key in zip(layout['layout'], info_data['layouts'][layout_name]['layout']):
existing_key.update(new_key)
diff --git a/quantum/command.c b/quantum/command.c
index 2ff640a7bcd6..6d56a25ea114 100644
--- a/quantum/command.c
+++ b/quantum/command.c
@@ -39,7 +39,7 @@ along with this program. If not, see .
# include "backlight.h"
#endif
-#if defined(MOUSEKEY_ENABLE) && !defined(MK_3_SPEED)
+#if defined(MOUSEKEY_ENABLE)
# include "mousekey.h"
#endif
@@ -53,7 +53,7 @@ static void print_version(void);
static void print_status(void);
static bool command_console(uint8_t code);
static void command_console_help(void);
-#if defined(MOUSEKEY_ENABLE) && !defined(MK_3_SPEED)
+#if defined(MOUSEKEY_ENABLE)
static bool mousekey_console(uint8_t code);
#endif
@@ -73,7 +73,7 @@ bool command_proc(uint8_t code) {
else
return (command_console_extra(code) || command_console(code));
break;
-#if defined(MOUSEKEY_ENABLE) && !defined(MK_3_SPEED)
+#if defined(MOUSEKEY_ENABLE)
case MOUSEKEY:
mousekey_console(code);
break;
diff --git a/quantum/mcu_selection.mk b/quantum/mcu_selection.mk
index f7eaeec8ac44..3b86433a8690 100644
--- a/quantum/mcu_selection.mk
+++ b/quantum/mcu_selection.mk
@@ -122,7 +122,7 @@ ifneq ($(findstring STM32F042, $(MCU)),)
MCU_SERIES = STM32F0xx
# Linker script to use
- # - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/
+ # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/
# or /ld/
MCU_LDSCRIPT ?= STM32F042x6
@@ -154,7 +154,7 @@ ifneq ($(findstring STM32F072, $(MCU)),)
MCU_SERIES = STM32F0xx
# Linker script to use
- # - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/
+ # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/
# or /ld/
MCU_LDSCRIPT ?= STM32F072xB
@@ -186,7 +186,7 @@ ifneq ($(findstring STM32F103, $(MCU)),)
MCU_SERIES = STM32F1xx
# Linker script to use
- # - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/
+ # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/
# or /ld/
MCU_LDSCRIPT ?= STM32F103x8
@@ -218,7 +218,7 @@ ifneq ($(findstring STM32F303, $(MCU)),)
MCU_SERIES = STM32F3xx
# Linker script to use
- # - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/
+ # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/
# or /ld/
MCU_LDSCRIPT ?= STM32F303xC
@@ -250,7 +250,7 @@ ifneq ($(findstring STM32F401, $(MCU)),)
MCU_SERIES = STM32F4xx
# Linker script to use
- # - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/
+ # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/
# or /ld/
ifeq ($(strip $(BOOTLOADER)), tinyuf2)
MCU_LDSCRIPT ?= STM32F401xC_tinyuf2
@@ -287,7 +287,7 @@ ifneq ($(findstring STM32F407, $(MCU)),)
MCU_SERIES = STM32F4xx
# Linker script to use
- # - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/
+ # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/
# or /ld/
MCU_LDSCRIPT ?= STM32F407xE
@@ -319,7 +319,7 @@ ifneq ($(findstring STM32F411, $(MCU)),)
MCU_SERIES = STM32F4xx
# Linker script to use
- # - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/
+ # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/
# or /ld/
ifeq ($(strip $(BOOTLOADER)), tinyuf2)
MCU_LDSCRIPT ?= STM32F411xE_tinyuf2
@@ -356,8 +356,7 @@ ifneq ($(findstring STM32F446, $(MCU)),)
MCU_SERIES = STM32F4xx
# Linker script to use
- # - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/
- # or /os/common/startup/ARMCMx/compilers/GCC/ld/
+ # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/
# or /ld/
MCU_LDSCRIPT ?= STM32F446xE
@@ -386,7 +385,7 @@ ifneq ($(findstring STM32G431, $(MCU)),)
MCU_SERIES = STM32G4xx
# Linker script to use
- # - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/
+ # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/
# or /ld/
MCU_LDSCRIPT ?= STM32G431xB
@@ -418,7 +417,7 @@ ifneq ($(findstring STM32G474, $(MCU)),)
MCU_SERIES = STM32G4xx
# Linker script to use
- # - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/
+ # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/
# or /ld/
MCU_LDSCRIPT ?= STM32G474xE
@@ -450,7 +449,7 @@ ifneq (,$(filter $(MCU),STM32L433 STM32L443))
MCU_SERIES = STM32L4xx
# Linker script to use
- # - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/
+ # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/
# or /ld/
MCU_LDSCRIPT ?= STM32L432xC
@@ -484,7 +483,7 @@ ifneq (,$(filter $(MCU),STM32L412 STM32L422))
MCU_SERIES = STM32L4xx
# Linker script to use
- # - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/
+ # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/
# or /ld/
MCU_LDSCRIPT ?= STM32L412xB
diff --git a/quantum/process_keycode/process_magic.c b/quantum/process_keycode/process_magic.c
index 01f2fb92892b..d5cff4f12aa9 100644
--- a/quantum/process_keycode/process_magic.c
+++ b/quantum/process_keycode/process_magic.c
@@ -43,6 +43,7 @@ bool process_magic(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case MAGIC_SWAP_CONTROL_CAPSLOCK ... MAGIC_TOGGLE_ALT_GUI:
case MAGIC_SWAP_LCTL_LGUI ... MAGIC_EE_HANDS_RIGHT:
+ case MAGIC_TOGGLE_GUI:
/* keymap config */
keymap_config.raw = eeconfig_read_keymap();
switch (keycode) {
diff --git a/quantum/process_keycode/process_tap_dance.c b/quantum/process_keycode/process_tap_dance.c
index 225b36cd5fd6..c707fdea308e 100644
--- a/quantum/process_keycode/process_tap_dance.c
+++ b/quantum/process_keycode/process_tap_dance.c
@@ -20,7 +20,7 @@ uint8_t get_oneshot_mods(void);
#endif
static uint16_t last_td;
-static int8_t highest_td = -1;
+static int16_t highest_td = -1;
void qk_tap_dance_pair_on_each_tap(qk_tap_dance_state_t *state, void *user_data) {
qk_tap_dance_pair_t *pair = (qk_tap_dance_pair_t *)user_data;
diff --git a/quantum/process_keycode/process_unicode_common.c b/quantum/process_keycode/process_unicode_common.c
index 46fcaaa86b7b..889c768a85cc 100644
--- a/quantum/process_keycode/process_unicode_common.c
+++ b/quantum/process_keycode/process_unicode_common.c
@@ -100,6 +100,7 @@ __attribute__((weak)) void unicode_input_start(void) {
break;
case UC_WIN:
register_code(KC_LALT);
+ wait_ms(UNICODE_TYPE_DELAY);
tap_code(KC_PPLS);
break;
case UC_WINC:
diff --git a/show_options.mk b/show_options.mk
index b17d8c7d9dde..60ae850cf855 100644
--- a/show_options.mk
+++ b/show_options.mk
@@ -65,7 +65,6 @@ OTHER_OPTION_NAMES = \
HAPTIC_ENABLE \
HHKB_RN42_ENABLE \
ISSI_ENABLE \
- KEYBOARD_LOCK_ENABLE \
KEYLOGGER_ENABLE \
LCD_BACKLIGHT_ENABLE \
MACROS_ENABLED \
diff --git a/tmk_core/protocol/chibios/usb_main.c b/tmk_core/protocol/chibios/usb_main.c
index cc282e6a9b44..04049c1a9a30 100644
--- a/tmk_core/protocol/chibios/usb_main.c
+++ b/tmk_core/protocol/chibios/usb_main.c
@@ -921,6 +921,17 @@ static void send_extra(uint8_t report_id, uint16_t data) {
return;
}
+ if (usbGetTransmitStatusI(&USB_DRIVER, SHARED_IN_EPNUM)) {
+ /* Need to either suspend, or loop and call unlock/lock during
+ * every iteration - otherwise the system will remain locked,
+ * no interrupts served, so USB not going through as well.
+ * Note: for suspend, need USB_USE_WAIT == TRUE in halconf.h */
+ if (osalThreadSuspendTimeoutS(&(&USB_DRIVER)->epc[SHARED_IN_EPNUM]->in_state->thread, TIME_MS2I(10)) == MSG_TIMEOUT) {
+ osalSysUnlock();
+ return;
+ }
+ }
+
static report_extra_t report;
report = (report_extra_t){.report_id = report_id, .usage = data};
diff --git a/tmk_core/rules.mk b/tmk_core/rules.mk
index fd59fa032a1c..5a629d1eb098 100644
--- a/tmk_core/rules.mk
+++ b/tmk_core/rules.mk
@@ -479,8 +479,8 @@ check-size:
$(PRINT_WARNING_PLAIN); printf " * $(MSG_FILE_NEAR_LIMIT)"; \
else \
$(PRINT_OK); $(SILENT) || printf " * $(MSG_FILE_JUST_RIGHT)"; \
- fi \
- fi \
+ fi ; \
+ fi ; \
fi
else
check-size:
diff --git a/users/ajp10304/readme.md b/users/ajp10304/readme.md
index 2ac0a69964ec..bfc39535c1ce 100644
--- a/users/ajp10304/readme.md
+++ b/users/ajp10304/readme.md
@@ -1,4 +1,4 @@
-Copyright 2020 Alan Pocklington @ajp10304
+Copyright 2021 Alan Pocklington @ajp10304
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
@@ -116,7 +116,7 @@ Activated when `fn` and `raise` held together.
| | | | | | | | | | | | |
| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
-| ESC | | | | | | | | BTN3 | | | |
+| ESC | | | | | | W_L | W_UP | BTN3 | W_DWN| W_R | |
| ACC0 | ACC1 | ACC2 | | | | | BTN1 | UP | BTN2 | | |
| ACC0 | ACC1 | ACC2 | | | | | LEFT | DOWN | RIGHT| | |
| | | | | | | | | | | | |
diff --git a/users/bcat/rules.mk b/users/bcat/rules.mk
index 6d748875a4f8..651ee96fe07e 100644
--- a/users/bcat/rules.mk
+++ b/users/bcat/rules.mk
@@ -29,7 +29,6 @@ SLEEP_LED_ENABLE = no
# Disable other unused options on all keyboards.
AUTO_SHIFT_ENABLE = no
COMBO_ENABLE = no
-KEYBOARD_LOCK_ENABLE = no
KEY_LOCK_ENABLE = no
LEADER_ENABLE = no
SWAP_HANDS_ENABLE = no
diff --git a/users/drashna/config.h b/users/drashna/config.h
index 5e935827bf2d..f54da9e32812 100644
--- a/users/drashna/config.h
+++ b/users/drashna/config.h
@@ -147,6 +147,9 @@
// # define OLED_FONT_5X5
// # define OLED_FONT_AZTECH
// # define OLED_FONT_BMPLAIN
+// # define OLED_FONT_CRACKERS
+// # define OLED_FONT_HISKYF21
+# define OLED_FONT_DEAD_MEAL
// # define OLED_FONT_SUPER_DIGG
// # define OLED_LOGO_GMK_BAD
// # define OLED_LOGO_HUE_MANITEE
@@ -163,17 +166,12 @@
# define ONESHOT_TIMEOUT 3000
#endif // !ONESHOT_TIMEOUT
-// this makes it possible to do rolling combos (zx) with keys that
-// convert to other keys on hold (z becomes ctrl when you hold it,
-// and when this option isn't enabled, z rapidly followed by x
-// actually sends Ctrl-x. That's bad.)
-#define IGNORE_MOD_TAP_INTERRUPT
-#undef PERMISSIVE_HOLD
-//#define TAPPING_FORCE_HOLD_PER_KEY
-//#define RETRO_TAPPING_PER_KEY
-#if !defined(KEYBOARD_kyria) && !defined(KEYBOARD_splitkb_kyria)
-# define TAPPING_TERM_PER_KEY
-#endif
+#define IGNORE_MOD_TAP_INTERRUPT_PER_KEY
+#define PERMISSIVE_HOLD_PER_KEY
+#define TAPPING_FORCE_HOLD_PER_KEY
+#define RETRO_TAPPING_PER_KEY
+#define TAPPING_TERM_PER_KEY
+
#ifndef TAPPING_TOGGLE
# define TAPPING_TOGGLE 1
diff --git a/users/drashna/drashna.c b/users/drashna/drashna.c
index 871136c13708..7e07a2c7c573 100644
--- a/users/drashna/drashna.c
+++ b/users/drashna/drashna.c
@@ -103,8 +103,11 @@ void shutdown_user(void) {
#ifdef RGB_MATRIX_ENABLE
rgb_matrix_set_color_all(0xFF, 0x00, 0x00);
rgb_matrix_update_pwm_buffers();
-
#endif // RGB_MATRIX_ENABLE
+#ifdef OLED_ENABLE
+ oled_off();
+#endif
+
shutdown_keymap();
}
@@ -256,3 +259,61 @@ void matrix_slave_scan_user(void) {
matrix_slave_scan_keymap();
}
#endif
+
+__attribute__((weak)) uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ default:
+ return TAPPING_TERM;
+ }
+}
+
+__attribute__((weak)) bool get_permissive_hold(uint16_t keycode, keyrecord_t *record) {
+ // Immediately select the hold action when another key is tapped:
+ // return true;
+ // Do not select the hold action when another key is tapped.
+ // return false;
+ switch (keycode) {
+ default:
+ return false;
+ }
+}
+
+__attribute__((weak)) bool get_hold_on_other_key_press(uint16_t keycode, keyrecord_t *record) {
+ // Immediately select the hold action when another key is pressed.
+ // return true;
+ // Do not select the hold action when another key is pressed.
+ // return false;
+ switch (keycode) {
+ case QK_LAYER_TAP ... QK_LAYER_TAP_MAX:
+ return true;
+ default:
+ return false;
+ }
+}
+
+__attribute__((weak)) bool get_ignore_mod_tap_interrupt(uint16_t keycode, keyrecord_t *record) {
+ // Do not force the mod-tap key press to be handled as a modifier
+ // if any other key was pressed while the mod-tap key is held down.
+ // return true;
+ // Force the mod-tap key press to be handled as a modifier if any
+ // other key was pressed while the mod-tap key is held down.
+ // return false;
+ switch (keycode) {
+ default:
+ return true;
+ }
+}
+
+__attribute__((weak)) bool get_tapping_force_hold(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ default:
+ return false;
+ }
+}
+
+__attribute__((weak)) bool get_retro_tapping(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ default:
+ return false;
+ }
+}
diff --git a/users/drashna/drashna_font.h b/users/drashna/drashna_font.h
index e9353e62a9f9..844292a53a03 100644
--- a/users/drashna/drashna_font.h
+++ b/users/drashna/drashna_font.h
@@ -6,660 +6,947 @@
#if __has_include("../../../../Documents/qmk/oled_font.h")
# include "../../../../Documents/qmk/oled_font.h"
#else
+
+// additional fonts from
+// https://github.com/datacute/TinyOLED-Fonts
+
# include "progmem.h"
// clang-format off
static const unsigned char font[] PROGMEM = {
- 0x07, 0x08, 0x7F, 0x08, 0x07, 0x00, // 0x00 0
- 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, // 0x01 1
- 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, // 0x02 2
- 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, // 0x03 3 ♥
- 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, // 0x04 4 ♦
- 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, // 0x05 5 ♧
- 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, // 0x06 6 ♤
- 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, // 0x07 7
- 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, // 0x08 8
- 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, // 0x09 9
- 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, // 0x0A 10
- 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, // 0x0B 11 ♂
- 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, // 0x0C 12 ♀
- 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, // 0x0D 13 ♪
- 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, // 0x0E 14 ♫
- 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, // 0x0F 15
- 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, // 0x10 16
- 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, // 0x11 17
- 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, // 0x12 18 ↕
- 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, // 0x13 19 ‼
- 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, // 0x14 20 ¶
- 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, // 0x15 21 §
- 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, // 0x16 22 _
- 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, // 0x17 23 ↨
- 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, // 0x18 24 ↑
- 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, // 0x19 25 ↓
- 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, // 0x1A 26 →
- 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, // 0x1B 27 ←
- 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, // 0x1C 28 ⌙h
- 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, // 0x1D 29 ↭
- 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, // 0x1E 30
- 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, // 0x1F 31
+ 0x07, 0x08, 0x7F, 0x08, 0x07, 0x00,
+ 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
+ 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
+ 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
+ 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
+ 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
+ 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
+ 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
+ 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
+ 0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
+ 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
+ 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
+ 0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
+ 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
+ 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
+ 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
+ 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
+ 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
+ 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
+ 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
+ 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
+ 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
+ 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
+ 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
+ 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
+ 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
+ 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
+ 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
+ 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
+ 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
+ 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
+ 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
+
# if defined(OLED_FONT_5X5)
- 0x00,0x00,0x00,0x00,0x00,0x00, // 0x20 32
- 0x5c,0x00,0x00,0x00,0x00,0x00, // 0x21 33 !
- 0x06,0x00,0x06,0x00,0x00,0x00, // 0x22 34 "
- 0x28,0x7c,0x28,0x7c,0x28,0x00, // 0x23 35 #
- 0x5c,0x54,0xfe,0x54,0x74,0x00, // 0x24 36 $
- 0x44,0x20,0x10,0x08,0x44,0x00, // 0x25 37 %
- 0x28,0x54,0x54,0x20,0x50,0x00, // 0x26 38 &
- 0x06,0x00,0x00,0x00,0x00,0x00, // 0x27 39 '
- 0x38,0x44,0x00,0x00,0x00,0x00, // 0x28 40 (
- 0x44,0x38,0x00,0x00,0x00,0x00, // 0x29 41 )
- 0x02,0x07,0x02,0x00,0x00,0x00, // 0x2A 42 *
- 0x10,0x10,0x7c,0x10,0x10,0x00, // 0x2B 43 +
- 0xc0,0x00,0x00,0x00,0x00,0x00, // 0x2C 44 ,
- 0x10,0x10,0x10,0x10,0x10,0x00, // 0x2D 45 -
- 0x40,0x00,0x00,0x00,0x00,0x00, // 0x2E 46 .
- 0x60,0x10,0x0c,0x00,0x00,0x00, // 0x2F 47 /
- 0x7c,0x64,0x54,0x4c,0x7c,0x00, // 0x30 48 0
- 0x48,0x7c,0x40,0x00,0x00,0x00, // 0x31 49 1
- 0x64,0x54,0x54,0x54,0x48,0x00, // 0x32 50 2
- 0x44,0x54,0x54,0x54,0x6c,0x00, // 0x33 51 3
- 0x3c,0x20,0x70,0x20,0x20,0x00, // 0x34 52 4
- 0x5c,0x54,0x54,0x54,0x24,0x00, // 0x35 53 5
- 0x7c,0x54,0x54,0x54,0x74,0x00, // 0x36 54 6
- 0x04,0x04,0x64,0x14,0x0c,0x00, // 0x37 55 7
- 0x7c,0x54,0x54,0x54,0x7c,0x00, // 0x38 56 8
- 0x5c,0x54,0x54,0x54,0x7c,0x00, // 0x39 57 9
- 0x44,0x00,0x00,0x00,0x00,0x00, // 0x3A 58 :
- 0xc4,0x00,0x00,0x00,0x00,0x00, // 0x3B 59 ;
- 0x10,0x28,0x44,0x00,0x00,0x00, // 0x3C 60 <
- 0x28,0x28,0x28,0x28,0x28,0x00, // 0x3D 61 =
- 0x44,0x28,0x10,0x00,0x00,0x00, // 0x3E 62 >
- 0x08,0x04,0x54,0x08,0x00,0x00, // 0x3F 63 ?
- 0x7c,0x44,0x54,0x54,0x5c,0x00, // 0x40 64 @
- 0x7c,0x24,0x24,0x24,0x7c,0x00, // 0x41 65 A
- 0x7c,0x54,0x54,0x54,0x6c,0x00, // 0x42 66 B
- 0x7c,0x44,0x44,0x44,0x44,0x00, // 0x43 67 C
- 0x7c,0x44,0x44,0x44,0x38,0x00, // 0x44 68 D
- 0x7c,0x54,0x54,0x54,0x44,0x00, // 0x45 69 E
- 0x7c,0x14,0x14,0x14,0x04,0x00, // 0x46 70 F
- 0x7c,0x44,0x44,0x54,0x74,0x00, // 0x47 71 G
- 0x7c,0x10,0x10,0x10,0x7c,0x00, // 0x48 72 H
- 0x44,0x44,0x7c,0x44,0x44,0x00, // 0x49 73 I
- 0x60,0x40,0x40,0x44,0x7c,0x00, // 0x4A 74 J
- 0x7c,0x10,0x10,0x28,0x44,0x00, // 0x4B 75 K
- 0x7c,0x40,0x40,0x40,0x40,0x00, // 0x4C 76 L
- 0x7c,0x08,0x10,0x08,0x7c,0x00, // 0x4D 77 M
- 0x7c,0x08,0x10,0x20,0x7c,0x00, // 0x4E 78 N
- 0x38,0x44,0x44,0x44,0x38,0x00, // 0x4F 79 O
- 0x7c,0x14,0x14,0x14,0x08,0x00, // 0x50 80 P
- 0x3c,0x24,0x64,0x24,0x3c,0x00, // 0x51 81 Q
- 0x7c,0x14,0x14,0x14,0x68,0x00, // 0x52 82 R
- 0x5c,0x54,0x54,0x54,0x74,0x00, // 0x53 83 S
- 0x04,0x04,0x7c,0x04,0x04,0x00, // 0x54 84 T
- 0x7c,0x40,0x40,0x40,0x7c,0x00, // 0x55 85 U
- 0x0c,0x30,0x40,0x30,0x0c,0x00, // 0x56 86 V
- 0x3c,0x40,0x30,0x40,0x3c,0x00, // 0x57 87 W
- 0x44,0x28,0x10,0x28,0x44,0x00, // 0x58 88 X
- 0x0c,0x10,0x60,0x10,0x0c,0x00, // 0x59 89 Y
- 0x44,0x64,0x54,0x4c,0x44,0x00, // 0x5A 90 Z
- 0x7c,0x44,0x00,0x00,0x00,0x00, // 0x5B 91 [
- 0x0c,0x10,0x60,0x00,0x00,0x00, // 0x5C 92 \ backslash
- 0x44,0x7c,0x00,0x00,0x00,0x00, // 0x5D 93 ]
- 0x00,0x01,0x00,0x01,0x00,0x00, // 0x5E 94 ^
- 0x40,0x40,0x40,0x40,0x40,0x40, // 0x5F 95 _
- 0x00,0x01,0x00,0x00,0x00,0x00, // 0x60 96 `
- 0x7c,0x24,0x24,0x24,0x7c,0x00, // 0x61 97 a
- 0x7c,0x54,0x54,0x54,0x6c,0x00, // 0x62 98 b
- 0x7c,0x44,0x44,0x44,0x44,0x00, // 0x63 99 c
- 0x7c,0x44,0x44,0x44,0x38,0x00, // 0x64 100 d
- 0x7c,0x54,0x54,0x54,0x44,0x00, // 0x65 101 e
- 0x7c,0x14,0x14,0x14,0x04,0x00, // 0x66 102 f
- 0x7c,0x44,0x44,0x54,0x74,0x00, // 0x67 103 g
- 0x7c,0x10,0x10,0x10,0x7c,0x00, // 0x68 104 h
- 0x44,0x44,0x7c,0x44,0x44,0x00, // 0x69 105 i
- 0x60,0x40,0x40,0x44,0x7c,0x00, // 0x6A 106 j
- 0x7c,0x10,0x10,0x28,0x44,0x00, // 0x6B 107 k
- 0x7c,0x40,0x40,0x40,0x40,0x00, // 0x6C 108 l
- 0x7c,0x08,0x10,0x08,0x7c,0x00, // 0x6D 109 m
- 0x7c,0x08,0x10,0x20,0x7c,0x00, // 0x6E 110 n
- 0x38,0x44,0x44,0x44,0x38,0x00, // 0x6F 111 o
- 0x7c,0x14,0x14,0x14,0x08,0x00, // 0x70 112 p
- 0x3c,0x24,0x64,0x24,0x3c,0x00, // 0x71 113 q
- 0x7c,0x14,0x14,0x14,0x68,0x00, // 0x72 114 r
- 0x5c,0x54,0x54,0x54,0x74,0x00, // 0x73 115 s
- 0x04,0x04,0x7c,0x04,0x04,0x00, // 0x74 116 t
- 0x7c,0x40,0x40,0x40,0x7c,0x00, // 0x75 117 u
- 0x0c,0x30,0x40,0x30,0x0c,0x00, // 0x76 118 v
- 0x3c,0x40,0x30,0x40,0x3c,0x00, // 0x77 119 w
- 0x44,0x28,0x10,0x28,0x44,0x00, // 0x78 120 x
- 0x0c,0x10,0x60,0x10,0x0c,0x00, // 0x79 121 y
- 0x44,0x64,0x54,0x4c,0x44,0x00, // 0x7A 122 z
- 0x10,0x7c,0x44,0x00,0x00,0x00, // 0x7B 123 {
- 0x6c,0x00,0x00,0x00,0x00,0x00, // 0x7C 124 |
- 0x44,0x7c,0x10,0x00,0x00,0x00, // 0x7D 125 }
- 0x02,0x01,0x02,0x01,0x00,0x00, // 0x7E 126 ~
- 0x00,0x00,0x00,0x00,0x00,0x00, // 0x7F 127
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x06, 0x00, 0x00, 0x00,
+ 0x28, 0x7c, 0x28, 0x7c, 0x28, 0x00,
+ 0x5c, 0x54, 0xfe, 0x54, 0x74, 0x00,
+ 0x44, 0x20, 0x10, 0x08, 0x44, 0x00,
+ 0x28, 0x54, 0x54, 0x20, 0x50, 0x00,
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x38, 0x44, 0x00, 0x00, 0x00, 0x00,
+ 0x44, 0x38, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x07, 0x02, 0x00, 0x00, 0x00,
+ 0x10, 0x10, 0x7c, 0x10, 0x10, 0x00,
+ 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x00,
+ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x60, 0x10, 0x0c, 0x00, 0x00, 0x00,
+ 0x7c, 0x64, 0x54, 0x4c, 0x7c, 0x00,
+ 0x48, 0x7c, 0x40, 0x00, 0x00, 0x00,
+ 0x64, 0x54, 0x54, 0x54, 0x48, 0x00,
+ 0x44, 0x54, 0x54, 0x54, 0x6c, 0x00,
+ 0x3c, 0x20, 0x70, 0x20, 0x20, 0x00,
+ 0x5c, 0x54, 0x54, 0x54, 0x24, 0x00,
+ 0x7c, 0x54, 0x54, 0x54, 0x74, 0x00,
+ 0x04, 0x04, 0x64, 0x14, 0x0c, 0x00,
+ 0x7c, 0x54, 0x54, 0x54, 0x7c, 0x00,
+ 0x5c, 0x54, 0x54, 0x54, 0x7c, 0x00,
+ 0x44, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x10, 0x28, 0x44, 0x00, 0x00, 0x00,
+ 0x28, 0x28, 0x28, 0x28, 0x28, 0x00,
+ 0x44, 0x28, 0x10, 0x00, 0x00, 0x00,
+ 0x08, 0x04, 0x54, 0x08, 0x00, 0x00,
+ 0x7c, 0x44, 0x54, 0x54, 0x5c, 0x00,
+ 0x7c, 0x24, 0x24, 0x24, 0x7c, 0x00,
+ 0x7c, 0x54, 0x54, 0x54, 0x6c, 0x00,
+ 0x7c, 0x44, 0x44, 0x44, 0x44, 0x00,
+ 0x7c, 0x44, 0x44, 0x44, 0x38, 0x00,
+ 0x7c, 0x54, 0x54, 0x54, 0x44, 0x00,
+ 0x7c, 0x14, 0x14, 0x14, 0x04, 0x00,
+ 0x7c, 0x44, 0x44, 0x54, 0x74, 0x00,
+ 0x7c, 0x10, 0x10, 0x10, 0x7c, 0x00,
+ 0x44, 0x44, 0x7c, 0x44, 0x44, 0x00,
+ 0x60, 0x40, 0x40, 0x44, 0x7c, 0x00,
+ 0x7c, 0x10, 0x10, 0x28, 0x44, 0x00,
+ 0x7c, 0x40, 0x40, 0x40, 0x40, 0x00,
+ 0x7c, 0x08, 0x10, 0x08, 0x7c, 0x00,
+ 0x7c, 0x08, 0x10, 0x20, 0x7c, 0x00,
+ 0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
+ 0x7c, 0x14, 0x14, 0x14, 0x08, 0x00,
+ 0x3c, 0x24, 0x64, 0x24, 0x3c, 0x00,
+ 0x7c, 0x14, 0x14, 0x14, 0x68, 0x00,
+ 0x5c, 0x54, 0x54, 0x54, 0x74, 0x00,
+ 0x04, 0x04, 0x7c, 0x04, 0x04, 0x00,
+ 0x7c, 0x40, 0x40, 0x40, 0x7c, 0x00,
+ 0x0c, 0x30, 0x40, 0x30, 0x0c, 0x00,
+ 0x3c, 0x40, 0x30, 0x40, 0x3c, 0x00,
+ 0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
+ 0x0c, 0x10, 0x60, 0x10, 0x0c, 0x00,
+ 0x44, 0x64, 0x54, 0x4c, 0x44, 0x00,
+ 0x7c, 0x44, 0x00, 0x00, 0x00, 0x00,
+ 0x0c, 0x10, 0x60, 0x00, 0x00, 0x00,
+ 0x44, 0x7c, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x01, 0x00, 0x00,
+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x7c, 0x24, 0x24, 0x24, 0x7c, 0x00,
+ 0x7c, 0x54, 0x54, 0x54, 0x6c, 0x00,
+ 0x7c, 0x44, 0x44, 0x44, 0x44, 0x00,
+ 0x7c, 0x44, 0x44, 0x44, 0x38, 0x00,
+ 0x7c, 0x54, 0x54, 0x54, 0x44, 0x00,
+ 0x7c, 0x14, 0x14, 0x14, 0x04, 0x00,
+ 0x7c, 0x44, 0x44, 0x54, 0x74, 0x00,
+ 0x7c, 0x10, 0x10, 0x10, 0x7c, 0x00,
+ 0x44, 0x44, 0x7c, 0x44, 0x44, 0x00,
+ 0x60, 0x40, 0x40, 0x44, 0x7c, 0x00,
+ 0x7c, 0x10, 0x10, 0x28, 0x44, 0x00,
+ 0x7c, 0x40, 0x40, 0x40, 0x40, 0x00,
+ 0x7c, 0x08, 0x10, 0x08, 0x7c, 0x00,
+ 0x7c, 0x08, 0x10, 0x20, 0x7c, 0x00,
+ 0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
+ 0x7c, 0x14, 0x14, 0x14, 0x08, 0x00,
+ 0x3c, 0x24, 0x64, 0x24, 0x3c, 0x00,
+ 0x7c, 0x14, 0x14, 0x14, 0x68, 0x00,
+ 0x5c, 0x54, 0x54, 0x54, 0x74, 0x00,
+ 0x04, 0x04, 0x7c, 0x04, 0x04, 0x00,
+ 0x7c, 0x40, 0x40, 0x40, 0x7c, 0x00,
+ 0x0c, 0x30, 0x40, 0x30, 0x0c, 0x00,
+ 0x3c, 0x40, 0x30, 0x40, 0x3c, 0x00,
+ 0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
+ 0x0c, 0x10, 0x60, 0x10, 0x0c, 0x00,
+ 0x44, 0x64, 0x54, 0x4c, 0x44, 0x00,
+ 0x10, 0x7c, 0x44, 0x00, 0x00, 0x00,
+ 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00,
+ 0x02, 0x01, 0x02, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
# lif defined(OLED_FONT_AZTECH)
- 0x00,0x00,0x00,0x00,0x00,0x00, // 0x20 32
- 0x00,0x2e,0x00,0x00,0x00,0x00, // 0x21 33 !
- 0x00,0x02,0x00,0x02,0x00,0x00, // 0x22 34 "
- 0x00,0x0a,0x1e,0x0a,0x1e,0x00, // 0x23 35 #
- 0x00,0x0e,0x2a,0x6b,0x2a,0x3a, // 0x24 36 $
- 0x00,0x06,0x06,0x26,0x18,0x06, // 0x25 37 %
- 0x38,0x3e,0x2a,0x2a,0x28,0x38, // 0x26 38 &
- 0x18,0x02,0x00,0x00,0x00,0x00, // 0x27 39 '
- 0x00,0x3e,0x22,0x00,0x00,0x00, // 0x28 40 (
- 0x00,0x22,0x3e,0x00,0x00,0x00, // 0x29 41 )
- 0x00,0x0e,0x0e,0x0e,0x04,0x00, // 0x2A 42 *
- 0x00,0x08,0x1c,0x08,0x00,0x00, // 0x2B 43 +
- 0x00,0x20,0x00,0x00,0x00,0x00, // 0x2C 44 ,
- 0x00,0x08,0x08,0x08,0x00,0x00, // 0x2D 45 -
- 0x00,0x20,0x00,0x00,0x00,0x00, // 0x2E 46 .
- 0x00,0x20,0x18,0x06,0x00,0x00, // 0x2F 47 /
- 0x00,0x3e,0x22,0x2a,0x22,0x3e, // 0x30 48 0
- 0x02,0x3e,0x00,0x00,0x00,0x00, // 0x31 49 1
- 0x00,0x38,0x28,0x2a,0x2a,0x2e, // 0x32 50 2
- 0x00,0x22,0x2a,0x2e,0x38,0x00, // 0x33 51 3
- 0x00,0x0e,0x08,0x08,0x3e,0x08, // 0x34 52 4
- 0x00,0x2e,0x2a,0x2a,0x28,0x38, // 0x35 53 5
- 0x00,0x3e,0x2a,0x2a,0x28,0x38, // 0x36 54 6
- 0x00,0x06,0x02,0x02,0x0a,0x3e, // 0x37 55 7
- 0x00,0x38,0x2e,0x2a,0x2e,0x38, // 0x38 56 8
- 0x00,0x0e,0x0a,0x2a,0x2a,0x3e, // 0x39 57 9
- 0x00,0x28,0x00,0x00,0x00,0x00, // 0x3A 58 :
- 0x00,0x28,0x00,0x00,0x00,0x00, // 0x3B 59 ;
- 0x00,0x08,0x14,0x22,0x00,0x00, // 0x3C 60 <
- 0x00,0x14,0x14,0x14,0x14,0x00, // 0x3D 61 =
- 0x00,0x22,0x14,0x08,0x00,0x00, // 0x3E 62 >
- 0x00,0x06,0x02,0x2a,0x0a,0x06, // 0x3F 63 ?
- 0x00,0x3e,0x02,0x3a,0x2a,0x0a, // 0x40 64 @
- 0x22,0x3e,0x02,0x0a,0x0a,0x3e, // 0x41 65 A
- 0x00,0x3e,0x22,0x2a,0x2e,0x38, // 0x42 66 B
- 0x00,0x3e,0x22,0x22,0x20,0x30, // 0x43 67 C
- 0x00,0x3e,0x22,0x22,0x22,0x3c, // 0x44 68 D
- 0x00,0x3e,0x2a,0x22,0x20,0x30, // 0x45 69 E
- 0x00,0x3e,0x0a,0x0a,0x06,0x02, // 0x46 70 F
- 0x00,0x3e,0x22,0x2a,0x28,0x38, // 0x47 71 G
- 0x00,0x3e,0x08,0x08,0x08,0x3e, // 0x48 72 H
- 0x00,0x22,0x3e,0x22,0x00,0x00, // 0x49 73 I
- 0x00,0x30,0x20,0x20,0x22,0x3e, // 0x4A 74 J
- 0x00,0x3e,0x08,0x08,0x0e,0x38, // 0x4B 75 K
- 0x00,0x3e,0x20,0x20,0x20,0x30, // 0x4C 76 L
- 0x00,0x3e,0x02,0x3e,0x20,0x3e, // 0x4D 77 M
- 0x3e,0x3e,0x02,0x3e,0x20,0x3e, // 0x4E 78 N
- 0x00,0x3e,0x22,0x22,0x22,0x3e, // 0x4F 79 O
- 0x00,0x3e,0x02,0x0a,0x0a,0x0e, // 0x50 80 P
- 0x00,0x3e,0x22,0x22,0x22,0x3e, // 0x51 81 Q
- 0x00,0x3e,0x02,0x0a,0x0e,0x38, // 0x52 82 R
- 0x00,0x0e,0x0a,0x2a,0x2a,0x3a, // 0x53 83 S
- 0x00,0x06,0x02,0x3e,0x02,0x06, // 0x54 84 T
- 0x00,0x3e,0x20,0x20,0x20,0x3e, // 0x55 85 U
- 0x00,0x3e,0x20,0x20,0x3e,0x00, // 0x56 86 V
- 0x00,0x3e,0x20,0x3e,0x02,0x3e, // 0x57 87 W
- 0x3e,0x3a,0x0e,0x08,0x0e,0x3a, // 0x58 88 X
- 0x00,0x0e,0x08,0x08,0x28,0x3e, // 0x59 89 Y
- 0x00,0x3a,0x2a,0x2a,0x0a,0x0e, // 0x5A 90 Z
- 0x00,0x3e,0x22,0x00,0x00,0x00, // 0x5B 91 [
- 0x00,0x02,0x0c,0x30,0x00,0x00, // 0x5C 92 \ backslash
- 0x22,0x3e,0x00,0x00,0x00,0x00, // 0x5D 93 ]
- 0x00,0x01,0x00,0x01,0x00,0x00, // 0x5E 94 ^
- 0x00,0x20,0x20,0x20,0x00,0x00, // 0x5F 95 _
- 0x00,0x01,0x00,0x00,0x00,0x00, // 0x60 96 `
- 0x00,0x38,0x28,0x28,0x08,0x38, // 0x61 97 a
- 0x00,0x3e,0x20,0x28,0x28,0x38, // 0x62 98 b
- 0x00,0x38,0x28,0x28,0x20,0x30, // 0x63 99 c
- 0x00,0x38,0x28,0x28,0x20,0x3e, // 0x64 100 d
- 0x00,0xf8,0x88,0x28,0x28,0x38, // 0x65 101 e
- 0x00,0xf8,0x28,0x28,0x18,0x08, // 0x66 102 f
- 0x00,0x38,0x28,0xa8,0x88,0xf8, // 0x67 103 g
- 0x00,0x3c,0x08,0x08,0x08,0x38, // 0x68 104 h
- 0x00,0x3a,0x00,0x00,0x00,0x00, // 0x69 105 i
- 0x80,0xfa,0x00,0x00,0x00,0x00, // 0x6A 106 j
- 0x00,0x3e,0x08,0x08,0x38,0x2c, // 0x6B 107 k
- 0x00,0x3e,0x20,0x00,0x00,0x00, // 0x6C 108 l
- 0x00,0x38,0x08,0x38,0x20,0x38, // 0x6D 109 m
- 0x38,0x38,0x08,0x38,0x20,0x38, // 0x6E 110 n
- 0x00,0x38,0x28,0x28,0x28,0x38, // 0x6F 111 o
- 0x00,0xf8,0x08,0x28,0x28,0x38, // 0x70 112 p
- 0x00,0x38,0x28,0x28,0x08,0xf8, // 0x71 113 q
- 0x00,0x38,0x08,0x08,0x18,0x08, // 0x72 114 r
- 0x00,0x38,0x28,0xa8,0xa8,0xe8, // 0x73 115 s
- 0x00,0x3e,0x28,0x28,0x20,0x30, // 0x74 116 t
- 0x00,0x38,0x20,0x20,0x20,0x38, // 0x75 117 u
- 0x00,0x38,0x20,0x38,0x00,0x00, // 0x76 118 v
- 0x00,0x38,0x20,0x38,0x08,0x38, // 0x77 119 w
- 0x38,0x28,0x38,0x10,0x38,0x28, // 0x78 120 x
- 0x00,0x38,0x20,0xa0,0xa0,0xf8, // 0x79 121 y
- 0x00,0xe8,0xa8,0xa8,0x28,0x38, // 0x7A 122 z
- 0x08,0x3e,0x22,0x00,0x00,0x00, // 0x7B 123 {
- 0x00,0x3f,0x00,0x00,0x00,0x00, // 0x7C 124 |
- 0x22,0x3e,0x08,0x00,0x00,0x00, // 0x7D 125 }
- 0x00,0x00,0x00,0x00,0x00,0x00, // 0x7E 126 ~
- 0x00,0x00,0x00,0x00,0x00,0x00, // 0x7F 127
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x2e, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x02, 0x00, 0x02, 0x00, 0x00,
+ 0x00, 0x0a, 0x1e, 0x0a, 0x1e, 0x00,
+ 0x00, 0x0e, 0x2a, 0x6b, 0x2a, 0x3a,
+ 0x00, 0x06, 0x06, 0x26, 0x18, 0x06,
+ 0x38, 0x3e, 0x2a, 0x2a, 0x28, 0x38,
+ 0x18, 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x3e, 0x22, 0x00, 0x00, 0x00,
+ 0x00, 0x22, 0x3e, 0x00, 0x00, 0x00,
+ 0x00, 0x0e, 0x0e, 0x0e, 0x04, 0x00,
+ 0x00, 0x08, 0x1c, 0x08, 0x00, 0x00,
+ 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x08, 0x08, 0x08, 0x00, 0x00,
+ 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x20, 0x18, 0x06, 0x00, 0x00,
+ 0x00, 0x3e, 0x22, 0x2a, 0x22, 0x3e,
+ 0x02, 0x3e, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x38, 0x28, 0x2a, 0x2a, 0x2e,
+ 0x00, 0x22, 0x2a, 0x2e, 0x38, 0x00,
+ 0x00, 0x0e, 0x08, 0x08, 0x3e, 0x08,
+ 0x00, 0x2e, 0x2a, 0x2a, 0x28, 0x38,
+ 0x00, 0x3e, 0x2a, 0x2a, 0x28, 0x38,
+ 0x00, 0x06, 0x02, 0x02, 0x0a, 0x3e,
+ 0x00, 0x38, 0x2e, 0x2a, 0x2e, 0x38,
+ 0x00, 0x0e, 0x0a, 0x2a, 0x2a, 0x3e,
+ 0x00, 0x28, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x28, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x08, 0x14, 0x22, 0x00, 0x00,
+ 0x00, 0x14, 0x14, 0x14, 0x14, 0x00,
+ 0x00, 0x22, 0x14, 0x08, 0x00, 0x00,
+ 0x00, 0x06, 0x02, 0x2a, 0x0a, 0x06,
+ 0x00, 0x3e, 0x02, 0x3a, 0x2a, 0x0a,
+ 0x22, 0x3e, 0x02, 0x0a, 0x0a, 0x3e,
+ 0x00, 0x3e, 0x22, 0x2a, 0x2e, 0x38,
+ 0x00, 0x3e, 0x22, 0x22, 0x20, 0x30,
+ 0x00, 0x3e, 0x22, 0x22, 0x22, 0x3c,
+ 0x00, 0x3e, 0x2a, 0x22, 0x20, 0x30,
+ 0x00, 0x3e, 0x0a, 0x0a, 0x06, 0x02,
+ 0x00, 0x3e, 0x22, 0x2a, 0x28, 0x38,
+ 0x00, 0x3e, 0x08, 0x08, 0x08, 0x3e,
+ 0x00, 0x22, 0x3e, 0x22, 0x00, 0x00,
+ 0x00, 0x30, 0x20, 0x20, 0x22, 0x3e,
+ 0x00, 0x3e, 0x08, 0x08, 0x0e, 0x38,
+ 0x00, 0x3e, 0x20, 0x20, 0x20, 0x30,
+ 0x00, 0x3e, 0x02, 0x3e, 0x20, 0x3e,
+ 0x3e, 0x3e, 0x02, 0x3e, 0x20, 0x3e,
+ 0x00, 0x3e, 0x22, 0x22, 0x22, 0x3e,
+ 0x00, 0x3e, 0x02, 0x0a, 0x0a, 0x0e,
+ 0x00, 0x3e, 0x22, 0x22, 0x22, 0x3e,
+ 0x00, 0x3e, 0x02, 0x0a, 0x0e, 0x38,
+ 0x00, 0x0e, 0x0a, 0x2a, 0x2a, 0x3a,
+ 0x00, 0x06, 0x02, 0x3e, 0x02, 0x06,
+ 0x00, 0x3e, 0x20, 0x20, 0x20, 0x3e,
+ 0x00, 0x3e, 0x20, 0x20, 0x3e, 0x00,
+ 0x00, 0x3e, 0x20, 0x3e, 0x02, 0x3e,
+ 0x3e, 0x3a, 0x0e, 0x08, 0x0e, 0x3a,
+ 0x00, 0x0e, 0x08, 0x08, 0x28, 0x3e,
+ 0x00, 0x3a, 0x2a, 0x2a, 0x0a, 0x0e,
+ 0x00, 0x3e, 0x22, 0x00, 0x00, 0x00,
+ 0x00, 0x02, 0x0c, 0x30, 0x00, 0x00,
+ 0x22, 0x3e, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x01, 0x00, 0x00,
+ 0x00, 0x20, 0x20, 0x20, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x38, 0x28, 0x28, 0x08, 0x38,
+ 0x00, 0x3e, 0x20, 0x28, 0x28, 0x38,
+ 0x00, 0x38, 0x28, 0x28, 0x20, 0x30,
+ 0x00, 0x38, 0x28, 0x28, 0x20, 0x3e,
+ 0x00, 0xf8, 0x88, 0x28, 0x28, 0x38,
+ 0x00, 0xf8, 0x28, 0x28, 0x18, 0x08,
+ 0x00, 0x38, 0x28, 0xa8, 0x88, 0xf8,
+ 0x00, 0x3c, 0x08, 0x08, 0x08, 0x38,
+ 0x00, 0x3a, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0xfa, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x3e, 0x08, 0x08, 0x38, 0x2c,
+ 0x00, 0x3e, 0x20, 0x00, 0x00, 0x00,
+ 0x00, 0x38, 0x08, 0x38, 0x20, 0x38,
+ 0x38, 0x38, 0x08, 0x38, 0x20, 0x38,
+ 0x00, 0x38, 0x28, 0x28, 0x28, 0x38,
+ 0x00, 0xf8, 0x08, 0x28, 0x28, 0x38,
+ 0x00, 0x38, 0x28, 0x28, 0x08, 0xf8,
+ 0x00, 0x38, 0x08, 0x08, 0x18, 0x08,
+ 0x00, 0x38, 0x28, 0xa8, 0xa8, 0xe8,
+ 0x00, 0x3e, 0x28, 0x28, 0x20, 0x30,
+ 0x00, 0x38, 0x20, 0x20, 0x20, 0x38,
+ 0x00, 0x38, 0x20, 0x38, 0x00, 0x00,
+ 0x00, 0x38, 0x20, 0x38, 0x08, 0x38,
+ 0x38, 0x28, 0x38, 0x10, 0x38, 0x28,
+ 0x00, 0x38, 0x20, 0xa0, 0xa0, 0xf8,
+ 0x00, 0xe8, 0xa8, 0xa8, 0x28, 0x38,
+ 0x08, 0x3e, 0x22, 0x00, 0x00, 0x00,
+ 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00,
+ 0x22, 0x3e, 0x08, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
# elif defined(OLED_FONT_BMPLAIN)
- 0x00,0x00,0x00,0x00,0x00,0x00, // 0x20 32
- 0x2e,0x00,0x00,0x00,0x00,0x00, // 0x21 33 !
- 0x03,0x00,0x03,0x00,0x00,0x00, // 0x22 34 "
- 0x0a,0x1f,0x0a,0x1f,0x0a,0x00, // 0x23 35 #
- 0x2e,0x2a,0x6b,0x2a,0x3a,0x00, // 0x24 36 $
- 0x0e,0x2a,0x1e,0x08,0x3c,0x2a, // 0x25 37 %
- 0x3e,0x2a,0x2a,0x22,0x38,0x08, // 0x26 38 &
- 0x03,0x00,0x00,0x00,0x00,0x00, // 0x27 39 '
- 0x1c,0x22,0x00,0x00,0x00,0x00, // 0x28 40 (
- 0x22,0x1c,0x00,0x00,0x00,0x00, // 0x29 41 )
- 0x15,0x0e,0x04,0x0e,0x15,0x00, // 0x2A 42 *
- 0x08,0x08,0x3e,0x08,0x08,0x00, // 0x2B 43 +
- 0x60,0x00,0x00,0x00,0x00,0x00, // 0x2C 44 ,
- 0x08,0x08,0x08,0x08,0x08,0x00, // 0x2D 45 -
- 0x20,0x00,0x00,0x00,0x00,0x00, // 0x2E 46 .
- 0x20,0x10,0x08,0x04,0x02,0x00, // 0x2F 47 /
- 0x3e,0x22,0x2a,0x22,0x3e,0x00, // 0x30 48 0
- 0x04,0x3e,0x00,0x00,0x00,0x00, // 0x31 49 1
- 0x3a,0x2a,0x2a,0x2a,0x2e,0x00, // 0x32 50 2
- 0x2a,0x2a,0x2a,0x2a,0x3e,0x00, // 0x33 51 3
- 0x0e,0x08,0x08,0x08,0x3e,0x00, // 0x34 52 4
- 0x2e,0x2a,0x2a,0x2a,0x3a,0x00, // 0x35 53 5
- 0x3e,0x2a,0x2a,0x2a,0x3a,0x00, // 0x36 54 6
- 0x02,0x02,0x02,0x02,0x3e,0x00, // 0x37 55 7
- 0x3e,0x2a,0x2a,0x2a,0x3e,0x00, // 0x38 56 8
- 0x2e,0x2a,0x2a,0x2a,0x3e,0x00, // 0x39 57 9
- 0x14,0x00,0x00,0x00,0x00,0x00, // 0x3A 58 :
- 0x34,0x00,0x00,0x00,0x00,0x00, // 0x3B 59 ;
- 0x08,0x14,0x22,0x00,0x00,0x00, // 0x3C 60 <
- 0x14,0x14,0x14,0x14,0x14,0x00, // 0x3D 61 =
- 0x22,0x14,0x08,0x00,0x00,0x00, // 0x3E 62 >
- 0x06,0x02,0x2a,0x0a,0x0e,0x00, // 0x3F 63 ?
- 0x3e,0x02,0x3a,0x2a,0x3e,0x00, // 0x40 64 @
- 0x3e,0x12,0x12,0x12,0x3e,0x00, // 0x41 65 A
- 0x3e,0x2a,0x2a,0x2a,0x36,0x00, // 0x42 66 B
- 0x3e,0x22,0x22,0x22,0x22,0x00, // 0x43 67 C
- 0x3e,0x22,0x22,0x22,0x1c,0x00, // 0x44 68 D
- 0x3e,0x2a,0x2a,0x2a,0x22,0x00, // 0x45 69 E
- 0x3e,0x0a,0x0a,0x0a,0x02,0x00, // 0x46 70 F
- 0x3e,0x22,0x2a,0x2a,0x3a,0x00, // 0x47 71 G
- 0x3e,0x08,0x08,0x08,0x3e,0x00, // 0x48 72 H
- 0x22,0x3e,0x22,0x00,0x00,0x00, // 0x49 73 I
- 0x38,0x20,0x20,0x20,0x3e,0x00, // 0x4A 74 J
- 0x3e,0x08,0x08,0x14,0x22,0x00, // 0x4B 75 K
- 0x3e,0x20,0x20,0x20,0x20,0x00, // 0x4C 76 L
- 0x3e,0x04,0x38,0x04,0x3e,0x00, // 0x4D 77 M
- 0x3e,0x04,0x08,0x10,0x3e,0x00, // 0x4E 78 N
- 0x3e,0x22,0x22,0x22,0x3e,0x00, // 0x4F 79 O
- 0x3e,0x0a,0x0a,0x0a,0x0e,0x00, // 0x50 80 P
- 0x3e,0x22,0x72,0x22,0x3e,0x00, // 0x51 81 Q
- 0x3e,0x0a,0x0a,0x1a,0x2e,0x00, // 0x52 82 R
- 0x2e,0x2a,0x2a,0x2a,0x3a,0x00, // 0x53 83 S
- 0x02,0x02,0x3e,0x02,0x02,0x00, // 0x54 84 T
- 0x1e,0x20,0x20,0x20,0x1e,0x00, // 0x55 85 U
- 0x0e,0x10,0x20,0x10,0x0e,0x00, // 0x56 86 V
- 0x3e,0x10,0x0e,0x10,0x3e,0x00, // 0x57 87 W
- 0x22,0x14,0x08,0x14,0x22,0x00, // 0x58 88 X
- 0x02,0x04,0x38,0x04,0x02,0x00, // 0x59 89 Y
- 0x3a,0x2a,0x2a,0x2a,0x2e,0x00, // 0x5A 90 Z
- 0x3e,0x22,0x00,0x00,0x00,0x00, // 0x5B 91 [
- 0x3f,0x21,0x3f,0x00,0x00,0x00, // 0x5C 92 \ backslash
- 0x22,0x3e,0x00,0x00,0x00,0x00, // 0x5D 93 ]
- 0x0c,0x1e,0x3c,0x1e,0x0c,0x00, // 0x5E 94 ^
- 0x20,0x20,0x20,0x20,0x20,0x00, // 0x5F 95 _
- 0x1c,0x3e,0x3e,0x3e,0x1c,0x00, // 0x60 96 `
- 0x3c,0x24,0x24,0x24,0x3c,0x20, // 0x61 97 a
- 0x3e,0x24,0x24,0x24,0x3c,0x00, // 0x62 98 b
- 0x3c,0x24,0x24,0x24,0x24,0x00, // 0x63 99 c
- 0x3c,0x24,0x24,0x24,0x3e,0x00, // 0x64 100 d
- 0x3c,0x24,0x34,0x2c,0x24,0x00, // 0x65 101 e
- 0x08,0x3e,0x0a,0x0a,0x00,0x00, // 0x66 102 f
- 0x1c,0x54,0x54,0x54,0x7c,0x00, // 0x67 103 g
- 0x3e,0x04,0x04,0x04,0x3c,0x00, // 0x68 104 h
- 0x3a,0x00,0x00,0x00,0x00,0x00, // 0x69 105 i
- 0x7a,0x00,0x00,0x00,0x00,0x00, // 0x6A 106 j
- 0x3e,0x08,0x14,0x22,0x00,0x00, // 0x6B 107 k
- 0x02,0x3e,0x00,0x00,0x00,0x00, // 0x6C 108 l
- 0x3c,0x04,0x3c,0x04,0x3c,0x00, // 0x6D 109 m
- 0x3c,0x04,0x04,0x04,0x3c,0x00, // 0x6E 110 n
- 0x3c,0x24,0x24,0x24,0x3c,0x00, // 0x6F 111 o
- 0x7c,0x24,0x24,0x24,0x3c,0x00, // 0x70 112 p
- 0x3c,0x24,0x24,0x24,0x7c,0x00, // 0x71 113 q
- 0x3c,0x04,0x04,0x04,0x00,0x00, // 0x72 114 r
- 0x24,0x2c,0x34,0x24,0x00,0x00, // 0x73 115 s
- 0x04,0x3e,0x24,0x24,0x00,0x00, // 0x74 116 t
- 0x3c,0x20,0x20,0x20,0x3c,0x00, // 0x75 117 u
- 0x0c,0x10,0x20,0x10,0x0c,0x00, // 0x76 118 v
- 0x3c,0x20,0x3c,0x20,0x3c,0x00, // 0x77 119 w
- 0x24,0x24,0x18,0x24,0x24,0x00, // 0x78 120 x
- 0x1c,0x50,0x50,0x50,0x7c,0x00, // 0x79 121 y
- 0x24,0x34,0x2c,0x24,0x00,0x00, // 0x7A 122 z
- 0x08,0x3e,0x22,0x00,0x00,0x00, // 0x7B 123 {
- 0x1c,0x22,0x22,0x22,0x1c,0x00, // 0x7C 124 |
- 0x22,0x3e,0x08,0x00,0x00,0x00, // 0x7D 125 }
- 0x01,0x01,0x01,0x00,0x00,0x00, // 0x7E 126 ~
- 0x00,0x00,0x00,0x00,0x00,0x00, // 0x7F 127
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x03, 0x00, 0x00, 0x00,
+ 0x0a, 0x1f, 0x0a, 0x1f, 0x0a, 0x00,
+ 0x2e, 0x2a, 0x6b, 0x2a, 0x3a, 0x00,
+ 0x0e, 0x2a, 0x1e, 0x08, 0x3c, 0x2a,
+ 0x3e, 0x2a, 0x2a, 0x22, 0x38, 0x08,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x1c, 0x22, 0x00, 0x00, 0x00, 0x00,
+ 0x22, 0x1c, 0x00, 0x00, 0x00, 0x00,
+ 0x15, 0x0e, 0x04, 0x0e, 0x15, 0x00,
+ 0x08, 0x08, 0x3e, 0x08, 0x08, 0x00,
+ 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
+ 0x3e, 0x22, 0x2a, 0x22, 0x3e, 0x00,
+ 0x04, 0x3e, 0x00, 0x00, 0x00, 0x00,
+ 0x3a, 0x2a, 0x2a, 0x2a, 0x2e, 0x00,
+ 0x2a, 0x2a, 0x2a, 0x2a, 0x3e, 0x00,
+ 0x0e, 0x08, 0x08, 0x08, 0x3e, 0x00,
+ 0x2e, 0x2a, 0x2a, 0x2a, 0x3a, 0x00,
+ 0x3e, 0x2a, 0x2a, 0x2a, 0x3a, 0x00,
+ 0x02, 0x02, 0x02, 0x02, 0x3e, 0x00,
+ 0x3e, 0x2a, 0x2a, 0x2a, 0x3e, 0x00,
+ 0x2e, 0x2a, 0x2a, 0x2a, 0x3e, 0x00,
+ 0x14, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x34, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x14, 0x22, 0x00, 0x00, 0x00,
+ 0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
+ 0x22, 0x14, 0x08, 0x00, 0x00, 0x00,
+ 0x06, 0x02, 0x2a, 0x0a, 0x0e, 0x00,
+ 0x3e, 0x02, 0x3a, 0x2a, 0x3e, 0x00,
+ 0x3e, 0x12, 0x12, 0x12, 0x3e, 0x00,
+ 0x3e, 0x2a, 0x2a, 0x2a, 0x36, 0x00,
+ 0x3e, 0x22, 0x22, 0x22, 0x22, 0x00,
+ 0x3e, 0x22, 0x22, 0x22, 0x1c, 0x00,
+ 0x3e, 0x2a, 0x2a, 0x2a, 0x22, 0x00,
+ 0x3e, 0x0a, 0x0a, 0x0a, 0x02, 0x00,
+ 0x3e, 0x22, 0x2a, 0x2a, 0x3a, 0x00,
+ 0x3e, 0x08, 0x08, 0x08, 0x3e, 0x00,
+ 0x22, 0x3e, 0x22, 0x00, 0x00, 0x00,
+ 0x38, 0x20, 0x20, 0x20, 0x3e, 0x00,
+ 0x3e, 0x08, 0x08, 0x14, 0x22, 0x00,
+ 0x3e, 0x20, 0x20, 0x20, 0x20, 0x00,
+ 0x3e, 0x04, 0x38, 0x04, 0x3e, 0x00,
+ 0x3e, 0x04, 0x08, 0x10, 0x3e, 0x00,
+ 0x3e, 0x22, 0x22, 0x22, 0x3e, 0x00,
+ 0x3e, 0x0a, 0x0a, 0x0a, 0x0e, 0x00,
+ 0x3e, 0x22, 0x72, 0x22, 0x3e, 0x00,
+ 0x3e, 0x0a, 0x0a, 0x1a, 0x2e, 0x00,
+ 0x2e, 0x2a, 0x2a, 0x2a, 0x3a, 0x00,
+ 0x02, 0x02, 0x3e, 0x02, 0x02, 0x00,
+ 0x1e, 0x20, 0x20, 0x20, 0x1e, 0x00,
+ 0x0e, 0x10, 0x20, 0x10, 0x0e, 0x00,
+ 0x3e, 0x10, 0x0e, 0x10, 0x3e, 0x00,
+ 0x22, 0x14, 0x08, 0x14, 0x22, 0x00,
+ 0x02, 0x04, 0x38, 0x04, 0x02, 0x00,
+ 0x3a, 0x2a, 0x2a, 0x2a, 0x2e, 0x00,
+ 0x3e, 0x22, 0x00, 0x00, 0x00, 0x00,
+ 0x3f, 0x21, 0x3f, 0x00, 0x00, 0x00,
+ 0x22, 0x3e, 0x00, 0x00, 0x00, 0x00,
+ 0x0c, 0x1e, 0x3c, 0x1e, 0x0c, 0x00,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x00,
+ 0x1c, 0x3e, 0x3e, 0x3e, 0x1c, 0x00,
+ 0x3c, 0x24, 0x24, 0x24, 0x3c, 0x20,
+ 0x3e, 0x24, 0x24, 0x24, 0x3c, 0x00,
+ 0x3c, 0x24, 0x24, 0x24, 0x24, 0x00,
+ 0x3c, 0x24, 0x24, 0x24, 0x3e, 0x00,
+ 0x3c, 0x24, 0x34, 0x2c, 0x24, 0x00,
+ 0x08, 0x3e, 0x0a, 0x0a, 0x00, 0x00,
+ 0x1c, 0x54, 0x54, 0x54, 0x7c, 0x00,
+ 0x3e, 0x04, 0x04, 0x04, 0x3c, 0x00,
+ 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x3e, 0x08, 0x14, 0x22, 0x00, 0x00,
+ 0x02, 0x3e, 0x00, 0x00, 0x00, 0x00,
+ 0x3c, 0x04, 0x3c, 0x04, 0x3c, 0x00,
+ 0x3c, 0x04, 0x04, 0x04, 0x3c, 0x00,
+ 0x3c, 0x24, 0x24, 0x24, 0x3c, 0x00,
+ 0x7c, 0x24, 0x24, 0x24, 0x3c, 0x00,
+ 0x3c, 0x24, 0x24, 0x24, 0x7c, 0x00,
+ 0x3c, 0x04, 0x04, 0x04, 0x00, 0x00,
+ 0x24, 0x2c, 0x34, 0x24, 0x00, 0x00,
+ 0x04, 0x3e, 0x24, 0x24, 0x00, 0x00,
+ 0x3c, 0x20, 0x20, 0x20, 0x3c, 0x00,
+ 0x0c, 0x10, 0x20, 0x10, 0x0c, 0x00,
+ 0x3c, 0x20, 0x3c, 0x20, 0x3c, 0x00,
+ 0x24, 0x24, 0x18, 0x24, 0x24, 0x00,
+ 0x1c, 0x50, 0x50, 0x50, 0x7c, 0x00,
+ 0x24, 0x34, 0x2c, 0x24, 0x00, 0x00,
+ 0x08, 0x3e, 0x22, 0x00, 0x00, 0x00,
+ 0x1c, 0x22, 0x22, 0x22, 0x1c, 0x00,
+ 0x22, 0x3e, 0x08, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+# elif defined(OLED_FONT_CRACKERS)
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x5E, 0x06, 0x06, 0x00, 0x00, 0x00,
+ 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00,
+ 0x20, 0x7C, 0x38, 0x38, 0x7C, 0x08,
+ 0x48, 0xFE, 0x64, 0x64, 0x00, 0x00,
+ 0x64, 0x60, 0x60, 0x18, 0x0C, 0x0C,
+ 0x74, 0x4A, 0x4A, 0x7E, 0x48, 0x00,
+ 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x3C, 0x7E, 0x7E, 0x42, 0x00, 0x00,
+ 0x42, 0x7E, 0x7E, 0x3C, 0x00, 0x00,
+ 0x04, 0x0C, 0x04, 0x06, 0x0C, 0x04,
+ 0x10, 0x3C, 0x3C, 0x3C, 0x10, 0x00,
+ 0x00, 0x60, 0xE0, 0x00, 0x00, 0x00,
+ 0x08, 0x08, 0x08, 0x00, 0x00, 0x00,
+ 0x60, 0x60, 0x60, 0x00, 0x00, 0x00,
+ 0x60, 0x78, 0x78, 0x1E, 0x06, 0x00,
+ 0x3C, 0x3C, 0x7E, 0x42, 0x7E, 0x7E,
+ 0x04, 0x7E, 0x7E, 0x7E, 0x00, 0x00,
+ 0x76, 0x7A, 0x7E, 0x7E, 0x4C, 0x00,
+ 0x4A, 0x7E, 0x7E, 0x7C, 0x00, 0x00,
+ 0x0E, 0x08, 0x7E, 0x7E, 0x7E, 0x00,
+ 0x4E, 0x4E, 0x4E, 0x7A, 0x1A, 0x00,
+ 0x3C, 0x7E, 0x7E, 0x4A, 0x7A, 0x00,
+ 0x02, 0x02, 0x0A, 0x7E, 0x7E, 0x7E,
+ 0x7E, 0x7E, 0x7E, 0x4A, 0x7E, 0x00,
+ 0x0C, 0x4A, 0x7E, 0x7E, 0x3C, 0x00,
+ 0x66, 0x66, 0x66, 0x00, 0x00, 0x00,
+ 0x66, 0xE6, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x3C, 0x7E, 0x7E, 0x62, 0x00,
+ 0x14, 0x14, 0x14, 0x00, 0x00, 0x00,
+ 0x62, 0x7E, 0x7E, 0x3C, 0x08, 0x00,
+ 0x02, 0x4A, 0x0E, 0x0E, 0x0C, 0x00,
+ 0x3C, 0x7E, 0x7E, 0x4A, 0x72, 0x30,
+ 0x7A, 0x4A, 0x7E, 0x7E, 0x7C, 0x00,
+ 0x7E, 0x7E, 0x7E, 0x4A, 0x24, 0x00,
+ 0x3C, 0x7E, 0x7E, 0x7E, 0x46, 0x00,
+ 0x7E, 0x7E, 0x7E, 0x62, 0x3C, 0x00,
+ 0x7E, 0x7E, 0x7E, 0x4A, 0x00, 0x00,
+ 0x7E, 0x7E, 0x7E, 0x0A, 0x00, 0x00,
+ 0x3C, 0x7E, 0x7E, 0x42, 0x62, 0x00,
+ 0x7E, 0x7E, 0x7E, 0x18, 0x7E, 0x00,
+ 0x7E, 0x7E, 0x7E, 0x00, 0x00, 0x00,
+ 0x40, 0x7E, 0x7E, 0x7E, 0x00, 0x00,
+ 0x7E, 0x7E, 0x7E, 0x3C, 0x66, 0x00,
+ 0x7E, 0x7E, 0x7E, 0x40, 0x00, 0x00,
+ 0x7E, 0x3E, 0x3E, 0x7C, 0x3E, 0x3E,
+ 0x7E, 0x3E, 0x7E, 0x7C, 0x7E, 0x00,
+ 0x3C, 0x3C, 0x7E, 0x62, 0x7E, 0x7E,
+ 0x7E, 0x7E, 0x7E, 0x22, 0x0C, 0x00,
+ 0x3C, 0x7E, 0x7E, 0x62, 0x7E, 0x7C,
+ 0x7E, 0x7E, 0x7E, 0x0A, 0x64, 0x00,
+ 0x4C, 0x4E, 0x4E, 0x7A, 0x1A, 0x00,
+ 0x02, 0x7E, 0x7E, 0x7E, 0x02, 0x00,
+ 0x7E, 0x60, 0x7E, 0x7E, 0x7E, 0x00,
+ 0x3E, 0x60, 0x7E, 0x7E, 0x3E, 0x00,
+ 0x7E, 0x7C, 0x7C, 0x3E, 0x7C, 0x7C,
+ 0x46, 0x7E, 0x08, 0x7E, 0x62, 0x62,
+ 0x5E, 0x5E, 0x5E, 0x70, 0x3E, 0x00,
+ 0x66, 0x7A, 0x7A, 0x5E, 0x66, 0x00,
+ 0x7E, 0x7E, 0x7E, 0x42, 0x00, 0x00,
+ 0x06, 0x1E, 0x1E, 0x78, 0x60, 0x00,
+ 0x42, 0x7E, 0x7E, 0x7E, 0x00, 0x00,
+ 0x0C, 0x06, 0x0C, 0x00, 0x00, 0x00,
+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
+ 0x02, 0x06, 0x06, 0x04, 0x00, 0x00,
+ 0x78, 0x24, 0x7C, 0x7C, 0x78, 0x00,
+ 0x7C, 0x7C, 0x7C, 0x48, 0x20, 0x00,
+ 0x18, 0x7C, 0x7C, 0x7C, 0x4C, 0x00,
+ 0x20, 0x48, 0x7C, 0x7C, 0x7C, 0x00,
+ 0x18, 0x7C, 0x7C, 0x74, 0x4C, 0x00,
+ 0x78, 0x7C, 0x7C, 0x24, 0x00, 0x00,
+ 0x18, 0x7C, 0x7C, 0x44, 0x74, 0x00,
+ 0x7C, 0x7C, 0x7C, 0x08, 0x60, 0x00,
+ 0x7C, 0x7C, 0x7C, 0x00, 0x00, 0x00,
+ 0x40, 0x7C, 0x7C, 0x7C, 0x00, 0x00,
+ 0x7C, 0x7C, 0x7C, 0x20, 0x48, 0x00,
+ 0x7C, 0x7C, 0x7C, 0x40, 0x00, 0x00,
+ 0x7C, 0x3C, 0x3C, 0x78, 0x3C, 0x3C,
+ 0x7C, 0x7C, 0x7C, 0x04, 0x78, 0x00,
+ 0x18, 0x18, 0x7C, 0x44, 0x7C, 0x7C,
+ 0x7C, 0x7C, 0x7C, 0x24, 0x08, 0x00,
+ 0x18, 0x18, 0x7C, 0x44, 0x7C, 0x7C,
+ 0x7C, 0x7C, 0x7C, 0x04, 0x00, 0x00,
+ 0x5C, 0x7C, 0x7C, 0x74, 0x00, 0x00,
+ 0x08, 0x7C, 0x7C, 0x7C, 0x48, 0x00,
+ 0x7C, 0x60, 0x7C, 0x7C, 0x7C, 0x00,
+ 0x3C, 0x60, 0x7C, 0x7C, 0x3C, 0x00,
+ 0x7C, 0x78, 0x78, 0x3C, 0x78, 0x78,
+ 0x4C, 0x3C, 0x3C, 0x78, 0x64, 0x00,
+ 0x4C, 0x4C, 0x4C, 0x78, 0x3C, 0x00,
+ 0x5C, 0x74, 0x44, 0x5C, 0x74, 0x00,
+ 0x24, 0x7E, 0x42, 0x42, 0x00, 0x00,
+ 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x42, 0x7E, 0x24, 0x00, 0x00, 0x00,
+ 0x04, 0x06, 0x06, 0x02, 0x04, 0x06,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+# elif defined(OLED_FONT_EIN)
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
+ 0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
+ 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
+ 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
+ 0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
+ 0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
+ 0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
+ 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
+ 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
+ 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
+ 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
+ 0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
+ 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
+ 0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
+ 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
+ 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
+ 0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
+ 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
+ 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
+ 0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
+ 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
+ 0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
+ 0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
+ 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
+ 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
+ 0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
+ 0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
+ 0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
+ 0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
+ 0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
+ 0x00, 0x41, 0x5D, 0x59, 0x4E, 0x00,
+ 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
+ 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
+ 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
+ 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
+ 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
+ 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
+ 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
+ 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
+ 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00,
+ 0x20, 0x40, 0x40, 0x3F, 0x00, 0x00,
+ 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
+ 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
+ 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
+ 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
+ 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
+ 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
+ 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
+ 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
+ 0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
+ 0x01, 0x01, 0x7F, 0x01, 0x01, 0x00,
+ 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
+ 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
+ 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
+ 0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
+ 0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
+ 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
+ 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
+ 0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
+ 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
+ 0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
+ 0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
+ 0x78, 0x14, 0x14, 0x78, 0x00, 0x00,
+ 0x7C, 0x54, 0x54, 0x28, 0x00, 0x00,
+ 0x38, 0x44, 0x44, 0x28, 0x00, 0x00,
+ 0x7C, 0x44, 0x44, 0x38, 0x00, 0x00,
+ 0x7C, 0x54, 0x54, 0x44, 0x00, 0x00,
+ 0x7C, 0x14, 0x14, 0x04, 0x00, 0x00,
+ 0x38, 0x44, 0x54, 0x34, 0x00, 0x00,
+ 0x7C, 0x10, 0x10, 0x7C, 0x00, 0x00,
+ 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x40, 0x40, 0x3C, 0x00, 0x00,
+ 0x7C, 0x10, 0x28, 0x44, 0x00, 0x00,
+ 0x7C, 0x40, 0x40, 0x40, 0x00, 0x00,
+ 0x7C, 0x08, 0x70, 0x08, 0x7C, 0x00,
+ 0x7C, 0x08, 0x10, 0x7C, 0x00, 0x00,
+ 0x38, 0x44, 0x44, 0x38, 0x00, 0x00,
+ 0x7C, 0x14, 0x14, 0x08, 0x00, 0x00,
+ 0x38, 0x44, 0x24, 0x58, 0x00, 0x00,
+ 0x7C, 0x14, 0x34, 0x48, 0x00, 0x00,
+ 0x48, 0x54, 0x54, 0x24, 0x00, 0x00,
+ 0x04, 0x7C, 0x04, 0x00, 0x00, 0x00,
+ 0x3C, 0x40, 0x40, 0x3C, 0x00, 0x00,
+ 0x3C, 0x40, 0x20, 0x1C, 0x00, 0x00,
+ 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
+ 0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
+ 0x0C, 0x10, 0x70, 0x10, 0x0C, 0x00,
+ 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
+ 0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
+ 0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
+ 0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
+ 0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
+ 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
+# elif defined(OLED_FONT_HISKYF21)
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x5C, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00,
+ 0x28, 0x7C, 0x28, 0x7C, 0x28, 0x00,
+ 0x48, 0x54, 0x54, 0xFE, 0x54, 0x54,
+ 0x44, 0x20, 0x10, 0x08, 0x44, 0x00,
+ 0x28, 0x54, 0x54, 0x54, 0x74, 0x10,
+ 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x78, 0x84, 0x00, 0x00, 0x00, 0x00,
+ 0x84, 0x78, 0x00, 0x00, 0x00, 0x00,
+ 0x48, 0x30, 0x30, 0x48, 0x00, 0x00,
+ 0x10, 0x38, 0x10, 0x00, 0x00, 0x00,
+ 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
+ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x60, 0x10, 0x0C, 0x00, 0x00, 0x00,
+ 0x38, 0x44, 0x44, 0x44, 0x44, 0x38,
+ 0x08, 0x7C, 0x00, 0x00, 0x00, 0x00,
+ 0x64, 0x54, 0x54, 0x54, 0x48, 0x00,
+ 0x44, 0x54, 0x54, 0x54, 0x28, 0x00,
+ 0x1C, 0x10, 0x10, 0x10, 0x7C, 0x00,
+ 0x4C, 0x54, 0x54, 0x54, 0x24, 0x00,
+ 0x38, 0x54, 0x54, 0x54, 0x54, 0x20,
+ 0x44, 0x24, 0x14, 0x0C, 0x00, 0x00,
+ 0x28, 0x54, 0x54, 0x54, 0x54, 0x28,
+ 0x08, 0x54, 0x54, 0x54, 0x54, 0x38,
+ 0x48, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x10, 0x28, 0x44, 0x00, 0x00, 0x00,
+ 0x28, 0x28, 0x28, 0x28, 0x00, 0x00,
+ 0x44, 0x28, 0x10, 0x00, 0x00, 0x00,
+ 0x04, 0x54, 0x14, 0x14, 0x08, 0x00,
+ 0x38, 0x44, 0x5C, 0x54, 0x48, 0x00,
+ 0x60, 0x18, 0x14, 0x14, 0x18, 0x60,
+ 0x7C, 0x54, 0x54, 0x54, 0x58, 0x30,
+ 0x38, 0x44, 0x44, 0x44, 0x40, 0x00,
+ 0x7C, 0x44, 0x44, 0x44, 0x38, 0x00,
+ 0x7C, 0x54, 0x54, 0x54, 0x54, 0x40,
+ 0x7C, 0x14, 0x14, 0x14, 0x10, 0x00,
+ 0x38, 0x44, 0x44, 0x44, 0x70, 0x10,
+ 0x7C, 0x10, 0x10, 0x10, 0x10, 0x7C,
+ 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x40, 0x40, 0x40, 0x40, 0x3C,
+ 0x7C, 0x10, 0x10, 0x28, 0x44, 0x00,
+ 0x7C, 0x40, 0x40, 0x40, 0x00, 0x00,
+ 0x7C, 0x08, 0x10, 0x60, 0x10, 0x08,
+ 0x7C, 0x08, 0x10, 0x20, 0x7C, 0x00,
+ 0x38, 0x44, 0x44, 0x44, 0x44, 0x38,
+ 0x7C, 0x24, 0x24, 0x24, 0x18, 0x00,
+ 0x38, 0x44, 0x64, 0x44, 0x38, 0x00,
+ 0x7C, 0x14, 0x14, 0x14, 0x68, 0x00,
+ 0x48, 0x54, 0x54, 0x54, 0x54, 0x20,
+ 0x04, 0x04, 0x7C, 0x04, 0x04, 0x00,
+ 0x3C, 0x40, 0x40, 0x40, 0x3C, 0x00,
+ 0x0C, 0x30, 0x40, 0x30, 0x0C, 0x00,
+ 0x0C, 0x30, 0x40, 0x20, 0x1C, 0x20,
+ 0x74, 0x2C, 0x10, 0x28, 0x44, 0x00,
+ 0x04, 0x08, 0x70, 0x08, 0x04, 0x00,
+ 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
+ 0xFC, 0x84, 0x00, 0x00, 0x00, 0x00,
+ 0x0C, 0x10, 0x60, 0x00, 0x00, 0x00,
+ 0x84, 0xFC, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x7F, 0x41, 0x7F, 0x00, 0x00,
+ 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
+ 0x00, 0x7F, 0x41, 0x7F, 0x00, 0x00,
+ 0x60, 0x18, 0x14, 0x14, 0x18, 0x60,
+ 0x7C, 0x54, 0x54, 0x54, 0x58, 0x30,
+ 0x38, 0x44, 0x44, 0x44, 0x40, 0x00,
+ 0x7C, 0x44, 0x44, 0x44, 0x38, 0x00,
+ 0x7C, 0x54, 0x54, 0x54, 0x54, 0x40,
+ 0x7C, 0x14, 0x14, 0x14, 0x10, 0x00,
+ 0x38, 0x44, 0x44, 0x44, 0x70, 0x10,
+ 0x7C, 0x10, 0x10, 0x10, 0x10, 0x7C,
+ 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x40, 0x40, 0x40, 0x40, 0x3C,
+ 0x7C, 0x10, 0x10, 0x28, 0x44, 0x00,
+ 0x7C, 0x40, 0x40, 0x40, 0x00, 0x00,
+ 0x7C, 0x08, 0x10, 0x60, 0x10, 0x08,
+ 0x7C, 0x08, 0x10, 0x20, 0x7C, 0x00,
+ 0x38, 0x44, 0x44, 0x44, 0x44, 0x38,
+ 0x7C, 0x24, 0x24, 0x24, 0x18, 0x00,
+ 0x38, 0x44, 0x64, 0x44, 0x38, 0x00,
+ 0x7C, 0x14, 0x14, 0x14, 0x68, 0x00,
+ 0x48, 0x54, 0x54, 0x54, 0x54, 0x20,
+ 0x04, 0x04, 0x7C, 0x04, 0x04, 0x00,
+ 0x3C, 0x40, 0x40, 0x40, 0x3C, 0x00,
+ 0x0C, 0x30, 0x40, 0x30, 0x0C, 0x00,
+ 0x0C, 0x30, 0x40, 0x20, 0x1C, 0x20,
+ 0x74, 0x2C, 0x10, 0x28, 0x44, 0x00,
+ 0x04, 0x08, 0x70, 0x08, 0x04, 0x00,
+ 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
+ 0x00, 0x7F, 0x41, 0x7F, 0x00, 0x00,
+ 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x7F, 0x41, 0x7F, 0x00, 0x00,
+ 0x00, 0x7F, 0x41, 0x7F, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
# elif defined(OLED_FONT_SUPER_DIGG)
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x20 32
- 0x58, 0x5C, 0x00, 0x00, 0x00, 0x00, // 0x21 33 !
- 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, // 0x22 34 "
- 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, // 0x23 35 #
- 0x5C, 0xFE, 0x54, 0xFE, 0x74, 0x00, // 0x24 36 $
- 0x03, 0x63, 0x38, 0x0C, 0x63, 0x60, // 0x25 37 %
- 0x70, 0x5C, 0x54, 0x74, 0x7C, 0x50, // 0x26 38 &
- 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // 0x27 39 '
- 0x70, 0x7C, 0x44, 0x00, 0x00, 0x00, // 0x28 40 (
- 0x44, 0x7C, 0x70, 0x00, 0x00, 0x00, // 0x29 41 )
- 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, // 0x2A 42 *
- 0x10, 0x10, 0x70, 0x7C, 0x10, 0x00, // 0x2B 43 +
- 0x40, 0xC0, 0x00, 0x00, 0x00, 0x00, // 0x2C 44 ,
- 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, // 0x2D 45 -
- 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, // 0x2E 46 .
- 0x70, 0x7C, 0x03, 0x00, 0x00, 0x00, // 0x2F 47 /
- 0x7C, 0x44, 0x44, 0x44, 0x7C, 0x1C, // 0x30 48 0
- 0x04, 0x04, 0x7C, 0x1C, 0x00, 0x00, // 0x31 49 1
- 0x74, 0x74, 0x54, 0x54, 0x5C, 0x00, // 0x32 50 2
- 0x44, 0x54, 0x54, 0x54, 0x7C, 0x70, // 0x33 51 3
- 0x1C, 0x10, 0x10, 0x7C, 0x7C, 0x00, // 0x34 52 4
- 0x5C, 0x5C, 0x54, 0x54, 0x74, 0x00, // 0x35 53 5
- 0x70, 0x7C, 0x54, 0x54, 0x74, 0x00, // 0x36 54 6
- 0x04, 0x14, 0x14, 0x14, 0x7C, 0x70, // 0x37 55 7
- 0x70, 0x5C, 0x54, 0x74, 0x7C, 0x00, // 0x38 56 8
- 0x5C, 0x54, 0x54, 0x54, 0x7C, 0x1C, // 0x39 57 9
- 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, // 0x3A 58 :
- 0x50, 0xD0, 0x00, 0x00, 0x00, 0x00, // 0x3B 59 ;
- 0x18, 0x18, 0x24, 0x42, 0x00, 0x00, // 0x3C 60 <
- 0x28, 0x28, 0x28, 0x28, 0x00, 0x00, // 0x3D 61 =
- 0x42, 0x24, 0x18, 0x18, 0x00, 0x00, // 0x3E 62 >
- 0x04, 0x14, 0x54, 0x54, 0x1C, 0x1C, // 0x3F 63 ?
- 0xF8, 0x04, 0x74, 0x74, 0x54, 0x54, // 0x40 64 @
- 0x70, 0x7C, 0x14, 0x14, 0x3C, 0x00, // 0x41 65 A
- 0x7C, 0x74, 0x54, 0x54, 0x7C, 0x00, // 0x42 66 B
- 0x70, 0x7C, 0x44, 0x44, 0x44, 0x44, // 0x43 67 C
- 0x70, 0x7C, 0x44, 0x44, 0x48, 0x70, // 0x44 68 D
- 0x70, 0x7C, 0x54, 0x54, 0x54, 0x44, // 0x45 69 E
- 0x70, 0x7C, 0x14, 0x14, 0x14, 0x04, // 0x46 70 F
- 0x70, 0x7C, 0x44, 0x44, 0x54, 0x74, // 0x47 71 G
- 0x70, 0x7C, 0x10, 0x10, 0x7C, 0x00, // 0x48 72 H
- 0x70, 0x7C, 0x00, 0x00, 0x00, 0x00, // 0x49 73 I
- 0x60, 0x40, 0x40, 0x40, 0x7C, 0x70, // 0x4A 74 J
- 0x7C, 0x70, 0x10, 0x1C, 0x70, 0x00, // 0x4B 75 K
- 0x70, 0x7C, 0x40, 0x40, 0x40, 0x60, // 0x4C 76 L
- 0x70, 0x7C, 0x04, 0x04, 0x7C, 0x04, // 0x4D 77 M
- 0x70, 0x7C, 0x04, 0x04, 0x04, 0x7C, // 0x4E 78 N
- 0x70, 0x7C, 0x44, 0x44, 0x44, 0x7C, // 0x4F 79 O
- 0x70, 0x7C, 0x24, 0x24, 0x3C, 0x00, // 0x50 80 P
- 0x7C, 0x44, 0x44, 0x44, 0x7C, 0x00, // 0x51 81 Q
- 0x7C, 0x74, 0x14, 0x14, 0x3C, 0x00, // 0x52 82 R
- 0x5C, 0x5C, 0x54, 0x54, 0x74, 0x00, // 0x53 83 S
- 0x04, 0x04, 0x7C, 0x74, 0x04, 0x00, // 0x54 84 T
- 0x70, 0x7C, 0x40, 0x40, 0x40, 0x7C, // 0x55 85 U
- 0x70, 0x7C, 0x40, 0x40, 0x20, 0x1C, // 0x56 86 V
- 0x70, 0x7C, 0x40, 0x40, 0x7C, 0x40, // 0x57 87 W
- 0x70, 0x7C, 0x10, 0x10, 0x3C, 0x00, // 0x58 88 X
- 0x1C, 0x10, 0x70, 0x70, 0x1C, 0x00, // 0x59 89 Y
- 0x74, 0x74, 0x54, 0x54, 0x5C, 0x00, // 0x5A 90 Z
- 0xF0, 0xFE, 0x82, 0x00, 0x00, 0x00, // 0x5B 91 [
- 0x03, 0x7C, 0x70, 0x00, 0x00, 0x00, // 0x5C 92 \ backslash
- 0x82, 0xFE, 0xF0, 0x00, 0x00, 0x00, // 0x5D 93 ]
- 0x04, 0x02, 0x01, 0x06, 0x04, 0x00, // 0x5E 94 ^
- 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, // 0x5F 95 _
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x60 96 `
- 0x70, 0x7C, 0x14, 0x14, 0x3C, 0x00, // 0x61 97 a
- 0x7C, 0x74, 0x54, 0x54, 0x7C, 0x00, // 0x62 98 b
- 0x70, 0x7C, 0x44, 0x44, 0x44, 0x44, // 0x63 99 c
- 0x70, 0x7C, 0x44, 0x44, 0x48, 0x70, // 0x64 100 d
- 0x70, 0x7C, 0x54, 0x54, 0x54, 0x44, // 0x65 101 e
- 0x70, 0x7C, 0x14, 0x14, 0x14, 0x04, // 0x66 102 f
- 0x70, 0x7C, 0x44, 0x44, 0x54, 0x74, // 0x67 103 g
- 0x70, 0x7C, 0x10, 0x10, 0x7C, 0x00, // 0x68 104 h
- 0x70, 0x7C, 0x00, 0x00, 0x00, 0x00, // 0x69 105 i
- 0x60, 0x40, 0x40, 0x40, 0x7C, 0x70, // 0x6A 106 j
- 0x7C, 0x70, 0x10, 0x1C, 0x70, 0x00, // 0x6B 107 k
- 0x70, 0x7C, 0x40, 0x40, 0x40, 0x60, // 0x6C 108 l
- 0x70, 0x7C, 0x04, 0x04, 0x7C, 0x04, // 0x6D 109 m
- 0x70, 0x7C, 0x04, 0x04, 0x04, 0x7C, // 0x6E 110 n
- 0x70, 0x7C, 0x44, 0x44, 0x44, 0x7C, // 0x6F 111 o
- 0x70, 0x7C, 0x24, 0x24, 0x3C, 0x00, // 0x70 112 p
- 0x7C, 0x44, 0x44, 0x44, 0x7C, 0x00, // 0x71 113 q
- 0x7C, 0x74, 0x14, 0x14, 0x3C, 0x00, // 0x72 114 r
- 0x5C, 0x5C, 0x54, 0x54, 0x74, 0x00, // 0x73 115 s
- 0x04, 0x04, 0x7C, 0x74, 0x04, 0x00, // 0x74 116 t
- 0x70, 0x7C, 0x40, 0x40, 0x40, 0x7C, // 0x75 117 u
- 0x70, 0x7C, 0x40, 0x40, 0x20, 0x1C, // 0x76 118 v
- 0x70, 0x7C, 0x40, 0x40, 0x7C, 0x40, // 0x77 119 w
- 0x70, 0x7C, 0x10, 0x10, 0x3C, 0x00, // 0x78 120 x
- 0x1C, 0x10, 0x70, 0x70, 0x1C, 0x00, // 0x79 121 y
- 0x74, 0x74, 0x54, 0x54, 0x5C, 0x00, // 0x7A 122 z
- 0x10, 0xFE, 0xC2, 0x00, 0x00, 0x00, // 0x7B 123 {
- 0x00, 0x44, 0x77, 0x00, 0x00, 0x00, // 0x7C 124 |
- 0xC2, 0xFE, 0x10, 0x00, 0x00, 0x00, // 0x7D 125 }
- 0x02, 0x01, 0x03, 0x04, 0x06, 0x02, // 0x7E 126 ~
- 0x3C, 0x22, 0x21, 0x22, 0x3C, 0x00, // 0x7F 127
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x58, 0x5C, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
+ 0x5C, 0xFE, 0x54, 0xFE, 0x74, 0x00,
+ 0x03, 0x63, 0x38, 0x0C, 0x63, 0x60,
+ 0x70, 0x5C, 0x54, 0x74, 0x7C, 0x50,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x70, 0x7C, 0x44, 0x00, 0x00, 0x00,
+ 0x44, 0x7C, 0x70, 0x00, 0x00, 0x00,
+ 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
+ 0x10, 0x10, 0x70, 0x7C, 0x10, 0x00,
+ 0x40, 0xC0, 0x00, 0x00, 0x00, 0x00,
+ 0x10, 0x10, 0x10, 0x10, 0x00, 0x00,
+ 0x40, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x70, 0x7C, 0x03, 0x00, 0x00, 0x00,
+ 0x7C, 0x44, 0x44, 0x44, 0x7C, 0x1C,
+ 0x04, 0x04, 0x7C, 0x1C, 0x00, 0x00,
+ 0x74, 0x74, 0x54, 0x54, 0x5C, 0x00,
+ 0x44, 0x54, 0x54, 0x54, 0x7C, 0x70,
+ 0x1C, 0x10, 0x10, 0x7C, 0x7C, 0x00,
+ 0x5C, 0x5C, 0x54, 0x54, 0x74, 0x00,
+ 0x70, 0x7C, 0x54, 0x54, 0x74, 0x00,
+ 0x04, 0x14, 0x14, 0x14, 0x7C, 0x70,
+ 0x70, 0x5C, 0x54, 0x74, 0x7C, 0x00,
+ 0x5C, 0x54, 0x54, 0x54, 0x7C, 0x1C,
+ 0x50, 0x50, 0x00, 0x00, 0x00, 0x00,
+ 0x50, 0xD0, 0x00, 0x00, 0x00, 0x00,
+ 0x18, 0x18, 0x24, 0x42, 0x00, 0x00,
+ 0x28, 0x28, 0x28, 0x28, 0x00, 0x00,
+ 0x42, 0x24, 0x18, 0x18, 0x00, 0x00,
+ 0x04, 0x14, 0x54, 0x54, 0x1C, 0x1C,
+ 0xF8, 0x04, 0x74, 0x74, 0x54, 0x54,
+ 0x70, 0x7C, 0x14, 0x14, 0x3C, 0x00,
+ 0x7C, 0x74, 0x54, 0x54, 0x7C, 0x00,
+ 0x70, 0x7C, 0x44, 0x44, 0x44, 0x44,
+ 0x70, 0x7C, 0x44, 0x44, 0x48, 0x70,
+ 0x70, 0x7C, 0x54, 0x54, 0x54, 0x44,
+ 0x70, 0x7C, 0x14, 0x14, 0x14, 0x04,
+ 0x70, 0x7C, 0x44, 0x44, 0x54, 0x74,
+ 0x70, 0x7C, 0x10, 0x10, 0x7C, 0x00,
+ 0x70, 0x7C, 0x00, 0x00, 0x00, 0x00,
+ 0x60, 0x40, 0x40, 0x40, 0x7C, 0x70,
+ 0x7C, 0x70, 0x10, 0x1C, 0x70, 0x00,
+ 0x70, 0x7C, 0x40, 0x40, 0x40, 0x60,
+ 0x70, 0x7C, 0x04, 0x04, 0x7C, 0x04,
+ 0x70, 0x7C, 0x04, 0x04, 0x04, 0x7C,
+ 0x70, 0x7C, 0x44, 0x44, 0x44, 0x7C,
+ 0x70, 0x7C, 0x24, 0x24, 0x3C, 0x00,
+ 0x7C, 0x44, 0x44, 0x44, 0x7C, 0x00,
+ 0x7C, 0x74, 0x14, 0x14, 0x3C, 0x00,
+ 0x5C, 0x5C, 0x54, 0x54, 0x74, 0x00,
+ 0x04, 0x04, 0x7C, 0x74, 0x04, 0x00,
+ 0x70, 0x7C, 0x40, 0x40, 0x40, 0x7C,
+ 0x70, 0x7C, 0x40, 0x40, 0x20, 0x1C,
+ 0x70, 0x7C, 0x40, 0x40, 0x7C, 0x40,
+ 0x70, 0x7C, 0x10, 0x10, 0x3C, 0x00,
+ 0x1C, 0x10, 0x70, 0x70, 0x1C, 0x00,
+ 0x74, 0x74, 0x54, 0x54, 0x5C, 0x00,
+ 0xF0, 0xFE, 0x82, 0x00, 0x00, 0x00,
+ 0x03, 0x7C, 0x70, 0x00, 0x00, 0x00,
+ 0x82, 0xFE, 0xF0, 0x00, 0x00, 0x00,
+ 0x04, 0x02, 0x01, 0x06, 0x04, 0x00,
+ 0x40, 0x40, 0x40, 0x40, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x70, 0x7C, 0x14, 0x14, 0x3C, 0x00,
+ 0x7C, 0x74, 0x54, 0x54, 0x7C, 0x00,
+ 0x70, 0x7C, 0x44, 0x44, 0x44, 0x44,
+ 0x70, 0x7C, 0x44, 0x44, 0x48, 0x70,
+ 0x70, 0x7C, 0x54, 0x54, 0x54, 0x44,
+ 0x70, 0x7C, 0x14, 0x14, 0x14, 0x04,
+ 0x70, 0x7C, 0x44, 0x44, 0x54, 0x74,
+ 0x70, 0x7C, 0x10, 0x10, 0x7C, 0x00,
+ 0x70, 0x7C, 0x00, 0x00, 0x00, 0x00,
+ 0x60, 0x40, 0x40, 0x40, 0x7C, 0x70,
+ 0x7C, 0x70, 0x10, 0x1C, 0x70, 0x00,
+ 0x70, 0x7C, 0x40, 0x40, 0x40, 0x60,
+ 0x70, 0x7C, 0x04, 0x04, 0x7C, 0x04,
+ 0x70, 0x7C, 0x04, 0x04, 0x04, 0x7C,
+ 0x70, 0x7C, 0x44, 0x44, 0x44, 0x7C,
+ 0x70, 0x7C, 0x24, 0x24, 0x3C, 0x00,
+ 0x7C, 0x44, 0x44, 0x44, 0x7C, 0x00,
+ 0x7C, 0x74, 0x14, 0x14, 0x3C, 0x00,
+ 0x5C, 0x5C, 0x54, 0x54, 0x74, 0x00,
+ 0x04, 0x04, 0x7C, 0x74, 0x04, 0x00,
+ 0x70, 0x7C, 0x40, 0x40, 0x40, 0x7C,
+ 0x70, 0x7C, 0x40, 0x40, 0x20, 0x1C,
+ 0x70, 0x7C, 0x40, 0x40, 0x7C, 0x40,
+ 0x70, 0x7C, 0x10, 0x10, 0x3C, 0x00,
+ 0x1C, 0x10, 0x70, 0x70, 0x1C, 0x00,
+ 0x74, 0x74, 0x54, 0x54, 0x5C, 0x00,
+ 0x10, 0xFE, 0xC2, 0x00, 0x00, 0x00,
+ 0x00, 0x44, 0x77, 0x00, 0x00, 0x00,
+ 0xC2, 0xFE, 0x10, 0x00, 0x00, 0x00,
+ 0x02, 0x01, 0x03, 0x04, 0x06, 0x02,
+ 0x3C, 0x22, 0x21, 0x22, 0x3C, 0x00,
+#elif defined (OLED_FONT_ZXPIX)
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x03, 0x00, 0x00, 0x00,
+ 0x12, 0x3F, 0x12, 0x12, 0x3F, 0x12,
+ 0x2E, 0x2A, 0x7F, 0x2A, 0x3A, 0x00,
+ 0x23, 0x13, 0x08, 0x04, 0x32, 0x31,
+ 0x10, 0x2A, 0x25, 0x2A, 0x10, 0x20,
+ 0x02, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x1E, 0x21, 0x00, 0x00, 0x00, 0x00,
+ 0x21, 0x1E, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x2A, 0x1C, 0x2A, 0x08, 0x08,
+ 0x08, 0x08, 0x3E, 0x08, 0x08, 0x08,
+ 0x80, 0x60, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
+ 0x30, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
+ 0x1E, 0x31, 0x29, 0x25, 0x23, 0x1E,
+ 0x22, 0x21, 0x3F, 0x20, 0x20, 0x20,
+ 0x32, 0x29, 0x29, 0x29, 0x29, 0x26,
+ 0x12, 0x21, 0x21, 0x25, 0x25, 0x1A,
+ 0x18, 0x14, 0x12, 0x3F, 0x10, 0x10,
+ 0x17, 0x25, 0x25, 0x25, 0x25, 0x19,
+ 0x1E, 0x25, 0x25, 0x25, 0x25, 0x18,
+ 0x01, 0x01, 0x31, 0x09, 0x05, 0x03,
+ 0x1A, 0x25, 0x25, 0x25, 0x25, 0x1A,
+ 0x06, 0x29, 0x29, 0x29, 0x29, 0x1E,
+ 0x24, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x64, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x14, 0x22, 0x00, 0x00, 0x00,
+ 0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
+ 0x22, 0x14, 0x08, 0x00, 0x00, 0x00,
+ 0x02, 0x01, 0x01, 0x29, 0x05, 0x02,
+ 0x1E, 0x21, 0x2D, 0x2B, 0x2D, 0x0E,
+ 0x3E, 0x09, 0x09, 0x09, 0x09, 0x3E,
+ 0x3F, 0x25, 0x25, 0x25, 0x25, 0x1A,
+ 0x1E, 0x21, 0x21, 0x21, 0x21, 0x12,
+ 0x3F, 0x21, 0x21, 0x21, 0x12, 0x0C,
+ 0x3F, 0x25, 0x25, 0x25, 0x25, 0x21,
+ 0x3F, 0x05, 0x05, 0x05, 0x05, 0x01,
+ 0x1E, 0x21, 0x21, 0x21, 0x29, 0x1A,
+ 0x3F, 0x04, 0x04, 0x04, 0x04, 0x3F,
+ 0x21, 0x21, 0x3F, 0x21, 0x21, 0x21,
+ 0x10, 0x20, 0x20, 0x20, 0x20, 0x1F,
+ 0x3F, 0x04, 0x0C, 0x0A, 0x11, 0x20,
+ 0x3F, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x3F, 0x02, 0x04, 0x04, 0x02, 0x3F,
+ 0x3F, 0x02, 0x04, 0x08, 0x10, 0x3F,
+ 0x1E, 0x21, 0x21, 0x21, 0x21, 0x1E,
+ 0x3F, 0x09, 0x09, 0x09, 0x09, 0x06,
+ 0x1E, 0x21, 0x29, 0x31, 0x21, 0x1E,
+ 0x3F, 0x09, 0x09, 0x09, 0x19, 0x26,
+ 0x12, 0x25, 0x25, 0x25, 0x25, 0x18,
+ 0x01, 0x01, 0x01, 0x3F, 0x01, 0x01,
+ 0x1F, 0x20, 0x20, 0x20, 0x20, 0x1F,
+ 0x0F, 0x10, 0x20, 0x20, 0x10, 0x0F,
+ 0x1F, 0x20, 0x10, 0x10, 0x20, 0x1F,
+ 0x21, 0x12, 0x0C, 0x0C, 0x12, 0x21,
+ 0x01, 0x02, 0x0C, 0x38, 0x04, 0x02,
+ 0x21, 0x31, 0x29, 0x25, 0x23, 0x21,
+ 0x3F, 0x21, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
+ 0x21, 0x3F, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x02, 0x3F, 0x02, 0x04, 0x00,
+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
+ 0x01, 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0x10, 0x30, 0x2A, 0x2A, 0x3C, 0x00,
+ 0x3F, 0x24, 0x24, 0x24, 0x18, 0x00,
+ 0x0C, 0x14, 0x22, 0x22, 0x00, 0x00,
+ 0x18, 0x24, 0x24, 0x24, 0x3F, 0x00,
+ 0x1C, 0x2C, 0x2A, 0x2A, 0x24, 0x00,
+ 0x3E, 0x05, 0x01, 0x00, 0x00, 0x00,
+ 0x18, 0x28, 0xA4, 0xA4, 0x7C, 0x00,
+ 0x3F, 0x04, 0x04, 0x0C, 0x30, 0x00,
+ 0x24, 0x3D, 0x20, 0x00, 0x00, 0x00,
+ 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
+ 0x3F, 0x0C, 0x12, 0x20, 0x00, 0x00,
+ 0x1F, 0x20, 0x20, 0x00, 0x00, 0x00,
+ 0x3E, 0x02, 0x3C, 0x02, 0x3C, 0x00,
+ 0x3E, 0x02, 0x02, 0x02, 0x3C, 0x00,
+ 0x0C, 0x14, 0x22, 0x32, 0x0C, 0x00,
+ 0xFC, 0x24, 0x24, 0x24, 0x18, 0x00,
+ 0x18, 0x24, 0x24, 0x24, 0xFC, 0x80,
+ 0x3C, 0x04, 0x02, 0x02, 0x00, 0x00,
+ 0x24, 0x2C, 0x2A, 0x2A, 0x10, 0x00,
+ 0x02, 0x1F, 0x22, 0x20, 0x00, 0x00,
+ 0x1E, 0x20, 0x20, 0x20, 0x1E, 0x00,
+ 0x06, 0x18, 0x20, 0x18, 0x06, 0x00,
+ 0x1E, 0x30, 0x1C, 0x30, 0x0E, 0x00,
+ 0x22, 0x14, 0x08, 0x14, 0x22, 0x00,
+ 0x0C, 0x10, 0xA0, 0xA0, 0x7C, 0x00,
+ 0x22, 0x32, 0x2A, 0x26, 0x22, 0x22,
+ 0x0C, 0x3F, 0x21, 0x00, 0x00, 0x00,
+ 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x21, 0x3F, 0x0C, 0x00, 0x00, 0x00,
+ 0x02, 0x01, 0x02, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
# else // default font
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x20 32
- 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, // 0x21 33 !
- 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, // 0x22 34 "
- 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, // 0x23 35 #
- 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, // 0x24 36 $
- 0x23, 0x13, 0x08, 0x64, 0x62, 0x00, // 0x25 37 %
- 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, // 0x26 38 &
- 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, // 0x27 39 '
- 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, // 0x28 40 (
- 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, // 0x29 41 )
- 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, // 0x2A 42 *
- 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, // 0x2B 43 +
- 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, // 0x2C 44 ,
- 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, // 0x2D 45 -
- 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, // 0x2E 46 .
- 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, // 0x2F 47 /
- 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, // 0x30 48 0
- 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, // 0x31 49 1
- 0x72, 0x49, 0x49, 0x49, 0x46, 0x00, // 0x32 50 2
- 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, // 0x33 51 3
- 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, // 0x34 52 4
- 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, // 0x35 53 5
- 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, // 0x36 54 6
- 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, // 0x37 55 7
- 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, // 0x38 56 8
- 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, // 0x39 57 9
- 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, // 0x3A 58 :
- 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, // 0x3B 59 ;
- 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, // 0x3C 60 <
- 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, // 0x3D 61 =
- 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, // 0x3E 62 >
- 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, // 0x3F 63 ?
- 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, // 0x40 64 @
- 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, // 0x41 65 A
- 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, // 0x42 66 B
- 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, // 0x43 67 C
- 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, // 0x44 68 D
- 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, // 0x45 69 E
- 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, // 0x46 70 F
- 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, // 0x47 71 G
- 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, // 0x48 72 H
- 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, // 0x49 73 I
- 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, // 0x4A 74 J
- 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, // 0x4B 75 K
- 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, // 0x4C 76 L
- 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, // 0x4D 77 M
- 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, // 0x4E 78 N
- 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, // 0x4F 79 O
- 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, // 0x50 80 P
- 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, // 0x51 81 Q
- 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, // 0x52 82 R
- 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, // 0x53 83 S
- 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, // 0x54 84 T
- 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, // 0x55 85 U
- 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, // 0x56 86 V
- 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, // 0x57 87 W
- 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, // 0x58 88 X
- 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, // 0x59 89 Y
- 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, // 0x5A 90 Z
- 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, // 0x5B 91 [
- 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, // 0x5C 92 \ backslash
- 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, // 0x5D 93 ]
- 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, // 0x5E 94 ^
- 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, // 0x5F 95 _
- 0x00, 0x03, 0x07, 0x08, 0x00, 0x00, // 0x60 96 `
- 0x20, 0x54, 0x54, 0x78, 0x40, 0x00, // 0x61 97 a
- 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, // 0x62 98 b
- 0x38, 0x44, 0x44, 0x44, 0x28, 0x00, // 0x63 99 c
- 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, // 0x64 100 d
- 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, // 0x65 101 e
- 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, // 0x66 102 f
- 0x18, 0x24, 0x24, 0x1C, 0x78, 0x00, // 0x67 103 g
- 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, // 0x68 104 h
- 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, // 0x69 105 i
- 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, // 0x6A 106 j
- 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, // 0x6B 107 k
- 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, // 0x6C 108 l
- 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, // 0x6D 109 m
- 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, // 0x6E 110 n
- 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, // 0x6F 111 o
- 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00, // 0x70 112 p
- 0x18, 0x24, 0x24, 0x18, 0x7C, 0x00, // 0x71 113 q
- 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, // 0x72 114 r
- 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, // 0x73 115 s
- 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, // 0x74 116 t
- 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, // 0x75 117 u
- 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, // 0x76 118 v
- 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, // 0x77 119 w
- 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, // 0x78 120 x
- 0x4C, 0x90, 0x10, 0x90, 0x7C, 0x00, // 0x79 121 y
- 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, // 0x7A 122 z
- 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, // 0x7B 123 {
- 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, // 0x7C 124 |
- 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, // 0x7D 125 }
- 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, // 0x7E 126 ~
- 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, // 0x7F 127
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
+ 0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
+ 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
+ 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
+ 0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
+ 0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
+ 0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
+ 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
+ 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
+ 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
+ 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
+ 0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
+ 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
+ 0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
+ 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
+ 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
+ 0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
+ 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
+ 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
+ 0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
+ 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
+ 0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
+ 0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
+ 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
+ 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
+ 0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
+ 0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
+ 0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
+ 0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
+ 0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
+ 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
+ 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
+ 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
+ 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
+ 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
+ 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
+ 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
+ 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
+ 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
+ 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
+ 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
+ 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
+ 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
+ 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
+ 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
+ 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
+ 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
+ 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
+ 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
+ 0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
+ 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
+ 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
+ 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
+ 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
+ 0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
+ 0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
+ 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
+ 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
+ 0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
+ 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
+ 0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
+ 0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
+ 0x20, 0x54, 0x54, 0x78, 0x40, 0x00,
+ 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,
+ 0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
+ 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,
+ 0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
+ 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
+ 0x18, 0x24, 0x24, 0x1C, 0x78, 0x00,
+ 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,
+ 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,
+ 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
+ 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,
+ 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,
+ 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,
+ 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,
+ 0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
+ 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00,
+ 0x18, 0x24, 0x24, 0x18, 0x7C, 0x00,
+ 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,
+ 0x48, 0x54, 0x54, 0x54, 0x24, 0x00,
+ 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,
+ 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,
+ 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
+ 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
+ 0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
+ 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00,
+ 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
+ 0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
+ 0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
+ 0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
+ 0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
+ 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
# endif
+// top Logo section
# if defined(OLED_LOGO_GMK_BAD)
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x80
- 0x80, 0xC0, 0xE0, 0xF0, 0xF0, 0x70, // 0x81
- 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0, // 0x82
- 0xE0, 0xE0, 0x80, 0x00, 0x00, 0x00, // 0x83
- 0x00, 0x00, 0x00, 0x80, 0xF0, 0xF8, // 0x84
- 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, // 0x85
- 0x80, 0xE0, 0xF8, 0xF8, 0xF8, 0xF8, // 0x86
- 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x87
- 0x80, 0xF8, 0xF8, 0xF8, 0x38, 0x00, // 0x88
- 0x80, 0xE0, 0xF0, 0xF8, 0x78, 0x38, // 0x89
- 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, // 0x8A
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x8B
- 0x80, 0xF8, 0xF8, 0xF8, 0x38, 0x38, // 0x8C
- 0x38, 0xF8, 0xF0, 0xF0, 0xE0, 0x00, // 0x8D
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x8E
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x8F
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x90
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x91
- 0x00, 0x00, 0x00, 0x80, 0xFC, 0xFC, // 0x92
- 0xFC, 0x1C, 0x00, 0x00, 0x00, 0x00, // 0x93
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x94
- 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC, // 0x95
- 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00, // 0x96
- 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, // 0x97
- 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, // 0x98
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x99
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x9A
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x9B
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x9C
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x9D
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x9E
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x9F
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, // 0xA0
- 0xFF, 0xFF, 0xFF, 0xC1, 0x80, 0x00, // 0xA1
- 0x00, 0x38, 0x38, 0xB8, 0xB8, 0xF9, // 0xA2
- 0xF9, 0xF8, 0x38, 0x00, 0x00, 0x00, // 0xA3
- 0x00, 0xC0, 0xF8, 0xFF, 0xFF, 0x1F, // 0xA4
- 0x01, 0x3F, 0xFF, 0xFF, 0xF0, 0xFE, // 0xA5
- 0x7F, 0x0F, 0x03, 0xFF, 0xFF, 0xFF, // 0xA6
- 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80, // 0xA7
- 0xFF, 0xFF, 0xFF, 0x3F, 0x1E, 0x7F, // 0xA8
- 0xFF, 0xFF, 0xF3, 0xC1, 0x80, 0x00, // 0xA9
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xAA
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, // 0xAB
- 0xFF, 0xFF, 0xFF, 0x3F, 0x1C, 0x1C, // 0xAC
- 0x9C, 0xFF, 0xFF, 0xF3, 0xE1, 0x00, // 0xAD
- 0x00, 0x00, 0x00, 0xF0, 0xFC, 0xFE, // 0xAE
- 0xFF, 0x0F, 0x07, 0x07, 0x8E, 0xFF, // 0xAF
- 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, // 0xB0
- 0x00, 0xF0, 0xFC, 0xFE, 0xFF, 0x8F, // 0xB1
- 0x07, 0x07, 0x8E, 0xFF, 0xFF, 0xFF, // 0xB2
- 0x3F, 0x00, 0x00, 0x00, 0x00, 0x80, // 0xB3
- 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, // 0xB4
- 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, // 0xB5
- 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, // 0xB6
- 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, // 0xB7
- 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, // 0xB8
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xB9
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xBA
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xBB
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xBC
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xBD
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xBE
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xBF
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xC0
- 0x00, 0x01, 0x03, 0x03, 0x03, 0x07, // 0xC1
- 0x07, 0x07, 0x07, 0x03, 0x03, 0x03, // 0xC2
- 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xC3
- 0x06, 0x07, 0x07, 0x07, 0x01, 0x00, // 0xC4
- 0x00, 0x00, 0x07, 0x07, 0x07, 0x01, // 0xC5
- 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, // 0xC6
- 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, // 0xC7
- 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, // 0xC8
- 0x00, 0x03, 0x07, 0x07, 0x07, 0x06, // 0xC9
- 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xCA
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, // 0xCB
- 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, // 0xCC
- 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, // 0xCD
- 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, // 0xCE
- 0x07, 0x07, 0x07, 0x03, 0x07, 0x07, // 0xCF
- 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, // 0xD0
- 0x00, 0x00, 0x03, 0x07, 0x07, 0x07, // 0xD1
- 0x07, 0x03, 0x07, 0x07, 0x07, 0x07, // 0xD2
- 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, // 0xD3
- 0x07, 0x07, 0x01, 0x00, 0x00, 0x00, // 0xD4
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD5
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD6
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD7
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD8
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD9
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDA
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDB
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDC
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDD
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDE
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDF
- 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F,
- 0x00, 0x14, 0x08, 0x14, 0x00, 0x00,
- 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F,
- 0x00, 0x22, 0x1C, 0x41, 0x3E, 0x00,
- 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C,
- 0x06, 0x0C, 0x18, 0x30, 0x00, 0x00,
- 0x00, 0x00, 0x06, 0x06, 0x06, 0x0C,
- 0x18, 0x30, 0x66, 0x66, 0x66, 0x00,
- 0x00, 0x00, 0x00, 0x08, 0x0C, 0x7E,
- 0x7F, 0x7E, 0x0C, 0x08, 0x00, 0x00,
- 0x00, 0x00, 0x77, 0x77, 0x77, 0x00,
- 0x77, 0x77, 0x77, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xE7, 0xA5, 0xFF, 0x24,
- 0x24, 0xFF, 0xA5, 0xE7, 0x00, 0x00,
- 0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1,
- 0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x02, 0x38, 0xFC, 0xED,
- 0xFC, 0x38, 0x02, 0x10, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x3E, 0x4A, 0x4F,
- 0x4A, 0x3E, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x40, 0x60, 0x6A, 0x64,
- 0x6A, 0x60, 0x40, 0x00, 0x00, 0x00,
- 0x00, 0x04, 0x42, 0x69, 0x65, 0x65,
- 0x65, 0x69, 0x42, 0x04, 0x00, 0x00,
- 0x00, 0x00, 0x1C, 0x14, 0x1C, 0x08,
- 0x18, 0x08, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x70, 0xC8, 0xEE, 0xF9, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0xC0, 0xE0, 0xF0, 0xF0, 0x70,
+ 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0,
+ 0xE0, 0xE0, 0x80, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0xF0, 0xF8,
+ 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00,
+ 0x80, 0xE0, 0xF8, 0xF8, 0xF8, 0xF8,
+ 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0xF8, 0xF8, 0xF8, 0x38, 0x00,
+ 0x80, 0xE0, 0xF0, 0xF8, 0x78, 0x38,
+ 0x08, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0xF8, 0xF8, 0xF8, 0x38, 0x38,
+ 0x38, 0xF8, 0xF0, 0xF0, 0xE0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0xFC, 0xFC,
+ 0xFC, 0x1C, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
# elif defined(OLED_LOGO_HUE_MANITEE)
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x80
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0,
0x90, 0x70, 0xE8, 0xA8, 0xE4, 0xC4,
0xC4, 0xA0, 0xE4, 0xB0, 0xDC, 0xE4,
@@ -675,120 +962,13 @@ static const unsigned char font[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, // 0x90
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC,
- 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00,
- 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E,
- 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, // 0xA0
- 0xFC, 0xF6, 0xF7, 0xEF, 0xFF, 0x87,
- 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F,
- 0x1F, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF,
- 0xFF, 0x07, 0x1F, 0x1F, 0x19, 0x15,
- 0xF7, 0x16, 0x1A, 0x1B, 0x16, 0x07,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x0C, 0x0C, 0x33, 0x33,
- 0x33, 0x33, 0x33, 0x33, 0xC0, 0xC0,
- 0x00, 0x00, 0x03, 0x03, 0xFF, 0xFF,
- 0x03, 0x03, 0x00, 0x00, 0xC0, 0xC0,
- 0x00, 0x00, 0x00, 0xFC, 0xFC, 0x03,
- 0x03, 0x03, 0x03, 0x03, 0x03, 0xFC,
- 0xFC, 0x00, 0x00, 0x00, 0xFC, 0xFC,
- 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
- 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00,
- 0xFF, 0xFF, 0x30, 0x30, 0xCC, 0xCC, // 0xB0
- 0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F,
- 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00,
- 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F,
- 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // 0xC0
- 0x03, 0x07, 0x07, 0x07, 0x07, 0x01,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x03, 0x07, 0x07,
- 0x03, 0x00, 0x00, 0x02, 0x04, 0x00,
- 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x03, 0x03, 0x03, 0x03,
- 0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
- 0x03, 0x03, 0x03, 0x03, 0x03, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, // 0xD0
- 0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDF
- 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F,
- 0x00, 0x14, 0x08, 0x14, 0x00, 0x00,
- 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F,
- 0x00, 0x22, 0x1C, 0x41, 0x3E, 0x00,
- 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C,
- 0x06, 0x0C, 0x18, 0x30, 0x00, 0x00,
- 0x00, 0x00, 0x06, 0x06, 0x06, 0x0C,
- 0x18, 0x30, 0x66, 0x66, 0x66, 0x00,
- 0x00, 0x00, 0x00, 0x08, 0x0C, 0x7E,
- 0x7F, 0x7E, 0x0C, 0x08, 0x00, 0x00,
- 0x00, 0x00, 0x77, 0x77, 0x77, 0x00,
- 0x77, 0x77, 0x77, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xE7, 0xA5, 0xFF, 0x24,
- 0x24, 0xFF, 0xA5, 0xE7, 0x00, 0x00,
- 0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1,
- 0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x02, 0x38, 0xFC, 0xED,
- 0xFC, 0x38, 0x02, 0x10, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x3E, 0x4A, 0x4F,
- 0x4A, 0x3E, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x40, 0x60, 0x6A, 0x64,
- 0x6A, 0x60, 0x40, 0x00, 0x00, 0x00,
- 0x00, 0x04, 0x42, 0x69, 0x65, 0x65,
- 0x65, 0x69, 0x42, 0x04, 0x00, 0x00,
- 0x00, 0x00, 0x1C, 0x14, 0x1C, 0x08,
- 0x18, 0x08, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x70, 0xC8, 0xEE, 0xF9, 0x70,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
# elif defined(OLED_LOGO_CORNE)
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x80
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0,
0xF0, 0xF8, 0xF8, 0x18, 0x00, 0xC0,
@@ -804,11 +984,80 @@ static const unsigned char font[] PROGMEM = {
0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00,
0x00, 0xE0, 0xE0, 0xC0, 0xC0, 0xE0,
0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80,
- 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, // 0x90
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0,
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+# elif defined(OLED_LOGO_LOOSE)
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8,
+ 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0x00,
+ 0xFC, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
+ 0x02, 0xF9, 0x01, 0x01, 0x05, 0x09,
+ 0x11, 0x22, 0x06, 0xFE, 0xFE, 0xFE,
+ 0xFE, 0xFE, 0xFE, 0xFE, 0x46, 0x46,
+ 0x44, 0x44, 0x45, 0x44, 0x29, 0x28,
+ 0x2A, 0x28, 0x11, 0x13, 0x05, 0x07,
+ 0x05, 0x07, 0x05, 0x07, 0x05, 0x07,
+ 0xE5, 0xE7, 0xE5, 0x07, 0x05, 0x07,
+ 0x05, 0x07, 0x05, 0x07, 0x05, 0x07,
+ 0x85, 0xC7, 0xE5, 0xE7, 0xE5, 0xE7,
+ 0xE5, 0xE7, 0xE5, 0xC7, 0x85, 0x07,
+ 0x85, 0xC7, 0xE5, 0xE7, 0xE5, 0xE7,
+ 0xE5, 0xE7, 0xE5, 0xC7, 0x85, 0x07,
+ 0x85, 0xC7, 0xE5, 0xE7, 0xE5, 0xE7,
+ 0xE5, 0xE7, 0xE5, 0xE7, 0xE5, 0x07,
+ 0xE5, 0xE7, 0xE5, 0xE7, 0xE5, 0xE7,
+ 0xE5, 0xE7, 0xE5, 0xE7, 0xE5, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+# elif defined(OLED_LOGO_SKEEB)
+ 0xC0, 0x20, 0x10, 0x08, 0x04, 0x02,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x03, 0x07, 0x0F, 0x1F,
+ 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x01,
+ 0xFF, 0xFF, 0x01, 0x01, 0xFF, 0xFF,
+ 0x01, 0x01, 0xFF, 0xFF, 0x19, 0x19,
+ 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
+ 0x01, 0x01, 0xFF, 0xFF, 0x81, 0x81,
+ 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
+ 0x19, 0x19, 0xFF, 0xFF, 0xF9, 0xF9,
+ 0xF9, 0xF9, 0x01, 0x01, 0xF9, 0xF9,
+ 0xF9, 0xF9, 0xFF, 0xFF, 0x99, 0x99,
+ 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
+ 0xF9, 0xF9, 0xFF, 0xFF, 0x19, 0x19,
+ 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
+ 0x67, 0x67, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F,
+ 0x1F, 0x0F, 0x07, 0x03, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x02, 0x04, 0x08, 0x10, 0x20, 0xC0,
+# else
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x40, 0x40, 0x40, 0xF0, 0xF8, 0xF8,
+ 0xFF, 0x38, 0xFF, 0xF8, 0xF8, 0x3F,
+ 0xF8, 0xF8, 0xFF, 0x38, 0xFF, 0xF8,
+ 0xF8, 0xF0, 0x40, 0x40, 0x40, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00,
+ 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00,
+ 0x80, 0xC0, 0xC0, 0x00, 0xC0, 0xC0,
+ 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0,
+ 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0xC0,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+#endif
+
+// First icon section
0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC,
0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00,
0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E,
@@ -817,10 +1066,57 @@ static const unsigned char font[] PROGMEM = {
0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00,
0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE,
0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00,
+ 0x3E, 0x4A, 0x4F, 0x4A, 0x3E, 0x00,
+ 0x18, 0x3C, 0x7C, 0x3A, 0x7D, 0x24,
+ 0x14, 0x36, 0x00, 0x36, 0x77, 0x77,
+
+// middle logo section
+# if defined(OLED_LOGO_GMK_BAD)
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C,
+ 0xFF, 0xFF, 0xFF, 0xC1, 0x80, 0x00,
+ 0x00, 0x38, 0x38, 0xB8, 0xB8, 0xF9,
+ 0xF9, 0xF8, 0x38, 0x00, 0x00, 0x00,
+ 0x00, 0xC0, 0xF8, 0xFF, 0xFF, 0x1F,
+ 0x01, 0x3F, 0xFF, 0xFF, 0xF0, 0xFE,
+ 0x7F, 0x0F, 0x03, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0xFF, 0xFF, 0xFF, 0x3F, 0x1E, 0x7F,
+ 0xFF, 0xFF, 0xF3, 0xC1, 0x80, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0xFF, 0xFF, 0xFF, 0x3F, 0x1C, 0x1C,
+ 0x9C, 0xFF, 0xFF, 0xF3, 0xE1, 0x00,
+ 0x00, 0x00, 0x00, 0xF0, 0xFC, 0xFE,
+ 0xFF, 0x0F, 0x07, 0x07, 0x8E, 0xFF,
+ 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00,
+ 0x00, 0xF0, 0xFC, 0xFE, 0xFF, 0x8F,
+ 0x07, 0x07, 0x8E, 0xFF, 0xFF, 0xFF,
+ 0x3F, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00,
+# elif defined(OLED_LOGO_HUE_MANITEE)
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0,
+ 0xFC, 0xF6, 0xF7, 0xEF, 0xFF, 0x87,
+ 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F,
+ 0x1F, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x07, 0x1F, 0x1F, 0x19, 0x15,
+ 0xF7, 0x16, 0x1A, 0x1B, 0x16, 0x07,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x0C, 0x0C, 0x33, 0x33,
+ 0x33, 0x33, 0x33, 0x33, 0xC0, 0xC0,
+ 0x00, 0x00, 0x03, 0x03, 0xFF, 0xFF,
+ 0x03, 0x03, 0x00, 0x00, 0xC0, 0xC0,
+ 0x00, 0x00, 0x00, 0xFC, 0xFC, 0x03,
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0xFC,
+ 0xFC, 0x00, 0x00, 0x00, 0xFC, 0xFC,
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0x30, 0x30, 0xCC, 0xCC,
+ 0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+# elif defined(OLED_LOGO_CORNE)
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xA0
0x00, 0x00, 0x00, 0xF8, 0xFC, 0xFE,
0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF,
@@ -836,250 +1132,57 @@ static const unsigned char font[] PROGMEM = {
0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xFF, 0xFF, 0xFF, 0x01, 0x00,
0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF,
- 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, // 0xB0
+ 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
0x9D, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C,
0x1C, 0x9D, 0xDF, 0xDF, 0xDF, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F,
- 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00,
- 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F,
- 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00,
- 0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20,
- 0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00,
- 0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F,
- 0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xC0
- 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1F,
- 0x3F, 0x3F, 0x3F, 0x3F, 0x1F, 0x1F,
- 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x3F,
- 0x3F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F,
- 0x7F, 0x7C, 0x78, 0x78, 0x38, 0x1C,
- 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x01, 0x03, 0x07, 0x07,
- 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
- 0x03, 0x01, 0x00, 0x00, 0x00, 0x00,
- 0x01, 0x03, 0x07, 0x07, 0x07, 0x07,
- 0x07, 0x07, 0x07, 0x07, 0x03, 0x01,
- 0x00, 0x00, 0x00, 0x07, 0x07, 0x07,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x07, 0x07, 0x07, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x07, 0x07,
- 0x07, 0x00, 0x00, 0x00, 0x01, 0x03, // 0xD0
- 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
- 0x07, 0x07, 0x03, 0x01, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+# elif defined(OLED_LOGO_LOOSE)
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDF
- 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F,
- 0x00, 0x14, 0x08, 0x14, 0x00, 0x00,
- 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F,
- 0x00, 0x22, 0x1C, 0x41, 0x3E, 0x00,
- 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C,
- 0x06, 0x0C, 0x18, 0x30, 0x00, 0x00,
- 0x00, 0x00, 0x06, 0x06, 0x06, 0x0C,
- 0x18, 0x30, 0x66, 0x66, 0x66, 0x00,
- 0x00, 0x00, 0x00, 0x08, 0x0C, 0x7E,
- 0x7F, 0x7E, 0x0C, 0x08, 0x00, 0x00,
- 0x00, 0x00, 0x77, 0x77, 0x77, 0x00,
- 0x77, 0x77, 0x77, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xE7, 0xA5, 0xFF, 0x24,
- 0x24, 0xFF, 0xA5, 0xE7, 0x00, 0x00,
- 0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1,
- 0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x02, 0x38, 0xFC, 0xED,
- 0xFC, 0x38, 0x02, 0x10, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x3E, 0x4A, 0x4F,
- 0x4A, 0x3E, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x40, 0x60, 0x6A, 0x64,
- 0x6A, 0x60, 0x40, 0x00, 0x00, 0x00,
- 0x00, 0x04, 0x42, 0x69, 0x65, 0x65,
- 0x65, 0x69, 0x42, 0x04, 0x00, 0x00,
- 0x00, 0x00, 0x1C, 0x14, 0x1C, 0x08,
- 0x18, 0x08, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x70, 0xC8, 0xEE, 0xF9, 0x70,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-# elif defined(OLED_LOGO_GOTHAM) // see /keyboards/crkbd/keymaps/gotham/oled.c
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x80
- 0x00, 0x00, 0xC0, 0x60, 0x30, 0x18,
- 0xF8, 0x18, 0x00, 0xC0, 0x70, 0x1C,
- 0x06, 0x03, 0x01, 0x01, 0x01, 0x01,
- 0x01, 0xC3, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x08, 0x08, 0x08, 0x00,
- 0x00, 0x08, 0x08, 0x08, 0x00, 0x1C,
- 0x22, 0x41, 0x41, 0x41, 0x22, 0x1C,
- 0x00, 0x08, 0x08, 0x08, 0x00, 0x00,
- 0x08, 0x08, 0x08, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x20, 0x20, 0xF8,
- 0x0C, 0x04, 0xE7, 0xE4, 0xE4, 0x07,
- 0x04, 0xE4, 0xE7, 0xE4, 0x04, 0x07,
- 0xE4, 0xE4, 0xE7, 0x04, 0x0C, 0xF8,
- 0x20, 0x20, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F,
- 0x00, 0x14, 0x08, 0x14, 0x00, 0x00, // 0x90
- 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F,
- 0x00, 0x22, 0x1C, 0x41, 0x3E, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
- 0x18, 0x0C, 0x06, 0x0C, 0x18, 0x30,
- 0x77, 0x77, 0x77, 0x00, 0x77, 0x77,
- 0x77, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x3E, 0x4A, 0x4F,
- 0x4A, 0x3E, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
- 0x00, 0x00, 0x08, 0x00, 0x00, 0x60,
- 0x70, 0x3E, 0x1F, 0x19, 0x18, 0x0C,
- 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
- 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xF8, 0x0C, 0x06, 0x07, 0xFC, // 0xA0
- 0x00, 0xFF, 0x01, 0x00, 0x00, 0x00,
- 0xFF, 0x80, 0xFF, 0x01, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0xF0, 0x1C,
- 0x07, 0x01, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x1C, 0x22, 0x41, 0x00,
- 0x00, 0x1C, 0x22, 0x00, 0x00, 0x1C,
- 0x3E, 0x7F, 0x63, 0x41, 0x22, 0x1C,
- 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
- 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x49, 0x49, 0xFF,
- 0x00, 0x00, 0x0F, 0x1F, 0x3F, 0x38,
- 0x30, 0xFF, 0xFF, 0xFF, 0x30, 0x38,
- 0x3F, 0x1F, 0x0F, 0x00, 0x00, 0xFF,
- 0x49, 0x49, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x40, 0x60, 0x6A, 0x64,
- 0x6A, 0x60, 0x40, 0x00, 0x00, 0x00, // 0xB0
- 0x00, 0x04, 0x42, 0x69, 0x65, 0x65,
- 0x65, 0x69, 0x42, 0x04, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x06, 0x06, 0x06,
- 0x0C, 0x18, 0x30, 0x66, 0x66, 0x66,
- 0x00, 0x00, 0xFC, 0x24, 0x24, 0xFC,
- 0x24, 0x24, 0xFC, 0x24, 0x24, 0xFC,
- 0x24, 0x24, 0xFC, 0x24, 0x24, 0xFC,
- 0x24, 0x24, 0xFC, 0x24, 0x24, 0xFC,
- 0x24, 0x24, 0xFC, 0x00, 0x00, 0x00,
- 0xF0, 0x90, 0x90, 0xF0, 0x90, 0x90,
- 0xF0, 0x98, 0x9C, 0xF2, 0x22, 0x21,
- 0xE1, 0x01, 0x01, 0x01, 0xF1, 0x91,
- 0x91, 0xFA, 0x4C, 0x4C, 0xF8, 0x48,
- 0x48, 0xF8, 0x48, 0x48, 0xF8, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x03, 0x0E, 0x18, 0x30, 0x21, // 0xC0
- 0x21, 0x31, 0x18, 0x10, 0x30, 0x20,
- 0x60, 0x41, 0x60, 0x20, 0x30, 0x18,
- 0x30, 0x60, 0x40, 0x40, 0x47, 0x4C,
- 0x48, 0x68, 0x38, 0x1C, 0x0F, 0x00,
- 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
- 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C,
- 0x22, 0x41, 0x63, 0x7F, 0x3E, 0x1C,
- 0x00, 0x00, 0x22, 0x1C, 0x00, 0x00,
- 0x41, 0x22, 0x1C, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x02, 0x02, 0x0F,
- 0x18, 0x10, 0x70, 0x10, 0x10, 0x70,
- 0x10, 0x13, 0x73, 0x13, 0x10, 0x70,
- 0x10, 0x10, 0x70, 0x10, 0x18, 0x0F,
- 0x02, 0x02, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1,
- 0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00, // 0xD0
- 0x00, 0x10, 0x02, 0x38, 0xFC, 0xED,
- 0xFC, 0x38, 0x02, 0x10, 0x00, 0x00,
- 0x08, 0x0C, 0x7E, 0x7F, 0x7E, 0x0C,
- 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x0F, 0x09, 0x09, 0x09,
- 0x0F, 0x09, 0x09, 0x0F, 0x09, 0x09,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xE3, 0xC1, 0xC1, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0xFF, 0x00, 0x00, 0x80, 0x00,
+ 0x1C, 0x3E, 0x7F, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x22, 0x22,
+ 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
+ 0x22, 0x22, 0x22, 0x14, 0x14, 0x14,
+ 0x14, 0x14, 0x08, 0x08, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0x80, 0x80, 0x80,
+ 0x80, 0x80, 0x80, 0x80, 0x80, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0xBE,
+ 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x81, 0xBD,
+ 0x81, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
+ 0x8F, 0x9F, 0x9C, 0x9C, 0x9C, 0x9C,
+ 0x9C, 0x9C, 0x9C, 0xFC, 0xF8, 0x00,
+ 0xFF, 0xFF, 0xFF, 0x9C, 0x9C, 0x9C,
+ 0x9C, 0x9C, 0x9C, 0x80, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+# elif defined(OLED_LOGO_SKEEB)
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x03, 0x07,
+ 0x0F, 0x0F, 0x0F, 0x0F, 0x08, 0x08,
+ 0x0F, 0x0F, 0x0E, 0x0E, 0x0F, 0x0F,
+ 0x08, 0x08, 0x0F, 0x0F, 0x08, 0x08,
+ 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
+ 0x08, 0x08, 0x0F, 0x0F, 0x09, 0x09,
+ 0x09, 0x09, 0xF9, 0xF9, 0x09, 0x09,
+ 0x08, 0x08, 0x0F, 0x0F, 0x0F, 0x0F,
+ 0x0F, 0x0F, 0x08, 0x08, 0x0F, 0x0F,
+ 0x0F, 0x0F, 0x0F, 0x0F, 0x09, 0x09,
0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
- 0x09, 0x0F, 0x09, 0x09, 0x0F, 0x09,
- 0x09, 0x09, 0x0F, 0x00, 0x00, 0x00,
- 0x07, 0x04, 0x04, 0x07, 0x04, 0x04,
- 0x07, 0x04, 0x04, 0x0F, 0x09, 0x09,
- 0x0F, 0x00, 0x00, 0x00, 0x07, 0x04,
- 0x04, 0x07, 0x02, 0x02, 0x03, 0x02,
- 0x02, 0x03, 0x02, 0x02, 0x03, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDF
- 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F,
- 0x00, 0x14, 0x08, 0x14, 0x00, 0x00,
- 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F,
- 0x00, 0x22, 0x1C, 0x41, 0x3E, 0x00,
- 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C,
- 0x06, 0x0C, 0x18, 0x30, 0x00, 0x00,
- 0x00, 0x00, 0x06, 0x06, 0x06, 0x0C,
- 0x18, 0x30, 0x66, 0x66, 0x66, 0x00,
- 0x00, 0x00, 0x00, 0x08, 0x0C, 0x7E,
- 0x7F, 0x7E, 0x0C, 0x08, 0x00, 0x00,
- 0x00, 0x00, 0x77, 0x77, 0x77, 0x00,
- 0x77, 0x77, 0x77, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xE7, 0xA5, 0xFF, 0x24,
- 0x24, 0xFF, 0xA5, 0xE7, 0x00, 0x00,
- 0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1,
- 0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00,
- 0x00, 0x10, 0x02, 0x38, 0xFC, 0xED,
- 0xFC, 0x38, 0x02, 0x10, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x3E, 0x4A, 0x4F,
- 0x4A, 0x3E, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x40, 0x60, 0x6A, 0x64,
- 0x6A, 0x60, 0x40, 0x00, 0x00, 0x00,
- 0x00, 0x04, 0x42, 0x69, 0x65, 0x65,
- 0x65, 0x69, 0x42, 0x04, 0x00, 0x00,
- 0x00, 0x00, 0x1C, 0x14, 0x1C, 0x08,
- 0x18, 0x08, 0x18, 0x00, 0x00, 0x00,
- 0x00, 0x70, 0xC8, 0xEE, 0xF9, 0x70,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x09, 0x09, 0x0F, 0x0F, 0x08, 0x08,
+ 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
+ 0x08, 0x08, 0x0F, 0x0F, 0x0F, 0x0F,
+ 0x07, 0x03, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
# else
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x80
- 0x40, 0x40, 0x40, 0xF0, 0xF8, 0xF8,
- 0xFF, 0x38, 0xFF, 0xF8, 0xF8, 0x3F,
- 0xF8, 0xF8, 0xFF, 0x38, 0xFF, 0xF8,
- 0xF8, 0xF0, 0x40, 0x40, 0x40, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
- 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00,
- 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00,
- 0x80, 0xC0, 0xC0, 0x00, 0xC0, 0xC0,
- 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0,
- 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0xC0,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x90
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC,
- 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00,
- 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E,
- 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00,
- 0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B,
- 0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00,
- 0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE,
- 0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xA0
0x49, 0x49, 0x49, 0xFF, 0xFF, 0xFF,
0xFF, 0xE0, 0xDF, 0xBF, 0xBF, 0x00,
0xBF, 0xBF, 0xDF, 0xE0, 0xFF, 0xFF,
@@ -1095,11 +1198,14 @@ static const unsigned char font[] PROGMEM = {
0x7F, 0x7E, 0x03, 0x03, 0x7E, 0x7E,
0x03, 0x03, 0x7F, 0x7E, 0x00, 0x0F,
0x3E, 0x70, 0x3C, 0x06, 0x3C, 0x70,
- 0x3E, 0x0F, 0x00, 0x32, 0x7B, 0x49, // 0xB0
+ 0x3E, 0x0F, 0x00, 0x32, 0x7B, 0x49,
0x49, 0x3F, 0x7E, 0x00, 0x7F, 0x7E,
0x03, 0x03, 0x00, 0x1E, 0x3F, 0x69,
0x69, 0x6F, 0x26, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+# endif
+
+// second icon section
0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F,
0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00,
0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F,
@@ -1108,26 +1214,113 @@ static const unsigned char font[] PROGMEM = {
0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00,
0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F,
0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00,
+ 0x00, 0x44, 0x28, 0xFF, 0x5A, 0x24,
+ 0xF0, 0xFE, 0xF1, 0x91, 0xF6, 0xF0,
+ 0xF0, 0xFC, 0xF2, 0x92, 0xFC, 0xF0,
+
+// bottom logo section
+# if defined(OLED_LOGO_GMK_BAD)
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x03, 0x03, 0x03, 0x07,
+ 0x07, 0x07, 0x07, 0x03, 0x03, 0x03,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x06, 0x07, 0x07, 0x07, 0x01, 0x00,
+ 0x00, 0x00, 0x07, 0x07, 0x07, 0x01,
+ 0x00, 0x00, 0x00, 0x07, 0x07, 0x07,
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0x07,
+ 0x07, 0x07, 0x07, 0x00, 0x00, 0x00,
+ 0x00, 0x03, 0x07, 0x07, 0x07, 0x06,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
+ 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
+ 0x07, 0x07, 0x03, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x03, 0x07,
+ 0x07, 0x07, 0x07, 0x03, 0x07, 0x07,
+ 0x07, 0x07, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x03, 0x07, 0x07, 0x07,
+ 0x07, 0x03, 0x07, 0x07, 0x07, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x07,
+ 0x07, 0x07, 0x01, 0x00, 0x00, 0x00,
+# elif defined(OLED_LOGO_HUE_MANITEE)
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x03, 0x07, 0x07, 0x07, 0x07, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x03, 0x07, 0x07,
+ 0x03, 0x00, 0x00, 0x02, 0x04, 0x00,
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xC0
- 0x01, 0x01, 0x01, 0x07, 0x0F, 0x0F,
- 0x7F, 0x0F, 0x7F, 0x0F, 0x0F, 0x7E,
- 0x0F, 0x0F, 0x7F, 0x0F, 0x7F, 0x0F,
- 0x0F, 0x07, 0x01, 0x01, 0x01, 0x00,
+ 0x00, 0x00, 0x03, 0x03, 0x03, 0x03,
+ 0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x01, 0x01, 0x00,
+ 0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+# elif defined(OLED_LOGO_CORNE)
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1F,
+ 0x3F, 0x3F, 0x3F, 0x3F, 0x1F, 0x1F,
+ 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x3F,
+ 0x3F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F,
+ 0x7F, 0x7C, 0x78, 0x78, 0x38, 0x1C,
+ 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x03, 0x07, 0x07,
+ 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
+ 0x03, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x03, 0x07, 0x07, 0x07, 0x07,
+ 0x07, 0x07, 0x07, 0x07, 0x03, 0x01,
+ 0x00, 0x00, 0x00, 0x07, 0x07, 0x07,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x07, 0x07, 0x07, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x07, 0x07,
+ 0x07, 0x00, 0x00, 0x00, 0x01, 0x03,
+ 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
+ 0x07, 0x07, 0x03, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+# elif defined(OLED_LOGO_LOOSE)
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F,
+ 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00,
+ 0x1F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
+ 0x20, 0x47, 0x48, 0x50, 0x40, 0x41,
+ 0x42, 0x24, 0x30, 0x3F, 0x3F, 0x3F,
+ 0x3F, 0x3F, 0x3F, 0x3F, 0x31, 0x31,
+ 0x11, 0x51, 0x11, 0x11, 0x4A, 0x0A,
+ 0x2A, 0x0A, 0x44, 0x64, 0x50, 0x70,
+ 0x50, 0x70, 0x50, 0x70, 0x50, 0x70,
+ 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+ 0x53, 0x73, 0x53, 0x73, 0x53, 0x70,
+ 0x50, 0x71, 0x53, 0x73, 0x53, 0x73,
+ 0x53, 0x73, 0x53, 0x71, 0x50, 0x70,
+ 0x50, 0x71, 0x53, 0x73, 0x53, 0x73,
+ 0x53, 0x73, 0x53, 0x71, 0x50, 0x70,
+ 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+ 0x53, 0x73, 0x53, 0x73, 0x51, 0x70,
+ 0x53, 0x73, 0x53, 0x73, 0x53, 0x73,
+ 0x53, 0x73, 0x53, 0x73, 0x53, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD0
+# elif defined(OLED_LOGO_SKEEB)
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0x08, 0x08, 0x08, 0x08, 0x08,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0xFF,
+ 0x08, 0x08, 0x0F, 0x0F, 0x08, 0x08,
+ 0x03, 0x04, 0x08, 0x10, 0x20, 0x40,
+ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
+ 0x40, 0x20, 0x10, 0x08, 0x04, 0x03,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
+ 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xF8,
+ 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8,
+ 0xF8, 0xF8, 0xF0, 0xE0, 0xC0, 0x80,
+ 0x01, 0x02, 0xFC, 0xF8, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -1135,6 +1328,16 @@ static const unsigned char font[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
+#else
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x07, 0x0F, 0x0F,
+ 0x7F, 0x0F, 0x7F, 0x0F, 0x0F, 0x7E,
+ 0x0F, 0x0F, 0x7F, 0x0F, 0x7F, 0x0F,
+ 0x0F, 0x07, 0x01, 0x01, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -1142,7 +1345,28 @@ static const unsigned char font[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDF
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+#endif
+
+// third icon section
+ 0x1F, 0x05, 0x00, 0x02, 0x1F, 0x00,
+ 0x1F, 0x05, 0x00, 0x1D, 0x17, 0x00,
+ 0x1F, 0x05, 0x00, 0x15, 0x1F, 0x00,
+ 0x1F, 0x05, 0x00, 0x07, 0x1C, 0x00,
+ 0x1F, 0x05, 0x00, 0x17, 0x1D, 0x00,
+ 0x1F, 0x05, 0x00, 0x1F, 0x1D, 0x00,
+ 0x1F, 0x05, 0x00, 0x01, 0x1F, 0x00,
+ 0x1F, 0x05, 0x00, 0x1F, 0x1F, 0x00,
+ 0x1F, 0x05, 0x00, 0x07, 0x1F, 0x00,
+ 0x1F, 0x05, 0x00, 0x70, 0x77, 0x00,
+ 0x1F, 0x05, 0x00, 0x00, 0x77, 0x00,
+
+// fourth icon section
0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F,
0x00, 0x14, 0x08, 0x14, 0x00, 0x00,
0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F,
@@ -1170,13 +1394,11 @@ static const unsigned char font[] PROGMEM = {
0x00, 0x00, 0x1C, 0x14, 0x1C, 0x08,
0x18, 0x08, 0x18, 0x00, 0x00, 0x00,
0x00, 0x70, 0xC8, 0xEE, 0xF9, 0x70,
+ 0x1F, 0x05, 0x00, 0x10, 0x77, 0x40,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
-# endif
};
// clang-format on
#endif
diff --git a/users/drashna/oled_stuff.c b/users/drashna/oled_stuff.c
index 7811cabc60d6..4b549195076d 100644
--- a/users/drashna/oled_stuff.c
+++ b/users/drashna/oled_stuff.c
@@ -16,6 +16,8 @@
#include "drashna.h"
+extern bool host_driver_disabled;
+
#ifndef KEYLOGGER_LENGTH
// # ifdef OLED_DISPLAY_128X64
# define KEYLOGGER_LENGTH ((uint8_t)(OLED_DISPLAY_HEIGHT / OLED_FONT_WIDTH))
@@ -29,24 +31,24 @@ static char keylog_str[KEYLOGGER_LENGTH + 1] = {0};
static uint16_t log_timer = 0;
// clang-format off
-static const char PROGMEM code_to_name[0xFF] = {
+static const char PROGMEM code_to_name[256] = {
// 0 1 2 3 4 5 6 7 8 9 A B c D E F
' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', // 0x
'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', // 1x
'3', '4', '5', '6', '7', '8', '9', '0', 20, 19, 27, 26, 22, '-', '=', '[', // 2x
- ']','\\', '#', ';','\'', '`', ',', '.', '/', 128, ' ', ' ', ' ', ' ', ' ', ' ', // 3x
- ' ', ' ', ' ', ' ', ' ', ' ', 'P', 'S', ' ', ' ', ' ', ' ', 16, ' ', ' ', ' ', // 4x
- ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 5x
- ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 6x
+ ']','\\', '#', ';','\'', '`', ',', '.', '/', 128, '1', '2', '3', '4', '5', '6', // 3x
+ '7', '8', '9', '0', '1', '2', 'P', 'S', 19, ' ', 17, 30, 16, 16, 31, 26, // 4x
+ 27, 25, 24, 'N', '/', '*', '-', '+', 23, '1', '2', '3', '4', '5', '6', '7', // 5x
+ '8', '9', '0', '.','\\', 'A', 0, '=', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 6x
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 7x
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 8x
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 9x
- ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Ax
+ ' ', ' ', ' ', ' ', ' ', 0, ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Ax
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Bx
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Cx
' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Dx
- 'C', 'S', 'A', 'C', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Ex
- ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' // Fx
+ 'C', 'S', 'A', 'C', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 24, 26, 24, // Ex
+ 25,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D,0x9D, 24, 25, 27, 26, ' ', ' ', ' ' // Fx
};
// clang-format on
@@ -148,8 +150,8 @@ void render_keylock_status(uint8_t led_usb_state) {
oled_write_P(PSTR(OLED_RENDER_LOCK_NUML), led_usb_state & (1 << USB_LED_NUM_LOCK));
oled_write_P(PSTR(" "), false);
oled_write_P(PSTR(OLED_RENDER_LOCK_CAPS), led_usb_state & (1 << USB_LED_CAPS_LOCK));
- oled_write_P(PSTR(" "), false);
- oled_write_P(PSTR(OLED_RENDER_LOCK_SCLK), led_usb_state & (1 << USB_LED_SCROLL_LOCK));
+// oled_write_P(PSTR(" "), false);
+// oled_write_P(PSTR(OLED_RENDER_LOCK_SCLK), led_usb_state & (1 << USB_LED_SCROLL_LOCK));
}
void render_matrix_scan_rate(void) {
@@ -292,12 +294,22 @@ void render_user_status(void) {
static const char PROGMEM rgb_layer_status[2][3] = {{0xEE, 0xEF, 0}, {0xF0, 0xF1, 0}};
oled_write_P(rgb_layer_status[userspace_config.rgb_layer_change], false);
- static const char PROGMEM nukem_good[2][3] = {{0xF8, 0xF9, 0}, {0xF6, 0xF7, 0}};
- oled_write_P(nukem_good[0], userspace_config.nuke_switch);
+ static const char PROGMEM cat_mode[2][3] = {{0xF8, 0xF9, 0}, {0xF6, 0xF7, 0}};
+ oled_write_P(cat_mode[0], host_driver_disabled);
#if defined(UNICODE_ENABLE)
static const char PROGMEM uc_mod_status[5][3] = {{0xEA, 0xEB, 0}, {0xEC, 0xED, 0}};
oled_write_P(uc_mod_status[get_unicode_input_mode() == UC_MAC], false);
#endif
+ if (userspace_config.nuke_switch) {
+#if !defined(OLED_DISPLAY_128X64)
+ oled_write_P(PSTR(" "), false);
+#endif
+ static const char PROGMEM nukem_good[2] = {0xFA, 0};
+ oled_write_P(nukem_good, false);
+#if !defined(OLED_DISPLAY_128X64)
+ oled_advance_page(true);
+#endif
+ }
#if defined(OLED_DISPLAY_128X64)
oled_advance_page(true);
#endif
diff --git a/users/drashna/process_records.c b/users/drashna/process_records.c
index 900b6da15e89..1e7f7ca762f3 100644
--- a/users/drashna/process_records.c
+++ b/users/drashna/process_records.c
@@ -18,7 +18,7 @@
#include "version.h"
uint16_t copy_paste_timer;
-
+bool host_driver_disabled = false;
// Defines actions tor my global custom keycodes. Defined in drashna.h file
// Then runs the _keymap's record handier if not processed here
@@ -198,6 +198,23 @@ bool process_record_user(uint16_t keycode, keyrecord_t *re
eeconfig_update_user(userspace_config.raw);
}
}
+ break;
+ case KEYLOCK: {
+ static host_driver_t *host_driver = 0;
+
+ if (record->event.pressed) {
+ if (host_get_driver()) {
+ host_driver = host_get_driver();
+ clear_keyboard();
+ host_set_driver(0);
+ host_driver_disabled = true;
+ } else {
+ host_set_driver(host_driver);
+ host_driver_disabled = false;
+ }
+ }
+ break;
+ }
#endif
}
return true;
diff --git a/users/drashna/process_records.h b/users/drashna/process_records.h
index 231480ac5905..897d7bbcc906 100644
--- a/users/drashna/process_records.h
+++ b/users/drashna/process_records.h
@@ -46,6 +46,7 @@ enum userspace_custom_keycodes {
UC_TABL, // ┬─┬ノ( º _ ºノ)
UC_SHRG, // ¯\_(ツ)_/¯
UC_DISA, // ಠ_ಠ
+ KEYLOCK, // Locks keyboard by unmounting driver
NEW_SAFE_RANGE // use "NEWPLACEHOLDER for keymap specific codes
};
diff --git a/users/drashna/transport_sync.c b/users/drashna/transport_sync.c
index 39db64135484..daa14bbef766 100644
--- a/users/drashna/transport_sync.c
+++ b/users/drashna/transport_sync.c
@@ -33,15 +33,16 @@ extern bool tap_toggling;
extern bool swap_hands;
#endif
extern userspace_config_t userspace_config;
+extern bool host_driver_disabled;
uint16_t transport_keymap_config = 0;
-uint32_t transport_userspace_config = 0;
+uint32_t transport_userspace_config = 0, transport_user_state = 0;
user_runtime_config_t user_state;
void user_state_sync(uint8_t initiator2target_buffer_size, const void* initiator2target_buffer, uint8_t target2initiator_buffer_size, void* target2initiator_buffer) {
- if (initiator2target_buffer_size == sizeof(user_state)) {
- memcpy(&user_state, initiator2target_buffer, initiator2target_buffer_size);
+ if (initiator2target_buffer_size == sizeof(transport_user_state)) {
+ memcpy(&transport_user_state, initiator2target_buffer, initiator2target_buffer_size);
}
}
void user_keymap_sync(uint8_t initiator2target_buffer_size, const void* initiator2target_buffer, uint8_t target2initiator_buffer_size, void* target2initiator_buffer) {
@@ -79,9 +80,13 @@ void user_transport_update(void) {
#ifdef SWAP_HANDS_ENABLE
user_state.swap_hands = swap_hands;
#endif
+ user_state.host_driver_disabled = host_driver_disabled;
+
+ transport_user_state = user_state.raw;
} else {
keymap_config.raw = transport_keymap_config;
userspace_config.raw = transport_userspace_config;
+ user_state.raw = transport_user_state;
#ifdef UNICODE_ENABLE
unicode_config.input_mode = user_state.unicode_mode;
#endif
@@ -91,22 +96,21 @@ void user_transport_update(void) {
#ifdef SWAP_HANDS_ENABLE
swap_hands = user_state.swap_hands;
#endif
+ host_driver_disabled = user_state.host_driver_disabled;
}
}
void user_transport_sync(void) {
if (is_keyboard_master()) {
// Keep track of the last state, so that we can tell if we need to propagate to slave
- static user_runtime_config_t last_user_state;
static uint16_t last_keymap = 0;
- static uint32_t last_config = 0;
- static uint32_t last_sync[3];
+ static uint32_t last_config = 0, last_sync[3], last_user_state = 0;
bool needs_sync = false;
// Check if the state values are different
- if (memcmp(&user_state, &last_user_state, sizeof(user_state))) {
+ if (memcmp(&transport_user_state, &last_user_state, sizeof(transport_user_state))) {
needs_sync = true;
- memcpy(&last_user_state, &user_state, sizeof(user_state));
+ memcpy(&last_user_state, &transport_user_state, sizeof(transport_user_state));
}
// Send to slave every 500ms regardless of state change
if (timer_elapsed32(last_sync[0]) > 250) {
diff --git a/users/drashna/transport_sync.h b/users/drashna/transport_sync.h
index 062df2baccb9..70b6ea522bec 100644
--- a/users/drashna/transport_sync.h
+++ b/users/drashna/transport_sync.h
@@ -19,12 +19,16 @@
#include "drashna.h"
-__attribute__((aligned(8))) typedef struct {
- bool audio_enable;
- bool audio_clicky_enable;
- bool tap_toggling;
- bool unicode_mode;
- bool swap_hands;
+typedef union {
+ uint32_t raw;
+ struct {
+ bool audio_enable :1;
+ bool audio_clicky_enable :1;
+ bool tap_toggling :1;
+ bool unicode_mode :1;
+ bool swap_hands :1;
+ bool host_driver_disabled :1;
+ };
} user_runtime_config_t;
extern user_runtime_config_t user_state;
diff --git a/users/drashna/wrappers.h b/users/drashna/wrappers.h
index 8ac252926e18..c1ae81557951 100644
--- a/users/drashna/wrappers.h
+++ b/users/drashna/wrappers.h
@@ -167,13 +167,76 @@ NOTE: These are all the same length. If you do a search/replace
#define _________________HALMAK_R3_________________ KC_G, KC_P, KC_X, KC_K, KC_Y
-#define _________________HALMAK_L1_________________ KC_W, KC_L, KC_R, KC_B, KC_Z
-#define _________________HALMAK_L2_________________ KC_S, KC_H, KC_N, KC_T, KC_COMM
-#define _________________HALMAK_L3_________________ KC_F, KC_M, KC_V, KC_V, KC_SLASH
+#define __________________ISRT_L1__________________ KC_W, KC_C, KC_L, KC_M, KC_K
+#define __________________ISRT_L2__________________ KC_I, KC_S, KC_R, KC_T, KC_G
+#define __________________ISRT_L3__________________ KC_Q, KC_V, KC_W, KC_D, KC_J
-#define _________________HALMAK_R1_________________ KC_SCLN, KC_Q, KC_U, KC_D, KC_J
-#define _________________HALMAK_R2_________________ KC_DOT, KC_A, KC_E, KC_O, KC_I, KC_QUOTE
-#define _________________HALMAK_R3_________________ KC_G, KC_P, KC_X, KC_K, KC_Y
+#define __________________ISRT_R1__________________ KC_Z, KC_F, KC_U, KC_COMM, KC_QUOTE
+#define __________________ISRT_R2__________________ KC_P, KC_N, KC_E, KC_A, KC_O, KC_SCLN
+#define __________________ISRT_R3__________________ KC_B, KC_H, KC_SLSH, KC_DOT, KC_X
+
+
+#define __________________SOUL_L1__________________ KC_Q, KC_W, KC_L, KC_D, KC_P
+#define __________________SOUL_L2__________________ KC_A, KC_S, KC_R, KC_T, KC_G
+#define __________________SOUL_L3__________________ KC_Z, KC_X, KC_C, KC_V, KC_J
+
+#define __________________SOUL_R1__________________ KC_K, KC_M, KC_U, KC_Y, KC_SCLN
+#define __________________SOUL_R2__________________ KC_F, KC_N, KC_E, KC_I, KC_O, KC_QUOTE
+#define __________________SOUL_R3__________________ KC_B, KC_H, KC_COMM, KC_DOT, KC_SLSH
+
+
+#define __________________NIRO_L1__________________ KC_Q, KC_W, KC_U, KC_D, KC_P
+#define __________________NIRO_L2__________________ KC_A, KC_S, KC_E, KC_T, KC_G
+#define __________________NIRO_L3__________________ KC_Z, KC_X, KC_C, KC_V, KC_B
+
+#define __________________NIRO_R1__________________ KC_J, KC_F, KC_Y, KC_L, KC_SCLN
+#define __________________NIRO_R2__________________ KC_H, KC_N, KC_I, KC_R, KC_O, KC_QUOTE
+#define __________________NIRO_R3__________________ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH
+
+
+#define _________________ASSET_L1__________________ KC_Q, KC_W, KC_J, KC_F, KC_G
+#define _________________ASSET_L2__________________ KC_A, KC_S, KC_E, KC_T, KC_D
+#define _________________ASSET_L3__________________ KC_Z, KC_X, KC_C, KC_V, KC_B
+
+#define _________________ASSET_R1__________________ KC_Y, KC_P, KC_U, KC_L, KC_SCLN
+#define _________________ASSET_R2__________________ KC_H, KC_N, KC_I, KC_O, KC_R, KC_QUOTE
+#define _________________ASSET_R3__________________ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH
+
+
+#define _________________MTGAP_L1__________________ KC_Y, KC_P, KC_O, KC_U, KC_J
+#define _________________MTGAP_L2__________________ KC_I, KC_N, KC_E, KC_A, KC_COMM
+#define _________________MTGAP_L3__________________ KC_Q, KC_Z, KC_SLSH, KC_DOT, KC_SCLN
+
+#define _________________MTGAP_R1__________________ KC_K, KC_D, KC_L, KC_C, KC_W
+#define _________________MTGAP_R2__________________ KC_M, KC_H, KC_T, KC_S, KC_R, KC_QUOTE
+#define _________________MTGAP_R3__________________ KC_B, KC_F, KC_G, KC_V, KC_X
+
+
+#define _________________MINIMAK_L1________________ KC_Q, KC_W, KC_D, KC_R, KC_K
+#define _________________MINIMAK_L2________________ KC_A, KC_S, KC_T, KC_F, KC_G
+#define _________________MINIMAK_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_B
+
+#define _________________MINIMAK_R1________________ KC_Y, KC_U, KC_I, KC_O, KC_P
+#define _________________MINIMAK_R2________________ KC_H, KC_J, KC_E, KC_L, KC_SCLN, KC_QUOT
+#define _________________MINIMAK_R3________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH
+
+
+#define ________________MINIMAK_8_L1_______________ KC_Q, KC_W, KC_D, KC_R, KC_K
+#define ________________MINIMAK_8_L2_______________ KC_A, KC_S, KC_T, KC_F, KC_G
+#define ________________MINIMAK_8_L3_______________ KC_Z, KC_X, KC_C, KC_V, KC_B
+
+#define ________________MINIMAK_8_R1_______________ KC_Y, KC_U, KC_I, KC_L, KC_P
+#define ________________MINIMAK_8_R2_______________ KC_H, KC_N, KC_E, KC_O, KC_SCLN, KC_QUOT
+#define ________________MINIMAK_8_R3_______________ KC_J, KC_M, KC_COMM, KC_DOT, KC_SLSH
+
+
+#define _______________MINIMAK_12_L1_______________ KC_Q, KC_W, KC_D, KC_F, KC_K
+#define _______________MINIMAK_12_L2_______________ KC_A, KC_S, KC_T, KC_R, KC_G
+#define _______________MINIMAK_12_L3_______________ KC_Z, KC_X, KC_C, KC_V, KC_B
+
+#define _______________MINIMAK_12_R1_______________ KC_Y, KC_U, KC_I, KC_L, KC_SCLN
+#define _______________MINIMAK_12_R2_______________ KC_H, KC_N, KC_E, KC_O, KC_P, KC_QUOT
+#define _______________MINIMAK_12_R3_______________ KC_J, KC_M, KC_COMM, KC_DOT, KC_SLSH
#define ________________NUMBER_LEFT________________ KC_1, KC_2, KC_3, KC_4, KC_5
diff --git a/users/jonavin/config.h b/users/jonavin/config.h
index 440d222df0c1..7b6e335e3c58 100644
--- a/users/jonavin/config.h
+++ b/users/jonavin/config.h
@@ -23,6 +23,7 @@
#define GRAVE_ESC_CTRL_OVERRIDE // Always send Escape if Control is pressed
#define TAPPING_TERM 180
+#define TAPPING_TERM_PER_KEY
#ifdef RGB_MATRIX_ENABLE
#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR
diff --git a/users/jonavin/jonavin.c b/users/jonavin/jonavin.c
index f53aa8664e5b..b66b444f365c 100644
--- a/users/jonavin/jonavin.c
+++ b/users/jonavin/jonavin.c
@@ -95,178 +95,28 @@ along with this program. If not, see .
} // timeout_threshold = 0 will disable timeout
}
+#endif // IDLE_TIMEOUT_ENABLE
+
+#if defined(ALTTAB_SCROLL_ENABLE) || defined(IDLE_TIMEOUT_ENABLE) // timer features
__attribute__((weak)) void matrix_scan_keymap(void) {}
void matrix_scan_user(void) {
- timeout_tick_timer();
+ #ifdef ALTTAB_SCROLL_ENABLE
+ encoder_tick_alttabscroll();
+ #endif
+ #ifdef IDLE_TIMEOUT_ENABLE
+ timeout_tick_timer();
+ #endif
matrix_scan_keymap();
}
-#endif // IDLE_TIMEOUT_ENABLE
-
-
-#ifdef ENCODER_ENABLE
- #ifndef DYNAMIC_KEYMAP_LAYER_COUNT
- #define DYNAMIC_KEYMAP_LAYER_COUNT 4 //default in case this is not already defined elsewhere
- #endif
- #ifndef ENCODER_DEFAULTACTIONS_INDEX
- #define ENCODER_DEFAULTACTIONS_INDEX 0 // can select encoder index if there are multiple encoders
- #endif
-
- void encoder_action_volume(bool clockwise) {
- if (clockwise)
- tap_code(KC_VOLU);
- else
- tap_code(KC_VOLD);
- }
-
- void encoder_action_mediatrack(bool clockwise) {
- if (clockwise)
- tap_code(KC_MEDIA_NEXT_TRACK);
- else
- tap_code(KC_MEDIA_PREV_TRACK);
- }
-
- void encoder_action_navword(bool clockwise) {
- if (clockwise)
- tap_code16(LCTL(KC_RGHT));
- else
- tap_code16(LCTL(KC_LEFT));
- }
-
- void encoder_action_navpage(bool clockwise) {
- if (clockwise)
- tap_code16(KC_PGUP);
- else
- tap_code16(KC_PGDN);
- }
-
- // LAYER HANDLING
- uint8_t selected_layer = 0;
-
- uint8_t get_selected_layer(void) {
- return selected_layer;
- }
-
- void encoder_action_layerchange(bool clockwise) {
- if (clockwise) {
- if(selected_layer < (DYNAMIC_KEYMAP_LAYER_COUNT - 1)) {
- selected_layer ++;
- layer_move(selected_layer);
- }
- } else {
- if (selected_layer > 0) {
- selected_layer --;
- layer_move(selected_layer);
- }
- }
- }
-
- #ifdef RGB_MATRIX_ENABLE
- void encoder_action_rgb_speed(bool clockwise) {
- if (clockwise)
- rgb_matrix_increase_speed_noeeprom();
- else
- rgb_matrix_decrease_speed_noeeprom();
- }
- void encoder_action_rgb_hue(bool clockwise) {
- if (clockwise)
- rgb_matrix_increase_hue_noeeprom();
- else
- rgb_matrix_decrease_hue_noeeprom();
- }
- void encoder_action_rgb_saturation(bool clockwise) {
- if (clockwise)
- rgb_matrix_increase_sat_noeeprom();
- else
- rgb_matrix_decrease_sat_noeeprom();
- }
- void encoder_action_rgb_brightness(bool clockwise) {
- if (clockwise)
- rgb_matrix_increase_val_noeeprom();
- else
- rgb_matrix_decrease_val_noeeprom();
- }
- void encoder_action_rgb_mode(bool clockwise) {
- if (clockwise)
- rgb_matrix_step_noeeprom();
- else
- rgb_matrix_step_reverse_noeeprom();
- }
- #elif defined(RGBLIGHT_ENABLE)
- void encoder_action_rgb_speed(bool clockwise) {
- if (clockwise)
- rgblight_increase_speed_noeeprom();
- else
- rgblight_decrease_speed_noeeprom();
- }
- void encoder_action_rgb_hue(bool clockwise) {
- if (clockwise)
- rgblight_increase_hue_noeeprom();
- else
- rgblight_decrease_hue_noeeprom();
- }
- void encoder_action_rgb_saturation(bool clockwise) {
- if (clockwise)
- rgblight_increase_sat_noeeprom();
- else
- rgblight_decrease_sat_noeeprom();
- }
- void encoder_action_rgb_brightness(bool clockwise) {
- if (clockwise)
- rgblight_increase_val_noeeprom();
- else
- rgblight_decrease_val_noeeprom();
- }
- void encoder_action_rgb_mode(bool clockwise) {
- if (clockwise)
- rgblight_step_noeeprom();
- else
- rgblight_step_reverse_noeeprom();
- }
- #endif // RGB_MATRIX_ENABLE || RGBLIGHT_ENABLE
-#endif // ENCODER_ENABLE
-
-#if defined(ENCODER_ENABLE) && defined(ENCODER_DEFAULTACTIONS_ENABLE) // Encoder Functionality
-
- __attribute__((weak)) bool encoder_update_keymap(uint8_t index, bool clockwise) { return true; }
-
- bool encoder_update_user(uint8_t index, bool clockwise) {
- if (!encoder_update_keymap(index, clockwise)) { return false; }
- if (index != ENCODER_DEFAULTACTIONS_INDEX) {return true;} // exit if the index doesn't match
- uint8_t mods_state = get_mods();
- if (mods_state & MOD_BIT(KC_LSFT) ) { // If you are holding L shift, encoder changes layers
- encoder_action_layerchange(clockwise);
- } else if (mods_state & MOD_BIT(KC_RSFT) ) { // If you are holding R shift, Page up/dn
- unregister_mods(MOD_BIT(KC_RSFT));
- encoder_action_navpage(clockwise);
- register_mods(MOD_BIT(KC_RSFT));
- } else if (mods_state & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate next/prev word
- encoder_action_navword(clockwise);
- } else if (mods_state & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media next/prev track
- encoder_action_mediatrack(clockwise);
- } else {
- switch(get_highest_layer(layer_state)) {
- case _FN1:
- #ifdef IDLE_TIMEOUT_ENABLE
- timeout_update_threshold(clockwise);
- #endif
- break;
- default:
- encoder_action_volume(clockwise); // Otherwise it just changes volume
- break;
- }
- }
- return true;
- }
-#endif // ENCODER_ENABLE
-
+#endif // ALTTAB_SCROLL_ENABLE or IDLE_TIMEOUT_ENABLE
// PROCESS KEY CODES
__attribute__ ((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; }
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keymap(keycode, record)) { return false; }
- switch (keycode) {
+ switch (keycode) {
case KC_00:
if (record->event.pressed) {
// when keycode KC_00 is pressed
@@ -298,6 +148,41 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
} else unregister_code16(keycode);
break;
#endif // RGB_MATRIX_ENABLE
+
+#ifdef EMOTICON_ENABLE
+ case EMO_SHRUG:
+ if (record->event.pressed) SEND_STRING("`\\_(\"/)_/`");
+ else unregister_code16(keycode);
+ break;
+ case EMO_CONFUSE:
+ if (record->event.pressed) SEND_STRING("(*_*)");
+ else unregister_code16(keycode);
+ break;
+ case EMO_TEARS:
+ if (record->event.pressed) SEND_STRING("(T_T)");
+ else unregister_code16(keycode);
+ break;
+ case EMO_NERVOUS:
+ if (record->event.pressed) SEND_STRING("(~_~;)");
+ else unregister_code16(keycode);
+ break;
+ case EMO_JOY:
+ if (record->event.pressed) SEND_STRING("(^o^)");
+ else unregister_code16(keycode);
+ break;
+ case EMO_SAD:
+ if (record->event.pressed) SEND_STRING(":'-(");
+ else unregister_code16(keycode);
+ break;
+ #endif // EMOTICON_ENABLE
+
+ #ifdef ALTTAB_SCROLL_ENABLE
+ case KC_TSTOG:
+ if (record->event.pressed) encoder_toggle_alttabscroll();
+ else unregister_code16(keycode);
+ break;
+ #endif // ALTTAB_SCROLL_ENABLE
+
default:
if (record->event.pressed) {
#ifdef RGB_MATRIX_ENABLE
@@ -313,6 +198,18 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
};
+uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_SFTUP:
+ return 300;
+ case KC_RAISESPC:
+ case KC_LOWERSPC:
+ return 450;
+ default:
+ return TAPPING_TERM;
+ }
+}
+
// Turn on/off NUM LOCK if current state is different
void activate_numlock(bool turn_on) {
if (IS_HOST_LED_ON(USB_LED_NUM_LOCK) != turn_on) {
diff --git a/users/jonavin/jonavin.h b/users/jonavin/jonavin.h
index efe0301af377..ab2ce0dff2f2 100644
--- a/users/jonavin/jonavin.h
+++ b/users/jonavin/jonavin.h
@@ -38,12 +38,28 @@ enum custom_user_keycodes {
RGB_TOD, // Timeout idle time down
RGB_NITE, // Turns off all rgb but allow rgb indicators to work
+ EMO_SHRUG, // `\_("/)_/`
+ EMO_CONFUSE, // (*_*)
+ EMO_SAD, // :'-(
+ EMO_NERVOUS, // (~_~;)
+ EMO_JOY, // (^o^)
+ EMO_TEARS, // (T_T)
+
+ KC_TSTOG, // Tab Scroll Toggle
+
NEW_SAFE_RANGE // new safe range for keymap level custom keycodes
};
-#define KC_CAD LALT(LCTL(KC_DEL))
+#define KC_CAD LALT(LCTL(KC_DEL))
#define KC_AF4 LALT(KC_F4)
#define KC_TASK LCTL(LSFT(KC_ESC))
+#define CT_PGUP RCTL(KC_PGUP)
+#define CT_PGDN RCTL(KC_PGDN)
+#define CT_HOME RCTL(KC_HOME)
+#define CT_END RCTL(KC_END)
+#define KC_SFTUP RSFT_T(KC_UP) // Shift when held, Up arrow when tapped
+#define KC_RAISESPC LT(_RAISE,KC_SPC) // _RAISE layer mod when held, space when tapped
+#define KC_LOWERSPC LT(_LOWER,KC_SPC) // _LOWER layer mod when held, space when tapped
#ifdef TD_LSFT_CAPSLOCK_ENABLE
@@ -77,6 +93,12 @@ enum custom_user_keycodes {
void encoder_action_rgb_brightness(bool clockwise);
void encoder_action_rgb_mode(bool clockwise);
#endif // RGB_MATRIX_ENABLE / RGBLIGHT_ENABLE
+
+ #ifdef ALTTAB_SCROLL_ENABLE
+ void encoder_action_alttabscroll(bool clockwise);
+ void encoder_toggle_alttabscroll(void);
+ void encoder_tick_alttabscroll(void);
+ #endif // ALTTAB_SCROLL_ENABLE
#endif // ENCODER_ENABLE
diff --git a/users/jonavin/jonavin_encoder.c b/users/jonavin/jonavin_encoder.c
new file mode 100644
index 000000000000..387ed5f43006
--- /dev/null
+++ b/users/jonavin/jonavin_encoder.c
@@ -0,0 +1,219 @@
+
+/* Copyright 2021 Jonavin Eng @Jonavin
+
+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
+#include "jonavin.h"
+
+#ifdef ENCODER_ENABLE
+ #ifndef DYNAMIC_KEYMAP_LAYER_COUNT
+ #define DYNAMIC_KEYMAP_LAYER_COUNT 4 //default in case this is not already defined elsewhere
+ #endif
+ #ifndef ENCODER_DEFAULTACTIONS_INDEX
+ #define ENCODER_DEFAULTACTIONS_INDEX 0 // can select encoder index if there are multiple encoders
+ #endif
+
+ void encoder_action_volume(bool clockwise) {
+ if (clockwise)
+ tap_code(KC_VOLU);
+ else
+ tap_code(KC_VOLD);
+ }
+
+ void encoder_action_mediatrack(bool clockwise) {
+ if (clockwise)
+ tap_code(KC_MEDIA_NEXT_TRACK);
+ else
+ tap_code(KC_MEDIA_PREV_TRACK);
+ }
+
+ void encoder_action_navword(bool clockwise) {
+ if (clockwise)
+ tap_code16(LCTL(KC_RGHT));
+ else
+ tap_code16(LCTL(KC_LEFT));
+ }
+
+ void encoder_action_navpage(bool clockwise) {
+ if (clockwise)
+ tap_code16(KC_PGUP);
+ else
+ tap_code16(KC_PGDN);
+ }
+
+ // LAYER HANDLING
+ uint8_t selected_layer = 0;
+
+ uint8_t get_selected_layer(void) {
+ return selected_layer;
+ }
+
+ void encoder_action_layerchange(bool clockwise) {
+ if (clockwise) {
+ if(selected_layer < (DYNAMIC_KEYMAP_LAYER_COUNT - 1)) {
+ selected_layer ++;
+ layer_move(selected_layer);
+ }
+ } else {
+ if (selected_layer > 0) {
+ selected_layer --;
+ layer_move(selected_layer);
+ }
+ }
+ }
+
+ #ifdef RGB_MATRIX_ENABLE
+ void encoder_action_rgb_speed(bool clockwise) {
+ if (clockwise)
+ rgb_matrix_increase_speed_noeeprom();
+ else
+ rgb_matrix_decrease_speed_noeeprom();
+ }
+ void encoder_action_rgb_hue(bool clockwise) {
+ if (clockwise)
+ rgb_matrix_increase_hue_noeeprom();
+ else
+ rgb_matrix_decrease_hue_noeeprom();
+ }
+ void encoder_action_rgb_saturation(bool clockwise) {
+ if (clockwise)
+ rgb_matrix_increase_sat_noeeprom();
+ else
+ rgb_matrix_decrease_sat_noeeprom();
+ }
+ void encoder_action_rgb_brightness(bool clockwise) {
+ if (clockwise)
+ rgb_matrix_increase_val_noeeprom();
+ else
+ rgb_matrix_decrease_val_noeeprom();
+ }
+ void encoder_action_rgb_mode(bool clockwise) {
+ if (clockwise)
+ rgb_matrix_step_noeeprom();
+ else
+ rgb_matrix_step_reverse_noeeprom();
+ }
+ #elif defined(RGBLIGHT_ENABLE)
+ void encoder_action_rgb_speed(bool clockwise) {
+ if (clockwise)
+ rgblight_increase_speed_noeeprom();
+ else
+ rgblight_decrease_speed_noeeprom();
+ }
+ void encoder_action_rgb_hue(bool clockwise) {
+ if (clockwise)
+ rgblight_increase_hue_noeeprom();
+ else
+ rgblight_decrease_hue_noeeprom();
+ }
+ void encoder_action_rgb_saturation(bool clockwise) {
+ if (clockwise)
+ rgblight_increase_sat_noeeprom();
+ else
+ rgblight_decrease_sat_noeeprom();
+ }
+ void encoder_action_rgb_brightness(bool clockwise) {
+ if (clockwise)
+ rgblight_increase_val_noeeprom();
+ else
+ rgblight_decrease_val_noeeprom();
+ }
+ void encoder_action_rgb_mode(bool clockwise) {
+ if (clockwise)
+ rgblight_step_noeeprom();
+ else
+ rgblight_step_reverse_noeeprom();
+ }
+ #endif // RGB_MATRIX_ENABLE || RGBLIGHT_ENABLE
+
+ #ifdef ALTTAB_SCROLL_ENABLE
+ bool is_tab_scrolling = false;
+ bool is_alt_tab_active = false;
+ uint16_t alt_tab_timer = 0;
+
+
+ void encoder_toggle_alttabscroll(void) {
+ is_tab_scrolling = !is_tab_scrolling;
+ }
+
+ void encoder_action_alttabscroll(bool clockwise) {
+ if (clockwise) {
+ if (!is_alt_tab_active) {
+ is_alt_tab_active = true;
+ register_mods(MOD_RALT);
+ }
+ tap_code16(KC_TAB);
+ }
+ else {
+ tap_code16(S(KC_TAB));
+ }
+ alt_tab_timer = timer_read();
+ }
+
+ void encoder_tick_alttabscroll(void) {
+ if (is_alt_tab_active) {
+ if (timer_elapsed(alt_tab_timer) > 600) {
+ unregister_mods(MOD_RALT);
+ is_alt_tab_active = false;
+ }
+ }
+ }
+ #endif // ALTTAB_SCROLL_ENABLE
+#endif // ENCODER_ENABLE
+
+#if defined(ENCODER_ENABLE) && defined(ENCODER_DEFAULTACTIONS_ENABLE) // Encoder Functionality
+
+ __attribute__((weak)) bool encoder_update_keymap(uint8_t index, bool clockwise) { return true; }
+
+ bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (!encoder_update_keymap(index, clockwise)) { return false; }
+ if (index != ENCODER_DEFAULTACTIONS_INDEX) {return true;} // exit if the index doesn't match
+ uint8_t mods_state = get_mods();
+ if (mods_state & MOD_BIT(KC_LSFT) ) { // If you are holding L shift, encoder changes layers
+ encoder_action_layerchange(clockwise);
+ } else if (mods_state & MOD_BIT(KC_RSFT) ) { // If you are holding R shift, Page up/dn
+ unregister_mods(MOD_BIT(KC_RSFT));
+ encoder_action_navpage(clockwise);
+ register_mods(MOD_BIT(KC_RSFT));
+ } else if (mods_state & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate next/prev word
+ encoder_action_navword(clockwise);
+ } else if (mods_state & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media next/prev track
+ encoder_action_mediatrack(clockwise);
+ } else {
+ switch(get_highest_layer(layer_state)) {
+ case _FN1:
+ #ifdef IDLE_TIMEOUT_ENABLE
+ timeout_update_threshold(clockwise);
+ #endif
+ break;
+ default:
+ #ifdef ALTTAB_SCROLL_ENABLE
+ if (is_tab_scrolling)
+ encoder_action_alttabscroll(clockwise);
+ else
+ encoder_action_volume(clockwise); // Otherwise it just changes volume
+ #else
+ encoder_action_volume(clockwise); // Otherwise it just changes volume
+ #endif // ALTTAB_SCROLL_ENABLE
+ break;
+ }
+ }
+ return false;
+ }
+#endif // ENCODER_ENABLE
+
+
diff --git a/users/jonavin/readme.md b/users/jonavin/readme.md
index c029796b4e59..8ec0e0ea16ba 100644
--- a/users/jonavin/readme.md
+++ b/users/jonavin/readme.md
@@ -14,62 +14,111 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
LAYERS:
- 0 = _BASE
- 1 = _FN1
- 2 = _LOWER
- 3 = _RAISE
+- 0 = _BASE
+- 1 = _FN1
+- 2 = _LOWER
+- 3 = _RAISE
KEYCODES:
- KC_CAD Ctrl-Alt-Del
- KC_AF4 Alt-F4
- KC_TASK Windows Task Manager (Ctrl-Shift-Esc)
- LSFT_CAPSLOCK When LSFT_CAPSLOCK_ENABLE is defined, hold for Shift double tap for CAPSLOCK; otherwise, just Shift
- KC_00 double zero "00"
- KC_WINLCK toggles LGui/Win key lock
- RGB_TOI Increase Timeout idle time threshold
- RGB_TOD Decrease Timeout idle time threshold
+- KC_CAD Ctrl-Alt-Del
+- KC_AF4 Alt-F4
+- KC_TASK Windows Task Manager (Ctrl-Shift-Esc)
+- LSFT_CAPSLOCK When LSFT_CAPSLOCK_ENABLE is defined, hold for Shift double tap for CAPSLOCK; otherwise, just Shift
+- KC_00 double zero "00"
+- KC_WINLCK toggles LGui/Win key lock
+- RGB_TOI Increase Timeout idle time threshold
+- RGB_TOD Decrease Timeout idle time threshold
+- CT_PGUP Ctrl-PgUp
+- CT_PGDN Ctrl-PgDn
+- CT_HOME Ctrl-HOme
+- CT_END Ctrl-End
+- KC_SFTUP RShift when held, Up arrow when tapped
+- KC_RAISESPC _RAISE layer mod when held, space when tapped
+- KC_LOWERSPC _LOWER layer mod when held, space when tapped
+- KC_TSTOG toggles between volume and Alt-Tab encoder control
+-
+ When EMOTICON_ENABLE = yes
+- EMO_SHRUG `\_("/)_/`
+- EMO_CONFUSE (*_*)
+- EMD_TEARS (T_T)
+- EMO_NERVOUS (~_~;)
+- EMO_JOY (^o^)
+- EMO_SAD :'-(
+
+
+AVAILABLE ENCODER ACTIONS:
+- void encoder_action_volume(bool clockwise);
+- void encoder_action_mediatrack(bool clockwise);
+- void encoder_action_navword(bool clockwise);
+- void encoder_action_navpage(bool clockwise);
+-
+- uint8_t get_selected_layer(void);
+- void encoder_action_layerchange(bool clockwise);
+-
+- void encoder_action_rgb_speed(bool clockwise);
+- void encoder_action_rgb_hue(bool clockwise);
+- void encoder_action_rgb_saturation(bool clockwise);
+- void encoder_action_rgb_brightness(bool clockwise);
+- void encoder_action_rgb_mode(bool clockwise);
+-
+- void encoder_action_alttabscroll(bool clockwise)
+- void encoder_toggle_alttabscroll(void);
ENABLE FEATURES your keymap rules.mk
+---------------------------------------
STARTUP_NUMLOCK_ON = yes
- turns on NUMLOCK by default
+- turns on NUMLOCK by default
ENCODER_DEFAULTACTIONS_ENABLE = yes
- Enabled default encoder funtions
- When enabled, use this in the keymap for an additional encoder processing
- bool encoder_update_keymap(uint8_t index, bool clockwise)
-
- OPTION: set ENCODER_DEFAULTACTIONS_INDEX to the encoder number if the encoder is not index 0
+- Enabled default encoder funtions
+- When enabled, use this in the keymap for an additional encoder processing
+- bool encoder_update_keymap(uint8_t index, bool clockwise)
+OPTION: set ENCODER_DEFAULTACTIONS_INDEX to the encoder number if the encoder is not index 0
+
TD_LSFT_CAPSLOCK_ENABLE = yes
- This will enable double tap on Left Shift to toggle CAPSLOCK
- KC_LSFTCAPS to bind to left Shift to enable feature
- KC_LSFTCAPSWIN does the same thing but will not turn on CAPS when Win Lkey is disabled
+- This will enable double tap on Left Shift to toggle CAPSLOCK
+- KC_LSFTCAPS to bind to left Shift to enable feature
+- KC_LSFTCAPSWIN does the same thing but will not turn on CAPS when Win Lkey is disabled
IDLE_TIMEOUT_ENABLE = yes
- Enables Timer functionality; for RGB idle timeouts that can be changed dynamically
- When enabled, use this in the keymap for an additional matrix processing
- void matrix_scan_keymap(void)
+- Enables Timer functionality; for RGB idle timeouts that can be changed dynamically
+- When enabled, use this in the keymap for an additional matrix processing: void matrix_scan_keymap(void)
+
+EMOTICON_ENABLE
+- adds EMO_ keycodes for text emojis
- Functions:
- u16int_t get_timeout_threshold(void) // returns the current timeout threshold
- void timeout_update_threshold(bool increase) // change threshold: true = increase, false = decrease
- void timeout_reset_timer(void) // resets timer (put in process_record_user if you override it)
- void timeout_tick_timer(void) // registers time ticks (put in maxtrix_scan_user if you override it)
+INVERT_NUMLOCK_INDICATOR
+- inverts the Num lock indicator, LED is on when num lock is off
+
+ALTTAB_SCROLL_ENABLE
+- When ENCODER_DEFAULTACTIONS_ENABLE = yes,
+ Enables Alt-Tab scrolling functions in default encoder,
+ bind KS_TSTOG to a key to enable/disable Alt-Tab vs Volume control
+- When defining your own encoder functions use encoder_action_alttabscroll(bool clockwise) to assign the encodr action
+
+
+FUNCTIONS
+------------------------
+- u16int_t get_timeout_threshold(void) // returns the current timeout threshold
+- void timeout_update_threshold(bool increase) // change threshold: true = increase, false = decrease
+- void timeout_reset_timer(void) // resets timer (put in process_record_user if you override it)
+- void timeout_tick_timer(void) // registers time ticks (put in maxtrix_scan_user if you override it)
Other Functions:
- - activate_numlock(bool turn_on) // true = turn on NUM LOCK, false = off
+- activate_numlock(bool turn_on) // true = turn on NUM LOCK, false = off
KEYMAP LEVEL ADDITIONAL PROCESSING FUNCTIONS
- bool process_record_keymap(uint16_t keycode, keyrecord_t *record)
- void keyboard_post_init_keymap(void)
+- bool process_record_keymap(uint16_t keycode, keyrecord_t *record)
+- void keyboard_post_init_keymap(void)
LIST OF COMPATIBLE KEYMAPS
- - gmmk/pro/ansi
- - keebio/quefrency/rev3
- - mechwild/mercutio
- - mechwild/murphpad
- - mechwild/OBE (*)
- - nopunin10did/kastenwagen (*)
+- gmmk/pro/ansi
+- keebio/quefrency/rev3
+- mechwild/mercutio
+- mechwild/murphpad
+- mechwild/OBE
+- nopunin10did/kastenwagen (*)
(*) coming soon
diff --git a/users/jonavin/rules.mk b/users/jonavin/rules.mk
index e2918d9e2639..4f65db27b9ef 100644
--- a/users/jonavin/rules.mk
+++ b/users/jonavin/rules.mk
@@ -1,6 +1,13 @@
SRC += jonavin.c
-ifeq ($(strip $(ENCODER_DEFAULTACTIONS_ENABLE)), yes)
- OPT_DEFS += -DENCODER_DEFAULTACTIONS_ENABLE
+ifdef ENCODER_ENABLE
+ # include encoder related code when enabled
+ ifeq ($(strip $(ENCODER_DEFAULTACTIONS_ENABLE)), yes)
+ OPT_DEFS += -DENCODER_DEFAULTACTIONS_ENABLE
+ endif
+ ifeq ($(strip $(ALTTAB_SCROLL_ENABLE)), yes)
+ OPT_DEFS += -DALTTAB_SCROLL_ENABLE
+ endif
+ SRC += jonavin_encoder.c
endif
ifeq ($(strip $(TD_LSFT_CAPSLOCK_ENABLE)), yes)
OPT_DEFS += -DTD_LSFT_CAPSLOCK_ENABLE
@@ -14,3 +21,9 @@ endif
ifeq ($(strip $(COLEMAK_LAYER_ENABLE)), yes)
OPT_DEFS += -DCOLEMAK_LAYER_ENABLE
endif
+ifeq ($(strip $(EMOTICON_ENABLE)), yes)
+ OPT_DEFS += -DEMOTICON_ENABLE
+endif
+ifeq ($(strip $(INVERT_NUMLOCK_INDICATOR)), yes)
+ OPT_DEFS += -DINVERT_NUMLOCK_INDICATOR
+endif
diff --git a/users/manna-harbour_miryoku/README.org b/users/manna-harbour_miryoku/README.org
deleted file mode 120000
index b6caaade1678..000000000000
--- a/users/manna-harbour_miryoku/README.org
+++ /dev/null
@@ -1 +0,0 @@
-miryoku.org
\ No newline at end of file
diff --git a/users/manna-harbour_miryoku/config.h b/users/manna-harbour_miryoku/config.h
index 38d363299e29..d24f52edae69 100644
--- a/users/manna-harbour_miryoku/config.h
+++ b/users/manna-harbour_miryoku/config.h
@@ -1,6 +1,6 @@
// Copyright 2019 Manna Harbour
// https://github.com/manna-harbour/miryoku
-// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*-
+// generated -*- buffer-read-only: t -*-
// 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 .
diff --git a/users/manna-harbour_miryoku/manna-harbour_miryoku.c b/users/manna-harbour_miryoku/manna-harbour_miryoku.c
index ff25b77934f8..6347183417e5 100644
--- a/users/manna-harbour_miryoku/manna-harbour_miryoku.c
+++ b/users/manna-harbour_miryoku/manna-harbour_miryoku.c
@@ -1,6 +1,6 @@
// Copyright 2019 Manna Harbour
// https://github.com/manna-harbour/miryoku
-// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*-
+// generated -*- buffer-read-only: t -*-
// 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 .
@@ -9,40 +9,50 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
#if defined MIRYOKU_LAYERS_FLIP
[BASE] = LAYOUT_miryoku(
- #if defined MIRYOKU_ALPHAS_COLEMAK
+ #if defined MIRYOKU_ALPHAS_AZERTY
+ KC_A, KC_Z, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ LGUI_T(KC_Q), LALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F), KC_G, KC_H, LSFT_T(KC_J), LCTL_T(KC_K), LALT_T(KC_L), LGUI_T(KC_M),
+ LT(BUTTON, KC_W), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_COMM, KC_DOT, ALGR_T(KC_SLSH), LT(BUTTON, KC_QUOT),
+ U_NP, U_NP, LT(FUN, KC_DEL), LT(NUM, KC_BSPC), LT(SYM, KC_ENT), LT(MOUSE, KC_TAB), LT(NAV, KC_SPC), LT(MEDIA, KC_ESC), U_NP, U_NP
+ #elif defined MIRYOKU_ALPHAS_COLEMAK
KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_QUOT,
LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_D, KC_H, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O),
- KC_Z, ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, ALGR_T(KC_DOT), KC_SLSH,
+ LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH),
U_NP, U_NP, LT(FUN, KC_DEL), LT(NUM, KC_BSPC), LT(SYM, KC_ENT), LT(MOUSE, KC_TAB), LT(NAV, KC_SPC), LT(MEDIA, KC_ESC), U_NP, U_NP
#elif defined MIRYOKU_ALPHAS_COLEMAKDHK
KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT,
LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_G, KC_K, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O),
- KC_Z, ALGR_T(KC_X), KC_C, KC_D, KC_V, KC_M, KC_H, KC_COMM, ALGR_T(KC_DOT), KC_SLSH,
+ LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_C, KC_D, KC_V, KC_M, KC_H, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH),
U_NP, U_NP, LT(FUN, KC_DEL), LT(NUM, KC_BSPC), LT(SYM, KC_ENT), LT(MOUSE, KC_TAB), LT(NAV, KC_SPC), LT(MEDIA, KC_ESC), U_NP, U_NP
#elif defined MIRYOKU_ALPHAS_DVORAK
KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L,
LGUI_T(KC_A), LALT_T(KC_O), LCTL_T(KC_E), LSFT_T(KC_U), KC_I, KC_D, LSFT_T(KC_H), LCTL_T(KC_T), LALT_T(KC_N), LGUI_T(KC_S),
- KC_SLSH, ALGR_T(KC_Q), KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, ALGR_T(KC_V), KC_Z,
+ LT(BUTTON, KC_SLSH), ALGR_T(KC_Q), KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, ALGR_T(KC_V), LT(BUTTON, KC_Z),
U_NP, U_NP, LT(FUN, KC_DEL), LT(NUM, KC_BSPC), LT(SYM, KC_ENT), LT(MOUSE, KC_TAB), LT(NAV, KC_SPC), LT(MEDIA, KC_ESC), U_NP, U_NP
#elif defined MIRYOKU_ALPHAS_HALMAK
KC_W, KC_L, KC_R, KC_B, KC_Z, KC_QUOT, KC_Q, KC_U, KC_D, KC_J,
LGUI_T(KC_S), LALT_T(KC_H), LCTL_T(KC_N), LSFT_T(KC_T), KC_COMM, KC_DOT, LSFT_T(KC_A), LCTL_T(KC_E), LALT_T(KC_O), LGUI_T(KC_I),
- KC_F, ALGR_T(KC_M), KC_V, KC_C, KC_SLSH, KC_G, KC_P, KC_X, ALGR_T(KC_K), KC_Y,
+ LT(BUTTON, KC_F), ALGR_T(KC_M), KC_V, KC_C, KC_SLSH, KC_G, KC_P, KC_X, ALGR_T(KC_K), LT(BUTTON, KC_Y),
U_NP, U_NP, LT(FUN, KC_DEL), LT(NUM, KC_BSPC), LT(SYM, KC_ENT), LT(MOUSE, KC_TAB), LT(NAV, KC_SPC), LT(MEDIA, KC_ESC), U_NP, U_NP
#elif defined MIRYOKU_ALPHAS_WORKMAN
KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_QUOT,
LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_H), LSFT_T(KC_T), KC_G, KC_Y, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_O), LGUI_T(KC_I),
- KC_Z, ALGR_T(KC_X), KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, ALGR_T(KC_DOT), KC_SLSH,
+ LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH),
U_NP, U_NP, LT(FUN, KC_DEL), LT(NUM, KC_BSPC), LT(SYM, KC_ENT), LT(MOUSE, KC_TAB), LT(NAV, KC_SPC), LT(MEDIA, KC_ESC), U_NP, U_NP
#elif defined MIRYOKU_ALPHAS_QWERTY
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F), KC_G, KC_H, LSFT_T(KC_J), LCTL_T(KC_K), LALT_T(KC_L), LGUI_T(KC_QUOT),
- KC_Z, ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, ALGR_T(KC_DOT), KC_SLSH,
+ LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH),
+ U_NP, U_NP, LT(FUN, KC_DEL), LT(NUM, KC_BSPC), LT(SYM, KC_ENT), LT(MOUSE, KC_TAB), LT(NAV, KC_SPC), LT(MEDIA, KC_ESC), U_NP, U_NP
+ #elif defined MIRYOKU_ALPHAS_QWERTZ
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Z, KC_U, KC_I, KC_O, KC_P,
+ LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F), KC_G, KC_H, LSFT_T(KC_J), LCTL_T(KC_K), LALT_T(KC_L), LGUI_T(KC_QUOT),
+ LT(BUTTON, KC_Y), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH),
U_NP, U_NP, LT(FUN, KC_DEL), LT(NUM, KC_BSPC), LT(SYM, KC_ENT), LT(MOUSE, KC_TAB), LT(NAV, KC_SPC), LT(MEDIA, KC_ESC), U_NP, U_NP
#else
KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT,
LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_G, KC_M, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O),
- KC_Z, ALGR_T(KC_X), KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, ALGR_T(KC_DOT), KC_SLSH,
+ LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH),
U_NP, U_NP, LT(FUN, KC_DEL), LT(NUM, KC_BSPC), LT(SYM, KC_ENT), LT(MOUSE, KC_TAB), LT(NAV, KC_SPC), LT(MEDIA, KC_ESC), U_NP, U_NP
#endif
),
@@ -85,12 +95,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
U_NP, U_NP, KC_MUTE, KC_MPLY, KC_MSTP, U_NA, U_NA, U_NA, U_NP, U_NP
),
#endif
- [MBO] = LAYOUT_miryoku(
- U_RDO, U_PST, U_CPY, U_CUT, U_UND, U_RDO, U_PST, U_CPY, U_CUT, U_UND,
- KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, KC_TRNS, KC_TRNS, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- U_NP, U_NP, KC_BTN2, KC_BTN3, KC_BTN1, KC_BTN1, KC_BTN3, KC_BTN2, U_NP, U_NP
- ),
[NUM] = LAYOUT_miryoku(
RESET, U_NA, U_NA, U_NA, U_NA, KC_LBRC, KC_7, KC_8, KC_9, KC_RBRC,
KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, KC_EQL, KC_4, KC_5, KC_6, KC_SCLN,
@@ -108,44 +112,53 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, KC_SLCK, KC_F4, KC_F5, KC_F6, KC_F11,
U_NA, KC_ALGR, U_NA, U_NA, U_NA, KC_PAUS, KC_F1, KC_F2, KC_F3, KC_F10,
U_NP, U_NP, U_NA, U_NA, U_NA, KC_TAB, KC_SPC, KC_APP, U_NP, U_NP
- )
-,
+ ),
#else
[BASE] = LAYOUT_miryoku(
- #if defined MIRYOKU_ALPHAS_COLEMAK
+ #if defined MIRYOKU_ALPHAS_AZERTY
+ KC_A, KC_Z, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ LGUI_T(KC_Q), LALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F), KC_G, KC_H, LSFT_T(KC_J), LCTL_T(KC_K), LALT_T(KC_L), LGUI_T(KC_M),
+ LT(BUTTON, KC_W), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_COMM, KC_DOT, ALGR_T(KC_SLSH), LT(BUTTON, KC_QUOT),
+ U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP
+ #elif defined MIRYOKU_ALPHAS_COLEMAK
KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_QUOT,
LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_D, KC_H, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O),
- KC_Z, ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, ALGR_T(KC_DOT), KC_SLSH,
+ LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH),
U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP
#elif defined MIRYOKU_ALPHAS_COLEMAKDHK
KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT,
LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_G, KC_K, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O),
- KC_Z, ALGR_T(KC_X), KC_C, KC_D, KC_V, KC_M, KC_H, KC_COMM, ALGR_T(KC_DOT), KC_SLSH,
+ LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_C, KC_D, KC_V, KC_M, KC_H, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH),
U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP
#elif defined MIRYOKU_ALPHAS_DVORAK
KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L,
LGUI_T(KC_A), LALT_T(KC_O), LCTL_T(KC_E), LSFT_T(KC_U), KC_I, KC_D, LSFT_T(KC_H), LCTL_T(KC_T), LALT_T(KC_N), LGUI_T(KC_S),
- KC_SLSH, ALGR_T(KC_Q), KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, ALGR_T(KC_V), KC_Z,
+ LT(BUTTON, KC_SLSH), ALGR_T(KC_Q), KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, ALGR_T(KC_V), LT(BUTTON, KC_Z),
U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP
#elif defined MIRYOKU_ALPHAS_HALMAK
KC_W, KC_L, KC_R, KC_B, KC_Z, KC_QUOT, KC_Q, KC_U, KC_D, KC_J,
LGUI_T(KC_S), LALT_T(KC_H), LCTL_T(KC_N), LSFT_T(KC_T), KC_COMM, KC_DOT, LSFT_T(KC_A), LCTL_T(KC_E), LALT_T(KC_O), LGUI_T(KC_I),
- KC_F, ALGR_T(KC_M), KC_V, KC_C, KC_SLSH, KC_G, KC_P, KC_X, ALGR_T(KC_K), KC_Y,
+ LT(BUTTON, KC_F), ALGR_T(KC_M), KC_V, KC_C, KC_SLSH, KC_G, KC_P, KC_X, ALGR_T(KC_K), LT(BUTTON, KC_Y),
U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP
#elif defined MIRYOKU_ALPHAS_WORKMAN
KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_QUOT,
LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_H), LSFT_T(KC_T), KC_G, KC_Y, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_O), LGUI_T(KC_I),
- KC_Z, ALGR_T(KC_X), KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, ALGR_T(KC_DOT), KC_SLSH,
+ LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH),
U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP
#elif defined MIRYOKU_ALPHAS_QWERTY
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F), KC_G, KC_H, LSFT_T(KC_J), LCTL_T(KC_K), LALT_T(KC_L), LGUI_T(KC_QUOT),
- KC_Z, ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, ALGR_T(KC_DOT), KC_SLSH,
+ LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH),
+ U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP
+ #elif defined MIRYOKU_ALPHAS_QWERTZ
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Z, KC_U, KC_I, KC_O, KC_P,
+ LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F), KC_G, KC_H, LSFT_T(KC_J), LCTL_T(KC_K), LALT_T(KC_L), LGUI_T(KC_QUOT),
+ LT(BUTTON, KC_Y), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH),
U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP
#else
KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT,
LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_G, KC_M, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O),
- KC_Z, ALGR_T(KC_X), KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, ALGR_T(KC_DOT), KC_SLSH,
+ LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH),
U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP
#endif
),
@@ -188,12 +201,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
U_NP, U_NP, U_NA, U_NA, U_NA, KC_MSTP, KC_MPLY, KC_MUTE, U_NP, U_NP
),
#endif
- [MBO] = LAYOUT_miryoku(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, KC_TRNS, KC_TRNS, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI,
- U_RDO, U_PST, U_CPY, U_CUT, U_UND, U_RDO, U_PST, U_CPY, U_CUT, U_UND,
- U_NP, U_NP, KC_BTN2, KC_BTN3, KC_BTN1, KC_BTN1, KC_BTN3, KC_BTN2, U_NP, U_NP
- ),
[NUM] = LAYOUT_miryoku(
KC_LBRC, KC_7, KC_8, KC_9, KC_RBRC, U_NA, U_NA, U_NA, U_NA, RESET,
KC_SCLN, KC_4, KC_5, KC_6, KC_EQL, U_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI,
@@ -211,6 +218,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_F11, KC_F4, KC_F5, KC_F6, KC_SLCK, U_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI,
KC_F10, KC_F1, KC_F2, KC_F3, KC_PAUS, U_NA, U_NA, U_NA, KC_ALGR, U_NA,
U_NP, U_NP, KC_APP, KC_SPC, KC_TAB, U_NA, U_NA, U_NA, U_NP, U_NP
- )
+ ),
#endif
+ [BUTTON] = LAYOUT_miryoku(
+ U_UND, U_CUT, U_CPY, U_PST, U_RDO, U_RDO, U_PST, U_CPY, U_CUT, U_UND,
+ KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, KC_TRNS, KC_TRNS, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI,
+ U_UND, U_CUT, U_CPY, U_PST, U_RDO, U_RDO, U_PST, U_CPY, U_CUT, U_UND,
+ U_NP, U_NP, KC_BTN2, KC_BTN3, KC_BTN1, KC_BTN1, KC_BTN3, KC_BTN2, U_NP, U_NP
+ )
};
diff --git a/users/manna-harbour_miryoku/manna-harbour_miryoku.h b/users/manna-harbour_miryoku/manna-harbour_miryoku.h
index 4d62c1707961..1d14f617105d 100644
--- a/users/manna-harbour_miryoku/manna-harbour_miryoku.h
+++ b/users/manna-harbour_miryoku/manna-harbour_miryoku.h
@@ -1,6 +1,6 @@
// Copyright 2019 Manna Harbour
// https://github.com/manna-harbour/miryoku
-// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*-
+// generated -*- buffer-read-only: t -*-
// 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 .
@@ -12,7 +12,7 @@
#define U_NA KC_NO // present but not available for use
#define U_NU KC_NO // available but not used
-enum layers { BASE, MBO, MEDIA, NAV, MOUSE, SYM, NUM, FUN };
+enum layers { BASE, BUTTON, MEDIA, NAV, MOUSE, SYM, NUM, FUN };
#if defined MIRYOKU_CLIPBOARD_FUN
#define U_RDO KC_AGIN
diff --git a/users/manna-harbour_miryoku/miryoku.org b/users/manna-harbour_miryoku/readme.org
similarity index 79%
rename from users/manna-harbour_miryoku/miryoku.org
rename to users/manna-harbour_miryoku/readme.org
index 2f6b1d5a88e2..b904738a6762 100644
--- a/users/manna-harbour_miryoku/miryoku.org
+++ b/users/manna-harbour_miryoku/readme.org
@@ -1,100 +1,41 @@
# After making changes to code or tables call org-babel-tangle (C-c C-v t).
-#+Title: Miryoku [[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/logos/miryoku-roa-32.png]]
+* Miryoku QMK [[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/logos/miryoku-roa-32.png]]
[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/cover/miryoku-kle-cover.png]]
-Miryoku is an ergonomic, minimal, orthogonal layout for ergo or ortho keyboards,
-implemented as part of the QMK firmware.
+[[https://github.com/manna-harbour/miryoku/][Miryoku]] is an ergonomic, minimal, orthogonal, and universal keyboard layout. This is the Miryoku implementation for [[https://qmk.fm][QMK]].
-The layout is maintained in emacs org-mode tables and converted to QMK keymap
-data structures using embedded python scripts. It is mapped onto keyboards with
-different physical layouts as a subset without code duplication using the QMK
-userspace feature and C macros.
+** Branches
+
+
+*** QMK master
+
+Miryoku QMK is periodically merged upstream into QMK master and it is generally recommended to build directly from QMK master.
+
+QMK master is at https://github.com/qmk/qmk_firmware/tree/master, and the corresponding Miryoku QMK readme is at https://github.com/qmk/qmk_firmware/tree/master/users/manna-harbour_miryoku.
+
+
+*** Miryoku QMK development branch
+
+The Miryoku QMK development branch is ~miryoku~ and may contain new commits not yet merged into QMK master.
-Please see the [[https://github.com/manna-harbour/qmk_firmware/blob/miryoku/users/manna-harbour_miryoku/miryoku.org][development branch]] for any [[https://github.com/qmk/qmk_firmware/compare/master...manna-harbour:miryoku][updates not yet merged into QMK]].
+~miryoku~ is at https://github.com/manna-harbour/miryoku_qmk/tree/miryoku, and the corresponding Miryoku QMK readme is at https://github.com/manna-harbour/miryoku_qmk/tree/miryoku/users/manna-harbour_miryoku.
-To checkout the development branch in your existing QMK build environment:
+New commits can be seen at the top of the [[https://github.com/manna-harbour/miryoku_qmk/commits/miryoku][history]] with commit messages beginning ~[miryoku]~. After the new commits are squashed and merged upstream into QMK master by pull request the ~miryoku~ branch is renamed and a new ~miryoku~ branch is created from QMK master.
+
+To checkout the ~miryoku~ branch in your existing QMK build environment:
#+BEGIN_SRC sh :tangle no
-git remote add manna-harbour git@github.com:manna-harbour/qmk_firmware.git # ssh
-git remote add manna-harbour https://github.com/manna-harbour/qmk_firmware.git # https
-git fetch manna-harbour
-git checkout --track manna-harbour/miryoku
-#+END_SRC
-
-Additional implementations and visualisations are provided outside QMK in the
-[[https://github.com/manna-harbour/miryoku/blob/master/README.org][Miryoku (Extras) repository]].
-
-
-* Contents :TOC_3:
-- [[#layout][Layout]]
- - [[#general-principles][General Principles]]
- - [[#details][Details]]
- - [[#layers][Layers]]
- - [[#base][Base]]
- - [[#nav][Nav]]
- - [[#mouse][Mouse]]
- - [[#mouse-buttons-overlay][Mouse Buttons Overlay]]
- - [[#media][Media]]
- - [[#num][Num]]
- - [[#sym][Sym]]
- - [[#fun][Fun]]
- - [[#alternative-layouts][Alternative Layouts]]
-- [[#code-generation][Code Generation]]
- - [[#table-conversion-scripts][Table Conversion Scripts]]
- - [[#table-layout-taphold][table-layout-taphold]]
- - [[#table-layout-half][table-layout-half]]
- - [[#table-layout-full][table-layout-full]]
- - [[#table-enums][table-enums]]
- - [[#table-keycode-mappings][table-keycode-mappings]]
- - [[#data][Data]]
- - [[#symbol-names][symbol-names]]
- - [[#mods][mods]]
- - [[#nonkc][nonkc]]
- - [[#header][header]]
- - [[#license-qmk][license-qmk]]
-- [[#subset-mapping][Subset Mapping]]
- - [[#userspace][Userspace]]
- - [[#usersmanna-harbour_miryokurulesmk][users/manna-harbour_miryoku/rules.mk]]
- - [[#usersmanna-harbour_miryokuconfigh][users/manna-harbour_miryoku/config.h]]
- - [[#usersmanna-harbour_miryokumanna-harbour_miryokuh][users/manna-harbour_miryoku/manna-harbour_miryoku.h]]
- - [[#usersmanna-harbour_miryokumanna-harbour_miryokuc][users/manna-harbour_miryoku/manna-harbour_miryoku.c]]
- - [[#layouts][Layouts]]
- - [[#60_ansi][60_ansi]]
- - [[#ergodox][ergodox]]
- - [[#ortho_4x10][ortho_4x10]]
- - [[#ortho_4x12][ortho_4x12]]
- - [[#ortho_5x12][ortho_5x12]]
- - [[#ortho_5x15][ortho_5x15]]
- - [[#planck_mit][planck_mit]]
- - [[#split_3x5_3][split_3x5_3]]
- - [[#split_3x6_3][split_3x6_3]]
- - [[#keyboards][Keyboards]]
- - [[#atreus][atreus]]
- - [[#ergotravel][ergotravel]]
- - [[#for_science][for_science]]
- - [[#gergo][gergo]]
- - [[#handwireddactyl_manuform4x5][handwired/dactyl_manuform/4x5]]
- - [[#handwireddactyl_manuform5x6][handwired/dactyl_manuform/5x6]]
- - [[#keebioiris][keebio/iris]]
- - [[#keyboardioatreus][keyboardio/atreus]]
- - [[#kyria][kyria]]
- - [[#lily58][lily58]]
- - [[#moonlander][moonlander]]
- - [[#redox_w][redox_w]]
- - [[#sofle][sofle]]
- - [[#torn][torn]]
- - [[#customisation][Customisation]]
- - [[#examples][Examples]]
-- [[#experimental-features][Experimental Features]]
- - [[#bilateral-combinations][Bilateral Combinations]]
- - [[#retro-shift][Retro Shift]]
-- [[#documentation][Documentation]]
-- [[#contact][Contact]]
-
-* Layout
-
-** General Principles
+git remote add miryoku_qmk git@github.com:manna-harbour/miryoku_qmk.git # if using SSH
+git remote add miryoku_qmk https://github.com/manna-harbour/miryoku_qmk.git # if using HTTPS
+git fetch miryoku_qmk
+git checkout --track miryoku_qmk/miryoku
+#+END_SRC
+
+
+** Layout
+
+*** General Principles
- Use layers instead of reaching.
- Use both hands instead of contortions.
@@ -103,7 +44,7 @@ Additional implementations and visualisations are provided outside QMK in the
- Avoid unnecessary complication.
-** Details
+*** Details
- 5 columns, 3 rows, 3 thumb keys, 2 hands.
- Can be used on almost any split or non-split ergo or ortho keyboard.
@@ -133,7 +74,7 @@ Additional implementations and visualisations are provided outside QMK in the
- Auto Shift for numbers and symbols.
-** Layers
+*** Layers
[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/layers/miryoku-kle-reference.png]]
@@ -153,7 +94,7 @@ Mods (and reset) will be available on sub layers on the same hand as the layer
change thumb key. Unknown names are considered to be layer names.
-*** Base
+**** Base
[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/layers/miryoku-kle-base.png]]
@@ -164,10 +105,10 @@ backspace, enter, delete on the right and space, tab, escape on the left.
Alternative alpha arrangements are also available.
-**** Tap
+***** Tap
-***** Alphas
+****** Alphas
#+NAME: colemakdh
| Q | W | F | P | B | J | L | U | Y | ' |
@@ -175,22 +116,22 @@ Alternative alpha arrangements are also available.
| Z | X | C | D | V | K | H | , | DOT | / |
-***** Thumbs
+****** Thumbs
#+NAME: thumbs
| U_NP | U_NP | ESC | SPC | TAB | ENT | BSPC | DEL | U_NP | U_NP |
-**** Hold
+***** Hold
#+NAME: hold
-| RESET | | | | | | | | | RESET |
-| LGUI | LALT | LCTL | LSFT | | | LSFT | LCTL | LALT | LGUI |
-| | ALGR | | | | | | | ALGR | |
-| U_NP | U_NP | MEDIA | NAV | MOUSE | SYM | NUM | FUN | U_NP | U_NP |
+| RESET | | | | | | | | | RESET |
+| LGUI | LALT | LCTL | LSFT | | | LSFT | LCTL | LALT | LGUI |
+| BUTTON | ALGR | | | | | | | ALGR | BUTTON |
+| U_NP | U_NP | MEDIA | NAV | MOUSE | SYM | NUM | FUN | U_NP | U_NP |
-*** Nav
+**** Nav
[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/layers/miryoku-kle-nav.png]]
@@ -209,7 +150,7 @@ available.
| ENT | BSPC | DEL | U_NP | U_NP |
-*** Mouse
+**** Mouse
[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/layers/miryoku-kle-mouse.png]]
@@ -226,19 +167,24 @@ layer.
| BTN1 | BTN3 | BTN2 | U_NP | U_NP |
-*** Mouse Buttons Overlay
+**** Button
-Available for automatic activation depending on keyboard hardware and
-configuration. Not activated manually.
+[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/layers/miryoku-kle-button.png]]
-#+NAME: mbo
-| U_RDO | U_PST | U_CPY | U_CUT | U_UND | U_RDO | U_PST | U_CPY | U_CUT | U_UND |
+Provides mouse buttons, mods, and clipboard keys for use with integrated or
+external pointing devices, used with either hand. The layer is available for
+automatic activation depending on hardware and configuration. It can also be
+activated manually by holding a bottom row pinkie key (however GUI and Undo will
+be unavailable).
+
+#+NAME: button
+| U_UND | U_CUT | U_CPY | U_PST | U_RDO | U_RDO | U_PST | U_CPY | U_CUT | U_UND |
| LGUI | LALT | LCTL | LSFT | | | LSFT | LCTL | LALT | LGUI |
-| | | | | | | | | | |
+| U_UND | U_CUT | U_CPY | U_PST | U_RDO | U_RDO | U_PST | U_CPY | U_CUT | U_UND |
| U_NP | U_NP | BTN2 | BTN3 | BTN1 | BTN1 | BTN3 | BTN2 | U_NP | U_NP |
-*** Media
+**** Media
[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/layers/miryoku-kle-media.png]]
@@ -254,7 +200,7 @@ available for other related functions.
| MSTP | MPLY | MUTE | U_NP | U_NP |
-*** Num
+**** Num
[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/layers/miryoku-kle-num.png]]
@@ -269,7 +215,7 @@ Dot is duplicated from the base layer.
| U_NP | U_NP | DOT | 0 | MINS |
-*** Sym
+**** Sym
[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/layers/miryoku-kle-sym.png]]
@@ -284,7 +230,7 @@ next to close parenthesis.
| U_NP | U_NP | ( | ) | _ |
-*** Fun
+**** Fun
[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/layers/miryoku-kle-fun.png]]
@@ -301,19 +247,29 @@ the base layer to enable auto-repeat.
| U_NP | U_NP | APP | SPC | TAB |
-*** Alternative Layouts
+**** Alternative Layouts
The defaults are recommended, but alternative layouts are provided to
accommodate existing muscle memory and platform differences.
-**** Alphas
+***** Alphas
To select, append the corresponding option to the ~make~ command line when
building, e.g. ~MIRYOKU_ALPHAS=QWERTY~.
-***** Colemak
+****** AZERTY
+
+~MIRYOKU_ALPHAS=AZERTY~
+
+#+NAME: azerty
+| A | Z | E | R | T | Y | U | I | O | P |
+| Q | S | D | F | G | H | J | K | L | M |
+| W | X | C | V | B | N | , | DOT | / | ' |
+
+
+****** Colemak
~MIRYOKU_ALPHAS=COLEMAK~
@@ -323,7 +279,7 @@ building, e.g. ~MIRYOKU_ALPHAS=QWERTY~.
| Z | X | C | V | B | K | M | , | DOT | / |
-***** Colemak Mod-DHk
+****** Colemak Mod-DHk
~MIRYOKU_ALPHAS=COLEMAKDHK~
@@ -333,7 +289,7 @@ building, e.g. ~MIRYOKU_ALPHAS=QWERTY~.
| Z | X | C | D | V | M | H | , | DOT | / |
-***** Dvorak
+****** Dvorak
~MIRYOKU_ALPHAS=DVORAK~
@@ -343,7 +299,7 @@ building, e.g. ~MIRYOKU_ALPHAS=QWERTY~.
| / | Q | J | K | X | B | M | W | V | Z |
-***** Halmak
+****** Halmak
~MIRYOKU_ALPHAS=HALMAK~
@@ -353,7 +309,7 @@ building, e.g. ~MIRYOKU_ALPHAS=QWERTY~.
| F | M | V | C | / | G | P | X | K | Y |
-***** Workman
+****** Workman
~MIRYOKU_ALPHAS=WORKMAN~
@@ -363,7 +319,7 @@ building, e.g. ~MIRYOKU_ALPHAS=QWERTY~.
| Z | X | M | C | V | K | L | , | DOT | / |
-***** QWERTY
+****** QWERTY
~MIRYOKU_ALPHAS=QWERTY~
@@ -373,16 +329,26 @@ building, e.g. ~MIRYOKU_ALPHAS=QWERTY~.
| Z | X | C | V | B | N | M | , | DOT | / |
-**** Nav
+****** QWERTZ
+
+~MIRYOKU_ALPHAS=QWERTZ~
+
+#+NAME: qwertz
+| Q | W | E | R | T | Z | U | I | O | P |
+| A | S | D | F | G | H | J | K | L | ' |
+| Y | X | C | V | B | N | M | , | DOT | / |
-***** vi-Style
+***** Nav
+
+
+****** vi-Style
To select, append ~MIRYOKU_NAV=VI~ to the ~make~ command line when building.
Not available with ~MIRYOKU_LAYERS=FLIP~.
-****** Nav
+******* Nav
#+NAME: nav-r-vi
| U_RDO | U_PST | U_CPY | U_CUT | U_UND |
@@ -391,7 +357,7 @@ Not available with ~MIRYOKU_LAYERS=FLIP~.
| ENT | BSPC | DEL | U_NP | U_NP |
-****** Mouse
+******* Mouse
#+NAME: mouse-r-vi
| U_RDO | U_PST | U_CPY | U_CUT | U_UND |
@@ -400,7 +366,7 @@ Not available with ~MIRYOKU_LAYERS=FLIP~.
| BTN1 | BTN3 | BTN2 | U_NP | U_NP |
-****** Media
+******* Media
#+NAME: media-r-vi
| RGB_TOG | RGB_MOD | RGB_HUI | RGB_SAI | RGB_VAI |
@@ -409,7 +375,7 @@ Not available with ~MIRYOKU_LAYERS=FLIP~.
| MSTP | MPLY | MUTE | U_NP | U_NP |
-***** Inverted-T
+****** Inverted-T
[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/layers/miryoku-kle-reference-flip-invertedt.png]]
@@ -417,7 +383,7 @@ To select, append ~MIRYOKU_NAV=INVERTEDT~ to the ~make~ command line when
building. Only available with ~MIRYOKU_LAYERS=FLIP~.
-****** Nav
+******* Nav
#+NAME: nav-l-invertedt
| PGUP | HOME | UP | END | INS |
@@ -426,7 +392,7 @@ building. Only available with ~MIRYOKU_LAYERS=FLIP~.
| U_NP | U_NP | DEL | BSPC | ENT |
-****** Mouse
+******* Mouse
#+NAME: mouse-l-invertedt
| WH_U | WH_L | MS_U | WH_R | |
@@ -435,7 +401,7 @@ building. Only available with ~MIRYOKU_LAYERS=FLIP~.
| U_NP | U_NP | BTN2 | BTN3 | BTN1 |
-****** Media
+******* Media
#+NAME: media-l-invertedt
| | | VOLU | | |
@@ -444,7 +410,7 @@ building. Only available with ~MIRYOKU_LAYERS=FLIP~.
| U_NP | U_NP | MUTE | MPLY | MSTP |
-**** Clipboard
+***** Clipboard
Keycodes are translated according to the following tables.
@@ -457,7 +423,7 @@ To select, append the corresponding option to the ~make~ command line when
building, e.g. ~MIRYOKU_CLIPBOARD=WIN~.
-***** Default
+****** Default
#+NAME: clipboard
| U_RDO | AGIN |
@@ -467,7 +433,7 @@ building, e.g. ~MIRYOKU_CLIPBOARD=WIN~.
| U_UND | UNDO |
-***** Fun Cluster
+****** Fun Cluster
~MIRYOKU_CLIPBOARD=FUN~
@@ -479,7 +445,7 @@ building, e.g. ~MIRYOKU_CLIPBOARD=WIN~.
| U_UND | UNDO |
-***** Mac
+****** Mac
~MIRYOKU_CLIPBOARD=MAC~
@@ -491,7 +457,7 @@ building, e.g. ~MIRYOKU_CLIPBOARD=WIN~.
| U_UND | LCMD(KC_Z) |
-***** Windows
+****** Windows
~MIRYOKU_CLIPBOARD=WIN~
@@ -503,32 +469,32 @@ building, e.g. ~MIRYOKU_CLIPBOARD=WIN~.
| U_UND | C(KC_Z) |
-**** Layers
+***** Layers
-***** Flip
+****** Flip
Flip base layer thumb keys and sub layers between right and left hands.
To select, append ~MIRYOKU_LAYERS=FLIP~ to the ~make~ command line when building.
-****** Thumbs
+******* Thumbs
#+NAME: thumbs-flip
| U_NP | U_NP | DEL | BSPC | ENT | TAB | SPC | ESC | U_NP | U_NP |
-****** Hold
+******* Hold
#+NAME: hold-flip
-| RESET | | | | | | | | | RESET |
-| LGUI | LALT | LCTL | LSFT | | | LSFT | LCTL | LALT | LGUI |
-| | ALGR | | | | | | | ALGR | |
-| U_NP | U_NP | FUN | NUM | SYM | MOUSE | NAV | MEDIA | U_NP | U_NP |
+| RESET | | | | | | | | | RESET |
+| LGUI | LALT | LCTL | LSFT | | | LSFT | LCTL | LALT | LGUI |
+| BUTTON | ALGR | | | | | | | ALGR | BUTTON |
+| U_NP | U_NP | FUN | NUM | SYM | MOUSE | NAV | MEDIA | U_NP | U_NP |
-****** Nav
+******* Nav
#+NAME: nav-l
| HOME | PGDN | PGUP | END | INS |
@@ -537,7 +503,7 @@ To select, append ~MIRYOKU_LAYERS=FLIP~ to the ~make~ command line when building
| U_NP | U_NP | DEL | BSPC | ENT |
-****** Mouse
+******* Mouse
#+NAME: mouse-l
| WH_L | WH_D | WH_U | WH_R | |
@@ -546,16 +512,7 @@ To select, append ~MIRYOKU_LAYERS=FLIP~ to the ~make~ command line when building
| U_NP | U_NP | BTN2 | BTN3 | BTN1 |
-****** Mouse Buttons Overlay
-
-#+NAME: mbo-flip
-| | | | | | | | | | |
-| LGUI | LALT | LCTL | LSFT | | | LSFT | LCTL | LALT | LGUI |
-| U_RDO | U_PST | U_CPY | U_CUT | U_UND | U_RDO | U_PST | U_CPY | U_CUT | U_UND |
-| U_NP | U_NP | BTN2 | BTN3 | BTN1 | BTN1 | BTN3 | BTN2 | U_NP | U_NP |
-
-
-****** Media
+******* Media
#+NAME: media-l
| RGB_MOD | RGB_HUI | RGB_SAI | RGB_VAI | RGB_TOG |
@@ -564,7 +521,7 @@ To select, append ~MIRYOKU_LAYERS=FLIP~ to the ~make~ command line when building
| U_NP | U_NP | MUTE | MPLY | MSTP |
-****** Num
+******* Num
#+NAME: num-r
| [ | 7 | 8 | 9 | ] |
@@ -573,7 +530,7 @@ To select, append ~MIRYOKU_LAYERS=FLIP~ to the ~make~ command line when building
| MINS | 0 | DOT | U_NP | U_NP |
-****** Sym
+******* Sym
#+NAME: sym-r
| { | & | * | ( | } |
@@ -582,7 +539,7 @@ To select, append ~MIRYOKU_LAYERS=FLIP~ to the ~make~ command line when building
| _ | ( | ) | U_NP | U_NP |
-****** Fun
+******* Fun
#+NAME: fun-r
| PSCR | F7 | F8 | F9 | F12 |
@@ -591,7 +548,7 @@ To select, append ~MIRYOKU_LAYERS=FLIP~ to the ~make~ command line when building
| TAB | SPC | APP | U_NP | U_NP |
-*** COMMENT Templates
+**** COMMENT Templates
#+NAME: tem
| | | | | | | | | | |
@@ -621,13 +578,16 @@ Duplicate base layer tap keys on thumbs rather than trans to enable auto-repeat.
| U_NP | U_NP | ESC | SPC | TAB |
-* Code Generation
+** Code Generation
+
+The layout is maintained in emacs org-mode tables and converted to QMK keymap
+data structures using embedded python scripts.
-** Table Conversion Scripts
+*** Table Conversion Scripts
-*** table-layout-taphold
+**** table-layout-taphold
Produce base layer from separate tap and hold tables.
@@ -669,7 +629,7 @@ return results
: U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP
-*** table-layout-half
+**** table-layout-half
Produce sub layers given layer name and corresponding table for single hand and
incorporating mods and reset from base layer. Layer names must end with 'R' or
@@ -726,12 +686,12 @@ return results
: U_NP, U_NP, U_NA, U_NA, U_NA, KC_ENT, KC_BSPC, KC_DEL, U_NP, U_NP
-*** table-layout-full
+**** table-layout-full
Produce full layer from single table. Fill for unused keys is configurable.
#+NAME: table-layout-full
-#+BEGIN_SRC python :var table=mbo :var fill="TRNS" :var symbol_names_table=symbol-names :var nonkc_table=nonkc :tangle no :results verbatim
+#+BEGIN_SRC python :var table=button :var fill="TRNS" :var symbol_names_table=symbol-names :var nonkc_table=nonkc :tangle no :results verbatim
width = 9
symbol_names_dict = {}
nonkc_tuple = tuple(nonkc_table[0])
@@ -757,33 +717,33 @@ return results
#+END_SRC
#+RESULTS: table-layout-full
-: U_RDO, U_PST, U_CPY, U_CUT, U_UND, U_RDO, U_PST, U_CPY, U_CUT, U_UND,
+: U_UND, U_CUT, U_CPY, U_PST, U_RDO, U_RDO, U_PST, U_CPY, U_CUT, U_UND,
: KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, KC_TRNS, KC_TRNS, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI,
-: KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+: U_UND, U_CUT, U_CPY, U_PST, U_RDO, U_RDO, U_PST, U_CPY, U_CUT, U_UND,
: U_NP, U_NP, KC_BTN2, KC_BTN3, KC_BTN1, KC_BTN1, KC_BTN3, KC_BTN2, U_NP, U_NP
-*** table-enums
+**** table-enums
Produce layer enums from layer names in hold table.
#+NAME: table-enums
#+BEGIN_SRC python :var hold_table=hold :var mods_table=mods :tangle no
mods_dict = dict.fromkeys(mods_table[0])
-results = 'enum layers { BASE, MBO, '
+layers = [ 'BASE', 'BUTTON' ]
for hold_row in hold_table:
for hold in hold_row:
- if hold not in mods_dict and hold != '' and hold != 'U_NP' and hold != 'RESET':
- results += hold + ', '
-results = results.rstrip(', ') + ' };'
+ if hold not in mods_dict and hold != '' and hold != 'U_NP' and hold != 'RESET' and hold not in layers:
+ layers.append(hold)
+results = 'enum layers { ' + ', '.join(layers) + ' };'
return results
#+END_SRC
#+RESULTS: table-enums
-: enum layers { BASE, MBO, MEDIA, NAV, MOUSE, SYM, NUM, FUN };
+: enum layers { BASE, BUTTON, MEDIA, NAV, MOUSE, SYM, NUM, FUN };
-*** table-keycode-mappings
+**** table-keycode-mappings
Produce keycode mappings according to the provided table.
@@ -816,7 +776,7 @@ return results
: #define U_UND KC_UNDO
-*** COMMENT python-version
+**** COMMENT python-version
C-c C-c in code block to update
@@ -831,10 +791,10 @@ return sys.version
: [GCC 5.4.0 20160609]
-** Data
+*** Data
-*** symbol-names
+**** symbol-names
Symbol, name, and shifted symbol mappings for use in tables.
@@ -862,7 +822,7 @@ Symbol, name, and shifted symbol mappings for use in tables.
| 0 | 0 | ) | RPRN |
-*** mods
+**** mods
Modifiers usable in hold table. Need to have the same name for ~KC_~ and ~_T~
versions.
@@ -871,7 +831,7 @@ versions.
| LSFT | LCTL | LALT | LGUI | ALGR |
-*** nonkc
+**** nonkc
Keycodes that match any of these prefixes will not have ~KC_~ automatically
prepended.
@@ -880,7 +840,7 @@ prepended.
| U_ | RGB_ | RESET | S( | C( | SCMD( | LCMD( |
-*** header
+**** header
Header for tangled files.
@@ -888,11 +848,11 @@ Header for tangled files.
#+BEGIN_SRC C :main no :tangle no
Copyright 2019 Manna Harbour
https://github.com/manna-harbour/miryoku
-generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*-
+generated -*- buffer-read-only: t -*-
#+END_SRC
-*** license-qmk
+**** license-qmk
License for tangled QMK C source files.
@@ -902,20 +862,21 @@ License for tangled QMK C source files.
#+END_SRC
-* Subset Mapping
+** Subset Mapping
The keymap, build options, and configuration are shared between keyboards. The
-layout is mapped onto keyboards with different physical layouts as a subset.
+layout is mapped onto keyboards with different physical layouts as a subset
+without code duplication using the QMK userspace feature and C macros.
-** Userspace
+*** Userspace
The keymap is defined for ~LAYOUT_miryoku~ which is 10x4, with the outer 2
positions on the bottom row unused and the rest of the bottom row being the
thumb keys.
-*** [[./rules.mk][users/manna-harbour_miryoku/rules.mk]]
+**** [[./rules.mk][users/manna-harbour_miryoku/rules.mk]]
Build options. Automatically included.
@@ -957,7 +918,7 @@ endif
#+END_SRC
-*** [[./config.h][users/manna-harbour_miryoku/config.h]]
+**** [[./config.h][users/manna-harbour_miryoku/config.h]]
Config options. Automatically included.
@@ -1000,7 +961,7 @@ Config options. Automatically included.
#+END_SRC
-*** [[./manna-harbour_miryoku.h][users/manna-harbour_miryoku/manna-harbour_miryoku.h]]
+**** [[./manna-harbour_miryoku.h][users/manna-harbour_miryoku/manna-harbour_miryoku.h]]
Keymap-related definitions. Included from ~manna-harbour_miryoku.c~. Can be
included from keymap or layout ~keymap.c~ if needed.
@@ -1034,7 +995,7 @@ included from keymap or layout ~keymap.c~ if needed.
#+END_SRC
-*** [[./manna-harbour_miryoku.c][users/manna-harbour_miryoku/manna-harbour_miryoku.c]]
+**** [[./manna-harbour_miryoku.c][users/manna-harbour_miryoku/manna-harbour_miryoku.c]]
Contains the keymap. Added from ~rules.mk~.
@@ -1048,7 +1009,9 @@ Contains the keymap. Added from ~rules.mk~.
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
#if defined MIRYOKU_LAYERS_FLIP
[BASE] = LAYOUT_miryoku(
- #if defined MIRYOKU_ALPHAS_COLEMAK
+ #if defined MIRYOKU_ALPHAS_AZERTY
+<>
+ #elif defined MIRYOKU_ALPHAS_COLEMAK
<>
#elif defined MIRYOKU_ALPHAS_COLEMAKDHK
<>
@@ -1060,6 +1023,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
<>
#elif defined MIRYOKU_ALPHAS_QWERTY
<>
+ #elif defined MIRYOKU_ALPHAS_QWERTZ
+<>
#else
<>
#endif
@@ -1085,9 +1050,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
<>
),
#endif
- [MBO] = LAYOUT_miryoku(
-<>
- ),
[NUM] = LAYOUT_miryoku(
<>
),
@@ -1096,11 +1058,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[FUN] = LAYOUT_miryoku(
<>
- )
-,
+ ),
#else
[BASE] = LAYOUT_miryoku(
- #if defined MIRYOKU_ALPHAS_COLEMAK
+ #if defined MIRYOKU_ALPHAS_AZERTY
+<>
+ #elif defined MIRYOKU_ALPHAS_COLEMAK
<>
#elif defined MIRYOKU_ALPHAS_COLEMAKDHK
<>
@@ -1112,6 +1075,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
<>
#elif defined MIRYOKU_ALPHAS_QWERTY
<>
+ #elif defined MIRYOKU_ALPHAS_QWERTZ
+<>
#else
<>
#endif
@@ -1137,9 +1102,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
<>
),
#endif
- [MBO] = LAYOUT_miryoku(
-<>
- ),
[NUM] = LAYOUT_miryoku(
<>
),
@@ -1148,13 +1110,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[FUN] = LAYOUT_miryoku(
<>
- )
+ ),
#endif
+ [BUTTON] = LAYOUT_miryoku(
+<>
+ )
};
#+END_SRC
-** Layouts
+*** Layouts
To use the keymap on a keyboard supporting the layouts feature, ~LAYOUT_miryoku~
is defined as a macro mapping onto the layout's own ~LAYOUT~ macro, leaving the
@@ -1170,7 +1135,7 @@ make planck/rev6:manna-harbour_miryoku:flash FORCE_LAYOUT=ortho_4x12 # ortho_4x1
#+END_SRC
-*** 60_ansi
+**** 60_ansi
An angled ortho split layout is mapped onto the row-staggered keyboard. The
rows are moved up to better position the thumb keys, the hands are separated as
@@ -1185,6 +1150,11 @@ command line when building.
[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-60_ansi-noreverseangle.png]]
+Another alternative subset mapping is provided mapping only the 3x10 alphas,
+plus spacebar for space / Nav, with the remainder being the default 60_ansi
+keymap with semicolon in place of quote. To select this mapping, append
+~MIRYOKU_MAPPING=LITE~ to the ~make~ command line when building.
+
Keyboards supporting this layout: alps64, amj60, bakeneko60, bm60poker, bm60rgb, do60, dp60, dz60, facew, gskt00, infinity60, jm60, kc60, kc60se, ok60, org60, paladin64, panc60, reviung61, smk60, v60_type_r, yd60mq, 1upkeyboards/1up60hse, 1upkeyboards/1up60rgb, 40percentclub/luddite, acheron/keebspcb, acheron/lasgweloth, ai03/polaris, akegata_denki/device_one, atxkb/1894, bioi/g60ble, bt66tech/bt66tech60, cannonkeys/an_c, cannonkeys/instant60, cannonkeys/practice60, clawsome/coupe, dm9records/tartan, duck/eagle_viper, evyd13/plain60, exclusive/e6_rgb, gh60/revc, gh60/satan, gh60/v1p3, handwired/xealousbrown, hineybush/h60, hs60/v1, keebio/wtf60, noxary/260, playkbtw/pk60, ryloo_studio/m0110, thevankeyboards/bananasplit, wilba_tech/zeal60, xd60/rev2, xd60/rev3, cannonkeys/db60/hotswap, cannonkeys/db60/j02, cannonkeys/db60/rev2, exclusive/e6v2/le, exclusive/e6v2/oe, foxlab/leaf60/universal, handwired/co60/rev1, handwired/co60/rev7, handwired/swiftrax/nodu, hs60/v2/ansi, inett_studio/sqx/universal, melgeek/mj61/rev1, melgeek/mj61/rev2, melgeek/mj63/rev1, melgeek/mj63/rev2, sentraq/s60_x/default, sentraq/s60_x/rgb.
Example build command lines:
@@ -1192,10 +1162,11 @@ Example build command lines:
#+BEGIN_SRC sh :tangle no
make dz60:manna-harbour_miryoku:flash # dz60
make dz60:manna-harbour_miryoku:flash MIRYOKU_MAPPING=NOREVERSEANGLE # dz60, without reverse column angle
+make dz60:manna-harbour_miryoku:flash MIRYOKU_MAPPING=LITE # dz60, with lite mapping
#+END_SRC
-**** [[../../layouts/community/60_ansi/manna-harbour_miryoku/config.h][layouts/community/60_ansi/manna-harbour_miryoku/config.h]]
+***** [[../../layouts/community/60_ansi/manna-harbour_miryoku/config.h][layouts/community/60_ansi/manna-harbour_miryoku/config.h]]
Contains subset mapping.
@@ -1209,7 +1180,7 @@ Contains subset mapping.
#define XXX KC_NO
#if defined MIRYOKU_MAPPING_NOREVERSEANGLE
-#define LAYOUT_miryoku(\
+ #define LAYOUT_miryoku(\
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19,\
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,\
@@ -1222,8 +1193,38 @@ K00, K01, K02, K03, K04, XXX, XXX, XXX, K05, K06, K07, K08, K09, XX
XXX, K32, K33, K34, XXX, XXX, XXX, XXX, K35, K36, K37, XXX,\
XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX\
)
+#elif defined MIRYOKU_MAPPING_LITE
+ #if defined MIRYOKU_LAYERS_FLIP
+ #define LAYOUT_miryoku( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \
+ N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \
+) \
+LAYOUT_60_ansi( \
+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_TAB, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, KC_LBRC, KC_RBRC, KC_BSLS, \
+KC_CAPS, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KC_SCLN, KC_ENT, \
+KC_LSFT, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, KC_RSFT, \
+KC_LCTL, KC_LGUI, KC_LALT, K36, KC_RALT, KC_RGUI, KC_APP, KC_RCTL \
+)
+ #else
+ #define LAYOUT_miryoku( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \
+ N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \
+) \
+LAYOUT_60_ansi( \
+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_TAB, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, KC_LBRC, KC_RBRC, KC_BSLS, \
+KC_CAPS, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KC_SCLN, KC_ENT, \
+KC_LSFT, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, KC_RSFT, \
+KC_LCTL, KC_LGUI, KC_LALT, K33, KC_RALT, KC_RGUI, KC_APP, KC_RCTL \
+)
+ #endif
#else
-#define LAYOUT_miryoku(\
+ #define LAYOUT_miryoku(\
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19,\
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,\
@@ -1240,7 +1241,7 @@ XXX, XXX, K00, K01, K02, K03, K04, XXX, K05, K06, K07, K08, K09, XX
#+END_SRC
-**** [[../../layouts/community/60_ansi/manna-harbour_miryoku/keymap.c][layouts/community/60_ansi/manna-harbour_miryoku/keymap.c]]
+***** [[../../layouts/community/60_ansi/manna-harbour_miryoku/keymap.c][layouts/community/60_ansi/manna-harbour_miryoku/keymap.c]]
Required by the build system.
@@ -1251,7 +1252,7 @@ Required by the build system.
#+END_SRC
-*** ergodox
+**** ergodox
For the ergodox layout, the main 5x3 alphas are used as usual. The primary and
secondary thumb keys are the inner and outer 2u thumb keys and the tertiary
@@ -1270,7 +1271,7 @@ make ergodox_ez:manna-harbour_miryoku:flash # ergodox_ez
#+END_SRC
-**** [[../../layouts/community/ergodox/manna-harbour_miryoku/config.h][layouts/community/ergodox/manna-harbour_miryoku/config.h]]
+***** [[../../layouts/community/ergodox/manna-harbour_miryoku/config.h][layouts/community/ergodox/manna-harbour_miryoku/config.h]]
Contains subset mapping.
@@ -1302,7 +1303,7 @@ XXX, XXX, XXX, XXX, K32, K37, XXX, XXX, XXX, XXX,\
#+END_SRC
-**** [[../../layouts/community/ergodox/manna-harbour_miryoku/keymap.c][layouts/community/ergodox/manna-harbour_miryoku/keymap.c]]
+***** [[../../layouts/community/ergodox/manna-harbour_miryoku/keymap.c][layouts/community/ergodox/manna-harbour_miryoku/keymap.c]]
Required by the build system.
@@ -1313,7 +1314,9 @@ Required by the build system.
#+END_SRC
-*** ortho_4x10
+**** ortho_4x10
+
+An alternative with 180 degree rotation is also provided to enable the USB cable to be relocated for use with laptops. To select this mapping, append ~MIRYOKU_MAPPING=ROTATE~ to the ~make~ command line when building.
Keyboards supporting this layout: newgame40, nimrod, marksard/rhymestone, pabile/p40.
@@ -1321,10 +1324,11 @@ Example build command lines:
#+BEGIN_SRC sh :tangle no
make marksard/rhymestone:manna-harbour_miryoku:flash # marksard/rhymestone
+make pabile/p40:manna-harbour_miryoku:flash MIRYOKU_MAPPING=ROTATE # pabile/p40, rotate
#+END_SRC
-**** [[../../layouts/community/ortho_4x10/manna-harbour_miryoku/config.h][layouts/community/ortho_4x10/manna-harbour_miryoku/config.h]]
+***** [[../../layouts/community/ortho_4x10/manna-harbour_miryoku/config.h][layouts/community/ortho_4x10/manna-harbour_miryoku/config.h]]
Contains subset mapping.
@@ -1335,22 +1339,39 @@ Contains subset mapping.
#pragma once
+#define XXX KC_NO
+
+#if defined MIRYOKU_MAPPING_ROTATE
+#define LAYOUT_miryoku( \
+K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \
+K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \
+K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \
+N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \
+) \
+LAYOUT_ortho_4x10( \
+XXX, XXX, K37, K36, K35, K34, K33, K32, XXX, XXX, \
+K29, K28, K27, K26, K25, K24, K23, K22, K21, K20, \
+K19, K18, K17, K16, K15, K14, K13, K12, K11, K10, \
+K09, K08, K07, K06, K05, K04, K03, K02, K01, K00 \
+)
+#else
#define LAYOUT_miryoku(\
-K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\
-K10, K11, K12, K13, K14, K15, K16, K17, K18, K19,\
-K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,\
-N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\
-)\
-LAYOUT_ortho_4x10(\
-K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\
-K10, K11, K12, K13, K14, K15, K16, K17, K18, K19,\
-K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,\
-KC_NO, KC_NO, K32, K33, K34, K35, K36, K37, KC_NO, KC_NO\
+K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \
+K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \
+K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \
+N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \
+) \
+LAYOUT_ortho_4x10( \
+K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \
+K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \
+K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \
+XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX \
)
+#endif
#+END_SRC
-**** [[../../layouts/community/ortho_4x10/manna-harbour_miryoku/keymap.c][layouts/community/ortho_4x10/manna-harbour_miryoku/keymap.c]]
+***** [[../../layouts/community/ortho_4x10/manna-harbour_miryoku/keymap.c][layouts/community/ortho_4x10/manna-harbour_miryoku/keymap.c]]
Required by the build system.
@@ -1361,7 +1382,7 @@ Required by the build system.
#+END_SRC
-*** ortho_4x12
+**** ortho_4x12
For the ortho_4x12 layout, the middle two columns, and the 2 keys on each end of
the bottom row are unused. This allows the hands to be positioned without ulnar
@@ -1398,7 +1419,7 @@ make keebio/levinson:manna-harbour_miryoku:flash MIRYOKU_MAPPING=EXTENDED_THUMBS
#+END_SRC
-**** [[../../layouts/community/ortho_4x12/manna-harbour_miryoku/config.h][layouts/community/ortho_4x12/manna-harbour_miryoku/config.h]]
+***** [[../../layouts/community/ortho_4x12/manna-harbour_miryoku/config.h][layouts/community/ortho_4x12/manna-harbour_miryoku/config.h]]
Contains subset mapping.
@@ -1452,7 +1473,7 @@ KC_NO, KC_NO, K32, K33, K34, KC_NO, KC_NO, K35, K36, K37, KC_NO, KC_
#+END_SRC
-**** [[../../layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c][layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c]]
+***** [[../../layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c][layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c]]
Required by the build system.
@@ -1463,7 +1484,7 @@ Required by the build system.
#+END_SRC
-*** ortho_5x12
+**** ortho_5x12
As per ortho_4x12 but the top row is unused.
@@ -1480,7 +1501,7 @@ make keebio/nyquist/rev3:manna-harbour_miryoku:flash MIRYOKU_MAPPING=EXTENDED_TH
#+END_SRC
-**** [[../../layouts/community/ortho_5x12/manna-harbour_miryoku/config.h][layouts/community/ortho_5x12/manna-harbour_miryoku/config.h]]
+***** [[../../layouts/community/ortho_5x12/manna-harbour_miryoku/config.h][layouts/community/ortho_5x12/manna-harbour_miryoku/config.h]]
Contains subset mapping.
@@ -1537,7 +1558,7 @@ KC_NO, KC_NO, K32, K33, K34, KC_NO, KC_NO, K35, K36, K37, KC_NO, KC_
#+END_SRC
-**** [[../../layouts/community/ortho_5x12/manna-harbour_miryoku/keymap.c][layouts/community/ortho_5x12/manna-harbour_miryoku/keymap.c]]
+***** [[../../layouts/community/ortho_5x12/manna-harbour_miryoku/keymap.c][layouts/community/ortho_5x12/manna-harbour_miryoku/keymap.c]]
Required by the build system.
@@ -1548,7 +1569,7 @@ Required by the build system.
#+END_SRC
-*** ortho_5x15
+**** ortho_5x15
For the ortho_5x15 layout, the top row, middle 5 columns, and the 2 keys on each
end of the bottom row are unused. This allows the hands to be positioned
@@ -1574,7 +1595,7 @@ make idobo:manna-harbour_miryoku:flash # idobo
#+END_SRC
-**** [[../../layouts/community/ortho_5x15/manna-harbour_miryoku/config.h][layouts/community/ortho_5x15/manna-harbour_miryoku/config.h]]
+***** [[../../layouts/community/ortho_5x15/manna-harbour_miryoku/config.h][layouts/community/ortho_5x15/manna-harbour_miryoku/config.h]]
Contains subset mapping.
@@ -1621,7 +1642,7 @@ XXX, XXX, K32, K33, K34, XXX, XXX, XXX, XXX, XXX, K35, K36, K37, XXX, XXX\
#+RESULTS:
-**** [[../../layouts/community/ortho_5x15/manna-harbour_miryoku/keymap.c][layouts/community/ortho_5x15/manna-harbour_miryoku/keymap.c]]
+***** [[../../layouts/community/ortho_5x15/manna-harbour_miryoku/keymap.c][layouts/community/ortho_5x15/manna-harbour_miryoku/keymap.c]]
Required by the build system.
@@ -1632,7 +1653,7 @@ Required by the build system.
#+END_SRC
-*** planck_mit
+**** planck_mit
The middle two columns including the middle 2u key, and the 2 keys on each end
of the bottom row are unused.
@@ -1647,7 +1668,7 @@ make planck/rev6:manna-harbour_miryoku:flash FORCE_LAYOUT=planck_mit # planck re
#+END_SRC
-**** [[../../layouts/community/planck_mit/manna-harbour_miryoku/config.h][layouts/community/planck_mit/manna-harbour_miryoku/config.h]]
+***** [[../../layouts/community/planck_mit/manna-harbour_miryoku/config.h][layouts/community/planck_mit/manna-harbour_miryoku/config.h]]
Contains subset mapping.
@@ -1673,7 +1694,7 @@ KC_NO, KC_NO, K32, K33, K34, KC_NO, K35, K36, K37, KC_NO, KC_
#+END_SRC
-**** [[../../layouts/community/planck_mit/manna-harbour_miryoku/keymap.c][layouts/community/planck_mit/manna-harbour_miryoku/keymap.c]]
+***** [[../../layouts/community/planck_mit/manna-harbour_miryoku/keymap.c][layouts/community/planck_mit/manna-harbour_miryoku/keymap.c]]
Required by the build system.
@@ -1684,7 +1705,7 @@ Required by the build system.
#+END_SRC
-*** split_3x5_3
+**** split_3x5_3
Keyboards supporting this layout: arch_36, boardsource/microdox, centromere, crkbd, eek, miniaxe, minidox/rev1, pteron36, squiggle/rev1, suihankey/split/rev1.
@@ -1696,7 +1717,7 @@ make minidox:manna-harbour_miryoku:flash # minidox
#+END_SRC
-**** [[../../layouts/community/split_3x5_3/manna-harbour_miryoku/config.h][layouts/community/split_3x5_3/manna-harbour_miryoku/config.h]]
+***** [[../../layouts/community/split_3x5_3/manna-harbour_miryoku/config.h][layouts/community/split_3x5_3/manna-harbour_miryoku/config.h]]
Contains subset mapping.
@@ -1722,7 +1743,7 @@ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,\
#+END_SRC
-**** [[../../layouts/community/split_3x5_3/manna-harbour_miryoku/keymap.c][layouts/community/split_3x5_3/manna-harbour_miryoku/keymap.c]]
+***** [[../../layouts/community/split_3x5_3/manna-harbour_miryoku/keymap.c][layouts/community/split_3x5_3/manna-harbour_miryoku/keymap.c]]
Required by the build system.
@@ -1733,7 +1754,7 @@ Required by the build system.
#+END_SRC
-*** split_3x6_3
+**** split_3x6_3
The outer columns are unused.
@@ -1747,7 +1768,7 @@ make crkbd:manna-harbour_miryoku:flash # crkbd
#+END_SRC
-**** [[../../layouts/community/split_3x6_3/manna-harbour_miryoku/config.h][layouts/community/split_3x6_3/manna-harbour_miryoku/config.h]]
+***** [[../../layouts/community/split_3x6_3/manna-harbour_miryoku/config.h][layouts/community/split_3x6_3/manna-harbour_miryoku/config.h]]
Contains subset mapping.
@@ -1773,7 +1794,7 @@ KC_NO, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29
#+END_SRC
-**** [[../../layouts/community/split_3x6_3/manna-harbour_miryoku/keymap.c][layouts/community/split_3x6_3/manna-harbour_miryoku/keymap.c]]
+***** [[../../layouts/community/split_3x6_3/manna-harbour_miryoku/keymap.c][layouts/community/split_3x6_3/manna-harbour_miryoku/keymap.c]]
Required by the build system.
@@ -1784,14 +1805,14 @@ Required by the build system.
#+END_SRC
-** Keyboards
+*** Keyboards
To use the keymap on a keyboard which does not support the layouts feature,
~LAYOUT_miryoku~ is defined as a macro mapping onto the keyboard's own ~LAYOUT~
macro, leaving the unused keys as ~KC_NO~.
-*** atreus
+**** atreus
Only the main 5x3 alphas and the inner 3 thumb keys are used.
@@ -1802,7 +1823,7 @@ make atreus:manna-harbour_miryoku:flash
#+END_SRC
-**** [[../../keyboards/atreus/keymaps/manna-harbour_miryoku/config.h][keyboards/atreus/keymaps/manna-harbour_miryoku/config.h]]
+***** [[../../keyboards/atreus/keymaps/manna-harbour_miryoku/config.h][keyboards/atreus/keymaps/manna-harbour_miryoku/config.h]]
Contains subset mapping.
@@ -1830,7 +1851,7 @@ XXX, XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX, XXX\
#+END_SRC
-**** [[../../keyboards/atreus/keymaps/manna-harbour_miryoku/keymap.c][keyboards/atreus/keymaps/manna-harbour_miryoku/keymap.c]]
+***** [[../../keyboards/atreus/keymaps/manna-harbour_miryoku/keymap.c][keyboards/atreus/keymaps/manna-harbour_miryoku/keymap.c]]
Required by the build system.
@@ -1841,7 +1862,57 @@ Required by the build system.
#+END_SRC
-*** ergotravel
+**** bastardkb/scylla
+
+To build for this keyboard,
+
+#+BEGIN_SRC sh :tangle no
+make bastardkb/scylla:manna-harbour_miryoku:flash
+#+END_SRC
+
+
+***** [[../../keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/config.h][keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/config.h]]
+
+Contains subset mapping.
+
+#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/config.h
+// <>
+
+<>
+
+#pragma once
+
+#define XXX KC_NO
+
+#define LAYOUT_miryoku( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \
+ N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \
+) \
+LAYOUT_split_4x6_5( \
+XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, \
+XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, \
+XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, \
+XXX, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, XXX, \
+ K32, K33, K34, K35, K36, K37, \
+ XXX, XXX, XXX, XXX \
+)
+#+END_SRC
+
+
+***** [[../../keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/keymap.c][keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/keymap.c]]
+
+Required by the build system.
+
+#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/keymap.c
+// <>
+
+<>
+#+END_SRC
+
+
+**** ergotravel
To build for this keyboard,
@@ -1850,7 +1921,7 @@ make ergotravel:manna-harbour_miryoku:flash
#+END_SRC
-**** [[../../keyboards/ergotravel/keymaps/manna-harbour_miryoku/config.h][keyboards/ergotravel/keymaps/manna-harbour_miryoku/config.h]]
+***** [[../../keyboards/ergotravel/keymaps/manna-harbour_miryoku/config.h][keyboards/ergotravel/keymaps/manna-harbour_miryoku/config.h]]
Contains subset mapping.
@@ -1878,7 +1949,7 @@ XXX, XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX, XXX \
#+END_SRC
-**** [[../../keyboards/ergotravel/keymaps/manna-harbour_miryoku/keymap.c][keyboards/ergotravel/keymaps/manna-harbour_miryoku/keymap.c]]
+***** [[../../keyboards/ergotravel/keymaps/manna-harbour_miryoku/keymap.c][keyboards/ergotravel/keymaps/manna-harbour_miryoku/keymap.c]]
Required by the build system.
@@ -1889,7 +1960,7 @@ Required by the build system.
#+END_SRC
-*** for_science
+**** for_science
The top row is unused.
@@ -1900,7 +1971,7 @@ make for_science:manna-harbour_miryoku:flash
#+END_SRC
-**** [[../../keyboards/for_science/keymaps/manna-harbour_miryoku/config.h][keyboards/for_science/keymaps/manna-harbour_miryoku/config.h]]
+***** [[../../keyboards/for_science/keymaps/manna-harbour_miryoku/config.h][keyboards/for_science/keymaps/manna-harbour_miryoku/config.h]]
Contains subset mapping.
@@ -1929,7 +2000,7 @@ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,\
#+END_SRC
-**** [[../../keyboards/for_science/keymaps/manna-harbour_miryoku/keymap.c][keyboards/for_science/keymaps/manna-harbour_miryoku/keymap.c]]
+***** [[../../keyboards/for_science/keymaps/manna-harbour_miryoku/keymap.c][keyboards/for_science/keymaps/manna-harbour_miryoku/keymap.c]]
Required by the build system.
@@ -1940,7 +2011,7 @@ Required by the build system.
#+END_SRC
-*** gergo
+**** gergo
Only the main 5x3 alphas and the outer 3 thumb keys are used.
@@ -1951,7 +2022,7 @@ make gergo:manna-harbour_miryoku:flash
#+END_SRC
-**** [[../../keyboards/gergo/keymaps/manna-harbour_miryoku/config.h][keyboards/gergo/keymaps/manna-harbour_miryoku/config.h]]
+***** [[../../keyboards/gergo/keymaps/manna-harbour_miryoku/config.h][keyboards/gergo/keymaps/manna-harbour_miryoku/config.h]]
Contains subset mapping.
@@ -1979,7 +2050,7 @@ XXX, K20, K21, K22, K23, K24, XXX, XXX, XXX, XXX, K25, K26, K27, K28, K29,
#+END_SRC
-**** [[../../keyboards/gergo/keymaps/manna-harbour_miryoku/keymap.c][keyboards/gergo/keymaps/manna-harbour_miryoku/keymap.c]]
+***** [[../../keyboards/gergo/keymaps/manna-harbour_miryoku/keymap.c][keyboards/gergo/keymaps/manna-harbour_miryoku/keymap.c]]
Required by the build system.
@@ -1990,7 +2061,7 @@ Required by the build system.
#+END_SRC
-*** handwired/dactyl_manuform/4x5
+**** handwired/dactyl_manuform/4x5
Only the main 5x3 alphas and the main 3 thumb keys are used.
@@ -2001,7 +2072,7 @@ make handwired/dactyl_manuform/4x5:manna-harbour_miryoku:flash
#+END_SRC
-**** [[../../keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/config.h][keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/config.h]]
+***** [[../../keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/config.h][keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/config.h]]
Contains subset mapping.
@@ -2032,7 +2103,7 @@ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,\
#+END_SRC
-**** [[../../keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/keymap.c][keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/keymap.c]]
+***** [[../../keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/keymap.c][keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/keymap.c]]
Required by the build system.
@@ -2043,7 +2114,7 @@ Required by the build system.
#+END_SRC
-*** handwired/dactyl_manuform/5x6
+**** handwired/dactyl_manuform/5x6
Only the main 5x3 alphas and the main 3 thumb keys are used.
@@ -2054,7 +2125,7 @@ make handwired/dactyl_manuform/5x6:manna-harbour_miryoku:flash
#+END_SRC
-**** [[../../keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/config.h][keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/config.h]]
+***** [[../../keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/config.h][keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/config.h]]
Contains subset mapping.
@@ -2086,7 +2157,7 @@ XXX, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, X
#+END_SRC
-**** [[../../keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/keymap.c][keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/keymap.c]]
+***** [[../../keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/keymap.c][keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/keymap.c]]
Required by the build system.
@@ -2097,7 +2168,7 @@ Required by the build system.
#+END_SRC
-*** keebio/iris
+**** keebio/iris
Only the main 5x3 alphas and the bottom 3 thumb keys are used.
@@ -2108,7 +2179,7 @@ make keebio/iris/rev4:manna-harbour_miryoku:flash
#+END_SRC
-**** [[../../keyboards/keebio/iris/keymaps/manna-harbour_miryoku/config.h][keyboards/keebio/iris/keymaps/manna-harbour_miryoku/config.h]]
+***** [[../../keyboards/keebio/iris/keymaps/manna-harbour_miryoku/config.h][keyboards/keebio/iris/keymaps/manna-harbour_miryoku/config.h]]
Contains subset mapping.
@@ -2137,7 +2208,7 @@ XXX, K20, K21, K22, K23, K24, XXX, XXX, K25, K26, K27, K28, K29, XXX,\
#+END_SRC
-**** [[../../keyboards/keebio/iris/keymaps/manna-harbour_miryoku/keymap.c][keyboards/keebio/iris/keymaps/manna-harbour_miryoku/keymap.c]]
+***** [[../../keyboards/keebio/iris/keymaps/manna-harbour_miryoku/keymap.c][keyboards/keebio/iris/keymaps/manna-harbour_miryoku/keymap.c]]
Required by the build system.
@@ -2148,7 +2219,7 @@ Required by the build system.
#+END_SRC
-*** keyboardio/atreus
+**** keyboardio/atreus
Only the main 5x3 alphas and the inner 3 thumb keys are used.
@@ -2159,7 +2230,7 @@ make keyboardio/atreus:manna-harbour_miryoku:flash
#+END_SRC
-**** [[../../keyboards/keyboardio/atreus/keymaps/manna-harbour_miryoku/config.h][keyboards/keyboardio/atreus/keymaps/manna-harbour_miryoku/config.h]]
+***** [[../../keyboards/keyboardio/atreus/keymaps/manna-harbour_miryoku/config.h][keyboards/keyboardio/atreus/keymaps/manna-harbour_miryoku/config.h]]
Contains subset mapping.
@@ -2187,7 +2258,7 @@ XXX, XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX, XXX \
#+END_SRC
-**** [[../../keyboards/keyboardio/atreus/keymaps/manna-harbour_miryoku/keymap.c][keyboards/keyboardio/atreus/keymaps/manna-harbour_miryoku/keymap.c]]
+***** [[../../keyboards/keyboardio/atreus/keymaps/manna-harbour_miryoku/keymap.c][keyboards/keyboardio/atreus/keymaps/manna-harbour_miryoku/keymap.c]]
Required by the build system.
@@ -2198,82 +2269,7 @@ Required by the build system.
#+END_SRC
-*** kyria
-
-Only the main 5x3 alphas and the middle 3 lower thumb keys are used.
-
-[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-kyria.png]]
-
-An alternative subset mapping is also provided with the thumb keys shifted one
-position in the direction of thumb extension. To select this mapping, append
-~MIRYOKU_MAPPING=EXTENDED_THUMBS~ to the ~make~ command line when building.
-
-[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-kyria-extended_thumbs.png]]
-
-
-To build for this keyboard,
-
-#+BEGIN_SRC sh :tangle no
-make kyria:manna-harbour_miryoku:flash
-make kyria:manna-harbour_miryoku:flash MIRYOKU_MAPPING=EXTENDED_THUMBS # extended thumb position
-#+END_SRC
-
-
-**** [[../../keyboards/kyria/keymaps/manna-harbour_miryoku/config.h][keyboards/kyria/keymaps/manna-harbour_miryoku/config.h]]
-
-Contains subset mapping.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/kyria/keymaps/manna-harbour_miryoku/config.h
-// <>
-
-<>
-
-#pragma once
-
-#define XXX KC_NO
-
-#if defined MIRYOKU_MAPPING_EXTENDED_THUMBS
-#define LAYOUT_miryoku( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \
- N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \
-) \
-LAYOUT( \
-XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, \
-XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, \
-XXX, K20, K21, K22, K23, K24, XXX, XXX, XXX, XXX, K25, K26, K27, K28, K29, XXX, \
- XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX \
-)
-#else
-#define LAYOUT_miryoku( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \
- N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \
-) \
-LAYOUT( \
-XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, \
-XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, \
-XXX, K20, K21, K22, K23, K24, XXX, XXX, XXX, XXX, K25, K26, K27, K28, K29, XXX, \
- XXX, K32, K33, K34, XXX, XXX, K35, K36, K37, XXX \
-)
-#endif
-#+END_SRC
-
-
-**** [[../../keyboards/kyria/keymaps/manna-harbour_miryoku/keymap.c][keyboards/kyria/keymaps/manna-harbour_miryoku/keymap.c]]
-
-Required by the build system.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/kyria/keymaps/manna-harbour_miryoku/keymap.c
-// <>
-
-<>
-#+END_SRC
-
-
-*** lily58
+**** lily58
Only the main 5x3 alphas and the inner 3 thumb keys are used.
@@ -2284,7 +2280,7 @@ make lily58:manna-harbour_miryoku:flash
#+END_SRC
-**** [[../../keyboards/lily58/keymaps/manna-harbour_miryoku/config.h][keyboards/lily58/keymaps/manna-harbour_miryoku/config.h]]
+***** [[../../keyboards/lily58/keymaps/manna-harbour_miryoku/config.h][keyboards/lily58/keymaps/manna-harbour_miryoku/config.h]]
Contains subset mapping.
@@ -2313,7 +2309,7 @@ XXX, K20, K21, K22, K23, K24, XXX, XXX, K25, K26, K27, K28, K29, XXX,\
#+END_SRC
-**** [[../../keyboards/lily58/keymaps/manna-harbour_miryoku/keymap.c][keyboards/lily58/keymaps/manna-harbour_miryoku/keymap.c]]
+***** [[../../keyboards/lily58/keymaps/manna-harbour_miryoku/keymap.c][keyboards/lily58/keymaps/manna-harbour_miryoku/keymap.c]]
Required by the build system.
@@ -2324,7 +2320,7 @@ Required by the build system.
#+END_SRC
-*** moonlander
+**** moonlander
The main 5x3 alphas are used as usual. The primary, secondary, and tertiary
thumb keys are the closest piano key, middle piano key, and the innermost key of
@@ -2337,7 +2333,7 @@ make moonlander:manna-harbour_miryoku:flash
#+END_SRC
-**** [[../../keyboards/moonlander/keymaps/manna-harbour_miryoku/config.h][keyboards/moonlander/keymaps/manna-harbour_miryoku/config.h]]
+***** [[../../keyboards/moonlander/keymaps/manna-harbour_miryoku/config.h][keyboards/moonlander/keymaps/manna-harbour_miryoku/config.h]]
Contains subset mapping.
@@ -2367,7 +2363,7 @@ XXX, XXX, XXX, XXX, K32, XXX, XXX, K37, XXX, XXX, XXX, XXX,\
#+END_SRC
-**** [[../../keyboards/moonlander/keymaps/manna-harbour_miryoku/keymap.c][keyboards/moonlander/keymaps/manna-harbour_miryoku/keymap.c]]
+***** [[../../keyboards/moonlander/keymaps/manna-harbour_miryoku/keymap.c][keyboards/moonlander/keymaps/manna-harbour_miryoku/keymap.c]]
Required by the build system.
@@ -2378,7 +2374,7 @@ Required by the build system.
#+END_SRC
-*** redox_w
+**** redox_w
Only the main 5x3 alphas and the main 3 thumb keys are used.
@@ -2389,7 +2385,7 @@ make redox_w:manna-harbour_miryoku:flash
#+END_SRC
-**** [[../../keyboards/redox_w/keymaps/manna-harbour_miryoku/config.h][keyboards/redox_w/keymaps/manna-harbour_miryoku/config.h]]
+***** [[../../keyboards/redox_w/keymaps/manna-harbour_miryoku/config.h][keyboards/redox_w/keymaps/manna-harbour_miryoku/config.h]]
Contains subset mapping.
@@ -2420,7 +2416,7 @@ XXX, XXX, XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX, XXX,
#+RESULTS:
-**** [[../../keyboards/redox_w/keymaps/manna-harbour_miryoku/keymap.c][keyboards/redox_w/keymaps/manna-harbour_miryoku/keymap.c]]
+***** [[../../keyboards/redox_w/keymaps/manna-harbour_miryoku/keymap.c][keyboards/redox_w/keymaps/manna-harbour_miryoku/keymap.c]]
Required by the build system.
@@ -2431,7 +2427,7 @@ Required by the build system.
#+END_SRC
-*** sofle
+**** sofle
To build for this keyboard,
@@ -2440,7 +2436,7 @@ make sofle:manna-harbour_miryoku:flash
#+END_SRC
-**** [[../../keyboards/sofle/keymaps/manna-harbour_miryoku/config.h][keyboards/sofle/keymaps/manna-harbour_miryoku/config.h]]
+***** [[../../keyboards/sofle/keymaps/manna-harbour_miryoku/config.h][keyboards/sofle/keymaps/manna-harbour_miryoku/config.h]]
Contains subset mapping.
@@ -2469,7 +2465,7 @@ XXX, K20, K21, K22, K23, K24, XXX, XXX, K25, K26, K27, K28, K29, XXX,\
#+END_SRC
-**** [[../../keyboards/sofle/keymaps/manna-harbour_miryoku/keymap.c][keyboards/sofle/keymaps/manna-harbour_miryoku/keymap.c]]
+***** [[../../keyboards/sofle/keymaps/manna-harbour_miryoku/keymap.c][keyboards/sofle/keymaps/manna-harbour_miryoku/keymap.c]]
Required by the build system.
@@ -2480,7 +2476,82 @@ Required by the build system.
#+END_SRC
-*** torn
+**** splitkb/kyria
+
+Only the main 5x3 alphas and the middle 3 lower thumb keys are used.
+
+[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-kyria.png]]
+
+An alternative subset mapping is also provided with the thumb keys shifted one
+position in the direction of thumb extension. To select this mapping, append
+~MIRYOKU_MAPPING=EXTENDED_THUMBS~ to the ~make~ command line when building.
+
+[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-kyria-extended_thumbs.png]]
+
+
+To build for this keyboard,
+
+#+BEGIN_SRC sh :tangle no
+make splitkb/kyria:manna-harbour_miryoku:flash
+make splitkb/kyria:manna-harbour_miryoku:flash MIRYOKU_MAPPING=EXTENDED_THUMBS # extended thumb position
+#+END_SRC
+
+
+***** [[../../keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/config.h][keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/config.h]]
+
+Contains subset mapping.
+
+#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/config.h
+// <>
+
+<>
+
+#pragma once
+
+#define XXX KC_NO
+
+#if defined MIRYOKU_MAPPING_EXTENDED_THUMBS
+#define LAYOUT_miryoku( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \
+ N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \
+) \
+LAYOUT( \
+XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, \
+XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, \
+XXX, K20, K21, K22, K23, K24, XXX, XXX, XXX, XXX, K25, K26, K27, K28, K29, XXX, \
+ XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX \
+)
+#else
+#define LAYOUT_miryoku( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \
+ N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \
+) \
+LAYOUT( \
+XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, \
+XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, \
+XXX, K20, K21, K22, K23, K24, XXX, XXX, XXX, XXX, K25, K26, K27, K28, K29, XXX, \
+ XXX, K32, K33, K34, XXX, XXX, K35, K36, K37, XXX \
+)
+#endif
+#+END_SRC
+
+
+***** [[../../keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/keymap.c][keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/keymap.c]]
+
+Required by the build system.
+
+#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/keymap.c
+// <>
+
+<>
+#+END_SRC
+
+
+**** torn
To build for this keyboard,
@@ -2489,7 +2560,7 @@ make torn:manna-harbour_miryoku:flash
#+END_SRC
-**** [[../../keyboards/torn/keymaps/manna-harbour_miryoku/config.h][keyboards/torn/keymaps/manna-harbour_miryoku/config.h]]
+***** [[../../keyboards/torn/keymaps/manna-harbour_miryoku/config.h][keyboards/torn/keymaps/manna-harbour_miryoku/config.h]]
Contains subset mapping.
@@ -2517,7 +2588,7 @@ KC_NO, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29
#+RESULTS:
-**** [[../../keyboards/torn/keymaps/manna-harbour_miryoku/keymap.c][keyboards/torn/keymaps/manna-harbour_miryoku/keymap.c]]
+***** [[../../keyboards/torn/keymaps/manna-harbour_miryoku/keymap.c][keyboards/torn/keymaps/manna-harbour_miryoku/keymap.c]]
Required by the build system.
@@ -2528,7 +2599,7 @@ Required by the build system.
#+END_SRC
-** Customisation
+*** Customisation
To add customisations to a keyboard or layout while importing the miryoku
keymap, copy ~config.h~ and ~keymap.c~ from the keyboard or layout's
@@ -2542,7 +2613,7 @@ layout and modify ~LAYOUT_miryoku~ in ~config.h~ referring to the keyboard or
layout's ~LAYOUT~ macro.
-*** Examples
+**** Examples
To use any of the examples, create a new branch from the miryoku development
branch and follow the same steps as seen in the commit messages and code changes
@@ -2550,28 +2621,28 @@ in the examples, making the appropriate changes for your keyboard and desired
customisations.
-**** Add Layers
+***** Add Layers
- https://github.com/manna-harbour/qmk_firmware/commits/miryoku-examples-add-layers/keyboards/crkbd/keymaps/miryoku-examples-add-layers
-* Experimental Features
+** Experimental Features
-** Bilateral Combinations
+*** Bilateral Combinations
- [[https://github.com/manna-harbour/qmk_firmware/issues/29][Bilateral Combinations]]
-** Retro Shift
+*** Retro Shift
- [[https://github.com/manna-harbour/qmk_firmware/issues/33][Retro Shift]]
-* Documentation :noexport_1:
+** Documentation
-** QMK
+*** QMK
- https://docs.qmk.fm/
- https://docs.qmk.fm/#/config_options
@@ -2588,18 +2659,13 @@ customisations.
- https://docs.qmk.fm/#/tap_hold
-** Org Mode
+*** Org Mode
- https://orgmode.org/
- https://orgmode.org/manual/Tables.html
- https://orgmode.org/manual/Working-with-Source-Code.html
-* Contact
-
-For feature requests or issues with code or documentation please
-[[https://github.com/manna-harbour/qmk_firmware/issues/new][open an issue]].
-
-For more general discussion please [[https://github.com/manna-harbour/manna-harbour/tree/main/contact][contact Manna Harbour]].
+**
[[https://github.com/manna-harbour][https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/logos/manna-harbour-boa-32.png]]
diff --git a/users/manna-harbour_miryoku/rules.mk b/users/manna-harbour_miryoku/rules.mk
index 809e630354d8..085f0b501995 100644
--- a/users/manna-harbour_miryoku/rules.mk
+++ b/users/manna-harbour_miryoku/rules.mk
@@ -1,6 +1,6 @@
# Copyright 2019 Manna Harbour
# https://github.com/manna-harbour/miryoku
-# generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*-
+# generated -*- buffer-read-only: t -*-
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
diff --git a/users/mechmerlin/changelog.md b/users/mechmerlin/changelog.md
index 2f8fa687a90d..733c65a97938 100644
--- a/users/mechmerlin/changelog.md
+++ b/users/mechmerlin/changelog.md
@@ -1,6 +1,19 @@
# Changelog
All notable changes to my userspace will be documented in this file.
+## [0.4.1] - 2021-10-30
+
+### Added
+- `RGB_DISABLE_WHEN_USB_SUSPENDED` added in `config.h`. Couple of my boards now have per key RGB and have been staying on when my computer sleeps.
+## [0.4.0] - 2021-10-05
+
+### Added
+- Introduced new keycode KV_VER to output the version of QMK. Thanks to drashna for this.
+
+### Changed
+- Updated keymaps to use underscores instead of KC_TRNS as it was getting hard to read for my tired eyes.
+- Updated readmes on my preferred layouts.
+
## [0.3.0] - 2020-02-02
### Changed
- Added the `_CL` layer to all the boards for access to `EEP_RST` and `RESET` keycodes. This was done primarily to avoid triggering `RESET` accidentally.
diff --git a/users/mechmerlin/config.h b/users/mechmerlin/config.h
index 698e237b01f3..459c181673f7 100644
--- a/users/mechmerlin/config.h
+++ b/users/mechmerlin/config.h
@@ -5,6 +5,10 @@
#define RGBLIGHT_ANIMATIONS
#endif // RGBLIGHT_ENABLE
+#ifdef RGB_MATRIX_ENABLE
+ #define RGB_DISABLE_WHEN_USB_SUSPENDED
+#endif
+
#ifdef AUDIO_CLICKY
#define AUDIO_CLICKY_ON
#define AUDIO_CLICKY_FREQ_DEFAULT 261.63f
diff --git a/users/mechmerlin/mechmerlin.c b/users/mechmerlin/mechmerlin.c
index ad60bd196669..23def968d449 100644
--- a/users/mechmerlin/mechmerlin.c
+++ b/users/mechmerlin/mechmerlin.c
@@ -1,4 +1,7 @@
#include "mechmerlin.h"
+#include "version.h"
+
+#define TAP_CODE_DELAY 10
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
static uint16_t fnx_layer_timer;
@@ -15,9 +18,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
}
break;
- case KC_MAC:
+ case KC_VER:
if (record->event.pressed) {
- SEND_STRING("meow");
+ send_string_with_delay_P(PSTR(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE), TAP_CODE_DELAY);
} else {
}
break;
diff --git a/users/mechmerlin/mechmerlin.h b/users/mechmerlin/mechmerlin.h
index 9802c3ecd27a..79386e76636d 100644
--- a/users/mechmerlin/mechmerlin.h
+++ b/users/mechmerlin/mechmerlin.h
@@ -12,7 +12,7 @@ enum userspace_layers {
// Enum of custom keycodes defined in process_record_user
enum keycodes {
KC_FNX, // Hold for FN layer, tap to toggle ARROWS layer.
- KC_MAC, // Text macro.
+ KC_VER, // Version macro.
};
// Custom #defined keycodes
diff --git a/users/mechmerlin/readme.md b/users/mechmerlin/readme.md
index 14a86f055bb9..1070953111fa 100644
--- a/users/mechmerlin/readme.md
+++ b/users/mechmerlin/readme.md
@@ -1,4 +1,4 @@
-# MechMerlin's Userspace v0.2.0
+# MechMerlin's Userspace v0.4.0
This is a collection of my most commonly used QMK features.
@@ -32,12 +32,16 @@ It is used primarily on my `LAYOUT_60_ansi` boards as my regular toggle (the 1u
This is just a wrapper for `CTL_T(KC_CAPS)`. This is a hold for control and tap for caps lock.
+### KC_VER
+
+Output the version of QMK Firmware on device.
+
## QMK Features
----
-### RGBLIGHT_SLEEP
+### RGBLIGHT_SLEEP and RGB_DISABLE_WHEN_USB_SUSPENDED
-Ensures that when my computer is in sleep mode, the keyboard underglow lights will also be off.
+Ensures that when my computer is in sleep mode, the keyboard underglow and inswitch RGB lights will also be off.
### Audio Clicky
diff --git a/users/noroadsleft/readme.md b/users/noroadsleft/readme.md
index bee6ee272f50..1173d15ec196 100644
--- a/users/noroadsleft/readme.md
+++ b/users/noroadsleft/readme.md
@@ -9,7 +9,7 @@ This directory holds the code that's the same for every keyboard I use in QMK, w
## Macro Features and Custom Keycodes
-### [VRSN](./noroadsleft.c#L33-L37)
+### [VRSN](./noroadsleft.c#L44-L48)
Outputs a string that tells me the Git commit from which my flashed firmware was built. Looks something like:
@@ -29,7 +29,7 @@ Some frequently used Git commands.
### "Macro Mode" Macros and Customized Keycodes
-Some of my macros and keycodes do different things depending on the value of the [`macroMode` variable](./noroadsleft.c#L23), which is [toggled between `0` and `1`](./noroadsleft.c#L116-L120) by the `M_MDSWP` custom keycode.[1](#footnotes) This is mainly at attempt to make various shortcuts use the same physical key combinations between Windows/Linux and MacOS (which I use at home and work, respectively).
+Some of my macros and keycodes do different things depending on the value of the [`macroMode` variable](./noroadsleft.c#L23), which is [toggled between `0` and `1`](./noroadsleft.c#L127-L131) by the `M_MDSWP` custom keycode.[1](#footnotes) This is mainly at attempt to make various shortcuts use the same physical key combinations between Windows/Linux and MacOS (which I use at home and work, respectively).
| Keycode | `macroMode == 0` | `macroMode == 1` | `macroMode == 1` with Shift |
| :------------------------------------- | :--------------- | :--------------- | :------------------------------------- |
diff --git a/users/riblee/riblee.c b/users/riblee/riblee.c
index 6e6a7c23c637..04e37b2428a0 100644
--- a/users/riblee/riblee.c
+++ b/users/riblee/riblee.c
@@ -152,6 +152,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
return false;
break;
+ case WORKMAN:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_WORKMAN);
+ }
+ return false;
+ break;
case HUNGARIAN:
if (record->event.pressed) {
set_single_persistent_default_layer(_HUNGARIAN);
@@ -169,6 +175,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
return false;
break;
+ case CG_NORM:
+ set_unicode_input_mode(UC_MAC);
+ break;
+ case CG_SWAP:
+ set_unicode_input_mode(UC_LNX);
+ break;
}
return true;
};
@@ -177,14 +189,47 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
static char receive_buffer[128] = {};
static uint8_t receive_buffer_length = 0;
+uint16_t startup_timer;
-void oled_task_user(void) {
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ startup_timer = timer_read();
+ return rotation;
+}
+
+static void render_logo(void) {
+ static const char PROGMEM raw_logo[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 96, 96, 96,240,248,255, 63, 56,255,255,248, 63, 63,248,255,255, 56, 63,255,248,240, 96, 96, 96, 0, 0, 0, 0, 0,252,254, 38, 54, 60, 8,240,152,152,248,240, 24,248,224,248,120,224,240,120, 96,248,248,248,248, 32,248,248, 24, 24,240,248,248,248,240,240,248,152,152,254,254, 0, 0, 0,254,254,152,248,240, 24,248,224,240,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,219,219,219,255,255,255,240,192,143,159, 63, 0, 0, 63,159,143,192,240,255,255,255,219,219,219, 0, 0, 0, 0, 0,192,225,112, 48, 48, 48,112,225,129, 1,240,240,240,193, 1, 0, 1,193,240,240,241, 1, 1,241,240,193,225,112, 48, 0, 1, 1, 1, 1,240,241, 49, 49, 49, 0,240,240, 0,129,193,129,193,192, 0,196,135,193,192,128,128,192,192,128, 0, 0,192,128, 0,128,192,128, 0, 0,192,192,128,128,192,192,192,128, 0,128,192,128,192,192, 0,128,192,192,192,128, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 6, 6, 6, 15, 31,255,255, 31,255,255, 31,252,252, 31,255,255, 31,255,255, 31, 15, 6, 6, 6, 0, 0, 0, 0, 0, 15, 31, 56, 48, 48, 48, 60,127,103, 96, 63, 63, 0, 7, 63, 56, 31, 7, 0, 63, 63, 0, 0, 63, 63, 7, 30, 60, 48, 0, 0, 0, 0, 0, 63, 31, 3, 3, 3, 0, 63, 63, 0, 31, 63, 1, 0, 0, 0, 63, 31, 0, 1, 63, 63, 0, 0, 63, 63, 0, 7, 63, 60, 63, 7, 31, 60, 63, 15, 0, 28, 60, 54, 54, 63, 63, 0, 63, 63, 1, 0, 0, 31, 63, 54, 54, 55, 55, 2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,128,128,128,128,128, 0, 0,192,192,192, 0,192,192,192, 0, 0, 0, 0, 0, 0,192,192,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255, 29,127,255,247,224, 0,254,254,254, 0,255,255,255,198,254,254,254, 0, 0,255,255,255,124,254,254,214,214,222,222, 92,124,254,254,214,214,222,222, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ };
+
+ oled_write_raw_P(raw_logo, sizeof(raw_logo));
+}
+
+static void render_info(void) {
// Keyboard Layer Status
oled_write_P(PSTR("Layer: "), false);
switch (get_highest_layer(layer_state)) {
case _QWERTY:
- oled_write_P(PSTR("Default\n"), false);
+ if (layer_state_cmp(default_layer_state, _QWERTY)) {
+ oled_write_P(PSTR("Qwerty\n"), false);
+ } else if (layer_state_cmp(default_layer_state, _COLEMAK)) {
+ oled_write_P(PSTR("Colmak\n"), false);
+ } else if (layer_state_cmp(default_layer_state, _DVORAK)) {
+ oled_write_P(PSTR("Dvorak\n"), false);
+ } else if (layer_state_cmp(default_layer_state, _WORKMAN)) {
+ oled_write_P(PSTR("Workman\n"), false);
+ } else if (layer_state_cmp(default_layer_state, _HUNGARIAN)) {
+ oled_write_P(PSTR("HUN Qwerty\n"), false);
+ } else {
+ oled_write_P(PSTR("Undefined\n"), false);
+ }
break;
case _LOWER:
oled_write_P(PSTR("Lower\n"), false);
@@ -203,6 +248,19 @@ void oled_task_user(void) {
oled_write_ln(receive_buffer, false);
}
+void oled_task_user(void) {
+ static bool finished_timer = false;
+ if (!finished_timer && (timer_elapsed(startup_timer) < 1000)) {
+ render_logo();
+ } else {
+ if (!finished_timer) {
+ oled_clear();
+ finished_timer = true;
+ }
+ render_info();
+ }
+}
+
#ifdef RAW_ENABLE
void raw_hid_receive(uint8_t *data, uint8_t length) {
diff --git a/users/riblee/riblee.h b/users/riblee/riblee.h
index a4038765a698..f7340d50b2f7 100644
--- a/users/riblee/riblee.h
+++ b/users/riblee/riblee.h
@@ -23,6 +23,7 @@ enum layer_names {
_HUNGARIAN,
_COLEMAK,
_DVORAK,
+ _WORKMAN,
_LOWER,
_RAISE,
_ADJUST
@@ -33,6 +34,7 @@ enum custom_keycodes {
HUNGARIAN,
COLEMAK,
DVORAK,
+ WORKMAN,
BACKLIT
};
diff --git a/users/stanrc85/rgblight_layers_osa.c b/users/stanrc85/rgblight_layers_osa.c
index 59366fa34a95..aff96c96992b 100644
--- a/users/stanrc85/rgblight_layers_osa.c
+++ b/users/stanrc85/rgblight_layers_osa.c
@@ -11,7 +11,7 @@ const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS(
const rgblight_segment_t PROGMEM my_layer1_layer[] = RGBLIGHT_LAYER_SEGMENTS(
{2, 2, HSV_GREEN},
{6, 2, HSV_GREEN}
-);
+);
const rgblight_segment_t PROGMEM my_layer2_layer[] = RGBLIGHT_LAYER_SEGMENTS(
{2, 2, HSV_BLUE},
@@ -60,7 +60,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
}
bool led_update_user(led_t led_state) {
- //rgblight_set_layer_state(0, led_state.caps_lock);
+ rgblight_set_layer_state(0, led_state.caps_lock);
writePin(C7, led_state.caps_lock);
writePin(C6, middle);
writePin(B6, bottom);
diff --git a/users/stanrc85/rules.mk b/users/stanrc85/rules.mk
index cafda97b1a67..d17f2df007fb 100644
--- a/users/stanrc85/rules.mk
+++ b/users/stanrc85/rules.mk
@@ -26,6 +26,7 @@ endif
ifeq ($(strip $(KEYBOARD)), tkc/osav2)
SRC += rgblight_layers_osa.c
VELOCIKEY_ENABLE=yes
+ SRC += rgb_timeout.c
endif
ifeq ($(strip $(KEYBOARD)), boardsource/the_mark)
RGB_MATRIX_ENABLE = yes
diff --git a/users/zigotica/combos.c b/users/zigotica/combos.c
new file mode 100644
index 000000000000..8fb5b3c9fccb
--- /dev/null
+++ b/users/zigotica/combos.c
@@ -0,0 +1,40 @@
+/* Copyright 2020 Sergi Meseguer
+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 "combos.h"
+
+enum combos {
+ EM_EMAIL,
+ CL_CAPSL,
+ COMBO_LENGTH
+};
+uint16_t COMBO_LEN = COMBO_LENGTH;
+
+const uint16_t PROGMEM email_combo[] = {LT(_SYM, KC_E), KC_M, COMBO_END};
+const uint16_t PROGMEM caps_combo[] = {KC_C, KC_L, COMBO_END};
+
+combo_t key_combos[] = {
+ [EM_EMAIL] = COMBO_ACTION(email_combo),
+ [CL_CAPSL] = COMBO(caps_combo, KC_CAPSLOCK),
+};
+
+void process_combo_event(uint16_t combo_index, bool pressed) {
+ switch(combo_index) {
+ case EM_EMAIL:
+ if (pressed) {
+ SEND_STRING("zigotica@gmail.com");
+ }
+ break;
+ }
+}
+
diff --git a/users/zigotica/combos.h b/users/zigotica/combos.h
new file mode 100644
index 000000000000..c75a107b9a6e
--- /dev/null
+++ b/users/zigotica/combos.h
@@ -0,0 +1,17 @@
+/* Copyright 2020 Sergi Meseguer
+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 .
+*/
+
+
+#pragma once
+#include "zigotica.h"
+
diff --git a/users/zigotica/rows.h b/users/zigotica/rows.h
new file mode 100644
index 000000000000..e73d72bbe2bb
--- /dev/null
+++ b/users/zigotica/rows.h
@@ -0,0 +1,194 @@
+/* Copyright 2020 Sergi Meseguer
+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 .
+*/
+
+#pragma once
+#include "zigotica.h"
+
+// clang-format off
+#define _BLANK_ROW _______, _______, _______, _______, _______
+#define _BLANK_THUMB _______, _______
+
+/*
+ * STENAI Layer
+ *
+ * ,---------------------------------------. ,---------------------------------------.
+ * | | | | | | | | | | | |
+ * | ` ~ | W | D | P | F | | K | Y | U | Q | ' " |
+ * | | | | | | | | | | | |
+ * |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
+ * | | | | | | | | | | | |
+ * | H | R | S | T | G | | M | N | A | I | O |
+ * | alt | ctrl | shft | meta | | | | meta | shft | ctrl | alt |
+ * |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
+ * | | | | | | | | | | | |
+ * | B | X | C | V | [ { | | , < | L | Z | J | . > |
+ * | | | | | TD ]} | | TD ; | | | | TD : |
+ * `-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------.
+ * | | | | | |
+ * | ESC | SPC | | E | INTRO |
+ * | num | nav | | sym | fn |
+ * `---------------' `---------------'
+ *
+ */
+#define _STENAI_L1 KC_GRV, KC_W, KC_D, KC_P, KC_F
+#define _STENAI_L2 LALT_T(KC_H), LCTL_T(KC_R), LSFT_T(KC_S), LGUI_T(KC_T), KC_G
+#define _STENAI_L3 KC_B, KC_X, KC_C, KC_V, ZK_BRC
+#define _STENAI_LT LT(_NUM, KC_ESC), LT(_NAV, KC_SPC)
+
+#define _STENAI_R1 KC_K, KC_Y, KC_U, KC_Q, KC_QUOT
+#define _STENAI_R2 KC_M, RGUI_T(KC_N), RSFT_T(KC_A), RCTL_T(KC_I), RALT_T(KC_O)
+#define _STENAI_R3 ZK_SEMI, KC_L, KC_Z, KC_J, ZK_COLON
+#define _STENAI_RT LT(_SYM, KC_E), LT(_FN, KC_ENT)
+
+
+#define _COLEMAK_L1 KC_Q, KC_W, KC_F, KC_P, KC_G
+#define _COLEMAK_L2 KC_A, KC_R, KC_S, KC_T, KC_D
+#define _COLEMAK_L3 KC_Z, KC_X, KC_C, KC_V, KC_B
+
+#define _COLEMAK_R1 KC_J, KC_L, KC_U, KC_Y, KC_SCLN
+#define _COLEMAK_R2 KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT
+#define _COLEMAK_R3 KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH
+
+#define _QWERTY_L1 KC_Q, KC_W, KC_E, KC_R, KC_T
+#define _QWERTY_L2 KC_A, KC_S, KC_D, KC_F, KC_G
+#define _QWERTY_L3 KC_Z, KC_X, KC_C, KC_V, KC_B
+
+#define _QWERTY_R1 KC_Y, KC_U, KC_I, KC_O, KC_P
+#define _QWERTY_R2 KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT
+#define _QWERTY_R3 KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH
+
+/*
+ * NUM Layer
+ *
+ * ,---------------------------------------. ,---------------------------------------.
+ * | | | | | | | | | | | |
+ * | | - | + | = | | | | 7 | 8 | 9 | |
+ * | | | | | | | | | | | |
+ * |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
+ * | | | | | | | | | | | |
+ * | | | | | | | | 1 | 2 | 3 | |
+ * | | | | | | | | | | | |
+ * |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
+ * | | | | | | | | | | | |
+ * | | | / | * | | | | 4 | 5 | 6 | |
+ * | | | | | | | | | | | |
+ * `-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------.
+ * |:::::::| | | | |
+ * |:::::::| | | 0 | BACK |
+ * |:::::::| | | | |
+ * `---------------' `---------------'
+ *
+ */
+#define ____NUM_L1 _______, KC_MINS, KC_PLUS, KC_EQL, _______
+#define ____NUM_L2 _BLANK_ROW
+#define ____NUM_L3 _______, _______, KC_SLSH, KC_ASTR, _______
+#define ____NUM_LT _BLANK_THUMB
+
+#define ____NUM_R1 _______, KC_7, KC_8, KC_9, _______
+#define ____NUM_R2 _______, KC_1, KC_2, KC_3, _______
+#define ____NUM_R3 _______, KC_4, KC_5, KC_6, _______
+#define ____NUM_RT KC_0, KC_BSPC
+
+/*
+* NAVIGATION Layer
+*
+* ,---------------------------------------. ,---------------------------------------.
+* | | | | | | | | | | | |
+* | | PREV | PLAY | NEXT | | | WHDN | HOME | UP | PGUP | |
+* | | | | | | | | | | | |
+* |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
+* | | | | | | | | | | | |
+* | | | | | | | WHUP | LF | DN | RG | |
+* | | | | | | | | | | | |
+* |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
+* | | | | | | | | | | | |
+* | | | | | | | | END | | PGDN | |
+* | | | | | | | | | | | |
+* `-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------.
+* | |:::::::| | | |
+* | |:::::::| | | DEL |
+* | |:::::::| | | |
+* `---------------' `---------------'
+*/
+#define ____NAV_L1 _______, KC_MPRV, KC_MPLY, KC_MNXT, _______
+#define ____NAV_L2 _BLANK_ROW
+#define ____NAV_L3 _BLANK_ROW
+#define ____NAV_LT _BLANK_THUMB
+
+#define ____NAV_R1 KC_WH_D, KC_HOME, KC_UP, KC_PGUP, _______
+#define ____NAV_R2 KC_WH_U, KC_LEFT, KC_DOWN, KC_RGHT, _______
+#define ____NAV_R3 _______, KC_END, _______, KC_PGDN, _______
+#define ____NAV_RT _______, KC_DEL
+
+/*
+* SYMBOLS Layer
+*
+* ,---------------------------------------. ,---------------------------------------.
+* | | | | | | | | | | | |
+* | % | & | ? | | | ! | | | | | | |
+* | | | | | | | | | | | |
+* |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
+* | | | | | | | | | | | |
+* | # | @ | : | ; | $ | | | | | | |
+* | | | | | | | | | | | |
+* |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
+* | | | | | | | | | | | |
+* | ( | ~ | / | \ | ^ | | | | | | |
+* | | | | | | | | | | | |
+* `-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------.
+* | | | |:::::::| |
+* | | TAB | |:::::::| |
+* | | | |:::::::| |
+* `---------------' `---------------'
+*/
+#define ____SYM_L1 KC_PERC, KC_AMPR, KC_QUES, KC_PIPE, KC_EXLM
+#define ____SYM_L2 KC_HASH, KC_AT, KC_COLN, KC_SCLN, KC_DLR
+#define ____SYM_L3 ZK_PRN, KC_TILD, KC_SLSH, KC_BSLS, KC_CIRC
+#define ____SYM_LT _______, KC_TAB
+
+#define ____SYM_R1 _BLANK_ROW
+#define ____SYM_R2 _BLANK_ROW
+#define ____SYM_R3 _BLANK_ROW
+#define ____SYM_RT _BLANK_THUMB
+
+/*
+* FUNCTION KEYS Layer
+*
+* ,---------------------------------------. ,---------------------------------------.
+* | | | | | | | | | | | |
+* | | | | | | | | F7 | F8 | F9 | F10 |
+* | | | | | | | | | | | |
+* |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
+* | | | | | | | | | | | |
+* | | | | | | | | F1 | F2 | F3 | F11 |
+* | | | | | | | | | | | |
+* |-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------|
+* | | | | | | | | | | | |
+* | | | | | | | | F4 | F5 | F6 | F12 |
+* | | | | | | | | | | | |
+* `-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------.
+* | | | | |:::::::|
+* | | TAB | | |:::::::|
+* | | | | |:::::::|
+* `---------------' `---------------'
+*/
+#define ____FN_L1 _BLANK_ROW
+#define ____FN_L2 _BLANK_ROW
+#define ____FN_L3 _BLANK_ROW
+#define ____FN_LT _______, KC_TAB
+
+#define ____FN_R1 _______, KC_F7, KC_F8, KC_F9, KC_F10
+#define ____FN_R2 _______, KC_F1, KC_F2, KC_F3, KC_F11
+#define ____FN_R3 _______, KC_F4, KC_F5, KC_F6, KC_F12
+#define ____FN_RT _BLANK_THUMB
+// clang-format on
diff --git a/users/zigotica/rules.mk b/users/zigotica/rules.mk
new file mode 100644
index 000000000000..019e6f6dda1b
--- /dev/null
+++ b/users/zigotica/rules.mk
@@ -0,0 +1,18 @@
+SRC += zigotica.c
+
+ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
+ SRC += tapdances.c
+endif
+
+ifeq ($(strip $(COMBO_ENABLE)), yes)
+ SRC += combos.c
+endif
+
+ifeq ($(strip $(OLED_ENABLE)), yes)
+ SRC += oled.c
+endif
+
+ifeq ($(strip $(ENCODER_ENABLE)), yes)
+ SRC += encoder.c
+endif
+
diff --git a/users/zigotica/tapdances.c b/users/zigotica/tapdances.c
new file mode 100644
index 000000000000..74bb1b605e11
--- /dev/null
+++ b/users/zigotica/tapdances.c
@@ -0,0 +1,34 @@
+/* Copyright 2020 Sergi Meseguer
+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 "tapdances.h"
+
+void ios_media(qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count == 1) {
+ tap_code(KC_MPLY);
+ } else if (state->count == 2) {
+ tap_code(KC_MNXT);
+ } else if (state->count == 3) {
+ tap_code(KC_MPRV);
+ } else {
+ reset_tap_dance(state);
+ }
+}
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [0] = ACTION_TAP_DANCE_FN(ios_media),
+ [1] = ACTION_TAP_DANCE_DOUBLE(KC_COMM, KC_SCOLON),
+ [2] = ACTION_TAP_DANCE_DOUBLE(KC_DOT, KC_COLON),
+ [3] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, KC_RBRC),
+ [4] = ACTION_TAP_DANCE_DOUBLE(KC_LPRN, KC_RPRN),
+};
diff --git a/users/zigotica/tapdances.h b/users/zigotica/tapdances.h
new file mode 100644
index 000000000000..051c8a90bc7f
--- /dev/null
+++ b/users/zigotica/tapdances.h
@@ -0,0 +1,24 @@
+/* Copyright 2020 Sergi Meseguer
+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 .
+*/
+
+
+#pragma once
+#include "zigotica.h"
+
+#ifdef TAP_DANCE_ENABLE
+ #define ZK_MEDIA TD(0)
+ #define ZK_SEMI TD(1)
+ #define ZK_COLON TD(2)
+ #define ZK_BRC TD(3)
+ #define ZK_PRN TD(4)
+#endif
diff --git a/users/zigotica/zigotica.c b/users/zigotica/zigotica.c
new file mode 100644
index 000000000000..9de57406c450
--- /dev/null
+++ b/users/zigotica/zigotica.c
@@ -0,0 +1,14 @@
+/* Copyright 2020 Sergi Meseguer
+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 "zigotica.h"
diff --git a/users/zigotica/zigotica.h b/users/zigotica/zigotica.h
new file mode 100644
index 000000000000..e9ff5ff16cde
--- /dev/null
+++ b/users/zigotica/zigotica.h
@@ -0,0 +1,51 @@
+/* Copyright 2020 Sergi Meseguer
+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 .
+*/
+
+#pragma once
+#include QMK_KEYBOARD_H
+
+#include "rows.h"
+
+#ifdef SPLIT_KEYBOARD
+enum userspace_layers {
+ BASE = 0,
+ _NUM,
+ _NAV,
+ _SYM,
+ _FN,
+};
+#else
+enum userspace_layers {
+ _TERMINAL = 0,
+ _FIGMA,
+ _BROWSER,
+ _VIM,
+};
+#endif
+
+
+#ifdef TAP_DANCE_ENABLE
+# include "tapdances.h"
+#endif
+
+#ifdef COMBO_ENABLE
+# include "combos.h"
+#endif
+
+#ifdef OLED_ENABLE
+ #include "oled.h"
+#endif
+
+#ifdef ENCODER_ENABLE
+ #include "encoder.h"
+#endif