diff --git a/-/build_full_test.mk b/-/build_full_test.mk
new file mode 100644
index 00000000000..85ee0898ec2
--- /dev/null
+++ b/-/build_full_test.mk
@@ -0,0 +1,37 @@
+# Copyright 2017 Fred Sundvik
+#
+# This 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 .
+
+$(TEST)_INC := \
+ tests/test_common/common_config.h
+
+$(TEST)_SRC := \
+ $(QUANTUM_SRC) \
+ $(SRC) \
+ $(QUANTUM_PATH)/keymap_introspection.c \
+ tests/test_common/matrix.c \
+ tests/test_common/test_driver.cpp \
+ tests/test_common/keyboard_report_util.cpp \
+ tests/test_common/keycode_util.cpp \
+ tests/test_common/keycode_table.cpp \
+ tests/test_common/test_fixture.cpp \
+ tests/test_common/test_keymap_key.cpp \
+ tests/test_common/test_logger.cpp \
+ $(patsubst $(ROOTDIR)/%,%,$(wildcard $(TEST_PATH)/*.cpp))
+
+$(TEST)_DEFS := $(OPT_DEFS) "-DKEYMAP_C=\"keymap.c\""
+
+$(TEST)_CONFIG := $(TEST_PATH)/config.h
+
+VPATH += $(TOP_DIR)/tests/test_common
diff --git a/-/build_json.mk b/-/build_json.mk
new file mode 100644
index 00000000000..0c034eb2aea
--- /dev/null
+++ b/-/build_json.mk
@@ -0,0 +1,17 @@
+# Look for a json keymap file
+ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_5)/keymap.json)","")
+ KEYMAP_JSON := $(MAIN_KEYMAP_PATH_5)/keymap.json
+ KEYMAP_PATH := $(MAIN_KEYMAP_PATH_5)
+else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_4)/keymap.json)","")
+ KEYMAP_JSON := $(MAIN_KEYMAP_PATH_4)/keymap.json
+ KEYMAP_PATH := $(MAIN_KEYMAP_PATH_4)
+else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_3)/keymap.json)","")
+ KEYMAP_JSON := $(MAIN_KEYMAP_PATH_3)/keymap.json
+ KEYMAP_PATH := $(MAIN_KEYMAP_PATH_3)
+else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_2)/keymap.json)","")
+ KEYMAP_JSON := $(MAIN_KEYMAP_PATH_2)/keymap.json
+ KEYMAP_PATH := $(MAIN_KEYMAP_PATH_2)
+else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_1)/keymap.json)","")
+ KEYMAP_JSON := $(MAIN_KEYMAP_PATH_1)/keymap.json
+ KEYMAP_PATH := $(MAIN_KEYMAP_PATH_1)
+endif
diff --git a/-/build_keyboard.mk b/-/build_keyboard.mk
new file mode 100644
index 00000000000..ecaac564f8a
--- /dev/null
+++ b/-/build_keyboard.mk
@@ -0,0 +1,513 @@
+# Determine what keyboard we are building and setup the build environment.
+#
+# We support folders up to 5 levels deep below `keyboards/`. This file is
+# responsible for determining which folder is being used and doing the
+# corresponding environment setup.
+
+ifndef VERBOSE
+.SILENT:
+endif
+
+.DEFAULT_GOAL := all
+
+include paths.mk
+include $(BUILDDEFS_PATH)/message.mk
+
+# Helper to add defines with a 'QMK_' prefix
+define add_qmk_prefix_defs
+ ifdef $1
+ # Need to cater for 'STM32L4xx+'
+ OPT_DEFS += -DQMK_$(2)="$($1)" -DQMK_$(2)_$(shell echo $($1) | sed -e 's@+@Plus@g' -e 's@[^a-zA-Z0-9]@_@g' | tr '[:lower:]' '[:upper:]')
+ endif
+endef
+
+# Set the qmk cli to use
+QMK_BIN ?= qmk
+
+# Set the filename for the final firmware binary
+KEYBOARD_FILESAFE := $(subst /,_,$(KEYBOARD))
+TARGET ?= $(KEYBOARD_FILESAFE)_$(KEYMAP)
+
+ifeq ($(strip $(DUMP_CI_METADATA)),yes)
+ $(info CI Metadata: KEYBOARD=$(KEYBOARD))
+ $(info CI Metadata: KEYMAP=$(KEYMAP))
+endif
+
+# Force expansion
+TARGET := $(TARGET)
+
+ifneq ($(FORCE_LAYOUT),)
+ TARGET := $(TARGET)_$(FORCE_LAYOUT)
+endif
+
+# Object files and generated keymap directory
+# To put object files in current directory, use a dot (.), do NOT make
+# this an empty or blank macro!
+INTERMEDIATE_OUTPUT := $(BUILD_DIR)/obj_$(TARGET)
+
+ifdef SKIP_VERSION
+ OPT_DEFS += -DSKIP_VERSION
+endif
+
+# Generate the version.h file
+VERSION_H_FLAGS :=
+ifdef SKIP_VERSION
+VERSION_H_FLAGS += --skip-all
+endif
+ifdef SKIP_GIT
+VERSION_H_FLAGS += --skip-git
+endif
+
+# Generate the board's version.h file.
+$(shell $(QMK_BIN) generate-version-h $(VERSION_H_FLAGS) -q -o $(INTERMEDIATE_OUTPUT)/src/version.h)
+$(shell python3 util/build_id.py >> $(INTERMEDIATE_OUTPUT)/src/version.h)
+
+# Determine which subfolders exist.
+KEYBOARD_FOLDER_PATH_1 := $(KEYBOARD)
+KEYBOARD_FOLDER_PATH_2 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_1)))
+KEYBOARD_FOLDER_PATH_3 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_2)))
+KEYBOARD_FOLDER_PATH_4 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_3)))
+KEYBOARD_FOLDER_PATH_5 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_4)))
+KEYBOARD_FOLDER_1 := $(notdir $(KEYBOARD_FOLDER_PATH_1))
+KEYBOARD_FOLDER_2 := $(notdir $(KEYBOARD_FOLDER_PATH_2))
+KEYBOARD_FOLDER_3 := $(notdir $(KEYBOARD_FOLDER_PATH_3))
+KEYBOARD_FOLDER_4 := $(notdir $(KEYBOARD_FOLDER_PATH_4))
+KEYBOARD_FOLDER_5 := $(notdir $(KEYBOARD_FOLDER_PATH_5))
+KEYBOARD_PATHS :=
+KEYBOARD_PATH_1 := keyboards/$(KEYBOARD_FOLDER_PATH_1)
+KEYBOARD_PATH_2 := keyboards/$(KEYBOARD_FOLDER_PATH_2)
+KEYBOARD_PATH_3 := keyboards/$(KEYBOARD_FOLDER_PATH_3)
+KEYBOARD_PATH_4 := keyboards/$(KEYBOARD_FOLDER_PATH_4)
+KEYBOARD_PATH_5 := keyboards/$(KEYBOARD_FOLDER_PATH_5)
+
+ifneq ("$(wildcard $(KEYBOARD_PATH_5)/)","")
+ KEYBOARD_PATHS += $(KEYBOARD_PATH_5)
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_4)/)","")
+ KEYBOARD_PATHS += $(KEYBOARD_PATH_4)
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_3)/)","")
+ KEYBOARD_PATHS += $(KEYBOARD_PATH_3)
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_2)/)","")
+ KEYBOARD_PATHS += $(KEYBOARD_PATH_2)
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_1)/)","")
+ KEYBOARD_PATHS += $(KEYBOARD_PATH_1)
+endif
+
+
+# Pull in rules.mk files from all our subfolders
+ifneq ("$(wildcard $(KEYBOARD_PATH_5)/rules.mk)","")
+ include $(KEYBOARD_PATH_5)/rules.mk
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_4)/rules.mk)","")
+ include $(KEYBOARD_PATH_4)/rules.mk
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_3)/rules.mk)","")
+ include $(KEYBOARD_PATH_3)/rules.mk
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_2)/rules.mk)","")
+ include $(KEYBOARD_PATH_2)/rules.mk
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_1)/rules.mk)","")
+ include $(KEYBOARD_PATH_1)/rules.mk
+endif
+
+MAIN_KEYMAP_PATH_1 := $(KEYBOARD_PATH_1)/keymaps/$(KEYMAP)
+MAIN_KEYMAP_PATH_2 := $(KEYBOARD_PATH_2)/keymaps/$(KEYMAP)
+MAIN_KEYMAP_PATH_3 := $(KEYBOARD_PATH_3)/keymaps/$(KEYMAP)
+MAIN_KEYMAP_PATH_4 := $(KEYBOARD_PATH_4)/keymaps/$(KEYMAP)
+MAIN_KEYMAP_PATH_5 := $(KEYBOARD_PATH_5)/keymaps/$(KEYMAP)
+
+# Pull in rules from info.json
+INFO_RULES_MK = $(shell $(QMK_BIN) generate-rules-mk --quiet --escape --keyboard $(KEYBOARD) --output $(INTERMEDIATE_OUTPUT)/src/info_rules.mk)
+include $(INFO_RULES_MK)
+
+# Check for keymap.json first, so we can regenerate keymap.c
+include $(BUILDDEFS_PATH)/build_json.mk
+
+# Pull in keymap level rules.mk
+ifeq ("$(wildcard $(KEYMAP_PATH))", "")
+ # Look through the possible keymap folders until we find a matching keymap.c
+ ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_1)/keymap.c)","")
+ -include $(MAIN_KEYMAP_PATH_1)/rules.mk
+ KEYMAP_C := $(MAIN_KEYMAP_PATH_1)/keymap.c
+ KEYMAP_PATH := $(MAIN_KEYMAP_PATH_1)
+ else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_2)/keymap.c)","")
+ -include $(MAIN_KEYMAP_PATH_2)/rules.mk
+ KEYMAP_C := $(MAIN_KEYMAP_PATH_2)/keymap.c
+ KEYMAP_PATH := $(MAIN_KEYMAP_PATH_2)
+ else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_3)/keymap.c)","")
+ -include $(MAIN_KEYMAP_PATH_3)/rules.mk
+ KEYMAP_C := $(MAIN_KEYMAP_PATH_3)/keymap.c
+ KEYMAP_PATH := $(MAIN_KEYMAP_PATH_3)
+ else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_4)/keymap.c)","")
+ -include $(MAIN_KEYMAP_PATH_4)/rules.mk
+ KEYMAP_C := $(MAIN_KEYMAP_PATH_4)/keymap.c
+ KEYMAP_PATH := $(MAIN_KEYMAP_PATH_4)
+ else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_5)/keymap.c)","")
+ -include $(MAIN_KEYMAP_PATH_5)/rules.mk
+ KEYMAP_C := $(MAIN_KEYMAP_PATH_5)/keymap.c
+ KEYMAP_PATH := $(MAIN_KEYMAP_PATH_5)
+ else ifneq ($(LAYOUTS),)
+ # If we haven't found a keymap yet fall back to community layouts
+ include $(BUILDDEFS_PATH)/build_layout.mk
+ else
+ $(call CATASTROPHIC_ERROR,Invalid keymap,Could not find keymap)
+ # this state should never be reached
+ endif
+endif
+
+# Have we found a keymap.json?
+ifneq ("$(wildcard $(KEYMAP_JSON))", "")
+ KEYMAP_C := $(INTERMEDIATE_OUTPUT)/src/keymap.c
+ KEYMAP_H := $(INTERMEDIATE_OUTPUT)/src/config.h
+
+ # Load the keymap-level rules.mk if exists
+ -include $(KEYMAP_PATH)/rules.mk
+
+ # Load any rules.mk content from keymap.json
+ INFO_RULES_MK = $(shell $(QMK_BIN) generate-rules-mk --quiet --escape --output $(INTERMEDIATE_OUTPUT)/src/rules.mk $(KEYMAP_JSON))
+ include $(INFO_RULES_MK)
+
+# Add rules to generate the keymap files - indentation here is important
+$(INTERMEDIATE_OUTPUT)/src/keymap.c: $(KEYMAP_JSON)
+ @$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
+ $(eval CMD=$(QMK_BIN) json2c --quiet --output $(KEYMAP_C) $(KEYMAP_JSON))
+ @$(BUILD_CMD)
+
+$(INTERMEDIATE_OUTPUT)/src/config.h: $(KEYMAP_JSON)
+ @$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
+ $(eval CMD=$(QMK_BIN) generate-config-h --quiet --output $(KEYMAP_H) $(KEYMAP_JSON))
+ @$(BUILD_CMD)
+
+generated-files: $(INTERMEDIATE_OUTPUT)/src/config.h $(INTERMEDIATE_OUTPUT)/src/keymap.c
+
+endif
+
+include $(BUILDDEFS_PATH)/converters.mk
+
+MCU_ORIG := $(MCU)
+include $(wildcard $(PLATFORM_PATH)/*/mcu_selection.mk)
+
+# PLATFORM_KEY should be detected in info.json via key 'processor' (or rules.mk 'MCU')
+ifeq ($(PLATFORM_KEY),)
+ $(call CATASTROPHIC_ERROR,Platform not defined)
+endif
+PLATFORM=$(shell echo $(PLATFORM_KEY) | tr '[:lower:]' '[:upper:]')
+
+# Find all the C source files to be compiled in subfolders.
+KEYBOARD_SRC :=
+
+KEYBOARD_C_1 := $(KEYBOARD_PATH_1)/$(KEYBOARD_FOLDER_1).c
+KEYBOARD_C_2 := $(KEYBOARD_PATH_2)/$(KEYBOARD_FOLDER_2).c
+KEYBOARD_C_3 := $(KEYBOARD_PATH_3)/$(KEYBOARD_FOLDER_3).c
+KEYBOARD_C_4 := $(KEYBOARD_PATH_4)/$(KEYBOARD_FOLDER_4).c
+KEYBOARD_C_5 := $(KEYBOARD_PATH_5)/$(KEYBOARD_FOLDER_5).c
+
+ifneq ("$(wildcard $(KEYBOARD_C_5))","")
+ KEYBOARD_SRC += $(KEYBOARD_C_5)
+endif
+ifneq ("$(wildcard $(KEYBOARD_C_4))","")
+ KEYBOARD_SRC += $(KEYBOARD_C_4)
+endif
+ifneq ("$(wildcard $(KEYBOARD_C_3))","")
+ KEYBOARD_SRC += $(KEYBOARD_C_3)
+endif
+ifneq ("$(wildcard $(KEYBOARD_C_2))","")
+ KEYBOARD_SRC += $(KEYBOARD_C_2)
+endif
+ifneq ("$(wildcard $(KEYBOARD_C_1))","")
+ KEYBOARD_SRC += $(KEYBOARD_C_1)
+endif
+
+# Generate KEYBOARD_name_subname for all levels of the keyboard folder
+KEYBOARD_FILESAFE_1 := $(subst .,,$(subst /,_,$(KEYBOARD_FOLDER_PATH_1)))
+KEYBOARD_FILESAFE_2 := $(subst .,,$(subst /,_,$(KEYBOARD_FOLDER_PATH_2)))
+KEYBOARD_FILESAFE_3 := $(subst .,,$(subst /,_,$(KEYBOARD_FOLDER_PATH_3)))
+KEYBOARD_FILESAFE_4 := $(subst .,,$(subst /,_,$(KEYBOARD_FOLDER_PATH_4)))
+KEYBOARD_FILESAFE_5 := $(subst .,,$(subst /,_,$(KEYBOARD_FOLDER_PATH_5)))
+
+ifneq ("$(wildcard $(KEYBOARD_PATH_5)/)","")
+ OPT_DEFS += -DKEYBOARD_$(KEYBOARD_FILESAFE_5)
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_4)/)","")
+ OPT_DEFS += -DKEYBOARD_$(KEYBOARD_FILESAFE_4)
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_3)/)","")
+ OPT_DEFS += -DKEYBOARD_$(KEYBOARD_FILESAFE_3)
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_2)/)","")
+ OPT_DEFS += -DKEYBOARD_$(KEYBOARD_FILESAFE_2)
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_1)/)","")
+ OPT_DEFS += -DKEYBOARD_$(KEYBOARD_FILESAFE_1)
+endif
+
+# Setup the define for QMK_KEYBOARD_H. This is used inside of keymaps so
+# that the same keymap may be used on multiple keyboards.
+#
+# We grab the most top-level include file that we can. That file should
+# use #ifdef statements to include all the necessary subfolder includes,
+# as described here:
+#
+# https://docs.qmk.fm/#/feature_layouts?id=tips-for-making-layouts-keyboard-agnostic
+#
+ifneq ("$(wildcard $(KEYBOARD_PATH_1)/$(KEYBOARD_FOLDER_1).h)","")
+ FOUND_KEYBOARD_H = $(KEYBOARD_FOLDER_1).h
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_2)/$(KEYBOARD_FOLDER_2).h)","")
+ FOUND_KEYBOARD_H = $(KEYBOARD_FOLDER_2).h
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_3)/$(KEYBOARD_FOLDER_3).h)","")
+ FOUND_KEYBOARD_H = $(KEYBOARD_FOLDER_3).h
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_4)/$(KEYBOARD_FOLDER_4).h)","")
+ FOUND_KEYBOARD_H = $(KEYBOARD_FOLDER_4).h
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_5)/$(KEYBOARD_FOLDER_5).h)","")
+ FOUND_KEYBOARD_H = $(KEYBOARD_FOLDER_5).h
+endif
+
+# Find all of the config.h files and add them to our CONFIG_H define.
+CONFIG_H :=
+ifneq ("$(wildcard $(KEYBOARD_PATH_5)/config.h)","")
+ CONFIG_H += $(KEYBOARD_PATH_5)/config.h
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_4)/config.h)","")
+ CONFIG_H += $(KEYBOARD_PATH_4)/config.h
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_3)/config.h)","")
+ CONFIG_H += $(KEYBOARD_PATH_3)/config.h
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_2)/config.h)","")
+ CONFIG_H += $(KEYBOARD_PATH_2)/config.h
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_1)/config.h)","")
+ CONFIG_H += $(KEYBOARD_PATH_1)/config.h
+endif
+
+POST_CONFIG_H :=
+ifneq ("$(wildcard $(KEYBOARD_PATH_1)/post_config.h)","")
+ POST_CONFIG_H += $(KEYBOARD_PATH_1)/post_config.h
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_2)/post_config.h)","")
+ POST_CONFIG_H += $(KEYBOARD_PATH_2)/post_config.h
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_3)/post_config.h)","")
+ POST_CONFIG_H += $(KEYBOARD_PATH_3)/post_config.h
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_4)/post_config.h)","")
+ POST_CONFIG_H += $(KEYBOARD_PATH_4)/post_config.h
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_5)/post_config.h)","")
+ POST_CONFIG_H += $(KEYBOARD_PATH_5)/post_config.h
+endif
+
+# Pull in stuff from info.json
+INFO_JSON_FILES :=
+ifneq ("$(wildcard $(KEYBOARD_PATH_1)/info.json)","")
+ INFO_JSON_FILES += $(KEYBOARD_PATH_1)/info.json
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_2)/info.json)","")
+ INFO_JSON_FILES += $(KEYBOARD_PATH_2)/info.json
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_3)/info.json)","")
+ INFO_JSON_FILES += $(KEYBOARD_PATH_3)/info.json
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_4)/info.json)","")
+ INFO_JSON_FILES += $(KEYBOARD_PATH_4)/info.json
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_5)/info.json)","")
+ INFO_JSON_FILES += $(KEYBOARD_PATH_5)/info.json
+endif
+
+CONFIG_H += $(INTERMEDIATE_OUTPUT)/src/info_config.h
+KEYBOARD_SRC += $(INTERMEDIATE_OUTPUT)/src/default_keyboard.c
+
+$(INTERMEDIATE_OUTPUT)/src/info_config.h: $(INFO_JSON_FILES)
+ @$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
+ $(eval CMD=$(QMK_BIN) generate-config-h --quiet --keyboard $(KEYBOARD) --output $(INTERMEDIATE_OUTPUT)/src/info_config.h)
+ @$(BUILD_CMD)
+
+$(INTERMEDIATE_OUTPUT)/src/default_keyboard.c: $(INFO_JSON_FILES)
+ @$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
+ $(eval CMD=$(QMK_BIN) generate-keyboard-c --quiet --keyboard $(KEYBOARD) --output $(INTERMEDIATE_OUTPUT)/src/default_keyboard.c)
+ @$(BUILD_CMD)
+
+$(INTERMEDIATE_OUTPUT)/src/default_keyboard.h: $(INFO_JSON_FILES)
+ @$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
+ $(eval CMD=$(QMK_BIN) generate-keyboard-h --quiet --keyboard $(KEYBOARD) --include $(FOUND_KEYBOARD_H) --output $(INTERMEDIATE_OUTPUT)/src/default_keyboard.h)
+ @$(BUILD_CMD)
+
+generated-files: $(INTERMEDIATE_OUTPUT)/src/info_config.h $(INTERMEDIATE_OUTPUT)/src/default_keyboard.c $(INTERMEDIATE_OUTPUT)/src/default_keyboard.h
+
+generated-files: $(INTERMEDIATE_OUTPUT)/src/info_deps.d
+
+$(INTERMEDIATE_OUTPUT)/src/info_deps.d:
+ @$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
+ $(eval CMD=$(QMK_BIN) generate-make-dependencies -kb $(KEYBOARD) -km $(KEYMAP) -o $(INTERMEDIATE_OUTPUT)/src/info_deps.d)
+ @$(BUILD_CMD)
+
+-include $(INTERMEDIATE_OUTPUT)/src/info_deps.d
+
+.INTERMEDIATE : generated-files
+
+# Userspace setup and definitions
+ifeq ("$(USER_NAME)","")
+ USER_NAME := $(KEYMAP)
+endif
+USER_PATH := users/$(USER_NAME)
+
+# Pull in user level rules.mk
+-include $(USER_PATH)/rules.mk
+ifneq ("$(wildcard $(USER_PATH)/config.h)","")
+ CONFIG_H += $(USER_PATH)/config.h
+endif
+ifneq ("$(wildcard $(USER_PATH)/post_config.h)","")
+ POST_CONFIG_H += $(USER_PATH)/post_config.h
+endif
+
+# Disable features that a keyboard doesn't support
+-include $(BUILDDEFS_PATH)/disable_features.mk
+
+ifneq ("$(CONVERTER)","")
+ -include $(CONVERTER)/post_converter.mk
+endif
+
+# Pull in post_rules.mk files from all our subfolders
+ifneq ("$(wildcard $(KEYBOARD_PATH_1)/post_rules.mk)","")
+ include $(KEYBOARD_PATH_1)/post_rules.mk
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_2)/post_rules.mk)","")
+ include $(KEYBOARD_PATH_2)/post_rules.mk
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_3)/post_rules.mk)","")
+ include $(KEYBOARD_PATH_3)/post_rules.mk
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_4)/post_rules.mk)","")
+ include $(KEYBOARD_PATH_4)/post_rules.mk
+endif
+ifneq ("$(wildcard $(KEYBOARD_PATH_5)/post_rules.mk)","")
+ include $(KEYBOARD_PATH_5)/post_rules.mk
+endif
+
+ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","")
+ CONFIG_H += $(KEYMAP_PATH)/config.h
+endif
+ifneq ("$(KEYMAP_H)","")
+ CONFIG_H += $(KEYMAP_H)
+endif
+
+OPT_DEFS += -DKEYMAP_C=\"$(KEYMAP_C)\"
+
+# If a keymap or userspace places their keymap array in another file instead, allow for it to be included
+# !!NOTE!! -- For this to work, the source file cannot be part of $(SRC), so users should not add it via `SRC += `
+ifneq ($(strip $(INTROSPECTION_KEYMAP_C)),)
+OPT_DEFS += -DINTROSPECTION_KEYMAP_C=\"$(strip $(INTROSPECTION_KEYMAP_C))\"
+endif
+
+# project specific files
+SRC += \
+ $(KEYBOARD_SRC) \
+ $(QUANTUM_DIR)/keymap_introspection.c \
+ $(QUANTUM_SRC) \
+ $(QUANTUM_DIR)/main.c \
+
+# Optimize size but this may cause error "relocation truncated to fit"
+#EXTRALDFLAGS = -Wl,--relax
+
+# Search Path
+VPATH += $(KEYMAP_PATH)
+VPATH += $(USER_PATH)
+VPATH += $(KEYBOARD_PATHS)
+VPATH += $(COMMON_VPATH)
+VPATH += $(INTERMEDIATE_OUTPUT)/src
+
+include $(BUILDDEFS_PATH)/common_features.mk
+include $(BUILDDEFS_PATH)/generic_features.mk
+include $(TMK_PATH)/protocol.mk
+include $(PLATFORM_PATH)/common.mk
+
+SRC += $(patsubst %.c,%.clib,$(LIB_SRC))
+SRC += $(patsubst %.c,%.clib,$(QUANTUM_LIB_SRC))
+
+-include $(PLATFORM_PATH)/$(PLATFORM_KEY)/bootloader.mk
+include $(PLATFORM_PATH)/$(PLATFORM_KEY)/platform.mk
+-include $(PLATFORM_PATH)/$(PLATFORM_KEY)/flash.mk
+
+ifneq ($(strip $(PROTOCOL)),)
+PROTOCOL_KEY = $(strip $(shell echo $(PROTOCOL) | tr '[:upper:]' '[:lower:]'))
+else
+PROTOCOL_KEY = $(PLATFORM_KEY)
+endif
+include $(TMK_PATH)/protocol/$(PROTOCOL_KEY)/$(PROTOCOL_KEY).mk
+
+# Setup definitions based on the selected MCU
+$(eval $(call add_qmk_prefix_defs,MCU_ORIG,MCU))
+$(eval $(call add_qmk_prefix_defs,MCU_ARCH,MCU_ARCH))
+$(eval $(call add_qmk_prefix_defs,MCU_PORT_NAME,MCU_PORT_NAME))
+$(eval $(call add_qmk_prefix_defs,MCU_FAMILY,MCU_FAMILY))
+$(eval $(call add_qmk_prefix_defs,MCU_SERIES,MCU_SERIES))
+$(eval $(call add_qmk_prefix_defs,BOARD,BOARD))
+
+# Control whether intermediate file listings are generated
+# e.g.:
+# make handwired/onekey/blackpill_f411:default KEEP_INTERMEDIATES=yes
+# cat .build/obj_handwired_onekey_blackpill_f411_default/quantum/quantum.i | sed -e 's@^#.*@@g' -e 's@^\s*//.*@@g' -e '/^\s*$/d' | clang-format
+ifeq ($(strip $(KEEP_INTERMEDIATES)), yes)
+ OPT_DEFS += -save-temps=obj
+endif
+
+# TODO: remove this bodge?
+PROJECT_DEFS := $(OPT_DEFS)
+PROJECT_INC := $(VPATH) $(EXTRAINCDIRS) $(KEYBOARD_PATHS)
+PROJECT_CONFIG := $(CONFIG_H)
+
+CONFIG_H += $(POST_CONFIG_H)
+ALL_CONFIGS := $(PROJECT_CONFIG) $(CONFIG_H)
+
+OUTPUTS := $(INTERMEDIATE_OUTPUT)
+$(INTERMEDIATE_OUTPUT)_SRC := $(SRC) $(PLATFORM_SRC)
+$(INTERMEDIATE_OUTPUT)_DEFS := $(OPT_DEFS) \
+ -DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYBOARD_H=\"$(INTERMEDIATE_OUTPUT)/src/default_keyboard.h\" \
+ -DQMK_KEYMAP=\"$(KEYMAP)\" -DQMK_KEYMAP_H=\"$(KEYMAP).h\" -DQMK_KEYMAP_CONFIG_H=\"$(KEYMAP_PATH)/config.h\" \
+ $(PROJECT_DEFS)
+$(INTERMEDIATE_OUTPUT)_INC := $(VPATH) $(EXTRAINCDIRS) $(PROJECT_INC)
+$(INTERMEDIATE_OUTPUT)_CONFIG := $(CONFIG_H) $(PROJECT_CONFIG)
+
+# Default target.
+all: build check-size
+
+build: elf cpfirmware
+check-size: build
+check-md5: build
+objs-size: build
+
+ifneq ($(strip $(TOP_SYMBOLS)),)
+ifeq ($(strip $(TOP_SYMBOLS)),yes)
+NUM_TOP_SYMBOLS := 10
+else
+NUM_TOP_SYMBOLS := $(strip $(TOP_SYMBOLS))
+endif
+all: top-symbols
+check-size: top-symbols
+top-symbols: build
+ echo "###########################################"
+ echo "# Highest flash usage:"
+ $(NM) -Crtd --size-sort $(BUILD_DIR)/$(TARGET).elf | grep -i ' [t] ' | head -n$(NUM_TOP_SYMBOLS) | sed -e 's#^0000000# #g' -e 's#^000000# #g' -e 's#^00000# #g' -e 's#^0000# #g' -e 's#^000# #g' -e 's#^00# #g' -e 's#^0# #g'
+ echo "###########################################"
+ echo "# Highest RAM usage:"
+ $(NM) -Crtd --size-sort $(BUILD_DIR)/$(TARGET).elf | grep -i ' [dbv] ' | head -n$(NUM_TOP_SYMBOLS) | sed -e 's#^0000000# #g' -e 's#^000000# #g' -e 's#^00000# #g' -e 's#^0000# #g' -e 's#^000# #g' -e 's#^00# #g' -e 's#^0# #g'
+ echo "###########################################"
+endif
+
+include $(BUILDDEFS_PATH)/show_options.mk
+include $(BUILDDEFS_PATH)/common_rules.mk
+
+# Ensure we have generated files available for each of the objects
+define GEN_FILES
+$1: generated-files
+endef
+$(foreach O,$(OBJ),$(eval $(call GEN_FILES,$(patsubst %.a,%.o,$(O)))))
diff --git a/-/build_layout.mk b/-/build_layout.mk
new file mode 100644
index 00000000000..6166bd847c5
--- /dev/null
+++ b/-/build_layout.mk
@@ -0,0 +1,32 @@
+LAYOUTS_PATH := layouts
+LAYOUTS_REPOS := $(patsubst %/,%,$(sort $(dir $(wildcard $(LAYOUTS_PATH)/*/))))
+
+define SEARCH_LAYOUTS_REPO
+ LAYOUT_KEYMAP_PATH := $$(LAYOUTS_REPO)/$$(LAYOUT)/$$(KEYMAP)
+ LAYOUT_KEYMAP_JSON := $$(LAYOUT_KEYMAP_PATH)/keymap.json
+ LAYOUT_KEYMAP_C := $$(LAYOUT_KEYMAP_PATH)/keymap.c
+ ifneq ("$$(wildcard $$(LAYOUT_KEYMAP_JSON))","")
+ -include $$(LAYOUT_KEYMAP_PATH)/rules.mk
+ KEYMAP_JSON := $$(LAYOUT_KEYMAP_JSON)
+ KEYMAP_PATH := $$(LAYOUT_KEYMAP_PATH)
+ else ifneq ("$$(wildcard $$(LAYOUT_KEYMAP_C))","")
+ -include $$(LAYOUT_KEYMAP_PATH)/rules.mk
+ KEYMAP_C := $$(LAYOUT_KEYMAP_C)
+ KEYMAP_PATH := $$(LAYOUT_KEYMAP_PATH)
+ endif
+endef
+
+define SEARCH_LAYOUTS
+ $$(foreach LAYOUTS_REPO,$$(LAYOUTS_REPOS),$$(eval $$(call SEARCH_LAYOUTS_REPO)))
+endef
+
+ifneq ($(FORCE_LAYOUT),)
+ ifneq (,$(findstring $(FORCE_LAYOUT),$(LAYOUTS)))
+ $(info Forcing layout: $(FORCE_LAYOUT))
+ LAYOUTS := $(FORCE_LAYOUT)
+ else
+ $(call CATASTROPHIC_ERROR,Invalid layout,Forced layout does not exist)
+ endif
+endif
+
+$(foreach LAYOUT,$(LAYOUTS),$(eval $(call SEARCH_LAYOUTS)))
diff --git a/-/build_test.mk b/-/build_test.mk
new file mode 100644
index 00000000000..9eead77beab
--- /dev/null
+++ b/-/build_test.mk
@@ -0,0 +1,92 @@
+ifndef VERBOSE
+.SILENT:
+endif
+
+.DEFAULT_GOAL := all
+
+OPT = g
+
+include paths.mk
+include $(BUILDDEFS_PATH)/message.mk
+
+TARGET=test/$(TEST)
+
+GTEST_OUTPUT = $(BUILD_DIR)/gtest
+
+TEST_OBJ = $(BUILD_DIR)/test_obj
+
+OUTPUTS := $(TEST_OBJ)/$(TEST) $(GTEST_OUTPUT)
+
+GTEST_INC := \
+ $(LIB_PATH)/googletest/googletest/include \
+ $(LIB_PATH)/googletest/googlemock/include
+
+GTEST_INTERNAL_INC := \
+ $(LIB_PATH)/googletest/googletest \
+ $(LIB_PATH)/googletest/googlemock
+
+$(GTEST_OUTPUT)_SRC := \
+ googletest/src/gtest-all.cc\
+ googlemock/src/gmock-all.cc
+
+$(GTEST_OUTPUT)_DEFS :=
+$(GTEST_OUTPUT)_INC := $(GTEST_INC) $(GTEST_INTERNAL_INC)
+
+LDFLAGS += -lstdc++ -lpthread -shared-libgcc
+CREATE_MAP := no
+
+VPATH += \
+ $(LIB_PATH)/googletest \
+ $(LIB_PATH)/googlemock \
+ $(COMMON_VPATH) \
+ $(TEST_PATH)
+
+all: elf
+
+PLATFORM:=TEST
+PLATFORM_KEY:=test
+BOOTLOADER_TYPE:=none
+
+ifeq ($(strip $(DEBUG)), 1)
+CONSOLE_ENABLE = yes
+endif
+
+ifneq ($(filter $(FULL_TESTS),$(TEST)),)
+include tests/test_common/build.mk
+include $(TEST_PATH)/test.mk
+endif
+
+include $(BUILDDEFS_PATH)/common_features.mk
+include $(BUILDDEFS_PATH)/generic_features.mk
+include $(PLATFORM_PATH)/common.mk
+include $(TMK_PATH)/protocol.mk
+include $(QUANTUM_PATH)/debounce/tests/rules.mk
+include $(QUANTUM_PATH)/encoder/tests/rules.mk
+include $(QUANTUM_PATH)/os_detection/tests/rules.mk
+include $(QUANTUM_PATH)/sequencer/tests/rules.mk
+include $(QUANTUM_PATH)/wear_leveling/tests/rules.mk
+include $(QUANTUM_PATH)/logging/print.mk
+include $(PLATFORM_PATH)/test/rules.mk
+ifneq ($(filter $(FULL_TESTS),$(TEST)),)
+include $(BUILDDEFS_PATH)/build_full_test.mk
+endif
+
+$(TEST)_SRC += \
+ tests/test_common/main.cpp \
+ $(QUANTUM_PATH)/logging/print.c
+
+ifneq ($(strip $(INTROSPECTION_KEYMAP_C)),)
+$(TEST)_DEFS += -DINTROSPECTION_KEYMAP_C=\"$(strip $(INTROSPECTION_KEYMAP_C))\"
+endif
+
+$(TEST_OBJ)/$(TEST)_SRC := $($(TEST)_SRC)
+$(TEST_OBJ)/$(TEST)_INC := $($(TEST)_INC) $(VPATH) $(GTEST_INC)
+$(TEST_OBJ)/$(TEST)_DEFS := $($(TEST)_DEFS)
+$(TEST_OBJ)/$(TEST)_CONFIG := $($(TEST)_CONFIG)
+
+include $(PLATFORM_PATH)/$(PLATFORM_KEY)/platform.mk
+include $(BUILDDEFS_PATH)/common_rules.mk
+
+
+$(shell mkdir -p $(BUILD_DIR)/test 2>/dev/null)
+$(shell mkdir -p $(TEST_OBJ) 2>/dev/null)
diff --git a/-/build_vial.mk b/-/build_vial.mk
new file mode 100644
index 00000000000..ce31d295625
--- /dev/null
+++ b/-/build_vial.mk
@@ -0,0 +1,36 @@
+# Copyright 2023 Ilya Zhuravlev
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+QMK_SETTINGS ?= yes
+TAP_DANCE_ENABLE ?= yes
+ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
+ OPT_DEFS += -DTAPPING_TERM_PER_KEY
+endif
+COMBO_ENABLE ?= yes
+KEY_OVERRIDE_ENABLE ?= yes
+SRC += $(QUANTUM_DIR)/vial.c
+OPT_DEFS += -DVIAL_ENABLE -DNO_DEBUG -DSERIAL_NUMBER=\"vial:f64c2b3c\"
+
+ifeq ($(strip $(VIAL_INSECURE)), yes)
+ OPT_DEFS += -DVIAL_INSECURE
+endif
+
+ifeq ($(strip $(VIALRGB_ENABLE)), yes)
+ SRC += $(QUANTUM_DIR)/vialrgb.c
+ OPT_DEFS += -DVIALRGB_ENABLE
+endif
+
+ifeq ($(strip $(QMK_SETTINGS)), yes)
+ AUTO_SHIFT_ENABLE := yes
+ SRC += $(QUANTUM_DIR)/qmk_settings.c
+ OPT_DEFS += -DQMK_SETTINGS \
+ -DAUTO_SHIFT_NO_SETUP -DAUTO_SHIFT_REPEAT_PER_KEY -DAUTO_SHIFT_NO_AUTO_REPEAT_PER_KEY \
+ -DPERMISSIVE_HOLD_PER_KEY -DHOLD_ON_OTHER_KEY_PRESS_PER_KEY -DTAPPING_FORCE_HOLD_PER_KEY -DRETRO_TAPPING_PER_KEY \
+ -DCOMBO_TERM_PER_COMBO
+endif
+
+# Generate Vial layout definition header from JSON
+$(QUANTUM_DIR)/vial.c: $(INTERMEDIATE_OUTPUT)/src/vial_generated_keyboard_definition.h
+
+$(INTERMEDIATE_OUTPUT)/src/vial_generated_keyboard_definition.h: $(KEYMAP_PATH)/vial.json
+ python3 util/vial_generate_definition.py $(KEYMAP_PATH)/vial.json $(INTERMEDIATE_OUTPUT)/src/vial_generated_keyboard_definition.h
diff --git a/-/common_features.mk b/-/common_features.mk
new file mode 100644
index 00000000000..8446f4250a6
--- /dev/null
+++ b/-/common_features.mk
@@ -0,0 +1,950 @@
+# Copyright 2017 Fred Sundvik
+#
+# This 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 .
+
+QUANTUM_SRC += \
+ $(QUANTUM_DIR)/quantum.c \
+ $(QUANTUM_DIR)/bitwise.c \
+ $(QUANTUM_DIR)/led.c \
+ $(QUANTUM_DIR)/action.c \
+ $(QUANTUM_DIR)/action_layer.c \
+ $(QUANTUM_DIR)/action_tapping.c \
+ $(QUANTUM_DIR)/action_util.c \
+ $(QUANTUM_DIR)/eeconfig.c \
+ $(QUANTUM_DIR)/keyboard.c \
+ $(QUANTUM_DIR)/keymap_common.c \
+ $(QUANTUM_DIR)/keycode_config.c \
+ $(QUANTUM_DIR)/sync_timer.c \
+ $(QUANTUM_DIR)/logging/debug.c \
+ $(QUANTUM_DIR)/logging/sendchar.c \
+
+VPATH += $(QUANTUM_DIR)/logging
+# Fall back to lib/printf if there is no platform provided print
+ifeq ("$(wildcard $(PLATFORM_PATH)/$(PLATFORM_KEY)/printf.mk)","")
+ include $(QUANTUM_PATH)/logging/print.mk
+else
+ include $(PLATFORM_PATH)/$(PLATFORM_KEY)/printf.mk
+endif
+
+ifeq ($(strip $(DEBUG_MATRIX_SCAN_RATE_ENABLE)), yes)
+ OPT_DEFS += -DDEBUG_MATRIX_SCAN_RATE
+ CONSOLE_ENABLE = yes
+else ifeq ($(strip $(DEBUG_MATRIX_SCAN_RATE_ENABLE)), api)
+ OPT_DEFS += -DDEBUG_MATRIX_SCAN_RATE
+endif
+
+AUDIO_ENABLE ?= no
+ifeq ($(strip $(AUDIO_ENABLE)), yes)
+ ifeq ($(PLATFORM),CHIBIOS)
+ AUDIO_DRIVER ?= dac_basic
+ ifeq ($(strip $(AUDIO_DRIVER)), dac_basic)
+ OPT_DEFS += -DAUDIO_DRIVER_DAC
+ else ifeq ($(strip $(AUDIO_DRIVER)), dac_additive)
+ OPT_DEFS += -DAUDIO_DRIVER_DAC
+ ## stm32f2 and above have a usable DAC unit, f1 do not, and need to use pwm instead
+ else ifeq ($(strip $(AUDIO_DRIVER)), pwm_software)
+ OPT_DEFS += -DAUDIO_DRIVER_PWM
+ else ifeq ($(strip $(AUDIO_DRIVER)), pwm_hardware)
+ OPT_DEFS += -DAUDIO_DRIVER_PWM
+ endif
+ else
+ # fallback for all other platforms is pwm
+ AUDIO_DRIVER ?= pwm_hardware
+ OPT_DEFS += -DAUDIO_DRIVER_PWM
+ endif
+ OPT_DEFS += -DAUDIO_ENABLE
+ COMMON_VPATH += $(QUANTUM_PATH)/audio
+ MUSIC_ENABLE = yes
+ SRC += $(QUANTUM_DIR)/process_keycode/process_audio.c
+ SRC += $(QUANTUM_DIR)/process_keycode/process_clicky.c
+ SRC += $(QUANTUM_DIR)/audio/audio.c ## common audio code, hardware agnostic
+ SRC += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/audio_$(strip $(AUDIO_DRIVER)).c
+ SRC += $(QUANTUM_DIR)/audio/voices.c
+ SRC += $(QUANTUM_DIR)/audio/luts.c
+endif
+
+ifeq ($(strip $(SEQUENCER_ENABLE)), yes)
+ OPT_DEFS += -DSEQUENCER_ENABLE
+ MUSIC_ENABLE = yes
+ SRC += $(QUANTUM_DIR)/sequencer/sequencer.c
+ SRC += $(QUANTUM_DIR)/process_keycode/process_sequencer.c
+endif
+
+ifeq ($(strip $(MIDI_ENABLE)), yes)
+ OPT_DEFS += -DMIDI_ENABLE
+ MUSIC_ENABLE = yes
+ COMMON_VPATH += $(QUANTUM_PATH)/midi
+ SRC += $(QUANTUM_DIR)/midi/midi.c
+ SRC += $(QUANTUM_DIR)/midi/midi_device.c
+ SRC += $(QUANTUM_DIR)/midi/qmk_midi.c
+ SRC += $(QUANTUM_DIR)/midi/sysex_tools.c
+ SRC += $(QUANTUM_DIR)/midi/bytequeue/bytequeue.c
+ SRC += $(QUANTUM_DIR)/midi/bytequeue/interrupt_setting.c
+ SRC += $(QUANTUM_DIR)/process_keycode/process_midi.c
+endif
+
+MUSIC_ENABLE ?= no
+ifeq ($(MUSIC_ENABLE), yes)
+ SRC += $(QUANTUM_DIR)/process_keycode/process_music.c
+endif
+
+VALID_STENO_PROTOCOL_TYPES := geminipr txbolt all
+STENO_PROTOCOL ?= all
+ifeq ($(strip $(STENO_ENABLE)), yes)
+ ifeq ($(filter $(STENO_PROTOCOL),$(VALID_STENO_PROTOCOL_TYPES)),)
+ $(call CATASTROPHIC_ERROR,Invalid STENO_PROTOCOL,STENO_PROTOCOL="$(STENO_PROTOCOL)" is not a valid stenography protocol)
+ else
+ OPT_DEFS += -DSTENO_ENABLE
+ VIRTSER_ENABLE ?= yes
+
+ ifeq ($(strip $(STENO_PROTOCOL)), geminipr)
+ OPT_DEFS += -DSTENO_ENABLE_GEMINI
+ endif
+ ifeq ($(strip $(STENO_PROTOCOL)), txbolt)
+ OPT_DEFS += -DSTENO_ENABLE_BOLT
+ endif
+ ifeq ($(strip $(STENO_PROTOCOL)), all)
+ OPT_DEFS += -DSTENO_ENABLE_ALL
+ OPT_DEFS += -DSTENO_ENABLE_GEMINI
+ OPT_DEFS += -DSTENO_ENABLE_BOLT
+ endif
+
+ SRC += $(QUANTUM_DIR)/process_keycode/process_steno.c
+ endif
+endif
+
+ifeq ($(strip $(VIRTSER_ENABLE)), yes)
+ OPT_DEFS += -DVIRTSER_ENABLE
+endif
+
+ifeq ($(strip $(MOUSEKEY_ENABLE)), yes)
+ OPT_DEFS += -DMOUSEKEY_ENABLE
+ MOUSE_ENABLE := yes
+ SRC += $(QUANTUM_DIR)/mousekey.c
+endif
+
+VALID_POINTING_DEVICE_DRIVER_TYPES := adns5050 adns9800 analog_joystick cirque_pinnacle_i2c cirque_pinnacle_spi paw3204 pmw3320 pmw3360 pmw3389 pimoroni_trackball custom
+ifeq ($(strip $(POINTING_DEVICE_ENABLE)), yes)
+ ifeq ($(filter $(POINTING_DEVICE_DRIVER),$(VALID_POINTING_DEVICE_DRIVER_TYPES)),)
+ $(call CATASTROPHIC_ERROR,Invalid POINTING_DEVICE_DRIVER,POINTING_DEVICE_DRIVER="$(POINTING_DEVICE_DRIVER)" is not a valid pointing device type)
+ else
+ OPT_DEFS += -DPOINTING_DEVICE_ENABLE
+ MOUSE_ENABLE := yes
+ VPATH += $(QUANTUM_DIR)/pointing_device
+ SRC += $(QUANTUM_DIR)/pointing_device/pointing_device.c
+ SRC += $(QUANTUM_DIR)/pointing_device/pointing_device_drivers.c
+ SRC += $(QUANTUM_DIR)/pointing_device/pointing_device_auto_mouse.c
+ ifneq ($(strip $(POINTING_DEVICE_DRIVER)), custom)
+ SRC += drivers/sensors/$(strip $(POINTING_DEVICE_DRIVER)).c
+ OPT_DEFS += -DPOINTING_DEVICE_DRIVER_$(strip $(shell echo $(POINTING_DEVICE_DRIVER) | tr '[:lower:]' '[:upper:]'))
+ endif
+ OPT_DEFS += -DPOINTING_DEVICE_DRIVER_$(strip $(POINTING_DEVICE_DRIVER))
+ ifeq ($(strip $(POINTING_DEVICE_DRIVER)), adns9800)
+ OPT_DEFS += -DSTM32_SPI -DHAL_USE_SPI=TRUE
+ QUANTUM_LIB_SRC += spi_master.c
+ else ifeq ($(strip $(POINTING_DEVICE_DRIVER)), analog_joystick)
+ OPT_DEFS += -DSTM32_ADC -DHAL_USE_ADC=TRUE
+ LIB_SRC += analog.c
+ else ifeq ($(strip $(POINTING_DEVICE_DRIVER)), cirque_pinnacle_i2c)
+ OPT_DEFS += -DSTM32_I2C -DHAL_USE_I2C=TRUE
+ SRC += drivers/sensors/cirque_pinnacle.c
+ SRC += drivers/sensors/cirque_pinnacle_gestures.c
+ SRC += $(QUANTUM_DIR)/pointing_device/pointing_device_gestures.c
+ QUANTUM_LIB_SRC += i2c_master.c
+ else ifeq ($(strip $(POINTING_DEVICE_DRIVER)), cirque_pinnacle_spi)
+ OPT_DEFS += -DSTM32_SPI -DHAL_USE_SPI=TRUE
+ SRC += drivers/sensors/cirque_pinnacle.c
+ SRC += drivers/sensors/cirque_pinnacle_gestures.c
+ SRC += $(QUANTUM_DIR)/pointing_device/pointing_device_gestures.c
+ QUANTUM_LIB_SRC += spi_master.c
+ else ifeq ($(strip $(POINTING_DEVICE_DRIVER)), pimoroni_trackball)
+ OPT_DEFS += -DSTM32_SPI -DHAL_USE_I2C=TRUE
+ QUANTUM_LIB_SRC += i2c_master.c
+ else ifneq ($(filter $(strip $(POINTING_DEVICE_DRIVER)),pmw3360 pmw3389),)
+ OPT_DEFS += -DSTM32_SPI -DHAL_USE_SPI=TRUE
+ SRC += drivers/sensors/pmw33xx_common.c
+ QUANTUM_LIB_SRC += spi_master.c
+ endif
+ endif
+endif
+
+QUANTUM_PAINTER_ENABLE ?= no
+ifeq ($(strip $(QUANTUM_PAINTER_ENABLE)), yes)
+ include $(QUANTUM_DIR)/painter/rules.mk
+endif
+
+VALID_EEPROM_DRIVER_TYPES := vendor custom transient i2c spi wear_leveling legacy_stm32_flash
+EEPROM_DRIVER ?= vendor
+ifeq ($(filter $(EEPROM_DRIVER),$(VALID_EEPROM_DRIVER_TYPES)),)
+ $(call CATASTROPHIC_ERROR,Invalid EEPROM_DRIVER,EEPROM_DRIVER="$(EEPROM_DRIVER)" is not a valid EEPROM driver)
+else
+ OPT_DEFS += -DEEPROM_ENABLE
+ COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/eeprom
+ COMMON_VPATH += $(DRIVER_PATH)/eeprom
+ COMMON_VPATH += $(PLATFORM_COMMON_DIR)
+ ifeq ($(strip $(EEPROM_DRIVER)), custom)
+ # Custom EEPROM implementation -- only needs to implement init/erase/read_block/write_block
+ OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_CUSTOM
+ SRC += eeprom_driver.c
+ else ifeq ($(strip $(EEPROM_DRIVER)), wear_leveling)
+ # Wear-leveling EEPROM implementation
+ OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_WEAR_LEVELING
+ SRC += eeprom_driver.c eeprom_wear_leveling.c
+ else ifeq ($(strip $(EEPROM_DRIVER)), i2c)
+ # External I2C EEPROM implementation
+ OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_I2C
+ QUANTUM_LIB_SRC += i2c_master.c
+ SRC += eeprom_driver.c eeprom_i2c.c
+ else ifeq ($(strip $(EEPROM_DRIVER)), spi)
+ # External SPI EEPROM implementation
+ OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_SPI
+ QUANTUM_LIB_SRC += spi_master.c
+ SRC += eeprom_driver.c eeprom_spi.c
+ else ifeq ($(strip $(EEPROM_DRIVER)), legacy_stm32_flash)
+ # STM32 Emulated EEPROM, backed by MCU flash (soon to be deprecated)
+ OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_LEGACY_EMULATED_FLASH
+ COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/flash
+ COMMON_VPATH += $(DRIVER_PATH)/flash
+ SRC += eeprom_driver.c eeprom_legacy_emulated_flash.c legacy_flash_ops.c
+ else ifeq ($(strip $(EEPROM_DRIVER)), transient)
+ # Transient EEPROM implementation -- no data storage but provides runtime area for it
+ OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_TRANSIENT
+ SRC += eeprom_driver.c eeprom_transient.c
+ else ifeq ($(strip $(EEPROM_DRIVER)), vendor)
+ # Vendor-implemented EEPROM
+ OPT_DEFS += -DEEPROM_VENDOR
+ ifeq ($(PLATFORM),AVR)
+ # Automatically provided by avr-libc, nothing required
+ else ifeq ($(PLATFORM),CHIBIOS)
+ ifneq ($(filter %_STM32F072xB %_STM32F042x6, $(MCU_SERIES)_$(MCU_LDSCRIPT)),)
+ # STM32 Emulated EEPROM, backed by MCU flash (soon to be deprecated)
+ OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_LEGACY_EMULATED_FLASH
+ COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/flash
+ COMMON_VPATH += $(DRIVER_PATH)/flash
+ SRC += eeprom_driver.c eeprom_legacy_emulated_flash.c legacy_flash_ops.c
+ else ifneq ($(filter $(MCU_SERIES),STM32F1xx STM32F3xx STM32F4xx STM32L4xx STM32G4xx WB32F3G71xx WB32FQ95xx GD32VF103),)
+ # Wear-leveling EEPROM implementation, backed by MCU flash
+ OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_WEAR_LEVELING
+ SRC += eeprom_driver.c eeprom_wear_leveling.c
+ WEAR_LEVELING_DRIVER ?= embedded_flash
+ else ifneq ($(filter $(MCU_SERIES),STM32L0xx STM32L1xx),)
+ # True EEPROM on STM32L0xx, L1xx
+ OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_STM32_L0_L1
+ SRC += eeprom_driver.c eeprom_stm32_L0_L1.c
+ else ifneq ($(filter $(MCU_SERIES),RP2040),)
+ # Wear-leveling EEPROM implementation, backed by RP2040 flash
+ OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_WEAR_LEVELING
+ SRC += eeprom_driver.c eeprom_wear_leveling.c
+ WEAR_LEVELING_DRIVER ?= rp2040_flash
+ else ifneq ($(filter $(MCU_SERIES),KL2x K20x),)
+ # Teensy EEPROM implementations
+ OPT_DEFS += -DEEPROM_KINETIS_FLEXRAM
+ SRC += eeprom_kinetis_flexram.c
+ else
+ # Fall back to transient, i.e. non-persistent
+ OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_TRANSIENT
+ SRC += eeprom_driver.c eeprom_transient.c
+ endif
+ else ifeq ($(PLATFORM),ARM_ATSAM)
+ # arm_atsam EEPROM
+ OPT_DEFS += -DEEPROM_SAMD
+ SRC += eeprom_samd.c
+ else ifeq ($(PLATFORM),TEST)
+ # Test harness "EEPROM"
+ OPT_DEFS += -DEEPROM_TEST_HARNESS
+ SRC += eeprom.c
+ endif
+ endif
+endif
+
+VALID_WEAR_LEVELING_DRIVER_TYPES := custom embedded_flash spi_flash rp2040_flash legacy
+WEAR_LEVELING_DRIVER ?= none
+ifneq ($(strip $(WEAR_LEVELING_DRIVER)),none)
+ ifeq ($(filter $(WEAR_LEVELING_DRIVER),$(VALID_WEAR_LEVELING_DRIVER_TYPES)),)
+ $(call CATASTROPHIC_ERROR,Invalid WEAR_LEVELING_DRIVER,WEAR_LEVELING_DRIVER="$(WEAR_LEVELING_DRIVER)" is not a valid wear leveling driver)
+ else
+ FNV_ENABLE := yes
+ OPT_DEFS += -DWEAR_LEVELING_ENABLE
+ OPT_DEFS += -DWEAR_LEVELING_$(strip $(shell echo $(WEAR_LEVELING_DRIVER) | tr '[:lower:]' '[:upper:]'))
+ COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/wear_leveling
+ COMMON_VPATH += $(DRIVER_PATH)/wear_leveling
+ COMMON_VPATH += $(QUANTUM_DIR)/wear_leveling
+ SRC += wear_leveling.c
+ ifeq ($(strip $(WEAR_LEVELING_DRIVER)), embedded_flash)
+ OPT_DEFS += -DHAL_USE_EFL
+ SRC += wear_leveling_efl.c
+ POST_CONFIG_H += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/wear_leveling/wear_leveling_efl_config.h
+ else ifeq ($(strip $(WEAR_LEVELING_DRIVER)), spi_flash)
+ FLASH_DRIVER := spi
+ SRC += wear_leveling_flash_spi.c
+ POST_CONFIG_H += $(DRIVER_PATH)/wear_leveling/wear_leveling_flash_spi_config.h
+ else ifeq ($(strip $(WEAR_LEVELING_DRIVER)), rp2040_flash)
+ SRC += wear_leveling_rp2040_flash.c
+ POST_CONFIG_H += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_PATH)/wear_leveling/wear_leveling_rp2040_flash_config.h
+ else ifeq ($(strip $(WEAR_LEVELING_DRIVER)), legacy)
+ COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/flash
+ SRC += legacy_flash_ops.c wear_leveling_legacy.c
+ POST_CONFIG_H += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/wear_leveling/wear_leveling_legacy_config.h
+ endif
+ endif
+endif
+
+VALID_FLASH_DRIVER_TYPES := spi
+FLASH_DRIVER ?= none
+ifneq ($(strip $(FLASH_DRIVER)), none)
+ ifeq ($(filter $(FLASH_DRIVER),$(VALID_FLASH_DRIVER_TYPES)),)
+ $(call CATASTROPHIC_ERROR,Invalid FLASH_DRIVER,FLASH_DRIVER="$(FLASH_DRIVER)" is not a valid flash driver)
+ else
+ OPT_DEFS += -DFLASH_ENABLE
+ ifeq ($(strip $(FLASH_DRIVER)),spi)
+ OPT_DEFS += -DFLASH_DRIVER -DFLASH_SPI
+ COMMON_VPATH += $(DRIVER_PATH)/flash
+ SRC += flash_spi.c
+ QUANTUM_LIB_SRC += spi_master.c
+ endif
+ endif
+endif
+
+RGBLIGHT_ENABLE ?= no
+VALID_RGBLIGHT_TYPES := ws2812 apa102 custom
+
+ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
+ RGBLIGHT_DRIVER ?= ws2812
+
+ ifeq ($(filter $(RGBLIGHT_DRIVER),$(VALID_RGBLIGHT_TYPES)),)
+ $(call CATASTROPHIC_ERROR,Invalid RGBLIGHT_DRIVER,RGBLIGHT_DRIVER="$(RGBLIGHT_DRIVER)" is not a valid RGB type)
+ else
+ COMMON_VPATH += $(QUANTUM_DIR)/rgblight
+ POST_CONFIG_H += $(QUANTUM_DIR)/rgblight/rgblight_post_config.h
+ OPT_DEFS += -DRGBLIGHT_ENABLE
+ SRC += $(QUANTUM_DIR)/color.c
+ SRC += $(QUANTUM_DIR)/rgblight/rgblight.c
+ CIE1931_CURVE := yes
+ RGB_KEYCODES_ENABLE := yes
+ endif
+
+ ifeq ($(strip $(RGBLIGHT_DRIVER)), ws2812)
+ WS2812_DRIVER_REQUIRED := yes
+ endif
+
+ ifeq ($(strip $(RGBLIGHT_DRIVER)), apa102)
+ APA102_DRIVER_REQUIRED := yes
+ endif
+
+ ifeq ($(strip $(RGBLIGHT_DRIVER)), custom)
+ OPT_DEFS += -DRGBLIGHT_CUSTOM_DRIVER
+ endif
+endif
+
+LED_MATRIX_ENABLE ?= no
+VALID_LED_MATRIX_TYPES := is31fl3731 is31fl3742a is31fl3743a is31fl3745 is31fl3746a ckled2001 custom
+# TODO: is31fl3733 is31fl3737 is31fl3741
+
+ifeq ($(strip $(LED_MATRIX_ENABLE)), yes)
+ ifeq ($(filter $(LED_MATRIX_DRIVER),$(VALID_LED_MATRIX_TYPES)),)
+ $(call CATASTROPHIC_ERROR,Invalid LED_MATRIX_DRIVER,LED_MATRIX_DRIVER="$(LED_MATRIX_DRIVER)" is not a valid matrix type)
+ endif
+ OPT_DEFS += -DLED_MATRIX_ENABLE
+ifneq (,$(filter $(MCU), atmega16u2 atmega32u2 at90usb162))
+ # ATmegaxxU2 does not have hardware MUL instruction - lib8tion must be told to use software multiplication routines
+ OPT_DEFS += -DLIB8_ATTINY
+endif
+ COMMON_VPATH += $(QUANTUM_DIR)/led_matrix
+ COMMON_VPATH += $(QUANTUM_DIR)/led_matrix/animations
+ COMMON_VPATH += $(QUANTUM_DIR)/led_matrix/animations/runners
+ POST_CONFIG_H += $(QUANTUM_DIR)/led_matrix/post_config.h
+ SRC += $(QUANTUM_DIR)/process_keycode/process_backlight.c
+ SRC += $(QUANTUM_DIR)/led_matrix/led_matrix.c
+ SRC += $(QUANTUM_DIR)/led_matrix/led_matrix_drivers.c
+ SRC += $(LIB_PATH)/lib8tion/lib8tion.c
+ CIE1931_CURVE := yes
+
+ ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3731)
+ OPT_DEFS += -DIS31FL3731 -DSTM32_I2C -DHAL_USE_I2C=TRUE
+ COMMON_VPATH += $(DRIVER_PATH)/led/issi
+ SRC += is31fl3731-simple.c
+ QUANTUM_LIB_SRC += i2c_master.c
+ endif
+
+ ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3742a)
+ OPT_DEFS += -DIS31FLCOMMON -DIS31FL3742A -DSTM32_I2C -DHAL_USE_I2C=TRUE
+ COMMON_VPATH += $(DRIVER_PATH)/led/issi
+ SRC += is31flcommon.c
+ QUANTUM_LIB_SRC += i2c_master.c
+ endif
+
+ ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3743a)
+ OPT_DEFS += -DIS31FLCOMMON -DIS31FL3743A -DSTM32_I2C -DHAL_USE_I2C=TRUE
+ COMMON_VPATH += $(DRIVER_PATH)/led/issi
+ SRC += is31flcommon.c
+ QUANTUM_LIB_SRC += i2c_master.c
+ endif
+
+ ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3745)
+ OPT_DEFS += -DIS31FLCOMMON -DIS31FL3745 -DSTM32_I2C -DHAL_USE_I2C=TRUE
+ COMMON_VPATH += $(DRIVER_PATH)/led/issi
+ SRC += is31flcommon.c
+ QUANTUM_LIB_SRC += i2c_master.c
+ endif
+
+ ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3746a)
+ OPT_DEFS += -DIS31FLCOMMON -DIS31FL3746A -DSTM32_I2C -DHAL_USE_I2C=TRUE
+ COMMON_VPATH += $(DRIVER_PATH)/led/issi
+ SRC += is31flcommon.c
+ QUANTUM_LIB_SRC += i2c_master.c
+ endif
+
+ ifeq ($(strip $(LED_MATRIX_DRIVER)), ckled2001)
+ OPT_DEFS += -DCKLED2001 -DSTM32_I2C -DHAL_USE_I2C=TRUE
+ COMMON_VPATH += $(DRIVER_PATH)/led
+ SRC += ckled2001-simple.c
+ QUANTUM_LIB_SRC += i2c_master.c
+ endif
+
+endif
+
+RGB_MATRIX_ENABLE ?= no
+
+VALID_RGB_MATRIX_TYPES := aw20216 is31fl3731 is31fl3733 is31fl3736 is31fl3737 is31fl3741 is31fl3742a is31fl3743a is31fl3745 is31fl3746a ckled2001 ws2812 custom
+ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
+ ifeq ($(filter $(RGB_MATRIX_DRIVER),$(VALID_RGB_MATRIX_TYPES)),)
+ $(call CATASTROPHIC_ERROR,Invalid RGB_MATRIX_DRIVER,RGB_MATRIX_DRIVER="$(RGB_MATRIX_DRIVER)" is not a valid matrix type)
+ endif
+ OPT_DEFS += -DRGB_MATRIX_ENABLE
+ifneq (,$(filter $(MCU), atmega16u2 atmega32u2 at90usb162))
+ # ATmegaxxU2 does not have hardware MUL instruction - lib8tion must be told to use software multiplication routines
+ OPT_DEFS += -DLIB8_ATTINY
+endif
+ COMMON_VPATH += $(QUANTUM_DIR)/rgb_matrix
+ COMMON_VPATH += $(QUANTUM_DIR)/rgb_matrix/animations
+ COMMON_VPATH += $(QUANTUM_DIR)/rgb_matrix/animations/runners
+ POST_CONFIG_H += $(QUANTUM_DIR)/rgb_matrix/post_config.h
+ SRC += $(QUANTUM_DIR)/color.c
+ SRC += $(QUANTUM_DIR)/rgb_matrix/rgb_matrix.c
+ SRC += $(QUANTUM_DIR)/rgb_matrix/rgb_matrix_drivers.c
+ SRC += $(LIB_PATH)/lib8tion/lib8tion.c
+ CIE1931_CURVE := yes
+ RGB_KEYCODES_ENABLE := yes
+
+ ifeq ($(strip $(RGB_MATRIX_DRIVER)), aw20216)
+ OPT_DEFS += -DAW20216 -DSTM32_SPI -DHAL_USE_SPI=TRUE
+ COMMON_VPATH += $(DRIVER_PATH)/led
+ SRC += aw20216.c
+ QUANTUM_LIB_SRC += spi_master.c
+ endif
+
+ ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3731)
+ OPT_DEFS += -DIS31FL3731 -DSTM32_I2C -DHAL_USE_I2C=TRUE
+ COMMON_VPATH += $(DRIVER_PATH)/led/issi
+ SRC += is31fl3731.c
+ QUANTUM_LIB_SRC += i2c_master.c
+ endif
+
+ ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3733)
+ OPT_DEFS += -DIS31FL3733 -DSTM32_I2C -DHAL_USE_I2C=TRUE
+ COMMON_VPATH += $(DRIVER_PATH)/led/issi
+ SRC += is31fl3733.c
+ QUANTUM_LIB_SRC += i2c_master.c
+ endif
+
+ ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3736)
+ OPT_DEFS += -DIS31FL3736 -DSTM32_I2C -DHAL_USE_I2C=TRUE
+ COMMON_VPATH += $(DRIVER_PATH)/led/issi
+ SRC += is31fl3736.c
+ QUANTUM_LIB_SRC += i2c_master.c
+ endif
+
+ ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3737)
+ OPT_DEFS += -DIS31FL3737 -DSTM32_I2C -DHAL_USE_I2C=TRUE
+ COMMON_VPATH += $(DRIVER_PATH)/led/issi
+ SRC += is31fl3737.c
+ QUANTUM_LIB_SRC += i2c_master.c
+ endif
+
+ ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3741)
+ OPT_DEFS += -DIS31FL3741 -DSTM32_I2C -DHAL_USE_I2C=TRUE
+ COMMON_VPATH += $(DRIVER_PATH)/led/issi
+ SRC += is31fl3741.c
+ QUANTUM_LIB_SRC += i2c_master.c
+ endif
+
+ ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3742a)
+ OPT_DEFS += -DIS31FLCOMMON -DIS31FL3742A -DSTM32_I2C -DHAL_USE_I2C=TRUE
+ COMMON_VPATH += $(DRIVER_PATH)/led/issi
+ SRC += is31flcommon.c
+ QUANTUM_LIB_SRC += i2c_master.c
+ endif
+
+ ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3743a)
+ OPT_DEFS += -DIS31FLCOMMON -DIS31FL3743A -DSTM32_I2C -DHAL_USE_I2C=TRUE
+ COMMON_VPATH += $(DRIVER_PATH)/led/issi
+ SRC += is31flcommon.c
+ QUANTUM_LIB_SRC += i2c_master.c
+ endif
+
+ ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3745)
+ OPT_DEFS += -DIS31FLCOMMON -DIS31FL3745 -DSTM32_I2C -DHAL_USE_I2C=TRUE
+ COMMON_VPATH += $(DRIVER_PATH)/led/issi
+ SRC += is31flcommon.c
+ QUANTUM_LIB_SRC += i2c_master.c
+ endif
+
+ ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3746a)
+ OPT_DEFS += -DIS31FLCOMMON -DIS31FL3746A -DSTM32_I2C -DHAL_USE_I2C=TRUE
+ COMMON_VPATH += $(DRIVER_PATH)/led/issi
+ SRC += is31flcommon.c
+ QUANTUM_LIB_SRC += i2c_master.c
+ endif
+
+ ifeq ($(strip $(RGB_MATRIX_DRIVER)), ckled2001)
+ OPT_DEFS += -DCKLED2001 -DSTM32_I2C -DHAL_USE_I2C=TRUE
+ COMMON_VPATH += $(DRIVER_PATH)/led
+ SRC += ckled2001.c
+ QUANTUM_LIB_SRC += i2c_master.c
+ endif
+
+ ifeq ($(strip $(RGB_MATRIX_DRIVER)), ws2812)
+ OPT_DEFS += -DWS2812
+ WS2812_DRIVER_REQUIRED := yes
+ endif
+
+ ifeq ($(strip $(RGB_MATRIX_DRIVER)), apa102)
+ OPT_DEFS += -DAPA102
+ APA102_DRIVER_REQUIRED := yes
+ endif
+
+ ifeq ($(strip $(RGB_MATRIX_CUSTOM_KB)), yes)
+ OPT_DEFS += -DRGB_MATRIX_CUSTOM_KB
+ endif
+
+ ifeq ($(strip $(RGB_MATRIX_CUSTOM_USER)), yes)
+ OPT_DEFS += -DRGB_MATRIX_CUSTOM_USER
+ endif
+endif
+
+ifeq ($(strip $(RGB_KEYCODES_ENABLE)), yes)
+ SRC += $(QUANTUM_DIR)/process_keycode/process_rgb.c
+endif
+
+VARIABLE_TRACE ?= no
+ifneq ($(strip $(VARIABLE_TRACE)),no)
+ SRC += $(QUANTUM_DIR)/variable_trace.c
+ OPT_DEFS += -DNUM_TRACED_VARIABLES=$(strip $(VARIABLE_TRACE))
+ ifneq ($(strip $(MAX_VARIABLE_TRACE_SIZE)),)
+ OPT_DEFS += -DMAX_VARIABLE_TRACE_SIZE=$(strip $(MAX_VARIABLE_TRACE_SIZE))
+ endif
+endif
+
+ifeq ($(strip $(SLEEP_LED_ENABLE)), yes)
+ SRC += $(PLATFORM_COMMON_DIR)/sleep_led.c
+ OPT_DEFS += -DSLEEP_LED_ENABLE
+
+ NO_SUSPEND_POWER_DOWN := yes
+endif
+
+VALID_BACKLIGHT_TYPES := pwm timer software custom
+
+BACKLIGHT_ENABLE ?= no
+BACKLIGHT_DRIVER ?= pwm
+ifeq ($(strip $(BACKLIGHT_ENABLE)), yes)
+ ifeq ($(filter $(BACKLIGHT_DRIVER),$(VALID_BACKLIGHT_TYPES)),)
+ $(call CATASTROPHIC_ERROR,Invalid BACKLIGHT_DRIVER,BACKLIGHT_DRIVER="$(BACKLIGHT_DRIVER)" is not a valid backlight type)
+ endif
+
+ COMMON_VPATH += $(QUANTUM_DIR)/backlight
+ COMMON_VPATH += $(DRIVER_PATH)/backlight
+ SRC += $(QUANTUM_DIR)/backlight/backlight.c
+ SRC += $(QUANTUM_DIR)/process_keycode/process_backlight.c
+ OPT_DEFS += -DBACKLIGHT_ENABLE
+
+ ifneq ($(strip $(BACKLIGHT_DRIVER)), custom)
+ SRC += $(QUANTUM_DIR)/backlight/backlight_driver_common.c
+
+ ifeq ($(strip $(BACKLIGHT_DRIVER)), software)
+ SRC += $(DRIVER_PATH)/backlight/backlight_software.c
+ else
+ SRC += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/backlight_$(strip $(BACKLIGHT_DRIVER)).c
+ endif
+ endif
+endif
+
+VALID_WS2812_DRIVER_TYPES := bitbang custom i2c pwm spi vendor
+
+WS2812_DRIVER ?= bitbang
+ifeq ($(strip $(WS2812_DRIVER_REQUIRED)), yes)
+ ifeq ($(filter $(WS2812_DRIVER),$(VALID_WS2812_DRIVER_TYPES)),)
+ $(call CATASTROPHIC_ERROR,Invalid WS2812_DRIVER,WS2812_DRIVER="$(WS2812_DRIVER)" is not a valid WS2812 driver)
+ endif
+
+ OPT_DEFS += -DWS2812_DRIVER_$(strip $(shell echo $(WS2812_DRIVER) | tr '[:lower:]' '[:upper:]'))
+
+ SRC += ws2812_$(strip $(WS2812_DRIVER)).c
+
+ ifeq ($(strip $(PLATFORM)), CHIBIOS)
+ ifeq ($(strip $(WS2812_DRIVER)), pwm)
+ OPT_DEFS += -DSTM32_DMA_REQUIRED=TRUE
+ endif
+ endif
+
+ # add extra deps
+ ifeq ($(strip $(WS2812_DRIVER)), i2c)
+ QUANTUM_LIB_SRC += i2c_master.c
+ endif
+endif
+
+ifeq ($(strip $(APA102_DRIVER_REQUIRED)), yes)
+ COMMON_VPATH += $(DRIVER_PATH)/led
+ SRC += apa102.c
+endif
+
+ifeq ($(strip $(CIE1931_CURVE)), yes)
+ OPT_DEFS += -DUSE_CIE1931_CURVE
+ LED_TABLES := yes
+endif
+
+ifeq ($(strip $(LED_TABLES)), yes)
+ SRC += $(QUANTUM_DIR)/led_tables.c
+endif
+
+ifeq ($(strip $(VIA_ENABLE)), yes)
+ DYNAMIC_KEYMAP_ENABLE := yes
+ RAW_ENABLE := yes
+ BOOTMAGIC_ENABLE := yes
+ TRI_LAYER_ENABLE := yes
+ SRC += $(QUANTUM_DIR)/via.c
+ OPT_DEFS += -DVIA_ENABLE
+endif
+
+ifeq ($(strip $(VIAL_ENABLE)), yes)
+ include $(BUILDDEFS_PATH)/build_vial.mk
+endif
+
+VALID_MAGIC_TYPES := yes
+BOOTMAGIC_ENABLE ?= no
+ifneq ($(strip $(BOOTMAGIC_ENABLE)), no)
+ ifeq ($(filter $(BOOTMAGIC_ENABLE),$(VALID_MAGIC_TYPES)),)
+ $(call CATASTROPHIC_ERROR,Invalid BOOTMAGIC_ENABLE,BOOTMAGIC_ENABLE="$(BOOTMAGIC_ENABLE)" is not a valid type of magic)
+ endif
+ ifneq ($(strip $(BOOTMAGIC_ENABLE)), no)
+ OPT_DEFS += -DBOOTMAGIC_LITE
+ QUANTUM_SRC += $(QUANTUM_DIR)/bootmagic/bootmagic_lite.c
+ endif
+endif
+COMMON_VPATH += $(QUANTUM_DIR)/bootmagic
+QUANTUM_SRC += $(QUANTUM_DIR)/bootmagic/magic.c
+
+VALID_CUSTOM_MATRIX_TYPES:= yes lite no
+
+CUSTOM_MATRIX ?= no
+
+ifneq ($(strip $(CUSTOM_MATRIX)), yes)
+ ifeq ($(filter $(CUSTOM_MATRIX),$(VALID_CUSTOM_MATRIX_TYPES)),)
+ $(call CATASTROPHIC_ERROR,Invalid CUSTOM_MATRIX,CUSTOM_MATRIX="$(CUSTOM_MATRIX)" is not a valid custom matrix type)
+ endif
+
+ # Include common stuff for all non custom matrix users
+ QUANTUM_SRC += $(QUANTUM_DIR)/matrix_common.c
+
+ # if 'lite' then skip the actual matrix implementation
+ ifneq ($(strip $(CUSTOM_MATRIX)), lite)
+ # Include the standard or split matrix code if needed
+ QUANTUM_SRC += $(QUANTUM_DIR)/matrix.c
+ endif
+endif
+
+# Debounce Modules. Set DEBOUNCE_TYPE=custom if including one manually.
+DEBOUNCE_TYPE ?= sym_defer_g
+ifneq ($(strip $(DEBOUNCE_TYPE)), custom)
+ QUANTUM_SRC += $(QUANTUM_DIR)/debounce/$(strip $(DEBOUNCE_TYPE)).c
+endif
+
+
+VALID_SERIAL_DRIVER_TYPES := bitbang usart vendor
+
+SERIAL_DRIVER ?= bitbang
+ifeq ($(filter $(SERIAL_DRIVER),$(VALID_SERIAL_DRIVER_TYPES)),)
+ $(call CATASTROPHIC_ERROR,Invalid SERIAL_DRIVER,SERIAL_DRIVER="$(SERIAL_DRIVER)" is not a valid SERIAL driver)
+endif
+
+ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
+ POST_CONFIG_H += $(QUANTUM_DIR)/split_common/post_config.h
+ OPT_DEFS += -DSPLIT_KEYBOARD
+ CRC_ENABLE := yes
+
+ # Include files used by all split keyboards
+ QUANTUM_SRC += $(QUANTUM_DIR)/split_common/split_util.c
+
+ # Determine which (if any) transport files are required
+ ifneq ($(strip $(SPLIT_TRANSPORT)), custom)
+ QUANTUM_SRC += $(QUANTUM_DIR)/split_common/transport.c \
+ $(QUANTUM_DIR)/split_common/transactions.c
+
+ OPT_DEFS += -DSPLIT_COMMON_TRANSACTIONS
+
+ # Functions added via QUANTUM_LIB_SRC are only included in the final binary if they're called.
+ # Unused functions are pruned away, which is why we can add multiple drivers here without bloat.
+ ifeq ($(PLATFORM),AVR)
+ ifneq ($(NO_I2C),yes)
+ QUANTUM_LIB_SRC += i2c_master.c \
+ i2c_slave.c
+ endif
+ endif
+
+ OPT_DEFS += -DSERIAL_DRIVER_$(strip $(shell echo $(SERIAL_DRIVER) | tr '[:lower:]' '[:upper:]'))
+ ifeq ($(strip $(SERIAL_DRIVER)), bitbang)
+ QUANTUM_LIB_SRC += serial.c
+ else
+ QUANTUM_LIB_SRC += serial_protocol.c
+ QUANTUM_LIB_SRC += serial_$(strip $(SERIAL_DRIVER)).c
+ endif
+ endif
+ COMMON_VPATH += $(QUANTUM_PATH)/split_common
+endif
+
+ifeq ($(strip $(CRC_ENABLE)), yes)
+ OPT_DEFS += -DCRC_ENABLE
+ SRC += crc.c
+endif
+
+ifeq ($(strip $(FNV_ENABLE)), yes)
+ OPT_DEFS += -DFNV_ENABLE
+ VPATH += $(LIB_PATH)/fnv
+ SRC += qmk_fnv_type_validation.c hash_32a.c hash_64a.c
+endif
+
+VALID_HAPTIC_DRIVER_TYPES := drv2605l solenoid
+ifeq ($(strip $(HAPTIC_ENABLE)),yes)
+ ifeq ($(filter $(HAPTIC_DRIVER),$(VALID_HAPTIC_DRIVER_TYPES)),)
+ $(call CATASTROPHIC_ERROR,Invalid HAPTIC_DRIVER,HAPTIC_DRIVER="$(HAPTIC_DRIVER)" is not a valid Haptic driver)
+ else
+ COMMON_VPATH += $(DRIVER_PATH)/haptic
+
+ ifeq ($(strip $(HAPTIC_DRIVER)), drv2605l)
+ SRC += drv2605l.c
+ QUANTUM_LIB_SRC += i2c_master.c
+ OPT_DEFS += -DHAPTIC_DRV2605L
+ endif
+
+ ifeq ($(strip $(HAPTIC_DRIVER)), solenoid)
+ SRC += solenoid.c
+ OPT_DEFS += -DHAPTIC_SOLENOID
+ endif
+ endif
+endif
+
+ifeq ($(strip $(HD44780_ENABLE)), yes)
+ OPT_DEFS += -DHD44780_ENABLE
+ COMMON_VPATH += $(DRIVER_PATH)/lcd
+ SRC += hd44780.c
+endif
+
+VALID_OLED_DRIVER_TYPES := custom ssd1306
+OLED_DRIVER ?= ssd1306
+VALID_OLED_TRANSPORT_TYPES := i2c spi custom
+OLED_TRANSPORT ?= i2c
+ifeq ($(strip $(OLED_ENABLE)), yes)
+ ifeq ($(filter $(OLED_DRIVER),$(VALID_OLED_DRIVER_TYPES)),)
+ $(call CATASTROPHIC_ERROR,Invalid OLED_DRIVER,OLED_DRIVER="$(OLED_DRIVER)" is not a valid OLED driver)
+ else
+ ifeq ($(filter $(OLED_TRANSPORT),$(VALID_OLED_TRANSPORT_TYPES)),)
+ $(call CATASTROPHIC_ERROR,Invalid OLED_TRANSPORT,OLED_TRANSPORT="$(OLED_TRANSPORT)" is not a valid OLED transport)
+ else
+ OPT_DEFS += -DOLED_ENABLE
+ COMMON_VPATH += $(DRIVER_PATH)/oled
+ ifneq ($(strip $(OLED_DRIVER)), custom)
+ SRC += oled_driver.c
+ endif
+
+ OPT_DEFS += -DOLED_TRANSPORT_$(strip $(shell echo $(OLED_TRANSPORT) | tr '[:lower:]' '[:upper:]'))
+ ifeq ($(strip $(OLED_TRANSPORT)), i2c)
+ QUANTUM_LIB_SRC += i2c_master.c
+ endif
+ ifeq ($(strip $(OLED_TRANSPORT)), spi)
+ QUANTUM_LIB_SRC += spi_master.c
+ endif
+ endif
+ endif
+endif
+
+ifeq ($(strip $(ST7565_ENABLE)), yes)
+ OPT_DEFS += -DST7565_ENABLE
+ COMMON_VPATH += $(DRIVER_PATH)/oled # For glcdfont.h
+ COMMON_VPATH += $(DRIVER_PATH)/lcd
+ QUANTUM_LIB_SRC += spi_master.c
+ SRC += st7565.c
+endif
+
+ifeq ($(strip $(UCIS_ENABLE)), yes)
+ OPT_DEFS += -DUCIS_ENABLE
+ UNICODE_COMMON := yes
+ SRC += $(QUANTUM_DIR)/process_keycode/process_ucis.c \
+ $(QUANTUM_DIR)/unicode/ucis.c
+endif
+
+ifeq ($(strip $(UNICODEMAP_ENABLE)), yes)
+ OPT_DEFS += -DUNICODEMAP_ENABLE
+ UNICODE_COMMON := yes
+ SRC += $(QUANTUM_DIR)/process_keycode/process_unicodemap.c \
+ $(QUANTUM_DIR)/unicode/unicodemap.c
+endif
+
+ifeq ($(strip $(UNICODE_ENABLE)), yes)
+ OPT_DEFS += -DUNICODE_ENABLE
+ UNICODE_COMMON := yes
+ SRC += $(QUANTUM_DIR)/process_keycode/process_unicode.c
+endif
+
+ifeq ($(strip $(UNICODE_COMMON)), yes)
+ OPT_DEFS += -DUNICODE_COMMON_ENABLE
+ COMMON_VPATH += $(QUANTUM_DIR)/unicode
+ SRC += $(QUANTUM_DIR)/process_keycode/process_unicode_common.c \
+ $(QUANTUM_DIR)/unicode/unicode.c \
+ $(QUANTUM_DIR)/unicode/utf8.c
+endif
+
+MAGIC_ENABLE ?= yes
+ifeq ($(strip $(MAGIC_ENABLE)), yes)
+ SRC += $(QUANTUM_DIR)/process_keycode/process_magic.c
+ OPT_DEFS += -DMAGIC_KEYCODE_ENABLE
+endif
+
+SEND_STRING_ENABLE ?= yes
+ifeq ($(strip $(SEND_STRING_ENABLE)), yes)
+ OPT_DEFS += -DSEND_STRING_ENABLE
+ COMMON_VPATH += $(QUANTUM_DIR)/send_string
+ SRC += $(QUANTUM_DIR)/send_string/send_string.c
+endif
+
+ifeq ($(strip $(AUTO_SHIFT_ENABLE)), yes)
+ SRC += $(QUANTUM_DIR)/process_keycode/process_auto_shift.c
+ OPT_DEFS += -DAUTO_SHIFT_ENABLE
+ ifeq ($(strip $(AUTO_SHIFT_MODIFIERS)), yes)
+ OPT_DEFS += -DAUTO_SHIFT_MODIFIERS
+ endif
+endif
+
+ifeq ($(strip $(PS2_MOUSE_ENABLE)), yes)
+ PS2_ENABLE := yes
+ MOUSE_ENABLE := yes
+ SRC += ps2_mouse.c
+ OPT_DEFS += -DPS2_MOUSE_ENABLE
+endif
+
+VALID_PS2_DRIVER_TYPES := busywait interrupt usart vendor
+
+PS2_DRIVER ?= busywait
+ifeq ($(strip $(PS2_ENABLE)), yes)
+ ifeq ($(filter $(PS2_DRIVER),$(VALID_PS2_DRIVER_TYPES)),)
+ $(call CATASTROPHIC_ERROR,Invalid PS2_DRIVER,PS2_DRIVER="$(PS2_DRIVER)" is not a valid PS/2 driver)
+ endif
+
+ OPT_DEFS += -DPS2_DRIVER_$(strip $(shell echo $(PS2_DRIVER) | tr '[:lower:]' '[:upper:]'))
+
+ COMMON_VPATH += $(DRIVER_PATH)/ps2
+ COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/ps2
+ OPT_DEFS += -DPS2_ENABLE
+
+ ifneq ($(strip $(PS2_DRIVER)), vendor)
+ SRC += ps2_io.c
+ endif
+
+ SRC += ps2_$(strip $(PS2_DRIVER)).c
+endif
+
+JOYSTICK_ENABLE ?= no
+VALID_JOYSTICK_TYPES := analog digital
+JOYSTICK_DRIVER ?= analog
+ifeq ($(strip $(JOYSTICK_ENABLE)), yes)
+ ifeq ($(filter $(JOYSTICK_DRIVER),$(VALID_JOYSTICK_TYPES)),)
+ $(call CATASTROPHIC_ERROR,Invalid JOYSTICK_DRIVER,JOYSTICK_DRIVER="$(JOYSTICK_DRIVER)" is not a valid joystick driver)
+ endif
+ OPT_DEFS += -DJOYSTICK_ENABLE
+ SRC += $(QUANTUM_DIR)/process_keycode/process_joystick.c
+ SRC += $(QUANTUM_DIR)/joystick.c
+
+ ifeq ($(strip $(JOYSTICK_DRIVER)), analog)
+ OPT_DEFS += -DANALOG_JOYSTICK_ENABLE
+ SRC += analog.c
+ endif
+ ifeq ($(strip $(JOYSTICK_DRIVER)), digital)
+ OPT_DEFS += -DDIGITAL_JOYSTICK_ENABLE
+ endif
+endif
+
+USBPD_ENABLE ?= no
+VALID_USBPD_DRIVER_TYPES = custom vendor
+USBPD_DRIVER ?= vendor
+ifeq ($(strip $(USBPD_ENABLE)), yes)
+ ifeq ($(filter $(strip $(USBPD_DRIVER)),$(VALID_USBPD_DRIVER_TYPES)),)
+ $(call CATASTROPHIC_ERROR,Invalid USBPD_DRIVER,USBPD_DRIVER="$(USBPD_DRIVER)" is not a valid USBPD driver)
+ else
+ OPT_DEFS += -DUSBPD_ENABLE
+ ifeq ($(strip $(USBPD_DRIVER)), vendor)
+ # Vendor-specific implementations
+ OPT_DEFS += -DUSBPD_VENDOR
+ ifeq ($(strip $(MCU_SERIES)), STM32G4xx)
+ OPT_DEFS += -DUSBPD_STM32G4
+ SRC += usbpd_stm32g4.c
+ else
+ $(call CATASTROPHIC_ERROR,Invalid USBPD_DRIVER,There is no vendor-provided USBPD driver available)
+ endif
+ else ifeq ($(strip $(USBPD_DRIVER)), custom)
+ OPT_DEFS += -DUSBPD_CUSTOM
+ # Board designers can add their own driver to $(SRC)
+ endif
+ endif
+endif
+
+BLUETOOTH_ENABLE ?= no
+VALID_BLUETOOTH_DRIVER_TYPES := bluefruit_le custom rn42
+ifeq ($(strip $(BLUETOOTH_ENABLE)), yes)
+ ifeq ($(filter $(strip $(BLUETOOTH_DRIVER)),$(VALID_BLUETOOTH_DRIVER_TYPES)),)
+ $(call CATASTROPHIC_ERROR,Invalid BLUETOOTH_DRIVER,BLUETOOTH_DRIVER="$(BLUETOOTH_DRIVER)" is not a valid Bluetooth driver type)
+ endif
+ OPT_DEFS += -DBLUETOOTH_ENABLE
+ NO_USB_STARTUP_CHECK := yes
+ COMMON_VPATH += $(DRIVER_PATH)/bluetooth
+ SRC += outputselect.c
+
+ ifeq ($(strip $(BLUETOOTH_DRIVER)), bluefruit_le)
+ OPT_DEFS += -DBLUETOOTH_BLUEFRUIT_LE -DHAL_USE_SPI=TRUE
+ SRC += $(DRIVER_PATH)/bluetooth/bluetooth.c
+ SRC += $(DRIVER_PATH)/bluetooth/bluefruit_le.cpp
+ QUANTUM_LIB_SRC += analog.c
+ QUANTUM_LIB_SRC += spi_master.c
+ endif
+
+ ifeq ($(strip $(BLUETOOTH_DRIVER)), rn42)
+ OPT_DEFS += -DBLUETOOTH_RN42 -DHAL_USE_SERIAL=TRUE
+ SRC += $(DRIVER_PATH)/bluetooth/bluetooth.c
+ SRC += $(DRIVER_PATH)/bluetooth/rn42.c
+ QUANTUM_LIB_SRC += uart.c
+ endif
+endif
+
+ifeq ($(strip $(ENCODER_ENABLE)), yes)
+ SRC += $(QUANTUM_DIR)/encoder.c
+ OPT_DEFS += -DENCODER_ENABLE
+ ifeq ($(strip $(ENCODER_MAP_ENABLE)), yes)
+ OPT_DEFS += -DENCODER_MAP_ENABLE
+ endif
+endif
+
+ifeq ($(strip $(OS_DETECTION_ENABLE)), yes)
+ SRC += $(QUANTUM_DIR)/os_detection.c
+ OPT_DEFS += -DOS_DETECTION_ENABLE
+ ifeq ($(strip $(OS_DETECTION_DEBUG_ENABLE)), yes)
+ OPT_DEFS += -DOS_DETECTION_DEBUG_ENABLE
+ endif
+endif
diff --git a/-/common_rules.mk b/-/common_rules.mk
new file mode 100644
index 00000000000..41651a2cbf2
--- /dev/null
+++ b/-/common_rules.mk
@@ -0,0 +1,432 @@
+# Hey Emacs, this is a -*- makefile -*-
+#----------------------------------------------------------------------------
+
+# Enable vpath searching for source files only
+# Without this, output files, could be read from the wrong .build directories
+VPATH_SRC := $(VPATH)
+vpath %.c $(VPATH_SRC)
+vpath %.h $(VPATH_SRC)
+vpath %.cpp $(VPATH_SRC)
+vpath %.cc $(VPATH_SRC)
+vpath %.hpp $(VPATH_SRC)
+vpath %.S $(VPATH_SRC)
+VPATH :=
+
+# Convert all SRC to OBJ
+define OBJ_FROM_SRC
+$(patsubst %.c,$1/%.o,$(patsubst %.cpp,$1/%.o,$(patsubst %.cc,$1/%.o,$(patsubst %.S,$1/%.o,$(patsubst %.clib,$1/%.a,$($1_SRC))))))
+endef
+$(foreach OUTPUT,$(OUTPUTS),$(eval $(OUTPUT)_OBJ +=$(call OBJ_FROM_SRC,$(OUTPUT))))
+
+# Define a list of all objects
+OBJ := $(foreach OUTPUT,$(OUTPUTS),$($(OUTPUT)_OBJ))
+NO_LTO_OBJ := $(filter %.a,$(OBJ))
+
+MASTER_OUTPUT := $(firstword $(OUTPUTS))
+
+# Output format. (can be srec, ihex, binary)
+FORMAT = ihex
+
+# Optimization level, can be [0, 1, 2, 3, s].
+OPT ?= s
+
+# Compiler flag to set the C and C++ language standard level
+CSTANDARD = -std=gnu11
+CXXSTANDARD = -std=gnu++14
+
+# Speed up recompilations by opt-in usage of ccache
+USE_CCACHE ?= no
+ifneq ($(USE_CCACHE),no)
+ CC_PREFIX ?= ccache
+endif
+
+#---------------- C Compiler Options ----------------
+
+ifeq ($(strip $(LTO_ENABLE)), yes)
+ ifeq ($(PLATFORM),ARM_ATSAM)
+ $(info Enabling LTO on arm_atsam-targeting boards is known to have a high likelihood of failure.)
+ $(info If unsure, set LTO_ENABLE = no.)
+ endif
+ CDEFS += -flto
+ CDEFS += -DLTO_ENABLE
+endif
+
+DEBUG_ENABLE ?= yes
+ifeq ($(strip $(SKIP_DEBUG_INFO)),yes)
+ DEBUG_ENABLE=no
+endif
+
+ifeq ($(strip $(DEBUG_ENABLE)),yes)
+ CFLAGS += -g$(DEBUG)
+endif
+CFLAGS += $(CDEFS)
+CFLAGS += -O$(OPT)
+# add color
+ifeq ($(COLOR),true)
+ifeq ("$(shell echo "int main(){}" | $(CC) -fdiagnostics-color -x c - -o /dev/null 2>&1)", "")
+ CFLAGS+= -fdiagnostics-color
+endif
+endif
+CFLAGS += -Wall
+CFLAGS += -Wstrict-prototypes
+ifneq ($(strip $(ALLOW_WARNINGS)), yes)
+ CFLAGS += -Werror
+endif
+CFLAGS += $(CSTANDARD)
+
+# This fixes lots of keyboards linking errors but SHOULDN'T BE A FINAL SOLUTION
+# Fixing of multiple variable definitions must be made.
+CFLAGS += -fcommon
+
+#---------------- C++ Compiler Options ----------------
+
+ifeq ($(strip $(DEBUG_ENABLE)),yes)
+ CXXFLAGS += -g$(DEBUG)
+endif
+CXXFLAGS += $(CXXDEFS)
+CXXFLAGS += -O$(OPT)
+# to suppress "warning: only initialized variables can be placed into program memory area"
+CXXFLAGS += -w
+CXXFLAGS += -Wall
+CXXFLAGS += -Wundef
+
+ifneq ($(strip $(ALLOW_WARNINGS)), yes)
+ CXXFLAGS += -Werror
+endif
+
+#---------------- Assembler Options ----------------
+
+ASFLAGS += $(ADEFS)
+ifeq ($(VERBOSE_AS_CMD),yes)
+ ASFLAGS += -v
+endif
+
+#---------------- Linker Options ----------------
+
+CREATE_MAP ?= yes
+ifeq ($(CREATE_MAP),yes)
+ LDFLAGS += -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref
+endif
+ifeq ($(VERBOSE_LD_CMD),yes)
+ LDFLAGS += -v
+endif
+#LDFLAGS += -Wl,--relax
+LDFLAGS += $(EXTMEMOPTS)
+LDFLAGS += $(patsubst %,-L%,$(EXTRALIBDIRS))
+LDFLAGS += -lm
+# You can give EXTRALDFLAGS at 'make' command line.
+LDFLAGS += $(EXTRALDFLAGS)
+
+#---------------- Assembler Listings ----------------
+
+ADHLNS_ENABLE ?= no
+ifeq ($(ADHLNS_ENABLE),yes)
+ # Avoid "Options to '-Xassembler' do not match" - only specify assembler options at LTO link time
+ ifeq ($(strip $(LTO_ENABLE)), yes)
+ LDFLAGS += -Wa,-adhlns=$(BUILD_DIR)/$(TARGET).lst
+ else
+ CFLAGS += -Wa,-adhlns=$(@:%.o=%.lst)
+ CXXFLAGS += -Wa,-adhlns=$(@:%.o=%.lst)
+ ifeq ($(strip $(DEBUG_ENABLE)),yes)
+ ASFLAGS = -Wa,-adhlns=$(@:%.o=%.lst),-gstabs,--listing-cont-lines=100
+ else
+ ASFLAGS = -Wa,-adhlns=$(@:%.o=%.lst),--listing-cont-lines=100
+ endif
+ endif
+endif
+
+# Define programs and commands.
+SHELL = sh
+SED = sed
+REMOVE = rm -f
+REMOVEDIR = rmdir
+COPY = cp
+WINSHELL = cmd
+SECHO = $(SILENT) || echo
+MD5SUM ?= md5sum
+ifneq ($(filter Darwin FreeBSD,$(shell uname -s)),)
+ MD5SUM = md5
+endif
+
+# UF2 format settings
+# To produce a UF2 file in your build, add to your keyboard's rules.mk:
+# FIRMWARE_FORMAT = uf2
+UF2CONV = $(TOP_DIR)/util/uf2conv.py
+UF2CONV_ARGS ?=
+UF2_FAMILY ?= 0x0
+
+# Compiler flags to generate dependency files.
+#GENDEPFLAGS = -MMD -MP -MF .dep/$(@F).d
+GENDEPFLAGS = -MMD -MP -MF $(patsubst %.o,%.td,$@)
+
+
+# Combine all necessary flags and optional flags.
+# Add target processor to flags.
+# You can give extra flags at 'make' command line like: make EXTRAFLAGS=-DFOO=bar
+ALL_CFLAGS = $(MCUFLAGS) $(CFLAGS) $(EXTRAFLAGS)
+ALL_CXXFLAGS = $(MCUFLAGS) -x c++ $(CXXFLAGS) $(EXTRAFLAGS)
+ALL_ASFLAGS = $(MCUFLAGS) -x assembler-with-cpp $(ASFLAGS) $(EXTRAFLAGS)
+
+define NO_LTO
+$(patsubst %.a,%.o,$1): NOLTO_CFLAGS += -fno-lto
+endef
+$(foreach LOBJ, $(NO_LTO_OBJ), $(eval $(call NO_LTO,$(LOBJ))))
+
+MOVE_DEP = mv -f $(patsubst %.o,%.td,$@) $(patsubst %.o,%.d,$@)
+
+# For a ChibiOS build, ensure that the board files have the hook overrides injected
+define BOARDSRC_INJECT_HOOKS
+$(INTERMEDIATE_OUTPUT)/$(patsubst %.c,%.o,$(patsubst ./%,%,$1)): INIT_HOOK_CFLAGS += -include $(TOP_DIR)/tmk_core/protocol/chibios/init_hooks.h
+endef
+$(foreach LOBJ, $(BOARDSRC), $(eval $(call BOARDSRC_INJECT_HOOKS,$(LOBJ))))
+
+# Add QMK specific flags
+DFU_SUFFIX ?= dfu-suffix
+DFU_SUFFIX_ARGS ?=
+
+
+elf: $(BUILD_DIR)/$(TARGET).elf
+hex: $(BUILD_DIR)/$(TARGET).hex
+uf2: $(BUILD_DIR)/$(TARGET).uf2
+cpfirmware: $(FIRMWARE_FORMAT)
+ $(SILENT) || printf "Copying $(TARGET).$(FIRMWARE_FORMAT) to qmk_firmware folder" | $(AWK_CMD)
+ $(COPY) $(BUILD_DIR)/$(TARGET).$(FIRMWARE_FORMAT) $(TARGET).$(FIRMWARE_FORMAT) && $(PRINT_OK)
+eep: $(BUILD_DIR)/$(TARGET).eep
+lss: $(BUILD_DIR)/$(TARGET).lss
+sym: $(BUILD_DIR)/$(TARGET).sym
+LIBNAME=lib$(TARGET).a
+lib: $(LIBNAME)
+
+# Display size of file, modifying the output so people don't mistakenly grab the hex output
+BINARY_SIZE = $(SIZE) --target=$(FORMAT) $(BUILD_DIR)/$(TARGET).hex | $(SED) -e 's/\.build\/.*$$/$(TARGET).$(FIRMWARE_FORMAT)/g'
+
+sizebefore:
+ @if test -f $(BUILD_DIR)/$(TARGET).hex; then $(SECHO) $(MSG_SIZE_BEFORE); $(SILENT) || $(BINARY_SIZE); \
+ 2>/dev/null; $(SECHO); fi
+
+sizeafter: $(BUILD_DIR)/$(TARGET).hex
+ @if test -f $(BUILD_DIR)/$(TARGET).hex; then $(SECHO); $(SECHO) $(MSG_SIZE_AFTER); $(SILENT) || $(BINARY_SIZE); \
+ 2>/dev/null; $(SECHO); fi
+
+# Display compiler version information.
+gccversion :
+ @$(SILENT) || $(CC) --version
+
+# Create final output files (.hex, .eep) from ELF output file.
+%.hex: %.elf
+ $(eval CMD=$(HEX) $< $@)
+ #@$(SILENT) || printf "$(MSG_EXECUTING) '$(CMD)':\n"
+ @$(SILENT) || printf "$(MSG_FLASH) $@" | $(AWK_CMD)
+ @$(BUILD_CMD)
+
+%.uf2: %.elf
+ $(eval CMD=$(HEX) $< $(BUILD_DIR)/$(TARGET).tmp && $(UF2CONV) $(UF2CONV_ARGS) $(BUILD_DIR)/$(TARGET).tmp --output $@ --convert --family $(UF2_FAMILY) >/dev/null 2>&1)
+ #@$(SILENT) || printf "$(MSG_EXECUTING) '$(CMD)':\n"
+ @$(SILENT) || printf "$(MSG_UF2) $@" | $(AWK_CMD)
+ @$(BUILD_CMD)
+
+%.eep: %.elf
+ $(eval CMD=$(EEP) $< $@ || exit 0)
+ #@$(SILENT) || printf "$(MSG_EXECUTING) '$(CMD)':\n"
+ @$(SILENT) || printf "$(MSG_EEPROM) $@" | $(AWK_CMD)
+ @$(BUILD_CMD)
+
+# Create extended listing file from ELF output file.
+%.lss: %.elf
+ $(eval CMD=$(OBJDUMP) -h -S -z $< > $@)
+ #@$(SILENT) || printf "$(MSG_EXECUTING) '$(CMD)':\n"
+ @$(SILENT) || printf "$(MSG_EXTENDED_LISTING) $@" | $(AWK_CMD)
+ @$(BUILD_CMD)
+
+# Create a symbol table from ELF output file.
+%.sym: %.elf
+ $(eval CMD=$(NM) -n $< > $@ )
+ #@$(SILENT) || printf "$(MSG_EXECUTING) '$(CMD)':\n"
+ @$(SILENT) || printf "$(MSG_SYMBOL_TABLE) $@" | $(AWK_CMD)
+ @$(BUILD_CMD)
+
+%.bin: %.elf
+ $(eval CMD=$(BIN) $< $@ || exit 0)
+ #@$(SILENT) || printf "$(MSG_EXECUTING) '$(CMD)':\n"
+ @$(SILENT) || printf "$(MSG_BIN) $@" | $(AWK_CMD)
+ @$(BUILD_CMD)
+ if [ ! -z "$(DFU_SUFFIX_ARGS)" ]; then \
+ $(DFU_SUFFIX) $(DFU_SUFFIX_ARGS) -a $(BUILD_DIR)/$(TARGET).bin 1>/dev/null ;\
+ fi
+ #$(SILENT) || printf "$(MSG_EXECUTING) '$(DFU_SUFFIX) $(DFU_SUFFIX_ARGS) -a $(BUILD_DIR)/$(TARGET).bin 1>/dev/null':\n" ;\
+ $(COPY) $(BUILD_DIR)/$(TARGET).bin $(TARGET).bin;
+ if [ ! -z "$(VIBL)" ]; then \
+ python3 util/vial_generate_vfw.py $(TARGET).bin $(TARGET).vfw $(CONFIG_H) ;\
+ fi
+
+BEGIN = gccversion sizebefore
+
+# Link: create ELF output file from object files.
+.SECONDARY : $(BUILD_DIR)/$(TARGET).elf
+.PRECIOUS : $(OBJ)
+# Note the obj.txt depeendency is there to force linking if a source file is deleted
+%.elf: $(OBJ) $(MASTER_OUTPUT)/cflags.txt $(MASTER_OUTPUT)/ldflags.txt $(MASTER_OUTPUT)/obj.txt | $(BEGIN)
+ @$(SILENT) || printf "$(MSG_LINKING) $@" | $(AWK_CMD)
+ $(eval CMD=MAKE=$(MAKE) $(CC) $(ALL_CFLAGS) $(filter-out %.txt,$^) --output $@ $(LDFLAGS))
+ @$(BUILD_CMD)
+
+
+define GEN_OBJRULE
+$1_INCFLAGS := $$(patsubst %,-I%,$$($1_INC))
+ifdef $1_CONFIG
+$1_CONFIG_FLAGS += $$(patsubst %,-include %,$$($1_CONFIG))
+endif
+$1_CFLAGS = $$(ALL_CFLAGS) $$($1_DEFS) $$($1_INCFLAGS) $$($1_CONFIG_FLAGS) $$(NOLTO_CFLAGS)
+$1_CXXFLAGS = $$(ALL_CXXFLAGS) $$($1_DEFS) $$($1_INCFLAGS) $$($1_CONFIG_FLAGS) $$(NOLTO_CFLAGS)
+$1_ASFLAGS = $$(ALL_ASFLAGS) $$($1_DEFS) $$($1_INCFLAGS) $$($1_CONFIG_FLAGS)
+
+# Compile: create object files from C source files.
+$1/%.o : %.c $1/%.d $1/cflags.txt $1/compiler.txt | $(BEGIN)
+ @mkdir -p $$(@D)
+ @$$(SILENT) || printf "$$(MSG_COMPILING) $$<" | $$(AWK_CMD)
+ $$(eval CC_EXEC := $$(CC))
+ ifneq ($$(VERBOSE_C_CMD),)
+ $$(if $$(filter $$(notdir $$(VERBOSE_C_CMD)),$$(notdir $$<)),$$(eval CC_EXEC += -v))
+ endif
+ ifneq ($$(VERBOSE_C_INCLUDE),)
+ $$(if $$(filter $$(notdir $$(VERBOSE_C_INCLUDE)),$$(notdir $$<)),$$(eval CC_EXEC += -H))
+ endif
+ $$(eval CMD := $$(CC_EXEC) -c $$($1_CFLAGS) $$(INIT_HOOK_CFLAGS) $$(GENDEPFLAGS) $$< -o $$@ && $$(MOVE_DEP))
+ @$$(BUILD_CMD)
+ ifneq ($$(DUMP_C_MACROS),)
+ $$(eval CMD := $$(CC) -E -dM $$($1_CFLAGS) $$(INIT_HOOK_CFLAGS) $$(GENDEPFLAGS) $$<)
+ @$$(if $$(filter $$(notdir $$(DUMP_C_MACROS)),$$(notdir $$<)),$$(BUILD_CMD))
+ endif
+
+# Compile: create object files from C++ source files.
+$1/%.o : %.cpp $1/%.d $1/cxxflags.txt $1/compiler.txt | $(BEGIN)
+ @mkdir -p $$(@D)
+ @$$(SILENT) || printf "$$(MSG_COMPILING_CXX) $$<" | $$(AWK_CMD)
+ $$(eval CMD=$$(CC) -c $$($1_CXXFLAGS) $$(INIT_HOOK_CFLAGS) $$(GENDEPFLAGS) $$< -o $$@ && $$(MOVE_DEP))
+ @$$(BUILD_CMD)
+
+$1/%.o : %.cc $1/%.d $1/cxxflags.txt $1/compiler.txt | $(BEGIN)
+ @mkdir -p $$(@D)
+ @$$(SILENT) || printf "$$(MSG_COMPILING_CXX) $$<" | $$(AWK_CMD)
+ $$(eval CMD=$$(CC) -c $$($1_CXXFLAGS) $$(INIT_HOOK_CFLAGS) $$(GENDEPFLAGS) $$< -o $$@ && $$(MOVE_DEP))
+ @$$(BUILD_CMD)
+
+# Assemble: create object files from assembler source files.
+$1/%.o : %.S $1/asflags.txt $1/compiler.txt | $(BEGIN)
+ @mkdir -p $$(@D)
+ @$(SILENT) || printf "$$(MSG_ASSEMBLING) $$<" | $$(AWK_CMD)
+ $$(eval CMD=$$(CC) -c $$($1_ASFLAGS) $$< -o $$@)
+ @$$(BUILD_CMD)
+
+$1/%.a : $1/%.o
+ @mkdir -p $$(@D)
+ @$(SILENT) || printf "Archiving: $$<" | $$(AWK_CMD)
+ $$(eval CMD=$$(AR) rcs $$@ $$<)
+ @$$(BUILD_CMD)
+
+$1/force:
+
+$1/cflags.txt: $1/force
+ echo '$$($1_CFLAGS)' | cmp -s - $$@ || echo '$$($1_CFLAGS)' > $$@
+
+$1/cxxflags.txt: $1/force
+ echo '$$($1_CXXFLAGS)' | cmp -s - $$@ || echo '$$($1_CXXFLAGS)' > $$@
+
+$1/asflags.txt: $1/force
+ echo '$$($1_ASFLAGS)' | cmp -s - $$@ || echo '$$($1_ASFLAGS)' > $$@
+
+$1/compiler.txt: $1/force
+ test -f $$@ || touch $$@
+ $$(CC) --version | cmp -s - $$@ || $$(CC) --version > $$@
+endef
+
+.PRECIOUS: $(MASTER_OUTPUT)/obj.txt
+$(MASTER_OUTPUT)/obj.txt: $(MASTER_OUTPUT)/force
+ echo '$(OBJ)' | cmp -s - $@ || echo '$(OBJ)' > $@
+
+.PRECIOUS: $(MASTER_OUTPUT)/ldflags.txt
+$(MASTER_OUTPUT)/ldflags.txt: $(MASTER_OUTPUT)/force
+ echo '$(LDFLAGS)' | cmp -s - $@ || echo '$(LDFLAGS)' > $@
+
+
+# We have to use static rules for the .d files for some reason
+DEPS = $(patsubst %.o,%.d,$(patsubst %.a,%.o,$(OBJ)))
+# Keep the .d files
+.PRECIOUS: $(DEPS)
+# Empty rule to force recompilation if the .d file is missing
+$(DEPS):
+
+
+$(foreach OUTPUT,$(OUTPUTS),$(eval $(call GEN_OBJRULE,$(OUTPUT))))
+
+# Create preprocessed source for use in sending a bug report.
+%.i : %.c | $(BEGIN)
+ $(CC) -E -mmcu=$(MCU) $(CFLAGS) $< -o $@
+
+# Target: clean project.
+clean:
+ $(foreach OUTPUT,$(OUTPUTS), $(REMOVE) -r $(OUTPUT) 2>/dev/null)
+ $(REMOVE) $(BUILD_DIR)/$(TARGET).*
+
+show_path:
+ @echo VPATH=$(VPATH)
+ @echo SRC=$(SRC)
+ @echo OBJ=$(OBJ)
+
+dump_vars: ERROR_IF_EMPTY=""
+dump_vars: ERROR_IF_NONBOOL=""
+dump_vars: ERROR_IF_UNSET=""
+dump_vars: CATASTROPHIC_ERROR=""
+dump_vars:
+ @$(foreach V,$(sort $(.VARIABLES)),$(if $(filter-out environment% default automatic,$(origin $V)),$(info $V=$($V))))
+
+objs-size:
+ for i in $(OBJ); do echo $$i; done | sort | xargs $(SIZE)
+
+ifeq ($(findstring avr-gcc,$(CC)),avr-gcc)
+SIZE_MARGIN = 1024
+
+check-size:
+ $(eval MAX_SIZE=$(shell n=`$(CC) -E -mmcu=$(MCU) -D__ASSEMBLER__ $(CFLAGS) $(OPT_DEFS) platforms/avr/bootloader_size.c 2> /dev/null | $(SED) -ne 's/\r//;/^#/n;/^AVR_SIZE:/,$${s/^AVR_SIZE: //;p;}'` && echo $$(($$n)) || echo 0))
+ $(eval CURRENT_SIZE=$(shell if [ -f $(BUILD_DIR)/$(TARGET).hex ]; then $(SIZE) --target=$(FORMAT) $(BUILD_DIR)/$(TARGET).hex | $(AWK) 'NR==2 {print $$4}'; else printf 0; fi))
+ $(eval FREE_SIZE=$(shell expr $(MAX_SIZE) - $(CURRENT_SIZE)))
+ $(eval OVER_SIZE=$(shell expr $(CURRENT_SIZE) - $(MAX_SIZE)))
+ $(eval PERCENT_SIZE=$(shell expr $(CURRENT_SIZE) \* 100 / $(MAX_SIZE)))
+ if [ $(MAX_SIZE) -gt 0 ] && [ $(CURRENT_SIZE) -gt 0 ]; then \
+ $(SILENT) || printf "$(MSG_CHECK_FILESIZE)" | $(AWK_CMD); \
+ if [ $(CURRENT_SIZE) -gt $(MAX_SIZE) ]; then \
+ printf "\n * $(MSG_FILE_TOO_BIG)"; $(PRINT_ERROR_PLAIN); \
+ else \
+ if [ $(FREE_SIZE) -lt $(SIZE_MARGIN) ]; then \
+ $(PRINT_WARNING_PLAIN); printf " * $(MSG_FILE_NEAR_LIMIT)"; \
+ else \
+ $(PRINT_OK); $(SILENT) || printf " * $(MSG_FILE_JUST_RIGHT)"; \
+ fi ; \
+ fi ; \
+ fi
+else
+check-size:
+ $(SILENT) || echo "$(MSG_CHECK_FILESIZE_SKIPPED)"
+endif
+
+check-md5:
+ $(MD5SUM) $(BUILD_DIR)/$(TARGET).$(FIRMWARE_FORMAT)
+
+# Create build directory
+$(shell mkdir -p $(BUILD_DIR) 2>/dev/null)
+
+# Create object files directory
+$(eval $(foreach OUTPUT,$(OUTPUTS),$(shell mkdir -p $(OUTPUT) 2>/dev/null)))
+
+# Include the dependency files.
+-include $(patsubst %.o,%.d,$(patsubst %.a,%.o,$(OBJ)))
+
+
+# Listing of phony targets.
+.PHONY : all dump_vars finish sizebefore sizeafter qmkversion \
+gccversion build elf hex uf2 eep lss sym coff extcoff \
+clean clean_list debug gdb-config show_path \
+program teensy dfu dfu-ee dfu-start \
+flash dfu-split-left dfu-split-right \
+avrdude-split-left avrdude-split-right \
+avrdude-loop usbasp
diff --git a/-/converters.mk b/-/converters.mk
new file mode 100644
index 00000000000..a3548afd609
--- /dev/null
+++ b/-/converters.mk
@@ -0,0 +1,41 @@
+# Note for new boards -- CTPC and CONVERT_TO_PROTON_C are deprecated terms
+# and should not be replicated for new boards. These will be removed from
+# documentation as well as existing keymaps in due course.
+ifneq ($(findstring yes, $(CTPC)$(CONVERT_TO_PROTON_C)),)
+$(call CATASTROPHIC_ERROR,The `CONVERT_TO_PROTON_C` and `CTPC` options are now deprecated. `CONVERT_TO=proton_c` should be used instead.)
+endif
+
+# TODO: opt in rather than assume everything uses a pro micro
+PIN_COMPATIBLE ?= promicro
+
+# Remove whitespace from any rule.mk provided vars
+# - env cannot be overwritten but cannot have whitespace anyway
+CONVERT_TO:=$(strip $(CONVERT_TO))
+ifneq ($(CONVERT_TO),)
+
+ # stash so we can overwrite env provided vars if needed
+ ACTIVE_CONVERTER=$(CONVERT_TO)
+
+ # glob to search each platfrorm and/or check for valid converter
+ CONVERTER := $(wildcard $(PLATFORM_PATH)/*/converters/$(PIN_COMPATIBLE)_to_$(CONVERT_TO)/)
+ ifeq ($(CONVERTER),)
+ $(call CATASTROPHIC_ERROR,Converting from '$(PIN_COMPATIBLE)' to '$(CONVERT_TO)' not possible!)
+ endif
+
+ -include $(CONVERTER)/pre_converter.mk
+
+ PLATFORM_KEY = $(shell echo $(CONVERTER) | cut -d "/" -f2)
+ TARGET := $(TARGET)_$(CONVERT_TO)
+
+ # Configure any defaults
+ OPT_DEFS += -DCONVERT_TO_$(shell echo $(CONVERT_TO) | tr '[:lower:]' '[:upper:]')
+ OPT_DEFS += -DCONVERTER_TARGET=\"$(CONVERT_TO)\"
+ OPT_DEFS += -DCONVERTER_ENABLED
+ VPATH += $(CONVERTER)
+
+ # Configure for "alias" - worst case it produces an idential define
+ OPT_DEFS += -DCONVERT_TO_$(shell echo $(ACTIVE_CONVERTER) | tr '[:lower:]' '[:upper:]')
+
+ # Finally run any converter specific logic
+ include $(CONVERTER)/converter.mk
+endif
diff --git a/-/disable_features.mk b/-/disable_features.mk
new file mode 100644
index 00000000000..fe918b72b2b
--- /dev/null
+++ b/-/disable_features.mk
@@ -0,0 +1,27 @@
+# Unconditionally disable features that a keyboard advertises it doesn't support
+
+FEATURE_NAMES :=
+FEATURE_NAMES += AUDIO
+FEATURE_NAMES += BACKLIGHT
+FEATURE_NAMES += BLUETOOTH
+FEATURE_NAMES += DIP_SWITCH
+FEATURE_NAMES += DYNAMIC_KEYMAP
+FEATURE_NAMES += ENCODER
+FEATURE_NAMES += HAPTIC
+FEATURE_NAMES += HD44780
+FEATURE_NAMES += IOS_DEVICE
+FEATURE_NAMES += LCD_BACKLIGHT
+FEATURE_NAMES += LCD
+FEATURE_NAMES += OLED
+FEATURE_NAMES += POINTING_DEVICE
+FEATURE_NAMES += PS2_MOUSE
+FEATURE_NAMES += RGBLIGHT
+FEATURE_NAMES += RGB_MATRIX
+FEATURE_NAMES += SLEEP_LED
+FEATURE_NAMES += STENO
+FEATURE_NAMES += SWAP_HANDS
+FEATURE_NAMES += WATCHDOG
+FEATURE_NAMES += XT
+
+$(foreach AFEATURE,$(FEATURE_NAMES),\
+ $(if $(filter $($(AFEATURE)_SUPPORTED),no),$(eval $(AFEATURE)_ENABLE=no)))
diff --git a/-/generic_features.mk b/-/generic_features.mk
new file mode 100644
index 00000000000..4e058dcd265
--- /dev/null
+++ b/-/generic_features.mk
@@ -0,0 +1,56 @@
+# Copyright 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 .
+
+SPACE_CADET_ENABLE ?= yes
+GRAVE_ESC_ENABLE ?= yes
+
+GENERIC_FEATURES = \
+ AUTOCORRECT \
+ CAPS_WORD \
+ COMBO \
+ COMMAND \
+ DEFERRED_EXEC \
+ DIGITIZER \
+ DIP_SWITCH \
+ DYNAMIC_KEYMAP \
+ DYNAMIC_MACRO \
+ GRAVE_ESC \
+ HAPTIC \
+ KEY_LOCK \
+ KEY_OVERRIDE \
+ LEADER \
+ PROGRAMMABLE_BUTTON \
+ REPEAT_KEY \
+ SECURE \
+ SPACE_CADET \
+ SWAP_HANDS \
+ TAP_DANCE \
+ VELOCIKEY \
+ WPM \
+ DYNAMIC_TAPPING_TERM \
+ TRI_LAYER
+
+define HANDLE_GENERIC_FEATURE
+ # $$(info "Processing: $1_ENABLE $2.c")
+ SRC += $$(wildcard $$(QUANTUM_DIR)/process_keycode/process_$2.c)
+ SRC += $$(wildcard $$(QUANTUM_DIR)/$2.c)
+ OPT_DEFS += -D$1_ENABLE
+endef
+
+$(foreach F,$(GENERIC_FEATURES),\
+ $(if $(filter yes, $(strip $($(F)_ENABLE))),\
+ $(eval $(call HANDLE_GENERIC_FEATURE,$(F),$(shell echo $(F) | tr '[:upper:]' '[:lower:]'))) \
+ ) \
+)
diff --git a/-/message.mk b/-/message.mk
new file mode 100644
index 00000000000..bf39554dab7
--- /dev/null
+++ b/-/message.mk
@@ -0,0 +1,110 @@
+COLOR ?= true
+
+ifeq ($(COLOR),true)
+ NO_COLOR=\033[0m
+ OK_COLOR=\033[32;01m
+ ERROR_COLOR=\033[31;01m
+ WARN_COLOR=\033[33;01m
+ SKIPPED_COLOR=\033[36;01m
+ BLUE=\033[0;34m
+ BOLD=\033[1m
+endif
+
+ifneq ($(shell echo "1 2 3" | awk '{ printf "%2s", $$3; }' 2>/dev/null)," 3")
+ AWK=awk
+else
+ AWK=cat && test
+endif
+
+ON_ERROR ?= exit 1
+
+OK_STRING=$(OK_COLOR)[OK]$(NO_COLOR)\n
+ERROR_STRING=$(ERROR_COLOR)[ERRORS]$(NO_COLOR)\n
+WARN_STRING=$(WARN_COLOR)[WARNINGS]$(NO_COLOR)\n
+SKIPPED_STRING=$(SKIPPED_COLOR)[SKIPPED]$(NO_COLOR)\n
+
+TAB_LOG = printf "\n%s\n\n" "$$LOG" | $(AWK) '{ sub(/^/," | "); print }'
+TAB_LOG_PLAIN = printf "%s\n" "$$LOG"
+AWK_STATUS = $(AWK) '{ printf " %-10s\n", $$1; }'
+AWK_CMD = $(AWK) '{ printf "%-99s", $$0; }'
+PRINT_ERROR = ($(SILENT) ||printf " $(ERROR_STRING)" | $(AWK_STATUS)) && $(TAB_LOG) && $(ON_ERROR)
+PRINT_WARNING = ($(SILENT) || printf " $(WARN_STRING)" | $(AWK_STATUS)) && $(TAB_LOG)
+PRINT_ERROR_PLAIN = ($(SILENT) ||printf " $(ERROR_STRING)" | $(AWK_STATUS)) && $(TAB_LOG_PLAIN) && $(ON_ERROR)
+PRINT_WARNING_PLAIN = ($(SILENT) || printf " $(WARN_STRING)" | $(AWK_STATUS)) && $(TAB_LOG_PLAIN)
+PRINT_SKIPPED_PLAIN = ($(SILENT) || printf " $(SKIPPED_STRING)" | $(AWK_STATUS))
+PRINT_OK = $(SILENT) || printf " $(OK_STRING)" | $(AWK_STATUS)
+BUILD_CMD = LOG=$$($(CMD) 2>&1) ; if [ $$? -gt 0 ]; then $(PRINT_ERROR); elif [ "$$LOG" != "" ] ; then $(PRINT_WARNING); else $(PRINT_OK); fi;
+MAKE_MSG_FORMAT = $(AWK) '{ printf "%-118s", $$0;}'
+
+# The UNSYNC_OUTPUT_CMD command disables the `--output-sync` for the current command, if the `--output-sync` granularity is `target` or lower.
+# This is achieved by telling make to treat the current command as if it invokes a recursive make subcommand (as if by calling `$(MAKE)`).
+UNSYNC_OUTPUT_CMD = +true
+
+# Define Messages
+# English
+MSG_ERRORS_NONE = Errors: none
+MSG_ERRORS = $(ERROR_COLOR)Make finished with errors\n$(NO_COLOR)
+MSG_BEGIN = -------- begin --------
+MSG_END = -------- end --------
+MSG_SIZE_BEFORE = Size before:
+MSG_SIZE_AFTER = Size after:
+MSG_COFF = Converting to AVR COFF:
+MSG_EXTENDED_COFF = Converting to AVR Extended COFF:
+MSG_FLASH = Creating load file for flashing:
+MSG_UF2 = Creating UF2 file for deployment:
+MSG_EEPROM = Creating load file for EEPROM:
+MSG_BIN = Creating binary load file for flashing:
+MSG_EXTENDED_LISTING = Creating Extended Listing:
+MSG_SYMBOL_TABLE = Creating Symbol Table:
+MSG_EXECUTING = Executing:
+MSG_LINKING = Linking:
+MSG_COMPILING = Compiling:
+MSG_COMPILING_CXX = Compiling:
+MSG_ASSEMBLING = Assembling:
+MSG_CLEANING = Cleaning project:
+MSG_CREATING_LIBRARY = Creating library:
+MSG_GENERATING = Generating:
+MSG_NOT_REPO = $(WARN_COLOR)WARNING:$(NO_COLOR) Target folder is not a git repo, you probably downloaded a zip file instead of cloning.\n\
+Please consider following $(BOLD)https://docs.qmk.fm/\#/newbs_getting_started$(NO_COLOR).\n\n
+MSG_SUBMODULE_DIRTY = $(WARN_COLOR)WARNING:$(NO_COLOR) Some git submodules are out of date or modified.\n\
+Please consider running $(BOLD)qmk git-submodule$(NO_COLOR).\n\n
+
+define GENERATE_MSG_MAKE_KB
+ MSG_MAKE_KB_ACTUAL := Making $$(KB_SP) with keymap $(BOLD)$$(CURRENT_KM)$(NO_COLOR)
+ ifneq ($$(MAKE_TARGET),)
+ MSG_MAKE_KB_ACTUAL += and target $(BOLD)$$(MAKE_TARGET)$(NO_COLOR)
+ endif
+endef
+MSG_MAKE_KB = $(eval $(call GENERATE_MSG_MAKE_KB))$(MSG_MAKE_KB_ACTUAL)
+define GENERATE_MSG_MAKE_TEST
+ MSG_MAKE_TEST_ACTUAL := Making test $(BOLD)$(TEST_NAME)$(NO_COLOR)
+ ifneq ($$(MAKE_TARGET),)
+ MSG_MAKE_TEST_ACTUAL += with target $(BOLD)$$(MAKE_TARGET)$(NO_COLOR)
+ endif
+endef
+MSG_MAKE_TEST = $(eval $(call GENERATE_MSG_MAKE_TEST))$(MSG_MAKE_TEST_ACTUAL)
+MSG_TEST = Testing $(BOLD)$(TEST_NAME)$(NO_COLOR)
+define GENERATE_MSG_AVAILABLE_KEYMAPS
+ MSG_AVAILABLE_KEYMAPS_ACTUAL := Available keymaps for $(BOLD)$$(CURRENT_KB)$(NO_COLOR):
+endef
+MSG_AVAILABLE_KEYMAPS = $(eval $(call GENERATE_MSG_AVAILABLE_KEYMAPS))$(MSG_AVAILABLE_KEYMAPS_ACTUAL)
+
+MSG_BOOTLOADER_NOT_FOUND_BASE = Bootloader not found. Make sure the board is in bootloader mode. See https://docs.qmk.fm/\#/newbs_flashing\n
+MSG_CHECK_FILESIZE = Checking file size of $(TARGET).$(FIRMWARE_FORMAT)
+MSG_CHECK_FILESIZE_SKIPPED = (Firmware size check does not yet support $(MCU_ORIG); skipping)
+MSG_FILE_TOO_BIG = $(ERROR_COLOR)The firmware is too large!$(NO_COLOR) $(CURRENT_SIZE)/$(MAX_SIZE) ($(OVER_SIZE) bytes over)\n
+MSG_FILE_TOO_SMALL = The firmware is too small! $(CURRENT_SIZE)/$(MAX_SIZE)\n
+MSG_FILE_JUST_RIGHT = The firmware size is fine - $(CURRENT_SIZE)/$(MAX_SIZE) ($(PERCENT_SIZE)%%, $(FREE_SIZE) bytes free)\n
+MSG_FILE_NEAR_LIMIT = The firmware size is approaching the maximum - $(CURRENT_SIZE)/$(MAX_SIZE) ($(PERCENT_SIZE)%%, $(FREE_SIZE) bytes free)\n
+MSG_PYTHON_MISSING = $(ERROR_COLOR)ERROR:$(NO_COLOR) Cannot run \"qmk hello\"!\n\n\
+ Please run $(BOLD)qmk setup$(NO_COLOR) to install all the dependencies QMK requires.\n\n
+MSG_FLASH_BOOTLOADER = $(WARN_COLOR)WARNING:$(NO_COLOR) This board's bootloader is not specified or is not supported by the \":flash\" target at this time.\n\n
+MSG_FLASH_ARCH = $(WARN_COLOR)WARNING:$(NO_COLOR) This board's architecture is not supported by the \":flash\" target at this time.\n\n
+MSG_BOOTLOADER_NOT_FOUND = $(ERROR_COLOR)ERROR:$(NO_COLOR) $(MSG_BOOTLOADER_NOT_FOUND_BASE) Trying again in 5s (Ctrl+C to cancel)\n
+BOOTLOADER_RETRY_TIME ?= 0.5
+MSG_BOOTLOADER_NOT_FOUND_QUICK_RETRY = $(MSG_BOOTLOADER_NOT_FOUND_BASE) Trying again every $(BOOTLOADER_RETRY_TIME)s (Ctrl+C to cancel)
+
+define CATASTROPHIC_ERROR
+ $(shell printf "\n * %-99s $(ERROR_STRING)\n" "$2" >&2)
+ $(error $1)
+endef
diff --git a/-/show_options.mk b/-/show_options.mk
new file mode 100644
index 00000000000..563d0898803
--- /dev/null
+++ b/-/show_options.mk
@@ -0,0 +1,154 @@
+BUILD_OPTION_NAMES = \
+ BOOTMAGIC_ENABLE \
+ MOUSEKEY_ENABLE \
+ EXTRAKEY_ENABLE \
+ CONSOLE_ENABLE \
+ COMMAND_ENABLE \
+ NKRO_ENABLE \
+ CUSTOM_MATRIX \
+ DEBOUNCE_TYPE \
+ SPLIT_KEYBOARD \
+ DYNAMIC_KEYMAP_ENABLE \
+ USB_HID_ENABLE \
+ VIA_ENABLE
+
+HARDWARE_OPTION_NAMES = \
+ SLEEP_LED_ENABLE \
+ BACKLIGHT_ENABLE \
+ BACKLIGHT_DRIVER \
+ RGBLIGHT_ENABLE \
+ RGBLIGHT_DRIVER \
+ RGB_MATRIX_ENABLE \
+ RGB_MATRIX_DRIVER \
+ CIE1931_CURVE \
+ MIDI_ENABLE \
+ BLUETOOTH_ENABLE \
+ BLUETOOTH_DRIVER \
+ AUDIO_ENABLE \
+ HD44780_ENABLE \
+ ENCODER_ENABLE \
+ LED_TABLES \
+ POINTING_DEVICE_ENABLE \
+ DIP_SWITCH_ENABLE
+
+OTHER_OPTION_NAMES = \
+ UNICODE_ENABLE \
+ UCIS_ENABLE \
+ UNICODEMAP_ENABLE \
+ UNICODE_COMMON \
+ AUTO_SHIFT_ENABLE \
+ AUTO_SHIFT_MODIFIERS \
+ DYNAMIC_TAPPING_TERM_ENABLE \
+ COMBO_ENABLE \
+ KEY_LOCK_ENABLE \
+ KEY_OVERRIDE_ENABLE \
+ LEADER_ENABLE \
+ STENO_ENABLE \
+ STENO_PROTOCOL \
+ TAP_DANCE_ENABLE \
+ VIRTSER_ENABLE \
+ OLED_ENABLE \
+ OLED_DRIVER \
+ LED_BACK_ENABLE \
+ LED_UNDERGLOW_ENABLE \
+ LED_ANIMATIONS \
+ IOS_DEVICE_ENABLE \
+ HELIX ZINC \
+ AUTOLOG_ENABLE \
+ DEBUG_ENABLE \
+ ENCODER_MAP_ENABLE \
+ ENCODER_ENABLE_CUSTOM \
+ GERMAN_ENABLE \
+ HAPTIC_ENABLE \
+ ISSI_ENABLE \
+ KEYLOGGER_ENABLE \
+ LCD_BACKLIGHT_ENABLE \
+ MACROS_ENABLED \
+ PS2_ENABLE \
+ PS2_MOUSE_ENABLE \
+ PS2_DRIVER \
+ RAW_ENABLE \
+ SWAP_HANDS_ENABLE \
+ RING_BUFFERED_6KRO_REPORT_ENABLE \
+ WATCHDOG_ENABLE \
+ ERGOINU \
+ NO_USB_STARTUP_CHECK \
+ DISABLE_PROMICRO_LEDs \
+ MITOSIS_DATAGROK_BOTTOMSPACE \
+ MITOSIS_DATAGROK_SLOWUART \
+ RGB_MATRIX_KEYPRESSES \
+ LED_MIRRORED \
+ RGBLIGHT_FULL_POWER \
+ LTO_ENABLE \
+ PROGRAMMABLE_BUTTON_ENABLE \
+ SECURE_ENABLE \
+ CAPS_WORD_ENABLE \
+ AUTOCORRECT_ENABLE \
+ TRI_LAYER_ENABLE \
+ REPEAT_KEY_ENABLE
+
+define NAME_ECHO
+ @printf " %-30s = %-16s # %s\\n" "$1" "$($1)" "$(origin $1)"
+
+endef
+
+define YAML_NAME_ECHO
+ @echo ' $1 : "$(strip $($1))"'
+
+endef
+
+.PHONY: show_build_options0 show_build_options
+show_build_options0:
+ @echo " KEYBOARD = $(KEYBOARD)"
+ @echo " KEYMAP = $(KEYMAP)"
+ @echo " MCU = $(MCU)"
+ @echo " MCU_SERIES = $(MCU_SERIES)"
+ @echo " PLATFORM = $(PLATFORM)"
+ @echo " BOOTLOADER = $(BOOTLOADER)"
+ @echo " FIRMWARE_FORMAT = $(FIRMWARE_FORMAT)"
+ @echo
+ @echo "Build Options:"
+ $(foreach A_OPTION_NAME,$(sort $(BUILD_OPTION_NAMES)),\
+ $(call NAME_ECHO,$(A_OPTION_NAME)))
+
+show_build_options: show_build_options0
+ @echo
+ @echo "If you want to know more, please try 'show_all_features' or 'show_full_features'"
+ @echo
+
+.PHONY: show_all_features
+show_all_features: show_build_options0
+ @echo
+ @echo "Hardware Options:"
+ $(foreach A_OPTION_NAME,$(sort $(HARDWARE_OPTION_NAMES)),\
+ $(if $($(A_OPTION_NAME)),$(call NAME_ECHO,$(A_OPTION_NAME))))
+ @echo
+ @echo "Other Options:"
+ $(foreach A_OPTION_NAME,$(sort $(OTHER_OPTION_NAMES)),\
+ $(if $($(A_OPTION_NAME)),$(call NAME_ECHO,$(A_OPTION_NAME))))
+
+.PHONY: show_full_features
+show_full_features: show_build_options0
+ @echo
+ @echo "Hardware Options:"
+ $(foreach A_OPTION_NAME,$(sort $(HARDWARE_OPTION_NAMES)),\
+ $(call NAME_ECHO,$(A_OPTION_NAME)))
+ @echo
+ @echo "Other Options:"
+ $(foreach A_OPTION_NAME,$(sort $(OTHER_OPTION_NAMES)),\
+ $(call NAME_ECHO,$(A_OPTION_NAME)))
+
+.PHONY: yaml_build_options
+yaml_build_options:
+ @echo '- KEYBOARD : "$(KEYBOARD)"'
+ @echo ' KEYMAP : "$(KEYMAP)"'
+ @echo ' MCU : "$(MCU)"'
+ @echo ' MCU_SERIES : "$(MCU_SERIES)"'
+ @echo ' PLATFORM : "$(PLATFORM)"'
+ @echo ' FIRMWARE_FORMAT : "$(FIRMWARE_FORMAT)"'
+ $(foreach A_OPTION_NAME,$(sort $(BUILD_OPTION_NAMES)),\
+ $(call YAML_NAME_ECHO,$(A_OPTION_NAME)))
+ $(foreach A_OPTION_NAME,$(sort $(HARDWARE_OPTION_NAMES)),\
+ $(if $($(A_OPTION_NAME)),$(call YAML_NAME_ECHO,$(A_OPTION_NAME))))
+ $(foreach A_OPTION_NAME,$(sort $(OTHER_OPTION_NAMES)),\
+ $(if $($(A_OPTION_NAME)),$(call YAML_NAME_ECHO,$(A_OPTION_NAME))))
diff --git a/-/testlist.mk b/-/testlist.mk
new file mode 100644
index 00000000000..74a794adcdc
--- /dev/null
+++ b/-/testlist.mk
@@ -0,0 +1,22 @@
+TEST_LIST = $(sort $(patsubst %/test.mk,%, $(shell find $(ROOT_DIR)tests -type f -name test.mk)))
+FULL_TESTS := $(notdir $(TEST_LIST))
+
+include $(QUANTUM_PATH)/debounce/tests/testlist.mk
+include $(QUANTUM_PATH)/encoder/tests/testlist.mk
+include $(QUANTUM_PATH)/os_detection/tests/testlist.mk
+include $(QUANTUM_PATH)/sequencer/tests/testlist.mk
+include $(QUANTUM_PATH)/wear_leveling/tests/testlist.mk
+include $(PLATFORM_PATH)/test/testlist.mk
+
+define VALIDATE_TEST_LIST
+ ifneq ($1,)
+ ifeq ($$(findstring -,$1),-)
+ $$(call CATASTROPHIC_ERROR,Invalid test name,Test names can't contain '-', but '$1' does.)
+ else
+ $$(eval $$(call VALIDATE_TEST_LIST,$$(firstword $2),$$(wordlist 2,9999,$2)))
+ endif
+ endif
+endef
+
+
+$(eval $(call VALIDATE_TEST_LIST,$(firstword $(TEST_LIST)),$(wordlist 2,9999,$(TEST_LIST))))
diff --git a/PWM_3610_sensor_holder_hole_not_so_short_0.2mm_PLA_MK3S_9m.gcode b/PWM_3610_sensor_holder_hole_not_so_short_0.2mm_PLA_MK3S_9m.gcode
new file mode 100644
index 00000000000..6c98ac556f0
--- /dev/null
+++ b/PWM_3610_sensor_holder_hole_not_so_short_0.2mm_PLA_MK3S_9m.gcode
@@ -0,0 +1,10358 @@
+; generated by PrusaSlicer 2.7.1+MacOS-arm64 on 2024-01-16 at 21:04:10 UTC
+
+; Most settings copied from Creality Manuform NICE
+
+; external perimeters extrusion width = 0.45mm
+; perimeters extrusion width = 0.45mm
+; infill extrusion width = 0.45mm
+; solid infill extrusion width = 0.45mm
+; top infill extrusion width = 0.40mm
+; support material extrusion width = 0.35mm
+; first layer extrusion width = 0.42mm
+
+M73 P0 R9
+M73 Q0 S9
+M201 X1000 Y1000 Z200 E5000 ; sets maximum accelerations, mm/sec^2
+M203 X200 Y200 Z12 E120 ; sets maximum feedrates, mm / sec
+M204 S1250 T1250 ; sets acceleration (S) and retract acceleration (R), mm/sec^2
+M205 X8.00 Y8.00 Z0.40 E4.50 ; sets the jerk limits, mm/sec
+M205 S0 T0 ; sets the minimum extruding and travel feed rate, mm/sec
+;TYPE:Custom
+M862.3 P "MK3S" ; printer model check
+M862.1 P0.4 ; nozzle diameter check
+M115 U3.10.0 ; tell printer latest fw version
+G90 ; use absolute coordinates
+M83 ; extruder relative mode
+M104 S215 ; set extruder temp
+M140 S60 ; set bed temp
+M190 S60 ; wait for bed temp
+M109 S215 ; wait for extruder temp
+G28 W ; home all without mesh bed level
+G80 ; mesh bed leveling
+G1 Y-3.0 F1000.0 ; go outside print area
+G92 E0.0
+G1 X60.0 E9.0 F1000.0 ; intro line
+G1 X100.0 E12.5 F1000.0 ; intro line
+G92 E0.0
+M221 S95
+
+; Don't change E values below. Excessive value can damage the printer.
+
+G21 ; set units to millimeters
+G90 ; use absolute coordinates
+M83 ; use relative distances for extrusion
+M900 K0.05 ; Filament gcode LA 1.5
+M900 K30 ; Filament gcode LA 1.0
+M107
+;LAYER_CHANGE
+;Z:0.2
+;HEIGHT:0.2
+;BEFORE_LAYER_CHANGE
+G92 E0.0
+;0.2
+
+
+G1 Z.2 F10800
+M73 P1 R9
+M73 Q1 S9
+;AFTER_LAYER_CHANGE
+;0.2
+G1 E-.6 F2100
+G1 X127.261 Y91.914 F10800
+G1 Z.2
+G1 E.6 F2100
+;TYPE:Perimeter
+;WIDTH:0.419999
+G1 F1200
+G1 X135.336 Y91.914 E.24053
+G1 X135.336 Y94.793 E.08576
+G1 X135.336 Y118.086 E.69382
+G1 X127.26 Y118.086 E.24056
+G1 X127.39 Y117.567 E.01594
+G1 X127.402 Y117.042 E.01564
+G1 X127.307 Y116.547 E.01501
+G1 X127.14 Y116.139 E.01313
+G1 X126.864 Y115.719 E.01497
+G1 X126.551 Y115.405 E.01321
+G1 X126.058 Y115.09 E.01743
+G1 X125.578 Y114.915 E.01522
+G1 X125 Y114.839 E.01736
+G1 X124.559 Y114.879 E.01319
+G1 X124.075 Y115.024 E.01505
+G1 X123.615 Y115.276 E.01562
+G1 X123.278 Y115.561 E.01315
+G1 X122.927 Y116.014 E.01707
+G1 X122.701 Y116.523 E.01659
+G1 X122.599 Y117.099 E.01742
+G1 X122.622 Y117.61 E.01524
+G1 X122.743 Y118.086 E.01463
+G1 X114.664 Y118.086 E.24065
+G1 X114.664 Y91.914 E.77957
+G1 X122.739 Y91.914 E.24053
+M73 P2 R9
+M73 Q2 S9
+G1 X122.671 Y92.125 E.0066
+G1 X122.592 Y92.641 E.01555
+G1 X122.625 Y93.165 E.01564
+G1 X122.762 Y93.651 E.01504
+G1 X122.966 Y94.044 E.01319
+G1 X123.293 Y94.452 E.01557
+G1 X123.764 Y94.813 E.01768
+G1 X124.25 Y95.035 E.01592
+G1 X124.642 Y95.121 E.01195
+G1 X125.358 Y95.121 E.02133
+G1 X125.75 Y95.035 E.01195
+G1 X126.238 Y94.812 E.01598
+G1 X126.511 Y94.621 E.00992
+G1 X126.873 Y94.26 E.01523
+G1 X127.06 Y93.992 E.00973
+G1 X127.276 Y93.529 E.01522
+G1 X127.353 Y93.274 E.00793
+G1 X127.405 Y92.691 E.01743
+G1 X127.338 Y92.185 E.0152
+G1 X127.277 Y91.972 E.0066
+G1 X126.852 Y91.473 F10800
+;WIDTH:0.542243
+G1 F1200
+G1 X126.916 Y91.487 E.00258
+;WIDTH:0.501495
+G1 X127.028 Y91.512 E.00416
+;WIDTH:0.460747
+G1 X127.14 Y91.537 E.00379
+;WIDTH:0.419999
+G1 X135.713 Y91.537 E.25536
+G1 X135.713 Y94.793 E.09698
+G1 X135.713 Y118.463 E.70505
+G1 X127.618 Y118.463 E.24112
+;WIDTH:0.45462
+G1 X127.386 Y118.459 E.00755
+;WIDTH:0.48924
+G1 X127.153 Y118.455 E.00822
+;WIDTH:0.52386
+G1 X126.92 Y118.451 E.00885
+;WIDTH:0.559212
+G1 X126.859 Y118.466 E.00256
+;WIDTH:0.594564
+G1 X126.797 Y118.48 E.00277
+;WIDTH:0.629916
+G1 X126.735 Y118.494 E.00295
+G1 X126.755 Y118.434 E.00293
+;WIDTH:0.594564
+G1 X126.775 Y118.374 E.00276
+;WIDTH:0.559212
+G1 X126.795 Y118.314 E.00258
+;WIDTH:0.52386
+G1 X126.862 Y118.093 E.00877
+;WIDTH:0.48924
+G1 X126.929 Y117.872 E.00814
+;WIDTH:0.45462
+G1 X126.996 Y117.652 E.00748
+;WIDTH:0.419999
+G1 X127.035 Y117.223 E.01283
+G1 X126.981 Y116.783 E.0132
+G1 X126.865 Y116.434 E.01095
+G1 X126.652 Y116.063 E.01274
+G1 X126.328 Y115.709 E.01429
+G1 X125.929 Y115.444 E.01427
+G1 X125.449 Y115.269 E.01522
+G1 X124.975 Y115.215 E.01421
+G1 X124.608 Y115.252 E.01099
+G1 X124.196 Y115.381 E.01286
+G1 X123.811 Y115.599 E.01318
+G1 X123.533 Y115.839 E.01094
+G1 X123.271 Y116.178 E.01276
+G1 X123.068 Y116.612 E.01427
+G1 X122.976 Y117.082 E.01427
+G1 X122.998 Y117.593 E.01524
+G1 X123.136 Y118.068 E.01473
+;WIDTH:0.466301
+G1 X123.181 Y118.189 E.00432
+;WIDTH:0.512603
+G1 X123.226 Y118.311 E.00482
+;WIDTH:0.558905
+G1 X123.271 Y118.432 E.00526
+;WIDTH:0.605206
+G1 X123.316 Y118.554 E.00578
+G1 X123.242 Y118.517 E.00367
+;WIDTH:0.566815
+G1 X123.115 Y118.499 E.00531
+;WIDTH:0.517877
+G1 X122.987 Y118.481 E.00485
+;WIDTH:0.468938
+G1 X122.86 Y118.463 E.00432
+;WIDTH:0.419999
+G1 X114.287 Y118.463 E.25536
+G1 X114.287 Y91.537 E.80203
+G1 X122.929 Y91.533 E.25742
+M73 P3 R9
+M73 Q3 S9
+;WIDTH:0.46431
+G1 X123.035 Y91.501 E.00369
+;WIDTH:0.50862
+G1 X123.141 Y91.47 E.00406
+;WIDTH:0.55293
+G1 X123.247 Y91.438 E.00446
+;WIDTH:0.59724
+G1 X123.353 Y91.407 E.00484
+G1 X123.327 Y91.47 E.00298
+;WIDTH:0.567378
+G1 X123.243 Y91.677 E.00925
+;WIDTH:0.518252
+G1 X123.158 Y91.885 E.00844
+;WIDTH:0.469126
+G1 X123.073 Y92.092 E.00753
+;WIDTH:0.419999
+G1 X122.979 Y92.511 E.01279
+G1 X122.975 Y92.953 E.01317
+G1 X123.067 Y93.386 E.01319
+M73 P3 R8
+G1 X123.213 Y93.726 E.01102
+G1 X123.542 Y94.169 E.01644
+G1 X123.921 Y94.47 E.01442
+G1 X124.407 Y94.693 E.01593
+G1 X124.642 Y94.744 E.00716
+G1 X125.358 Y94.744 E.02133
+G1 X125.593 Y94.693 E.00716
+G1 X126.08 Y94.469 E.01597
+G1 X126.245 Y94.355 E.00597
+G1 X126.718 Y93.833 E.02098
+G1 X126.964 Y93.29 E.01776
+G1 X127.031 Y92.741 E.01647
+G1 X126.964 Y92.234 E.01523
+G1 X126.866 Y91.947 E.00903
+;WIDTH:0.465197
+G1 X126.814 Y91.815 E.00473
+;WIDTH:0.510394
+G1 X126.762 Y91.682 E.00527
+;WIDTH:0.555591
+G1 X126.709 Y91.55 E.00576
+;WIDTH:0.600788
+G1 X126.657 Y91.417 E.00629
+G1 X126.692 Y91.438 E.0018
+;WIDTH:0.582991
+G1 X126.793 Y91.46 E.00441
+G1 X126.973 Y91.073 F10800
+;TYPE:External perimeter
+;WIDTH:0.419999
+G1 F1200
+G1 X126.981 Y91.08 E.00032
+G1 X127.14 Y91.16 E.0053
+G1 X136.09 Y91.16 E.26659
+G1 X136.09 Y94.793 E.10821
+G1 X136.09 Y118.84 E.71628
+G1 X127.176 Y118.84 E.26552
+G1 X127.012 Y118.89 E.00511
+G1 X126.514 Y119.349 E.02017
+G1 X126.031 Y119.625 E.01657
+G1 X125.5 Y119.79 E.01656
+G1 X124.944 Y119.838 E.01662
+M73 Q3 S8
+G1 X124.392 Y119.766 E.01658
+G1 X123.867 Y119.578 E.01661
+G1 X123.394 Y119.281 E.01664
+G1 X123.025 Y118.926 E.01525
+G1 X122.86 Y118.84 E.00554
+G1 X113.91 Y118.84 E.26659
+G1 X113.91 Y91.16 E.82449
+G1 X122.86 Y91.16 E.26659
+M73 Q4 S8
+G1 X122.988 Y91.11 E.00409
+M73 P4 R8
+G1 X123.486 Y90.65 E.02019
+G1 X123.969 Y90.375 E.01656
+G1 X124.498 Y90.21 E.01651
+G1 X125.17 Y90.167 E.02006
+G1 X125.673 Y90.255 E.01521
+G1 X126.131 Y90.421 E.01451
+G1 X126.606 Y90.719 E.0167
+G1 X126.93 Y91.031 E.0134
+G1 X127.313 Y91.148 F10800
+G1 E-.6 F2100
+G1 Z.3 F10800
+G1 X123.402 Y92.386
+G1 Z.2
+G1 E.6 F2100
+G1 F1200
+G1 X123.482 Y92.091 E.0091
+G1 X123.743 Y91.667 E.01483
+G1 X124.007 Y91.421 E.01075
+G1 X124.318 Y91.237 E.01076
+G1 X124.673 Y91.125 E.01109
+G1 X125.185 Y91.103 E.01526
+G1 X125.583 Y91.196 E.01217
+G1 X125.857 Y91.331 E.0091
+G1 X126.249 Y91.66 E.01524
+G1 X126.518 Y92.092 E.01516
+G1 X126.59 Y92.283 E.00608
+G1 X126.657 Y92.79 E.01523
+G1 X126.592 Y93.21 E.01266
+G1 X126.377 Y93.673 E.01521
+G1 X125.923 Y94.126 E.0191
+G1 X125.436 Y94.35 E.01597
+G1 X124.642 Y94.367 E.02366
+G1 X124.078 Y94.127 E.01826
+G1 X123.762 Y93.855 E.01242
+G1 X123.555 Y93.566 E.01059
+G1 X123.434 Y93.297 E.00879
+G1 X123.352 Y92.945 E.01077
+G1 X123.349 Y92.584 E.01075
+G1 X123.387 Y92.444 E.00432
+G1 X123.513 Y92.065 F10800
+G1 X123.353 Y91.407
+;TYPE:Perimeter
+;WIDTH:0.59724
+G1 F1200
+G1 X123.761 Y91.027 E.02441
+;WIDTH:0.593606
+G1 X124.169 Y90.799 E.02033
+;WIDTH:0.59286
+G1 X124.653 Y90.663 E.02184
+;WIDTH:0.595922
+G1 X125.164 Y90.638 E.02235
+G1 X125.658 Y90.735 E.02199
+;WIDTH:0.590658
+G1 X126.08 Y90.929 E.0201
+;WIDTH:0.592408
+G1 X126.547 Y91.305 E.02602
+;WIDTH:0.600788
+G1 X126.657 Y91.417 E.00692
+G1 E-.6 F2100
+G1 X126.657 Y91.417 Z.3 F10800
+G1 X120.654 Y96.047
+G1 Z.2
+G1 E.6 F2100
+;WIDTH:0.419999
+G1 F1200
+G1 X121.243 Y96.036 E.01755
+G1 X129.321 Y96.036 E.24062
+G1 X129.563 Y96.067 E.00727
+G1 X129.782 Y96.156 E.00704
+G1 X130.095 Y96.439 E.01257
+G1 X130.244 Y96.783 E.01117
+G1 X130.264 Y96.979 E.00587
+G1 X130.264 Y111.021 E.41826
+G1 X130.233 Y111.261 E.00721
+G1 X130.146 Y111.478 E.00696
+G1 X129.866 Y111.791 E.01251
+G1 X129.485 Y111.95 E.0123
+G1 X126.098 Y111.964 E.10089
+G1 X120.679 Y111.964 E.16141
+G1 X120.312 Y111.89 E.01115
+G1 X119.982 Y111.657 E.01203
+G1 X119.854 Y111.478 E.00655
+G1 X119.75 Y111.184 E.00929
+G1 X119.736 Y111.021 E.00487
+G1 X119.736 Y96.979 E.41826
+G1 X119.815 Y96.6 E.01153
+G1 X120.039 Y96.286 E.01149
+G1 X120.218 Y96.156 E.00659
+G1 X120.516 Y96.05 E.00942
+G1 X120.594 Y96.048 E.00232
+G1 X120.677 Y96.428 F10800
+G1 F1200
+G1 X121.243 Y96.413 E.01687
+G1 X129.321 Y96.413 E.24062
+G1 X129.598 Y96.485 E.00853
+G1 X129.785 Y96.655 E.00753
+G1 X129.875 Y96.861 E.0067
+G1 X129.887 Y111.021 E.42178
+G1 X129.816 Y111.296 E.00846
+M73 P5 R8
+M73 Q5 S8
+G1 X129.648 Y111.483 E.00749
+G1 X129.385 Y111.583 E.00838
+G1 X126.098 Y111.587 E.09791
+G1 X120.679 Y111.587 E.16141
+G1 X120.458 Y111.543 E.00671
+G1 X120.261 Y111.403 E.0072
+G1 X120.132 Y111.165 E.00806
+G1 X120.113 Y111.021 E.00433
+G1 X120.113 Y96.979 E.41826
+G1 X120.16 Y96.752 E.0069
+G1 X120.295 Y96.563 E.00692
+G1 X120.533 Y96.432 E.00809
+G1 X120.617 Y96.43 E.0025
+G1 X120.701 Y96.79 F10800
+;TYPE:External perimeter
+G1 F1200
+G1 X129.321 Y96.79 E.25676
+G1 X129.449 Y96.84 E.00409
+G1 X129.51 Y96.979 E.00452
+G1 X129.51 Y111.021 E.41826
+G1 X129.461 Y111.149 E.00408
+G1 X129.321 Y111.21 E.00455
+G1 X126.098 Y111.21 E.096
+G1 X120.679 Y111.21 E.16141
+G1 X120.539 Y111.149 E.00455
+G1 X120.49 Y111.021 E.00408
+G1 X120.49 Y96.979 E.41826
+G1 X120.551 Y96.84 E.00452
+G1 X120.645 Y96.809 E.00295
+G1 X121.044 Y96.792 F10800
+G1 E-.6 F2100
+G1 Z.3 F10800
+G1 X126.643 Y117.407
+G1 Z.2
+G1 E.6 F2100
+G1 F1200
+G1 X126.631 Y117.554 E.00439
+G1 X126.536 Y117.869 E.0098
+G1 X126.336 Y118.216 E.01193
+G1 X125.992 Y118.58 E.01492
+G1 X125.687 Y118.761 E.01056
+G1 X125.338 Y118.869 E.01088
+G1 X124.985 Y118.904 E.01057
+G1 X124.662 Y118.87 E.00967
+G1 X124.191 Y118.698 E.01494
+G1 X123.894 Y118.487 E.01085
+G1 X123.671 Y118.243 E.00985
+G1 X123.488 Y117.933 E.01072
+G1 X123.375 Y117.577 E.01113
+G1 X123.353 Y117.066 E.01524
+G1 X123.467 Y116.622 E.01365
+G1 X123.575 Y116.401 E.00733
+G1 X123.788 Y116.117 E.01057
+G1 X124.007 Y115.921 E.00875
+G1 X124.317 Y115.738 E.01072
+G1 X124.657 Y115.626 E.01066
+G1 X124.95 Y115.592 E.00879
+G1 X125.32 Y115.624 E.01106
+G1 X125.801 Y115.799 E.01525
+G1 X126.133 Y116.038 E.01219
+G1 X126.407 Y116.385 E.01317
+G1 X126.599 Y116.805 E.01376
+G1 X126.658 Y117.198 E.01184
+G1 X126.647 Y117.347 E.00445
+G1 X126.569 Y117.739 F10800
+G1 X126.735 Y118.494
+;TYPE:Perimeter
+;WIDTH:0.629916
+G1 F1200
+G1 X126.371 Y118.857 E.02384
+;WIDTH:0.584306
+G1 X125.943 Y119.147 E.02211
+;WIDTH:0.598684
+G1 X125.409 Y119.33 E.02478
+G1 X124.954 Y119.369 E.02005
+;WIDTH:0.600966
+G1 X124.502 Y119.309 E.0201
+G1 X124.017 Y119.126 E.02285
+;WIDTH:0.590246
+G1 X123.557 Y118.802 E.02433
+;WIDTH:0.605206
+G1 X123.316 Y118.554 E.01536
+G1 E-.6 F2100
+G1 X123.316 Y118.554 Z.3 F10800
+G1 X134.459 Y92.027
+G1 Z.2
+M73 Q6 S8
+G1 E.6 F2100
+;TYPE:Solid infill
+;WIDTH:0.420582
+G1 F1200
+G1 X135.053 Y92.621 E.02506
+G1 X135.053 Y93.155 E.01593
+G1 X134.095 Y92.197 E.04042
+G1 X133.561 Y92.197 E.01593
+M73 P6 R8
+G1 X135.053 Y93.689 E.06295
+G1 X135.053 Y94.223 E.01593
+G1 X133.027 Y92.197 E.08548
+G1 X132.493 Y92.197 E.01593
+G1 X135.053 Y94.757 E.10801
+G1 X135.053 Y95.292 E.01596
+G1 X131.958 Y92.197 E.13058
+G1 X131.424 Y92.197 E.01593
+G1 X135.053 Y95.826 E.15311
+G1 X135.053 Y96.36 E.01593
+G1 X130.89 Y92.197 E.17564
+G1 X130.356 Y92.197 E.01593
+G1 X135.053 Y96.894 E.19816
+G1 X135.053 Y97.428 E.01593
+G1 X129.822 Y92.197 E.22069
+G1 X129.288 Y92.197 E.01593
+G1 X135.053 Y97.962 E.24322
+G1 X135.053 Y98.496 E.01593
+G1 X128.754 Y92.197 E.26575
+G1 X128.22 Y92.197 E.01593
+G1 X135.053 Y99.03 E.28828
+G1 X135.053 Y99.564 E.01593
+G1 X127.686 Y92.197 E.31081
+G1 X127.619 Y92.197 E.002
+G1 X127.685 Y92.731 E.01605
+G1 X135.053 Y100.098 E.31083
+G1 X135.053 Y100.633 E.01596
+G1 X127.647 Y93.226 E.31248
+G1 X127.533 Y93.647 E.01301
+M73 Q7 S8
+G1 X135.053 Y101.167 E.31727
+G1 X135.053 Y101.701 E.01593
+M73 P7 R8
+G1 X130.547 Y97.195 E.19011
+G1 X130.547 Y97.729 E.01593
+G1 X135.053 Y102.235 E.19011
+G1 X135.053 Y102.769 E.01593
+G1 X130.547 Y98.263 E.19011
+G1 X130.547 Y98.797 E.01593
+G1 X135.053 Y103.303 E.19011
+G1 X135.053 Y103.837 E.01593
+G1 X130.547 Y99.331 E.19011
+G1 X130.547 Y99.865 E.01593
+G1 X135.053 Y104.371 E.19011
+G1 X135.053 Y104.905 E.01593
+G1 X130.547 Y100.399 E.19011
+G1 X130.547 Y100.933 E.01593
+G1 X135.053 Y105.439 E.19011
+G1 X135.053 Y105.973 E.01593
+G1 X130.547 Y101.467 E.19011
+G1 X130.547 Y102.001 E.01593
+G1 X135.053 Y106.508 E.19013
+G1 X135.053 Y107.042 E.01593
+G1 X130.547 Y102.536 E.19011
+G1 X130.547 Y103.07 E.01593
+G1 X135.053 Y107.576 E.19011
+G1 X135.053 Y108.11 E.01593
+G1 X130.547 Y103.604 E.19011
+G1 X130.547 Y104.138 E.01593
+G1 X135.053 Y108.644 E.19011
+G1 X135.053 Y109.178 E.01593
+G1 X130.547 Y104.672 E.19011
+G1 X130.547 Y105.206 E.01593
+M73 P8 R8
+M73 Q8 S8
+G1 X135.053 Y109.712 E.19011
+G1 X135.053 Y110.246 E.01593
+G1 X130.547 Y105.74 E.19011
+G1 X130.547 Y106.274 E.01593
+G1 X135.053 Y110.78 E.19011
+G1 X135.053 Y111.314 E.01593
+G1 X130.547 Y106.808 E.19011
+G1 X130.547 Y107.342 E.01593
+G1 X135.053 Y111.849 E.19013
+G1 X135.053 Y112.383 E.01593
+G1 X130.547 Y107.877 E.19011
+G1 X130.547 Y108.411 E.01593
+G1 X135.053 Y112.917 E.19011
+G1 X135.053 Y113.451 E.01593
+G1 X130.547 Y108.945 E.19011
+G1 X130.547 Y109.479 E.01593
+G1 X135.053 Y113.985 E.19011
+G1 X135.053 Y114.519 E.01593
+G1 X130.547 Y110.013 E.19011
+G1 X130.547 Y110.547 E.01593
+G1 X135.053 Y115.053 E.19011
+G1 X135.053 Y115.587 E.01593
+G1 X130.541 Y111.075 E.19036
+G1 X130.507 Y111.333 E.00776
+G1 X130.438 Y111.506 E.00556
+G1 X135.053 Y116.121 E.19471
+G1 X135.053 Y116.655 E.01593
+G1 X130.235 Y111.837 E.20327
+G1 X130.03 Y112.022 E.00824
+G1 X129.937 Y112.074 E.00318
+G1 X135.053 Y117.189 E.21582
+G1 X135.053 Y117.724 E.01596
+M73 Q9 S8
+G1 X129.553 Y112.223 E.23206
+G1 X129.379 Y112.246 E.00524
+M73 P9 R8
+G1 X129.041 Y112.246 E.01008
+G1 X134.598 Y117.803 E.23445
+G1 X134.064 Y117.803 E.01593
+G1 X128.507 Y112.246 E.23445
+G1 X127.973 Y112.246 E.01593
+G1 X133.53 Y117.803 E.23445
+G1 X132.996 Y117.803 E.01593
+G1 X127.439 Y112.246 E.23445
+G1 X126.905 Y112.246 E.01593
+G1 X132.462 Y117.803 E.23445
+G1 X131.928 Y117.803 E.01593
+G1 X126.371 Y112.246 E.23445
+G1 X125.837 Y112.246 E.01593
+G1 X131.394 Y117.803 E.23445
+G1 X130.86 Y117.803 E.01593
+G1 X125.303 Y112.246 E.23445
+G1 X124.769 Y112.246 E.01593
+G1 X130.326 Y117.803 E.23445
+G1 X129.792 Y117.803 E.01593
+G1 X124.235 Y112.246 E.23445
+G1 X123.701 Y112.247 E.01593
+G1 X129.257 Y117.803 E.23441
+G1 X128.723 Y117.803 E.01593
+G1 X127.638 Y116.718 E.04578
+G1 X127.682 Y117.004 E.00863
+G1 X127.691 Y117.304 E.00895
+G1 X128.189 Y117.803 E.02103
+G1 X127.655 Y117.803 E.01593
+G1 X127.49 Y117.638 E.00696
+G1 E-.6 F2100
+G1 X127.49 Y117.638 Z.3 F10800
+G1 X125.793 Y114.873
+G1 Z.2
+M73 Q10 S8
+G1 E.6 F2100
+G1 F1200
+G1 X123.167 Y112.247 E.11079
+G1 X122.633 Y112.247 E.01593
+M73 P10 R8
+G1 X124.94 Y114.554 E.09733
+G1 X124.464 Y114.611 E.0143
+G1 X122.099 Y112.247 E.09976
+G1 X121.565 Y112.247 E.01593
+G1 X124.051 Y114.733 E.10488
+G1 X123.686 Y114.902 E.012
+G1 X120.861 Y112.077 E.11919
+G1 E-.6 F2100
+G1 X120.861 Y112.077 Z.3 F10800
+G1 X129.275 Y95.923
+G1 Z.2
+G1 E.6 F2100
+G1 F1200
+G1 X127.363 Y94.011 E.08067
+G1 X127.313 Y94.119 E.00355
+G1 X127.158 Y94.34 E.00805
+G1 X128.571 Y95.753 E.05961
+G1 X128.037 Y95.753 E.01593
+G1 X126.908 Y94.624 E.04763
+G1 X126.63 Y94.88 E.01127
+G1 X127.503 Y95.753 E.03683
+G1 X126.969 Y95.753 E.01593
+G1 X126.307 Y95.091 E.02793
+G1 X125.941 Y95.259 E.01201
+G1 X126.435 Y95.753 E.02084
+G1 X125.901 Y95.753 E.01593
+G1 X125.536 Y95.389 E.01538
+G1 X125.018 Y95.404 E.01546
+G1 X125.367 Y95.753 E.01472
+G1 X124.833 Y95.753 E.01593
+G1 X124.22 Y95.14 E.02586
+G1 E-.6 F2100
+G1 X124.22 Y95.14 Z.3 F10800
+G1 X122.509 Y92.361
+G1 Z.2
+G1 E.6 F2100
+G1 F1200
+G1 X122.345 Y92.197 E.00692
+G1 X121.811 Y92.197 E.01593
+G1 X122.31 Y92.696 E.02105
+G1 X122.316 Y92.973 E.00827
+G1 X122.363 Y93.283 E.00935
+G1 X121.277 Y92.197 E.04582
+G1 X120.742 Y92.197 E.01596
+G1 X124.299 Y95.753 E.15005
+G1 X123.764 Y95.753 E.01596
+G1 X120.208 Y92.197 E.15003
+G1 X119.674 Y92.197 E.01593
+G1 X123.23 Y95.753 E.15003
+G1 X122.696 Y95.753 E.01593
+G1 X119.14 Y92.197 E.15003
+G1 X118.606 Y92.197 E.01593
+G1 X122.162 Y95.753 E.15003
+G1 X121.628 Y95.753 E.01593
+G1 X118.072 Y92.197 E.15003
+G1 X117.538 Y92.197 E.01593
+G1 X121.094 Y95.753 E.15003
+G1 X120.569 Y95.762 E.01566
+G1 X117.004 Y92.197 E.15041
+G1 X116.47 Y92.197 E.01593
+G1 X120.154 Y95.881 E.15543
+G1 X120.081 Y95.907 E.00231
+G1 X119.833 Y96.094 E.00927
+G1 X115.936 Y92.197 E.16441
+G1 X115.401 Y92.197 E.01596
+M73 P11 R8
+M73 Q11 S8
+G1 X119.604 Y96.4 E.17732
+G1 X119.555 Y96.487 E.00298
+G1 X119.471 Y96.801 E.0097
+G1 X114.947 Y92.277 E.19087
+G1 X114.947 Y92.811 E.01593
+G1 X119.453 Y97.317 E.19011
+G1 X119.453 Y97.851 E.01593
+G1 X114.947 Y93.345 E.19011
+G1 X114.947 Y93.879 E.01593
+G1 X119.453 Y98.385 E.19011
+G1 X119.453 Y98.919 E.01593
+G1 X114.947 Y94.413 E.19011
+G1 X114.947 Y94.947 E.01593
+G1 X119.453 Y99.453 E.19011
+G1 X119.453 Y99.987 E.01593
+G1 X114.947 Y95.481 E.19011
+G1 X114.947 Y96.015 E.01593
+G1 X119.453 Y100.521 E.19011
+G1 X119.453 Y101.055 E.01593
+G1 X114.947 Y96.549 E.19011
+G1 X114.947 Y97.083 E.01593
+G1 X119.453 Y101.589 E.19011
+G1 X119.453 Y102.124 E.01596
+G1 X114.947 Y97.617 E.19013
+G1 X114.947 Y98.152 E.01596
+G1 X119.453 Y102.658 E.19011
+G1 X119.453 Y103.192 E.01593
+G1 X114.947 Y98.686 E.19011
+G1 X114.947 Y99.22 E.01593
+G1 X119.453 Y103.726 E.19011
+G1 X119.453 Y104.26 E.01593
+G1 X114.947 Y99.754 E.19011
+G1 X114.947 Y100.288 E.01593
+M73 P12 R8
+M73 Q12 S8
+G1 X119.453 Y104.794 E.19011
+G1 X119.453 Y105.328 E.01593
+G1 X114.947 Y100.822 E.19011
+G1 X114.947 Y101.356 E.01593
+G1 X119.453 Y105.862 E.19011
+G1 X119.453 Y106.396 E.01593
+G1 X114.947 Y101.89 E.19011
+G1 X114.947 Y102.424 E.01593
+G1 X119.453 Y106.93 E.19011
+G1 X119.453 Y107.465 E.01596
+G1 X114.947 Y102.958 E.19013
+G1 X114.947 Y103.493 E.01596
+G1 X119.453 Y107.999 E.19011
+G1 X119.453 Y108.533 E.01593
+G1 X114.947 Y104.027 E.19011
+G1 X114.947 Y104.561 E.01593
+G1 X119.453 Y109.067 E.19011
+G1 X119.453 Y109.601 E.01593
+G1 X114.947 Y105.095 E.19011
+G1 X114.947 Y105.629 E.01593
+G1 X119.453 Y110.135 E.19011
+G1 X119.453 Y110.669 E.01593
+G1 X114.947 Y106.163 E.19011
+G1 X114.947 Y106.697 E.01593
+G1 X119.479 Y111.229 E.1912
+G1 X119.493 Y111.333 E.00313
+G1 X119.606 Y111.616 E.00909
+G1 X119.773 Y111.848 E.00853
+G1 X119.97 Y112.022 E.00784
+G1 X120.202 Y112.151 E.00792
+G1 X120.48 Y112.23 E.00862
+G1 X123.363 Y115.113 E.12163
+G1 X123.086 Y115.37 E.01127
+G1 X114.947 Y107.231 E.34338
+G1 X114.947 Y107.765 E.01593
+M73 P13 R8
+M73 Q13 S8
+G1 X122.837 Y115.655 E.33288
+G1 X122.685 Y115.865 E.00773
+G1 X122.629 Y115.981 E.00384
+G1 X114.947 Y108.299 E.3241
+G1 X114.947 Y108.833 E.01593
+G1 X122.463 Y116.35 E.31712
+G1 X122.35 Y116.77 E.01298
+G1 X114.947 Y109.368 E.31231
+G1 X114.947 Y109.902 E.01593
+G1 X122.324 Y117.279 E.31123
+G1 X122.339 Y117.629 E.01045
+G1 X122.372 Y117.803 E.00528
+G1 X122.314 Y117.803 E.00173
+G1 X114.947 Y110.436 E.31081
+G1 X114.947 Y110.97 E.01593
+G1 X121.78 Y117.803 E.28828
+G1 X121.246 Y117.803 E.01593
+G1 X114.947 Y111.504 E.26575
+G1 X114.947 Y112.038 E.01593
+G1 X120.712 Y117.803 E.24322
+G1 X120.178 Y117.803 E.01593
+G1 X114.947 Y112.572 E.22069
+G1 X114.947 Y113.106 E.01593
+M73 P13 R7
+G1 X119.644 Y117.803 E.19816
+G1 X119.11 Y117.803 E.01593
+M73 P14 R7
+M73 Q14 S8
+G1 X114.947 Y113.64 E.17564
+G1 X114.947 Y114.174 E.01593
+G1 X118.576 Y117.803 E.15311
+G1 X118.041 Y117.803 E.01596
+G1 X114.947 Y114.709 E.13053
+G1 X114.947 Y115.243 E.01593
+G1 X117.507 Y117.803 E.10801
+G1 X116.973 Y117.803 E.01593
+G1 X114.947 Y115.777 E.08548
+G1 X114.947 Y116.311 E.01593
+G1 X116.439 Y117.803 E.06295
+G1 X115.905 Y117.803 E.01593
+G1 X114.947 Y116.845 E.04042
+G1 X114.947 Y117.379 E.01593
+G1 X115.541 Y117.973 E.02506
+M106 S127.5
+;LAYER_CHANGE
+;Z:0.4
+;HEIGHT:0.2
+;BEFORE_LAYER_CHANGE
+G92 E0.0
+;0.4
+
+
+G1 Z.4 F10800
+;AFTER_LAYER_CHANGE
+;0.4
+G1 E-.6 F2100
+G1 X115.541 Y117.973 Z.5 F10800
+G1 X127.046 Y91.759
+G1 Z.4
+M73 Q14 S7
+G1 E.6 F2100
+;TYPE:Perimeter
+;WIDTH:0.449999
+G1 F2700
+G1 X127.228 Y91.789 E.00593
+G1 X135.461 Y91.789 E.26474
+G1 X135.461 Y94.826 E.09766
+G1 X135.461 Y118.211 E.75198
+G1 X127.072 Y118.223 E.26976
+G1 X127.136 Y118.073 E.00524
+G1 X127.276 Y117.349 E.02371
+G1 X127.259 Y116.953 E.01275
+G1 X127.141 Y116.471 E.01596
+G1 X126.963 Y116.097 E.01332
+G1 X126.552 Y115.567 E.02157
+G1 X125.963 Y115.185 E.02257
+G1 X125.592 Y115.05 E.0127
+G1 X125.106 Y114.974 E.01582
+G1 X124.71 Y114.99 E.01274
+G1 X124.223 Y115.108 E.01611
+G1 X123.861 Y115.277 E.01285
+G1 X123.306 Y115.71 E.02264
+G1 X122.935 Y116.287 E.02206
+G1 X122.799 Y116.661 E.0128
+G1 X122.724 Y117.151 E.01594
+G1 X122.741 Y117.547 E.01275
+G1 X122.859 Y118.029 E.01596
+G1 X122.954 Y118.242 E.0075
+G1 X122.773 Y118.211 E.00591
+G1 X114.539 Y118.211 E.26478
+G1 X114.539 Y91.789 E.84963
+G1 X122.773 Y91.789 E.26478
+G1 X122.97 Y91.742 E.00651
+G1 X122.866 Y91.936 E.00708
+G1 X122.735 Y92.439 E.01671
+G1 X122.722 Y92.934 E.01592
+G1 X122.815 Y93.423 E.01601
+G1 X122.934 Y93.711 E.01002
+G1 X123.194 Y94.139 E.0161
+G1 X123.464 Y94.433 E.01284
+G1 X123.864 Y94.725 E.01593
+G1 X124.117 Y94.86 E.00922
+G1 X124.671 Y94.996 E.01834
+G1 X125.505 Y94.981 E.02682
+G1 X126.162 Y94.712 E.02283
+G1 X126.466 Y94.495 E.01201
+G1 X126.805 Y94.141 E.01576
+G1 X127.01 Y93.827 E.01206
+G1 X127.213 Y93.327 E.01735
+G1 X127.277 Y92.628 E.02257
+G1 X127.231 Y92.276 E.01142
+G1 X127.066 Y91.815 E.01574
+G1 X126.874 Y91.284 F10800
+;WIDTH:0.50411
+G1 F2700
+G1 X126.957 Y91.331 E.00347
+;WIDTH:0.472376
+G1 X127.228 Y91.382 E.00935
+;WIDTH:0.449999
+G1 X135.868 Y91.382 E.27783
+G1 X135.868 Y94.826 E.11075
+G1 X135.868 Y118.618 E.76506
+G1 X127.228 Y118.618 E.27783
+M73 P15 R7
+M73 Q15 S7
+;WIDTH:0.487677
+G1 X126.829 Y118.742 E.01468
+;WIDTH:0.498664
+G1 X126.472 Y119.067 E.01738
+G1 X126.047 Y119.346 E.0183
+;WIDTH:0.499012
+G1 X125.573 Y119.516 E.01814
+G1 X125.074 Y119.592 E.01819
+;WIDTH:0.498107
+G1 X124.573 Y119.548 E.01808
+G1 X124.089 Y119.407 E.01813
+;WIDTH:0.495622
+G1 X123.651 Y119.161 E.01796
+G1 X123.303 Y118.858 E.0165
+;WIDTH:0.489366
+G1 X122.978 Y118.653 E.01355
+;WIDTH:0.449999
+G1 X122.773 Y118.618 E.00669
+G1 X114.132 Y118.618 E.27786
+G1 X114.132 Y91.382 E.87581
+G1 X122.773 Y91.382 E.27786
+;WIDTH:0.47763
+G1 X123.115 Y91.294 E.01213
+;WIDTH:0.482571
+G1 X123.513 Y90.949 E.01829
+;WIDTH:0.482805
+G1 X123.936 Y90.67 E.01761
+;WIDTH:0.482937
+G1 X124.409 Y90.489 E.0176
+G1 X124.906 Y90.416 E.01746
+;WIDTH:0.494592
+G1 X125.526 Y90.47 E.0222
+G1 X125.937 Y90.609 E.01548
+;WIDTH:0.487489
+G1 X126.388 Y90.868 E.01826
+;WIDTH:0.50411
+G1 X126.791 Y91.236 E.01988
+G1 X126.822 Y91.254 E.00131
+G1 X127.088 Y90.92 F10800
+;TYPE:External perimeter
+;WIDTH:0.449999
+G1 F1500
+G1 X127.228 Y90.975 E.00484
+G1 X136.275 Y90.975 E.29092
+G1 X136.275 Y94.826 E.12383
+G1 X136.275 Y119.025 E.77815
+G1 X127.228 Y119.025 E.29092
+G1 X127.088 Y119.08 E.00484
+G1 X126.721 Y119.426 E.01622
+G1 X126.214 Y119.744 E.01924
+G1 X125.652 Y119.946 E.0192
+G1 X125.06 Y120.023 E.0192
+G1 X124.465 Y119.972 E.0192
+G1 X123.895 Y119.794 E.0192
+G1 X123.376 Y119.499 E.0192
+G1 X122.909 Y119.077 E.02024
+G1 X122.773 Y119.025 E.00468
+G1 X113.725 Y119.025 E.29095
+G1 X113.725 Y90.975 E.90198
+G1 X122.773 Y90.975 E.29095
+G1 X122.909 Y90.923 E.00468
+M73 P16 R7
+M73 Q16 S7
+G1 X123.376 Y90.501 E.02024
+G1 X123.895 Y90.206 E.0192
+G1 X124.465 Y90.028 E.0192
+G1 X125.071 Y89.977 E.01956
+G1 X125.652 Y90.054 E.01885
+G1 X126.214 Y90.256 E.0192
+G1 X126.721 Y90.574 E.01924
+G1 X127.044 Y90.879 E.01429
+G1 X127.435 Y90.965 F10800
+G1 E-.6 F2100
+G1 Z.5 F10800
+G1 X123.136 Y92.6
+G1 Z.4
+G1 E.6 F2100
+;TYPE:Perimeter
+G1 F1500
+G1 X123.134 Y92.518 E.00264
+G1 X123.251 Y92.077 E.01467
+;WIDTH:0.47763
+G1 X123.479 Y91.631 E.0172
+;WIDTH:0.48664
+G1 X123.593 Y91.477 E.00672
+G1 X123.901 Y91.202 E.01447
+G1 X124.262 Y91.001 E.01448
+;WIDTH:0.486425
+G1 X124.657 Y90.883 E.01444
+;WIDTH:0.487043
+G1 X125.104 Y90.859 E.0157
+G1 X125.647 Y90.966 E.01942
+;WIDTH:0.487489
+G1 X125.751 Y91.011 E.00398
+;WIDTH:0.487869
+G1 X126.191 Y91.269 E.01793
+;WIDTH:0.506527
+G1 X126.473 Y91.572 E.01516
+G1 X126.59 Y91.773 E.00852
+;WIDTH:0.478263
+G1 X126.708 Y91.974 E.00802
+;WIDTH:0.449999
+G1 X126.843 Y92.399 E.01434
+G1 X126.871 Y92.611 E.00688
+G1 X126.825 Y93.206 E.01919
+G1 X126.634 Y93.671 E.01616
+G1 X126.511 Y93.859 E.00722
+G1 X126.172 Y94.213 E.01576
+G1 X125.99 Y94.344 E.00721
+G1 X125.435 Y94.58 E.01939
+G1 X124.671 Y94.589 E.02457
+G1 X124.256 Y94.477 E.01382
+G1 X123.704 Y94.104 E.02142
+G1 X123.542 Y93.928 E.00769
+G1 X123.282 Y93.5 E.0161
+G1 X123.146 Y93.058 E.01487
+G1 X123.137 Y92.66 E.0128
+G1 X123.557 Y92.497 F10800
+;TYPE:External perimeter
+G1 F1500
+G1 X123.608 Y92.273 E.00739
+G1 X123.848 Y91.834 E.01609
+G1 X124.122 Y91.566 E.01232
+G1 X124.399 Y91.404 E.01032
+G1 X124.704 Y91.306 E.0103
+G1 X125.031 Y91.278 E.01055
+G1 X125.537 Y91.379 E.01659
+G1 X125.976 Y91.649 E.01657
+G1 X126.32 Y92.097 E.01816
+G1 X126.464 Y92.593 E.01661
+G1 X126.432 Y93.096 E.01621
+G1 X126.217 Y93.577 E.01694
+G1 X125.817 Y93.975 E.01814
+G1 X125.329 Y94.182 E.01705
+G1 X124.671 Y94.182 E.02116
+G1 X124.345 Y94.068 E.01111
+G1 X123.89 Y93.717 E.01848
+G1 X123.63 Y93.288 E.01613
+G1 X123.536 Y92.918 E.01228
+G1 X123.534 Y92.598 E.01029
+G1 X123.543 Y92.556 E.00138
+G1 X123.671 Y92.177 F10800
+G1 E-.6 F2100
+G1 Z.5 F10800
+G1 X120.155 Y96.476
+G1 Z.4
+G1 E.6 F2100
+;TYPE:Perimeter
+G1 F2700
+G1 X120.185 Y96.434 E.00166
+G1 X120.363 Y96.301 E.00715
+G1 X120.703 Y96.176 E.01165
+G1 X121.556 Y96.161 E.02743
+G1 X129.121 Y96.161 E.24326
+G1 X129.42 Y96.206 E.00972
+G1 X129.637 Y96.301 E.00762
+G1 X129.95 Y96.588 E.01366
+G1 X130.116 Y96.964 E.01322
+G1 X130.139 Y97.179 E.00695
+G1 X130.139 Y110.821 E.43868
+G1 X130.057 Y111.221 E.01313
+G1 X129.847 Y111.535 E.01215
+G1 X129.541 Y111.749 E.01201
+G1 X129.241 Y111.832 E.01001
+G1 X125.84 Y111.839 E.10936
+G1 X120.879 Y111.839 E.15953
+G1 X120.661 Y111.816 E.00705
+G1 X120.283 Y111.647 E.01331
+G1 X120.036 Y111.393 E.01139
+G1 X119.876 Y110.997 E.01373
+G1 X119.861 Y110.821 E.00568
+G1 X119.861 Y97.179 E.43868
+G1 X119.949 Y96.764 E.01364
+G1 X120.12 Y96.525 E.00945
+G1 X120.447 Y96.753 F10800
+G1 F2700
+G1 X120.462 Y96.732 E.00083
+G1 X120.699 Y96.595 E.0088
+G1 X121.556 Y96.568 E.02757
+G1 X129.121 Y96.568 E.24326
+G1 X129.431 Y96.652 E.01033
+G1 X129.619 Y96.824 E.00819
+G1 X129.718 Y97.05 E.00793
+G1 X129.732 Y97.179 E.00417
+G1 X129.732 Y110.821 E.43868
+G1 X129.683 Y111.061 E.00788
+G1 X129.557 Y111.25 E.0073
+G1 X129.373 Y111.378 E.00721
+G1 X129.121 Y111.432 E.00829
+G1 X125.84 Y111.432 E.1055
+G1 X120.879 Y111.432 E.15953
+G1 X120.627 Y111.378 E.00829
+G1 X120.443 Y111.25 E.00721
+G1 X120.317 Y111.061 E.0073
+G1 X120.268 Y110.821 E.00788
+G1 X120.268 Y97.179 E.43868
+G1 X120.321 Y96.93 E.00819
+G1 X120.412 Y96.802 E.00505
+G1 X120.74 Y97.03 F10800
+;TYPE:External perimeter
+G1 F1500
+G1 X120.879 Y96.975 E.00481
+G1 X129.121 Y96.975 E.26503
+G1 X129.26 Y97.03 E.00481
+G1 X129.325 Y97.179 E.00523
+G1 X129.325 Y110.821 E.43868
+G1 X129.267 Y110.964 E.00496
+G1 X129.121 Y111.025 E.00509
+G1 X125.84 Y111.025 E.1055
+G1 X120.879 Y111.025 E.15953
+G1 X120.733 Y110.964 E.00509
+G1 X120.675 Y110.821 E.00496
+G1 X120.675 Y97.179 E.43868
+G1 X120.716 Y97.085 E.0033
+M73 P17 R7
+M73 Q17 S7
+G1 X121.103 Y96.982 F10800
+G1 E-.6 F2100
+G1 Z.5 F10800
+G1 X126.867 Y117.127
+G1 Z.4
+G1 E.6 F2100
+;TYPE:Perimeter
+G1 F1500
+G1 X126.874 Y117.287 E.00515
+G1 X126.759 Y117.918 E.02062
+;WIDTH:0.487677
+G1 X126.476 Y118.435 E.02071
+;WIDTH:0.488674
+G1 X126.31 Y118.617 E.00867
+G1 X125.872 Y118.934 E.01904
+;WIDTH:0.499012
+G1 X125.442 Y119.08 E.01636
+G1 X125.001 Y119.147 E.01607
+;WIDTH:0.486101
+G1 X124.469 Y119.066 E.01884
+;WIDTH:0.48985
+G1 X124.238 Y118.984 E.00865
+G1 X123.806 Y118.72 E.01787
+;WIDTH:0.486911
+G1 X123.722 Y118.652 E.00379
+;WIDTH:0.480512
+G1 X123.355 Y118.148 E.02155
+;WIDTH:0.449999
+G1 X123.254 Y117.932 E.00767
+G1 X123.137 Y117.45 E.01595
+G1 X123.126 Y117.213 E.00763
+G1 X123.255 Y116.551 E.02169
+G1 X123.515 Y116.116 E.0163
+G1 X123.702 Y115.898 E.00924
+G1 X124.102 Y115.605 E.01594
+G1 X124.319 Y115.504 E.0077
+G1 X124.806 Y115.386 E.01611
+G1 X125.044 Y115.376 E.00766
+G1 X125.529 Y115.452 E.01579
+G1 X125.752 Y115.533 E.00763
+G1 X126.275 Y115.865 E.01992
+G1 X126.635 Y116.338 E.01911
+G1 X126.746 Y116.567 E.00818
+G1 X126.863 Y117.049 E.01595
+G1 X126.864 Y117.067 E.00058
+G1 X126.446 Y117.324 F10800
+;TYPE:External perimeter
+G1 F1500
+G1 X126.396 Y117.716 E.01271
+G1 X126.112 Y118.214 E.01843
+G1 X125.658 Y118.566 E.01847
+G1 X125.104 Y118.718 E.01847
+G1 X124.534 Y118.646 E.01847
+G1 X124.005 Y118.339 E.01967
+G1 X123.683 Y117.907 E.01733
+G1 X123.532 Y117.354 E.01843
+G1 X123.604 Y116.784 E.01847
+G1 X123.863 Y116.327 E.01689
+G1 X123.942 Y116.227 E.0041
+G1 X124.415 Y115.9 E.01849
+G1 X124.902 Y115.782 E.01611
+G1 X125.466 Y115.854 E.01828
+G1 X125.965 Y116.138 E.01846
+G1 X126.307 Y116.579 E.01795
+G1 X126.468 Y117.146 E.01895
+G1 X126.453 Y117.264 E.00382
+G1 X126.401 Y117.661 F10800
+G1 E-.6 F2100
+G1 Z.5 F10800
+G1 X127.622 Y92.127
+G1 Z.4
+G1 E.6 F2100
+;TYPE:Solid infill
+;WIDTH:0.547474
+G1 F4800
+G1 X127.577 Y92.082 E.00254
+G1 X127.516 Y92.099 E.00252
+G1 X127.5 Y92.16 E.00251
+G1 X127.544 Y92.204 E.00248
+G1 X127.605 Y92.188 E.00251
+;WIDTH:0.449999
+G1 X127.577 Y92.772 E.0188
+G1 X128.254 Y92.094 E.03081
+G1 X128.83 Y92.094 E.01852
+G1 X127.504 Y93.42 E.0603
+G1 X127.429 Y93.558 E.00505
+;WIDTH:0.41646
+G1 X127.355 Y93.697 E.00465
+;WIDTH:0.38292
+G1 X127.284 Y93.678 E.00197
+G1 X127.303 Y93.749 E.00197
+G1 X127.344 Y93.738 E.00114
+G1 E-.6 F2100
+G1 X127.344 Y93.738 Z.5 F10800
+G1 X114.955 Y92.127
+G1 Z.4
+G1 E.6 F2100
+;WIDTH:0.548766
+G1 F4800
+G1 X114.91 Y92.083 E.00251
+G1 X114.849 Y92.099 E.00252
+G1 X114.833 Y92.16 E.00252
+G1 X114.877 Y92.205 E.00251
+G1 X114.939 Y92.189 E.00256
+G1 X114.712 Y92.984 F10800
+;WIDTH:0.38292
+G1 F4800
+G1 X114.641 Y92.965 E.00197
+G1 X114.66 Y93.036 E.00197
+G1 X114.701 Y93.025 E.00114
+;WIDTH:0.41646
+G1 X114.773 Y92.932 E.00347
+;WIDTH:0.449999
+G1 X114.844 Y92.839 E.00376
+G1 X115.589 Y92.094 E.03388
+G1 X115.682 Y92.023 E.00376
+;WIDTH:0.41646
+G1 X115.775 Y91.951 E.00347
+;WIDTH:0.38292
+G1 X115.734 Y91.962 E.00114
+G1 X115.715 Y91.891 E.00197
+G1 X115.786 Y91.91 E.00197
+;WIDTH:0.449999
+G1 X116.164 Y92.094 E.01352
+G1 X114.844 Y93.414 E.06003
+G1 X114.844 Y93.99 E.01852
+G1 X116.74 Y92.094 E.08622
+G1 X117.316 Y92.094 E.01852
+G1 X114.844 Y94.566 E.11242
+G1 X114.844 Y95.142 E.01852
+G1 X117.892 Y92.094 E.13861
+G1 X118.467 Y92.094 E.01849
+G1 X114.844 Y95.717 E.16476
+G1 X114.844 Y96.293 E.01852
+G1 X119.043 Y92.094 E.19095
+G1 X119.619 Y92.094 E.01852
+G1 X114.844 Y96.869 E.21715
+G1 X114.844 Y97.444 E.01849
+G1 X120.194 Y92.094 E.2433
+G1 X120.77 Y92.094 E.01852
+G1 X114.844 Y98.02 E.26949
+G1 X114.844 Y98.596 E.01852
+G1 X121.346 Y92.094 E.29568
+G1 X121.921 Y92.094 E.01849
+G1 X114.844 Y99.171 E.32183
+G1 X114.844 Y99.747 E.01852
+G1 X122.497 Y92.094 E.34803
+G1 X122.413 Y92.755 E.02143
+G1 X114.844 Y100.323 E.34418
+G1 X114.844 Y100.899 E.01852
+G1 X122.466 Y93.277 E.34662
+G1 X122.611 Y93.708 E.01462
+G1 X120.672 Y95.647 E.08818
+G1 X120.239 Y96.048 E.01898
+;WIDTH:0.40132
+G1 X120.194 Y96.085 E.00165
+;WIDTH:0.420151
+G1 X120.354 Y95.997 E.00544
+;WIDTH:0.447283
+G1 X120.515 Y95.91 E.00585
+;WIDTH:0.449999
+G1 X120.819 Y95.857 E.00992
+G1 X124.19 Y95.857 E.1084
+;WIDTH:0.486991
+G1 X124.713 Y95.838 E.01836
+;WIDTH:0.523983
+G1 X125.665 Y95.796 E.03621
+M73 Q18 S7
+G1 X125.473 Y95.54 E.01216
+G1 X125.536 Y95.321 E.00866
+M73 P18 R7
+G1 X124.68 Y95.338 E.03253
+G1 X124.437 Y95.275 E.00954
+;WIDTH:0.487024
+G1 X124.194 Y95.212 E.00881
+;WIDTH:0.449999
+G1 X123.713 Y94.988 E.01706
+G1 X123.292 Y94.685 E.01668
+G1 X122.928 Y94.289 E.0173
+G1 X122.692 Y93.894 E.0148
+G1 X122.51 Y94.384 E.01681
+G1 X121.444 Y95.45 E.04848
+G1 X123.741 Y95.45 E.07386
+G1 X123.438 Y95.296 E.01093
+G1 X122.962 Y94.934 E.01923
+G1 X122.625 Y94.551 E.0164
+G1 X122.523 Y95.011 E.01515
+;WIDTH:0.485232
+G1 X122.484 Y94.972 E.00193
+G1 X122.431 Y94.986 E.00192
+G1 X122.416 Y95.04 E.00196
+G1 X122.455 Y95.079 E.00193
+G1 X122.509 Y95.064 E.00196
+G1 E-.6 F2100
+G1 X122.509 Y95.064 Z.5 F10800
+G1 X120.194 Y96.085
+G1 Z.4
+G1 E.6 F2100
+;WIDTH:0.393018
+G1 F4800
+G1 X119.9 Y96.366 E.01125
+;WIDTH:0.41646
+G1 X119.783 Y96.51 E.00547
+;WIDTH:0.449999
+G1 X119.665 Y96.653 E.00596
+G1 X114.844 Y101.474 E.21924
+G1 X114.844 Y102.05 E.01852
+G1 X119.556 Y97.339 E.21426
+G1 X119.556 Y97.915 E.01852
+G1 X114.844 Y102.626 E.21426
+G1 X114.844 Y103.201 E.01849
+G1 X119.556 Y98.49 E.21426
+G1 X119.556 Y99.066 E.01852
+G1 X114.844 Y103.777 E.21426
+G1 X114.844 Y104.353 E.01852
+G1 X119.556 Y99.642 E.21426
+G1 X119.556 Y100.217 E.01849
+G1 X114.844 Y104.928 E.21426
+G1 X114.844 Y105.504 E.01852
+G1 X119.556 Y100.793 E.21426
+G1 X119.556 Y101.369 E.01852
+G1 X114.844 Y106.08 E.21426
+G1 X114.844 Y106.656 E.01852
+G1 X119.556 Y101.944 E.21428
+G1 X119.556 Y102.52 E.01852
+G1 X114.844 Y107.231 E.21426
+G1 X114.844 Y107.807 E.01852
+G1 X119.556 Y103.096 E.21426
+G1 X119.556 Y103.672 E.01852
+G1 X114.844 Y108.383 E.21426
+G1 X114.844 Y108.958 E.01849
+G1 X119.556 Y104.247 E.21426
+G1 X119.556 Y104.823 E.01852
+G1 X114.844 Y109.534 E.21426
+G1 X114.844 Y110.11 E.01852
+G1 X119.556 Y105.399 E.21426
+G1 X119.556 Y105.974 E.01849
+G1 X114.844 Y110.685 E.21426
+G1 X114.844 Y111.261 E.01852
+G1 X119.556 Y106.55 E.21426
+G1 X119.556 Y107.126 E.01852
+G1 X114.844 Y111.837 E.21426
+G1 X114.844 Y112.412 E.01849
+G1 X119.556 Y107.701 E.21426
+G1 X119.556 Y108.277 E.01852
+G1 X114.844 Y112.988 E.21426
+G1 X114.844 Y113.564 E.01852
+G1 X119.556 Y108.853 E.21426
+G1 X119.556 Y109.428 E.01849
+G1 X114.844 Y114.14 E.21428
+G1 X114.844 Y114.715 E.01849
+G1 X119.556 Y110.004 E.21426
+G1 X119.556 Y110.58 E.01852
+G1 X114.844 Y115.291 E.21426
+G1 X114.844 Y115.867 E.01852
+G1 X119.592 Y111.119 E.21592
+G1 X119.762 Y111.525 E.01415
+G1 X114.844 Y116.442 E.22363
+G1 X114.844 Y117.018 E.01852
+G1 X120.031 Y111.832 E.23586
+G1 X120.391 Y112.047 E.01348
+G1 X114.844 Y117.594 E.25225
+G1 X114.822 Y117.787 E.00625
+;WIDTH:0.41646
+G1 X114.8 Y117.98 E.00573
+;WIDTH:0.38292
+G1 X114.729 Y117.961 E.00197
+G1 X114.748 Y118.032 E.00197
+G1 X114.789 Y118.021 E.00114
+;WIDTH:0.449999
+G1 X115.108 Y117.905 E.01092
+G1 X120.87 Y112.144 E.26201
+G1 X121.446 Y112.144 E.01852
+M73 P19 R7
+M73 Q19 S7
+G1 X115.684 Y117.905 E.26201
+G1 X116.26 Y117.905 E.01852
+G1 X122.022 Y112.143 E.26203
+G1 X122.598 Y112.143 E.01852
+G1 X116.836 Y117.905 E.26203
+G1 X117.411 Y117.905 E.01849
+G1 X123.175 Y112.142 E.2621
+G1 X123.751 Y112.142 E.01852
+G1 X117.987 Y117.905 E.2621
+G1 X118.563 Y117.905 E.01852
+G1 X124.327 Y112.141 E.26212
+G1 X124.903 Y112.14 E.01852
+G1 X119.139 Y117.905 E.26215
+G1 X119.714 Y117.905 E.01849
+G1 X125.48 Y112.14 E.26219
+G1 X126.056 Y112.139 E.01852
+G1 X120.29 Y117.905 E.26221
+G1 X120.449 Y117.98 E.00565
+;WIDTH:0.41646
+G1 X120.608 Y118.055 E.00519
+;WIDTH:0.38292
+G1 X120.567 Y118.066 E.00114
+G1 X120.548 Y117.994 E.002
+G1 X120.619 Y118.014 E.00198
+G1 E-.6 F2100
+G1 X120.619 Y118.014 Z.5 F10800
+G1 X123.796 Y114.974
+G1 Z.4
+G1 E.6 F2100
+;WIDTH:0.449999
+G1 F4800
+G1 X126.632 Y112.139 E.12895
+G1 X127.208 Y112.138 E.01852
+G1 X124.654 Y114.692 E.11615
+G1 X124.531 Y114.769 E.00467
+;WIDTH:0.41646
+G1 X124.408 Y114.846 E.00428
+;WIDTH:0.38292
+G1 X124.337 Y114.827 E.00197
+G1 X124.356 Y114.898 E.00197
+G1 X124.397 Y114.887 E.00114
+G1 X125.229 Y114.693 F10800
+;WIDTH:0.449999
+G1 F4800
+G1 X127.785 Y112.137 E.11624
+G1 X128.361 Y112.137 E.01852
+G1 X125.722 Y114.776 E.12001
+G1 X126.139 Y114.935 E.01435
+G1 X128.937 Y112.136 E.12726
+G1 X129.6 Y112.05 E.0215
+G1 X126.497 Y115.152 E.14109
+G1 E-.6 F2100
+G1 X126.497 Y115.152 Z.5 F10800
+G1 X123.509 Y115.21
+G1 Z.4
+G1 E.6 F2100
+;WIDTH:0.38292
+G1 F4800
+G1 X123.145 Y115.534 E.01309
+G1 X122.965 Y115.749 E.00753
+;WIDTH:0.41646
+G1 X122.85 Y115.893 E.00544
+;WIDTH:0.449999
+G1 X122.734 Y116.036 E.00592
+G1 X120.866 Y117.905 E.08497
+G1 X121.442 Y117.905 E.01852
+G1 X122.455 Y116.892 E.04607
+G1 X122.544 Y116.763 E.00504
+;WIDTH:0.41646
+G1 X122.633 Y116.634 E.00462
+;WIDTH:0.38292
+G1 X122.592 Y116.645 E.00114
+G1 X122.573 Y116.574 E.00197
+G1 X122.644 Y116.593 E.00197
+G1 X122.437 Y117.486 F10800
+;WIDTH:0.449999
+G1 F4800
+G1 X122.017 Y117.905 E.01908
+G1 E-.6 F2100
+G1 X122.017 Y117.905 Z.5 F10800
+G1 X125.999 Y95.501
+G1 Z.4
+G1 E.6 F2100
+G1 F4800
+G1 X129.406 Y92.094 E.15494
+G1 X129.981 Y92.094 E.01849
+G1 X126.22 Y95.856 E.17106
+G1 X126.796 Y95.856 E.01852
+G1 X130.557 Y92.094 E.17106
+G1 X131.133 Y92.094 E.01852
+G1 X127.372 Y95.856 E.17106
+G1 X127.947 Y95.856 E.01849
+G1 X131.708 Y92.094 E.17106
+G1 X132.284 Y92.094 E.01852
+G1 X128.523 Y95.856 E.17106
+G1 X129.099 Y95.856 E.01852
+G1 X132.86 Y92.094 E.17106
+G1 X133.435 Y92.094 E.01849
+G1 X129.584 Y95.946 E.17515
+G1 X129.95 Y96.155 E.01355
+G1 X134.011 Y92.094 E.18468
+G1 X134.587 Y92.094 E.01852
+G1 X130.225 Y96.456 E.19837
+G1 X130.401 Y96.856 E.01405
+G1 X135.156 Y92.101 E.21624
+G1 X135.156 Y92.677 E.01852
+G1 X130.444 Y97.388 E.21426
+G1 X130.444 Y97.964 E.01852
+G1 X135.156 Y93.253 E.21426
+M73 Q20 S7
+G1 X135.156 Y93.828 E.01849
+M73 P20 R7
+G1 X130.444 Y98.54 E.21428
+G1 X130.444 Y99.115 E.01849
+G1 X135.156 Y94.404 E.21426
+G1 X135.156 Y94.98 E.01852
+G1 X130.444 Y99.691 E.21426
+G1 X130.444 Y100.267 E.01852
+G1 X135.156 Y95.556 E.21426
+G1 X135.156 Y96.131 E.01849
+G1 X130.444 Y100.842 E.21426
+G1 X130.444 Y101.418 E.01852
+G1 X135.156 Y96.707 E.21426
+G1 X135.156 Y97.283 E.01852
+G1 X130.444 Y101.994 E.21426
+G1 X130.444 Y102.569 E.01849
+G1 X135.156 Y97.858 E.21426
+G1 X135.156 Y98.434 E.01852
+G1 X130.444 Y103.145 E.21426
+G1 X130.444 Y103.721 E.01852
+G1 X135.156 Y99.01 E.21426
+G1 X135.156 Y99.585 E.01849
+G1 X130.444 Y104.297 E.21428
+G1 X130.444 Y104.872 E.01849
+G1 X135.156 Y100.161 E.21426
+G1 X135.156 Y100.737 E.01852
+G1 X130.444 Y105.448 E.21426
+G1 X130.444 Y106.024 E.01852
+G1 X135.156 Y101.313 E.21426
+G1 X135.156 Y101.888 E.01849
+G1 X130.444 Y106.599 E.21426
+G1 X130.444 Y107.175 E.01852
+G1 X135.156 Y102.464 E.21426
+G1 X135.156 Y103.04 E.01852
+G1 X130.444 Y107.751 E.21426
+G1 X130.444 Y108.326 E.01849
+G1 X135.156 Y103.615 E.21426
+G1 X135.156 Y104.191 E.01852
+G1 X130.444 Y108.902 E.21426
+G1 X130.444 Y109.478 E.01852
+G1 X135.156 Y104.767 E.21426
+G1 X135.156 Y105.342 E.01849
+G1 X130.444 Y110.053 E.21426
+G1 X130.444 Y110.629 E.01852
+G1 X135.156 Y105.918 E.21426
+G1 X135.316 Y106.771 F10800
+;WIDTH:0.38292
+G1 F4800
+G1 X135.245 Y106.752 E.00197
+G1 X135.264 Y106.823 E.00197
+G1 X135.305 Y106.812 E.00114
+;WIDTH:0.41646
+G1 X135.23 Y106.653 E.00519
+;WIDTH:0.449999
+G1 X135.156 Y106.494 E.00564
+G1 X130.353 Y111.297 E.21842
+G1 X130.239 Y111.441 E.00591
+;WIDTH:0.41646
+G1 X130.126 Y111.585 E.0054
+;WIDTH:0.38292
+G1 X129.887 Y111.823 E.00906
+G1 E-.6 F2100
+G1 X129.887 Y111.823 Z.5 F10800
+G1 X126.818 Y115.408
+G1 Z.4
+G1 E.6 F2100
+;WIDTH:0.449999
+G1 F4800
+G1 X135.156 Y107.07 E.37918
+G1 X135.156 Y107.645 E.01849
+G1 X127.072 Y115.729 E.36763
+G1 X127.303 Y116.073 E.01332
+G1 X135.156 Y108.221 E.3571
+G1 X135.156 Y108.797 E.01852
+G1 X127.46 Y116.492 E.34996
+G1 X127.561 Y116.967 E.01562
+G1 X135.156 Y109.372 E.34539
+G1 X135.156 Y109.948 E.01852
+G1 X127.554 Y117.549 E.34569
+G1 X127.452 Y118.002 E.01493
+;WIDTH:0.38292
+G1 X127.411 Y118.013 E.00114
+G1 X127.392 Y117.942 E.00197
+G1 X127.463 Y117.961 E.00197
+;WIDTH:0.41646
+G1 X127.618 Y117.933 E.00465
+M73 Q21 S7
+;WIDTH:0.449999
+G1 X127.774 Y117.906 E.00509
+G1 X135.156 Y110.524 E.3357
+G1 X135.156 Y111.099 E.01849
+M73 P21 R7
+G1 X128.349 Y117.906 E.30955
+G1 X128.925 Y117.906 E.01852
+G1 X135.156 Y111.675 E.28336
+G1 X135.156 Y112.251 E.01852
+G1 X129.501 Y117.906 E.25717
+G1 X130.076 Y117.906 E.01849
+G1 X135.156 Y112.826 E.23102
+G1 X135.156 Y113.402 E.01852
+G1 X130.652 Y117.906 E.20482
+G1 X131.228 Y117.906 E.01852
+G1 X135.156 Y113.978 E.17863
+G1 X135.156 Y114.554 E.01852
+G1 X131.804 Y117.906 E.15244
+G1 X132.379 Y117.906 E.01849
+G1 X135.156 Y115.129 E.12629
+G1 X135.156 Y115.705 E.01852
+G1 X132.955 Y117.906 E.10009
+G1 X133.531 Y117.906 E.01852
+G1 X135.156 Y116.281 E.0739
+G1 X135.156 Y116.856 E.01849
+G1 X134.106 Y117.906 E.04775
+G1 X134.682 Y117.906 E.01852
+G1 X135.156 Y117.432 E.02156
+G1 X135.257 Y117.369 E.00383
+;WIDTH:0.41646
+G1 X135.359 Y117.306 E.00354
+;WIDTH:0.38292
+G1 X135.318 Y117.317 E.00114
+G1 X135.299 Y117.246 E.00197
+G1 X135.37 Y117.265 E.00197
+M106 S255
+;LAYER_CHANGE
+;Z:0.6
+;HEIGHT:0.2
+;BEFORE_LAYER_CHANGE
+G92 E0.0
+;0.6
+
+
+G1 Z.6 F10800
+;AFTER_LAYER_CHANGE
+;0.6
+G1 E-.6 F2100
+G1 X135.37 Y117.265 Z.7 F10800
+G1 X127.047 Y91.759
+G1 Z.6
+G1 E.6 F2100
+;TYPE:Perimeter
+;WIDTH:0.449999
+G1 F2700
+G1 X127.227 Y91.789 E.00587
+G1 X135.461 Y91.789 E.26478
+G1 X135.461 Y94.826 E.09766
+G1 X135.461 Y118.211 E.75198
+G1 X127.072 Y118.223 E.26976
+G1 X127.135 Y118.074 E.0052
+G1 X127.276 Y117.349 E.02375
+G1 X127.259 Y116.952 E.01278
+G1 X127.141 Y116.47 E.01596
+G1 X126.964 Y116.098 E.01325
+G1 X126.552 Y115.567 E.02161
+G1 X125.963 Y115.185 E.02257
+G1 X125.593 Y115.05 E.01267
+G1 X124.953 Y114.962 E.02077
+G1 X124.397 Y115.045 E.01808
+G1 X123.861 Y115.277 E.01878
+G1 X123.306 Y115.71 E.02264
+G1 X122.935 Y116.287 E.02206
+G1 X122.799 Y116.66 E.01277
+G1 X122.724 Y117.15 E.01594
+G1 X122.741 Y117.547 E.01278
+G1 X122.859 Y118.029 E.01596
+G1 X122.954 Y118.242 E.0075
+G1 X122.773 Y118.211 E.00591
+G1 X114.539 Y118.211 E.26478
+G1 X114.539 Y91.789 E.84963
+G1 X122.364 Y91.789 E.25162
+G1 X122.933 Y91.775 E.0183
+G1 X122.767 Y92.26 E.01648
+G1 X122.724 Y92.843 E.0188
+G1 X122.834 Y93.489 E.02107
+G1 X123.13 Y94.064 E.0208
+G1 X123.514 Y94.48 E.0182
+G1 X124.119 Y94.861 E.02299
+G1 X124.671 Y94.996 E.01827
+G1 X125.505 Y94.981 E.02682
+G1 X126.164 Y94.711 E.0229
+G1 X126.466 Y94.494 E.01196
+G1 X126.803 Y94.143 E.01565
+G1 X127.008 Y93.83 E.01203
+G1 X127.213 Y93.327 E.01747
+G1 X127.277 Y92.628 E.02257
+G1 X127.23 Y92.275 E.01145
+G1 X127.067 Y91.816 E.01566
+G1 X126.882 Y91.291 F10800
+;WIDTH:0.505186
+G1 F2700
+G1 X126.955 Y91.331 E.00304
+;WIDTH:0.472943
+G1 X127.227 Y91.382 E.0094
+;WIDTH:0.449999
+G1 X135.868 Y91.382 E.27786
+G1 X135.868 Y94.826 E.11075
+G1 X135.868 Y118.618 E.76506
+G1 X127.134 Y118.625 E.28085
+M73 P22 R7
+M73 Q22 S7
+;WIDTH:0.496014
+G1 X126.802 Y118.758 E.0128
+;WIDTH:0.498956
+G1 X126.388 Y119.13 E.02005
+G1 X126.065 Y119.33 E.01369
+;WIDTH:0.49952
+G1 X125.577 Y119.516 E.01884
+G1 X125.074 Y119.592 E.01835
+;WIDTH:0.49811
+G1 X124.573 Y119.548 E.01808
+G1 X124.089 Y119.407 E.01813
+;WIDTH:0.49563
+G1 X123.651 Y119.161 E.01796
+G1 X123.303 Y118.858 E.0165
+;WIDTH:0.489431
+G1 X122.978 Y118.654 E.01353
+;WIDTH:0.449999
+G1 X122.773 Y118.618 E.00669
+G1 X114.132 Y118.618 E.27786
+G1 X114.132 Y91.382 E.87581
+G1 X122.649 Y91.382 E.27388
+;WIDTH:0.455732
+G1 X122.989 Y91.345 E.01115
+;WIDTH:0.492847
+G1 X123.201 Y91.236 E.00847
+G1 X123.609 Y90.864 E.01962
+;WIDTH:0.487395
+G1 X124.045 Y90.611 E.0177
+G1 X124.523 Y90.456 E.01764
+;WIDTH:0.487678
+G1 X125.044 Y90.408 E.01838
+;WIDTH:0.49472
+G1 X125.526 Y90.47 E.01734
+G1 X125.938 Y90.609 E.01552
+;WIDTH:0.490303
+G1 X126.396 Y90.871 E.01865
+;WIDTH:0.505186
+G1 X126.8 Y91.245 E.0201
+G1 X126.83 Y91.262 E.00126
+G1 X127.091 Y90.923 F10800
+;TYPE:External perimeter
+;WIDTH:0.449999
+G1 F1500
+G1 X127.227 Y90.975 E.00468
+G1 X136.275 Y90.975 E.29095
+G1 X136.275 Y94.826 E.12383
+G1 X136.275 Y119.025 E.77815
+G1 X127.227 Y119.025 E.29095
+G1 X127.091 Y119.077 E.00468
+G1 X126.624 Y119.499 E.02024
+G1 X126.158 Y119.764 E.01724
+G1 X125.654 Y119.946 E.01723
+G1 X125.06 Y120.023 E.01926
+G1 X124.465 Y119.972 E.0192
+G1 X123.895 Y119.794 E.0192
+G1 X123.376 Y119.499 E.0192
+G1 X122.909 Y119.077 E.02024
+G1 X122.773 Y119.025 E.00468
+G1 X113.725 Y119.025 E.29095
+G1 X113.725 Y90.975 E.90198
+G1 X122.773 Y90.975 E.29095
+G1 X122.909 Y90.923 E.00468
+M73 P23 R7
+M73 Q23 S7
+G1 X123.376 Y90.501 E.02024
+G1 X123.895 Y90.206 E.0192
+G1 X124.464 Y90.028 E.01917
+G1 X125.078 Y89.978 E.01981
+G1 X125.652 Y90.054 E.01862
+G1 X126.156 Y90.235 E.01722
+G1 X126.622 Y90.5 E.01724
+G1 X127.046 Y90.882 E.01835
+G1 X127.438 Y90.966 F10800
+G1 E-.6 F2100
+G1 Z.7 F10800
+G1 X123.183 Y92.359
+G1 Z.6
+G1 E.6 F2100
+;TYPE:Perimeter
+G1 F1500
+G1 X123.249 Y92.08 E.00922
+;WIDTH:0.486188
+G1 X123.506 Y91.58 E.01968
+;WIDTH:0.487395
+G1 X123.881 Y91.215 E.01837
+G1 X124.263 Y91.001 E.01537
+;WIDTH:0.486361
+G1 X124.657 Y90.883 E.01441
+;WIDTH:0.48747
+G1 X125.101 Y90.859 E.01561
+G1 X125.648 Y90.967 E.01958
+;WIDTH:0.49202
+G1 X126.12 Y91.222 E.01903
+;WIDTH:0.506325
+G1 X126.474 Y91.572 E.01822
+G1 X126.59 Y91.771 E.00843
+;WIDTH:0.478162
+G1 X126.706 Y91.97 E.00792
+;WIDTH:0.449999
+G1 X126.842 Y92.399 E.01447
+G1 X126.871 Y92.611 E.00688
+G1 X126.825 Y93.206 E.01919
+G1 X126.632 Y93.674 E.01628
+G1 X126.51 Y93.861 E.00718
+G1 X126.173 Y94.212 E.01565
+G1 X125.991 Y94.343 E.00721
+G1 X125.434 Y94.58 E.01947
+G1 X124.671 Y94.589 E.02454
+G1 X124.258 Y94.478 E.01375
+G1 X123.748 Y94.146 E.01957
+G1 X123.448 Y93.81 E.01448
+G1 X123.212 Y93.333 E.01711
+G1 X123.126 Y92.782 E.01793
+G1 X123.127 Y92.597 E.00595
+G1 X123.169 Y92.417 E.00594
+G1 X123.552 Y92.557 F10800
+;TYPE:External perimeter
+G1 F1500
+G1 X123.628 Y92.228 E.01086
+G1 X123.867 Y91.805 E.01562
+G1 X124.123 Y91.566 E.01126
+G1 X124.399 Y91.404 E.01029
+G1 X124.704 Y91.306 E.0103
+G1 X125.028 Y91.278 E.01046
+G1 X125.537 Y91.379 E.01669
+G1 X125.976 Y91.649 E.01657
+G1 X126.318 Y92.094 E.01805
+G1 X126.464 Y92.593 E.01672
+G1 X126.432 Y93.096 E.01621
+G1 X126.216 Y93.579 E.01701
+G1 X125.818 Y93.974 E.01803
+G1 X125.329 Y94.182 E.01709
+G1 X124.671 Y94.182 E.02116
+G1 X124.349 Y94.071 E.01095
+G1 X123.939 Y93.773 E.0163
+G1 X123.743 Y93.519 E.01032
+G1 X123.603 Y93.212 E.01085
+G1 X123.529 Y92.659 E.01794
+G1 X123.539 Y92.616 E.00142
+G1 X123.644 Y92.23 F10800
+G1 E-.6 F2100
+G1 Z.7 F10800
+G1 X120.155 Y96.476
+G1 Z.6
+G1 E.6 F2100
+;TYPE:Perimeter
+G1 F2700
+G1 X120.185 Y96.434 E.00166
+G1 X120.363 Y96.301 E.00715
+G1 X120.703 Y96.176 E.01165
+G1 X121.31 Y96.161 E.01952
+G1 X129.121 Y96.161 E.25117
+G1 X129.42 Y96.206 E.00972
+G1 X129.637 Y96.301 E.00762
+G1 X129.95 Y96.588 E.01366
+G1 X130.116 Y96.964 E.01322
+G1 X130.139 Y97.179 E.00695
+G1 X130.139 Y110.821 E.43868
+G1 X130.057 Y111.221 E.01313
+G1 X129.847 Y111.535 E.01215
+G1 X129.541 Y111.749 E.01201
+G1 X129.241 Y111.832 E.01001
+G1 X127.394 Y111.839 E.05939
+G1 X120.879 Y111.839 E.2095
+G1 X120.661 Y111.816 E.00705
+G1 X120.283 Y111.647 E.01331
+G1 X120.036 Y111.393 E.01139
+G1 X119.876 Y110.997 E.01373
+G1 X119.861 Y110.821 E.00568
+G1 X119.861 Y97.179 E.43868
+G1 X119.949 Y96.764 E.01364
+G1 X120.12 Y96.525 E.00945
+G1 X120.447 Y96.753 F10800
+G1 F2700
+G1 X120.462 Y96.732 E.00083
+G1 X120.699 Y96.595 E.0088
+G1 X121.31 Y96.568 E.01967
+G1 X129.121 Y96.568 E.25117
+G1 X129.431 Y96.652 E.01033
+G1 X129.619 Y96.824 E.00819
+G1 X129.718 Y97.05 E.00793
+G1 X129.732 Y97.179 E.00417
+G1 X129.732 Y110.821 E.43868
+G1 X129.683 Y111.061 E.00788
+G1 X129.557 Y111.25 E.0073
+G1 X129.373 Y111.378 E.00721
+G1 X129.121 Y111.432 E.00829
+G1 X127.394 Y111.432 E.05553
+G1 X120.879 Y111.432 E.2095
+G1 X120.627 Y111.378 E.00829
+G1 X120.443 Y111.25 E.00721
+G1 X120.317 Y111.061 E.0073
+G1 X120.268 Y110.821 E.00788
+G1 X120.268 Y97.179 E.43868
+G1 X120.321 Y96.93 E.00819
+G1 X120.412 Y96.802 E.00505
+G1 X120.74 Y97.03 F10800
+;TYPE:External perimeter
+G1 F1500
+G1 X120.879 Y96.975 E.00481
+G1 X129.121 Y96.975 E.26503
+G1 X129.26 Y97.03 E.00481
+G1 X129.325 Y97.179 E.00523
+G1 X129.325 Y110.821 E.43868
+G1 X129.267 Y110.964 E.00496
+G1 X129.121 Y111.025 E.00509
+G1 X127.394 Y111.025 E.05553
+G1 X120.879 Y111.025 E.2095
+G1 X120.733 Y110.964 E.00509
+M73 Q24 S7
+G1 X120.675 Y110.821 E.00496
+M73 P24 R7
+G1 X120.675 Y97.179 E.43868
+G1 X120.716 Y97.085 E.0033
+G1 X121.103 Y96.982 F10800
+G1 E-.6 F2100
+G1 Z.7 F10800
+G1 X126.867 Y117.126
+G1 Z.6
+G1 E.6 F2100
+;TYPE:Perimeter
+G1 F1500
+G1 X126.874 Y117.287 E.00518
+G1 X126.759 Y117.918 E.02062
+;WIDTH:0.491167
+G1 X126.477 Y118.436 E.02088
+G1 X126.309 Y118.616 E.00872
+;WIDTH:0.485552
+G1 X125.848 Y118.947 E.01984
+;WIDTH:0.49952
+G1 X125.45 Y119.078 E.01511
+G1 X125.001 Y119.147 E.01638
+;WIDTH:0.486096
+G1 X124.469 Y119.066 E.01884
+;WIDTH:0.489839
+G1 X124.238 Y118.984 E.00865
+G1 X123.807 Y118.72 E.01784
+;WIDTH:0.489431
+G1 X123.633 Y118.56 E.00834
+G1 X123.262 Y117.961 E.02485
+;WIDTH:0.449999
+G1 X123.136 Y117.45 E.01692
+G1 X123.126 Y117.212 E.00766
+G1 X123.255 Y116.551 E.02166
+G1 X123.541 Y116.074 E.01788
+G1 X123.701 Y115.899 E.00762
+G1 X124.266 Y115.519 E.0219
+G1 X124.647 Y115.403 E.01281
+G1 X125.048 Y115.376 E.01292
+G1 X125.53 Y115.452 E.01569
+G1 X125.752 Y115.533 E.0076
+G1 X126.275 Y115.865 E.01992
+G1 X126.635 Y116.339 E.01914
+G1 X126.745 Y116.567 E.00814
+G1 X126.863 Y117.049 E.01596
+G1 X126.864 Y117.066 E.00055
+G1 X126.455 Y117.252 F10800
+;TYPE:External perimeter
+G1 F1500
+G1 X126.396 Y117.716 E.01504
+G1 X126.112 Y118.214 E.01843
+G1 X125.658 Y118.567 E.01849
+G1 X125.104 Y118.718 E.01846
+G1 X124.534 Y118.646 E.01847
+G1 X124.035 Y118.362 E.01846
+G1 X123.683 Y117.907 E.0185
+G1 X123.532 Y117.354 E.01843
+G1 X123.604 Y116.784 E.01847
+G1 X123.889 Y116.285 E.01848
+G1 X124.342 Y115.933 E.01845
+G1 X124.699 Y115.807 E.01217
+G1 X124.985 Y115.778 E.00924
+G1 X125.54 Y115.881 E.01815
+G1 X125.997 Y116.163 E.01727
+G1 X126.307 Y116.579 E.01668
+G1 X126.468 Y117.146 E.01895
+G1 X126.462 Y117.192 E.00149
+G1 X126.412 Y117.589 F10800
+G1 E-.6 F2100
+G1 Z.7 F10800
+G1 X114.877 Y117.795
+G1 Z.6
+G1 E.6 F2100
+;TYPE:Solid infill
+;WIDTH:0.548766
+G1 F4800
+G1 X114.833 Y117.84 E.00251
+G1 X114.849 Y117.901 E.00252
+G1 X114.91 Y117.917 E.00252
+G1 X114.955 Y117.873 E.00251
+G1 X114.939 Y117.811 E.00256
+;WIDTH:0.449999
+G1 X115.589 Y117.905 E.02112
+G1 X114.844 Y117.161 E.03386
+G1 X114.773 Y117.068 E.00376
+;WIDTH:0.41646
+G1 X114.701 Y116.975 E.00347
+;WIDTH:0.38292
+G1 X114.712 Y117.016 E.00114
+G1 X114.641 Y117.035 E.00197
+G1 X114.66 Y116.964 E.00197
+;WIDTH:0.449999
+G1 X114.844 Y116.586 E.01352
+G1 X116.164 Y117.905 E.06001
+G1 X116.74 Y117.905 E.01852
+G1 X114.844 Y116.01 E.0862
+G1 X114.844 Y115.434 E.01852
+G1 X117.316 Y117.905 E.11239
+G1 X117.891 Y117.905 E.01849
+G1 X114.844 Y114.858 E.13857
+G1 X114.844 Y114.283 E.01849
+G1 X118.467 Y117.905 E.16474
+G1 X119.043 Y117.905 E.01852
+G1 X114.844 Y113.707 E.19093
+G1 X114.844 Y113.131 E.01852
+G1 X119.618 Y117.905 E.2171
+G1 X120.194 Y117.905 E.01852
+G1 X114.844 Y112.556 E.24327
+G1 X114.844 Y111.98 E.01852
+G1 X120.77 Y117.905 E.26947
+G1 X121.345 Y117.905 E.01849
+G1 X114.844 Y111.404 E.29564
+M73 P24 R6
+G1 X114.844 Y110.829 E.01849
+G1 X121.921 Y117.905 E.32181
+G1 X122.699 Y118.05 E.02545
+;WIDTH:0.38292
+G1 X122.679 Y117.933 E.00319
+;WIDTH:0.41646
+G1 X122.588 Y117.919 E.00272
+;WIDTH:0.449999
+G1 X122.496 Y117.905 E.00299
+G1 X114.844 Y110.253 E.34798
+G1 X114.844 Y109.677 E.01852
+G1 X122.427 Y117.26 E.34484
+G1 X122.479 Y116.736 E.01693
+G1 X114.844 Y109.101 E.34721
+G1 X114.844 Y108.526 E.01849
+G1 X122.599 Y116.281 E.35267
+G1 X122.808 Y115.913 E.01361
+G1 X114.844 Y107.95 E.36215
+G1 X114.844 Y107.374 E.01852
+G1 X123.035 Y115.565 E.37249
+G1 X123.332 Y115.286 E.0131
+G1 X114.844 Y106.799 E.38598
+G1 X114.844 Y106.223 E.01852
+M73 P25 R6
+M73 Q25 S7
+G1 X119.568 Y110.946 E.21481
+G1 X119.728 Y111.234 E.01059
+;WIDTH:0.38292
+G1 X120.052 Y111.648 E.01412
+G1 X120.47 Y111.974 E.01424
+;WIDTH:0.41646
+G1 X120.614 Y112.055 E.00488
+;WIDTH:0.449999
+G1 X120.758 Y112.136 E.00531
+G1 X123.664 Y115.043 E.13218
+G1 X124.041 Y114.844 E.01371
+G1 X121.334 Y112.137 E.1231
+G1 X121.91 Y112.137 E.01852
+M73 Q25 S6
+G1 X124.482 Y114.709 E.11696
+G1 X125.012 Y114.663 E.01711
+G1 X122.486 Y112.138 E.11485
+G1 X123.063 Y112.138 E.01855
+G1 X125.688 Y114.764 E.1194
+G1 X125.847 Y114.84 E.00567
+;WIDTH:0.41646
+G1 X126.006 Y114.917 E.00521
+;WIDTH:0.38292
+G1 X126.017 Y114.958 E.00114
+G1 X125.946 Y114.977 E.00197
+G1 X125.965 Y114.906 E.00197
+G1 E-.6 F2100
+G1 X125.965 Y114.906 Z.7 F10800
+G1 X127.541 Y117.794
+G1 Z.6
+G1 E.6 F2100
+;WIDTH:0.549926
+G1 F4800
+G1 X127.497 Y117.839 E.00252
+G1 X127.513 Y117.9 E.00253
+G1 X127.574 Y117.917 E.00254
+G1 X127.619 Y117.872 E.00255
+G1 X127.603 Y117.811 E.00253
+;WIDTH:0.449999
+G1 X127.572 Y117.224 E.0189
+G1 X128.327 Y117.972 E.03418
+;WIDTH:0.41646
+G1 X128.399 Y118.038 E.00288
+;WIDTH:0.38292
+G1 X128.38 Y118.109 E.00197
+G1 X128.451 Y118.09 E.00197
+G1 X128.44 Y118.049 E.00114
+;WIDTH:0.449999
+G1 X129.107 Y117.984 E.02155
+;WIDTH:0.38292
+G1 X129.088 Y118.055 E.00197
+G1 X129.159 Y118.036 E.00197
+G1 X129.148 Y117.995 E.00114
+;WIDTH:0.41646
+G1 X128.989 Y117.95 E.00488
+;WIDTH:0.449999
+G1 X128.83 Y117.906 E.00531
+G1 X127.475 Y116.551 E.06162
+G1 X127.389 Y116.407 E.00539
+;WIDTH:0.41646
+G1 X127.302 Y116.263 E.00496
+;WIDTH:0.38292
+G1 X127.278 Y116.354 E.00253
+G1 X127.294 Y116.502 E.004
+G1 E-.6 F2100
+G1 X127.294 Y116.502 Z.7 F10800
+G1 X129.406 Y117.906
+G1 Z.6
+G1 E.6 F2100
+;WIDTH:0.449999
+G1 F4800
+G1 X123.639 Y112.139 E.26226
+G1 X124.215 Y112.14 E.01852
+G1 X129.981 Y117.906 E.26221
+G1 X130.557 Y117.906 E.01852
+G1 X124.792 Y112.14 E.26219
+G1 X125.368 Y112.141 E.01852
+G1 X131.133 Y117.906 E.26217
+G1 X131.708 Y117.906 E.01849
+G1 X125.944 Y112.141 E.26215
+G1 X126.52 Y112.142 E.01852
+G1 X132.284 Y117.906 E.26212
+G1 X132.86 Y117.906 E.01852
+G1 X127.097 Y112.142 E.2621
+G1 X127.673 Y112.143 E.01852
+G1 X133.435 Y117.906 E.26205
+G1 X134.011 Y117.906 E.01852
+G1 X128.249 Y112.144 E.26203
+G1 X128.825 Y112.144 E.01852
+G1 X134.587 Y117.906 E.26203
+G1 X135.156 Y117.899 E.0183
+G1 X129.375 Y112.118 E.2629
+G1 X129.789 Y111.957 E.01428
+G1 X135.156 Y117.323 E.24405
+G1 X135.156 Y116.747 E.01852
+G1 X130.107 Y111.698 E.22961
+G1 X130.334 Y111.35 E.01336
+G1 X135.156 Y116.172 E.21928
+G1 X135.156 Y115.596 E.01852
+G1 X130.439 Y110.879 E.21451
+G1 X130.444 Y110.309 E.01833
+G1 X135.156 Y115.02 E.21426
+G1 X135.156 Y114.444 E.01852
+G1 X130.444 Y109.733 E.21426
+G1 X130.444 Y109.158 E.01849
+G1 X135.156 Y113.869 E.21426
+G1 X135.156 Y113.293 E.01852
+G1 X130.444 Y108.582 E.21426
+G1 X130.444 Y108.006 E.01852
+G1 X135.156 Y112.717 E.21426
+G1 X135.156 Y112.142 E.01849
+G1 X130.444 Y107.431 E.21426
+G1 X130.444 Y106.855 E.01852
+G1 X135.156 Y111.566 E.21426
+G1 X135.156 Y110.99 E.01852
+G1 X130.444 Y106.279 E.21426
+G1 X130.444 Y105.703 E.01852
+M73 P26 R6
+M73 Q26 S6
+G1 X135.156 Y110.415 E.21428
+G1 X135.156 Y109.839 E.01852
+G1 X130.444 Y105.128 E.21426
+G1 X130.444 Y104.552 E.01852
+G1 X135.156 Y109.263 E.21426
+G1 X135.156 Y108.687 E.01852
+G1 X130.444 Y103.976 E.21426
+G1 X130.444 Y103.401 E.01849
+G1 X135.156 Y108.112 E.21426
+G1 X135.156 Y107.536 E.01852
+G1 X130.444 Y102.825 E.21426
+G1 X130.444 Y102.249 E.01852
+G1 X135.156 Y106.96 E.21426
+G1 X135.156 Y106.385 E.01849
+G1 X130.444 Y101.674 E.21426
+G1 X130.444 Y101.098 E.01852
+G1 X135.156 Y105.809 E.21426
+G1 X135.156 Y105.233 E.01852
+G1 X130.444 Y100.522 E.21426
+G1 X130.444 Y99.947 E.01849
+G1 X135.156 Y104.658 E.21426
+G1 X135.156 Y104.082 E.01852
+G1 X130.444 Y99.371 E.21426
+G1 X130.444 Y98.795 E.01852
+G1 X135.156 Y103.506 E.21426
+G1 X135.156 Y102.93 E.01852
+G1 X130.444 Y98.219 E.21426
+G1 X130.444 Y97.644 E.01849
+G1 X135.156 Y102.355 E.21426
+G1 X135.156 Y101.779 E.01852
+G1 X130.432 Y97.055 E.21483
+G1 X130.351 Y96.912 E.00528
+;WIDTH:0.41646
+G1 X130.27 Y96.768 E.00488
+;WIDTH:0.38292
+G1 X130.213 Y96.672 E.003
+G1 E-.6 F2100
+G1 X130.213 Y96.672 Z.7 F10800
+G1 X119.556 Y110.358
+G1 Z.6
+G1 E.6 F2100
+;WIDTH:0.449999
+G1 F4800
+G1 X114.844 Y105.647 E.21426
+G1 X114.844 Y105.072 E.01849
+G1 X119.556 Y109.783 E.21426
+G1 X119.556 Y109.207 E.01852
+G1 X114.844 Y104.496 E.21426
+G1 X114.844 Y103.92 E.01852
+G1 X119.556 Y108.631 E.21426
+G1 X119.556 Y108.056 E.01849
+G1 X114.844 Y103.345 E.21426
+G1 X114.844 Y102.769 E.01852
+G1 X119.556 Y107.48 E.21426
+G1 X119.556 Y106.904 E.01852
+G1 X114.844 Y102.193 E.21426
+G1 X114.844 Y101.617 E.01852
+G1 X119.556 Y106.328 E.21426
+G1 X119.556 Y105.753 E.01849
+G1 X114.844 Y101.042 E.21426
+G1 X114.844 Y100.466 E.01852
+G1 X119.556 Y105.177 E.21426
+G1 X119.556 Y104.601 E.01852
+G1 X114.844 Y99.89 E.21426
+G1 X114.844 Y99.315 E.01849
+G1 X119.556 Y104.026 E.21426
+G1 X119.556 Y103.45 E.01852
+G1 X114.844 Y98.739 E.21426
+G1 X114.844 Y98.163 E.01852
+G1 X119.556 Y102.874 E.21426
+G1 X119.556 Y102.299 E.01849
+G1 X114.844 Y97.588 E.21426
+G1 X114.844 Y97.012 E.01852
+M73 Q27 S6
+G1 X119.556 Y101.723 E.21426
+M73 P27 R6
+G1 X119.556 Y101.147 E.01852
+G1 X114.844 Y96.436 E.21426
+G1 X114.844 Y95.86 E.01852
+G1 X119.556 Y100.572 E.21428
+G1 X119.556 Y99.996 E.01852
+G1 X114.844 Y95.285 E.21426
+G1 X114.844 Y94.709 E.01852
+G1 X119.556 Y99.42 E.21426
+G1 X119.556 Y98.844 E.01852
+G1 X114.844 Y94.133 E.21426
+G1 X114.844 Y93.558 E.01849
+G1 X119.556 Y98.269 E.21426
+G1 X119.556 Y97.693 E.01852
+G1 X114.844 Y92.982 E.21426
+G1 X114.844 Y92.406 E.01852
+G1 X119.561 Y97.123 E.21451
+G1 X119.666 Y96.652 E.01552
+G1 X115.108 Y92.094 E.20728
+G1 X114.949 Y92.037 E.00543
+;WIDTH:0.41646
+G1 X114.789 Y91.979 E.00502
+;WIDTH:0.38292
+G1 X114.8 Y92.02 E.00114
+G1 X114.729 Y92.039 E.00197
+G1 X114.748 Y91.968 E.00197
+G1 X115.684 Y92.094 F10800
+;WIDTH:0.449999
+G1 F4800
+G1 X119.894 Y96.304 E.19145
+G1 X120.205 Y96.04 E.01312
+G1 X116.26 Y92.094 E.17943
+G1 X116.835 Y92.094 E.01849
+G1 X120.623 Y95.882 E.17226
+G1 X121.172 Y95.856 E.01767
+G1 X117.411 Y92.094 E.17106
+G1 X117.987 Y92.094 E.01852
+G1 X121.748 Y95.856 E.17106
+G1 X122.324 Y95.856 E.01852
+G1 X118.563 Y92.094 E.17106
+G1 X119.138 Y92.094 E.01849
+G1 X122.9 Y95.856 E.17108
+G1 X123.475 Y95.856 E.01849
+G1 X119.714 Y92.094 E.17106
+G1 X120.29 Y92.094 E.01852
+G1 X123.925 Y95.73 E.16533
+G1 X124.002 Y95.179 E.01789
+;WIDTH:0.524034
+G1 X124.383 Y95.56 E.02048
+G1 X124.441 Y95.654 E.0042
+G1 X124.402 Y95.819 E.00644
+G1 X125.883 Y95.838 E.05629
+;WIDTH:0.487027
+G1 X126.441 Y95.857 E.01959
+;WIDTH:0.449999
+G1 X129.224 Y95.848 E.08949
+G1 X127.311 Y93.934 E.08702
+G1 X127.017 Y94.361 E.01667
+G1 X126.665 Y94.723 E.01624
+G1 X126.274 Y94.996 E.01533
+;WIDTH:0.481729
+G1 X125.941 Y95.148 E.01269
+;WIDTH:0.513458
+G1 X125.608 Y95.299 E.01359
+;WIDTH:0.524055
+G1 X125.325 Y95.338 E.01086
+G1 X124.675 Y95.338 E.0247
+G1 X124.199 Y95.23 E.01855
+G1 X123.378 Y94.687 F10800
+;WIDTH:0.38292
+G1 F4800
+G1 X122.925 Y94.211 E.01765
+;WIDTH:0.41646
+G1 X122.809 Y94.067 E.00546
+;WIDTH:0.449999
+G1 X122.694 Y93.923 E.00593
+G1 X120.865 Y92.094 E.08318
+G1 X121.441 Y92.094 E.01852
+G1 X122.455 Y93.108 E.04611
+G1 X122.525 Y93.232 E.00458
+;WIDTH:0.41646
+G1 X122.596 Y93.355 E.00419
+;WIDTH:0.38292
+G1 X122.577 Y93.426 E.00197
+G1 X122.648 Y93.407 E.00197
+G1 X122.637 Y93.366 E.00114
+G1 X122.422 Y92.499 F10800
+;WIDTH:0.449999
+G1 F4800
+G1 X122.017 Y92.094 E.01842
+G1 X121.954 Y91.993 E.00383
+;WIDTH:0.41646
+G1 X121.891 Y91.891 E.00354
+;WIDTH:0.38292
+G1 X121.902 Y91.932 E.00114
+G1 X121.83 Y91.951 E.002
+G1 X121.849 Y91.88 E.00197
+G1 E-.6 F2100
+G1 X121.849 Y91.88 Z.7 F10800
+G1 X126.238 Y95.45
+G1 Z.6
+G1 E.6 F2100
+;WIDTH:0.449999
+G1 F4800
+G1 X128.251 Y95.45 E.06473
+G1 X127.37 Y94.569 E.04006
+G1 X126.987 Y94.981 E.01809
+G1 X126.554 Y95.304 E.01737
+G1 X126.423 Y95.364 E.00463
+G1 E-.6 F2100
+G1 X126.423 Y95.364 Z.7 F10800
+G1 X127.466 Y93.514
+G1 Z.6
+G1 E.6 F2100
+G1 F4800
+G1 X135.156 Y101.203 E.34969
+G1 X135.156 Y100.628 E.01849
+G1 X127.565 Y93.037 E.34521
+G1 X127.559 Y92.456 E.01868
+G1 X135.156 Y100.052 E.34546
+G1 X135.156 Y99.476 E.01852
+G1 X127.774 Y92.094 E.3357
+G1 X127.61 Y92.049 E.00547
+;WIDTH:0.41646
+G1 X127.446 Y92.003 E.00503
+;WIDTH:0.38292
+G1 X127.457 Y92.044 E.00114
+G1 X127.385 Y92.063 E.002
+G1 X127.405 Y91.992 E.00198
+G1 X128.349 Y92.094 F10800
+;WIDTH:0.449999
+G1 F4800
+G1 X135.156 Y98.901 E.30955
+G1 X135.156 Y98.325 E.01852
+G1 X128.925 Y92.094 E.28336
+G1 X129.501 Y92.094 E.01852
+M73 P28 R6
+M73 Q28 S6
+G1 X135.156 Y97.749 E.25717
+G1 X135.156 Y97.174 E.01849
+G1 X130.076 Y92.094 E.23102
+G1 X130.652 Y92.094 E.01852
+G1 X135.156 Y96.598 E.20482
+G1 X135.156 Y96.022 E.01852
+G1 X131.228 Y92.094 E.17863
+G1 X131.804 Y92.094 E.01852
+G1 X135.156 Y95.446 E.15244
+G1 X135.156 Y94.871 E.01849
+G1 X132.379 Y92.094 E.12629
+G1 X132.955 Y92.094 E.01852
+G1 X135.156 Y94.295 E.10009
+G1 X135.156 Y93.719 E.01852
+G1 X133.531 Y92.094 E.0739
+G1 X134.106 Y92.094 E.01849
+G1 X135.156 Y93.144 E.04775
+G1 X135.156 Y92.568 E.01852
+G1 X134.682 Y92.094 E.02156
+G1 X134.619 Y91.993 E.00383
+;WIDTH:0.41646
+G1 X134.556 Y91.891 E.00354
+;WIDTH:0.38292
+G1 X134.567 Y91.932 E.00114
+G1 X134.496 Y91.951 E.00197
+G1 X134.515 Y91.88 E.00197
+;LAYER_CHANGE
+;Z:0.8
+;HEIGHT:0.2
+;BEFORE_LAYER_CHANGE
+G92 E0.0
+;0.8
+
+
+G1 Z.8 F10800
+;AFTER_LAYER_CHANGE
+;0.8
+G1 E-.6 F2100
+G1 X134.515 Y91.88 Z.9 F10800
+G1 X127.047 Y91.76
+G1 Z.8
+G1 E.6 F2100
+;TYPE:Perimeter
+;WIDTH:0.449999
+G1 F2700
+G1 X127.227 Y91.789 E.00586
+G1 X135.461 Y91.789 E.26478
+G1 X135.461 Y94.826 E.09766
+G1 X135.461 Y118.211 E.75198
+G1 X127.072 Y118.223 E.26976
+G1 X127.135 Y118.074 E.0052
+G1 X127.276 Y117.35 E.02372
+G1 X127.259 Y116.953 E.01278
+G1 X127.141 Y116.471 E.01596
+G1 X126.964 Y116.098 E.01328
+G1 X126.552 Y115.567 E.02161
+G1 X125.963 Y115.185 E.02257
+G1 X125.594 Y115.05 E.01263
+G1 X124.956 Y114.962 E.02071
+G1 X124.397 Y115.045 E.01817
+G1 X123.861 Y115.277 E.01878
+G1 X123.306 Y115.71 E.02264
+G1 X122.935 Y116.287 E.02206
+G1 X122.799 Y116.66 E.01277
+G1 X122.724 Y117.15 E.01594
+G1 X122.741 Y117.547 E.01278
+G1 X122.859 Y118.029 E.01596
+G1 X122.954 Y118.242 E.0075
+G1 X122.773 Y118.211 E.00591
+G1 X114.539 Y118.211 E.26478
+G1 X114.539 Y91.789 E.84963
+G1 X122.367 Y91.789 E.25172
+G1 X122.933 Y91.775 E.01821
+G1 X122.768 Y92.258 E.01641
+G1 X122.723 Y92.84 E.01877
+G1 X122.833 Y93.488 E.02114
+G1 X123.128 Y94.062 E.02075
+G1 X123.513 Y94.478 E.01823
+G1 X124.121 Y94.861 E.02311
+G1 X124.671 Y94.996 E.01821
+G1 X125.505 Y94.981 E.02682
+G1 X126.165 Y94.71 E.02294
+G1 X126.467 Y94.494 E.01194
+G1 X126.802 Y94.145 E.01556
+G1 X127.007 Y93.833 E.012
+G1 X127.213 Y93.327 E.01757
+G1 X127.277 Y92.628 E.02257
+G1 X127.23 Y92.274 E.01148
+G1 X127.067 Y91.816 E.01563
+G1 X126.879 Y91.289 F10800
+;WIDTH:0.504669
+G1 F2700
+G1 X126.952 Y91.33 E.00305
+;WIDTH:0.47352
+G1 X127.227 Y91.382 E.00952
+;WIDTH:0.449999
+G1 X135.868 Y91.382 E.27786
+G1 X135.868 Y94.826 E.11075
+G1 X135.868 Y118.618 E.76506
+G1 X127.134 Y118.625 E.28085
+;WIDTH:0.496019
+G1 X126.803 Y118.758 E.01277
+;WIDTH:0.498958
+G1 X126.388 Y119.13 E.02008
+G1 X125.955 Y119.39 E.01819
+;WIDTH:0.497909
+G1 X125.475 Y119.539 E.01806
+G1 X124.974 Y119.591 E.0181
+;WIDTH:0.495258
+G1 X124.474 Y119.529 E.018
+M73 Q29 S6
+G1 X124.047 Y119.384 E.01611
+;WIDTH:0.496478
+G1 X123.654 Y119.164 E.01614
+G1 X123.303 Y118.858 E.01668
+M73 P29 R6
+;WIDTH:0.489367
+G1 X122.978 Y118.653 E.01355
+;WIDTH:0.449999
+G1 X122.773 Y118.618 E.00669
+G1 X114.132 Y118.618 E.27786
+G1 X114.132 Y91.382 E.87581
+G1 X122.651 Y91.382 E.27394
+;WIDTH:0.455823
+G1 X122.991 Y91.345 E.01116
+;WIDTH:0.492776
+G1 X123.202 Y91.235 E.00846
+G1 X123.627 Y90.848 E.02043
+;WIDTH:0.487361
+G1 X124.066 Y90.599 E.01772
+G1 X124.546 Y90.449 E.01766
+;WIDTH:0.487954
+G1 X125.051 Y90.408 E.01781
+;WIDTH:0.494849
+G1 X125.525 Y90.47 E.01707
+G1 X125.939 Y90.61 E.0156
+;WIDTH:0.490702
+G1 X126.402 Y90.874 E.01885
+;WIDTH:0.504669
+G1 X126.798 Y91.243 E.01974
+G1 X126.827 Y91.26 E.00123
+G1 X127.09 Y90.922 F10800
+;TYPE:External perimeter
+;WIDTH:0.449999
+G1 F1500
+G1 X127.227 Y90.975 E.00472
+G1 X136.275 Y90.975 E.29095
+G1 X136.275 Y94.826 E.12383
+G1 X136.275 Y119.025 E.77815
+G1 X127.227 Y119.025 E.29095
+G1 X127.091 Y119.077 E.00468
+G1 X126.624 Y119.499 E.02024
+G1 X126.105 Y119.794 E.0192
+G1 X125.535 Y119.972 E.0192
+G1 X124.94 Y120.023 E.0192
+G1 X124.348 Y119.946 E.0192
+G1 X123.845 Y119.765 E.01719
+G1 X123.378 Y119.5 E.01727
+G1 X122.909 Y119.077 E.02031
+G1 X122.773 Y119.025 E.00468
+G1 X113.725 Y119.025 E.29095
+G1 X113.725 Y90.975 E.90198
+G1 X122.773 Y90.975 E.29095
+G1 X122.909 Y90.923 E.00468
+G1 X123.376 Y90.501 E.02024
+G1 X123.895 Y90.206 E.0192
+G1 X124.464 Y90.028 E.01917
+G1 X125.086 Y89.978 E.02007
+G1 X125.651 Y90.054 E.01833
+G1 X126.154 Y90.234 E.01718
+G1 X126.643 Y90.515 E.01814
+G1 X127.046 Y90.882 E.01753
+G1 X127.437 Y90.966 F10800
+G1 E-.6 F2100
+G1 Z.9 F10800
+G1 X123.141 Y92.625
+G1 Z.8
+M73 P30 R6
+M73 Q30 S6
+G1 E.6 F2100
+;TYPE:Perimeter
+G1 F1500
+G1 X123.17 Y92.322 E.00979
+;WIDTH:0.455823
+G1 X123.365 Y91.817 E.01766
+;WIDTH:0.486482
+G1 X123.595 Y91.474 E.01447
+G1 X123.904 Y91.201 E.01445
+G1 X124.265 Y91 E.01448
+;WIDTH:0.486305
+G1 X124.658 Y90.883 E.01436
+;WIDTH:0.487904
+G1 X125.098 Y90.858 E.01549
+G1 X125.648 Y90.967 E.01971
+;WIDTH:0.490748
+G1 X126.135 Y91.231 E.0196
+G1 X126.24 Y91.313 E.00471
+;WIDTH:0.481601
+G1 X126.607 Y91.762 E.0201
+;WIDTH:0.47352
+G1 X126.842 Y92.398 E.02306
+;WIDTH:0.449999
+G1 X126.871 Y92.611 E.00691
+G1 X126.825 Y93.206 E.01919
+G1 X126.631 Y93.676 E.01635
+G1 X126.508 Y93.863 E.0072
+G1 X126.174 Y94.212 E.01553
+G1 X125.992 Y94.342 E.00719
+G1 X125.434 Y94.58 E.01951
+G1 X124.671 Y94.589 E.02454
+G1 X124.259 Y94.479 E.01371
+G1 X123.746 Y94.145 E.01968
+G1 X123.447 Y93.808 E.01449
+G1 X123.212 Y93.332 E.01707
+G1 X123.126 Y92.78 E.01796
+G1 X123.135 Y92.685 E.00307
+G1 X123.535 Y92.631 F10800
+;TYPE:External perimeter
+G1 F1500
+G1 X123.628 Y92.229 E.01327
+G1 X123.868 Y91.805 E.01567
+G1 X124.123 Y91.565 E.01126
+G1 X124.4 Y91.403 E.01032
+G1 X124.705 Y91.306 E.01029
+G1 X125.025 Y91.278 E.01033
+G1 X125.538 Y91.379 E.01681
+G1 X125.955 Y91.626 E.01558
+G1 X126.281 Y92.025 E.01657
+G1 X126.455 Y92.522 E.01693
+G1 X126.445 Y93.033 E.01644
+G1 X126.255 Y93.519 E.01678
+G1 X125.88 Y93.93 E.01789
+G1 X125.415 Y94.163 E.01672
+G1 X124.671 Y94.182 E.02393
+G1 X124.351 Y94.071 E.01089
+G1 X123.937 Y93.772 E.01642
+G1 X123.742 Y93.518 E.0103
+G1 X123.602 Y93.21 E.01088
+G1 X123.533 Y92.69 E.01687
+G1 X123.613 Y92.298 F10800
+G1 E-.6 F2100
+G1 Z.9 F10800
+G1 X120.155 Y96.476
+G1 Z.8
+G1 E.6 F2100
+;TYPE:Perimeter
+G1 F2700
+G1 X120.185 Y96.434 E.00166
+G1 X120.363 Y96.301 E.00715
+G1 X120.703 Y96.176 E.01165
+G1 X121.305 Y96.161 E.01936
+G1 X129.121 Y96.161 E.25133
+G1 X129.42 Y96.206 E.00972
+G1 X129.637 Y96.301 E.00762
+G1 X129.95 Y96.588 E.01366
+G1 X130.116 Y96.964 E.01322
+G1 X130.139 Y97.179 E.00695
+G1 X130.139 Y110.821 E.43868
+G1 X130.057 Y111.221 E.01313
+G1 X129.847 Y111.535 E.01215
+G1 X129.541 Y111.749 E.01201
+G1 X129.241 Y111.832 E.01001
+G1 X127.394 Y111.839 E.05939
+G1 X120.879 Y111.839 E.2095
+G1 X120.661 Y111.816 E.00705
+G1 X120.283 Y111.647 E.01331
+G1 X120.036 Y111.393 E.01139
+G1 X119.876 Y110.997 E.01373
+G1 X119.861 Y110.821 E.00568
+G1 X119.861 Y97.179 E.43868
+G1 X119.949 Y96.764 E.01364
+G1 X120.12 Y96.525 E.00945
+G1 X120.447 Y96.753 F10800
+G1 F2700
+G1 X120.462 Y96.732 E.00083
+G1 X120.699 Y96.595 E.0088
+G1 X121.305 Y96.568 E.01951
+G1 X129.121 Y96.568 E.25133
+G1 X129.431 Y96.652 E.01033
+G1 X129.619 Y96.824 E.00819
+G1 X129.718 Y97.05 E.00793
+G1 X129.732 Y97.179 E.00417
+G1 X129.732 Y110.821 E.43868
+G1 X129.683 Y111.061 E.00788
+G1 X129.557 Y111.25 E.0073
+G1 X129.373 Y111.378 E.00721
+G1 X129.121 Y111.432 E.00829
+G1 X127.394 Y111.432 E.05553
+G1 X120.879 Y111.432 E.2095
+G1 X120.627 Y111.378 E.00829
+G1 X120.443 Y111.25 E.00721
+G1 X120.317 Y111.061 E.0073
+G1 X120.268 Y110.821 E.00788
+G1 X120.268 Y97.179 E.43868
+G1 X120.321 Y96.93 E.00819
+G1 X120.412 Y96.802 E.00505
+G1 X120.74 Y97.03 F10800
+;TYPE:External perimeter
+G1 F1500
+G1 X120.879 Y96.975 E.00481
+G1 X129.121 Y96.975 E.26503
+G1 X129.26 Y97.03 E.00481
+G1 X129.325 Y97.179 E.00523
+G1 X129.325 Y110.821 E.43868
+G1 X129.267 Y110.964 E.00496
+G1 X129.121 Y111.025 E.00509
+G1 X127.394 Y111.025 E.05553
+G1 X120.879 Y111.025 E.2095
+G1 X120.733 Y110.964 E.00509
+G1 X120.675 Y110.821 E.00496
+G1 X120.675 Y97.179 E.43868
+G1 X120.716 Y97.085 E.0033
+G1 X121.103 Y96.982 F10800
+G1 E-.6 F2100
+G1 Z.9 F10800
+M73 P31 R6
+G1 X126.867 Y117.126
+M73 Q31 S6
+G1 Z.8
+G1 E.6 F2100
+;TYPE:Perimeter
+G1 F1500
+G1 X126.874 Y117.288 E.00521
+G1 X126.759 Y117.918 E.02059
+;WIDTH:0.491187
+G1 X126.477 Y118.436 E.02088
+G1 X126.309 Y118.616 E.00872
+;WIDTH:0.485547
+G1 X125.848 Y118.947 E.01984
+;WIDTH:0.497909
+G1 X125.353 Y119.101 E.01863
+G1 X124.959 Y119.144 E.01424
+;WIDTH:0.490248
+G1 X124.458 Y119.065 E.01792
+;WIDTH:0.49541
+G1 X124.184 Y118.954 E.01057
+G1 X123.722 Y118.652 E.01973
+;WIDTH:0.480513
+G1 X123.355 Y118.148 E.02155
+;WIDTH:0.449999
+G1 X123.254 Y117.932 E.00767
+G1 X123.136 Y117.45 E.01596
+G1 X123.126 Y117.212 E.00766
+G1 X123.255 Y116.551 E.02166
+G1 X123.541 Y116.074 E.01788
+G1 X123.701 Y115.899 E.00762
+G1 X124.266 Y115.519 E.0219
+G1 X124.648 Y115.403 E.01284
+G1 X125.052 Y115.376 E.01302
+G1 X125.53 Y115.452 E.01556
+G1 X125.752 Y115.533 E.0076
+G1 X126.275 Y115.865 E.01992
+G1 X126.635 Y116.338 E.01911
+G1 X126.746 Y116.568 E.00821
+G1 X126.864 Y117.05 E.01596
+G1 X126.864 Y117.066 E.00051
+G1 X126.465 Y117.174 F10800
+;TYPE:External perimeter
+G1 F1500
+G1 X126.396 Y117.716 E.01757
+G1 X126.112 Y118.215 E.01846
+G1 X125.658 Y118.567 E.01847
+G1 X125.104 Y118.718 E.01846
+G1 X124.603 Y118.657 E.01623
+G1 X124.407 Y118.587 E.00669
+G1 X123.977 Y118.308 E.01648
+G1 X123.652 Y117.845 E.01819
+G1 X123.532 Y117.354 E.01625
+G1 X123.604 Y116.784 E.01847
+G1 X123.889 Y116.285 E.01848
+G1 X124.342 Y115.933 E.01845
+G1 X124.699 Y115.807 E.01217
+G1 X124.988 Y115.778 E.00934
+G1 X125.54 Y115.881 E.01806
+G1 X125.998 Y116.163 E.0173
+G1 X126.307 Y116.579 E.01666
+G1 X126.459 Y117.115 E.01792
+G1 X126.42 Y117.513 F10800
+G1 E-.6 F2100
+G1 Z.9 F10800
+G1 X127.622 Y92.127
+G1 Z.8
+G1 E.6 F2100
+;TYPE:Solid infill
+;WIDTH:0.547568
+G1 F4800
+G1 X127.577 Y92.082 E.00254
+G1 X127.516 Y92.099 E.00252
+G1 X127.5 Y92.16 E.00251
+G1 X127.544 Y92.204 E.00248
+G1 X127.605 Y92.188 E.00251
+;WIDTH:0.449999
+G1 X127.577 Y92.772 E.0188
+G1 X128.254 Y92.094 E.03081
+G1 X128.83 Y92.094 E.01852
+G1 X127.504 Y93.42 E.0603
+G1 X127.429 Y93.559 E.00508
+;WIDTH:0.41646
+G1 X127.354 Y93.697 E.00463
+;WIDTH:0.38292
+G1 X127.283 Y93.678 E.00197
+G1 X127.302 Y93.749 E.00197
+G1 X127.343 Y93.738 E.00114
+G1 E-.6 F2100
+G1 X127.343 Y93.738 Z.9 F10800
+G1 X114.955 Y92.127
+G1 Z.8
+G1 E.6 F2100
+;WIDTH:0.548766
+G1 F4800
+G1 X114.91 Y92.083 E.00251
+G1 X114.849 Y92.099 E.00252
+G1 X114.833 Y92.16 E.00252
+G1 X114.877 Y92.205 E.00251
+G1 X114.939 Y92.189 E.00256
+;WIDTH:0.449999
+G1 X115.589 Y92.094 E.02112
+G1 X114.778 Y92.911 E.03702
+;WIDTH:0.41646
+G1 X114.712 Y92.984 E.0029
+;WIDTH:0.38292
+G1 X114.641 Y92.965 E.00197
+G1 X114.66 Y93.036 E.00197
+G1 X114.701 Y93.025 E.00114
+;WIDTH:0.449999
+G1 X114.844 Y93.414 E.01333
+G1 X116.164 Y92.094 E.06003
+G1 X116.74 Y92.094 E.01852
+G1 X114.844 Y93.99 E.08622
+G1 X114.844 Y94.566 E.01852
+G1 X117.316 Y92.094 E.11242
+G1 X117.892 Y92.094 E.01852
+G1 X114.844 Y95.142 E.13861
+G1 X114.844 Y95.717 E.01849
+G1 X118.467 Y92.094 E.16476
+G1 X119.043 Y92.094 E.01852
+G1 X114.844 Y96.293 E.19095
+G1 X114.844 Y96.869 E.01852
+G1 X119.619 Y92.094 E.21715
+G1 X120.194 Y92.094 E.01849
+G1 X114.844 Y97.444 E.2433
+G1 X114.844 Y98.02 E.01852
+G1 X120.77 Y92.094 E.26949
+G1 X121.346 Y92.094 E.01852
+G1 X114.844 Y98.596 E.29568
+G1 X114.844 Y99.171 E.01849
+G1 X121.921 Y92.094 E.32183
+G1 X122.497 Y92.095 E.01852
+G1 X114.844 Y99.747 E.348
+G1 X114.844 Y100.323 E.01852
+G1 X122.421 Y92.746 E.34457
+G1 X122.478 Y93.265 E.01679
+G1 X114.844 Y100.899 E.34716
+G1 E-.6 F2100
+G1 X114.844 Y100.899 Z.9 F10800
+G1 X122.695 Y93.903
+G1 Z.8
+G1 E.6 F2100
+G1 F4800
+G1 X122.903 Y94.269 E.01354
+G1 X123.353 Y94.739 E.02092
+G1 X124.046 Y95.157 E.02602
+;WIDTH:0.486989
+G1 X124.363 Y95.248 E.01157
+;WIDTH:0.523978
+G1 X124.68 Y95.338 E.01252
+G1 X125.534 Y95.321 E.03246
+G1 X125.472 Y95.541 E.00869
+G1 X125.663 Y95.796 E.01211
+G1 X125.235 Y95.82 E.01629
+;WIDTH:0.530464
+G1 X124.568 Y95.816 E.02569
+G1 X124.266 Y95.836 E.01166
+;WIDTH:0.490232
+G1 X123.964 Y95.856 E.01069
+;WIDTH:0.449999
+G1 X120.883 Y95.856 E.09907
+G1 X120.523 Y95.907 E.01169
+;WIDTH:0.448845
+G1 X120.358 Y95.996 E.00601
+;WIDTH:0.420925
+G1 X120.194 Y96.085 E.00557
+;WIDTH:0.401307
+G1 X120.239 Y96.048 E.00165
+;WIDTH:0.449999
+G1 X120.722 Y95.597 E.02125
+G1 X122.588 Y93.73 E.08488
+G1 X122.475 Y94.42 E.02248
+G1 X121.446 Y95.449 E.04679
+G1 X123.724 Y95.449 E.07325
+M73 Q32 S6
+G1 X123.138 Y95.084 E.0222
+M73 P32 R6
+G1 X122.617 Y94.565 E.02365
+G1 X122.524 Y95.01 E.01462
+;WIDTH:0.485328
+G1 X122.485 Y94.971 E.00193
+G1 X122.432 Y94.985 E.00192
+G1 X122.418 Y95.038 E.00192
+G1 X122.457 Y95.077 E.00193
+G1 X122.51 Y95.063 E.00192
+G1 E-.6 F2100
+G1 X122.51 Y95.063 Z.9 F10800
+G1 X120.194 Y96.085
+G1 Z.8
+G1 E.6 F2100
+;WIDTH:0.393004
+G1 F4800
+G1 X119.9 Y96.366 E.01125
+;WIDTH:0.41646
+G1 X119.783 Y96.51 E.00547
+;WIDTH:0.449999
+G1 X119.665 Y96.653 E.00596
+G1 X114.844 Y101.474 E.21924
+G1 X114.844 Y102.05 E.01852
+G1 X119.556 Y97.339 E.21426
+G1 X119.556 Y97.915 E.01852
+G1 X114.844 Y102.626 E.21426
+G1 X114.844 Y103.201 E.01849
+G1 X119.556 Y98.49 E.21426
+G1 X119.556 Y99.066 E.01852
+G1 X114.844 Y103.777 E.21426
+G1 X114.844 Y104.353 E.01852
+G1 X119.556 Y99.642 E.21426
+G1 X119.556 Y100.217 E.01849
+G1 X114.844 Y104.928 E.21426
+G1 X114.844 Y105.504 E.01852
+G1 X119.556 Y100.793 E.21426
+G1 X119.556 Y101.369 E.01852
+G1 X114.844 Y106.08 E.21426
+G1 X114.844 Y106.656 E.01852
+G1 X119.556 Y101.944 E.21428
+G1 X119.556 Y102.52 E.01852
+G1 X114.844 Y107.231 E.21426
+G1 X114.844 Y107.807 E.01852
+G1 X119.556 Y103.096 E.21426
+G1 X119.556 Y103.672 E.01852
+G1 X114.844 Y108.383 E.21426
+G1 X114.844 Y108.958 E.01849
+G1 X119.556 Y104.247 E.21426
+G1 X119.556 Y104.823 E.01852
+G1 X114.844 Y109.534 E.21426
+G1 X114.844 Y110.11 E.01852
+G1 X119.556 Y105.399 E.21426
+G1 X119.556 Y105.974 E.01849
+G1 X114.844 Y110.685 E.21426
+G1 X114.844 Y111.261 E.01852
+G1 X119.556 Y106.55 E.21426
+G1 X119.556 Y107.126 E.01852
+G1 X114.844 Y111.837 E.21426
+G1 X114.844 Y112.412 E.01849
+G1 X119.556 Y107.701 E.21426
+G1 X119.556 Y108.277 E.01852
+G1 X114.844 Y112.988 E.21426
+G1 X114.844 Y113.564 E.01852
+G1 X119.556 Y108.853 E.21426
+G1 X119.556 Y109.428 E.01849
+G1 X114.844 Y114.14 E.21428
+G1 X114.844 Y114.715 E.01849
+G1 X119.556 Y110.004 E.21426
+G1 X119.556 Y110.58 E.01852
+G1 X114.844 Y115.291 E.21426
+G1 X114.844 Y115.867 E.01852
+G1 X119.592 Y111.119 E.21592
+G1 X119.762 Y111.525 E.01415
+G1 X114.844 Y116.442 E.22363
+G1 X114.844 Y117.018 E.01852
+G1 X120.031 Y111.832 E.23586
+G1 X120.391 Y112.047 E.01348
+G1 X114.844 Y117.594 E.25225
+G1 X114.822 Y117.787 E.00625
+;WIDTH:0.41646
+G1 X114.8 Y117.98 E.00573
+;WIDTH:0.38292
+G1 X114.729 Y117.961 E.00197
+G1 X114.748 Y118.032 E.00197
+G1 X114.789 Y118.021 E.00114
+;WIDTH:0.449999
+G1 X115.108 Y117.905 E.01092
+G1 X120.878 Y112.136 E.26237
+G1 X121.453 Y112.137 E.01849
+G1 X115.684 Y117.905 E.26233
+G1 X116.26 Y117.905 E.01852
+M73 Q33 S6
+G1 X122.028 Y112.137 E.26231
+M73 P33 R6
+G1 X122.603 Y112.138 E.01849
+G1 X116.836 Y117.905 E.26226
+G1 X117.411 Y117.905 E.01849
+G1 X123.178 Y112.139 E.26224
+G1 X123.753 Y112.139 E.01849
+G1 X117.987 Y117.905 E.26221
+G1 X118.563 Y117.905 E.01852
+G1 X124.328 Y112.14 E.26217
+G1 X124.904 Y112.14 E.01852
+G1 X119.139 Y117.905 E.26217
+G1 X119.714 Y117.905 E.01849
+G1 X125.479 Y112.141 E.26215
+G1 X126.054 Y112.141 E.01849
+G1 X120.29 Y117.905 E.26212
+G1 X120.449 Y117.98 E.00565
+;WIDTH:0.41646
+G1 X120.608 Y118.055 E.00519
+;WIDTH:0.38292
+G1 X120.567 Y118.066 E.00114
+G1 X120.548 Y117.994 E.002
+G1 X120.619 Y118.014 E.00198
+G1 E-.6 F2100
+G1 X120.619 Y118.014 Z.9 F10800
+G1 X123.808 Y114.963
+G1 Z.8
+G1 E.6 F2100
+;WIDTH:0.449999
+G1 F4800
+G1 X126.629 Y112.142 E.12829
+G1 X127.204 Y112.143 E.01849
+G1 X124.659 Y114.688 E.11574
+G1 X124.537 Y114.761 E.00457
+;WIDTH:0.41646
+G1 X124.415 Y114.835 E.00421
+;WIDTH:0.38292
+G1 X124.344 Y114.816 E.00197
+G1 X124.363 Y114.887 E.00197
+G1 X124.404 Y114.876 E.00114
+G1 X125.23 Y114.693 F10800
+;WIDTH:0.449999
+G1 F4800
+G1 X127.779 Y112.143 E.11594
+G1 X128.354 Y112.144 E.01849
+G1 X125.722 Y114.776 E.11969
+G1 X126.139 Y114.935 E.01435
+G1 X128.929 Y112.144 E.1269
+G1 X129.6 Y112.05 E.02179
+G1 X126.497 Y115.152 E.14109
+G1 E-.6 F2100
+G1 X126.497 Y115.152 Z.9 F10800
+G1 X123.52 Y115.2
+G1 Z.8
+G1 E.6 F2100
+;WIDTH:0.38292
+G1 F4800
+G1 X123.145 Y115.534 E.01349
+G1 X122.965 Y115.749 E.00753
+;WIDTH:0.41646
+G1 X122.849 Y115.893 E.00546
+;WIDTH:0.449999
+G1 X122.734 Y116.037 E.00593
+G1 X120.866 Y117.905 E.08495
+G1 X121.442 Y117.905 E.01852
+G1 X122.455 Y116.892 E.04607
+G1 X122.544 Y116.763 E.00504
+;WIDTH:0.41646
+G1 X122.633 Y116.634 E.00462
+;WIDTH:0.38292
+G1 X122.592 Y116.645 E.00114
+G1 X122.573 Y116.574 E.00197
+G1 X122.644 Y116.593 E.00197
+G1 X122.437 Y117.486 F10800
+;WIDTH:0.449999
+G1 F4800
+G1 X122.017 Y117.905 E.01908
+G1 E-.6 F2100
+G1 X122.017 Y117.905 Z.9 F10800
+G1 X125.998 Y95.502
+G1 Z.8
+G1 E.6 F2100
+G1 F4800
+G1 X129.406 Y92.094 E.15498
+G1 X129.981 Y92.094 E.01849
+G1 X126.219 Y95.856 E.17108
+G1 X126.795 Y95.856 E.01852
+G1 X130.557 Y92.094 E.17108
+G1 X131.133 Y92.094 E.01852
+G1 X127.37 Y95.857 E.17113
+G1 X127.946 Y95.857 E.01852
+G1 X131.708 Y92.094 E.1711
+G1 X132.284 Y92.094 E.01852
+G1 X128.521 Y95.857 E.17113
+G1 X129.097 Y95.857 E.01852
+G1 X132.86 Y92.094 E.17113
+G1 X133.435 Y92.094 E.01849
+G1 X129.584 Y95.946 E.17515
+G1 X129.95 Y96.155 E.01355
+G1 X134.011 Y92.094 E.18468
+G1 X134.587 Y92.094 E.01852
+G1 X130.225 Y96.456 E.19837
+G1 X130.401 Y96.856 E.01405
+G1 X135.156 Y92.101 E.21624
+G1 X135.156 Y92.677 E.01852
+G1 X130.444 Y97.388 E.21426
+G1 X130.444 Y97.964 E.01852
+G1 X135.156 Y93.253 E.21426
+G1 X135.156 Y93.828 E.01849
+G1 X130.444 Y98.54 E.21428
+G1 X130.444 Y99.115 E.01849
+M73 P34 R6
+M73 Q34 S6
+G1 X135.156 Y94.404 E.21426
+G1 X135.156 Y94.98 E.01852
+G1 X130.444 Y99.691 E.21426
+G1 X130.444 Y100.267 E.01852
+G1 X135.156 Y95.556 E.21426
+G1 X135.156 Y96.131 E.01849
+G1 X130.444 Y100.842 E.21426
+G1 X130.444 Y101.418 E.01852
+G1 X135.156 Y96.707 E.21426
+G1 X135.156 Y97.283 E.01852
+G1 X130.444 Y101.994 E.21426
+G1 X130.444 Y102.569 E.01849
+G1 X135.156 Y97.858 E.21426
+G1 X135.156 Y98.434 E.01852
+G1 X130.444 Y103.145 E.21426
+G1 X130.444 Y103.721 E.01852
+G1 X135.156 Y99.01 E.21426
+G1 X135.156 Y99.585 E.01849
+G1 X130.444 Y104.297 E.21428
+G1 X130.444 Y104.872 E.01849
+G1 X135.156 Y100.161 E.21426
+G1 X135.156 Y100.737 E.01852
+G1 X130.444 Y105.448 E.21426
+G1 X130.444 Y106.024 E.01852
+G1 X135.156 Y101.313 E.21426
+G1 X135.156 Y101.888 E.01849
+G1 X130.444 Y106.599 E.21426
+G1 X130.444 Y107.175 E.01852
+G1 X135.156 Y102.464 E.21426
+G1 X135.156 Y103.04 E.01852
+G1 X130.444 Y107.751 E.21426
+G1 X130.444 Y108.326 E.01849
+G1 X135.156 Y103.615 E.21426
+G1 X135.156 Y104.191 E.01852
+G1 X130.444 Y108.902 E.21426
+G1 X130.444 Y109.478 E.01852
+G1 X135.156 Y104.767 E.21426
+G1 X135.156 Y105.342 E.01849
+G1 X130.444 Y110.053 E.21426
+G1 X130.444 Y110.629 E.01852
+G1 X135.156 Y105.918 E.21426
+G1 X135.156 Y106.494 E.01852
+G1 X130.353 Y111.297 E.21842
+G1 X130.239 Y111.441 E.00591
+;WIDTH:0.41646
+G1 X130.126 Y111.585 E.0054
+;WIDTH:0.38292
+G1 X129.887 Y111.823 E.00906
+G1 E-.6 F2100
+G1 X129.887 Y111.823 Z.9 F10800
+G1 X126.817 Y115.408
+G1 Z.8
+G1 E.6 F2100
+;WIDTH:0.449999
+G1 F4800
+G1 X135.156 Y107.07 E.3792
+G1 X135.156 Y107.645 E.01849
+G1 X127.072 Y115.729 E.36763
+G1 X127.303 Y116.073 E.01332
+G1 X135.156 Y108.221 E.3571
+G1 X135.156 Y108.797 E.01852
+G1 X127.46 Y116.492 E.34996
+G1 X127.561 Y116.967 E.01562
+G1 X135.156 Y109.372 E.34539
+G1 X135.156 Y109.948 E.01852
+G1 X127.554 Y117.549 E.34569
+G1 X127.452 Y118.002 E.01493
+;WIDTH:0.38292
+G1 X127.411 Y118.013 E.00114
+G1 X127.392 Y117.942 E.00197
+G1 X127.463 Y117.961 E.00197
+;WIDTH:0.41646
+G1 X127.618 Y117.933 E.00465
+;WIDTH:0.449999
+G1 X127.774 Y117.906 E.00509
+G1 X135.156 Y110.524 E.3357
+G1 X135.156 Y111.099 E.01849
+G1 X128.349 Y117.906 E.30955
+G1 X128.925 Y117.906 E.01852
+M73 P35 R6
+M73 Q35 S6
+G1 X135.156 Y111.675 E.28336
+G1 X135.156 Y112.251 E.01852
+G1 X129.501 Y117.906 E.25717
+G1 X130.076 Y117.906 E.01849
+G1 X135.156 Y112.826 E.23102
+G1 X135.156 Y113.402 E.01852
+G1 X130.652 Y117.906 E.20482
+G1 X131.228 Y117.906 E.01852
+G1 X135.156 Y113.978 E.17863
+G1 X135.156 Y114.554 E.01852
+G1 X131.804 Y117.906 E.15244
+G1 X132.379 Y117.906 E.01849
+G1 X135.156 Y115.129 E.12629
+G1 X135.156 Y115.705 E.01852
+G1 X132.955 Y117.906 E.10009
+G1 X133.531 Y117.906 E.01852
+G1 X135.156 Y116.281 E.0739
+G1 X135.156 Y116.856 E.01849
+G1 X134.106 Y117.906 E.04775
+G1 X134.567 Y118.068 E.01571
+;WIDTH:0.38292
+G1 X134.496 Y118.049 E.00197
+G1 X134.515 Y118.12 E.00197
+G1 X134.556 Y118.109 E.00114
+;WIDTH:0.41646
+G1 X134.619 Y118.007 E.00354
+;WIDTH:0.449999
+G1 X134.682 Y117.906 E.00383
+G1 X135.156 Y117.432 E.02156
+G1 X135.257 Y117.369 E.00383
+;WIDTH:0.41646
+G1 X135.359 Y117.306 E.00354
+;WIDTH:0.38292
+G1 X135.318 Y117.317 E.00114
+G1 X135.299 Y117.246 E.00197
+G1 X135.37 Y117.265 E.00197
+;LAYER_CHANGE
+;Z:1
+;HEIGHT:0.2
+;BEFORE_LAYER_CHANGE
+G92 E0.0
+;1
+
+
+G1 Z1 F10800
+;AFTER_LAYER_CHANGE
+;1
+G1 E-.6 F2100
+G1 X135.37 Y117.265 Z1.1 F10800
+G1 X127.048 Y91.76
+G1 Z1
+G1 E.6 F2100
+;TYPE:Perimeter
+;WIDTH:0.449999
+G1 F2700
+G1 X127.227 Y91.789 E.00583
+G1 X135.461 Y91.789 E.26478
+G1 X135.461 Y94.826 E.09766
+G1 X135.461 Y118.211 E.75198
+G1 X127.072 Y118.223 E.26976
+M73 P35 R5
+G1 X127.135 Y118.074 E.0052
+G1 X127.276 Y117.35 E.02372
+G1 X127.259 Y116.953 E.01278
+G1 X127.141 Y116.471 E.01596
+G1 X126.963 Y116.098 E.01329
+G1 X126.552 Y115.567 E.02159
+G1 X125.963 Y115.185 E.02257
+G1 X125.595 Y115.05 E.0126
+G1 X124.96 Y114.962 E.02061
+G1 X124.398 Y115.045 E.01827
+G1 X123.861 Y115.277 E.01881
+G1 X123.306 Y115.71 E.02264
+G1 X122.935 Y116.287 E.02206
+G1 X122.799 Y116.66 E.01277
+G1 X122.724 Y117.15 E.01594
+G1 X122.741 Y117.547 E.01278
+G1 X122.859 Y118.029 E.01596
+G1 X122.954 Y118.242 E.0075
+G1 X122.773 Y118.211 E.00591
+G1 X114.539 Y118.211 E.26478
+G1 X114.539 Y91.789 E.84963
+G1 X122.369 Y91.789 E.25178
+G1 X122.933 Y91.775 E.01814
+M73 Q35 S5
+G1 X122.768 Y92.256 E.01635
+G1 X122.723 Y92.838 E.01877
+G1 X122.833 Y93.487 E.02117
+G1 X123.126 Y94.059 E.02067
+G1 X123.511 Y94.477 E.01827
+G1 X124.123 Y94.862 E.02325
+G1 X124.671 Y94.996 E.01814
+G1 X125.505 Y94.981 E.02682
+G1 X126.167 Y94.709 E.02301
+G1 X126.468 Y94.493 E.01191
+G1 X126.8 Y94.148 E.0154
+G1 X127.005 Y93.836 E.012
+G1 X127.213 Y93.327 E.01768
+G1 X127.277 Y92.628 E.02257
+G1 X127.229 Y92.273 E.01152
+G1 X127.068 Y91.817 E.01555
+G1 X126.88 Y91.29 F10800
+;WIDTH:0.504861
+G1 F2700
+G1 X126.95 Y91.329 E.00292
+;WIDTH:0.474222
+G1 X127.227 Y91.382 E.00961
+;WIDTH:0.449999
+G1 X135.868 Y91.382 E.27786
+G1 X135.868 Y94.826 E.11075
+G1 X135.868 Y118.618 E.76506
+G1 X127.134 Y118.625 E.28085
+M73 P36 R5
+M73 Q36 S5
+;WIDTH:0.496017
+G1 X126.803 Y118.758 E.01277
+;WIDTH:0.49896
+G1 X126.388 Y119.131 E.0201
+G1 X125.955 Y119.389 E.01816
+;WIDTH:0.497914
+G1 X125.475 Y119.539 E.01807
+G1 X124.967 Y119.592 E.01836
+G1 X124.547 Y119.544 E.01519
+G1 X124.09 Y119.408 E.01714
+;WIDTH:0.495655
+G1 X123.651 Y119.161 E.01801
+G1 X123.303 Y118.858 E.0165
+;WIDTH:0.489381
+G1 X122.978 Y118.653 E.01355
+;WIDTH:0.449999
+G1 X122.773 Y118.618 E.00669
+G1 X114.132 Y118.618 E.27786
+G1 X114.132 Y91.382 E.87581
+G1 X122.654 Y91.382 E.27404
+;WIDTH:0.455921
+G1 X122.992 Y91.345 E.01109
+;WIDTH:0.492707
+G1 X123.203 Y91.235 E.00845
+G1 X123.627 Y90.848 E.0204
+;WIDTH:0.487334
+G1 X124.066 Y90.599 E.01772
+G1 X124.545 Y90.449 E.01762
+;WIDTH:0.488283
+G1 X125.058 Y90.409 E.0181
+;WIDTH:0.49498
+G1 X125.525 Y90.47 E.01682
+G1 X125.939 Y90.61 E.01561
+;WIDTH:0.49022
+G1 X126.397 Y90.872 E.01864
+;WIDTH:0.504861
+G1 X126.8 Y91.245 E.02004
+G1 X126.828 Y91.261 E.00118
+G1 X127.091 Y90.923 F10800
+;TYPE:External perimeter
+;WIDTH:0.449999
+G1 F1500
+G1 X127.227 Y90.975 E.00468
+G1 X136.275 Y90.975 E.29095
+G1 X136.275 Y94.826 E.12383
+G1 X136.275 Y119.025 E.77815
+G1 X127.227 Y119.025 E.29095
+G1 X127.091 Y119.077 E.00468
+G1 X126.624 Y119.499 E.02024
+G1 X126.105 Y119.794 E.0192
+G1 X125.535 Y119.972 E.0192
+G1 X124.938 Y120.023 E.01927
+G1 X124.434 Y119.965 E.01631
+G1 X123.896 Y119.795 E.01814
+G1 X123.376 Y119.499 E.01924
+G1 X122.909 Y119.077 E.02024
+G1 X122.773 Y119.025 E.00468
+G1 X113.725 Y119.025 E.29095
+G1 X113.725 Y90.975 E.90198
+G1 X122.773 Y90.975 E.29095
+G1 X122.909 Y90.923 E.00468
+M73 Q37 S5
+G1 X123.376 Y90.501 E.02024
+M73 P37 R5
+G1 X123.895 Y90.206 E.0192
+G1 X124.464 Y90.029 E.01916
+G1 X125.093 Y89.978 E.02029
+G1 X125.651 Y90.054 E.01811
+G1 X126.156 Y90.235 E.01725
+G1 X126.622 Y90.5 E.01724
+G1 X127.046 Y90.882 E.01835
+G1 X127.438 Y90.966 F10800
+G1 E-.6 F2100
+G1 Z1.1 F10800
+G1 X123.141 Y92.624
+G1 Z1
+G1 E.6 F2100
+;TYPE:Perimeter
+G1 F1500
+G1 X123.17 Y92.32 E.00982
+;WIDTH:0.455921
+G1 X123.366 Y91.815 E.01767
+;WIDTH:0.486405
+G1 X123.596 Y91.473 E.01444
+;WIDTH:0.486456
+G1 X123.905 Y91.2 E.01445
+G1 X124.266 Y91 E.01446
+;WIDTH:0.486236
+G1 X124.658 Y90.883 E.01433
+;WIDTH:0.488352
+G1 X125.095 Y90.858 E.0154
+G1 X125.649 Y90.967 E.01987
+;WIDTH:0.492083
+G1 X126.12 Y91.222 E.019
+;WIDTH:0.506138
+G1 X126.476 Y91.574 E.01832
+G1 X126.589 Y91.769 E.00825
+;WIDTH:0.478069
+G1 X126.702 Y91.963 E.00772
+;WIDTH:0.449999
+G1 X126.842 Y92.397 E.01466
+G1 X126.871 Y92.611 E.00694
+G1 X126.825 Y93.205 E.01916
+G1 X126.629 Y93.679 E.01649
+G1 X126.507 Y93.866 E.00718
+G1 X126.175 Y94.211 E.0154
+G1 X125.994 Y94.341 E.00717
+G1 X125.434 Y94.58 E.01958
+G1 X124.671 Y94.589 E.02454
+G1 X124.261 Y94.479 E.01365
+G1 X123.745 Y94.144 E.01978
+G1 X123.445 Y93.806 E.01453
+G1 X123.211 Y93.331 E.01703
+G1 X123.126 Y92.778 E.01799
+G1 X123.135 Y92.684 E.00304
+G1 X123.536 Y92.713 F10800
+;TYPE:External perimeter
+G1 F1500
+G1 X123.529 Y92.656 E.00185
+G1 X123.628 Y92.23 E.01406
+G1 X123.889 Y91.781 E.0167
+G1 X124.124 Y91.564 E.01029
+G1 X124.401 Y91.403 E.0103
+G1 X124.705 Y91.306 E.01026
+G1 X125.022 Y91.278 E.01023
+G1 X125.538 Y91.379 E.01691
+G1 X125.977 Y91.649 E.01657
+G1 X126.315 Y92.088 E.01782
+G1 X126.464 Y92.593 E.01693
+G1 X126.432 Y93.095 E.01618
+G1 X126.213 Y93.584 E.01723
+G1 X125.821 Y93.972 E.01774
+G1 X125.364 Y94.179 E.01613
+G1 X124.671 Y94.182 E.02228
+G1 X124.352 Y94.072 E.01085
+G1 X123.936 Y93.77 E.01653
+G1 X123.741 Y93.516 E.0103
+G1 X123.602 Y93.208 E.01087
+G1 X123.544 Y92.773 E.01411
+G1 X123.599 Y92.376 F10800
+G1 E-.6 F2100
+G1 Z1.1 F10800
+G1 X120.155 Y96.476
+G1 Z1
+G1 E.6 F2100
+;TYPE:Perimeter
+G1 F2700
+G1 X120.185 Y96.434 E.00166
+G1 X120.363 Y96.301 E.00715
+G1 X120.703 Y96.176 E.01165
+G1 X121.3 Y96.161 E.0192
+G1 X129.121 Y96.161 E.25149
+G1 X129.42 Y96.206 E.00972
+G1 X129.637 Y96.301 E.00762
+G1 X129.95 Y96.588 E.01366
+G1 X130.116 Y96.964 E.01322
+G1 X130.139 Y97.179 E.00695
+G1 X130.139 Y110.821 E.43868
+G1 X130.057 Y111.221 E.01313
+G1 X129.847 Y111.535 E.01215
+G1 X129.541 Y111.749 E.01201
+G1 X129.241 Y111.832 E.01001
+G1 X127.395 Y111.839 E.05936
+G1 X120.879 Y111.839 E.20953
+G1 X120.661 Y111.816 E.00705
+G1 X120.283 Y111.647 E.01331
+G1 X120.036 Y111.393 E.01139
+G1 X119.876 Y110.997 E.01373
+G1 X119.861 Y110.821 E.00568
+G1 X119.861 Y97.179 E.43868
+G1 X119.949 Y96.764 E.01364
+G1 X120.12 Y96.525 E.00945
+G1 X120.447 Y96.753 F10800
+G1 F2700
+G1 X120.462 Y96.732 E.00083
+G1 X120.699 Y96.595 E.0088
+G1 X121.3 Y96.568 E.01935
+G1 X129.121 Y96.568 E.25149
+G1 X129.431 Y96.652 E.01033
+G1 X129.619 Y96.824 E.00819
+G1 X129.718 Y97.05 E.00793
+G1 X129.732 Y97.179 E.00417
+G1 X129.732 Y110.821 E.43868
+G1 X129.683 Y111.061 E.00788
+G1 X129.557 Y111.25 E.0073
+G1 X129.373 Y111.378 E.00721
+G1 X129.121 Y111.432 E.00829
+G1 X127.395 Y111.432 E.0555
+G1 X120.879 Y111.432 E.20953
+G1 X120.627 Y111.378 E.00829
+G1 X120.443 Y111.25 E.00721
+G1 X120.317 Y111.061 E.0073
+G1 X120.268 Y110.821 E.00788
+G1 X120.268 Y97.179 E.43868
+G1 X120.321 Y96.93 E.00819
+G1 X120.412 Y96.802 E.00505
+G1 X120.74 Y97.03 F10800
+;TYPE:External perimeter
+G1 F1500
+G1 X120.879 Y96.975 E.00481
+G1 X129.121 Y96.975 E.26503
+G1 X129.26 Y97.03 E.00481
+G1 X129.325 Y97.179 E.00523
+G1 X129.325 Y110.821 E.43868
+G1 X129.267 Y110.964 E.00496
+G1 X129.121 Y111.025 E.00509
+G1 X127.395 Y111.025 E.0555
+G1 X120.879 Y111.025 E.20953
+G1 X120.733 Y110.964 E.00509
+G1 X120.675 Y110.821 E.00496
+G1 X120.675 Y97.179 E.43868
+G1 X120.716 Y97.085 E.0033
+M73 P38 R5
+M73 Q38 S5
+G1 X121.103 Y96.982 F10800
+G1 E-.6 F2100
+G1 Z1.1 F10800
+G1 X126.867 Y117.125
+G1 Z1
+G1 E.6 F2100
+;TYPE:Perimeter
+G1 F1500
+G1 X126.874 Y117.288 E.00525
+G1 X126.759 Y117.918 E.02059
+;WIDTH:0.491176
+G1 X126.477 Y118.436 E.02088
+G1 X126.309 Y118.616 E.00872
+;WIDTH:0.48555
+G1 X125.848 Y118.947 E.01984
+;WIDTH:0.497914
+G1 X125.353 Y119.101 E.01863
+G1 X124.959 Y119.144 E.01424
+;WIDTH:0.491115
+G1 X124.376 Y119.042 E.02095
+;WIDTH:0.495655
+G1 X123.881 Y118.77 E.0202
+G1 X123.632 Y118.56 E.01165
+;WIDTH:0.489381
+G1 X123.262 Y117.962 E.0248
+;WIDTH:0.449999
+G1 X123.136 Y117.45 E.01696
+G1 X123.126 Y117.212 E.00766
+G1 X123.255 Y116.551 E.02166
+G1 X123.515 Y116.116 E.0163
+G1 X123.701 Y115.898 E.00921
+G1 X124.266 Y115.519 E.02188
+G1 X124.649 Y115.403 E.01287
+G1 X125.056 Y115.376 E.01312
+G1 X125.531 Y115.452 E.01547
+G1 X125.752 Y115.533 E.00757
+G1 X126.275 Y115.865 E.01992
+G1 X126.635 Y116.338 E.01911
+G1 X126.746 Y116.568 E.00821
+G1 X126.864 Y117.05 E.01596
+G1 X126.864 Y117.065 E.00048
+G1 X126.451 Y117.087 F10800
+;TYPE:External perimeter
+G1 F1500
+G1 X126.468 Y117.146 E.00197
+G1 X126.396 Y117.716 E.01847
+G1 X126.112 Y118.214 E.01843
+G1 X125.658 Y118.567 E.01849
+G1 X125.104 Y118.718 E.01846
+G1 X124.534 Y118.646 E.01847
+G1 X124.035 Y118.361 E.01848
+G1 X123.683 Y117.907 E.01847
+G1 X123.532 Y117.354 E.01843
+G1 X123.604 Y116.784 E.01847
+G1 X123.863 Y116.328 E.01686
+G1 X123.942 Y116.227 E.00412
+G1 X124.397 Y115.905 E.01792
+G1 X124.699 Y115.807 E.01021
+G1 X124.992 Y115.778 E.00947
+G1 X125.541 Y115.881 E.01796
+G1 X125.998 Y116.163 E.01727
+G1 X126.307 Y116.579 E.01666
+G1 X126.435 Y117.029 E.01504
+G1 X126.427 Y117.429 F10800
+G1 E-.6 F2100
+G1 Z1.1 F10800
+G1 X114.877 Y117.795
+G1 Z1
+G1 E.6 F2100
+;TYPE:Solid infill
+;WIDTH:0.548766
+G1 F4800
+G1 X114.833 Y117.84 E.00251
+G1 X114.849 Y117.901 E.00252
+G1 X114.91 Y117.917 E.00252
+G1 X114.955 Y117.873 E.00251
+G1 X114.939 Y117.811 E.00256
+;WIDTH:0.449999
+G1 X115.589 Y117.905 E.02112
+G1 X114.844 Y117.161 E.03386
+G1 X114.773 Y117.068 E.00376
+;WIDTH:0.41646
+G1 X114.701 Y116.975 E.00347
+;WIDTH:0.38292
+G1 X114.712 Y117.016 E.00114
+G1 X114.641 Y117.035 E.00197
+G1 X114.66 Y116.964 E.00197
+;WIDTH:0.449999
+G1 X114.844 Y116.586 E.01352
+G1 X116.164 Y117.905 E.06001
+G1 X116.74 Y117.905 E.01852
+G1 X114.844 Y116.01 E.0862
+G1 X114.844 Y115.434 E.01852
+G1 X117.316 Y117.905 E.11239
+G1 X117.891 Y117.905 E.01849
+G1 X114.844 Y114.858 E.13857
+G1 X114.844 Y114.283 E.01849
+G1 X118.467 Y117.905 E.16474
+G1 X119.043 Y117.905 E.01852
+G1 X114.844 Y113.707 E.19093
+G1 X114.844 Y113.131 E.01852
+G1 X119.618 Y117.905 E.2171
+G1 X120.194 Y117.905 E.01852
+G1 X114.844 Y112.556 E.24327
+G1 X114.844 Y111.98 E.01852
+G1 X120.77 Y117.905 E.26947
+G1 X121.345 Y117.905 E.01849
+G1 X114.844 Y111.404 E.29564
+G1 X114.844 Y110.829 E.01849
+G1 X121.921 Y117.905 E.32181
+G1 X122.699 Y118.05 E.02545
+;WIDTH:0.38292
+G1 X122.679 Y117.933 E.00319
+;WIDTH:0.41646
+G1 X122.588 Y117.919 E.00272
+;WIDTH:0.449999
+G1 X122.496 Y117.905 E.00299
+G1 X114.844 Y110.253 E.34798
+G1 X114.844 Y109.677 E.01852
+G1 X122.427 Y117.26 E.34484
+G1 X122.479 Y116.736 E.01693
+G1 X114.844 Y109.101 E.34721
+G1 X114.844 Y108.526 E.01849
+G1 X122.599 Y116.281 E.35267
+G1 X122.808 Y115.913 E.01361
+G1 X114.844 Y107.95 E.36215
+G1 X114.844 Y107.374 E.01852
+G1 X123.035 Y115.565 E.37249
+G1 X123.332 Y115.286 E.0131
+G1 X114.844 Y106.799 E.38598
+G1 X114.844 Y106.223 E.01852
+G1 X119.568 Y110.946 E.21481
+G1 X119.728 Y111.234 E.01059
+;WIDTH:0.38292
+G1 X120.052 Y111.648 E.01412
+G1 X120.47 Y111.974 E.01424
+;WIDTH:0.41646
+G1 X120.614 Y112.055 E.00488
+M73 P39 R5
+M73 Q39 S5
+;WIDTH:0.449999
+G1 X120.758 Y112.136 E.00531
+G1 X123.664 Y115.043 E.13218
+G1 X124.041 Y114.844 E.01371
+G1 X121.334 Y112.137 E.1231
+G1 X121.91 Y112.137 E.01852
+G1 X124.482 Y114.709 E.11696
+G1 X125.011 Y114.662 E.01708
+G1 X122.486 Y112.138 E.1148
+G1 X123.063 Y112.138 E.01855
+G1 X125.687 Y114.763 E.11935
+G1 X125.846 Y114.84 E.00568
+;WIDTH:0.41646
+G1 X126.005 Y114.916 E.0052
+;WIDTH:0.38292
+G1 X126.016 Y114.958 E.00117
+G1 X125.945 Y114.977 E.00197
+G1 X125.964 Y114.905 E.002
+G1 E-.6 F2100
+G1 X125.964 Y114.905 Z1.1 F10800
+G1 X127.541 Y117.794
+G1 Z1
+G1 E.6 F2100
+;WIDTH:0.549954
+G1 F4800
+G1 X127.497 Y117.839 E.00252
+G1 X127.513 Y117.9 E.00253
+G1 X127.574 Y117.917 E.00254
+G1 X127.619 Y117.872 E.00255
+G1 X127.603 Y117.811 E.00253
+;WIDTH:0.449999
+G1 X127.572 Y117.224 E.0189
+G1 X128.327 Y117.972 E.03418
+;WIDTH:0.41646
+G1 X128.399 Y118.038 E.00288
+;WIDTH:0.38292
+G1 X128.38 Y118.109 E.00197
+G1 X128.451 Y118.09 E.00197
+G1 X128.44 Y118.049 E.00114
+;WIDTH:0.449999
+G1 X129.107 Y117.984 E.02155
+;WIDTH:0.38292
+G1 X129.088 Y118.055 E.00197
+G1 X129.159 Y118.036 E.00197
+G1 X129.148 Y117.995 E.00114
+;WIDTH:0.41646
+G1 X128.989 Y117.95 E.00488
+;WIDTH:0.449999
+G1 X128.83 Y117.906 E.00531
+G1 X127.475 Y116.551 E.06162
+G1 X127.389 Y116.407 E.00539
+;WIDTH:0.41646
+G1 X127.302 Y116.263 E.00496
+;WIDTH:0.38292
+G1 X127.278 Y116.354 E.00253
+G1 X127.294 Y116.502 E.004
+G1 E-.6 F2100
+G1 X127.294 Y116.502 Z1.1 F10800
+G1 X129.406 Y117.906
+G1 Z1
+G1 E.6 F2100
+;WIDTH:0.449999
+G1 F4800
+G1 X123.639 Y112.139 E.26226
+G1 X124.215 Y112.14 E.01852
+G1 X129.981 Y117.906 E.26221
+G1 X130.557 Y117.906 E.01852
+G1 X124.792 Y112.14 E.26219
+G1 X125.368 Y112.141 E.01852
+G1 X131.133 Y117.906 E.26217
+G1 X131.708 Y117.906 E.01849
+G1 X125.944 Y112.141 E.26215
+G1 X126.52 Y112.142 E.01852
+G1 X132.284 Y117.906 E.26212
+G1 X132.86 Y117.906 E.01852
+G1 X127.097 Y112.142 E.2621
+G1 X127.673 Y112.143 E.01852
+G1 X133.435 Y117.906 E.26205
+G1 X134.011 Y117.906 E.01852
+G1 X128.249 Y112.144 E.26203
+G1 X128.825 Y112.144 E.01852
+G1 X134.587 Y117.906 E.26203
+G1 X135.156 Y117.899 E.0183
+G1 X129.375 Y112.118 E.2629
+G1 X129.789 Y111.957 E.01428
+G1 X135.156 Y117.323 E.24405
+G1 X135.156 Y116.747 E.01852
+G1 X130.107 Y111.698 E.22961
+G1 X130.334 Y111.35 E.01336
+G1 X135.156 Y116.172 E.21928
+G1 X135.156 Y115.596 E.01852
+G1 X130.439 Y110.879 E.21451
+G1 X130.444 Y110.309 E.01833
+G1 X135.156 Y115.02 E.21426
+G1 X135.156 Y114.444 E.01852
+G1 X130.444 Y109.733 E.21426
+G1 X130.444 Y109.158 E.01849
+G1 X135.156 Y113.869 E.21426
+G1 X135.156 Y113.293 E.01852
+G1 X130.444 Y108.582 E.21426
+G1 X130.444 Y108.006 E.01852
+G1 X135.156 Y112.717 E.21426
+G1 X135.156 Y112.142 E.01849
+G1 X130.444 Y107.431 E.21426
+G1 X130.444 Y106.855 E.01852
+G1 X135.156 Y111.566 E.21426
+G1 X135.156 Y110.99 E.01852
+G1 X130.444 Y106.279 E.21426
+G1 X130.444 Y105.703 E.01852
+G1 X135.156 Y110.415 E.21428
+G1 X135.156 Y109.839 E.01852
+G1 X130.444 Y105.128 E.21426
+G1 X130.444 Y104.552 E.01852
+M73 P40 R5
+M73 Q40 S5
+G1 X135.156 Y109.263 E.21426
+G1 X135.156 Y108.687 E.01852
+G1 X130.444 Y103.976 E.21426
+G1 X130.444 Y103.401 E.01849
+G1 X135.156 Y108.112 E.21426
+G1 X135.156 Y107.536 E.01852
+G1 X130.444 Y102.825 E.21426
+G1 X130.444 Y102.249 E.01852
+G1 X135.156 Y106.96 E.21426
+G1 X135.156 Y106.385 E.01849
+G1 X130.444 Y101.674 E.21426
+G1 X130.444 Y101.098 E.01852
+G1 X135.156 Y105.809 E.21426
+G1 X135.156 Y105.233 E.01852
+G1 X130.444 Y100.522 E.21426
+G1 X130.444 Y99.947 E.01849
+G1 X135.156 Y104.658 E.21426
+G1 X135.156 Y104.082 E.01852
+G1 X130.444 Y99.371 E.21426
+G1 X130.444 Y98.795 E.01852
+G1 X135.156 Y103.506 E.21426
+G1 X135.156 Y102.93 E.01852
+G1 X130.444 Y98.219 E.21426
+G1 X130.444 Y97.644 E.01849
+G1 X135.156 Y102.355 E.21426
+G1 X135.156 Y101.779 E.01852
+G1 X130.432 Y97.055 E.21483
+G1 X130.351 Y96.912 E.00528
+;WIDTH:0.41646
+G1 X130.27 Y96.768 E.00488
+;WIDTH:0.38292
+G1 X130.213 Y96.672 E.003
+G1 E-.6 F2100
+G1 X130.213 Y96.672 Z1.1 F10800
+G1 X119.556 Y110.358
+G1 Z1
+G1 E.6 F2100
+;WIDTH:0.449999
+G1 F4800
+G1 X114.844 Y105.647 E.21426
+G1 X114.844 Y105.072 E.01849
+G1 X119.556 Y109.783 E.21426
+G1 X119.556 Y109.207 E.01852
+G1 X114.844 Y104.496 E.21426
+G1 X114.844 Y103.92 E.01852
+G1 X119.556 Y108.631 E.21426
+G1 X119.556 Y108.056 E.01849
+G1 X114.844 Y103.345 E.21426
+G1 X114.844 Y102.769 E.01852
+G1 X119.556 Y107.48 E.21426
+G1 X119.556 Y106.904 E.01852
+G1 X114.844 Y102.193 E.21426
+G1 X114.844 Y101.617 E.01852
+G1 X119.556 Y106.328 E.21426
+G1 X119.556 Y105.753 E.01849
+G1 X114.844 Y101.042 E.21426
+G1 X114.844 Y100.466 E.01852
+G1 X119.556 Y105.177 E.21426
+G1 X119.556 Y104.601 E.01852
+G1 X114.844 Y99.89 E.21426
+G1 X114.844 Y99.315 E.01849
+G1 X119.556 Y104.026 E.21426
+G1 X119.556 Y103.45 E.01852
+G1 X114.844 Y98.739 E.21426
+G1 X114.844 Y98.163 E.01852
+G1 X119.556 Y102.874 E.21426
+G1 X119.556 Y102.299 E.01849
+G1 X114.844 Y97.588 E.21426
+G1 X114.844 Y97.012 E.01852
+G1 X119.556 Y101.723 E.21426
+G1 X119.556 Y101.147 E.01852
+G1 X114.844 Y96.436 E.21426
+G1 X114.844 Y95.86 E.01852
+M73 P41 R5
+M73 Q41 S5
+G1 X119.556 Y100.572 E.21428
+G1 X119.556 Y99.996 E.01852
+G1 X114.844 Y95.285 E.21426
+G1 X114.844 Y94.709 E.01852
+G1 X119.556 Y99.42 E.21426
+G1 X119.556 Y98.844 E.01852
+G1 X114.844 Y94.133 E.21426
+G1 X114.844 Y93.558 E.01849
+G1 X119.556 Y98.269 E.21426
+G1 X119.556 Y97.693 E.01852
+G1 X114.844 Y92.982 E.21426
+G1 X114.844 Y92.406 E.01852
+G1 X119.561 Y97.123 E.21451
+G1 X119.666 Y96.652 E.01552
+G1 X115.108 Y92.094 E.20728
+G1 X114.949 Y92.037 E.00543
+;WIDTH:0.41646
+G1 X114.789 Y91.979 E.00502
+;WIDTH:0.38292
+G1 X114.8 Y92.02 E.00114
+G1 X114.729 Y92.039 E.00197
+G1 X114.748 Y91.968 E.00197
+G1 X115.684 Y92.094 F10800
+;WIDTH:0.449999
+G1 F4800
+G1 X119.894 Y96.304 E.19145
+G1 X120.205 Y96.04 E.01312
+G1 X116.26 Y92.094 E.17943
+G1 X116.835 Y92.094 E.01849
+G1 X120.623 Y95.882 E.17226
+G1 X121.172 Y95.856 E.01767
+G1 X117.411 Y92.094 E.17106
+G1 X117.987 Y92.094 E.01852
+G1 X121.748 Y95.856 E.17106
+G1 X122.324 Y95.856 E.01852
+G1 X118.563 Y92.094 E.17106
+G1 X119.138 Y92.094 E.01849
+G1 X122.899 Y95.856 E.17106
+G1 X123.475 Y95.856 E.01852
+G1 X119.714 Y92.094 E.17106
+G1 X120.29 Y92.094 E.01852
+G1 X123.925 Y95.73 E.16533
+G1 X124.002 Y95.179 E.01789
+;WIDTH:0.524032
+G1 X124.383 Y95.56 E.02048
+G1 X124.441 Y95.654 E.0042
+G1 X124.402 Y95.819 E.00644
+G1 X125.885 Y95.838 E.05637
+;WIDTH:0.487027
+G1 X126.445 Y95.857 E.01966
+;WIDTH:0.449999
+G1 X129.224 Y95.848 E.08936
+G1 X127.315 Y93.939 E.08681
+G1 X127.014 Y94.366 E.0168
+G1 X126.667 Y94.722 E.01599
+G1 X126.278 Y94.994 E.01526
+;WIDTH:0.48168
+G1 X125.943 Y95.147 E.01276
+;WIDTH:0.51336
+G1 X125.608 Y95.299 E.01367
+;WIDTH:0.524054
+G1 X125.324 Y95.338 E.0109
+G1 X124.675 Y95.338 E.02467
+G1 X124.199 Y95.23 E.01855
+G1 X123.375 Y94.685 F10800
+;WIDTH:0.38292
+G1 F4800
+G1 X122.924 Y94.211 E.01757
+;WIDTH:0.41646
+G1 X122.809 Y94.067 E.00544
+;WIDTH:0.449999
+G1 X122.694 Y93.923 E.00593
+G1 X120.865 Y92.094 E.08318
+G1 X121.441 Y92.094 E.01852
+G1 X122.455 Y93.108 E.04611
+G1 X122.525 Y93.232 E.00458
+;WIDTH:0.41646
+G1 X122.596 Y93.355 E.00419
+;WIDTH:0.38292
+G1 X122.577 Y93.426 E.00197
+G1 X122.648 Y93.407 E.00197
+G1 X122.637 Y93.366 E.00114
+G1 X122.422 Y92.5 F10800
+;WIDTH:0.449999
+G1 F4800
+G1 X122.017 Y92.094 E.01844
+G1 X121.954 Y91.993 E.00383
+;WIDTH:0.41646
+G1 X121.891 Y91.891 E.00354
+;WIDTH:0.38292
+G1 X121.902 Y91.932 E.00114
+G1 X121.83 Y91.951 E.002
+G1 X121.849 Y91.88 E.00197
+G1 E-.6 F2100
+G1 X121.849 Y91.88 Z1.1 F10800
+G1 X126.237 Y95.45
+G1 Z1
+G1 E.6 F2100
+;WIDTH:0.449999
+G1 F4800
+G1 X128.251 Y95.45 E.06476
+G1 X127.37 Y94.569 E.04006
+G1 X126.988 Y94.98 E.01804
+G1 X126.557 Y95.302 E.0173
+G1 X126.422 Y95.364 E.00478
+G1 E-.6 F2100
+G1 X126.422 Y95.364 Z1.1 F10800
+G1 X127.466 Y93.514
+G1 Z1
+G1 E.6 F2100
+G1 F4800
+G1 X135.156 Y101.203 E.34969
+G1 X135.156 Y100.628 E.01849
+G1 X127.565 Y93.038 E.34518
+G1 X127.559 Y92.455 E.01875
+G1 X135.156 Y100.052 E.34548
+G1 X135.156 Y99.476 E.01852
+G1 X127.774 Y92.094 E.3357
+G1 X127.61 Y92.049 E.00547
+;WIDTH:0.41646
+G1 X127.445 Y92.003 E.00505
+;WIDTH:0.38292
+G1 X127.456 Y92.044 E.00114
+G1 X127.385 Y92.063 E.00197
+G1 X127.404 Y91.992 E.00197
+G1 X128.349 Y92.094 F10800
+;WIDTH:0.449999
+G1 F4800
+G1 X135.156 Y98.901 E.30955
+G1 X135.156 Y98.325 E.01852
+G1 X128.925 Y92.094 E.28336
+G1 X129.501 Y92.094 E.01852
+G1 X135.156 Y97.749 E.25717
+G1 X135.156 Y97.174 E.01849
+G1 X130.076 Y92.094 E.23102
+M73 P42 R5
+M73 Q42 S5
+G1 X130.652 Y92.094 E.01852
+G1 X135.156 Y96.598 E.20482
+G1 X135.156 Y96.022 E.01852
+G1 X131.228 Y92.094 E.17863
+G1 X131.804 Y92.094 E.01852
+G1 X135.156 Y95.446 E.15244
+G1 X135.156 Y94.871 E.01849
+G1 X132.379 Y92.094 E.12629
+G1 X132.955 Y92.094 E.01852
+G1 X135.156 Y94.295 E.10009
+G1 X135.156 Y93.719 E.01852
+G1 X133.531 Y92.094 E.0739
+G1 X134.106 Y92.094 E.01849
+G1 X135.156 Y93.144 E.04775
+G1 X135.156 Y92.568 E.01852
+G1 X134.682 Y92.094 E.02156
+G1 X134.619 Y91.993 E.00383
+;WIDTH:0.41646
+G1 X134.556 Y91.891 E.00354
+;WIDTH:0.38292
+G1 X134.567 Y91.932 E.00114
+G1 X134.496 Y91.951 E.00197
+G1 X134.515 Y91.88 E.00197
+;LAYER_CHANGE
+;Z:1.2
+;HEIGHT:0.2
+;BEFORE_LAYER_CHANGE
+G92 E0.0
+;1.2
+
+
+G1 Z1.2 F10800
+;AFTER_LAYER_CHANGE
+;1.2
+G1 E-.6 F2100
+G1 X134.515 Y91.88 Z1.3 F10800
+G1 X127.048 Y91.761
+G1 Z1.2
+G1 E.6 F2100
+;TYPE:Perimeter
+;WIDTH:0.449999
+G1 F2700
+G1 X127.227 Y91.789 E.00583
+G1 X135.461 Y91.789 E.26478
+G1 X135.461 Y94.826 E.09766
+G1 X135.461 Y118.211 E.75198
+G1 X127.072 Y118.223 E.26976
+G1 X127.135 Y118.074 E.0052
+G1 X127.276 Y117.35 E.02372
+G1 X127.259 Y116.953 E.01278
+G1 X127.141 Y116.471 E.01596
+G1 X126.963 Y116.097 E.01332
+G1 X126.552 Y115.567 E.02157
+G1 X125.963 Y115.185 E.02257
+G1 X125.597 Y115.05 E.01254
+G1 X124.963 Y114.962 E.02058
+G1 X124.549 Y115.006 E.01339
+G1 X123.86 Y115.277 E.02381
+G1 X123.535 Y115.505 E.01277
+G1 X123.192 Y115.863 E.01594
+G1 X123.015 Y116.117 E.00996
+G1 X122.799 Y116.66 E.01879
+G1 X122.724 Y117.151 E.01597
+G1 X122.741 Y117.547 E.01275
+G1 X122.859 Y118.029 E.01596
+G1 X122.954 Y118.242 E.0075
+G1 X122.773 Y118.211 E.00591
+G1 X114.539 Y118.211 E.26478
+G1 X114.539 Y91.789 E.84963
+G1 X122.925 Y91.782 E.26966
+G1 X122.769 Y92.254 E.01599
+G1 X122.723 Y92.835 E.01874
+G1 X122.833 Y93.486 E.02123
+G1 X123.125 Y94.057 E.02062
+G1 X123.51 Y94.476 E.0183
+G1 X124.125 Y94.863 E.02337
+G1 X124.671 Y94.996 E.01807
+G1 X125.505 Y94.981 E.02682
+G1 X126.168 Y94.708 E.02306
+G1 X126.469 Y94.493 E.01189
+G1 X126.798 Y94.15 E.01528
+G1 X127.003 Y93.839 E.01198
+G1 X127.213 Y93.326 E.01782
+G1 X127.277 Y92.628 E.02254
+G1 X127.229 Y92.271 E.01158
+G1 X127.068 Y91.818 E.01546
+G1 X126.879 Y91.29 F10800
+;WIDTH:0.504607
+G1 F2700
+G1 X126.947 Y91.328 E.00284
+;WIDTH:0.474807
+G1 X127.227 Y91.382 E.00973
+;WIDTH:0.449999
+G1 X135.868 Y91.382 E.27786
+G1 X135.868 Y94.826 E.11075
+G1 X135.868 Y118.618 E.76506
+G1 X127.134 Y118.625 E.28085
+;WIDTH:0.49602
+G1 X126.803 Y118.758 E.01277
+;WIDTH:0.498958
+G1 X126.388 Y119.131 E.0201
+G1 X125.955 Y119.39 E.01818
+;WIDTH:0.497908
+G1 X125.475 Y119.539 E.01806
+G1 X124.973 Y119.591 E.01814
+;WIDTH:0.495252
+G1 X124.474 Y119.529 E.01797
+G1 X124.047 Y119.384 E.01611
+;WIDTH:0.496485
+G1 X123.654 Y119.164 E.01614
+G1 X123.303 Y118.858 E.01668
+;WIDTH:0.48937
+G1 X122.978 Y118.653 E.01355
+;WIDTH:0.449999
+G1 X122.773 Y118.618 E.00669
+G1 X114.132 Y118.618 E.27786
+G1 X114.132 Y91.382 E.87581
+G1 X122.656 Y91.382 E.2741
+M73 P43 R5
+M73 Q43 S5
+;WIDTH:0.455995
+G1 X122.993 Y91.344 E.01107
+;WIDTH:0.49271
+G1 X123.204 Y91.234 E.00845
+G1 X123.627 Y90.848 E.02035
+;WIDTH:0.487309
+G1 X124.066 Y90.599 E.01772
+G1 X124.545 Y90.449 E.01762
+;WIDTH:0.488659
+G1 X125.065 Y90.409 E.01836
+;WIDTH:0.495113
+G1 X125.525 Y90.47 E.01658
+G1 X125.94 Y90.61 E.01564
+;WIDTH:0.490157
+G1 X126.397 Y90.872 E.01861
+;WIDTH:0.504607
+G1 X126.8 Y91.245 E.02003
+G1 X126.827 Y91.26 E.00113
+G1 X127.091 Y90.923 F10800
+;TYPE:External perimeter
+;WIDTH:0.449999
+G1 F1500
+G1 X127.227 Y90.975 E.00468
+G1 X136.275 Y90.975 E.29095
+G1 X136.275 Y94.826 E.12383
+G1 X136.275 Y119.025 E.77815
+G1 X127.227 Y119.025 E.29095
+G1 X127.091 Y119.077 E.00468
+G1 X126.624 Y119.499 E.02024
+G1 X126.105 Y119.794 E.0192
+G1 X125.535 Y119.972 E.0192
+G1 X124.94 Y120.023 E.0192
+G1 X124.348 Y119.946 E.0192
+G1 X123.845 Y119.765 E.01719
+G1 X123.378 Y119.5 E.01727
+G1 X122.909 Y119.077 E.02031
+G1 X122.773 Y119.025 E.00468
+G1 X113.725 Y119.025 E.29095
+G1 X113.725 Y90.975 E.90198
+G1 X122.773 Y90.975 E.29095
+G1 X122.909 Y90.923 E.00468
+G1 X123.376 Y90.501 E.02024
+G1 X123.895 Y90.206 E.0192
+G1 X124.464 Y90.029 E.01916
+G1 X125.101 Y89.979 E.02055
+G1 X125.651 Y90.054 E.01785
+G1 X126.155 Y90.235 E.01722
+G1 X126.622 Y90.5 E.01727
+G1 X127.046 Y90.882 E.01835
+G1 X127.437 Y90.966 F10800
+G1 E-.6 F2100
+G1 Z1.3 F10800
+G1 X123.141 Y92.622
+G1 Z1.2
+G1 E.6 F2100
+;TYPE:Perimeter
+G1 F1500
+G1 X123.171 Y92.318 E.00982
+;WIDTH:0.455995
+G1 X123.366 Y91.814 E.01763
+;WIDTH:0.486401
+G1 X123.597 Y91.472 E.01446
+G1 X123.906 Y91.199 E.01444
+G1 X124.267 Y90.999 E.01446
+;WIDTH:0.486179
+G1 X124.658 Y90.883 E.01428
+;WIDTH:0.488808
+G1 X125.092 Y90.858 E.01531
+G1 X125.649 Y90.967 E.01999
+;WIDTH:0.492113
+G1 X126.12 Y91.221 E.01899
+;WIDTH:0.505963
+G1 X126.477 Y91.574 E.01836
+M73 P44 R5
+G1 X126.589 Y91.767 E.00816
+;WIDTH:0.477981
+G1 X126.701 Y91.96 E.00767
+M73 Q44 S5
+;WIDTH:0.449999
+G1 X126.842 Y92.397 E.01477
+G1 X126.871 Y92.611 E.00694
+G1 X126.825 Y93.205 E.01916
+G1 X126.628 Y93.681 E.01657
+G1 X126.505 Y93.868 E.0072
+G1 X126.176 Y94.211 E.01528
+G1 X125.995 Y94.34 E.00715
+G1 X125.434 Y94.58 E.01962
+G1 X124.671 Y94.589 E.02454
+G1 X124.263 Y94.48 E.01358
+G1 X123.744 Y94.142 E.01992
+G1 X123.444 Y93.804 E.01453
+G1 X123.211 Y93.33 E.01698
+G1 X123.126 Y92.776 E.01802
+G1 X123.135 Y92.682 E.00304
+G1 X123.549 Y92.811 F10800
+;TYPE:External perimeter
+G1 F1500
+G1 X123.529 Y92.655 E.00506
+G1 X123.627 Y92.231 E.01399
+G1 X123.89 Y91.781 E.01676
+G1 X124.125 Y91.564 E.01029
+G1 X124.402 Y91.403 E.0103
+G1 X124.706 Y91.305 E.01027
+G1 X125.02 Y91.278 E.01013
+G1 X125.539 Y91.379 E.017
+G1 X125.977 Y91.649 E.01655
+G1 X126.313 Y92.085 E.0177
+G1 X126.464 Y92.593 E.01704
+G1 X126.432 Y93.095 E.01618
+G1 X126.212 Y93.586 E.0173
+G1 X125.822 Y93.971 E.01762
+G1 X125.364 Y94.179 E.01618
+G1 X124.671 Y94.182 E.02228
+G1 X124.353 Y94.072 E.01082
+G1 X123.935 Y93.769 E.0166
+G1 X123.74 Y93.514 E.01032
+G1 X123.601 Y93.207 E.01084
+G1 X123.557 Y92.871 E.0109
+G1 X123.581 Y92.471 F10800
+G1 E-.6 F2100
+G1 Z1.3 F10800
+G1 X120.81 Y96.173
+G1 Z1.2
+G1 E.6 F2100
+;TYPE:Perimeter
+G1 F2700
+G1 X121.295 Y96.161 E.0156
+G1 X129.121 Y96.161 E.25166
+G1 X129.42 Y96.206 E.00972
+G1 X129.637 Y96.301 E.00762
+G1 X129.95 Y96.588 E.01366
+G1 X130.116 Y96.964 E.01322
+G1 X130.139 Y97.179 E.00695
+G1 X130.139 Y110.821 E.43868
+G1 X130.057 Y111.221 E.01313
+G1 X129.847 Y111.535 E.01215
+G1 X129.541 Y111.749 E.01201
+G1 X129.241 Y111.832 E.01001
+G1 X128.018 Y111.839 E.03933
+G1 X120.879 Y111.839 E.22956
+G1 X120.661 Y111.816 E.00705
+G1 X120.283 Y111.647 E.01331
+G1 X120.036 Y111.393 E.01139
+G1 X119.876 Y110.997 E.01373
+G1 X119.861 Y110.821 E.00568
+G1 X119.861 Y97.179 E.43868
+G1 X119.949 Y96.764 E.01364
+G1 X120.185 Y96.434 E.01305
+G1 X120.363 Y96.301 E.00715
+G1 X120.703 Y96.176 E.01165
+G1 X120.75 Y96.175 E.00151
+G1 X120.841 Y96.588 F10800
+G1 F2700
+G1 X121.295 Y96.568 E.01461
+G1 X129.121 Y96.568 E.25166
+G1 X129.431 Y96.652 E.01033
+G1 X129.619 Y96.824 E.00819
+G1 X129.718 Y97.05 E.00793
+G1 X129.732 Y97.179 E.00417
+G1 X129.732 Y110.821 E.43868
+G1 X129.683 Y111.061 E.00788
+G1 X129.557 Y111.25 E.0073
+G1 X129.373 Y111.378 E.00721
+G1 X129.121 Y111.432 E.00829
+G1 X128.018 Y111.432 E.03547
+G1 X120.879 Y111.432 E.22956
+G1 X120.627 Y111.378 E.00829
+G1 X120.443 Y111.25 E.00721
+G1 X120.317 Y111.061 E.0073
+G1 X120.268 Y110.821 E.00788
+G1 X120.268 Y97.179 E.43868
+G1 X120.321 Y96.93 E.00819
+G1 X120.462 Y96.732 E.00782
+G1 X120.699 Y96.595 E.0088
+G1 X120.781 Y96.591 E.00264
+G1 X120.879 Y96.975 F10800
+;TYPE:External perimeter
+G1 F1500
+G1 X129.121 Y96.975 E.26503
+G1 X129.26 Y97.03 E.00481
+G1 X129.325 Y97.179 E.00523
+G1 X129.325 Y110.821 E.43868
+G1 X129.267 Y110.964 E.00496
+G1 X129.121 Y111.025 E.00509
+G1 X128.018 Y111.025 E.03547
+G1 X120.879 Y111.025 E.22956
+G1 X120.733 Y110.964 E.00509
+G1 X120.675 Y110.821 E.00496
+G1 X120.675 Y97.179 E.43868
+G1 X120.74 Y97.03 E.00523
+G1 X120.823 Y96.997 E.00287
+G1 X121.222 Y96.978 F10800
+G1 E-.6 F2100
+G1 Z1.3 F10800
+G1 X126.867 Y117.125
+G1 Z1.2
+M73 P45 R5
+M73 Q45 S5
+G1 E.6 F2100
+;TYPE:Perimeter
+G1 F1500
+G1 X126.874 Y117.288 E.00525
+G1 X126.759 Y117.918 E.02059
+;WIDTH:0.491192
+G1 X126.477 Y118.436 E.02088
+G1 X126.309 Y118.616 E.00872
+;WIDTH:0.485545
+G1 X125.848 Y118.947 E.01984
+;WIDTH:0.497908
+G1 X125.353 Y119.101 E.01863
+G1 X124.959 Y119.144 E.01424
+;WIDTH:0.490262
+G1 X124.458 Y119.065 E.01792
+;WIDTH:0.495403
+G1 X124.184 Y118.954 E.01057
+G1 X123.722 Y118.652 E.01973
+;WIDTH:0.480516
+G1 X123.355 Y118.148 E.02155
+;WIDTH:0.449999
+G1 X123.254 Y117.932 E.00767
+G1 X123.137 Y117.451 E.01592
+G1 X123.126 Y117.213 E.00766
+G1 X123.255 Y116.551 E.02169
+G1 X123.486 Y116.145 E.01502
+G1 X123.829 Y115.786 E.01597
+G1 X124.024 Y115.65 E.00764
+G1 X124.619 Y115.407 E.02067
+G1 X125.06 Y115.376 E.01422
+G1 X125.532 Y115.452 E.01537
+G1 X125.752 Y115.533 E.00754
+G1 X126.275 Y115.865 E.01992
+G1 X126.635 Y116.338 E.01911
+G1 X126.746 Y116.568 E.00821
+G1 X126.864 Y117.05 E.01596
+G1 X126.864 Y117.065 E.00048
+G1 X126.421 Y116.981 F10800
+;TYPE:External perimeter
+G1 F1500
+G1 X126.468 Y117.146 E.00552
+G1 X126.396 Y117.716 E.01847
+G1 X126.112 Y118.215 E.01846
+G1 X125.658 Y118.567 E.01847
+G1 X125.104 Y118.718 E.01846
+G1 X124.603 Y118.657 E.01623
+G1 X124.407 Y118.587 E.00669
+G1 X123.977 Y118.308 E.01648
+G1 X123.652 Y117.845 E.01819
+G1 X123.532 Y117.354 E.01625
+G1 X123.604 Y116.784 E.01847
+G1 X123.78 Y116.426 E.01283
+G1 X124.188 Y116.022 E.01846
+G1 X124.689 Y115.808 E.01752
+G1 X124.995 Y115.778 E.00989
+G1 X125.54 Y115.881 E.01784
+G1 X125.998 Y116.163 E.0173
+G1 X126.307 Y116.579 E.01666
+G1 X126.405 Y116.923 E.0115
+G1 X126.436 Y117.322 F10800
+G1 E-.6 F2100
+G1 Z1.3 F10800
+G1 X114.972 Y94.368
+G1 Z1.2
+G1 E.6 F2100
+;TYPE:Solid infill
+;WIDTH:0.575686
+G1 F4800
+G1 X114.925 Y94.321 E.0028
+G1 X114.86 Y94.338 E.00283
+G1 X114.843 Y94.403 E.00283
+G1 X114.89 Y94.45 E.0028
+G1 X114.954 Y94.433 E.00279
+;WIDTH:0.449999
+G1 X115.635 Y94.323 E.02218
+G1 X114.778 Y95.186 E.03911
+;WIDTH:0.41646
+G1 X114.712 Y95.258 E.00288
+;WIDTH:0.38292
+G1 X114.641 Y95.239 E.00197
+G1 X114.66 Y95.31 E.00197
+G1 X114.701 Y95.299 E.00114
+;WIDTH:0.449999
+G1 X114.844 Y95.689 E.01336
+G1 X116.21 Y94.323 E.06212
+G1 X116.786 Y94.323 E.01852
+G1 X114.844 Y96.264 E.08829
+G1 X114.844 Y96.84 E.01852
+G1 X117.362 Y94.323 E.11449
+G1 X117.938 Y94.323 E.01852
+G1 X114.844 Y97.416 E.14068
+G1 X114.844 Y97.991 E.01849
+G1 X118.513 Y94.323 E.16683
+G1 X119.089 Y94.323 E.01852
+G1 X114.844 Y98.567 E.19302
+G1 X114.844 Y99.143 E.01852
+G1 X119.665 Y94.323 E.21922
+G1 X120.24 Y94.323 E.01849
+G1 X114.844 Y99.719 E.24539
+G1 X114.844 Y100.294 E.01849
+G1 X120.816 Y94.323 E.27156
+G1 X121.392 Y94.323 E.01852
+G1 X114.844 Y100.87 E.29775
+G1 E-.6 F2100
+G1 X114.844 Y100.87 Z1.3 F10800
+G1 X122.955 Y94.323
+G1 Z1.2
+G1 E.6 F2100
+G1 F4800
+G1 X121.823 Y94.323 E.0364
+G1 X121.823 Y94.467 E.00463
+G1 X120.235 Y96.038 E.07183
+;WIDTH:0.418886
+G1 X120.187 Y96.077 E.00184
+;WIDTH:0.449834
+G1 X120.523 Y95.907 E.0121
+;WIDTH:0.449999
+G1 X120.883 Y95.856 E.01169
+G1 X123.969 Y95.856 E.09923
+;WIDTH:0.490197
+G1 X124.269 Y95.836 E.01062
+;WIDTH:0.530394
+G1 X124.569 Y95.816 E.01158
+G1 X125.324 Y95.82 E.02907
+;WIDTH:0.524055
+G1 X125.886 Y95.838 E.02137
+;WIDTH:0.487027
+G1 X126.448 Y95.857 E.01973
+;WIDTH:0.449999
+G1 X129.181 Y95.857 E.08788
+G1 X129.532 Y95.923 E.01148
+G1 X129.826 Y96.064 E.01048
+G1 X130.219 Y96.447 E.01765
+G1 X130.391 Y96.837 E.01371
+G1 X132.906 Y94.323 E.11435
+G1 X127.028 Y94.323 E.18901
+G1 X126.667 Y94.722 E.0173
+G1 X126.28 Y94.993 E.01519
+;WIDTH:0.481656
+G1 X125.944 Y95.146 E.0128
+;WIDTH:0.513313
+G1 X125.608 Y95.299 E.01372
+;WIDTH:0.524055
+G1 X125.324 Y95.338 E.0109
+G1 X124.68 Y95.338 E.02448
+G1 X124.365 Y95.249 E.01244
+;WIDTH:0.48699
+G1 X124.05 Y95.159 E.01149
+;WIDTH:0.449999
+G1 X123.35 Y94.736 E.0263
+G1 X123.096 Y94.47 E.01183
+G1 X122.778 Y94.73 E.01321
+G1 X122.111 Y94.73 E.02145
+G1 X121.417 Y95.449 E.03213
+G1 X123.725 Y95.449 E.07422
+G1 X123.135 Y95.082 E.02234
+G1 X122.923 Y94.873 E.00957
+G1 X122.773 Y94.981 E.00594
+;WIDTH:0.402459
+G1 X122.622 Y95.089 E.00527
+;WIDTH:0.354918
+G1 X122.285 Y95.089 E.00831
+G1 E-.6 F2100
+G1 X122.285 Y95.089 Z1.3 F10800
+G1 X120.187 Y96.077
+G1 Z1.2
+G1 E.6 F2100
+;WIDTH:0.41322
+G1 F4800
+G1 X119.947 Y96.307 E.00972
+;WIDTH:0.42427
+G1 X119.821 Y96.451 E.00576
+;WIDTH:0.449999
+G1 X119.695 Y96.595 E.00615
+G1 X114.844 Y101.446 E.2206
+G1 X114.844 Y102.021 E.01849
+G1 X119.556 Y97.31 E.21426
+G1 X119.556 Y97.886 E.01852
+G1 X114.844 Y102.597 E.21426
+G1 X114.844 Y103.173 E.01852
+G1 X119.556 Y98.462 E.21426
+G1 X119.556 Y99.037 E.01849
+G1 X114.844 Y103.748 E.21426
+G1 X114.844 Y104.324 E.01852
+G1 X119.556 Y99.613 E.21426
+G1 X119.556 Y100.189 E.01852
+M73 P46 R5
+M73 Q46 S5
+G1 X114.844 Y104.9 E.21426
+G1 X114.844 Y105.476 E.01852
+G1 X119.556 Y100.764 E.21428
+G1 X119.556 Y101.34 E.01852
+G1 X114.844 Y106.051 E.21426
+G1 X114.844 Y106.627 E.01852
+G1 X119.556 Y101.916 E.21426
+G1 X119.556 Y102.492 E.01852
+G1 X114.844 Y107.203 E.21426
+G1 X114.844 Y107.778 E.01849
+G1 X119.556 Y103.067 E.21426
+G1 X119.556 Y103.643 E.01852
+G1 X114.844 Y108.354 E.21426
+G1 X114.844 Y108.93 E.01852
+M73 P46 R4
+G1 X119.556 Y104.219 E.21426
+G1 X119.556 Y104.794 E.01849
+G1 X114.844 Y109.505 E.21426
+G1 X114.844 Y110.081 E.01852
+G1 X119.556 Y105.37 E.21426
+G1 X119.556 Y105.946 E.01852
+G1 X114.844 Y110.657 E.21426
+G1 X114.844 Y111.232 E.01849
+G1 X119.556 Y106.521 E.21426
+G1 X119.556 Y107.097 E.01852
+G1 X114.844 Y111.808 E.21426
+G1 X114.844 Y112.384 E.01852
+G1 X119.556 Y107.673 E.21426
+G1 X119.556 Y108.249 E.01852
+G1 X114.844 Y112.96 E.21426
+G1 X114.844 Y113.535 E.01849
+G1 X119.556 Y108.824 E.21426
+G1 X119.556 Y109.4 E.01852
+G1 X114.844 Y114.111 E.21426
+G1 X114.844 Y114.687 E.01852
+G1 X119.556 Y109.976 E.21426
+M73 Q46 S4
+G1 X119.556 Y110.551 E.01849
+G1 X114.844 Y115.262 E.21426
+G1 X114.77 Y115.812 E.01785
+;WIDTH:0.38292
+G1 X114.729 Y115.823 E.00114
+G1 X114.71 Y115.752 E.00197
+G1 X114.781 Y115.771 E.00197
+;WIDTH:0.41646
+G1 X114.893 Y115.724 E.00358
+;WIDTH:0.449999
+G1 X115.005 Y115.677 E.00391
+G1 X119.585 Y111.098 E.20826
+G1 X119.752 Y111.507 E.01421
+G1 X115.581 Y115.677 E.18966
+G1 X116.157 Y115.677 E.01852
+G1 X120.015 Y111.818 E.17547
+G1 X120.37 Y112.04 E.01346
+G1 X116.732 Y115.677 E.16542
+G1 X117.308 Y115.677 E.01852
+G1 X120.844 Y112.141 E.1608
+G1 X121.419 Y112.142 E.01849
+G1 X117.884 Y115.677 E.16076
+G1 X118.459 Y115.677 E.01849
+G1 X121.995 Y112.142 E.16078
+G1 X122.57 Y112.142 E.01849
+G1 X119.035 Y115.677 E.16076
+G1 X119.611 Y115.677 E.01852
+G1 X123.146 Y112.142 E.16076
+G1 X123.721 Y112.142 E.01849
+G1 X120.187 Y115.677 E.16073
+G1 X120.762 Y115.677 E.01849
+G1 X124.297 Y112.143 E.16073
+G1 X124.872 Y112.143 E.01849
+G1 X121.338 Y115.677 E.16071
+G1 X121.914 Y115.677 E.01852
+G1 X125.448 Y112.143 E.16071
+G1 X126.023 Y112.143 E.01849
+G1 X122.489 Y115.677 E.16071
+G1 X122.432 Y115.759 E.00321
+;WIDTH:0.41646
+G1 X122.374 Y115.84 E.00294
+;WIDTH:0.38292
+G1 X122.303 Y115.821 E.00197
+G1 X122.322 Y115.892 E.00197
+G1 X122.363 Y115.881 E.00114
+;WIDTH:0.449999
+G1 X122.981 Y115.712 E.0206
+;WIDTH:0.38292
+G1 X123.462 Y115.231 E.01827
+;WIDTH:0.41646
+G1 X123.606 Y115.111 E.00553
+;WIDTH:0.449999
+G1 X123.75 Y114.992 E.00601
+G1 X126.599 Y112.144 E.12954
+G1 X127.174 Y112.144 E.01849
+G1 X124.627 Y114.691 E.11583
+G1 X124.505 Y114.768 E.00464
+;WIDTH:0.41646
+G1 X124.383 Y114.845 E.00426
+;WIDTH:0.38292
+G1 X124.311 Y114.826 E.002
+G1 X124.33 Y114.897 E.00197
+G1 X124.372 Y114.886 E.00117
+G1 X125.205 Y114.689 F10800
+;WIDTH:0.449999
+G1 F4800
+M73 P47 R4
+G1 X127.75 Y112.144 E.11574
+G1 X128.325 Y112.144 E.01849
+M73 Q47 S4
+G1 X125.702 Y114.768 E.11931
+G1 X126.121 Y114.924 E.01438
+G1 X128.901 Y112.144 E.12642
+G1 X129.557 Y112.064 E.02125
+G1 X126.479 Y115.141 E.13995
+G1 E-.6 F2100
+G1 X126.479 Y115.141 Z1.3 F10800
+G1 X130.444 Y97.36
+G1 Z1.2
+G1 E.6 F2100
+G1 F4800
+G1 X133.481 Y94.323 E.13811
+G1 X134.057 Y94.323 E.01852
+G1 X130.444 Y97.935 E.16428
+G1 X130.444 Y98.511 E.01852
+G1 X134.633 Y94.323 E.19048
+G1 X135.186 Y94.17 E.01845
+;WIDTH:0.38292
+G1 X135.29 Y94.175 E.0028
+;WIDTH:0.41646
+G1 X135.223 Y94.275 E.00355
+;WIDTH:0.449999
+G1 X135.156 Y94.376 E.0039
+G1 X130.444 Y99.087 E.21426
+G1 X130.444 Y99.662 E.01849
+G1 X135.156 Y94.951 E.21426
+G1 X135.156 Y95.527 E.01852
+G1 X130.444 Y100.238 E.21426
+G1 X130.444 Y100.814 E.01852
+G1 X135.156 Y96.103 E.21426
+G1 X135.156 Y96.678 E.01849
+G1 X130.444 Y101.389 E.21426
+G1 X130.444 Y101.965 E.01852
+G1 X135.156 Y97.254 E.21426
+G1 X135.156 Y97.83 E.01852
+G1 X130.444 Y102.541 E.21426
+G1 X130.444 Y103.117 E.01852
+G1 X135.156 Y98.405 E.21428
+G1 X135.156 Y98.981 E.01852
+G1 X130.444 Y103.692 E.21426
+G1 X130.444 Y104.268 E.01852
+G1 X135.156 Y99.557 E.21426
+G1 X135.156 Y100.133 E.01852
+G1 X130.444 Y104.844 E.21426
+G1 X130.444 Y105.419 E.01849
+G1 X135.156 Y100.708 E.21426
+G1 X135.156 Y101.284 E.01852
+G1 X130.444 Y105.995 E.21426
+G1 X130.444 Y106.571 E.01852
+G1 X135.156 Y101.86 E.21426
+G1 X135.156 Y102.435 E.01849
+G1 X130.444 Y107.146 E.21426
+G1 X130.444 Y107.722 E.01852
+G1 X135.156 Y103.011 E.21426
+G1 X135.156 Y103.587 E.01852
+G1 X130.444 Y108.298 E.21426
+G1 X130.444 Y108.874 E.01852
+G1 X135.156 Y104.162 E.21428
+G1 X135.156 Y104.738 E.01852
+G1 X130.444 Y109.449 E.21426
+G1 X130.444 Y110.025 E.01852
+G1 X135.156 Y105.314 E.21426
+G1 X135.156 Y105.89 E.01852
+G1 X130.444 Y110.601 E.21426
+G1 X129.845 Y111.846 F10800
+;WIDTH:0.38292
+G1 F4800
+G1 X130.147 Y111.543 E.01149
+;WIDTH:0.41646
+G1 X130.256 Y111.399 E.00533
+;WIDTH:0.449999
+G1 X130.366 Y111.255 E.00583
+G1 X135.156 Y106.465 E.21783
+G1 X135.257 Y106.402 E.00383
+;WIDTH:0.41646
+G1 X135.359 Y106.339 E.00354
+;WIDTH:0.38292
+G1 X135.318 Y106.35 E.00114
+G1 X135.299 Y106.279 E.00197
+G1 X135.37 Y106.298 E.00197
+;WIDTH:0.449999
+G1 X135.316 Y106.742 E.01438
+;WIDTH:0.38292
+G1 X135.245 Y106.723 E.00197
+G1 X135.264 Y106.794 E.00197
+G1 X135.305 Y106.783 E.00114
+;WIDTH:0.41646
+G1 X135.23 Y106.912 E.0044
+;WIDTH:0.449999
+G1 X135.156 Y107.041 E.00478
+G1 X126.804 Y115.392 E.37979
+G1 X127.095 Y115.677 E.0131
+G1 X135.156 Y107.617 E.36656
+G1 X135.156 Y108.192 E.01849
+G1 X127.671 Y115.677 E.34039
+G1 X128.246 Y115.677 E.01849
+M73 P48 R4
+M73 Q48 S4
+G1 X135.156 Y108.768 E.31422
+G1 X135.156 Y109.344 E.01852
+G1 X128.822 Y115.677 E.28802
+G1 X129.398 Y115.677 E.01852
+G1 X135.156 Y109.919 E.26185
+G1 X135.156 Y110.495 E.01852
+G1 X129.973 Y115.677 E.23568
+G1 X130.549 Y115.677 E.01852
+G1 X135.156 Y111.071 E.20948
+G1 X135.156 Y111.646 E.01849
+G1 X131.125 Y115.677 E.18331
+G1 X131.7 Y115.677 E.01849
+G1 X135.156 Y112.222 E.15714
+G1 X135.156 Y112.798 E.01852
+G1 X132.276 Y115.677 E.13095
+G1 X132.852 Y115.677 E.01852
+G1 X135.156 Y113.374 E.10475
+G1 X135.156 Y113.949 E.01849
+G1 X133.428 Y115.677 E.07858
+G1 X134.003 Y115.677 E.01849
+G1 X135.156 Y114.525 E.05241
+G1 X135.37 Y114.933 E.01481
+;WIDTH:0.38292
+G1 X135.299 Y114.914 E.00197
+G1 X135.318 Y114.985 E.00197
+G1 X135.359 Y114.974 E.00114
+;WIDTH:0.41646
+G1 X135.257 Y115.038 E.00355
+;WIDTH:0.449999
+G1 X135.156 Y115.101 E.00383
+G1 X134.579 Y115.677 E.02622
+G1 X135.191 Y115.713 E.01971
+;WIDTH:0.450526
+G1 X135.142 Y115.726 E.00163
+G1 X135.106 Y115.69 E.00164
+G1 X135.119 Y115.641 E.00163
+G1 X135.168 Y115.628 E.00163
+G1 X135.204 Y115.664 E.00164
+G1 E-.6 F2100
+G1 X135.204 Y115.664 Z1.3 F10800
+G1 X129.354 Y95.098
+G1 Z1.2
+G1 E.6 F2100
+;WIDTH:0.401476
+G1 F4800
+G1 X129.605 Y95.142 E.00722
+;WIDTH:0.431167
+G1 X129.856 Y95.186 E.00782
+G1 X130.364 Y95.466 E.01779
+G1 X130.5 Y95.59 E.00564
+G1 X130.963 Y95.127 E.02008
+G1 X129.868 Y95.127 E.03358
+G1 X129.557 Y95.109 E.00955
+;WIDTH:0.395241
+G1 X129.354 Y95.098 E.00566
+;WIDTH:0.371784
+G1 X129.182 Y95.09 E.00447
+;WIDTH:0.356454
+G1 X127.373 Y95.09 E.0448
+;WIDTH:0.403014
+G1 X127.292 Y94.91 E.00561
+;WIDTH:0.449999
+G1 X127.211 Y94.73 E.00635
+G1 X126.905 Y95.053 E.01431
+G1 X126.432 Y95.37 E.01831
+G1 X126.236 Y95.45 E.00681
+G1 X129.182 Y95.45 E.09473
+G1 X129.696 Y95.55 E.01684
+G1 X130.101 Y95.763 E.01471
+G1 X130.499 Y96.154 E.01794
+G1 X131.923 Y94.73 E.06476
+G1 X127.415 Y94.73 E.14496
+;LAYER_CHANGE
+;Z:1.4
+;HEIGHT:0.2
+;BEFORE_LAYER_CHANGE
+G92 E0.0
+;1.4
+
+
+G1 Z1.4 F10800
+;AFTER_LAYER_CHANGE
+;1.4
+G1 E-.6 F2100
+G1 X127.415 Y94.73 Z1.5 F10800
+G1 X127.049 Y91.762
+G1 Z1.4
+G1 E.6 F2100
+;TYPE:Perimeter
+G1 F2700
+G1 X127.227 Y91.789 E.00579
+G1 X135.461 Y91.789 E.26478
+G1 X135.461 Y94.826 E.09766
+G1 X135.461 Y118.211 E.75198
+G1 X127.072 Y118.223 E.26976
+G1 X127.135 Y118.074 E.0052
+G1 X127.276 Y117.35 E.02372
+G1 X127.259 Y116.953 E.01278
+G1 X127.141 Y116.471 E.01596
+G1 X126.963 Y116.097 E.01332
+G1 X126.552 Y115.567 E.02157
+G1 X125.963 Y115.185 E.02257
+G1 X125.598 Y115.051 E.0125
+G1 X124.966 Y114.961 E.02053
+G1 X124.549 Y115.006 E.01349
+G1 X123.86 Y115.277 E.02381
+G1 X123.535 Y115.505 E.01277
+G1 X123.192 Y115.863 E.01594
+G1 X122.984 Y116.186 E.01235
+G1 X122.799 Y116.661 E.01639
+G1 X122.73 Y117.052 E.01277
+G1 X122.741 Y117.548 E.01595
+G1 X122.827 Y117.935 E.01275
+G1 X122.964 Y118.246 E.01093
+G1 X122.773 Y118.211 E.00624
+G1 X114.539 Y118.211 E.26478
+G1 X114.539 Y91.789 E.84963
+G1 X122.927 Y91.78 E.26973
+G1 X122.769 Y92.252 E.01601
+G1 X122.723 Y92.833 E.01874
+G1 X122.832 Y93.485 E.02126
+G1 X123.123 Y94.055 E.02058
+M73 P49 R4
+G1 X123.509 Y94.475 E.01834
+M73 Q49 S4
+G1 X124.127 Y94.864 E.02348
+G1 X124.671 Y94.996 E.018
+G1 X125.505 Y94.981 E.02682
+G1 X126.17 Y94.707 E.02313
+G1 X126.47 Y94.492 E.01187
+G1 X126.797 Y94.152 E.01517
+G1 X127.001 Y93.842 E.01193
+G1 X127.213 Y93.326 E.01794
+G1 X127.277 Y92.628 E.02254
+G1 X127.229 Y92.27 E.01161
+G1 X127.069 Y91.818 E.01542
+G1 X126.878 Y91.289 F10800
+;WIDTH:0.504446
+G1 F2700
+G1 X126.944 Y91.327 E.00278
+;WIDTH:0.475448
+G1 X127.227 Y91.382 E.00985
+;WIDTH:0.449999
+G1 X135.868 Y91.382 E.27786
+G1 X135.868 Y94.826 E.11075
+G1 X135.868 Y118.618 E.76506
+G1 X127.134 Y118.625 E.28085
+;WIDTH:0.496019
+G1 X126.802 Y118.758 E.0128
+;WIDTH:0.498954
+G1 X126.388 Y119.13 E.02005
+G1 X125.955 Y119.389 E.01818
+;WIDTH:0.487378
+G1 X125.475 Y119.544 E.01771
+;WIDTH:0.498007
+G1 X124.974 Y119.588 E.01808
+G1 X124.468 Y119.531 E.01831
+;WIDTH:0.497616
+G1 X124.033 Y119.381 E.01653
+G1 X123.596 Y119.122 E.01825
+;WIDTH:0.496792
+G1 X123.211 Y118.77 E.0187
+G1 X122.991 Y118.654 E.00892
+;WIDTH:0.457181
+G1 X122.773 Y118.618 E.00723
+;WIDTH:0.449999
+G1 X114.132 Y118.618 E.27786
+G1 X114.132 Y91.382 E.87581
+G1 X122.658 Y91.382 E.27416
+;WIDTH:0.456099
+G1 X122.994 Y91.344 E.01104
+;WIDTH:0.492565
+G1 X123.205 Y91.233 E.00847
+G1 X123.648 Y90.836 E.02113
+;WIDTH:0.487276
+G1 X124.089 Y90.591 E.01771
+G1 X124.57 Y90.447 E.01762
+;WIDTH:0.489087
+G1 X125.072 Y90.41 E.01774
+;WIDTH:0.495243
+G1 X125.525 Y90.47 E.01633
+G1 X125.941 Y90.61 E.01568
+;WIDTH:0.490119
+G1 X126.398 Y90.873 E.01863
+;WIDTH:0.504446
+G1 X126.8 Y91.245 E.01997
+G1 X126.826 Y91.26 E.00109
+G1 X127.091 Y90.923 F10800
+;TYPE:External perimeter
+;WIDTH:0.449999
+G1 F1500
+G1 X127.227 Y90.975 E.00468
+G1 X136.275 Y90.975 E.29095
+G1 X136.275 Y94.826 E.12383
+G1 X136.275 Y119.025 E.77815
+G1 X127.227 Y119.025 E.29095
+G1 X127.091 Y119.077 E.00468
+G1 X126.624 Y119.499 E.02024
+G1 X126.105 Y119.794 E.0192
+G1 X125.535 Y119.972 E.0192
+G1 X124.94 Y120.023 E.0192
+G1 X124.347 Y119.946 E.01923
+G1 X123.853 Y119.775 E.01681
+G1 X123.377 Y119.499 E.01769
+G1 X122.923 Y119.09 E.01965
+G1 X122.773 Y119.025 E.00526
+G1 X113.725 Y119.025 E.29095
+G1 X113.725 Y90.975 E.90198
+G1 X122.773 Y90.975 E.29095
+M73 P50 R4
+M73 Q50 S4
+G1 X122.909 Y90.923 E.00468
+G1 X123.376 Y90.501 E.02024
+G1 X123.895 Y90.206 E.0192
+G1 X124.464 Y90.029 E.01916
+G1 X125.108 Y89.979 E.02077
+G1 X125.651 Y90.054 E.01763
+G1 X126.156 Y90.235 E.01725
+G1 X126.622 Y90.5 E.01724
+G1 X127.046 Y90.882 E.01835
+G1 X127.437 Y90.966 F10800
+G1 E-.6 F2100
+G1 Z1.5 F10800
+G1 X123.141 Y92.621
+G1 Z1.4
+G1 E.6 F2100
+;TYPE:Perimeter
+G1 F1500
+G1 X123.171 Y92.316 E.00986
+;WIDTH:0.456099
+G1 X123.367 Y91.812 E.01765
+;WIDTH:0.486247
+G1 X123.598 Y91.471 E.01442
+G1 X123.8 Y91.282 E.00969
+;WIDTH:0.487215
+G1 X124.236 Y91.01 E.01804
+G1 X124.659 Y90.883 E.0155
+;WIDTH:0.489275
+G1 X125.089 Y90.857 E.01519
+G1 X125.65 Y90.967 E.02016
+;WIDTH:0.492146
+G1 X126.12 Y91.221 E.01896
+;WIDTH:0.505871
+G1 X126.478 Y91.575 E.01841
+G1 X126.588 Y91.766 E.00806
+;WIDTH:0.477935
+G1 X126.699 Y91.956 E.00756
+;WIDTH:0.449999
+G1 X126.842 Y92.396 E.01488
+G1 X126.871 Y92.611 E.00698
+G1 X126.825 Y93.205 E.01916
+G1 X126.626 Y93.684 E.01668
+G1 X126.503 Y93.87 E.00717
+G1 X126.176 Y94.21 E.01517
+G1 X125.997 Y94.339 E.00709
+G1 X125.434 Y94.58 E.01969
+G1 X124.671 Y94.589 E.02454
+G1 X124.264 Y94.481 E.01354
+G1 X123.743 Y94.141 E.02001
+G1 X123.443 Y93.802 E.01456
+G1 X123.211 Y93.328 E.01697
+G1 X123.126 Y92.774 E.01802
+G1 X123.135 Y92.68 E.00304
+G1 X123.563 Y92.913 F10800
+;TYPE:External perimeter
+G1 F1500
+G1 X123.529 Y92.653 E.00843
+G1 X123.627 Y92.232 E.0139
+G1 X123.862 Y91.813 E.01545
+G1 X124.091 Y91.59 E.01028
+G1 X124.403 Y91.402 E.01171
+G1 X124.707 Y91.305 E.01026
+G1 X125.017 Y91.278 E.01001
+G1 X125.539 Y91.38 E.0171
+G1 X125.977 Y91.649 E.01653
+G1 X126.312 Y92.082 E.0176
+G1 X126.464 Y92.593 E.01714
+G1 X126.432 Y93.095 E.01618
+G1 X126.21 Y93.588 E.01739
+G1 X125.823 Y93.971 E.01751
+G1 X125.364 Y94.179 E.0162
+G1 X124.671 Y94.182 E.02228
+G1 X124.355 Y94.073 E.01075
+G1 X123.933 Y93.767 E.01676
+G1 X123.739 Y93.513 E.01028
+G1 X123.6 Y93.205 E.01087
+G1 X123.57 Y92.972 E.00755
+G1 X123.562 Y92.572 F10800
+G1 E-.6 F2100
+G1 Z1.5 F10800
+G1 X120.81 Y96.173
+G1 Z1.4
+G1 E.6 F2100
+;TYPE:Perimeter
+G1 F2700
+G1 X121.29 Y96.161 E.01544
+G1 X129.121 Y96.161 E.25182
+G1 X129.42 Y96.206 E.00972
+G1 X129.637 Y96.301 E.00762
+G1 X129.95 Y96.588 E.01366
+G1 X130.116 Y96.964 E.01322
+G1 X130.139 Y97.179 E.00695
+G1 X130.139 Y110.821 E.43868
+G1 X130.057 Y111.221 E.01313
+G1 X129.847 Y111.535 E.01215
+G1 X129.541 Y111.749 E.01201
+G1 X129.241 Y111.832 E.01001
+G1 X127.395 Y111.839 E.05936
+G1 X120.879 Y111.839 E.20953
+G1 X120.665 Y111.816 E.00692
+G1 X120.283 Y111.647 E.01343
+G1 X120.036 Y111.393 E.01139
+G1 X119.876 Y110.997 E.01373
+G1 X119.861 Y110.821 E.00568
+G1 X119.861 Y97.179 E.43868
+G1 X119.949 Y96.764 E.01364
+G1 X120.185 Y96.434 E.01305
+G1 X120.363 Y96.301 E.00715
+G1 X120.703 Y96.176 E.01165
+G1 X120.75 Y96.175 E.00151
+G1 X120.841 Y96.588 F10800
+G1 F2700
+G1 X121.29 Y96.568 E.01445
+G1 X129.121 Y96.568 E.25182
+G1 X129.431 Y96.652 E.01033
+G1 X129.619 Y96.824 E.00819
+G1 X129.718 Y97.05 E.00793
+G1 X129.732 Y97.179 E.00417
+G1 X129.732 Y110.821 E.43868
+G1 X129.683 Y111.061 E.00788
+G1 X129.557 Y111.25 E.0073
+G1 X129.373 Y111.378 E.00721
+G1 X129.121 Y111.432 E.00829
+G1 X127.395 Y111.432 E.0555
+G1 X120.879 Y111.432 E.20953
+G1 X120.628 Y111.378 E.00826
+G1 X120.443 Y111.25 E.00723
+G1 X120.317 Y111.061 E.0073
+G1 X120.268 Y110.821 E.00788
+G1 X120.268 Y97.179 E.43868
+G1 X120.321 Y96.93 E.00819
+G1 X120.462 Y96.732 E.00782
+G1 X120.699 Y96.595 E.0088
+G1 X120.781 Y96.591 E.00264
+G1 X120.879 Y96.975 F10800
+;TYPE:External perimeter
+G1 F1500
+G1 X129.121 Y96.975 E.26503
+G1 X129.26 Y97.03 E.00481
+G1 X129.325 Y97.179 E.00523
+G1 X129.325 Y110.821 E.43868
+G1 X129.267 Y110.964 E.00496
+M73 P51 R4
+M73 Q51 S4
+G1 X129.121 Y111.025 E.00509
+G1 X127.395 Y111.025 E.0555
+G1 X120.879 Y111.025 E.20953
+G1 X120.733 Y110.964 E.00509
+G1 X120.675 Y110.821 E.00496
+G1 X120.675 Y97.179 E.43868
+G1 X120.74 Y97.03 E.00523
+G1 X120.823 Y96.997 E.00287
+G1 X121.222 Y96.978 F10800
+G1 E-.6 F2100
+G1 Z1.5 F10800
+G1 X126.867 Y117.125
+G1 Z1.4
+G1 E.6 F2100
+;TYPE:Perimeter
+G1 F1500
+G1 X126.874 Y117.288 E.00525
+G1 X126.759 Y117.918 E.02059
+;WIDTH:0.491191
+G1 X126.477 Y118.436 E.02088
+G1 X126.309 Y118.616 E.00872
+;WIDTH:0.485547
+G1 X125.848 Y118.947 E.01984
+;WIDTH:0.487292
+G1 X125.374 Y119.113 E.01763
+G1 X124.793 Y119.131 E.0204
+;WIDTH:0.490774
+G1 X124.551 Y119.09 E.00868
+G1 X124.003 Y118.865 E.02096
+;WIDTH:0.496792
+G1 X123.52 Y118.438 E.02311
+G1 X123.25 Y117.886 E.02203
+;WIDTH:0.449999
+G1 X123.148 Y117.539 E.01163
+G1 X123.137 Y117.043 E.01595
+G1 X123.179 Y116.808 E.00768
+G1 X123.361 Y116.339 E.01618
+G1 X123.486 Y116.145 E.00742
+G1 X123.829 Y115.786 E.01597
+G1 X124.024 Y115.65 E.00764
+G1 X124.619 Y115.407 E.02067
+G1 X125.064 Y115.376 E.01434
+G1 X125.533 Y115.452 E.01528
+G1 X125.752 Y115.533 E.00751
+G1 X126.275 Y115.866 E.01994
+G1 X126.635 Y116.338 E.01909
+G1 X126.746 Y116.568 E.00821
+G1 X126.864 Y117.05 E.01596
+G1 X126.864 Y117.065 E.00048
+G1 X126.39 Y116.872 F10800
+;TYPE:External perimeter
+G1 F1500
+G1 X126.468 Y117.146 E.00916
+G1 X126.396 Y117.716 E.01847
+G1 X126.112 Y118.215 E.01846
+G1 X125.658 Y118.567 E.01847
+G1 X125.28 Y118.695 E.01283
+G1 X124.784 Y118.706 E.01595
+G1 X124.243 Y118.512 E.01848
+G1 X123.818 Y118.127 E.01844
+G1 X123.572 Y117.607 E.0185
+G1 X123.544 Y117.034 E.01845
+G1 X123.738 Y116.493 E.01848
+G1 X124.123 Y116.068 E.01844
+G1 X124.643 Y115.822 E.0185
+G1 X124.999 Y115.778 E.01153
+G1 X125.541 Y115.881 E.01774
+G1 X125.998 Y116.164 E.01728
+G1 X126.306 Y116.579 E.01662
+G1 X126.374 Y116.814 E.00787
+G1 X126.444 Y117.208 F10800
+G1 E-.6 F2100
+G1 Z1.5 F10800
+G1 X114.89 Y116.671
+G1 Z1.4
+G1 E.6 F2100
+;TYPE:Solid infill
+;WIDTH:0.575692
+G1 F4800
+G1 X114.843 Y116.718 E.0028
+G1 X114.86 Y116.782 E.00279
+G1 X114.925 Y116.799 E.00283
+G1 X114.972 Y116.752 E.0028
+G1 X114.954 Y116.688 E.0028
+;WIDTH:0.449999
+G1 X115.635 Y116.798 E.02218
+G1 X114.844 Y116.008 E.03595
+G1 X114.773 Y115.914 E.00379
+;WIDTH:0.41646
+G1 X114.701 Y115.821 E.00347
+;WIDTH:0.38292
+G1 X114.712 Y115.862 E.00114
+G1 X114.641 Y115.881 E.00197
+G1 X114.66 Y115.81 E.00197
+;WIDTH:0.449999
+G1 X114.844 Y115.432 E.01352
+G1 X116.21 Y116.798 E.06212
+G1 X116.786 Y116.798 E.01852
+G1 X114.844 Y114.856 E.08831
+G1 X114.844 Y114.281 E.01849
+G1 X117.362 Y116.798 E.11449
+G1 X117.938 Y116.798 E.01852
+G1 X114.844 Y113.705 E.14068
+G1 X114.844 Y113.129 E.01852
+G1 X118.513 Y116.798 E.16685
+G1 X119.089 Y116.798 E.01852
+G1 X114.844 Y112.553 E.19305
+G1 X114.844 Y111.978 E.01849
+G1 X119.665 Y116.798 E.21922
+G1 X120.24 Y116.798 E.01849
+G1 X114.844 Y111.402 E.24539
+G1 X114.844 Y110.826 E.01852
+G1 X120.816 Y116.798 E.27158
+G1 X121.392 Y116.798 E.01852
+G1 X114.844 Y110.251 E.29775
+G1 X114.844 Y109.675 E.01852
+G1 X121.967 Y116.798 E.32392
+G1 X122.575 Y116.943 E.0201
+;WIDTH:0.38292
+G1 X122.45 Y116.951 E.00336
+;WIDTH:0.41646
+G1 X122.465 Y116.843 E.00322
+;WIDTH:0.449999
+G1 X122.48 Y116.735 E.00351
+G1 X114.844 Y109.099 E.34725
+G1 X114.844 Y108.524 E.01849
+G1 X122.614 Y116.293 E.35333
+G1 X122.793 Y115.897 E.01397
+G1 X114.844 Y107.948 E.36149
+G1 X114.844 Y107.372 E.01852
+M73 P52 R4
+G1 X123.053 Y115.581 E.37331
+M73 Q52 S4
+G1 X123.329 Y115.281 E.01311
+G1 X114.844 Y106.796 E.38586
+G1 X114.844 Y106.221 E.01849
+G1 X119.568 Y110.944 E.21481
+G1 X119.642 Y111.067 E.00462
+;WIDTH:0.41646
+G1 X119.717 Y111.191 E.00428
+;WIDTH:0.38292
+G1 X119.698 Y111.262 E.00197
+G1 X119.769 Y111.243 E.00197
+G1 X119.758 Y111.202 E.00114
+G1 X119.556 Y110.356 F10800
+;WIDTH:0.449999
+G1 F4800
+G1 X114.844 Y105.645 E.21426
+G1 X114.844 Y105.069 E.01852
+G1 X119.556 Y109.78 E.21426
+G1 X119.556 Y109.205 E.01849
+G1 X114.844 Y104.494 E.21426
+G1 X114.844 Y103.918 E.01852
+G1 X119.556 Y108.629 E.21426
+G1 X119.556 Y108.053 E.01852
+G1 X114.844 Y103.342 E.21426
+G1 X114.844 Y102.767 E.01849
+G1 X119.556 Y107.478 E.21426
+G1 X119.556 Y106.902 E.01852
+G1 X114.844 Y102.191 E.21426
+G1 X114.844 Y101.615 E.01852
+G1 X119.556 Y106.326 E.21426
+G1 X119.556 Y105.751 E.01849
+G1 X114.844 Y101.039 E.21428
+G1 X114.844 Y100.464 E.01849
+G1 X119.556 Y105.175 E.21426
+G1 X119.556 Y104.599 E.01852
+G1 X114.844 Y99.888 E.21426
+G1 X114.844 Y99.312 E.01852
+G1 X119.556 Y104.023 E.21426
+G1 X119.556 Y103.448 E.01849
+G1 X114.844 Y98.737 E.21426
+G1 X114.844 Y98.161 E.01852
+G1 X119.556 Y102.872 E.21426
+G1 X119.556 Y102.296 E.01852
+G1 X114.844 Y97.585 E.21426
+G1 X114.844 Y97.01 E.01849
+G1 X119.556 Y101.721 E.21426
+G1 X119.556 Y101.145 E.01852
+G1 X114.844 Y96.434 E.21426
+G1 X114.844 Y95.858 E.01852
+G1 X119.556 Y100.569 E.21426
+G1 X119.556 Y99.994 E.01849
+G1 X114.844 Y95.283 E.21426
+G1 X114.844 Y94.707 E.01852
+G1 X119.556 Y99.418 E.21426
+G1 X119.556 Y98.842 E.01852
+G1 X114.844 Y94.131 E.21426
+G1 X114.844 Y93.555 E.01852
+G1 X119.556 Y98.266 E.21426
+G1 X119.556 Y97.691 E.01849
+G1 X115.067 Y93.202 E.20414
+G1 X114.926 Y93.142 E.00493
+;WIDTH:0.41646
+G1 X114.785 Y93.082 E.00452
+;WIDTH:0.38292
+G1 X114.796 Y93.123 E.00114
+G1 X114.725 Y93.142 E.00197
+G1 X114.744 Y93.071 E.00197
+G1 X115.643 Y93.202 F10800
+;WIDTH:0.449999
+G1 F4800
+G1 X119.561 Y97.121 E.1782
+G1 X119.666 Y96.65 E.01552
+G1 X116.218 Y93.202 E.1568
+G1 X116.794 Y93.202 E.01852
+G1 X119.895 Y96.303 E.14102
+G1 X120.206 Y96.039 E.01312
+G1 X117.37 Y93.202 E.12899
+G1 X117.307 Y93.1 E.00386
+;WIDTH:0.41646
+G1 X117.243 Y92.998 E.00355
+;WIDTH:0.38292
+G1 X117.254 Y93.039 E.00114
+G1 X117.183 Y93.058 E.00197
+G1 X117.202 Y92.987 E.00197
+;WIDTH:0.449999
+G1 X117.945 Y93.202 E.02487
+G1 X120.633 Y95.89 E.12224
+G1 X121.148 Y95.856 E.0166
+G1 X123.972 Y95.856 E.09081
+;WIDTH:0.490179
+G1 X124.271 Y95.836 E.01059
+;WIDTH:0.530358
+G1 X124.569 Y95.816 E.0115
+G1 X125.324 Y95.82 E.02907
+;WIDTH:0.524054
+G1 X125.887 Y95.838 E.02141
+;WIDTH:0.487027
+G1 X126.45 Y95.857 E.01976
+;WIDTH:0.449999
+G1 X129.225 Y95.846 E.08923
+G1 X127.299 Y93.92 E.08759
+G1 X127.01 Y94.371 E.01722
+G1 X126.668 Y94.721 E.01574
+G1 X126.281 Y94.992 E.01519
+;WIDTH:0.481631
+G1 X125.945 Y95.145 E.01279
+;WIDTH:0.513263
+G1 X125.608 Y95.299 E.01377
+;WIDTH:0.524054
+G1 X125.324 Y95.338 E.0109
+G1 X124.68 Y95.338 E.02448
+G1 X124.366 Y95.249 E.0124
+;WIDTH:0.48699
+G1 X124.052 Y95.16 E.01145
+;WIDTH:0.449999
+G1 X123.349 Y94.735 E.02642
+G1 X123.043 Y94.446 E.01353
+G1 X122.745 Y94.024 E.01661
+G1 X122.537 Y93.561 E.01632
+M73 P53 R4
+G1 X122.457 Y93.202 E.01183
+G1 X118.149 Y93.202 E.13853
+G1 X118.928 Y93.609 F10800
+M73 Q53 S4
+G1 F4800
+G1 X120.776 Y95.458 E.08406
+G1 X123.726 Y95.449 E.09486
+G1 X123.134 Y95.08 E.02243
+G1 X122.711 Y94.681 E.0187
+G1 X122.413 Y94.258 E.01664
+G1 X122.179 Y93.768 E.01746
+G1 X122.131 Y93.609 E.00534
+G1 X119.132 Y93.609 E.09644
+G1 X119.911 Y94.016 F10800
+G1 F4800
+G1 X120.936 Y95.041 E.04661
+G1 X122.487 Y95.042 E.04987
+G1 X122.08 Y94.493 E.02198
+G1 X121.845 Y94.016 E.0171
+G1 X120.114 Y94.016 E.05566
+G1 X120.775 Y94.374 E.02417
+;WIDTH:0.351958
+G1 X121.084 Y94.683 E.01067
+G1 X121.778 Y94.684 E.01694
+G1 X121.613 Y94.374 E.00857
+G1 X120.979 Y94.374 E.01548
+G1 E-.6 F2100
+G1 X120.979 Y94.374 Z1.5 F10800
+G1 X126.235 Y95.45
+G1 Z1.4
+G1 E.6 F2100
+;WIDTH:0.449999
+G1 F4800
+G1 X128.253 Y95.45 E.06489
+G1 X127.371 Y94.568 E.04011
+G1 X126.99 Y94.979 E.01802
+G1 X126.561 Y95.299 E.01721
+G1 X126.42 Y95.364 E.00499
+G1 E-.6 F2100
+G1 X126.42 Y95.364 Z1.5 F10800
+G1 X120.461 Y111.934
+G1 Z1.4
+G1 E.6 F2100
+;WIDTH:0.38292
+G1 F4800
+G1 X120.442 Y112.005 E.00197
+G1 X120.514 Y111.986 E.002
+G1 X120.503 Y111.945 E.00114
+;WIDTH:0.41646
+G1 X120.631 Y112.041 E.00472
+;WIDTH:0.449999
+G1 X120.76 Y112.137 E.00517
+G1 X123.668 Y115.044 E.13222
+G1 X124.057 Y114.857 E.01388
+G1 X121.337 Y112.137 E.12369
+G1 X121.913 Y112.138 E.01852
+G1 X124.484 Y114.708 E.1169
+G1 X125.012 Y114.662 E.01704
+G1 X122.489 Y112.138 E.11476
+G1 X123.065 Y112.139 E.01852
+G1 X125.689 Y114.763 E.11933
+G1 X125.848 Y114.84 E.00568
+;WIDTH:0.41646
+G1 X126.007 Y114.917 E.00521
+;WIDTH:0.38292
+G1 X126.018 Y114.958 E.00114
+G1 X125.947 Y114.977 E.00197
+G1 X125.966 Y114.906 E.00197
+G1 X126.858 Y115.715 F10800
+G1 F4800
+G1 X127.121 Y116.015 E.01072
+;WIDTH:0.428175
+G1 X127.238 Y116.196 E.00656
+;WIDTH:0.47343
+G1 X127.354 Y116.378 E.00734
+;WIDTH:0.518685
+G1 X127.47 Y116.559 E.00808
+;WIDTH:0.56394
+G1 X127.587 Y116.741 E.0089
+;WIDTH:0.449999
+G1 X128.3 Y116.798 E.023
+G1 X123.642 Y112.139 E.21185
+G1 X124.218 Y112.14 E.01852
+G1 X128.876 Y116.798 E.21183
+G1 X129.451 Y116.798 E.01849
+G1 X124.794 Y112.14 E.2118
+G1 X125.37 Y112.141 E.01852
+G1 X130.027 Y116.798 E.21178
+G1 X130.603 Y116.798 E.01852
+G1 X125.946 Y112.141 E.21178
+G1 X126.523 Y112.142 E.01855
+G1 X131.179 Y116.798 E.21174
+G1 X131.754 Y116.798 E.01849
+G1 X127.099 Y112.143 E.21169
+G1 X127.675 Y112.143 E.01852
+G1 X132.33 Y116.798 E.21169
+G1 X132.906 Y116.798 E.01852
+G1 X128.251 Y112.144 E.21167
+G1 X128.828 Y112.144 E.01855
+G1 X133.481 Y116.798 E.21162
+G1 X134.057 Y116.798 E.01852
+G1 X129.377 Y112.117 E.21285
+G1 X129.791 Y111.956 E.01428
+G1 X134.633 Y116.798 E.22019
+G1 X135.29 Y116.946 E.02166
+;WIDTH:0.38292
+G1 X135.186 Y116.951 E.0028
+;WIDTH:0.41646
+G1 X135.171 Y116.848 E.00307
+;WIDTH:0.449999
+G1 X135.156 Y116.745 E.00335
+G1 X130.108 Y111.697 E.22956
+G1 X130.335 Y111.348 E.01339
+G1 X135.156 Y116.169 E.21924
+G1 X135.156 Y115.594 E.01849
+G1 X130.439 Y110.877 E.21451
+G1 X130.444 Y110.307 E.01833
+G1 X135.156 Y115.018 E.21426
+G1 X135.156 Y114.442 E.01852
+G1 X130.444 Y109.731 E.21426
+G1 X130.444 Y109.155 E.01852
+G1 X135.156 Y113.866 E.21426
+G1 X135.156 Y113.291 E.01849
+G1 X130.444 Y108.58 E.21426
+G1 X130.444 Y108.004 E.01852
+M73 P54 R4
+M73 Q54 S4
+G1 X135.156 Y112.715 E.21426
+G1 X135.156 Y112.139 E.01852
+G1 X130.444 Y107.428 E.21426
+G1 X130.444 Y106.853 E.01849
+G1 X135.156 Y111.564 E.21426
+G1 X135.156 Y110.988 E.01852
+G1 X130.444 Y106.277 E.21426
+G1 X130.444 Y105.701 E.01852
+G1 X135.156 Y110.412 E.21426
+G1 X135.156 Y109.837 E.01849
+G1 X130.444 Y105.126 E.21426
+G1 X130.444 Y104.55 E.01852
+G1 X135.156 Y109.261 E.21426
+G1 X135.156 Y108.685 E.01852
+G1 X130.444 Y103.974 E.21426
+G1 X130.444 Y103.398 E.01852
+G1 X135.156 Y108.11 E.21428
+G1 X135.156 Y107.534 E.01852
+G1 X130.444 Y102.823 E.21426
+G1 X130.444 Y102.247 E.01852
+G1 X135.156 Y106.958 E.21426
+G1 X135.156 Y106.382 E.01852
+G1 X130.444 Y101.671 E.21426
+G1 X130.444 Y101.096 E.01849
+G1 X135.156 Y105.807 E.21426
+G1 X135.156 Y105.231 E.01852
+G1 X130.444 Y100.52 E.21426
+G1 X130.444 Y99.944 E.01852
+G1 X135.156 Y104.655 E.21426
+G1 X135.156 Y104.08 E.01849
+G1 X130.444 Y99.369 E.21426
+G1 X130.444 Y98.793 E.01852
+G1 X135.156 Y103.504 E.21426
+G1 X135.156 Y102.928 E.01852
+G1 X130.444 Y98.217 E.21426
+G1 X130.444 Y97.641 E.01852
+G1 X135.156 Y102.353 E.21428
+G1 X135.156 Y101.777 E.01852
+G1 X130.432 Y97.053 E.21483
+G1 X130.351 Y96.909 E.00531
+;WIDTH:0.41646
+G1 X130.269 Y96.765 E.00489
+;WIDTH:0.38292
+G1 X129.926 Y96.331 E.01486
+G1 X129.729 Y96.159 E.00702
+G1 E-.6 F2100
+G1 X129.729 Y96.159 Z1.5 F10800
+G1 X127.466 Y93.512
+G1 Z1.4
+G1 E.6 F2100
+;WIDTH:0.449999
+G1 F4800
+G1 X135.156 Y101.201 E.34969
+G1 X135.156 Y100.625 E.01852
+G1 X127.732 Y93.202 E.33759
+G1 X127.609 Y93.126 E.00465
+;WIDTH:0.41646
+G1 X127.487 Y93.05 E.00424
+;WIDTH:0.38292
+G1 X127.498 Y93.091 E.00114
+G1 X127.427 Y93.11 E.00197
+G1 X127.446 Y93.039 E.00197
+G1 X128.308 Y93.202 F10800
+;WIDTH:0.449999
+G1 F4800
+G1 X135.156 Y100.05 E.31142
+G1 X135.156 Y99.474 E.01852
+G1 X128.884 Y93.202 E.28522
+G1 X129.459 Y93.202 E.01849
+G1 X135.156 Y98.898 E.25905
+G1 X135.156 Y98.323 E.01849
+G1 X130.035 Y93.202 E.23288
+G1 X130.611 Y93.202 E.01852
+G1 X135.156 Y97.747 E.20669
+G1 X135.156 Y97.171 E.01852
+G1 X131.186 Y93.202 E.18052
+G1 X131.762 Y93.202 E.01852
+G1 X135.156 Y96.596 E.15435
+G1 X135.156 Y96.02 E.01852
+G1 X132.338 Y93.202 E.12815
+G1 X132.913 Y93.202 E.01849
+G1 X135.156 Y95.444 E.10198
+G1 X135.156 Y94.869 E.01849
+G1 X133.489 Y93.202 E.07581
+M73 P55 R4
+G1 X134.065 Y93.202 E.01852
+M73 Q55 S4
+G1 X135.156 Y94.293 E.04961
+G1 X135.318 Y93.832 E.01571
+;WIDTH:0.38292
+G1 X135.299 Y93.903 E.00197
+G1 X135.37 Y93.884 E.00197
+G1 X135.359 Y93.843 E.00114
+;WIDTH:0.41646
+G1 X135.257 Y93.78 E.00354
+;WIDTH:0.449999
+G1 X135.156 Y93.717 E.00383
+G1 X134.641 Y93.202 E.02342
+G1 X134.577 Y93.1 E.00387
+;WIDTH:0.41646
+G1 X134.514 Y92.998 E.00354
+;WIDTH:0.38292
+G1 X134.525 Y93.039 E.00114
+G1 X134.454 Y93.058 E.00197
+G1 X134.473 Y92.987 E.00197
+;LAYER_CHANGE
+;Z:1.6
+;HEIGHT:0.2
+;BEFORE_LAYER_CHANGE
+G92 E0.0
+;1.6
+
+
+G1 Z1.6 F10800
+;AFTER_LAYER_CHANGE
+;1.6
+G1 E-.6 F2100
+G1 X134.473 Y92.987 Z1.7 F10800
+G1 X127.049 Y91.762
+G1 Z1.6
+G1 E.6 F2100
+;TYPE:Perimeter
+;WIDTH:0.449999
+G1 F2700
+G1 X127.227 Y91.789 E.00579
+G1 X135.461 Y91.789 E.26478
+G1 X135.461 Y94.826 E.09766
+G1 X135.461 Y118.211 E.75198
+G1 X127.071 Y118.223 E.26979
+G1 X127.135 Y118.074 E.00521
+G1 X127.276 Y117.35 E.02372
+G1 X127.259 Y116.953 E.01278
+G1 X127.141 Y116.471 E.01596
+G1 X126.963 Y116.097 E.01332
+G1 X126.552 Y115.567 E.02157
+G1 X125.963 Y115.185 E.02257
+G1 X125.599 Y115.051 E.01247
+G1 X124.97 Y114.961 E.02043
+G1 X124.398 Y115.045 E.01859
+G1 X123.861 Y115.277 E.01881
+G1 X123.306 Y115.71 E.02264
+G1 X122.935 Y116.287 E.02206
+G1 X122.799 Y116.66 E.01277
+G1 X122.724 Y117.15 E.01594
+G1 X122.741 Y117.547 E.01278
+G1 X122.859 Y118.029 E.01596
+G1 X122.954 Y118.242 E.0075
+G1 X122.773 Y118.211 E.00591
+G1 X114.539 Y118.211 E.26478
+G1 X114.539 Y91.789 E.84963
+G1 X122.929 Y91.779 E.26979
+G1 X122.77 Y92.249 E.01595
+G1 X122.723 Y92.831 E.01878
+G1 X122.832 Y93.484 E.02129
+G1 X123.121 Y94.052 E.02049
+G1 X123.508 Y94.473 E.01839
+G1 X124.129 Y94.865 E.02361
+G1 X124.671 Y94.996 E.01793
+G1 X125.505 Y94.981 E.02682
+G1 X126.171 Y94.706 E.02317
+G1 X126.471 Y94.492 E.01185
+G1 X126.795 Y94.155 E.01503
+G1 X127 Y93.845 E.01195
+G1 X127.213 Y93.326 E.01804
+G1 X127.277 Y92.628 E.02254
+G1 X127.228 Y92.269 E.01165
+G1 X127.069 Y91.819 E.01535
+G1 X126.873 Y91.286 F10800
+;WIDTH:0.503734
+G1 F2700
+G1 X126.942 Y91.326 E.0029
+;WIDTH:0.476096
+G1 X127.227 Y91.382 E.00994
+;WIDTH:0.449999
+G1 X135.868 Y91.382 E.27786
+G1 X135.868 Y94.826 E.11075
+G1 X135.868 Y118.618 E.76506
+G1 X127.227 Y118.618 E.27786
+;WIDTH:0.489292
+G1 X126.827 Y118.741 E.01476
+G1 X126.591 Y118.959 E.01133
+;WIDTH:0.487295
+G1 X126.049 Y119.346 E.02338
+;WIDTH:0.499008
+G1 X125.573 Y119.516 E.01821
+G1 X125.074 Y119.592 E.01819
+;WIDTH:0.498118
+G1 X124.573 Y119.548 E.01808
+G1 X124.089 Y119.407 E.01813
+;WIDTH:0.495655
+G1 X123.651 Y119.161 E.01797
+G1 X123.303 Y118.858 E.0165
+;WIDTH:0.489382
+G1 X122.978 Y118.653 E.01355
+;WIDTH:0.449999
+G1 X122.773 Y118.618 E.00669
+G1 X114.132 Y118.618 E.27786
+G1 X114.132 Y91.382 E.87581
+G1 X122.661 Y91.382 E.27426
+;WIDTH:0.456199
+G1 X122.995 Y91.343 E.01098
+;WIDTH:0.492495
+G1 X123.205 Y91.232 E.00844
+G1 X123.648 Y90.836 E.0211
+;WIDTH:0.487247
+G1 X124.088 Y90.591 E.01768
+G1 X124.569 Y90.447 E.01762
+M73 P56 R4
+;WIDTH:0.489563
+G1 X125.079 Y90.41 E.01804
+;WIDTH:0.495379
+G1 X125.524 Y90.47 E.01605
+G1 X125.942 Y90.611 E.01577
+;WIDTH:0.489484
+G1 X126.424 Y90.89 E.01965
+;WIDTH:0.503734
+G1 X126.796 Y91.241 E.01862
+G1 X126.821 Y91.256 E.00106
+M73 Q56 S4
+G1 X127.089 Y90.921 F10800
+;TYPE:External perimeter
+;WIDTH:0.449999
+G1 F1500
+G1 X127.227 Y90.975 E.00477
+G1 X136.275 Y90.975 E.29095
+G1 X136.275 Y94.826 E.12383
+G1 X136.275 Y119.025 E.77815
+G1 X127.227 Y119.025 E.29095
+G1 X127.089 Y119.079 E.00477
+G1 X126.676 Y119.459 E.01805
+G1 X126.215 Y119.744 E.01743
+G1 X125.652 Y119.946 E.01923
+G1 X125.06 Y120.023 E.0192
+G1 X124.465 Y119.972 E.0192
+G1 X123.895 Y119.794 E.0192
+G1 X123.376 Y119.499 E.0192
+G1 X122.909 Y119.077 E.02024
+G1 X122.773 Y119.025 E.00468
+G1 X113.725 Y119.025 E.29095
+G1 X113.725 Y90.975 E.90198
+G1 X122.773 Y90.975 E.29095
+G1 X122.909 Y90.923 E.00468
+G1 X123.376 Y90.501 E.02024
+G1 X123.895 Y90.206 E.0192
+G1 X124.464 Y90.029 E.01916
+G1 X125.116 Y89.979 E.02103
+G1 X125.651 Y90.054 E.01737
+G1 X126.215 Y90.256 E.01926
+G1 X126.667 Y90.534 E.01706
+G1 X127.045 Y90.881 E.0165
+G1 X127.436 Y90.966 F10800
+G1 E-.6 F2100
+G1 Z1.7 F10800
+G1 X123.141 Y92.619
+G1 Z1.6
+G1 E.6 F2100
+;TYPE:Perimeter
+G1 F1500
+G1 X123.171 Y92.314 E.00986
+;WIDTH:0.456199
+G1 X123.368 Y91.811 E.01764
+;WIDTH:0.486168
+G1 X123.599 Y91.47 E.01442
+G1 X123.908 Y91.198 E.01441
+G1 X124.269 Y90.999 E.01443
+;WIDTH:0.486051
+G1 X124.659 Y90.883 E.01424
+;WIDTH:0.489754
+G1 X125.086 Y90.857 E.0151
+G1 X125.65 Y90.967 E.02028
+;WIDTH:0.489582
+G1 X126.136 Y91.233 E.01955
+G1 X126.243 Y91.316 E.00478
+;WIDTH:0.482432
+G1 X126.6 Y91.748 E.01946
+;WIDTH:0.476096
+G1 X126.841 Y92.395 E.02362
+;WIDTH:0.449999
+G1 X126.871 Y92.611 E.00701
+G1 X126.825 Y93.205 E.01916
+G1 X126.625 Y93.686 E.01675
+G1 X126.502 Y93.872 E.00717
+G1 X126.177 Y94.209 E.01505
+G1 X125.998 Y94.338 E.00709
+G1 X125.434 Y94.58 E.01974
+G1 X124.671 Y94.589 E.02454
+G1 X124.266 Y94.482 E.01347
+G1 X123.741 Y94.14 E.02015
+G1 X123.441 Y93.8 E.01458
+G1 X123.21 Y93.327 E.01693
+G1 X123.126 Y92.772 E.01805
+G1 X123.135 Y92.679 E.003
+G1 X123.576 Y93.016 F10800
+;TYPE:External perimeter
+G1 F1500
+G1 X123.529 Y92.652 E.0118
+G1 X123.627 Y92.232 E.01387
+G1 X123.863 Y91.812 E.01549
+G1 X124.127 Y91.562 E.01169
+G1 X124.404 Y91.402 E.01029
+G1 X124.707 Y91.305 E.01023
+G1 X125.014 Y91.278 E.00991
+G1 X125.507 Y91.365 E.0161
+G1 X125.957 Y91.628 E.01676
+G1 X126.31 Y92.079 E.01842
+G1 X126.464 Y92.593 E.01725
+G1 X126.432 Y93.094 E.01614
+G1 X126.209 Y93.59 E.01749
+G1 X125.824 Y93.97 E.01739
+G1 X125.364 Y94.179 E.01625
+G1 X124.671 Y94.182 E.02228
+G1 X124.356 Y94.074 E.01071
+G1 X123.932 Y93.766 E.01685
+G1 X123.738 Y93.511 E.0103
+G1 X123.6 Y93.203 E.01085
+G1 X123.584 Y93.076 E.00412
+G1 X123.543 Y92.678 F10800
+G1 E-.6 F2100
+G1 Z1.7 F10800
+M73 P56 R3
+G1 X120.81 Y96.173
+G1 Z1.6
+M73 P57 R3
+M73 Q57 S4
+G1 E.6 F2100
+;TYPE:Perimeter
+G1 F2700
+G1 X121.286 Y96.161 E.01531
+G1 X129.121 Y96.161 E.25194
+G1 X129.42 Y96.206 E.00972
+G1 X129.637 Y96.301 E.00762
+G1 X129.95 Y96.588 E.01366
+G1 X130.116 Y96.964 E.01322
+G1 X130.139 Y97.179 E.00695
+G1 X130.139 Y110.821 E.43868
+G1 X130.057 Y111.221 E.01313
+G1 X129.847 Y111.535 E.01215
+G1 X129.541 Y111.749 E.01201
+G1 X129.241 Y111.832 E.01001
+G1 X126.898 Y111.839 E.07534
+G1 X120.879 Y111.839 E.19355
+G1 X120.661 Y111.816 E.00705
+G1 X120.283 Y111.647 E.01331
+G1 X120.036 Y111.393 E.01139
+G1 X119.876 Y110.997 E.01373
+G1 X119.861 Y110.821 E.00568
+G1 X119.861 Y97.179 E.43868
+G1 X119.949 Y96.764 E.01364
+G1 X120.185 Y96.434 E.01305
+G1 X120.363 Y96.301 E.00715
+G1 X120.703 Y96.176 E.01165
+G1 X120.75 Y96.175 E.00151
+G1 X120.841 Y96.588 F10800
+M73 Q57 S3
+G1 F2700
+G1 X121.286 Y96.568 E.01432
+G1 X129.121 Y96.568 E.25194
+G1 X129.431 Y96.652 E.01033
+G1 X129.619 Y96.824 E.00819
+G1 X129.718 Y97.05 E.00793
+G1 X129.732 Y97.179 E.00417
+G1 X129.732 Y110.821 E.43868
+G1 X129.683 Y111.061 E.00788
+G1 X129.557 Y111.25 E.0073
+G1 X129.373 Y111.378 E.00721
+G1 X129.121 Y111.432 E.00829
+G1 X126.898 Y111.432 E.07148
+G1 X120.879 Y111.432 E.19355
+G1 X120.627 Y111.378 E.00829
+G1 X120.443 Y111.25 E.00721
+G1 X120.317 Y111.061 E.0073
+G1 X120.268 Y110.821 E.00788
+G1 X120.268 Y97.179 E.43868
+G1 X120.321 Y96.93 E.00819
+G1 X120.462 Y96.732 E.00782
+G1 X120.699 Y96.595 E.0088
+G1 X120.781 Y96.591 E.00264
+G1 X120.879 Y96.975 F10800
+;TYPE:External perimeter
+G1 F1500
+G1 X129.121 Y96.975 E.26503
+G1 X129.26 Y97.03 E.00481
+G1 X129.325 Y97.179 E.00523
+G1 X129.325 Y110.821 E.43868
+G1 X129.267 Y110.964 E.00496
+G1 X129.121 Y111.025 E.00509
+G1 X126.898 Y111.025 E.07148
+G1 X120.879 Y111.025 E.19355
+G1 X120.733 Y110.964 E.00509
+G1 X120.675 Y110.821 E.00496
+G1 X120.675 Y97.179 E.43868
+G1 X120.74 Y97.03 E.00523
+G1 X120.823 Y96.997 E.00287
+G1 X121.222 Y96.978 F10800
+G1 E-.6 F2100
+G1 Z1.7 F10800
+G1 X126.867 Y117.124
+G1 Z1.6
+G1 E.6 F2100
+;TYPE:Perimeter
+G1 F1500
+G1 X126.874 Y117.288 E.00528
+G1 X126.759 Y117.918 E.02059
+;WIDTH:0.489292
+G1 X126.476 Y118.436 E.02081
+G1 X126.309 Y118.617 E.00868
+;WIDTH:0.487078
+G1 X125.867 Y118.938 E.01917
+;WIDTH:0.499008
+G1 X125.442 Y119.08 E.01614
+G1 X125.001 Y119.147 E.01607
+;WIDTH:0.486094
+G1 X124.469 Y119.066 E.01884
+;WIDTH:0.489814
+G1 X124.238 Y118.984 E.00865
+G1 X123.806 Y118.72 E.01787
+;WIDTH:0.489382
+G1 X123.632 Y118.56 E.00834
+G1 X123.262 Y117.962 E.0248
+;WIDTH:0.449999
+G1 X123.137 Y117.45 E.01695
+G1 X123.126 Y117.212 E.00766
+G1 X123.255 Y116.551 E.02166
+G1 X123.609 Y115.982 E.02155
+G1 X124.102 Y115.605 E.01996
+G1 X124.619 Y115.407 E.0178
+G1 X125.068 Y115.376 E.01447
+G1 X125.533 Y115.453 E.01516
+G1 X125.752 Y115.533 E.0075
+G1 X126.275 Y115.865 E.01992
+G1 X126.635 Y116.338 E.01911
+G1 X126.746 Y116.568 E.00821
+G1 X126.864 Y117.05 E.01596
+G1 X126.864 Y117.064 E.00045
+G1 X126.358 Y116.76 F10800
+;TYPE:External perimeter
+G1 F1500
+G1 X126.468 Y117.146 E.01291
+G1 X126.396 Y117.716 E.01847
+G1 X126.111 Y118.215 E.01848
+G1 X125.658 Y118.567 E.01845
+G1 X125.104 Y118.718 E.01846
+G1 X124.534 Y118.646 E.01847
+G1 X124.035 Y118.361 E.01848
+G1 X123.683 Y117.907 E.01847
+G1 X123.532 Y117.354 E.01843
+G1 X123.604 Y116.784 E.01847
+G1 X123.911 Y116.255 E.01967
+M73 P58 R3
+G1 X124.342 Y115.933 E.0173
+G1 X124.7 Y115.807 E.0122
+G1 X125.002 Y115.778 E.00976
+M73 Q58 S3
+G1 X125.54 Y115.881 E.01761
+G1 X125.998 Y116.163 E.0173
+G1 X126.307 Y116.579 E.01666
+G1 X126.342 Y116.703 E.00414
+G1 X126.451 Y117.087 F10800
+G1 E-.6 F2100
+G1 Z1.7 F10800
+G1 X114.972 Y93.248
+G1 Z1.6
+G1 E.6 F2100
+;TYPE:Solid infill
+;WIDTH:0.575692
+G1 F4800
+G1 X114.925 Y93.201 E.0028
+G1 X114.86 Y93.218 E.00283
+G1 X114.843 Y93.282 E.00279
+G1 X114.89 Y93.329 E.0028
+G1 X114.954 Y93.312 E.00279
+;WIDTH:0.449999
+G1 X115.635 Y93.202 E.02218
+G1 X114.778 Y94.065 E.03911
+;WIDTH:0.41646
+G1 X114.712 Y94.138 E.0029
+;WIDTH:0.38292
+G1 X114.641 Y94.119 E.00197
+G1 X114.66 Y94.19 E.00197
+G1 X114.701 Y94.179 E.00114
+;WIDTH:0.449999
+G1 X114.844 Y94.568 E.01333
+G1 X116.21 Y93.202 E.06212
+G1 X116.786 Y93.202 E.01852
+G1 X114.844 Y95.144 E.08831
+G1 X114.844 Y95.719 E.01849
+G1 X117.362 Y93.202 E.11449
+G1 X117.938 Y93.202 E.01852
+G1 X114.844 Y96.295 E.14068
+G1 X114.844 Y96.871 E.01852
+G1 X118.513 Y93.202 E.16685
+G1 X119.089 Y93.202 E.01852
+G1 X114.844 Y97.447 E.19305
+G1 X114.844 Y98.022 E.01849
+G1 X119.665 Y93.202 E.21922
+G1 X120.24 Y93.202 E.01849
+G1 X114.844 Y98.598 E.24539
+G1 X114.844 Y99.174 E.01852
+G1 X120.816 Y93.202 E.27158
+G1 X121.392 Y93.202 E.01852
+G1 X114.844 Y99.749 E.29775
+G1 X114.844 Y100.325 E.01852
+G1 X121.967 Y93.202 E.32392
+G1 X122.358 Y93.049 E.0135
+;WIDTH:0.38292
+G1 X122.564 Y93.067 E.00555
+;WIDTH:0.41646
+G1 X122.521 Y93.167 E.00321
+;WIDTH:0.449999
+G1 X122.478 Y93.267 E.0035
+G1 X114.844 Y100.901 E.34716
+G1 E-.6 F2100
+G1 X114.844 Y100.901 Z1.7 F10800
+G1 X127.554 Y93.202
+G1 Z1.6
+G1 E.6 F2100
+G1 F4800
+G1 X127.498 Y93.435 E.00771
+G1 X127.285 Y93.953 E.01801
+G1 X127.008 Y94.373 E.01618
+G1 X126.669 Y94.721 E.01562
+G1 X126.283 Y94.991 E.01515
+;WIDTH:0.481607
+G1 X125.946 Y95.145 E.01284
+;WIDTH:0.513214
+G1 X125.608 Y95.299 E.0138
+;WIDTH:0.524054
+G1 X125.324 Y95.338 E.0109
+G1 X124.68 Y95.338 E.02448
+G1 X124.367 Y95.25 E.01236
+;WIDTH:0.48699
+G1 X124.054 Y95.161 E.01141
+;WIDTH:0.449999
+G1 X123.348 Y94.734 E.02653
+G1 X122.896 Y94.258 E.02111
+G1 X122.599 Y93.723 E.01968
+G1 X120.481 Y95.824 E.09593
+;WIDTH:0.424949
+G1 X120.239 Y96.049 E.00997
+;WIDTH:0.399899
+G1 X120.194 Y96.085 E.00163
+;WIDTH:0.420067
+G1 X120.359 Y95.996 E.00559
+;WIDTH:0.448729
+G1 X120.523 Y95.907 E.00598
+;WIDTH:0.449999
+G1 X120.883 Y95.856 E.01169
+G1 X123.974 Y95.856 E.0994
+;WIDTH:0.49016
+G1 X124.272 Y95.836 E.01055
+;WIDTH:0.530321
+G1 X124.57 Y95.816 E.0115
+G1 X125.324 Y95.82 E.02903
+;WIDTH:0.524054
+G1 X125.888 Y95.838 E.02145
+;WIDTH:0.487027
+G1 X126.452 Y95.857 E.0198
+;WIDTH:0.449999
+G1 X129.181 Y95.857 E.08775
+G1 X129.586 Y95.946 E.01333
+G1 X132.33 Y93.202 E.12479
+G1 X127.758 Y93.202 E.14702
+G1 X127.866 Y93.609 E.01354
+G1 X127.662 Y94.108 E.01734
+G1 X127.372 Y94.568 E.01749
+G1 X126.99 Y94.979 E.01804
+G1 X126.562 Y95.298 E.01717
+G1 X126.235 Y95.45 E.0116
+G1 X129.182 Y95.45 E.09476
+G1 X129.465 Y95.491 E.0092
+G1 X131.347 Y93.609 E.08559
+G1 X128.07 Y93.609 E.10538
+G1 X128.139 Y94.016 E.01327
+G1 X127.946 Y94.436 E.01486
+G1 X127.595 Y94.938 E.0197
+G1 X127.494 Y95.043 E.00468
+G1 X129.325 Y95.056 E.05888
+G1 X130.364 Y94.016 E.04727
+G1 X128.343 Y94.016 E.06499
+G1 X128.38 Y94.375 E.01161
+;WIDTH:0.352816
+G1 X128.212 Y94.685 E.00863
+G1 X129.182 Y94.685 E.02375
+G1 X129.499 Y94.375 E.01085
+G1 X128.583 Y94.375 E.02242
+G1 E-.6 F2100
+G1 X128.583 Y94.375 Z1.7 F10800
+G1 X129.952 Y96.156
+G1 Z1.6
+G1 E.6 F2100
+;WIDTH:0.449999
+G1 F4800
+G1 X132.906 Y93.202 E.13434
+G1 X133.481 Y93.202 E.01849
+G1 X130.226 Y96.457 E.14802
+G1 X130.402 Y96.858 E.01408
+G1 X134.057 Y93.202 E.16624
+G1 X134.633 Y93.202 E.01852
+G1 X130.444 Y97.39 E.19048
+G1 X130.444 Y97.966 E.01852
+G1 X135.156 Y93.255 E.21426
+G1 X135.223 Y93.155 E.00387
+;WIDTH:0.41646
+G1 X135.29 Y93.054 E.00358
+;WIDTH:0.38292
+G1 X135.186 Y93.049 E.0028
+;WIDTH:0.449999
+G1 X135.156 Y93.831 E.02516
+G1 X130.444 Y98.542 E.21426
+G1 X130.444 Y99.117 E.01849
+M73 P59 R3
+M73 Q59 S3
+G1 X135.156 Y94.406 E.21426
+G1 X135.156 Y94.982 E.01852
+G1 X130.444 Y99.693 E.21426
+G1 X130.444 Y100.269 E.01852
+G1 X135.156 Y95.558 E.21426
+G1 X135.156 Y96.134 E.01852
+G1 X130.444 Y100.845 E.21426
+G1 X130.444 Y101.42 E.01849
+G1 X135.156 Y96.709 E.21426
+G1 X135.156 Y97.285 E.01852
+G1 X130.444 Y101.996 E.21426
+G1 X130.444 Y102.572 E.01852
+G1 X135.156 Y97.861 E.21426
+G1 X135.156 Y98.436 E.01849
+G1 X130.444 Y103.147 E.21426
+G1 X130.444 Y103.723 E.01852
+G1 X135.156 Y99.012 E.21426
+G1 X135.156 Y99.588 E.01852
+G1 X130.444 Y104.299 E.21426
+G1 X130.444 Y104.874 E.01849
+G1 X135.156 Y100.163 E.21426
+G1 X135.156 Y100.739 E.01852
+G1 X130.444 Y105.45 E.21426
+G1 X130.444 Y106.026 E.01852
+G1 X135.156 Y101.315 E.21426
+G1 X135.156 Y101.89 E.01849
+G1 X130.444 Y106.602 E.21428
+G1 X130.444 Y107.177 E.01849
+G1 X135.156 Y102.466 E.21426
+G1 X135.156 Y103.042 E.01852
+G1 X130.444 Y107.753 E.21426
+G1 X130.444 Y108.329 E.01852
+G1 X135.156 Y103.618 E.21426
+G1 X135.156 Y104.193 E.01849
+G1 X130.444 Y108.904 E.21426
+G1 X130.444 Y109.48 E.01852
+G1 X135.156 Y104.769 E.21426
+G1 X135.156 Y105.345 E.01852
+G1 X130.444 Y110.056 E.21426
+G1 X130.444 Y110.631 E.01849
+G1 X135.156 Y105.92 E.21426
+G1 E-.6 F2100
+G1 X135.156 Y105.92 Z1.7 F10800
+G1 X122.623 Y94.561
+G1 Z1.6
+G1 E.6 F2100
+G1 F4800
+G1 X123.132 Y95.079 E.02335
+G1 X123.726 Y95.449 E.0225
+G1 X121.448 Y95.449 E.07325
+G1 X122.487 Y94.41 E.04725
+G1 X122.526 Y95.01 E.01933
+;WIDTH:0.484874
+G1 X122.487 Y94.971 E.00193
+G1 X122.434 Y94.985 E.00191
+G1 X122.419 Y95.039 E.00196
+G1 X122.458 Y95.078 E.00193
+G1 X122.512 Y95.063 E.00196
+G1 E-.6 F2100
+G1 X122.512 Y95.063 Z1.7 F10800
+G1 X120.194 Y96.085
+G1 Z1.6
+G1 E.6 F2100
+;WIDTH:0.391404
+G1 F4800
+G1 X119.898 Y96.369 E.01129
+;WIDTH:0.41646
+G1 X119.781 Y96.513 E.00547
+;WIDTH:0.449999
+G1 X119.664 Y96.657 E.00597
+G1 X114.844 Y101.476 E.21917
+G1 X114.844 Y102.052 E.01852
+G1 X119.556 Y97.341 E.21426
+G1 X119.556 Y97.917 E.01852
+G1 X114.844 Y102.628 E.21426
+G1 X114.844 Y103.204 E.01852
+G1 X119.556 Y98.492 E.21428
+G1 X119.556 Y99.068 E.01852
+G1 X114.844 Y103.779 E.21426
+G1 X114.844 Y104.355 E.01852
+G1 X119.556 Y99.644 E.21426
+G1 X119.556 Y100.22 E.01852
+G1 X114.844 Y104.931 E.21426
+G1 X114.844 Y105.506 E.01849
+G1 X119.556 Y100.795 E.21426
+G1 X119.556 Y101.371 E.01852
+M73 P60 R3
+M73 Q60 S3
+G1 X114.844 Y106.082 E.21426
+G1 X114.844 Y106.658 E.01852
+G1 X119.556 Y101.947 E.21426
+G1 X119.556 Y102.522 E.01849
+G1 X114.844 Y107.233 E.21426
+G1 X114.844 Y107.809 E.01852
+G1 X119.556 Y103.098 E.21426
+G1 X119.556 Y103.674 E.01852
+G1 X114.844 Y108.385 E.21426
+G1 X114.844 Y108.961 E.01852
+G1 X119.556 Y104.249 E.21428
+G1 X119.556 Y104.825 E.01852
+G1 X114.844 Y109.536 E.21426
+G1 X114.844 Y110.112 E.01852
+G1 X119.556 Y105.401 E.21426
+G1 X119.556 Y105.977 E.01852
+G1 X114.844 Y110.688 E.21426
+G1 X114.844 Y111.263 E.01849
+G1 X119.556 Y106.552 E.21426
+G1 X119.556 Y107.128 E.01852
+G1 X114.844 Y111.839 E.21426
+G1 X114.844 Y112.415 E.01852
+G1 X119.556 Y107.704 E.21426
+G1 X119.556 Y108.279 E.01849
+G1 X114.844 Y112.99 E.21426
+G1 X114.844 Y113.566 E.01852
+G1 X119.556 Y108.855 E.21426
+G1 X119.556 Y109.431 E.01852
+G1 X114.844 Y114.142 E.21426
+G1 X114.844 Y114.717 E.01849
+G1 X119.556 Y110.006 E.21426
+G1 X119.556 Y110.582 E.01852
+G1 X114.844 Y115.293 E.21426
+G1 X114.844 Y115.869 E.01852
+G1 X119.592 Y111.121 E.21592
+G1 X119.763 Y111.527 E.01417
+G1 X114.844 Y116.445 E.22367
+G1 X114.785 Y116.918 E.01533
+;WIDTH:0.38292
+G1 X114.744 Y116.929 E.00114
+G1 X114.725 Y116.858 E.00197
+G1 X114.796 Y116.877 E.00197
+;WIDTH:0.41646
+G1 X114.931 Y116.837 E.00415
+;WIDTH:0.449999
+G1 X115.067 Y116.798 E.00455
+G1 X120.032 Y111.833 E.22579
+G1 X120.393 Y112.047 E.01349
+G1 X115.643 Y116.798 E.21603
+G1 X116.218 Y116.798 E.01849
+G1 X120.88 Y112.136 E.21201
+G1 X121.455 Y112.137 E.01849
+G1 X116.794 Y116.798 E.21196
+G1 X117.37 Y116.798 E.01852
+G1 X122.03 Y112.137 E.21194
+G1 X122.605 Y112.138 E.01849
+G1 X117.945 Y116.798 E.21192
+G1 X118.521 Y116.798 E.01852
+G1 X123.18 Y112.139 E.21187
+G1 X123.755 Y112.139 E.01849
+G1 X119.097 Y116.798 E.21185
+G1 X119.672 Y116.798 E.01849
+G1 X124.331 Y112.14 E.21185
+G1 X124.906 Y112.14 E.01849
+G1 X120.248 Y116.798 E.21183
+G1 X120.824 Y116.798 E.01852
+G1 X125.481 Y112.141 E.21178
+G1 X126.056 Y112.141 E.01849
+G1 X121.4 Y116.798 E.21176
+G1 X121.342 Y116.879 E.0032
+;WIDTH:0.41646
+G1 X121.284 Y116.961 E.00296
+;WIDTH:0.38292
+G1 X121.213 Y116.942 E.00197
+G1 X121.232 Y117.013 E.00197
+G1 X121.273 Y117.002 E.00114
+G1 E-.6 F2100
+G1 X121.273 Y117.002 Z1.7 F10800
+G1 X123.813 Y114.96
+G1 Z1.6
+G1 E.6 F2100
+;WIDTH:0.449999
+G1 F4800
+G1 X126.631 Y112.142 E.12815
+G1 X127.206 Y112.143 E.01849
+M73 P61 R3
+G1 X124.661 Y114.688 E.11574
+M73 Q61 S3
+G1 X124.539 Y114.761 E.00457
+;WIDTH:0.41646
+G1 X124.417 Y114.834 E.0042
+;WIDTH:0.38292
+G1 X124.346 Y114.815 E.00197
+G1 X124.365 Y114.887 E.002
+G1 X124.406 Y114.876 E.00114
+G1 X125.233 Y114.692 F10800
+;WIDTH:0.449999
+G1 F4800
+G1 X127.781 Y112.143 E.1159
+G1 X128.356 Y112.144 E.01849
+G1 X125.725 Y114.776 E.11967
+G1 X126.14 Y114.936 E.0143
+G1 X128.932 Y112.144 E.12697
+G1 X129.603 Y112.049 E.02179
+G1 X126.499 Y115.153 E.14116
+G1 E-.6 F2100
+G1 X126.499 Y115.153 Z1.7 F10800
+G1 X123.525 Y115.197
+G1 Z1.6
+G1 E.6 F2100
+;WIDTH:0.38292
+G1 F4800
+G1 X123.146 Y115.534 E.01362
+G1 X122.961 Y115.754 E.00772
+;WIDTH:0.41646
+G1 X122.846 Y115.898 E.00544
+;WIDTH:0.449999
+G1 X122.731 Y116.042 E.00593
+G1 X121.975 Y116.798 E.03438
+G1 E-.6 F2100
+G1 X121.975 Y116.798 Z1.7 F10800
+G1 X129.891 Y111.822
+G1 Z1.6
+G1 E.6 F2100
+;WIDTH:0.38292
+G1 F4800
+G1 X130.125 Y111.588 E.00889
+;WIDTH:0.41646
+G1 X130.238 Y111.444 E.0054
+;WIDTH:0.449999
+G1 X130.352 Y111.3 E.00591
+G1 X135.156 Y106.496 E.21847
+G1 X135.263 Y106.412 E.00437
+;WIDTH:0.41646
+G1 X135.37 Y106.329 E.004
+;WIDTH:0.38292
+G1 X135.299 Y106.31 E.00197
+G1 X135.318 Y106.381 E.00197
+G1 X135.359 Y106.37 E.00114
+G1 X135.316 Y106.773 E.01089
+G1 X135.245 Y106.754 E.00197
+G1 X135.264 Y106.825 E.00197
+G1 X135.305 Y106.814 E.00114
+;WIDTH:0.449999
+G1 X135.156 Y107.072 E.00958
+G1 X126.819 Y115.409 E.37913
+G1 X127.073 Y115.73 E.01316
+G1 X135.156 Y107.647 E.36758
+G1 X135.156 Y108.223 E.01852
+G1 X127.304 Y116.075 E.35708
+G1 X127.461 Y116.493 E.01436
+G1 X135.156 Y108.799 E.34991
+G1 X135.156 Y109.375 E.01852
+G1 X127.732 Y116.798 E.33759
+G1 X127.612 Y116.852 E.00423
+;WIDTH:0.41646
+G1 X127.492 Y116.906 E.00388
+;WIDTH:0.38292
+G1 X127.421 Y116.886 E.00198
+G1 X127.44 Y116.958 E.002
+G1 X127.481 Y116.947 E.00114
+G1 X128.308 Y116.798 F10800
+;WIDTH:0.449999
+G1 F4800
+G1 X135.156 Y109.95 E.31142
+G1 X135.156 Y110.526 E.01852
+G1 X128.884 Y116.798 E.28522
+G1 X129.459 Y116.798 E.01849
+G1 X135.156 Y111.102 E.25905
+G1 X135.156 Y111.677 E.01849
+G1 X130.035 Y116.798 E.23288
+G1 X130.611 Y116.798 E.01852
+G1 X135.156 Y112.253 E.20669
+G1 X135.156 Y112.829 E.01852
+G1 X131.186 Y116.798 E.18052
+G1 X131.762 Y116.798 E.01852
+G1 X135.156 Y113.404 E.15435
+G1 X135.156 Y113.98 E.01852
+G1 X132.338 Y116.798 E.12815
+G1 X132.913 Y116.798 E.01849
+G1 X135.156 Y114.556 E.10198
+G1 X135.156 Y115.132 E.01852
+G1 X133.489 Y116.798 E.07579
+G1 X134.065 Y116.798 E.01852
+G1 X135.156 Y115.707 E.04961
+G1 X135.37 Y116.116 E.01484
+;WIDTH:0.38292
+G1 X135.299 Y116.097 E.00197
+G1 X135.318 Y116.168 E.00197
+G1 X135.359 Y116.157 E.00114
+;WIDTH:0.41646
+G1 X135.257 Y116.22 E.00354
+;WIDTH:0.449999
+G1 X135.156 Y116.283 E.00383
+G1 X134.641 Y116.798 E.02342
+;LAYER_CHANGE
+;Z:1.8
+;HEIGHT:0.2
+;BEFORE_LAYER_CHANGE
+G92 E0.0
+;1.8
+
+
+G1 Z1.8 F10800
+;AFTER_LAYER_CHANGE
+;1.8
+G1 E-.6 F2100
+G1 X134.641 Y116.798 Z1.9 F10800
+G1 X127.05 Y91.763
+G1 Z1.8
+G1 E.6 F2100
+;TYPE:Perimeter
+G1 F2700
+G1 X127.227 Y91.789 E.00575
+G1 X135.461 Y91.789 E.26478
+G1 X135.461 Y94.826 E.09766
+G1 X135.461 Y118.211 E.75198
+G1 X127.895 Y118.211 E.24329
+M73 P62 R3
+M73 Q62 S3
+G1 X127.056 Y118.232 E.02699
+G1 X127.133 Y118.078 E.00554
+G1 X127.27 Y117.449 E.0207
+G1 X127.27 Y117.052 E.01277
+G1 X127.173 Y116.565 E.01597
+G1 X127.021 Y116.198 E.01277
+G1 X126.625 Y115.637 E.02208
+G1 X126.052 Y115.229 E.02262
+G1 X125.771 Y115.098 E.00997
+G1 X125.298 Y114.983 E.01565
+G1 X124.797 Y114.977 E.01611
+G1 X124.305 Y115.079 E.01616
+G1 X123.948 Y115.229 E.01245
+G1 X123.536 Y115.505 E.01595
+G1 X123.255 Y115.785 E.01276
+G1 X122.902 Y116.335 E.02102
+G1 X122.73 Y117.051 E.02368
+G1 X122.73 Y117.448 E.01277
+G1 X122.827 Y117.935 E.01597
+G1 X122.944 Y118.232 E.01026
+G1 X122.773 Y118.211 E.00554
+G1 X114.539 Y118.211 E.26478
+G1 X114.539 Y91.789 E.84963
+G1 X122.931 Y91.777 E.26986
+G1 X122.77 Y92.247 E.01598
+G1 X122.723 Y92.828 E.01874
+G1 X122.832 Y93.484 E.02138
+G1 X123.12 Y94.05 E.02042
+G1 X123.506 Y94.472 E.01839
+G1 X124.13 Y94.866 E.02373
+G1 X124.672 Y94.996 E.01792
+G1 X125.504 Y94.981 E.02676
+G1 X126.173 Y94.705 E.02327
+G1 X126.471 Y94.491 E.0118
+G1 X126.794 Y94.157 E.01494
+G1 X126.998 Y93.847 E.01193
+G1 X127.213 Y93.326 E.01812
+G1 X127.277 Y92.628 E.02254
+G1 X127.228 Y92.268 E.01168
+G1 X127.07 Y91.82 E.01528
+G1 X126.871 Y91.285 F10800
+;WIDTH:0.503497
+G1 F2700
+G1 X126.939 Y91.325 E.00287
+;WIDTH:0.476738
+G1 X127.227 Y91.382 E.01006
+;WIDTH:0.449999
+G1 X135.868 Y91.382 E.27786
+G1 X135.868 Y94.826 E.11075
+G1 X135.868 Y118.618 E.76506
+G1 X127.895 Y118.618 E.25638
+G1 X127.078 Y118.636 E.02628
+;WIDTH:0.494398
+G1 X126.764 Y118.794 E.01254
+;WIDTH:0.498293
+G1 X126.388 Y119.131 E.01816
+G1 X125.955 Y119.39 E.01815
+;WIDTH:0.499003
+G1 X125.475 Y119.538 E.0181
+G1 X124.973 Y119.593 E.01819
+;WIDTH:0.498135
+G1 X124.474 Y119.528 E.01809
+G1 X123.989 Y119.363 E.01842
+;WIDTH:0.498955
+G1 X123.619 Y119.137 E.01562
+G1 X123.236 Y118.794 E.01852
+;WIDTH:0.494428
+G1 X122.922 Y118.636 E.01254
+;WIDTH:0.449999
+G1 X122.773 Y118.618 E.00483
+G1 X114.132 Y118.618 E.27786
+G1 X114.132 Y91.382 E.87581
+G1 X122.663 Y91.382 E.27433
+;WIDTH:0.456281
+G1 X122.997 Y91.343 E.01098
+;WIDTH:0.492497
+G1 X123.206 Y91.231 E.00842
+G1 X123.648 Y90.836 E.02105
+;WIDTH:0.487224
+G1 X124.089 Y90.591 E.01771
+G1 X124.569 Y90.447 E.01759
+;WIDTH:0.490091
+G1 X125.086 Y90.411 E.01831
+;WIDTH:0.495515
+G1 X125.524 Y90.47 E.0158
+G1 X125.943 Y90.611 E.01581
+;WIDTH:0.489235
+G1 X126.43 Y90.894 E.01986
+;WIDTH:0.503497
+G1 X126.795 Y91.24 E.0183
+G1 X126.82 Y91.255 E.00106
+G1 X127.091 Y90.922 F10800
+;TYPE:External perimeter
+;WIDTH:0.449999
+G1 F1500
+G1 X127.227 Y90.975 E.00469
+G1 X136.275 Y90.975 E.29095
+G1 X136.275 Y94.826 E.12383
+G1 X136.275 Y119.025 E.77815
+G1 X127.227 Y119.025 E.29095
+M73 P63 R3
+M73 Q63 S3
+G1 X127.091 Y119.077 E.00468
+G1 X126.624 Y119.499 E.02024
+G1 X126.105 Y119.794 E.0192
+G1 X125.535 Y119.972 E.0192
+G1 X124.94 Y120.023 E.0192
+G1 X124.348 Y119.946 E.0192
+G1 X123.844 Y119.765 E.01722
+G1 X123.378 Y119.5 E.01724
+G1 X122.948 Y119.112 E.01862
+G1 X122.773 Y119.025 E.00628
+G1 X113.725 Y119.025 E.29095
+G1 X113.725 Y90.975 E.90198
+G1 X122.773 Y90.975 E.29095
+G1 X122.909 Y90.923 E.00468
+G1 X123.376 Y90.501 E.02024
+G1 X123.895 Y90.206 E.0192
+G1 X124.464 Y90.029 E.01916
+G1 X125.123 Y89.98 E.02125
+G1 X125.651 Y90.054 E.01714
+G1 X126.215 Y90.256 E.01926
+G1 X126.673 Y90.538 E.0173
+G1 X127.047 Y90.882 E.01634
+G1 X127.438 Y90.966 F10800
+G1 E-.6 F2100
+G1 Z1.9 F10800
+G1 X123.141 Y92.618
+G1 Z1.8
+G1 E.6 F2100
+;TYPE:Perimeter
+G1 F1500
+G1 X123.172 Y92.312 E.00989
+;WIDTH:0.456281
+G1 X123.369 Y91.809 E.01764
+;WIDTH:0.486164
+G1 X123.6 Y91.469 E.01439
+G1 X123.91 Y91.197 E.01444
+G1 X124.271 Y90.998 E.01443
+;WIDTH:0.485994
+G1 X124.659 Y90.883 E.01416
+;WIDTH:0.490248
+G1 X125.082 Y90.857 E.01498
+G1 X125.651 Y90.968 E.02049
+;WIDTH:0.489305
+G1 X126.137 Y91.233 E.01952
+;WIDTH:0.505686
+G1 X126.479 Y91.576 E.01771
+G1 X126.587 Y91.763 E.00789
+;WIDTH:0.477843
+G1 X126.695 Y91.95 E.00742
+;WIDTH:0.449999
+G1 X126.841 Y92.395 E.01506
+G1 X126.871 Y92.611 E.00701
+G1 X126.825 Y93.205 E.01916
+G1 X126.623 Y93.689 E.01686
+G1 X126.5 Y93.875 E.00717
+G1 X126.178 Y94.209 E.01492
+G1 X125.999 Y94.337 E.00708
+G1 X125.434 Y94.58 E.01978
+G1 X124.672 Y94.589 E.0245
+G1 X124.268 Y94.482 E.01344
+G1 X123.74 Y94.139 E.02025
+G1 X123.44 Y93.798 E.0146
+G1 X123.21 Y93.326 E.01688
+G1 X123.126 Y92.77 E.01808
+G1 X123.135 Y92.677 E.003
+G1 X123.589 Y93.121 F10800
+;TYPE:External perimeter
+G1 F1500
+G1 X123.529 Y92.65 E.01527
+G1 X123.626 Y92.233 E.01377
+G1 X123.863 Y91.811 E.01556
+G1 X124.128 Y91.562 E.01169
+G1 X124.405 Y91.401 E.0103
+G1 X124.708 Y91.305 E.01022
+G1 X125.011 Y91.278 E.00978
+G1 X125.508 Y91.365 E.01622
+G1 X125.958 Y91.628 E.01676
+G1 X126.309 Y92.076 E.0183
+G1 X126.464 Y92.593 E.01736
+G1 X126.433 Y93.094 E.01614
+G1 X126.207 Y93.592 E.01759
+G1 X125.826 Y93.969 E.01724
+G1 X125.364 Y94.179 E.01632
+G1 X124.672 Y94.182 E.02225
+G1 X124.357 Y94.074 E.01071
+G1 X123.974 Y93.805 E.01505
+G1 X123.737 Y93.51 E.01217
+G1 X123.599 Y93.202 E.01085
+G1 X123.597 Y93.18 E.00071
+G1 X123.546 Y92.784 F10800
+G1 E-.6 F2100
+G1 Z1.9 F10800
+G1 X120.81 Y96.173
+G1 Z1.8
+G1 E.6 F2100
+;TYPE:Perimeter
+G1 F2700
+G1 X121.281 Y96.161 E.01515
+G1 X129.121 Y96.161 E.25211
+G1 X129.42 Y96.206 E.00972
+G1 X129.637 Y96.301 E.00762
+G1 X129.95 Y96.588 E.01366
+G1 X130.116 Y96.964 E.01322
+G1 X130.139 Y97.179 E.00695
+G1 X130.139 Y110.821 E.43868
+G1 X130.057 Y111.221 E.01313
+G1 X129.847 Y111.535 E.01215
+G1 X129.541 Y111.749 E.01201
+G1 X129.184 Y111.837 E.01182
+G1 X127.577 Y111.839 E.05168
+G1 X120.879 Y111.839 E.21538
+G1 X120.66 Y111.815 E.00708
+G1 X120.283 Y111.647 E.01327
+G1 X120.036 Y111.393 E.01139
+G1 X119.876 Y110.997 E.01373
+G1 X119.861 Y110.821 E.00568
+G1 X119.861 Y97.179 E.43868
+G1 X119.949 Y96.764 E.01364
+G1 X120.185 Y96.434 E.01305
+M73 P64 R3
+G1 X120.363 Y96.301 E.00715
+G1 X120.703 Y96.176 E.01165
+G1 X120.75 Y96.175 E.00151
+G1 X120.84 Y96.588 F10800
+G1 F2700
+M73 Q64 S3
+G1 X121.281 Y96.568 E.0142
+G1 X129.121 Y96.568 E.25211
+G1 X129.431 Y96.652 E.01033
+G1 X129.619 Y96.824 E.00819
+G1 X129.718 Y97.05 E.00793
+G1 X129.732 Y97.179 E.00417
+G1 X129.732 Y110.821 E.43868
+G1 X129.683 Y111.061 E.00788
+G1 X129.557 Y111.25 E.0073
+G1 X129.373 Y111.378 E.00721
+G1 X129.121 Y111.432 E.00829
+G1 X127.577 Y111.432 E.04965
+G1 X120.879 Y111.432 E.21538
+G1 X120.627 Y111.378 E.00829
+G1 X120.443 Y111.25 E.00721
+G1 X120.317 Y111.061 E.0073
+G1 X120.268 Y110.821 E.00788
+G1 X120.268 Y97.179 E.43868
+G1 X120.321 Y96.93 E.00819
+G1 X120.462 Y96.732 E.00782
+G1 X120.699 Y96.595 E.0088
+G1 X120.78 Y96.591 E.00261
+G1 X120.879 Y96.975 F10800
+;TYPE:External perimeter
+G1 F1500
+G1 X129.121 Y96.975 E.26503
+G1 X129.26 Y97.03 E.00481
+G1 X129.325 Y97.179 E.00523
+G1 X129.325 Y110.821 E.43868
+G1 X129.267 Y110.964 E.00496
+G1 X129.121 Y111.025 E.00509
+G1 X127.577 Y111.025 E.04965
+G1 X120.879 Y111.025 E.21538
+G1 X120.733 Y110.964 E.00509
+G1 X120.675 Y110.821 E.00496
+G1 X120.675 Y97.179 E.43868
+G1 X120.74 Y97.03 E.00523
+G1 X120.823 Y96.997 E.00287
+G1 X121.222 Y96.978 F10800
+G1 E-.6 F2100
+G1 Z1.9 F10800
+G1 X126.87 Y117.208
+G1 Z1.8
+G1 E.6 F2100
+;TYPE:Perimeter
+G1 F1500
+G1 X126.87 Y117.369 E.00518
+G1 X126.75 Y117.942 E.01883
+;WIDTH:0.488511
+G1 X126.452 Y118.456 E.02091
+G1 X126.248 Y118.672 E.01046
+;WIDTH:0.485807
+G1 X125.797 Y118.971 E.01893
+;WIDTH:0.499003
+G1 X125.362 Y119.097 E.01632
+G1 X124.919 Y119.145 E.01605
+;WIDTH:0.486084
+G1 X124.391 Y119.041 E.01884
+;WIDTH:0.491098
+G1 X124.163 Y118.95 E.00869
+G1 X123.681 Y118.614 E.0208
+;WIDTH:0.481328
+G1 X123.317 Y118.076 E.0225
+;WIDTH:0.449999
+G1 X123.226 Y117.855 E.00769
+G1 X123.13 Y117.369 E.01593
+G1 X123.13 Y117.131 E.00765
+G1 X123.271 Y116.507 E.02057
+G1 X123.593 Y116.011 E.01902
+G1 X123.762 Y115.843 E.00766
+G1 X124.174 Y115.568 E.01593
+G1 X124.388 Y115.478 E.00747
+G1 X124.973 Y115.368 E.01914
+G1 X125.392 Y115.412 E.01355
+G1 X125.826 Y115.568 E.01483
+G1 X126.334 Y115.923 E.01993
+G1 X126.729 Y116.507 E.02267
+G1 X126.87 Y117.131 E.02057
+G1 X126.87 Y117.148 E.00055
+G1 X126.307 Y116.6 F10800
+;TYPE:External perimeter
+G1 F1500
+G1 X126.36 Y116.678 E.00303
+G1 X126.471 Y117.211 E.01751
+G1 X126.374 Y117.777 E.01847
+G1 X126.097 Y118.219 E.01677
+G1 X125.869 Y118.414 E.00965
+G1 X125.526 Y118.624 E.01293
+G1 X125.017 Y118.724 E.01668
+G1 X124.474 Y118.624 E.01775
+G1 X123.988 Y118.318 E.01847
+G1 X123.656 Y117.849 E.01848
+G1 X123.529 Y117.29 E.01843
+G1 X123.626 Y116.724 E.01847
+G1 X123.932 Y116.238 E.01847
+G1 X124.4 Y115.906 E.01845
+G1 X124.931 Y115.78 E.01755
+G1 X125.278 Y115.802 E.01118
+G1 X125.6 Y115.906 E.01088
+G1 X126.044 Y116.208 E.01727
+G1 X126.274 Y116.55 E.01325
+G1 X126.405 Y116.928 F10800
+G1 E-.6 F2100
+G1 Z1.9 F10800
+G1 X114.89 Y116.671
+G1 Z1.8
+G1 E.6 F2100
+;TYPE:Solid infill
+;WIDTH:0.575782
+G1 F4800
+G1 X114.843 Y116.718 E.0028
+G1 X114.86 Y116.782 E.00279
+G1 X114.925 Y116.799 E.00283
+G1 X114.972 Y116.752 E.0028
+G1 X114.954 Y116.688 E.0028
+;WIDTH:0.449999
+G1 X115.635 Y116.798 E.02218
+G1 X114.844 Y116.007 E.03597
+G1 X114.773 Y115.914 E.00376
+;WIDTH:0.41646
+G1 X114.701 Y115.821 E.00347
+;WIDTH:0.38292
+G1 X114.712 Y115.862 E.00114
+G1 X114.641 Y115.881 E.00197
+G1 X114.66 Y115.81 E.00197
+;WIDTH:0.449999
+G1 X114.844 Y115.432 E.01352
+G1 X116.211 Y116.798 E.06214
+G1 X116.786 Y116.798 E.01849
+G1 X114.844 Y114.856 E.08831
+G1 X114.844 Y114.28 E.01852
+G1 X117.362 Y116.798 E.11451
+G1 X117.938 Y116.798 E.01852
+G1 X114.844 Y113.705 E.14068
+G1 X114.844 Y113.129 E.01852
+G1 X118.513 Y116.798 E.16685
+G1 X119.089 Y116.798 E.01852
+G1 X114.844 Y112.553 E.19305
+M73 P65 R3
+G1 X114.844 Y111.978 E.01849
+M73 Q65 S3
+G1 X119.665 Y116.798 E.21922
+G1 X120.24 Y116.798 E.01849
+G1 X114.844 Y111.402 E.24539
+G1 X114.844 Y110.826 E.01852
+G1 X120.816 Y116.798 E.27158
+G1 X121.392 Y116.798 E.01852
+G1 X114.844 Y110.25 E.29778
+G1 X114.844 Y109.675 E.01849
+G1 X121.968 Y116.798 E.32395
+G1 X122.575 Y116.944 E.02008
+;WIDTH:0.38292
+G1 X122.459 Y116.951 E.00312
+;WIDTH:0.41646
+G1 X122.47 Y116.844 E.00317
+;WIDTH:0.449999
+G1 X122.482 Y116.736 E.00349
+G1 X114.844 Y109.099 E.34732
+G1 X114.844 Y108.523 E.01852
+G1 X122.601 Y116.279 E.35273
+G1 X122.811 Y115.914 E.01354
+G1 X114.844 Y107.948 E.36228
+G1 X114.844 Y107.372 E.01852
+G1 X123.04 Y115.567 E.3727
+G1 X123.329 Y115.281 E.01307
+G1 X114.844 Y106.796 E.38586
+G1 X114.844 Y106.221 E.01849
+G1 X119.568 Y110.944 E.21481
+G1 X119.642 Y111.067 E.00462
+;WIDTH:0.41646
+G1 X119.717 Y111.19 E.00425
+;WIDTH:0.38292
+G1 X119.698 Y111.262 E.002
+G1 X119.769 Y111.242 E.00198
+G1 X119.758 Y111.201 E.00114
+G1 X119.556 Y110.356 F10800
+;WIDTH:0.449999
+G1 F4800
+G1 X114.844 Y105.645 E.21426
+G1 X114.844 Y105.069 E.01852
+G1 X119.556 Y109.78 E.21426
+G1 X119.556 Y109.205 E.01849
+G1 X114.844 Y104.494 E.21426
+G1 X114.844 Y103.918 E.01852
+G1 X119.556 Y108.629 E.21426
+G1 X119.556 Y108.053 E.01852
+G1 X114.844 Y103.342 E.21426
+G1 X114.844 Y102.766 E.01852
+G1 X119.556 Y107.477 E.21426
+G1 X119.556 Y106.902 E.01849
+G1 X114.844 Y102.191 E.21426
+G1 X114.844 Y101.615 E.01852
+G1 X119.556 Y106.326 E.21426
+G1 X119.556 Y105.75 E.01852
+G1 X114.844 Y101.039 E.21426
+G1 X114.844 Y100.464 E.01849
+G1 X119.556 Y105.175 E.21426
+G1 X119.556 Y104.599 E.01852
+G1 X114.844 Y99.888 E.21426
+G1 X114.844 Y99.312 E.01852
+G1 X119.556 Y104.023 E.21426
+G1 X119.556 Y103.448 E.01849
+G1 X114.844 Y98.737 E.21426
+G1 X114.844 Y98.161 E.01852
+G1 X119.556 Y102.872 E.21426
+G1 X119.556 Y102.296 E.01852
+G1 X114.844 Y97.585 E.21426
+G1 X114.844 Y97.009 E.01852
+G1 X119.556 Y101.721 E.21428
+G1 X119.556 Y101.145 E.01852
+G1 X114.844 Y96.434 E.21426
+G1 X114.844 Y95.858 E.01852
+G1 X119.556 Y100.569 E.21426
+G1 X119.556 Y99.993 E.01852
+G1 X114.844 Y95.282 E.21426
+G1 X114.844 Y94.707 E.01849
+G1 X119.556 Y99.418 E.21426
+G1 X119.556 Y98.842 E.01852
+M73 P66 R3
+M73 Q66 S3
+G1 X114.844 Y94.131 E.21426
+G1 X114.844 Y93.555 E.01852
+G1 X119.556 Y98.266 E.21426
+G1 X119.556 Y97.691 E.01849
+G1 X115.067 Y93.202 E.20414
+G1 X114.926 Y93.142 E.00493
+;WIDTH:0.41646
+G1 X114.785 Y93.082 E.00452
+;WIDTH:0.38292
+G1 X114.796 Y93.123 E.00114
+G1 X114.725 Y93.142 E.00197
+G1 X114.744 Y93.071 E.00197
+G1 X115.643 Y93.202 F10800
+;WIDTH:0.449999
+G1 F4800
+G1 X119.561 Y97.121 E.1782
+G1 X119.666 Y96.65 E.01552
+G1 X116.218 Y93.202 E.1568
+G1 X116.794 Y93.202 E.01852
+G1 X119.895 Y96.303 E.14102
+G1 X120.206 Y96.039 E.01312
+G1 X117.37 Y93.202 E.12899
+G1 X117.307 Y93.1 E.00386
+;WIDTH:0.41646
+G1 X117.244 Y92.998 E.00354
+;WIDTH:0.38292
+G1 X117.255 Y93.039 E.00114
+G1 X117.183 Y93.058 E.002
+G1 X117.203 Y92.987 E.00198
+;WIDTH:0.449999
+G1 X117.946 Y93.202 E.02487
+G1 X120.631 Y95.888 E.12213
+G1 X121.151 Y95.857 E.01675
+G1 X123.977 Y95.857 E.09087
+;WIDTH:0.490414
+G1 X124.273 Y95.837 E.01049
+;WIDTH:0.530828
+G1 X124.57 Y95.817 E.01147
+G1 X125.324 Y95.82 E.02906
+;WIDTH:0.5245
+G1 X125.889 Y95.839 E.02151
+;WIDTH:0.48725
+G1 X126.454 Y95.857 E.01984
+;WIDTH:0.449999
+G1 X129.225 Y95.846 E.08911
+G1 X127.298 Y93.92 E.08761
+G1 X127.03 Y94.347 E.01621
+G1 X126.67 Y94.721 E.01669
+G1 X126.285 Y94.99 E.0151
+;WIDTH:0.481742
+G1 X125.946 Y95.144 E.01291
+;WIDTH:0.513484
+G1 X125.608 Y95.299 E.01382
+;WIDTH:0.5245
+G1 X125.324 Y95.339 E.01091
+G1 X124.68 Y95.339 E.0245
+G1 X124.368 Y95.25 E.01234
+;WIDTH:0.48725
+G1 X124.057 Y95.162 E.01134
+;WIDTH:0.449999
+G1 X123.346 Y94.732 E.02672
+G1 X123.039 Y94.441 E.0136
+G1 X122.742 Y94.018 E.01662
+G1 X122.537 Y93.559 E.01616
+G1 X122.457 Y93.202 E.01176
+G1 X118.149 Y93.202 E.13853
+G1 X118.928 Y93.609 F10800
+G1 F4800
+G1 X120.773 Y95.454 E.0839
+G1 X123.729 Y95.45 E.09505
+G1 X123.131 Y95.078 E.02265
+G1 X122.705 Y94.675 E.01886
+G1 X122.409 Y94.252 E.0166
+G1 X122.178 Y93.765 E.01733
+G1 X122.131 Y93.609 E.00524
+G1 X119.132 Y93.609 E.09644
+G1 X119.911 Y94.016 F10800
+G1 F4800
+G1 X120.938 Y95.043 E.0467
+G1 X122.489 Y95.043 E.04987
+G1 X122.076 Y94.486 E.0223
+G1 X121.845 Y94.016 E.01684
+G1 X120.115 Y94.016 E.05563
+G1 X120.777 Y94.375 E.02422
+;WIDTH:0.3529
+G1 X121.087 Y94.685 E.01073
+G1 X121.778 Y94.685 E.01692
+G1 X121.613 Y94.375 E.0086
+G1 X120.98 Y94.375 E.0155
+G1 E-.6 F2100
+G1 X120.98 Y94.375 Z1.9 F10800
+G1 X126.232 Y95.45
+G1 Z1.8
+G1 E.6 F2100
+;WIDTH:0.449999
+G1 F4800
+G1 X128.253 Y95.45 E.06499
+G1 X127.372 Y94.572 E.04
+G1 X126.991 Y94.979 E.01793
+G1 X126.564 Y95.297 E.01712
+G1 X126.417 Y95.365 E.00521
+G1 E-.6 F2100
+G1 X126.417 Y95.365 Z1.9 F10800
+G1 X120.457 Y111.934
+G1 Z1.8
+G1 E.6 F2100
+;WIDTH:0.38292
+G1 F4800
+G1 X120.438 Y112.005 E.00197
+G1 X120.509 Y111.986 E.00197
+G1 X120.498 Y111.945 E.00114
+;WIDTH:0.41646
+G1 X120.627 Y112.038 E.00469
+;WIDTH:0.449999
+G1 X120.756 Y112.132 E.00513
+G1 X123.671 Y115.047 E.13256
+G1 X124.056 Y114.857 E.01381
+G1 X121.344 Y112.144 E.12335
+G1 X121.919 Y112.144 E.01849
+G1 X124.502 Y114.726 E.11744
+G1 X125.009 Y114.658 E.01645
+G1 X122.495 Y112.144 E.11433
+G1 X123.071 Y112.144 E.01852
+G1 X125.68 Y114.754 E.11867
+G1 X125.819 Y114.829 E.00508
+;WIDTH:0.41646
+G1 X125.957 Y114.905 E.00465
+;WIDTH:0.38292
+G1 X125.938 Y114.976 E.00197
+G1 X126.009 Y114.957 E.00197
+G1 X125.998 Y114.916 E.00114
+G1 E-.6 F2100
+G1 X125.998 Y114.916 Z1.9 F10800
+G1 X127.565 Y116.675
+G1 Z1.8
+G1 E.6 F2100
+;WIDTH:0.56835
+G1 F4800
+G1 X127.518 Y116.722 E.00276
+G1 X127.535 Y116.785 E.00271
+G1 X127.599 Y116.802 E.00275
+G1 X127.645 Y116.756 E.0027
+G1 X127.628 Y116.692 E.00275
+;WIDTH:0.449999
+G1 X128.3 Y116.798 E.02188
+G1 X123.646 Y112.144 E.21164
+G1 X124.222 Y112.144 E.01852
+G1 X128.876 Y116.798 E.21164
+G1 X129.452 Y116.798 E.01852
+G1 X124.797 Y112.143 E.21169
+G1 X125.373 Y112.143 E.01852
+G1 X130.027 Y116.798 E.21167
+G1 X130.603 Y116.798 E.01852
+G1 X125.948 Y112.143 E.21169
+G1 X126.524 Y112.143 E.01852
+G1 X131.179 Y116.798 E.21169
+G1 X131.754 Y116.798 E.01849
+G1 X127.099 Y112.143 E.21169
+G1 X127.675 Y112.143 E.01852
+G1 X132.33 Y116.798 E.21169
+M73 P67 R3
+G1 X132.906 Y116.798 E.01852
+M73 Q67 S3
+G1 X128.25 Y112.142 E.21174
+G1 X128.826 Y112.142 E.01852
+G1 X133.482 Y116.798 E.21174
+G1 X134.057 Y116.798 E.01849
+G1 X129.377 Y112.118 E.21283
+G1 X129.791 Y111.956 E.0143
+G1 X134.633 Y116.798 E.22019
+G1 X135.29 Y116.946 E.02166
+;WIDTH:0.38292
+G1 X135.185 Y116.951 E.00282
+;WIDTH:0.41646
+G1 X135.17 Y116.848 E.00307
+;WIDTH:0.449999
+G1 X135.156 Y116.745 E.00334
+G1 X130.108 Y111.697 E.22956
+G1 X130.335 Y111.348 E.01339
+G1 X135.156 Y116.169 E.21924
+G1 X135.156 Y115.593 E.01852
+G1 X130.439 Y110.877 E.21449
+G1 X130.444 Y110.307 E.01833
+G1 X135.156 Y115.018 E.21426
+G1 X135.156 Y114.442 E.01852
+G1 X130.444 Y109.731 E.21426
+G1 X130.444 Y109.155 E.01852
+G1 X135.156 Y113.866 E.21426
+G1 X135.156 Y113.291 E.01849
+G1 X130.444 Y108.58 E.21426
+G1 X130.444 Y108.004 E.01852
+G1 X135.156 Y112.715 E.21426
+G1 X135.156 Y112.139 E.01852
+G1 X130.444 Y107.428 E.21426
+G1 X130.444 Y106.852 E.01852
+G1 X135.156 Y111.564 E.21428
+G1 X135.156 Y110.988 E.01852
+G1 X130.444 Y106.277 E.21426
+G1 X130.444 Y105.701 E.01852
+G1 X135.156 Y110.412 E.21426
+G1 X135.156 Y109.836 E.01852
+G1 X130.444 Y105.125 E.21426
+G1 X130.444 Y104.55 E.01849
+G1 X135.156 Y109.261 E.21426
+G1 X135.156 Y108.685 E.01852
+G1 X130.444 Y103.974 E.21426
+G1 X130.444 Y103.398 E.01852
+G1 X135.156 Y108.109 E.21426
+G1 X135.156 Y107.534 E.01849
+G1 X130.444 Y102.823 E.21426
+G1 X130.444 Y102.247 E.01852
+G1 X135.156 Y106.958 E.21426
+G1 X135.156 Y106.382 E.01852
+G1 X130.444 Y101.671 E.21426
+G1 X130.444 Y101.096 E.01849
+G1 X135.156 Y105.807 E.21426
+G1 X135.156 Y105.231 E.01852
+G1 X130.444 Y100.52 E.21426
+G1 X130.444 Y99.944 E.01852
+M73 P67 R2
+G1 X135.156 Y104.655 E.21426
+G1 X135.156 Y104.079 E.01852
+G1 X130.444 Y99.368 E.21426
+G1 X130.444 Y98.793 E.01849
+G1 X135.156 Y103.504 E.21426
+G1 X135.156 Y102.928 E.01852
+G1 X130.444 Y98.217 E.21426
+G1 X130.444 Y97.641 E.01852
+G1 X135.156 Y102.352 E.21426
+G1 X135.156 Y101.777 E.01849
+G1 X130.432 Y97.053 E.21483
+G1 X130.351 Y96.909 E.00531
+;WIDTH:0.41646
+G1 X130.269 Y96.765 E.00489
+;WIDTH:0.38292
+G1 X129.926 Y96.331 E.01486
+G1 X129.729 Y96.159 E.00702
+G1 E-.6 F2100
+G1 Z1.9 F10800
+G1 X127.466 Y93.512
+M73 Q67 S2
+G1 Z1.8
+G1 E.6 F2100
+;WIDTH:0.449999
+G1 F4800
+G1 X135.156 Y101.201 E.34969
+G1 X135.156 Y100.625 E.01852
+M73 P68 R2
+M73 Q68 S2
+G1 X127.732 Y93.202 E.33759
+G1 X127.61 Y93.126 E.00462
+;WIDTH:0.41646
+G1 X127.487 Y93.05 E.00427
+;WIDTH:0.38292
+G1 X127.498 Y93.091 E.00114
+G1 X127.427 Y93.11 E.00197
+G1 X127.446 Y93.039 E.00197
+G1 X128.308 Y93.202 F10800
+;WIDTH:0.449999
+G1 F4800
+G1 X135.156 Y100.05 E.31142
+G1 X135.156 Y99.474 E.01852
+G1 X128.884 Y93.202 E.28522
+G1 X129.459 Y93.202 E.01849
+G1 X135.156 Y98.898 E.25905
+G1 X135.156 Y98.323 E.01849
+G1 X130.035 Y93.202 E.23288
+G1 X130.611 Y93.202 E.01852
+G1 X135.156 Y97.747 E.20669
+G1 X135.156 Y97.171 E.01852
+G1 X131.187 Y93.202 E.18049
+G1 X131.762 Y93.202 E.01849
+G1 X135.156 Y96.595 E.15432
+G1 X135.156 Y96.02 E.01849
+G1 X132.338 Y93.202 E.12815
+G1 X132.914 Y93.202 E.01852
+G1 X135.156 Y95.444 E.10196
+G1 X135.156 Y94.868 E.01852
+G1 X133.489 Y93.202 E.07579
+G1 X134.065 Y93.202 E.01852
+G1 X135.156 Y94.293 E.04961
+G1 X135.318 Y93.832 E.01571
+;WIDTH:0.38292
+G1 X135.299 Y93.903 E.00197
+G1 X135.37 Y93.884 E.00197
+G1 X135.359 Y93.843 E.00114
+;WIDTH:0.41646
+G1 X135.257 Y93.78 E.00354
+;WIDTH:0.449999
+G1 X135.156 Y93.717 E.00383
+G1 X134.641 Y93.202 E.02342
+G1 X134.578 Y93.1 E.00386
+;WIDTH:0.41646
+G1 X134.514 Y92.998 E.00355
+;WIDTH:0.38292
+G1 X134.525 Y93.039 E.00114
+G1 X134.454 Y93.058 E.00197
+G1 X134.473 Y92.987 E.00197
+;LAYER_CHANGE
+;Z:2
+;HEIGHT:0.2
+;BEFORE_LAYER_CHANGE
+G92 E0.0
+;2
+
+
+G1 Z2 F10800
+;AFTER_LAYER_CHANGE
+;2
+G1 E-.6 F2100
+G1 X134.473 Y92.987 Z2.1 F10800
+G1 X127.05 Y91.764
+G1 Z2
+G1 E.6 F2100
+;TYPE:Perimeter
+;WIDTH:0.449999
+G1 F2700
+G1 X127.227 Y91.789 E.00575
+G1 X135.461 Y91.789 E.26478
+G1 X135.461 Y94.826 E.09766
+G1 X135.461 Y118.211 E.75198
+G1 X127.895 Y118.211 E.24329
+G1 X127.056 Y118.232 E.02699
+G1 X127.134 Y118.078 E.00555
+G1 X127.27 Y117.449 E.02069
+G1 X127.27 Y117.051 E.0128
+G1 X127.173 Y116.565 E.01594
+G1 X127.021 Y116.198 E.01277
+G1 X126.625 Y115.637 E.02208
+G1 X126.052 Y115.229 E.02262
+G1 X125.771 Y115.098 E.00997
+G1 X125.299 Y114.983 E.01562
+G1 X124.8 Y114.977 E.01605
+G1 X124.306 Y115.079 E.01622
+G1 X123.948 Y115.229 E.01248
+G1 X123.536 Y115.505 E.01595
+G1 X123.255 Y115.786 E.01278
+G1 X122.902 Y116.336 E.02102
+G1 X122.73 Y117.052 E.02368
+G1 X122.73 Y117.449 E.01277
+G1 X122.827 Y117.936 E.01597
+G1 X122.944 Y118.232 E.01023
+G1 X122.773 Y118.211 E.00554
+G1 X114.539 Y118.211 E.26478
+G1 X114.539 Y91.789 E.84963
+G1 X122.932 Y91.777 E.26989
+G1 X122.771 Y92.245 E.01591
+G1 X122.723 Y92.826 E.01875
+G1 X122.831 Y93.483 E.02141
+G1 X123.118 Y94.047 E.02035
+G1 X123.505 Y94.471 E.01846
+G1 X124.133 Y94.866 E.02386
+G1 X124.672 Y94.996 E.01783
+G1 X125.504 Y94.981 E.02676
+G1 X126.175 Y94.704 E.02334
+G1 X126.472 Y94.491 E.01175
+G1 X126.792 Y94.159 E.01483
+G1 X126.996 Y93.85 E.01191
+G1 X127.214 Y93.326 E.01825
+G1 X127.278 Y92.628 E.02254
+G1 X127.228 Y92.267 E.01172
+G1 X127.07 Y91.82 E.01525
+G1 X126.87 Y91.284 F10800
+;WIDTH:0.503256
+G1 F2700
+G1 X126.937 Y91.324 E.00284
+;WIDTH:0.477383
+G1 X127.227 Y91.382 E.01015
+;WIDTH:0.449999
+G1 X135.868 Y91.382 E.27786
+G1 X135.868 Y94.826 E.11075
+G1 X135.868 Y118.618 E.76506
+G1 X127.895 Y118.618 E.25638
+M73 P69 R2
+M73 Q69 S2
+G1 X127.078 Y118.637 E.02628
+;WIDTH:0.491078
+G1 X126.795 Y118.769 E.01105
+;WIDTH:0.495815
+G1 X126.438 Y119.096 E.01732
+G1 X126.003 Y119.366 E.01832
+;WIDTH:0.498123
+G1 X125.525 Y119.528 E.01815
+G1 X125.027 Y119.593 E.01806
+;WIDTH:0.499003
+G1 X124.525 Y119.538 E.01819
+G1 X124.045 Y119.39 E.0181
+;WIDTH:0.498297
+G1 X123.612 Y119.131 E.01815
+G1 X123.236 Y118.794 E.01816
+;WIDTH:0.494399
+G1 X122.922 Y118.636 E.01254
+;WIDTH:0.449999
+G1 X122.773 Y118.618 E.00483
+G1 X114.132 Y118.618 E.27786
+G1 X114.132 Y91.382 E.87581
+G1 X122.665 Y91.382 E.27439
+;WIDTH:0.456379
+G1 X122.998 Y91.343 E.01095
+;WIDTH:0.492355
+G1 X123.207 Y91.231 E.00842
+G1 X123.648 Y90.836 E.02102
+;WIDTH:0.487186
+G1 X124.088 Y90.591 E.01767
+G1 X124.569 Y90.448 E.01761
+;WIDTH:0.490664
+G1 X125.092 Y90.411 E.01854
+;WIDTH:0.495645
+G1 X125.524 Y90.47 E.01559
+G1 X125.943 Y90.611 E.01581
+;WIDTH:0.48901
+G1 X126.42 Y90.884 E.01937
+;WIDTH:0.503256
+G1 X126.795 Y91.24 E.0188
+G1 X126.818 Y91.254 E.00098
+G1 X127.092 Y90.922 F10800
+;TYPE:External perimeter
+;WIDTH:0.449999
+G1 F1500
+G1 X127.227 Y90.975 E.00466
+G1 X136.275 Y90.975 E.29095
+G1 X136.275 Y94.826 E.12383
+G1 X136.275 Y119.025 E.77815
+G1 X127.228 Y119.025 E.29092
+G1 X127.088 Y119.08 E.00484
+G1 X126.721 Y119.426 E.01622
+G1 X126.214 Y119.744 E.01924
+G1 X125.652 Y119.946 E.0192
+G1 X125.06 Y120.023 E.0192
+G1 X124.465 Y119.972 E.0192
+G1 X123.895 Y119.794 E.0192
+G1 X123.376 Y119.499 E.0192
+G1 X122.948 Y119.113 E.01853
+G1 X122.773 Y119.025 E.0063
+G1 X113.725 Y119.025 E.29095
+G1 X113.725 Y90.975 E.90198
+G1 X122.773 Y90.975 E.29095
+M73 P70 R2
+G1 X122.909 Y90.923 E.00468
+M73 Q70 S2
+G1 X123.376 Y90.501 E.02024
+G1 X123.895 Y90.206 E.0192
+G1 X124.463 Y90.029 E.01913
+G1 X125.131 Y89.98 E.02154
+G1 X125.651 Y90.054 E.01689
+G1 X126.215 Y90.256 E.01926
+G1 X126.679 Y90.543 E.01754
+G1 X127.048 Y90.883 E.01613
+G1 X127.439 Y90.966 F10800
+G1 E-.6 F2100
+G1 Z2.1 F10800
+G1 X123.141 Y92.616
+G1 Z2
+G1 E.6 F2100
+;TYPE:Perimeter
+G1 F1500
+G1 X123.172 Y92.311 E.00986
+;WIDTH:0.456379
+G1 X123.37 Y91.808 E.01766
+;WIDTH:0.486014
+G1 X123.601 Y91.468 E.01439
+G1 X123.911 Y91.196 E.01443
+G1 X124.272 Y90.998 E.01441
+G1 X124.66 Y90.883 E.01416
+;WIDTH:0.490747
+G1 X125.079 Y90.857 E.01485
+G1 X125.651 Y90.968 E.02061
+;WIDTH:0.489041
+G1 X126.137 Y91.234 E.01952
+;WIDTH:0.50559
+G1 X126.48 Y91.577 E.01773
+G1 X126.587 Y91.762 E.00781
+;WIDTH:0.477795
+G1 X126.694 Y91.946 E.00731
+;WIDTH:0.449999
+G1 X126.841 Y92.394 E.01516
+G1 X126.871 Y92.611 E.00704
+G1 X126.825 Y93.204 E.01913
+G1 X126.622 Y93.691 E.01697
+G1 X126.499 Y93.877 E.00717
+G1 X126.179 Y94.208 E.0148
+G1 X126.001 Y94.336 E.00705
+G1 X125.434 Y94.58 E.01985
+G1 X124.672 Y94.589 E.0245
+G1 X124.27 Y94.483 E.01337
+G1 X123.739 Y94.137 E.02038
+G1 X123.439 Y93.796 E.0146
+G1 X123.209 Y93.325 E.01685
+G1 X123.126 Y92.768 E.01811
+G1 X123.135 Y92.675 E.003
+G1 X123.624 Y93.257 F10800
+;TYPE:External perimeter
+G1 F1500
+G1 X123.599 Y93.2 E.002
+G1 X123.529 Y92.649 E.01786
+G1 X123.626 Y92.234 E.0137
+G1 X123.864 Y91.81 E.01564
+G1 X124.129 Y91.561 E.01169
+G1 X124.406 Y91.401 E.01029
+G1 X124.708 Y91.305 E.01019
+G1 X125.009 Y91.278 E.00972
+G1 X125.508 Y91.365 E.01629
+G1 X125.958 Y91.629 E.01678
+G1 X126.307 Y92.073 E.01816
+G1 X126.464 Y92.593 E.01747
+G1 X126.433 Y93.094 E.01614
+G1 X126.206 Y93.594 E.01766
+G1 X125.827 Y93.968 E.01712
+G1 X125.364 Y94.179 E.01636
+G1 X124.672 Y94.182 E.02225
+G1 X124.358 Y94.075 E.01067
+G1 X123.973 Y93.804 E.01514
+G1 X123.736 Y93.508 E.01219
+G1 X123.648 Y93.312 E.00691
+G1 X123.568 Y92.92 F10800
+G1 E-.6 F2100
+G1 Z2.1 F10800
+G1 X120.81 Y96.173
+G1 Z2
+G1 E.6 F2100
+;TYPE:Perimeter
+G1 F2700
+G1 X121.276 Y96.161 E.01499
+G1 X129.121 Y96.161 E.25227
+G1 X129.42 Y96.206 E.00972
+G1 X129.637 Y96.301 E.00762
+G1 X129.95 Y96.588 E.01366
+G1 X130.116 Y96.964 E.01322
+G1 X130.139 Y97.179 E.00695
+G1 X130.139 Y110.821 E.43868
+G1 X130.057 Y111.221 E.01313
+G1 X129.847 Y111.535 E.01215
+G1 X129.541 Y111.749 E.01201
+G1 X129.184 Y111.837 E.01182
+G1 X127.577 Y111.839 E.05168
+G1 X120.879 Y111.839 E.21538
+G1 X120.66 Y111.815 E.00708
+G1 X120.283 Y111.647 E.01327
+G1 X120.036 Y111.393 E.01139
+G1 X119.876 Y110.997 E.01373
+G1 X119.861 Y110.821 E.00568
+G1 X119.861 Y97.179 E.43868
+G1 X119.949 Y96.764 E.01364
+G1 X120.185 Y96.434 E.01305
+G1 X120.363 Y96.301 E.00715
+G1 X120.703 Y96.176 E.01165
+G1 X120.75 Y96.175 E.00151
+G1 X120.84 Y96.588 F10800
+G1 F2700
+G1 X121.276 Y96.568 E.01403
+G1 X129.121 Y96.568 E.25227
+G1 X129.431 Y96.652 E.01033
+G1 X129.619 Y96.824 E.00819
+G1 X129.718 Y97.05 E.00793
+G1 X129.732 Y97.179 E.00417
+G1 X129.732 Y110.821 E.43868
+G1 X129.683 Y111.061 E.00788
+G1 X129.557 Y111.25 E.0073
+G1 X129.373 Y111.378 E.00721
+G1 X129.121 Y111.432 E.00829
+G1 X127.577 Y111.432 E.04965
+G1 X120.879 Y111.432 E.21538
+G1 X120.627 Y111.378 E.00829
+G1 X120.443 Y111.25 E.00721
+G1 X120.317 Y111.061 E.0073
+G1 X120.268 Y110.821 E.00788
+G1 X120.268 Y97.179 E.43868
+G1 X120.321 Y96.93 E.00819
+G1 X120.462 Y96.732 E.00782
+G1 X120.699 Y96.595 E.0088
+G1 X120.78 Y96.591 E.00261
+G1 X120.879 Y96.975 F10800
+;TYPE:External perimeter
+G1 F1500
+G1 X129.121 Y96.975 E.26503
+G1 X129.26 Y97.03 E.00481
+G1 X129.325 Y97.179 E.00523
+G1 X129.325 Y110.821 E.43868
+G1 X129.267 Y110.964 E.00496
+G1 X129.121 Y111.025 E.00509
+G1 X127.577 Y111.025 E.04965
+G1 X120.879 Y111.025 E.21538
+G1 X120.733 Y110.964 E.00509
+M73 P71 R2
+G1 X120.675 Y110.821 E.00496
+G1 X120.675 Y97.179 E.43868
+M73 Q71 S2
+G1 X120.74 Y97.03 E.00523
+G1 X120.823 Y96.997 E.00287
+G1 X121.222 Y96.978 F10800
+G1 E-.6 F2100
+G1 Z2.1 F10800
+G1 X126.87 Y117.206
+G1 Z2
+G1 E.6 F2100
+;TYPE:Perimeter
+G1 F1500
+G1 X126.87 Y117.369 E.00524
+G1 X126.75 Y117.941 E.01879
+;WIDTH:0.491078
+G1 X126.443 Y118.471 E.02168
+;WIDTH:0.495815
+G1 X126.192 Y118.716 E.01255
+G1 X125.698 Y119.014 E.02064
+;WIDTH:0.486934
+G1 X125.123 Y119.139 E.02064
+G1 X124.877 Y119.138 E.00863
+;WIDTH:0.485602
+G1 X124.327 Y119.024 E.01964
+;WIDTH:0.498297
+G1 X123.891 Y118.772 E.01811
+G1 X123.575 Y118.501 E.01497
+;WIDTH:0.494399
+G1 X123.25 Y117.942 E.02306
+;WIDTH:0.449999
+G1 X123.13 Y117.369 E.01883
+G1 X123.13 Y117.131 E.00765
+G1 X123.271 Y116.507 E.02057
+G1 X123.593 Y116.012 E.01899
+G1 X123.762 Y115.843 E.00769
+G1 X124.174 Y115.568 E.01593
+G1 X124.389 Y115.477 E.00751
+G1 X124.976 Y115.368 E.0192
+G1 X125.392 Y115.412 E.01345
+G1 X125.826 Y115.567 E.01482
+G1 X126.334 Y115.923 E.01995
+G1 X126.683 Y116.424 E.01963
+G1 X126.774 Y116.644 E.00766
+G1 X126.87 Y117.131 E.01596
+G1 X126.87 Y117.146 E.00048
+G1 X126.242 Y116.5 F10800
+;TYPE:External perimeter
+G1 F1500
+G1 X126.344 Y116.65 E.00583
+G1 X126.471 Y117.21 E.01846
+G1 X126.374 Y117.777 E.0185
+G1 X126.088 Y118.233 E.01731
+G1 X125.953 Y118.358 E.00592
+G1 X125.555 Y118.616 E.01525
+G1 X125.04 Y118.721 E.0169
+G1 X124.474 Y118.624 E.01847
+G1 X123.988 Y118.319 E.01845
+G1 X123.656 Y117.85 E.01848
+G1 X123.529 Y117.29 E.01846
+G1 X123.626 Y116.724 E.01847
+G1 X123.932 Y116.238 E.01847
+G1 X124.4 Y115.906 E.01845
+G1 X124.935 Y115.78 E.01767
+G1 X125.278 Y115.802 E.01105
+G1 X125.6 Y115.906 E.01088
+G1 X126.044 Y116.208 E.01727
+G1 X126.208 Y116.45 E.0094
+G1 X126.371 Y116.816 F10800
+G1 E-.6 F2100
+G1 Z2.1 F10800
+G1 X135.341 Y116.213
+G1 Z2
+G1 E.6 F2100
+;TYPE:Top solid infill
+;WIDTH:0.401528
+G1 F2400
+G1 X134.731 Y116.823 E.02444
+G1 X134.224 Y116.823 E.01436
+G1 X135.181 Y115.866 E.03834
+G1 X135.181 Y115.359 E.01436
+G1 X133.717 Y116.823 E.05865
+G1 X133.209 Y116.823 E.01439
+G1 X135.181 Y114.852 E.07898
+G1 X135.181 Y114.345 E.01436
+G1 X132.702 Y116.823 E.09929
+G1 X132.195 Y116.823 E.01436
+G1 X135.181 Y113.837 E.11962
+G1 X135.181 Y113.33 E.01436
+G1 X131.688 Y116.823 E.13993
+G1 X131.181 Y116.823 E.01436
+G1 X135.181 Y112.823 E.16024
+G1 X135.181 Y112.316 E.01436
+G1 X130.674 Y116.823 E.18056
+G1 X130.167 Y116.823 E.01436
+G1 X135.181 Y111.809 E.20087
+G1 X135.181 Y111.302 E.01436
+G1 X129.659 Y116.823 E.2212
+G1 X129.152 Y116.823 E.01436
+G1 X135.181 Y110.795 E.24151
+G1 X135.181 Y110.287 E.01439
+G1 X128.645 Y116.823 E.26184
+G1 X128.138 Y116.823 E.01436
+G1 X135.181 Y109.78 E.28215
+G1 X135.181 Y109.273 E.01436
+G1 X127.631 Y116.823 E.30246
+G1 X127.51 Y116.823 E.00343
+G1 X127.445 Y116.501 E.00931
+G1 X135.181 Y108.766 E.30989
+G1 X135.181 Y108.259 E.01436
+G1 X127.302 Y116.137 E.31562
+M73 P72 R2
+G1 X127.105 Y115.828 E.01038
+M73 Q72 S2
+G1 X135.181 Y107.752 E.32353
+G1 X135.181 Y107.245 E.01436
+G1 X126.896 Y115.529 E.33189
+G1 X126.825 Y115.44 E.00323
+G1 X126.635 Y115.283 E.00698
+G1 X135.181 Y106.737 E.34236
+G1 X135.181 Y106.23 E.01436
+G1 X130.401 Y111.01 E.19149
+G1 X130.315 Y111.332 E.00944
+G1 X130.196 Y111.55 E.00704
+G1 X130.047 Y111.732 E.00666
+G1 X129.88 Y111.875 E.00623
+G1 X129.657 Y112.004 E.0073
+G1 X129.4 Y112.09 E.00768
+G1 X129.311 Y112.099 E.00253
+G1 X126.332 Y115.079 E.11936
+G1 X126.203 Y114.993 E.00439
+G1 X126.004 Y114.9 E.00622
+G1 X128.784 Y112.119 E.11139
+G1 X128.277 Y112.119 E.01436
+G1 X125.631 Y114.765 E.106
+G1 X125.194 Y114.695 E.01254
+G1 X127.77 Y112.119 E.1032
+G1 X127.263 Y112.119 E.01436
+G1 X124.457 Y114.926 E.11243
+G1 E-.6 F2100
+G1 X124.457 Y114.926 Z2.1 F10800
+G1 X121.891 Y116.984
+G1 Z2
+G1 E.6 F2100
+G1 F2400
+G1 X122.642 Y116.233 E.03009
+G1 X123.023 Y115.627 E.02028
+G1 X123.176 Y115.44 E.00684
+G1 X123.377 Y115.274 E.00738
+G1 X123.799 Y114.992 E.01438
+G1 X123.944 Y114.931 E.00446
+G1 X126.756 Y112.119 E.11265
+G1 X126.249 Y112.119 E.01436
+G1 X121.545 Y116.823 E.18845
+G1 X121.038 Y116.823 E.01436
+G1 X125.742 Y112.119 E.18845
+G1 X125.235 Y112.118 E.01436
+G1 X120.531 Y116.823 E.18847
+G1 X120.024 Y116.823 E.01436
+G1 X124.728 Y112.118 E.18847
+G1 X124.221 Y112.118 E.01436
+G1 X119.516 Y116.823 E.18849
+G1 X119.009 Y116.823 E.01436
+G1 X123.714 Y112.118 E.18849
+G1 X123.207 Y112.118 E.01436
+G1 X118.502 Y116.823 E.18849
+G1 X117.995 Y116.823 E.01436
+G1 X122.7 Y112.118 E.18849
+G1 X122.193 Y112.118 E.01436
+G1 X117.488 Y116.823 E.18849
+G1 X116.981 Y116.823 E.01436
+G1 X121.686 Y112.117 E.18851
+G1 X121.179 Y112.117 E.01436
+G1 X116.474 Y116.823 E.18851
+G1 X115.966 Y116.823 E.01439
+G1 X120.688 Y112.102 E.18915
+G1 X120.599 Y112.089 E.00255
+G1 X120.302 Y111.98 E.00896
+G1 X115.459 Y116.823 E.19402
+G1 X114.952 Y116.823 E.01436
+G1 X120.001 Y111.773 E.20229
+G1 X119.773 Y111.494 E.01021
+M73 P73 R2
+M73 Q73 S2
+G1 X114.819 Y116.448 E.19846
+G1 X114.819 Y115.941 E.01436
+G1 X119.624 Y111.137 E.19247
+G1 X119.581 Y110.825 E.00892
+G1 X119.581 Y110.673 E.00431
+G1 X114.819 Y115.434 E.19075
+G1 X114.819 Y114.927 E.01436
+G1 X119.581 Y110.166 E.19075
+G1 X119.581 Y109.659 E.01436
+G1 X114.819 Y114.42 E.19075
+G1 X114.819 Y113.913 E.01436
+G1 X119.581 Y109.152 E.19075
+G1 X119.581 Y108.644 E.01439
+G1 X114.819 Y113.405 E.19075
+G1 X114.819 Y112.898 E.01436
+G1 X119.581 Y108.137 E.19075
+G1 X119.581 Y107.63 E.01436
+G1 X114.819 Y112.391 E.19075
+G1 X114.819 Y111.884 E.01436
+G1 X119.581 Y107.123 E.19075
+G1 X119.581 Y106.616 E.01436
+G1 X114.819 Y111.377 E.19075
+G1 X114.819 Y110.87 E.01436
+G1 X119.581 Y106.109 E.19075
+G1 X119.581 Y105.601 E.01439
+G1 X114.819 Y110.363 E.19077
+G1 X114.819 Y109.855 E.01439
+G1 X119.581 Y105.094 E.19075
+G1 X119.581 Y104.587 E.01436
+G1 X114.819 Y109.348 E.19075
+G1 X114.819 Y108.841 E.01436
+G1 X119.581 Y104.08 E.19075
+G1 X119.581 Y103.573 E.01436
+G1 X114.819 Y108.334 E.19075
+G1 X114.819 Y107.827 E.01436
+G1 X119.581 Y103.066 E.19075
+G1 X119.581 Y102.559 E.01436
+G1 X114.819 Y107.32 E.19075
+G1 X114.819 Y106.813 E.01436
+G1 X119.581 Y102.051 E.19077
+G1 X119.581 Y101.544 E.01436
+G1 X114.819 Y106.305 E.19075
+G1 X114.819 Y105.798 E.01436
+G1 X119.581 Y101.037 E.19075
+G1 X119.581 Y100.53 E.01436
+G1 X114.819 Y105.291 E.19075
+G1 X114.819 Y104.784 E.01436
+G1 X119.581 Y100.023 E.19075
+G1 X119.581 Y99.516 E.01436
+G1 X114.819 Y104.277 E.19075
+G1 X114.819 Y103.77 E.01436
+M73 P74 R2
+G1 X119.581 Y99.009 E.19075
+G1 X119.581 Y98.501 E.01439
+M73 Q74 S2
+G1 X114.819 Y103.262 E.19075
+G1 X114.819 Y102.755 E.01436
+G1 X119.581 Y97.994 E.19075
+G1 X119.581 Y97.487 E.01436
+G1 X114.659 Y102.409 E.19718
+G1 E-.6 F2100
+G1 X114.659 Y102.409 Z2.1 F10800
+G1 X130.259 Y110.645
+G1 Z2
+G1 E.6 F2100
+G1 F2400
+G1 X135.181 Y105.723 E.19718
+G1 X135.181 Y105.216 E.01436
+G1 X130.419 Y109.977 E.19075
+G1 X130.419 Y109.47 E.01436
+G1 X135.181 Y104.709 E.19075
+G1 X135.181 Y104.202 E.01436
+G1 X130.419 Y108.963 E.19075
+G1 X130.419 Y108.456 E.01436
+G1 X135.181 Y103.694 E.19077
+G1 X135.181 Y103.187 E.01436
+G1 X130.419 Y107.948 E.19075
+G1 X130.419 Y107.441 E.01436
+G1 X135.181 Y102.68 E.19075
+G1 X135.181 Y102.173 E.01436
+G1 X130.419 Y106.934 E.19075
+G1 X130.419 Y106.427 E.01436
+G1 X135.181 Y101.666 E.19075
+G1 X135.181 Y101.159 E.01436
+G1 X130.419 Y105.92 E.19075
+G1 X130.419 Y105.413 E.01436
+G1 X135.181 Y100.652 E.19075
+G1 X135.181 Y100.144 E.01439
+G1 X130.419 Y104.906 E.19077
+G1 X130.419 Y104.398 E.01439
+G1 X135.181 Y99.637 E.19075
+G1 X135.181 Y99.13 E.01436
+G1 X130.419 Y103.891 E.19075
+G1 X130.419 Y103.384 E.01436
+G1 X135.181 Y98.623 E.19075
+G1 X135.181 Y98.116 E.01436
+G1 X130.419 Y102.877 E.19075
+G1 X130.419 Y102.37 E.01436
+G1 X135.181 Y97.609 E.19075
+G1 X135.181 Y97.102 E.01436
+G1 X130.419 Y101.863 E.19075
+G1 X130.419 Y101.356 E.01436
+G1 X135.181 Y96.594 E.19077
+G1 X135.181 Y96.087 E.01436
+G1 X130.419 Y100.848 E.19075
+G1 X130.419 Y100.341 E.01436
+M73 P75 R2
+G1 X135.181 Y95.58 E.19075
+G1 X135.181 Y95.073 E.01436
+M73 Q75 S2
+G1 X130.419 Y99.834 E.19075
+G1 X130.419 Y99.327 E.01436
+G1 X135.181 Y94.566 E.19075
+G1 X135.181 Y94.059 E.01436
+G1 X130.419 Y98.82 E.19075
+G1 X130.419 Y98.313 E.01436
+G1 X135.181 Y93.552 E.19075
+G1 X135.181 Y93.177 E.01062
+G1 X135.048 Y93.177 E.00377
+G1 X130.419 Y97.805 E.18542
+G1 X130.419 Y97.298 E.01436
+G1 X134.541 Y93.177 E.16511
+G1 X134.034 Y93.177 E.01436
+G1 X130.37 Y96.841 E.14678
+G1 X130.307 Y96.649 E.00572
+G1 X130.215 Y96.488 E.00525
+G1 X133.526 Y93.177 E.13264
+G1 X133.019 Y93.177 E.01436
+G1 X129.984 Y96.212 E.12159
+G1 X129.779 Y96.059 E.00725
+G1 X129.676 Y96.013 E.0032
+G1 X132.512 Y93.177 E.11361
+G1 X132.005 Y93.177 E.01436
+G1 X129.284 Y95.898 E.10901
+G1 X129.197 Y95.882 E.00251
+G1 X128.793 Y95.882 E.01144
+G1 X131.498 Y93.177 E.10837
+G1 X130.991 Y93.177 E.01436
+G1 X128.286 Y95.882 E.10837
+G1 X127.779 Y95.882 E.01436
+G1 X130.483 Y93.177 E.10835
+G1 X129.976 Y93.177 E.01436
+G1 X127.272 Y95.882 E.10835
+G1 X126.765 Y95.882 E.01436
+G1 X129.469 Y93.177 E.10835
+G1 X128.962 Y93.177 E.01436
+G1 X126.258 Y95.881 E.10833
+G1 X125.751 Y95.881 E.01436
+G1 X128.455 Y93.177 E.10833
+G1 X127.948 Y93.177 E.01436
+G1 X127.317 Y93.808 E.02528
+G1 X127.252 Y93.966 E.00484
+G1 X126.998 Y94.349 E.01302
+G1 X126.669 Y94.69 E.01342
+G1 X126.301 Y94.955 E.01285
+G1 X126.053 Y95.072 E.00777
+G1 X125.244 Y95.881 E.03241
+G1 X124.737 Y95.881 E.01436
+G1 X125.342 Y95.275 E.02426
+G1 X124.834 Y95.276 E.01439
+G1 X124.23 Y95.881 E.02422
+G1 X123.723 Y95.881 E.01436
+G1 X124.377 Y95.226 E.02622
+G1 X124.241 Y95.203 E.00391
+G1 X123.99 Y95.106 E.00762
+G1 X123.216 Y95.881 E.03103
+G1 X122.709 Y95.881 E.01436
+G1 X123.664 Y94.925 E.03828
+G1 X123.366 Y94.716 E.01031
+G1 X122.201 Y95.881 E.04667
+G1 X121.694 Y95.881 E.01436
+G1 X123.103 Y94.472 E.05645
+G1 X122.878 Y94.19 E.01022
+G1 X121.026 Y96.041 E.07417
+G1 E-.6 F2100
+G1 X121.026 Y96.041 Z2.1 F10800
+G1 X122.821 Y93.74
+G1 Z2
+G1 E.6 F2100
+G1 F2400
+G1 X120.661 Y95.899 E.08651
+G1 X120.495 Y95.938 E.00483
+G1 X120.221 Y96.059 E.00848
+G1 X119.994 Y96.228 E.00802
+G1 X119.821 Y96.425 E.00743
+G1 X119.693 Y96.649 E.00731
+G1 X119.604 Y96.957 E.00908
+G1 X114.819 Y101.741 E.19167
+G1 X114.819 Y101.234 E.01436
+G1 X122.547 Y93.507 E.30957
+G1 X122.494 Y93.177 E.00947
+G1 X122.369 Y93.177 E.00354
+G1 X114.819 Y100.727 E.30246
+G1 X114.819 Y100.22 E.01436
+G1 X121.862 Y93.177 E.28215
+G1 X121.355 Y93.177 E.01436
+M73 P76 R2
+G1 X114.819 Y99.712 E.26182
+G1 X114.819 Y99.205 E.01436
+M73 Q76 S2
+G1 X120.848 Y93.177 E.24151
+G1 X120.341 Y93.177 E.01436
+G1 X114.819 Y98.698 E.2212
+G1 X114.819 Y98.191 E.01436
+G1 X119.833 Y93.177 E.20087
+G1 X119.326 Y93.177 E.01436
+G1 X114.819 Y97.684 E.18056
+G1 X114.819 Y97.177 E.01436
+G1 X118.819 Y93.177 E.16024
+G1 X118.312 Y93.177 E.01436
+G1 X114.819 Y96.67 E.13993
+G1 X114.819 Y96.162 E.01439
+G1 X117.805 Y93.177 E.1196
+G1 X117.298 Y93.177 E.01436
+G1 X114.819 Y95.655 E.09929
+G1 X114.819 Y95.148 E.01436
+G1 X116.79 Y93.177 E.07896
+G1 X116.283 Y93.177 E.01436
+G1 X114.819 Y94.641 E.05865
+G1 X114.819 Y94.134 E.01436
+G1 X115.776 Y93.177 E.03834
+G1 X115.269 Y93.177 E.01436
+G1 X114.659 Y93.787 E.02444
+;LAYER_CHANGE
+;Z:2.2
+;HEIGHT:0.2
+;BEFORE_LAYER_CHANGE
+G92 E0.0
+;2.2
+
+
+G1 Z2.2 F10800
+;AFTER_LAYER_CHANGE
+;2.2
+G1 E-.6 F2100
+G1 X114.659 Y93.787 Z2.3 F10800
+G1 X127.223 Y116.814
+G1 Z2.2
+G1 E.6 F2100
+;TYPE:Perimeter
+;WIDTH:0.449999
+G1 F1255
+G1 X135.461 Y116.814 E.2649
+G1 X135.461 Y117.513 E.02248
+G1 X135.461 Y118.211 E.02245
+G1 X127.895 Y118.211 E.24329
+G1 X127.056 Y118.232 E.02699
+G1 X127.133 Y118.078 E.00554
+G1 X127.27 Y117.449 E.0207
+G1 X127.27 Y117.052 E.01277
+G1 X127.234 Y116.873 E.00587
+G1 E-.6 F2100
+G1 X127.234 Y116.873 Z2.3 F10800
+G1 X124.964 Y115.888
+G1 Z2.2
+G1 E.6 F2100
+;TYPE:External perimeter
+;WIDTH:0.38292
+G1 F1255
+G1 X125.229 Y115.897 E.00712
+G1 E-.6 F2100
+G1 X125.229 Y115.897 Z2.3 F10800
+G1 X122.778 Y116.814
+G1 Z2.2
+G1 E.6 F2100
+;TYPE:Perimeter
+;WIDTH:0.449999
+G1 F1255
+G1 X122.73 Y117.051 E.00778
+G1 X122.723 Y117.406 E.01142
+G1 X122.827 Y117.935 E.01734
+G1 X122.944 Y118.232 E.01026
+G1 X122.773 Y118.211 E.00554
+G1 X114.539 Y118.211 E.26478
+G1 X114.539 Y116.814 E.04492
+G1 X122.718 Y116.814 E.26301
+G1 E-.6 F2100
+G1 X122.718 Y116.814 Z2.3 F10800
+G1 X126.671 Y116.407
+G1 Z2.2
+G1 E.6 F2100
+G1 F1255
+G1 X135.868 Y116.407 E.29574
+G1 X135.868 Y117.513 E.03556
+M73 P77 R2
+M73 Q77 S2
+G1 X135.868 Y118.618 E.03553
+G1 X127.895 Y118.618 E.25638
+G1 X127.078 Y118.636 E.02628
+;WIDTH:0.488515
+G1 X126.805 Y118.761 E.01057
+G1 X126.519 Y119.021 E.0136
+;WIDTH:0.490617
+G1 X126.011 Y119.363 E.02166
+;WIDTH:0.498124
+G1 X125.525 Y119.528 E.01846
+G1 X125.026 Y119.593 E.01809
+;WIDTH:0.499004
+G1 X124.525 Y119.538 E.01816
+G1 X124.045 Y119.39 E.0181
+;WIDTH:0.498311
+G1 X123.612 Y119.131 E.01815
+G1 X123.236 Y118.794 E.01816
+;WIDTH:0.494476
+G1 X122.922 Y118.636 E.01254
+;WIDTH:0.449999
+G1 X122.773 Y118.618 E.00483
+G1 X114.132 Y118.618 E.27786
+G1 X114.132 Y116.407 E.0711
+G1 X123.309 Y116.407 E.2951
+G1 X123.226 Y116.644 E.00807
+G1 X123.13 Y117.131 E.01596
+G1 X123.125 Y117.343 E.00682
+G1 X123.226 Y117.856 E.01681
+G1 X123.318 Y118.076 E.00767
+;WIDTH:0.481372
+G1 X123.681 Y118.614 E.02248
+;WIDTH:0.486693
+G1 X124.164 Y118.948 E.02059
+G1 X124.391 Y119.041 E.0086
+;WIDTH:0.485646
+G1 X124.946 Y119.146 E.01975
+;WIDTH:0.498124
+G1 X125.452 Y119.079 E.01835
+G1 X125.818 Y118.962 E.01382
+;WIDTH:0.490617
+G1 X126.248 Y118.672 E.01834
+;WIDTH:0.488515
+G1 X126.452 Y118.456 E.01046
+G1 X126.75 Y117.942 E.02091
+;WIDTH:0.449999
+G1 X126.87 Y117.369 E.01883
+G1 X126.87 Y117.131 E.00765
+G1 X126.774 Y116.644 E.01596
+G1 X126.695 Y116.462 E.00638
+G1 X125.74 Y116 F10800
+;TYPE:External perimeter
+G1 F1255
+G1 X136.275 Y116 E.33877
+G1 X136.275 Y117.513 E.04865
+G1 X136.275 Y119.025 E.04862
+G1 X127.227 Y119.025 E.29095
+G1 X127.091 Y119.077 E.00468
+G1 X126.67 Y119.457 E.01824
+G1 X126.215 Y119.744 E.0173
+G1 X125.652 Y119.946 E.01923
+G1 X125.06 Y120.023 E.0192
+G1 X124.465 Y119.972 E.0192
+G1 X123.895 Y119.794 E.0192
+G1 X123.376 Y119.499 E.0192
+G1 X122.948 Y119.112 E.01855
+G1 X122.773 Y119.025 E.00628
+G1 X113.725 Y119.025 E.29095
+G1 X113.725 Y116 E.09727
+G1 X124.26 Y116 E.33877
+G1 X123.932 Y116.238 E.01303
+G1 X123.626 Y116.724 E.01847
+G1 X123.529 Y117.29 E.01847
+G1 X123.656 Y117.85 E.01846
+G1 X123.988 Y118.318 E.01845
+G1 X124.474 Y118.624 E.01847
+G1 X125.026 Y118.723 E.01803
+G1 X125.526 Y118.624 E.01639
+G1 X125.862 Y118.419 E.01266
+G1 X126.097 Y118.219 E.00992
+G1 X126.374 Y117.777 E.01677
+G1 X126.473 Y117.281 E.01626
+G1 X126.374 Y116.724 E.01819
+G1 X126.068 Y116.238 E.01847
+G1 X125.789 Y116.035 E.0111
+G1 X126.187 Y115.995 F10800
+G1 E-.6 F2100
+G1 Z2.3 F10800
+G1 X127.247 Y93.186
+G1 Z2.2
+M73 P78 R2
+G1 E.6 F2100
+;TYPE:Perimeter
+G1 F1255
+M73 Q78 S2
+G1 X127.281 Y92.771 E.01339
+G1 X127.242 Y92.333 E.01414
+G1 X127.142 Y91.973 E.01201
+G1 X127.028 Y91.742 E.00828
+G1 X127.227 Y91.789 E.00658
+G1 X135.461 Y91.789 E.26478
+G1 X135.461 Y92.488 E.02248
+G1 X135.461 Y93.186 E.02245
+G1 X127.307 Y93.186 E.2622
+G1 E-.6 F2100
+G1 X127.307 Y93.186 Z2.3 F10800
+G1 X122.77 Y93.186
+G1 Z2.2
+G1 E.6 F2100
+G1 F1255
+G1 X114.539 Y93.186 E.26468
+G1 X114.539 Y91.789 E.04492
+G1 X122.768 Y91.789 E.26461
+G1 X122.973 Y91.739 E.00679
+G1 X122.869 Y91.945 E.00742
+G1 X122.763 Y92.308 E.01216
+G1 X122.719 Y92.746 E.01416
+G1 X122.763 Y93.126 E.0123
+G1 X123.258 Y93.421 F10800
+G1 F1255
+G1 X123.113 Y93.509 E.00545
+G1 X123.077 Y93.593 E.00294
+G1 X114.132 Y93.593 E.28764
+G1 X114.132 Y91.382 E.0711
+G1 X122.768 Y91.382 E.2777
+;WIDTH:0.473121
+G1 X123.067 Y91.32 E.01038
+M73 P78 R1
+;WIDTH:0.49357
+G1 X123.196 Y91.241 E.00538
+G1 X123.628 Y90.849 E.02077
+;WIDTH:0.497824
+G1 X124.068 Y90.603 E.01811
+G1 X124.569 Y90.448 E.01884
+;WIDTH:0.494932
+G1 X125.099 Y90.414 E.01896
+G1 X125.525 Y90.467 E.01533
+;WIDTH:0.495878
+G1 X126.01 Y90.64 E.01842
+G1 X126.368 Y90.845 E.01476
+;WIDTH:0.491411
+G1 X126.741 Y91.183 E.01783
+G1 X126.949 Y91.327 E.00896
+;WIDTH:0.471421
+G1 X127.227 Y91.382 E.00959
+;WIDTH:0.449999
+G1 X135.868 Y91.382 E.27786
+G1 X135.868 Y92.488 E.03556
+M73 Q78 S1
+G1 X135.868 Y93.593 E.03553
+G1 X127.02 Y93.593 E.28452
+G1 X126.973 Y93.491 E.00361
+G1 X126.747 Y93.4 E.00783
+G1 X126.845 Y93.059 E.01141
+G1 X126.875 Y92.806 E.00819
+G1 X126.837 Y92.369 E.01411
+G1 X126.764 Y92.126 E.00816
+;WIDTH:0.494018
+G1 X126.484 Y91.558 E.02257
+G1 X126.114 Y91.217 E.01793
+;WIDTH:0.495878
+G1 X125.85 Y91.063 E.01094
+G1 X125.316 Y90.878 E.02022
+;WIDTH:0.483024
+G1 X124.742 Y90.872 E.01996
+;WIDTH:0.497824
+G1 X124.24 Y91.026 E.01887
+G1 X123.903 Y91.204 E.0137
+;WIDTH:0.495101
+G1 X123.508 Y91.566 E.01914
+G1 X123.232 Y92.129 E.0224
+;WIDTH:0.449999
+G1 X123.143 Y92.596 E.01529
+G1 X123.144 Y93.01 E.01331
+G1 X123.242 Y93.364 E.01181
+G1 X123.936 Y93.75 F10800
+;TYPE:External perimeter
+G1 F1255
+G1 X123.553 Y93.75 E.01232
+G1 X123.392 Y93.805 E.00547
+G1 X123.328 Y94 E.0066
+G1 X113.725 Y94 E.3088
+G1 X113.725 Y90.975 E.09727
+G1 X122.768 Y90.975 E.29079
+M73 P79 R1
+G1 X122.909 Y90.923 E.00483
+M73 Q79 S1
+G1 X123.376 Y90.501 E.02024
+G1 X123.895 Y90.206 E.0192
+G1 X124.464 Y90.029 E.01916
+G1 X125.138 Y89.98 E.02173
+G1 X125.65 Y90.053 E.01663
+G1 X126.155 Y90.235 E.01726
+G1 X126.623 Y90.5 E.01729
+G1 X127.091 Y90.923 E.02029
+G1 X127.227 Y90.975 E.00468
+G1 X136.275 Y90.975 E.29095
+G1 X136.275 Y92.488 E.04865
+G1 X136.275 Y94 E.04862
+G1 X126.778 Y94 E.30539
+G1 X126.707 Y93.799 E.00685
+G1 X126.574 Y93.75 E.00456
+G1 X126.07 Y93.75 E.01621
+G1 X126.327 Y93.387 E.0143
+G1 X126.47 Y92.842 E.01812
+G1 X126.398 Y92.306 E.01739
+G1 X126.149 Y91.829 E.0173
+G1 X125.762 Y91.491 E.01652
+G1 X125.228 Y91.295 E.01829
+G1 X124.714 Y91.306 E.01653
+G1 X124.224 Y91.495 E.01689
+G1 X123.841 Y91.838 E.01653
+G1 X123.594 Y92.316 E.0173
+G1 X123.53 Y92.826 E.01653
+G1 X123.668 Y93.377 E.01827
+G1 X123.901 Y93.701 E.01283
+G1 X123.506 Y93.76 F10800
+;LAYER_CHANGE
+;Z:2.4
+;HEIGHT:0.2
+;BEFORE_LAYER_CHANGE
+G92 E0.0
+;2.4
+
+
+G1 Z2.4 F10800
+;AFTER_LAYER_CHANGE
+;2.4
+G1 E-.6 F2100
+G1 Z2.5 F10800
+G1 X127.223 Y116.814
+G1 Z2.4
+G1 E.6 F2100
+;TYPE:Perimeter
+G1 F1253
+G1 X135.461 Y116.814 E.2649
+G1 X135.461 Y117.513 E.02248
+G1 X135.461 Y118.211 E.02245
+G1 X127.895 Y118.211 E.24329
+G1 X127.056 Y118.232 E.02699
+G1 X127.133 Y118.078 E.00554
+G1 X127.27 Y117.449 E.0207
+G1 X127.27 Y117.051 E.0128
+G1 X127.234 Y116.873 E.00584
+G1 E-.6 F2100
+G1 X127.234 Y116.873 Z2.5 F10800
+G1 X124.967 Y115.888
+G1 Z2.4
+G1 E.6 F2100
+;TYPE:External perimeter
+;WIDTH:0.38292
+G1 F1253
+G1 X125.229 Y115.897 E.00704
+G1 E-.6 F2100
+G1 X125.229 Y115.897 Z2.5 F10800
+G1 X122.777 Y116.814
+G1 Z2.4
+G1 E.6 F2100
+;TYPE:Perimeter
+;WIDTH:0.449999
+G1 F1253
+G1 X122.73 Y117.051 E.00777
+G1 X122.723 Y117.406 E.01142
+G1 X122.827 Y117.935 E.01734
+G1 X122.944 Y118.232 E.01026
+G1 X122.773 Y118.211 E.00554
+G1 X114.539 Y118.211 E.26478
+G1 X114.539 Y116.814 E.04492
+G1 X122.717 Y116.814 E.26297
+G1 E-.6 F2100
+G1 X122.717 Y116.814 Z2.5 F10800
+G1 X126.671 Y116.407
+G1 Z2.4
+G1 E.6 F2100
+G1 F1253
+G1 X135.868 Y116.407 E.29574
+G1 X135.868 Y117.513 E.03556
+M73 P80 R1
+M73 Q80 S1
+G1 X135.868 Y118.618 E.03553
+G1 X127.895 Y118.618 E.25638
+G1 X127.078 Y118.636 E.02628
+;WIDTH:0.488511
+G1 X126.805 Y118.761 E.01057
+G1 X126.519 Y119.02 E.01358
+;WIDTH:0.486957
+G1 X126.023 Y119.354 E.02097
+;WIDTH:0.498339
+G1 X125.531 Y119.527 E.01876
+G1 X125.026 Y119.593 E.01832
+;WIDTH:0.499011
+G1 X124.525 Y119.538 E.01816
+G1 X124.045 Y119.39 E.0181
+;WIDTH:0.498309
+G1 X123.612 Y119.131 E.01815
+G1 X123.235 Y118.794 E.01819
+;WIDTH:0.494483
+G1 X122.922 Y118.636 E.01251
+;WIDTH:0.449999
+G1 X122.773 Y118.618 E.00483
+G1 X114.132 Y118.618 E.27786
+G1 X114.132 Y116.407 E.0711
+G1 X123.309 Y116.407 E.2951
+G1 X123.226 Y116.644 E.00807
+G1 X123.13 Y117.131 E.01596
+G1 X123.125 Y117.343 E.00682
+G1 X123.226 Y117.856 E.01681
+G1 X123.317 Y118.076 E.00766
+;WIDTH:0.481366
+G1 X123.681 Y118.614 E.0225
+;WIDTH:0.486691
+G1 X124.164 Y118.948 E.02059
+G1 X124.39 Y119.041 E.00857
+;WIDTH:0.485654
+G1 X124.946 Y119.146 E.01979
+;WIDTH:0.498339
+G1 X125.458 Y119.078 E.01858
+G1 X125.801 Y118.97 E.01294
+;WIDTH:0.486957
+G1 X126.248 Y118.672 E.01884
+;WIDTH:0.488511
+G1 X126.452 Y118.456 E.01046
+G1 X126.75 Y117.942 E.02091
+;WIDTH:0.449999
+G1 X126.87 Y117.369 E.01883
+G1 X126.87 Y117.131 E.00765
+G1 X126.774 Y116.644 E.01596
+G1 X126.695 Y116.462 E.00638
+G1 X125.74 Y116 F10800
+;TYPE:External perimeter
+G1 F1253
+G1 X136.275 Y116 E.33877
+G1 X136.275 Y117.513 E.04865
+G1 X136.275 Y119.025 E.04862
+G1 X127.227 Y119.025 E.29095
+G1 X127.091 Y119.077 E.00468
+G1 X126.623 Y119.499 E.02026
+G1 X126.138 Y119.779 E.01801
+G1 X125.653 Y119.946 E.01649
+G1 X125.06 Y120.023 E.01923
+G1 X124.465 Y119.972 E.0192
+G1 X123.895 Y119.794 E.0192
+G1 X123.376 Y119.499 E.0192
+G1 X122.948 Y119.112 E.01855
+G1 X122.773 Y119.025 E.00628
+G1 X113.725 Y119.025 E.29095
+G1 X113.725 Y116 E.09727
+G1 X124.26 Y116 E.33877
+G1 X123.932 Y116.238 E.01303
+G1 X123.626 Y116.724 E.01847
+G1 X123.529 Y117.29 E.01847
+G1 X123.656 Y117.849 E.01843
+G1 X123.988 Y118.318 E.01848
+G1 X124.473 Y118.624 E.01844
+G1 X125.026 Y118.723 E.01807
+G1 X125.526 Y118.624 E.01639
+G1 X125.867 Y118.415 E.01286
+G1 X126.097 Y118.219 E.00972
+G1 X126.374 Y117.777 E.01677
+G1 X126.473 Y117.281 E.01626
+G1 X126.374 Y116.724 E.01819
+G1 X126.069 Y116.238 E.01845
+G1 X125.789 Y116.035 E.01112
+G1 X126.187 Y115.995 F10800
+G1 E-.6 F2100
+G1 Z2.5 F10800
+G1 X127.247 Y93.186
+G1 Z2.4
+M73 P81 R1
+G1 E.6 F2100
+;TYPE:Perimeter
+G1 F1253
+M73 Q81 S1
+G1 X127.281 Y92.771 E.01339
+G1 X127.242 Y92.333 E.01414
+G1 X127.142 Y91.973 E.01201
+G1 X127.028 Y91.742 E.00828
+G1 X127.227 Y91.789 E.00658
+G1 X135.461 Y91.789 E.26478
+G1 X135.461 Y92.488 E.02248
+G1 X135.461 Y93.186 E.02245
+G1 X127.307 Y93.186 E.2622
+G1 E-.6 F2100
+G1 X127.307 Y93.186 Z2.5 F10800
+G1 X122.77 Y93.186
+G1 Z2.4
+G1 E.6 F2100
+G1 F1253
+G1 X114.539 Y93.186 E.26468
+G1 X114.539 Y91.789 E.04492
+G1 X122.771 Y91.789 E.26471
+G1 X122.973 Y91.739 E.00669
+G1 X122.869 Y91.945 E.00742
+G1 X122.763 Y92.306 E.0121
+G1 X122.719 Y92.744 E.01416
+G1 X122.764 Y93.126 E.01237
+G1 X123.258 Y93.421 F10800
+G1 F1253
+G1 X123.113 Y93.509 E.00545
+G1 X123.077 Y93.593 E.00294
+G1 X114.132 Y93.593 E.28764
+G1 X114.132 Y91.382 E.0711
+G1 X122.771 Y91.382 E.2778
+;WIDTH:0.473256
+G1 X123.068 Y91.319 E.01032
+;WIDTH:0.49355
+G1 X123.196 Y91.241 E.00534
+G1 X123.628 Y90.849 E.02076
+;WIDTH:0.497773
+G1 X124.068 Y90.603 E.01811
+G1 X124.568 Y90.448 E.01881
+;WIDTH:0.494823
+G1 X125.106 Y90.414 E.01924
+G1 X125.524 Y90.466 E.01504
+;WIDTH:0.495909
+G1 X126.01 Y90.64 E.01847
+G1 X126.368 Y90.845 E.01476
+;WIDTH:0.491439
+G1 X126.741 Y91.183 E.01783
+G1 X126.949 Y91.327 E.00896
+;WIDTH:0.471398
+G1 X127.227 Y91.382 E.00959
+;WIDTH:0.449999
+G1 X135.868 Y91.382 E.27786
+G1 X135.868 Y92.488 E.03556
+G1 X135.868 Y93.593 E.03553
+G1 X127.02 Y93.593 E.28452
+G1 X126.973 Y93.491 E.00361
+G1 X126.747 Y93.4 E.00783
+G1 X126.845 Y93.059 E.01141
+G1 X126.875 Y92.806 E.00819
+G1 X126.837 Y92.369 E.01411
+G1 X126.764 Y92.126 E.00816
+;WIDTH:0.49403
+G1 X126.484 Y91.558 E.02257
+G1 X126.115 Y91.217 E.0179
+;WIDTH:0.495909
+G1 X125.85 Y91.063 E.01097
+G1 X125.317 Y90.878 E.02019
+;WIDTH:0.4832
+G1 X124.744 Y90.872 E.01993
+;WIDTH:0.497773
+G1 X124.24 Y91.026 E.01894
+G1 X123.904 Y91.203 E.01365
+;WIDTH:0.495047
+G1 X123.509 Y91.566 E.01916
+G1 X123.232 Y92.129 E.02241
+;WIDTH:0.449999
+G1 X123.143 Y92.597 E.01532
+G1 X123.144 Y93.008 E.01322
+G1 X123.242 Y93.363 E.01184
+G1 X123.937 Y93.75 F10800
+;TYPE:External perimeter
+G1 F1253
+G1 X123.552 Y93.75 E.01238
+G1 X123.392 Y93.805 E.00544
+G1 X123.328 Y94 E.0066
+G1 X113.725 Y94 E.3088
+G1 X113.725 Y90.975 E.09727
+G1 X122.771 Y90.975 E.29089
+M73 P82 R1
+G1 X122.909 Y90.923 E.00474
+M73 Q82 S1
+G1 X123.376 Y90.501 E.02024
+G1 X123.895 Y90.206 E.0192
+G1 X124.463 Y90.029 E.01913
+G1 X125.146 Y89.981 E.02202
+G1 X125.65 Y90.053 E.01637
+G1 X126.155 Y90.235 E.01726
+G1 X126.623 Y90.5 E.01729
+G1 X127.091 Y90.923 E.02029
+G1 X127.227 Y90.975 E.00468
+G1 X136.275 Y90.975 E.29095
+G1 X136.275 Y92.488 E.04865
+G1 X136.275 Y94 E.04862
+G1 X126.778 Y94 E.30539
+G1 X126.707 Y93.799 E.00685
+G1 X126.574 Y93.75 E.00456
+G1 X126.07 Y93.75 E.01621
+G1 X126.327 Y93.386 E.01433
+G1 X126.47 Y92.842 E.01809
+G1 X126.398 Y92.306 E.01739
+G1 X126.149 Y91.829 E.0173
+G1 X125.762 Y91.491 E.01652
+G1 X125.229 Y91.295 E.01826
+G1 X124.715 Y91.306 E.01653
+G1 X124.225 Y91.495 E.01689
+G1 X123.841 Y91.837 E.01654
+G1 X123.594 Y92.315 E.0173
+G1 X123.529 Y92.825 E.01653
+G1 X123.668 Y93.375 E.01824
+G1 X123.902 Y93.701 E.0129
+G1 X123.506 Y93.76 F10800
+;LAYER_CHANGE
+;Z:2.6
+;HEIGHT:0.2
+;BEFORE_LAYER_CHANGE
+G92 E0.0
+;2.6
+
+
+G1 Z2.6 F10800
+;AFTER_LAYER_CHANGE
+;2.6
+G1 E-.6 F2100
+G1 Z2.7 F10800
+G1 X127.223 Y116.814
+G1 Z2.6
+G1 E.6 F2100
+;TYPE:Perimeter
+G1 F1500
+G1 X135.461 Y116.814 E.2649
+G1 X135.461 Y117.513 E.02248
+G1 X135.461 Y118.211 E.02245
+G1 X127.895 Y118.211 E.24329
+G1 X127.056 Y118.232 E.02699
+G1 X127.133 Y118.078 E.00554
+G1 X127.27 Y117.449 E.0207
+G1 X127.27 Y117.052 E.01277
+G1 X127.234 Y116.873 E.00587
+G1 E-.6 F2100
+G1 X127.234 Y116.873 Z2.7 F10800
+G1 X124.97 Y115.888
+G1 Z2.6
+G1 E.6 F2100
+;TYPE:External perimeter
+;WIDTH:0.38292
+G1 F1500
+G1 X125.229 Y115.897 E.00696
+G1 E-.6 F2100
+G1 X125.229 Y115.897 Z2.7 F10800
+G1 X122.777 Y116.814
+G1 Z2.6
+G1 E.6 F2100
+;TYPE:Perimeter
+;WIDTH:0.449999
+G1 F1500
+G1 X122.73 Y117.051 E.00777
+G1 X122.723 Y117.406 E.01142
+G1 X122.827 Y117.935 E.01734
+G1 X122.944 Y118.232 E.01026
+G1 X122.773 Y118.211 E.00554
+G1 X114.539 Y118.211 E.26478
+G1 X114.539 Y116.814 E.04492
+G1 X122.717 Y116.814 E.26297
+G1 E-.6 F2100
+G1 X122.717 Y116.814 Z2.7 F10800
+G1 X126.671 Y116.407
+G1 Z2.6
+G1 E.6 F2100
+G1 F1973
+G1 X135.868 Y116.407 E.29574
+G1 X135.868 Y117.513 E.03556
+G1 X135.868 Y118.618 E.03553
+G1 X127.895 Y118.618 E.25638
+G1 X127.078 Y118.636 E.02628
+M73 P83 R1
+M73 Q83 S1
+;WIDTH:0.488512
+G1 X126.805 Y118.761 E.01057
+G1 X126.519 Y119.021 E.0136
+;WIDTH:0.485809
+G1 X126.016 Y119.356 E.02114
+;WIDTH:0.498437
+G1 X125.534 Y119.526 E.01839
+G1 X125.027 Y119.593 E.0184
+;WIDTH:0.499003
+G1 X124.525 Y119.538 E.01819
+G1 X124.045 Y119.39 E.0181
+;WIDTH:0.498302
+G1 X123.612 Y119.131 E.01815
+G1 X123.235 Y118.794 E.01819
+;WIDTH:0.494471
+G1 X122.922 Y118.636 E.01251
+;WIDTH:0.449999
+G1 X122.773 Y118.618 E.00483
+G1 X114.132 Y118.618 E.27786
+G1 X114.132 Y116.407 E.0711
+G1 X123.309 Y116.407 E.2951
+G1 X123.226 Y116.644 E.00807
+G1 X123.13 Y117.131 E.01596
+G1 X123.125 Y117.343 E.00682
+G1 X123.226 Y117.855 E.01678
+G1 X123.317 Y118.076 E.00769
+;WIDTH:0.481356
+G1 X123.681 Y118.614 E.0225
+;WIDTH:0.486691
+G1 X124.164 Y118.948 E.02059
+G1 X124.39 Y119.041 E.00857
+;WIDTH:0.485651
+G1 X124.946 Y119.146 E.01979
+;WIDTH:0.498437
+G1 X125.461 Y119.077 E.0187
+G1 X125.797 Y118.971 E.01268
+;WIDTH:0.485809
+G1 X126.248 Y118.672 E.01893
+;WIDTH:0.488512
+G1 X126.452 Y118.456 E.01046
+G1 X126.75 Y117.942 E.02091
+;WIDTH:0.449999
+G1 X126.87 Y117.369 E.01883
+G1 X126.87 Y117.131 E.00765
+G1 X126.774 Y116.645 E.01593
+G1 X126.695 Y116.462 E.00641
+G1 X125.74 Y116 F10800
+;TYPE:External perimeter
+G1 F1500
+G1 X136.275 Y116 E.33877
+G1 X136.275 Y117.513 E.04865
+G1 X136.275 Y119.025 E.04862
+G1 X127.227 Y119.025 E.29095
+G1 X127.091 Y119.077 E.00468
+G1 X126.624 Y119.499 E.02024
+G1 X126.158 Y119.764 E.01724
+G1 X125.654 Y119.946 E.01723
+G1 X125.06 Y120.023 E.01926
+G1 X124.465 Y119.972 E.0192
+G1 X123.895 Y119.794 E.0192
+G1 X123.376 Y119.499 E.0192
+G1 X122.948 Y119.112 E.01855
+G1 X122.773 Y119.025 E.00628
+G1 X113.725 Y119.025 E.29095
+G1 X113.725 Y116 E.09727
+G1 X124.26 Y116 E.33877
+G1 X123.932 Y116.238 E.01303
+G1 X123.626 Y116.724 E.01847
+G1 X123.529 Y117.289 E.01843
+G1 X123.656 Y117.849 E.01846
+G1 X123.988 Y118.318 E.01848
+G1 X124.473 Y118.624 E.01844
+G1 X125.026 Y118.723 E.01807
+G1 X125.526 Y118.624 E.01639
+G1 X125.869 Y118.414 E.01293
+G1 X126.097 Y118.219 E.00965
+G1 X126.374 Y117.777 E.01677
+G1 X126.473 Y117.281 E.01626
+G1 X126.374 Y116.724 E.01819
+G1 X126.069 Y116.238 E.01845
+G1 X125.789 Y116.035 E.01112
+G1 X126.187 Y115.995 F10800
+G1 E-.6 F2100
+G1 Z2.7 F10800
+G1 X127.528 Y117.706
+G1 Z2.6
+G1 E.6 F2100
+;TYPE:Solid infill
+G1 F1973
+G1 X127.576 Y117.468 E.00781
+G1 X127.573 Y117.119 E.01122
+G1 X135.156 Y117.119 E.24384
+G1 X135.156 Y117.906 E.02531
+G1 X127.488 Y117.906 E.24657
+G1 X127.967 Y117.513 E.01992
+;WIDTH:0.42193
+G1 X134.763 Y117.513 E.20347
+G1 E-.6 F2100
+G1 X134.763 Y117.513 Z2.7 F10800
+G1 X114.844 Y117.119
+G1 Z2.6
+G1 E.6 F2100
+;WIDTH:0.449999
+G1 F1973
+G1 X114.844 Y117.906 E.02531
+G1 X122.512 Y117.906 E.24657
+G1 X122.42 Y117.423 E.01581
+G1 X122.427 Y117.119 E.00978
+M73 P84 R1
+G1 X115.048 Y117.119 E.23728
+G1 X115.238 Y117.513 E.01407
+M73 Q84 S1
+;WIDTH:0.421932
+G1 X122.033 Y117.513 E.20344
+G1 E-.6 F2100
+G1 X122.033 Y117.513 Z2.7 F10800
+G1 X127.247 Y93.186
+G1 Z2.6
+G1 E.6 F2100
+;TYPE:Perimeter
+;WIDTH:0.449999
+G1 F1500
+G1 X127.281 Y92.771 E.01339
+G1 X127.242 Y92.333 E.01414
+G1 X127.142 Y91.974 E.01198
+G1 X127.029 Y91.742 E.0083
+G1 X127.227 Y91.789 E.00654
+G1 X135.461 Y91.789 E.26478
+G1 X135.461 Y92.488 E.02248
+G1 X135.461 Y93.186 E.02245
+G1 X127.307 Y93.186 E.2622
+G1 E-.6 F2100
+G1 X127.307 Y93.186 Z2.7 F10800
+G1 X122.771 Y93.186
+G1 Z2.6
+G1 E.6 F2100
+G1 F1500
+G1 X114.539 Y93.186 E.26471
+G1 X114.539 Y91.789 E.04492
+G1 X122.773 Y91.789 E.26478
+G1 X122.973 Y91.738 E.00664
+G1 X122.868 Y91.945 E.00746
+G1 X122.763 Y92.304 E.01203
+G1 X122.719 Y92.742 E.01416
+G1 X122.764 Y93.126 E.01243
+G1 X123.258 Y93.421 F10800
+G1 F1973
+G1 X123.113 Y93.509 E.00545
+G1 X123.077 Y93.593 E.00294
+G1 X114.132 Y93.593 E.28764
+G1 X114.132 Y91.382 E.0711
+G1 X122.773 Y91.382 E.27786
+;WIDTH:0.473395
+G1 X123.069 Y91.319 E.01029
+;WIDTH:0.49353
+G1 X123.196 Y91.241 E.00531
+G1 X123.628 Y90.85 E.02074
+;WIDTH:0.497734
+G1 X124.068 Y90.603 E.01813
+G1 X124.568 Y90.448 E.01881
+;WIDTH:0.494715
+G1 X125.113 Y90.414 E.01949
+G1 X125.524 Y90.466 E.01478
+;WIDTH:0.495813
+G1 X126.003 Y90.637 E.0182
+G1 X126.25 Y90.776 E.01014
+;WIDTH:0.491977
+G1 X126.745 Y91.185 E.02278
+G1 X126.949 Y91.327 E.00882
+;WIDTH:0.471319
+G1 X127.227 Y91.382 E.00959
+;WIDTH:0.449999
+G1 X135.868 Y91.382 E.27786
+G1 X135.868 Y92.488 E.03556
+G1 X135.868 Y93.593 E.03553
+G1 X127.02 Y93.593 E.28452
+G1 X126.973 Y93.491 E.00361
+G1 X126.747 Y93.4 E.00783
+G1 X126.845 Y93.059 E.01141
+G1 X126.875 Y92.806 E.00819
+G1 X126.837 Y92.369 E.01411
+G1 X126.763 Y92.126 E.00817
+;WIDTH:0.495917
+G1 X126.498 Y91.573 E.02194
+G1 X126.146 Y91.243 E.01727
+;WIDTH:0.495813
+G1 X125.844 Y91.061 E.01261
+G1 X125.319 Y90.878 E.01989
+;WIDTH:0.483374
+G1 X124.745 Y90.872 E.01997
+;WIDTH:0.497734
+G1 X124.239 Y91.026 E.019
+G1 X123.905 Y91.202 E.01356
+;WIDTH:0.49499
+G1 X123.509 Y91.565 E.01918
+G1 X123.232 Y92.129 E.02244
+;WIDTH:0.449999
+G1 X123.143 Y92.598 E.01535
+G1 X123.143 Y93.006 E.01312
+G1 X123.242 Y93.363 E.01191
+G1 X123.937 Y93.75 F10800
+;TYPE:External perimeter
+G1 F1500
+G1 X123.55 Y93.75 E.01244
+G1 X123.392 Y93.805 E.00538
+G1 X123.328 Y94 E.0066
+G1 X113.725 Y94 E.3088
+G1 X113.725 Y90.975 E.09727
+G1 X122.773 Y90.975 E.29095
+G1 X122.909 Y90.923 E.00468
+M73 P85 R1
+G1 X123.376 Y90.501 E.02024
+G1 X123.895 Y90.206 E.0192
+G1 X124.463 Y90.029 E.01913
+G1 X125.153 Y89.981 E.02224
+G1 X125.65 Y90.053 E.01615
+M73 Q85 S1
+G1 X126.214 Y90.256 E.01928
+G1 X126.697 Y90.556 E.01828
+G1 X127.088 Y90.92 E.01718
+G1 X127.227 Y90.975 E.00481
+G1 X136.275 Y90.975 E.29095
+G1 X136.275 Y92.488 E.04865
+G1 X136.275 Y94 E.04862
+G1 X126.778 Y94 E.30539
+G1 X126.707 Y93.799 E.00685
+G1 X126.574 Y93.75 E.00456
+G1 X126.07 Y93.75 E.01621
+G1 X126.327 Y93.386 E.01433
+G1 X126.47 Y92.842 E.01809
+G1 X126.398 Y92.305 E.01742
+G1 X126.149 Y91.829 E.01727
+G1 X125.762 Y91.491 E.01652
+G1 X125.23 Y91.296 E.01822
+G1 X124.716 Y91.306 E.01653
+G1 X124.226 Y91.494 E.01688
+G1 X123.842 Y91.837 E.01656
+G1 X123.594 Y92.314 E.01729
+G1 X123.529 Y92.823 E.0165
+G1 X123.667 Y93.374 E.01827
+G1 X123.902 Y93.701 E.01295
+G1 X123.506 Y93.759 F10800
+G1 E-.6 F2100
+G1 Z2.7 F10800
+G1 X127.489 Y92.094
+G1 Z2.6
+G1 E.6 F2100
+;TYPE:Solid infill
+G1 F1973
+G1 X127.565 Y92.522 E.01398
+G1 X127.573 Y92.881 E.01155
+G1 X135.156 Y92.881 E.24384
+G1 X135.156 Y92.094 E.02531
+G1 X127.693 Y92.094 E.23998
+G1 X127.957 Y92.488 E.01525
+;WIDTH:0.421928
+G1 X134.763 Y92.488 E.20376
+G1 E-.6 F2100
+G1 X134.763 Y92.488 Z2.7 F10800
+G1 X114.844 Y92.094
+G1 Z2.6
+G1 E.6 F2100
+;WIDTH:0.449999
+G1 F1973
+G1 X114.844 Y92.881 E.02531
+G1 X122.428 Y92.881 E.24387
+G1 X122.459 Y92.283 E.01926
+G1 X122.51 Y92.094 E.00629
+G1 X115.048 Y92.094 E.23995
+G1 X115.238 Y92.488 E.01407
+;WIDTH:0.421928
+G1 X122.043 Y92.488 E.20373
+;LAYER_CHANGE
+;Z:2.8
+;HEIGHT:0.2
+;BEFORE_LAYER_CHANGE
+G92 E0.0
+;2.8
+
+
+G1 Z2.8 F10800
+;AFTER_LAYER_CHANGE
+;2.8
+G1 E-.6 F2100
+G1 X122.043 Y92.488 Z2.9 F10800
+G1 X127.223 Y116.814
+G1 Z2.8
+G1 E.6 F2100
+;TYPE:Perimeter
+;WIDTH:0.449999
+G1 F1500
+G1 X135.461 Y116.814 E.2649
+G1 X135.461 Y117.513 E.02248
+G1 X135.461 Y118.211 E.02245
+G1 X127.895 Y118.211 E.24329
+G1 X127.056 Y118.232 E.02699
+G1 X127.133 Y118.078 E.00554
+G1 X127.27 Y117.449 E.0207
+G1 X127.27 Y117.051 E.0128
+G1 X127.234 Y116.873 E.00584
+G1 E-.6 F2100
+G1 X127.234 Y116.873 Z2.9 F10800
+G1 X124.974 Y115.888
+G1 Z2.8
+G1 E.6 F2100
+;TYPE:External perimeter
+;WIDTH:0.38292
+G1 F1500
+G1 X125.229 Y115.897 E.00685
+G1 E-.6 F2100
+G1 X125.229 Y115.897 Z2.9 F10800
+G1 X122.777 Y116.814
+G1 Z2.8
+M73 P86 R1
+G1 E.6 F2100
+;TYPE:Perimeter
+;WIDTH:0.449999
+G1 F1500
+M73 Q86 S1
+G1 X122.73 Y117.051 E.00777
+G1 X122.723 Y117.406 E.01142
+G1 X122.827 Y117.935 E.01734
+G1 X122.944 Y118.232 E.01026
+G1 X122.773 Y118.211 E.00554
+G1 X114.539 Y118.211 E.26478
+G1 X114.539 Y116.814 E.04492
+G1 X122.717 Y116.814 E.26297
+G1 E-.6 F2100
+G1 X122.717 Y116.814 Z2.9 F10800
+G1 X126.671 Y116.407
+G1 Z2.8
+G1 E.6 F2100
+G1 F1917
+G1 X135.868 Y116.407 E.29574
+G1 X135.868 Y117.513 E.03556
+G1 X135.868 Y118.618 E.03553
+G1 X127.895 Y118.618 E.25638
+G1 X127.078 Y118.636 E.02628
+;WIDTH:0.488511
+G1 X126.805 Y118.761 E.01057
+G1 X126.519 Y119.021 E.0136
+;WIDTH:0.485809
+G1 X126.016 Y119.356 E.02114
+;WIDTH:0.498433
+G1 X125.534 Y119.526 E.01839
+G1 X125.027 Y119.593 E.0184
+;WIDTH:0.499
+G1 X124.525 Y119.538 E.01819
+G1 X124.045 Y119.39 E.0181
+;WIDTH:0.498302
+G1 X123.612 Y119.131 E.01815
+G1 X123.236 Y118.794 E.01816
+;WIDTH:0.494421
+G1 X122.922 Y118.636 E.01254
+;WIDTH:0.449999
+G1 X122.773 Y118.618 E.00483
+G1 X114.132 Y118.618 E.27786
+G1 X114.132 Y116.407 E.0711
+G1 X123.309 Y116.407 E.2951
+G1 X123.226 Y116.644 E.00807
+G1 X123.13 Y117.131 E.01596
+G1 X123.125 Y117.343 E.00682
+G1 X123.226 Y117.856 E.01681
+G1 X123.317 Y118.076 E.00766
+;WIDTH:0.481325
+G1 X123.681 Y118.614 E.0225
+;WIDTH:0.486712
+G1 X124.164 Y118.948 E.02059
+G1 X124.391 Y119.041 E.0086
+;WIDTH:0.485643
+G1 X124.946 Y119.146 E.01975
+;WIDTH:0.498433
+G1 X125.461 Y119.077 E.0187
+G1 X125.797 Y118.971 E.01268
+;WIDTH:0.485809
+G1 X126.248 Y118.672 E.01893
+;WIDTH:0.488511
+G1 X126.452 Y118.456 E.01046
+G1 X126.75 Y117.942 E.02091
+;WIDTH:0.449999
+G1 X126.87 Y117.369 E.01883
+G1 X126.87 Y117.131 E.00765
+G1 X126.774 Y116.644 E.01596
+G1 X126.695 Y116.462 E.00638
+G1 X125.74 Y116 F10800
+;TYPE:External perimeter
+G1 F1500
+G1 X136.275 Y116 E.33877
+G1 X136.275 Y117.513 E.04865
+G1 X136.275 Y119.025 E.04862
+G1 X127.227 Y119.025 E.29095
+G1 X127.091 Y119.077 E.00468
+G1 X126.624 Y119.499 E.02024
+G1 X126.158 Y119.764 E.01724
+G1 X125.654 Y119.946 E.01723
+G1 X125.06 Y120.023 E.01926
+G1 X124.465 Y119.972 E.0192
+G1 X123.895 Y119.794 E.0192
+G1 X123.376 Y119.499 E.0192
+G1 X122.948 Y119.112 E.01855
+G1 X122.773 Y119.025 E.00628
+G1 X113.725 Y119.025 E.29095
+G1 X113.725 Y116 E.09727
+G1 X124.26 Y116 E.33877
+G1 X123.932 Y116.238 E.01303
+G1 X123.626 Y116.723 E.01844
+G1 X123.529 Y117.29 E.0185
+G1 X123.656 Y117.85 E.01846
+G1 X123.988 Y118.318 E.01845
+G1 X124.474 Y118.624 E.01847
+G1 X125.026 Y118.723 E.01803
+G1 X125.526 Y118.624 E.01639
+G1 X125.869 Y118.414 E.01293
+G1 X126.097 Y118.219 E.00965
+G1 X126.374 Y117.777 E.01677
+G1 X126.473 Y117.281 E.01626
+G1 X126.374 Y116.724 E.01819
+G1 X126.069 Y116.238 E.01845
+G1 X125.789 Y116.035 E.01112
+G1 X126.187 Y115.995 F10800
+G1 X127.777 Y117.119
+;TYPE:Solid infill
+G1 F1917
+G1 X135.156 Y117.119 E.23728
+G1 X135.156 Y117.906 E.02531
+M73 P87 R1
+M73 Q87 S1
+G1 X127.488 Y117.906 E.24657
+G1 X127.576 Y117.468 E.01437
+G1 X127.573 Y117.119 E.01122
+G1 X127.967 Y117.513 E.01792
+;WIDTH:0.421928
+G1 X134.763 Y117.513 E.20346
+G1 E-.6 F2100
+G1 X134.763 Y117.513 Z2.9 F10800
+G1 X122.427 Y117.119
+G1 Z2.8
+G1 E.6 F2100
+;WIDTH:0.449999
+G1 F1917
+G1 X114.844 Y117.119 E.24384
+G1 X114.844 Y117.906 E.02531
+G1 X122.512 Y117.906 E.24657
+G1 X122.42 Y117.423 E.01581
+G1 X122.422 Y117.323 E.00322
+G1 X122.033 Y117.513 E.01392
+;WIDTH:0.421928
+G1 X115.238 Y117.513 E.20343
+G1 E-.6 F2100
+G1 X115.238 Y117.513 Z2.9 F10800
+G1 X127.247 Y93.186
+G1 Z2.8
+G1 E.6 F2100
+;TYPE:Perimeter
+;WIDTH:0.449999
+G1 F1500
+G1 X127.281 Y92.771 E.01339
+G1 X127.242 Y92.333 E.01414
+G1 X127.142 Y91.974 E.01198
+G1 X127.029 Y91.742 E.0083
+G1 X127.227 Y91.789 E.00654
+G1 X135.461 Y91.789 E.26478
+G1 X135.461 Y92.488 E.02248
+G1 X135.461 Y93.186 E.02245
+G1 X127.307 Y93.186 E.2622
+G1 E-.6 F2100
+G1 X127.307 Y93.186 Z2.9 F10800
+G1 X122.771 Y93.186
+G1 Z2.8
+G1 E.6 F2100
+G1 F1500
+G1 X114.539 Y93.186 E.26471
+G1 X114.539 Y91.789 E.04492
+G1 X122.773 Y91.789 E.26478
+G1 X122.973 Y91.738 E.00664
+G1 X122.869 Y91.943 E.00739
+G1 X122.764 Y92.302 E.01203
+G1 X122.719 Y92.739 E.01413
+G1 X122.764 Y93.126 E.01253
+G1 X123.257 Y93.421 F10800
+G1 F1917
+G1 X123.113 Y93.509 E.00543
+G1 X123.077 Y93.593 E.00294
+G1 X114.132 Y93.593 E.28764
+G1 X114.132 Y91.382 E.0711
+G1 X122.773 Y91.382 E.27786
+;WIDTH:0.473472
+G1 X123.071 Y91.318 E.01037
+;WIDTH:0.493408
+G1 X123.197 Y91.241 E.00525
+G1 X123.649 Y90.837 E.02157
+;WIDTH:0.497692
+G1 X124.091 Y90.596 E.01809
+G1 X124.57 Y90.448 E.01801
+;WIDTH:0.494605
+G1 X125.119 Y90.414 E.01963
+G1 X125.524 Y90.466 E.01457
+;WIDTH:0.495962
+G1 X126.01 Y90.64 E.01847
+G1 X126.367 Y90.845 E.01473
+;WIDTH:0.49143
+G1 X126.742 Y91.184 E.01791
+G1 X126.95 Y91.327 E.00894
+;WIDTH:0.471305
+G1 X127.227 Y91.382 E.00956
+;WIDTH:0.449999
+G1 X135.868 Y91.382 E.27786
+G1 X135.868 Y92.488 E.03556
+G1 X135.868 Y93.593 E.03553
+G1 X127.02 Y93.593 E.28452
+M73 P88 R1
+G1 X126.973 Y93.491 E.00361
+M73 Q88 S1
+G1 X126.747 Y93.399 E.00785
+G1 X126.845 Y93.059 E.01138
+G1 X126.875 Y92.806 E.00819
+G1 X126.837 Y92.369 E.01411
+G1 X126.763 Y92.126 E.00817
+;WIDTH:0.493968
+G1 X126.484 Y91.558 E.02255
+G1 X126.115 Y91.218 E.01788
+;WIDTH:0.495962
+G1 X125.85 Y91.063 E.01099
+G1 X125.32 Y90.879 E.02008
+;WIDTH:0.483513
+G1 X124.746 Y90.872 E.01998
+;WIDTH:0.497692
+G1 X124.239 Y91.026 E.01903
+G1 X123.906 Y91.201 E.01351
+;WIDTH:0.49485
+G1 X123.509 Y91.564 E.0192
+G1 X123.232 Y92.128 E.02243
+;WIDTH:0.449999
+G1 X123.143 Y92.599 E.01541
+G1 X123.143 Y93.004 E.01302
+G1 X123.242 Y93.363 E.01198
+G1 X123.937 Y93.75 F10800
+;TYPE:External perimeter
+G1 F1500
+G1 X123.549 Y93.75 E.01248
+G1 X123.392 Y93.805 E.00535
+G1 X123.328 Y94 E.0066
+G1 X113.725 Y94 E.3088
+G1 X113.725 Y90.975 E.09727
+G1 X122.773 Y90.975 E.29095
+G1 X122.909 Y90.923 E.00468
+G1 X123.376 Y90.501 E.02024
+G1 X123.895 Y90.206 E.0192
+G1 X124.463 Y90.029 E.01913
+G1 X125.09 Y89.986 E.02021
+G1 X125.651 Y90.053 E.01817
+G1 X126.155 Y90.235 E.01723
+G1 X126.622 Y90.5 E.01727
+G1 X127.091 Y90.923 E.02031
+G1 X127.227 Y90.975 E.00468
+G1 X136.275 Y90.975 E.29095
+G1 X136.275 Y92.488 E.04865
+G1 X136.275 Y94 E.04862
+G1 X126.778 Y94 E.30539
+G1 X126.707 Y93.799 E.00685
+G1 X126.574 Y93.75 E.00456
+G1 X126.07 Y93.75 E.01621
+G1 X126.328 Y93.385 E.01437
+G1 X126.47 Y92.842 E.01805
+G1 X126.398 Y92.305 E.01742
+G1 X126.149 Y91.829 E.01727
+G1 X125.763 Y91.491 E.0165
+G1 X125.23 Y91.296 E.01825
+G1 X124.717 Y91.306 E.0165
+G1 X124.227 Y91.494 E.01688
+G1 X123.842 Y91.836 E.01656
+G1 X123.595 Y92.313 E.01727
+G1 X123.529 Y92.821 E.01647
+G1 X123.666 Y93.372 E.01826
+G1 X123.902 Y93.701 E.01302
+G1 X123.506 Y93.758 F10800
+G1 X122.51 Y92.094
+;TYPE:Solid infill
+G1 F1917
+G1 X114.844 Y92.094 E.24651
+G1 X114.844 Y92.881 E.02531
+G1 X122.428 Y92.881 E.24387
+G1 X122.459 Y92.291 E.019
+G1 X122.043 Y92.488 E.0148
+;WIDTH:0.42193
+G1 X115.238 Y92.488 E.20374
+G1 E-.6 F2100
+G1 X115.238 Y92.488 Z2.9 F10800
+G1 X127.693 Y92.094
+G1 Z2.8
+G1 E.6 F2100
+;WIDTH:0.449999
+G1 F1917
+G1 X135.156 Y92.094 E.23998
+G1 X135.156 Y92.881 E.02531
+G1 X127.573 Y92.881 E.24384
+G1 X127.565 Y92.522 E.01155
+G1 X127.489 Y92.094 E.01398
+G1 X127.957 Y92.488 E.01967
+;WIDTH:0.421928
+G1 X134.763 Y92.488 E.20376
+;LAYER_CHANGE
+;Z:3
+;HEIGHT:0.2
+;BEFORE_LAYER_CHANGE
+G92 E0.0
+;3
+
+
+G1 Z3 F10800
+;AFTER_LAYER_CHANGE
+;3
+G1 E-.6 F2100
+G1 X134.763 Y92.488 Z3.1 F10800
+G1 X127.223 Y116.814
+G1 Z3
+M73 P89 R1
+G1 E.6 F2100
+;TYPE:Perimeter
+;WIDTH:0.449999
+G1 F1500
+G1 X135.461 Y116.814 E.2649
+G1 X135.461 Y117.513 E.02248
+M73 Q89 S1
+G1 X135.461 Y118.211 E.02245
+G1 X127.895 Y118.211 E.24329
+G1 X127.056 Y118.232 E.02699
+G1 X127.133 Y118.078 E.00554
+G1 X127.27 Y117.449 E.0207
+G1 X127.27 Y117.052 E.01277
+G1 X127.234 Y116.873 E.00587
+G1 E-.6 F2100
+G1 X127.234 Y116.873 Z3.1 F10800
+G1 X122.777 Y116.814
+G1 Z3
+G1 E.6 F2100
+G1 F1500
+G1 X122.73 Y117.051 E.00777
+G1 X122.723 Y117.406 E.01142
+G1 X122.827 Y117.935 E.01734
+G1 X122.944 Y118.232 E.01026
+G1 X122.773 Y118.211 E.00554
+G1 X114.539 Y118.211 E.26478
+G1 X114.539 Y116.814 E.04492
+G1 X122.717 Y116.814 E.26297
+G1 E-.6 F2100
+M73 P89 R0
+G1 X122.717 Y116.814 Z3.1 F10800
+G1 X126.671 Y116.407
+G1 Z3
+M73 Q89 S0
+G1 E.6 F2100
+G1 F1953
+G1 X135.868 Y116.407 E.29574
+G1 X135.868 Y117.513 E.03556
+G1 X135.868 Y118.618 E.03553
+G1 X127.895 Y118.618 E.25638
+G1 X127.078 Y118.636 E.02628
+;WIDTH:0.488782
+G1 X126.804 Y118.762 E.01062
+G1 X126.52 Y119.021 E.01354
+;WIDTH:0.49047
+G1 X126.01 Y119.363 E.02171
+;WIDTH:0.498124
+G1 X125.526 Y119.528 E.01839
+G1 X125.027 Y119.593 E.01809
+;WIDTH:0.498999
+G1 X124.525 Y119.538 E.01819
+G1 X124.045 Y119.39 E.0181
+;WIDTH:0.498293
+G1 X123.612 Y119.131 E.01815
+G1 X123.236 Y118.794 E.01816
+;WIDTH:0.494488
+G1 X122.922 Y118.636 E.01254
+;WIDTH:0.449999
+G1 X122.773 Y118.618 E.00483
+G1 X114.132 Y118.618 E.27786
+G1 X114.132 Y116.407 E.0711
+G1 X123.309 Y116.407 E.2951
+G1 X123.226 Y116.644 E.00807
+G1 X123.13 Y117.131 E.01596
+G1 X123.125 Y117.343 E.00682
+G1 X123.226 Y117.856 E.01681
+G1 X123.318 Y118.076 E.00767
+;WIDTH:0.481393
+G1 X123.682 Y118.614 E.0225
+;WIDTH:0.486704
+G1 X124.164 Y118.948 E.02056
+G1 X124.391 Y119.041 E.0086
+;WIDTH:0.485652
+G1 X124.946 Y119.146 E.01975
+;WIDTH:0.498124
+G1 X125.452 Y119.079 E.01835
+G1 X125.817 Y118.962 E.01378
+;WIDTH:0.49047
+G1 X126.248 Y118.672 E.01837
+;WIDTH:0.488782
+G1 X126.451 Y118.457 E.01041
+G1 X126.75 Y117.942 E.02097
+;WIDTH:0.449999
+G1 X126.87 Y117.369 E.01883
+G1 X126.87 Y117.131 E.00765
+G1 X126.774 Y116.645 E.01593
+G1 X126.695 Y116.462 E.00641
+G1 X125.74 Y116 F10800
+;TYPE:External perimeter
+G1 F1500
+G1 X136.275 Y116 E.33877
+G1 X136.275 Y117.513 E.04865
+G1 X136.275 Y119.025 E.04862
+G1 X127.227 Y119.025 E.29095
+G1 X127.09 Y119.078 E.00472
+G1 X126.682 Y119.448 E.01771
+G1 X126.215 Y119.744 E.01778
+G1 X125.652 Y119.946 E.01923
+G1 X125.06 Y120.023 E.0192
+G1 X124.465 Y119.972 E.0192
+G1 X123.895 Y119.794 E.0192
+G1 X123.376 Y119.499 E.0192
+G1 X122.948 Y119.113 E.01853
+G1 X122.773 Y119.025 E.0063
+G1 X113.725 Y119.025 E.29095
+G1 X113.725 Y116 E.09727
+G1 X124.26 Y116 E.33877
+M73 P90 R0
+M73 Q90 S0
+G1 X123.932 Y116.238 E.01303
+G1 X123.626 Y116.723 E.01844
+G1 X123.529 Y117.289 E.01847
+G1 X123.656 Y117.85 E.0185
+G1 X123.988 Y118.319 E.01848
+G1 X124.474 Y118.624 E.01845
+G1 X125.026 Y118.723 E.01803
+G1 X125.526 Y118.624 E.01639
+G1 X125.873 Y118.411 E.01309
+G1 X126.096 Y118.22 E.00944
+G1 X126.374 Y117.777 E.01682
+G1 X126.473 Y117.281 E.01626
+G1 X126.375 Y116.724 E.01819
+G1 X126.069 Y116.238 E.01847
+G1 X125.789 Y116.035 E.01112
+G1 X126.187 Y115.995 F10800
+G1 E-.6 F2100
+G1 Z3.1 F10800
+G1 X127.528 Y117.706
+G1 Z3
+G1 E.6 F2100
+;TYPE:Solid infill
+G1 F1953
+G1 X127.576 Y117.468 E.00781
+G1 X127.573 Y117.119 E.01122
+G1 X135.156 Y117.119 E.24384
+G1 X135.156 Y117.906 E.02531
+G1 X127.488 Y117.906 E.24657
+G1 X127.967 Y117.513 E.01992
+;WIDTH:0.42193
+G1 X134.763 Y117.513 E.20347
+G1 E-.6 F2100
+G1 X134.763 Y117.513 Z3.1 F10800
+G1 X114.844 Y117.119
+G1 Z3
+G1 E.6 F2100
+;WIDTH:0.449999
+G1 F1953
+G1 X114.844 Y117.906 E.02531
+G1 X122.512 Y117.906 E.24657
+G1 X122.42 Y117.423 E.01581
+G1 X122.427 Y117.119 E.00978
+G1 X115.048 Y117.119 E.23728
+G1 X115.238 Y117.513 E.01407
+;WIDTH:0.42193
+G1 X122.033 Y117.513 E.20344
+G1 E-.6 F2100
+G1 X122.033 Y117.513 Z3.1 F10800
+G1 X127.247 Y93.186
+G1 Z3
+G1 E.6 F2100
+;TYPE:Perimeter
+;WIDTH:0.449999
+G1 F1500
+G1 X127.281 Y92.77 E.01342
+G1 X127.242 Y92.334 E.01408
+G1 X127.142 Y91.974 E.01201
+G1 X127.029 Y91.742 E.0083
+G1 X127.228 Y91.789 E.00658
+G1 X135.461 Y91.789 E.26474
+G1 X135.461 Y92.488 E.02248
+G1 X135.461 Y93.186 E.02245
+G1 X127.307 Y93.186 E.2622
+G1 E-.6 F2100
+G1 X127.307 Y93.186 Z3.1 F10800
+G1 X122.771 Y93.186
+G1 Z3
+G1 E.6 F2100
+G1 F1500
+G1 X114.539 Y93.186 E.26471
+G1 X114.539 Y91.789 E.04492
+G1 X122.773 Y91.789 E.26478
+G1 X122.973 Y91.738 E.00664
+G1 X122.87 Y91.941 E.00732
+G1 X122.764 Y92.299 E.01201
+G1 X122.719 Y92.737 E.01416
+G1 X122.764 Y93.126 E.01259
+G1 X123.257 Y93.42 F10800
+M73 P91 R0
+G1 F1953
+G1 X123.113 Y93.509 E.00544
+G1 X123.077 Y93.593 E.00294
+G1 X114.132 Y93.593 E.28764
+M73 Q91 S0
+G1 X114.132 Y91.382 E.0711
+G1 X122.773 Y91.382 E.27786
+;WIDTH:0.473659
+G1 X123.072 Y91.317 E.01041
+;WIDTH:0.493492
+G1 X123.196 Y91.241 E.00518
+G1 X123.649 Y90.838 E.02158
+;WIDTH:0.497659
+G1 X124.091 Y90.596 E.0181
+G1 X124.572 Y90.448 E.01808
+;WIDTH:0.494503
+G1 X125.126 Y90.415 E.0198
+G1 X125.524 Y90.466 E.01431
+;WIDTH:0.495848
+G1 X126.002 Y90.637 E.01816
+G1 X126.252 Y90.778 E.01027
+;WIDTH:0.492293
+G1 X126.746 Y91.186 E.02274
+G1 X126.95 Y91.327 E.0088
+;WIDTH:0.471382
+G1 X127.228 Y91.382 E.00959
+;WIDTH:0.449999
+G1 X135.868 Y91.382 E.27783
+G1 X135.868 Y92.488 E.03556
+G1 X135.868 Y93.593 E.03553
+G1 X127.02 Y93.593 E.28452
+G1 X126.973 Y93.491 E.00361
+G1 X126.747 Y93.399 E.00785
+G1 X126.845 Y93.06 E.01135
+G1 X126.875 Y92.806 E.00822
+G1 X126.837 Y92.369 E.01411
+G1 X126.764 Y92.126 E.00816
+;WIDTH:0.496158
+G1 X126.498 Y91.574 E.02194
+G1 X126.155 Y91.252 E.01684
+;WIDTH:0.495848
+G1 X125.842 Y91.06 E.01314
+G1 X125.322 Y90.879 E.0197
+;WIDTH:0.483697
+G1 X124.748 Y90.872 E.01999
+;WIDTH:0.497659
+G1 X124.239 Y91.026 E.0191
+G1 X123.907 Y91.2 E.01346
+;WIDTH:0.494882
+G1 X123.51 Y91.564 E.01923
+G1 X123.233 Y92.126 E.02237
+;WIDTH:0.449999
+G1 X123.143 Y92.6 E.01551
+G1 X123.143 Y93.002 E.01293
+G1 X123.241 Y93.362 E.012
+G1 X123.938 Y93.75 F10800
+;TYPE:External perimeter
+G1 F1500
+G1 X123.548 Y93.75 E.01254
+G1 X123.392 Y93.805 E.00532
+G1 X123.328 Y94 E.0066
+G1 X113.725 Y94 E.3088
+G1 X113.725 Y90.975 E.09727
+G1 X122.773 Y90.975 E.29095
+G1 X122.909 Y90.923 E.00468
+G1 X123.376 Y90.501 E.02024
+G1 X123.895 Y90.206 E.0192
+G1 X124.463 Y90.029 E.01913
+G1 X125.097 Y89.986 E.02043
+G1 X125.65 Y90.053 E.01791
+G1 X126.214 Y90.256 E.01928
+G1 X126.709 Y90.565 E.01876
+G1 X127.089 Y90.92 E.01672
+G1 X127.228 Y90.975 E.00481
+G1 X136.275 Y90.975 E.29092
+G1 X136.275 Y92.488 E.04865
+G1 X136.275 Y94 E.04862
+G1 X126.778 Y94 E.30539
+G1 X126.707 Y93.799 E.00685
+G1 X126.574 Y93.75 E.00456
+G1 X126.07 Y93.75 E.01621
+G1 X126.328 Y93.384 E.0144
+G1 X126.47 Y92.841 E.01805
+G1 X126.398 Y92.306 E.01736
+G1 X126.149 Y91.83 E.01727
+G1 X125.763 Y91.492 E.0165
+G1 X125.231 Y91.296 E.01823
+G1 X124.718 Y91.306 E.0165
+G1 X124.228 Y91.494 E.01688
+G1 X123.843 Y91.835 E.01654
+G1 X123.595 Y92.312 E.01729
+G1 X123.529 Y92.82 E.01647
+G1 X123.665 Y93.37 E.01822
+G1 X123.903 Y93.701 E.01311
+G1 X123.507 Y93.758 F10800
+G1 E-.6 F2100
+G1 Z3.1 F10800
+G1 X127.489 Y92.094
+G1 Z3
+G1 E.6 F2100
+;TYPE:Solid infill
+G1 F1953
+G1 X127.565 Y92.522 E.01398
+G1 X127.573 Y92.881 E.01155
+G1 X135.156 Y92.881 E.24384
+G1 X135.156 Y92.094 E.02531
+G1 X127.693 Y92.094 E.23998
+G1 X127.957 Y92.488 E.01525
+;WIDTH:0.421928
+G1 X134.763 Y92.488 E.20376
+G1 E-.6 F2100
+G1 X134.763 Y92.488 Z3.1 F10800
+G1 X114.844 Y92.094
+G1 Z3
+M73 P92 R0
+M73 Q92 S0
+G1 E.6 F2100
+;WIDTH:0.449999
+G1 F1953
+G1 X114.844 Y92.881 E.02531
+G1 X122.428 Y92.881 E.24387
+G1 X122.46 Y92.277 E.01945
+G1 X122.51 Y92.094 E.0061
+G1 X115.048 Y92.094 E.23995
+G1 X115.238 Y92.488 E.01407
+;WIDTH:0.421928
+G1 X122.043 Y92.488 E.20373
+;LAYER_CHANGE
+;Z:3.2
+;HEIGHT:0.2
+;BEFORE_LAYER_CHANGE
+G92 E0.0
+;3.2
+
+
+G1 Z3.2 F10800
+;AFTER_LAYER_CHANGE
+;3.2
+G1 E-.6 F2100
+G1 X122.043 Y92.488 Z3.3 F10800
+G1 X127.223 Y116.814
+G1 Z3.2
+G1 E.6 F2100
+;TYPE:Perimeter
+;WIDTH:0.449999
+G1 F1500
+G1 X135.461 Y116.814 E.2649
+G1 X135.461 Y117.513 E.02248
+G1 X135.461 Y118.211 E.02245
+G1 X127.895 Y118.211 E.24329
+G1 X127.056 Y118.232 E.02699
+G1 X127.134 Y118.078 E.00555
+G1 X127.27 Y117.449 E.02069
+G1 X127.27 Y117.051 E.0128
+G1 X127.234 Y116.873 E.00584
+G1 E-.6 F2100
+G1 X127.234 Y116.873 Z3.3 F10800
+G1 X122.777 Y116.814
+G1 Z3.2
+G1 E.6 F2100
+G1 F1500
+G1 X122.73 Y117.051 E.00777
+G1 X122.723 Y117.406 E.01142
+G1 X122.827 Y117.935 E.01734
+G1 X122.944 Y118.232 E.01026
+G1 X122.773 Y118.211 E.00554
+G1 X114.539 Y118.211 E.26478
+G1 X114.539 Y116.814 E.04492
+G1 X122.717 Y116.814 E.26297
+G1 E-.6 F2100
+G1 X122.717 Y116.814 Z3.3 F10800
+G1 X126.671 Y116.407
+G1 Z3.2
+G1 E.6 F2100
+G1 F1895
+G1 X135.868 Y116.407 E.29574
+G1 X135.868 Y117.513 E.03556
+G1 X135.868 Y118.618 E.03553
+G1 X127.895 Y118.618 E.25638
+G1 X127.078 Y118.637 E.02628
+;WIDTH:0.49106
+G1 X126.795 Y118.769 E.01105
+;WIDTH:0.495794
+G1 X126.438 Y119.095 E.01729
+G1 X126.003 Y119.366 E.01833
+;WIDTH:0.498125
+G1 X125.525 Y119.528 E.01815
+G1 X125.027 Y119.593 E.01806
+;WIDTH:0.499005
+G1 X124.525 Y119.538 E.01819
+G1 X124.045 Y119.39 E.0181
+;WIDTH:0.498299
+G1 X123.612 Y119.131 E.01815
+G1 X123.236 Y118.794 E.01816
+;WIDTH:0.494424
+G1 X122.922 Y118.636 E.01254
+;WIDTH:0.449999
+G1 X122.773 Y118.618 E.00483
+G1 X114.132 Y118.618 E.27786
+G1 X114.132 Y116.407 E.0711
+G1 X123.308 Y116.407 E.29507
+G1 X123.226 Y116.644 E.00806
+G1 X123.13 Y117.131 E.01596
+G1 X123.13 Y117.369 E.00765
+G1 X123.25 Y117.942 E.01883
+;WIDTH:0.494424
+G1 X123.575 Y118.501 E.02306
+;WIDTH:0.498299
+G1 X123.891 Y118.772 E.01497
+G1 X124.327 Y119.024 E.01811
+;WIDTH:0.485601
+G1 X124.877 Y119.138 E.01964
+;WIDTH:0.486939
+G1 X125.122 Y119.139 E.00859
+G1 X125.698 Y119.014 E.02067
+;WIDTH:0.495794
+G1 X126.192 Y118.715 E.02066
+G1 X126.443 Y118.471 E.01252
+;WIDTH:0.49106
+G1 X126.75 Y117.941 E.02168
+;WIDTH:0.449999
+G1 X126.87 Y117.369 E.01879
+G1 X126.87 Y117.131 E.00765
+G1 X126.774 Y116.644 E.01596
+G1 X126.695 Y116.462 E.00638
+G1 X125.74 Y116 F10800
+;TYPE:External perimeter
+G1 F1500
+G1 X136.275 Y116 E.33877
+G1 X136.275 Y117.513 E.04865
+M73 P93 R0
+M73 Q93 S0
+G1 X136.275 Y119.025 E.04862
+G1 X127.228 Y119.025 E.29092
+G1 X127.088 Y119.08 E.00484
+G1 X126.721 Y119.426 E.01622
+G1 X126.214 Y119.744 E.01924
+G1 X125.652 Y119.946 E.0192
+G1 X125.06 Y120.023 E.0192
+G1 X124.465 Y119.972 E.0192
+G1 X123.895 Y119.794 E.0192
+G1 X123.376 Y119.499 E.0192
+G1 X122.948 Y119.112 E.01855
+G1 X122.773 Y119.025 E.00628
+G1 X113.725 Y119.025 E.29095
+G1 X113.725 Y116 E.09727
+G1 X124.26 Y116 E.33877
+G1 X123.931 Y116.238 E.01306
+G1 X123.626 Y116.724 E.01845
+G1 X123.529 Y117.289 E.01843
+G1 X123.656 Y117.85 E.0185
+G1 X123.988 Y118.318 E.01845
+G1 X124.473 Y118.624 E.01844
+G1 X125.026 Y118.723 E.01807
+G1 X125.526 Y118.624 E.01639
+G1 X125.953 Y118.358 E.01618
+G1 X126.088 Y118.233 E.00592
+G1 X126.374 Y117.777 E.01731
+G1 X126.473 Y117.281 E.01626
+G1 X126.374 Y116.724 E.01819
+G1 X126.069 Y116.238 E.01845
+G1 X125.789 Y116.035 E.01112
+G1 X126.187 Y115.995 F10800
+G1 X127.777 Y117.119
+;TYPE:Solid infill
+G1 F1895
+G1 X135.156 Y117.119 E.23728
+G1 X135.156 Y117.906 E.02531
+G1 X127.488 Y117.906 E.24657
+G1 X127.576 Y117.468 E.01437
+G1 X127.573 Y117.119 E.01122
+G1 X127.967 Y117.513 E.01792
+;WIDTH:0.421928
+G1 X134.763 Y117.513 E.20346
+G1 E-.6 F2100
+G1 X134.763 Y117.513 Z3.3 F10800
+G1 X122.427 Y117.119
+G1 Z3.2
+G1 E.6 F2100
+;WIDTH:0.449999
+G1 F1895
+G1 X114.844 Y117.119 E.24384
+G1 X114.844 Y117.906 E.02531
+G1 X122.512 Y117.906 E.24657
+G1 X122.42 Y117.423 E.01581
+G1 X122.422 Y117.323 E.00322
+G1 X122.033 Y117.513 E.01392
+;WIDTH:0.421928
+G1 X115.238 Y117.513 E.20343
+G1 E-.6 F2100
+G1 X115.238 Y117.513 Z3.3 F10800
+G1 X127.247 Y93.186
+G1 Z3.2
+G1 E.6 F2100
+;TYPE:Perimeter
+;WIDTH:0.449999
+G1 F1500
+G1 X127.281 Y92.77 E.01342
+G1 X127.242 Y92.334 E.01408
+G1 X127.142 Y91.974 E.01201
+G1 X127.029 Y91.742 E.0083
+G1 X127.228 Y91.789 E.00658
+G1 X135.461 Y91.789 E.26474
+G1 X135.461 Y92.488 E.02248
+G1 X135.461 Y93.186 E.02245
+G1 X127.307 Y93.186 E.2622
+G1 E-.6 F2100
+M73 P94 R0
+M73 Q94 S0
+G1 X127.307 Y93.186 Z3.3 F10800
+G1 X122.771 Y93.186
+G1 Z3.2
+G1 E.6 F2100
+G1 F1500
+G1 X114.539 Y93.186 E.26471
+G1 X114.539 Y91.789 E.04492
+G1 X122.773 Y91.789 E.26478
+G1 X122.973 Y91.738 E.00664
+G1 X122.871 Y91.939 E.00725
+G1 X122.765 Y92.297 E.01201
+G1 X122.719 Y92.734 E.01413
+G1 X122.764 Y93.126 E.01269
+G1 X123.257 Y93.42 F10800
+G1 F1895
+G1 X123.113 Y93.509 E.00544
+G1 X123.077 Y93.593 E.00294
+G1 X114.132 Y93.593 E.28764
+G1 X114.132 Y91.382 E.0711
+G1 X122.773 Y91.382 E.27786
+;WIDTH:0.473795
+G1 X123.073 Y91.317 E.01045
+;WIDTH:0.493476
+G1 X123.196 Y91.241 E.00515
+G1 X123.649 Y90.838 E.02158
+;WIDTH:0.497615
+G1 X124.091 Y90.596 E.0181
+G1 X124.574 Y90.448 E.01814
+;WIDTH:0.494403
+G1 X125.133 Y90.415 E.01997
+G1 X125.524 Y90.466 E.01406
+;WIDTH:0.495856
+G1 X126.002 Y90.637 E.01816
+G1 X126.254 Y90.779 E.01035
+;WIDTH:0.492361
+G1 X126.747 Y91.187 E.02272
+G1 X126.95 Y91.327 E.00875
+;WIDTH:0.471353
+G1 X127.228 Y91.382 E.00959
+;WIDTH:0.449999
+G1 X135.868 Y91.382 E.27783
+G1 X135.868 Y92.488 E.03556
+G1 X135.868 Y93.593 E.03553
+G1 X127.02 Y93.593 E.28452
+G1 X126.973 Y93.491 E.00361
+G1 X126.748 Y93.398 E.00783
+G1 X126.844 Y93.06 E.0113
+G1 X126.875 Y92.806 E.00823
+G1 X126.837 Y92.369 E.01411
+G1 X126.764 Y92.126 E.00816
+;WIDTH:0.496169
+G1 X126.498 Y91.574 E.02194
+G1 X126.16 Y91.256 E.01662
+;WIDTH:0.495856
+G1 X125.842 Y91.06 E.01337
+G1 X125.323 Y90.879 E.01967
+;WIDTH:0.48388
+G1 X124.749 Y90.871 E.02
+;WIDTH:0.497615
+G1 X124.239 Y91.026 E.01915
+G1 X123.909 Y91.2 E.0134
+;WIDTH:0.494829
+G1 X123.51 Y91.563 E.01926
+G1 X123.233 Y92.124 E.02233
+;WIDTH:0.449999
+G1 X123.142 Y92.602 E.01565
+G1 X123.142 Y93 E.0128
+G1 X123.241 Y93.362 E.01207
+G1 X123.938 Y93.75 F10800
+;TYPE:External perimeter
+G1 F1500
+G1 X123.546 Y93.75 E.01261
+G1 X123.392 Y93.805 E.00526
+G1 X123.328 Y94 E.0066
+G1 X113.725 Y94 E.3088
+G1 X113.725 Y90.975 E.09727
+G1 X122.773 Y90.975 E.29095
+G1 X122.909 Y90.923 E.00468
+G1 X123.376 Y90.501 E.02024
+G1 X123.895 Y90.206 E.0192
+G1 X124.463 Y90.029 E.01913
+G1 X125.105 Y89.987 E.02069
+G1 X125.65 Y90.053 E.01765
+G1 X126.214 Y90.256 E.01928
+G1 X126.715 Y90.57 E.01901
+G1 X127.088 Y90.92 E.01645
+G1 X127.228 Y90.975 E.00484
+G1 X136.275 Y90.975 E.29092
+G1 X136.275 Y92.488 E.04865
+G1 X136.275 Y94 E.04862
+G1 X126.778 Y94 E.30539
+G1 X126.707 Y93.799 E.00685
+G1 X126.574 Y93.75 E.00456
+G1 X126.07 Y93.75 E.01621
+G1 X126.33 Y93.38 E.01454
+G1 X126.47 Y92.841 E.01791
+G1 X126.398 Y92.306 E.01736
+G1 X126.15 Y91.83 E.01726
+G1 X125.764 Y91.492 E.0165
+G1 X125.232 Y91.296 E.01823
+G1 X124.719 Y91.305 E.0165
+G1 X124.228 Y91.493 E.01691
+G1 X123.843 Y91.834 E.01654
+G1 X123.595 Y92.311 E.01729
+G1 X123.529 Y92.818 E.01644
+G1 X123.665 Y93.369 E.01825
+G1 X123.903 Y93.701 E.01314
+G1 X123.507 Y93.757 F10800
+G1 X122.509 Y92.094
+M73 P95 R0
+;TYPE:Solid infill
+G1 F1895
+M73 Q95 S0
+G1 X114.844 Y92.094 E.24648
+G1 X114.844 Y92.881 E.02531
+G1 X122.428 Y92.881 E.24387
+G1 X122.459 Y92.291 E.019
+G1 X122.043 Y92.488 E.0148
+;WIDTH:0.42193
+G1 X115.238 Y92.488 E.20374
+G1 E-.6 F2100
+G1 X115.238 Y92.488 Z3.3 F10800
+G1 X127.693 Y92.094
+G1 Z3.2
+G1 E.6 F2100
+;WIDTH:0.449999
+G1 F1895
+G1 X135.156 Y92.094 E.23998
+G1 X135.156 Y92.881 E.02531
+G1 X127.573 Y92.881 E.24384
+G1 X127.565 Y92.522 E.01155
+G1 X127.489 Y92.094 E.01398
+G1 X127.957 Y92.488 E.01967
+;WIDTH:0.421928
+G1 X134.763 Y92.488 E.20376
+;LAYER_CHANGE
+;Z:3.4
+;HEIGHT:0.2
+;BEFORE_LAYER_CHANGE
+G92 E0.0
+;3.4
+
+
+G1 Z3.4 F10800
+;AFTER_LAYER_CHANGE
+;3.4
+G1 E-.6 F2100
+G1 X134.763 Y92.488 Z3.5 F10800
+G1 X127.225 Y116.814
+G1 Z3.4
+G1 E.6 F2100
+;TYPE:Perimeter
+;WIDTH:0.449999
+G1 F1500
+G1 X135.461 Y116.814 E.26484
+G1 X135.461 Y117.513 E.02248
+G1 X135.461 Y118.211 E.02245
+G1 X127.072 Y118.223 E.26976
+G1 X127.135 Y118.074 E.0052
+G1 X127.276 Y117.35 E.02372
+G1 X127.231 Y116.874 E.01537
+G1 E-.6 F2100
+G1 X127.231 Y116.874 Z3.5 F10800
+G1 X124.929 Y115.889
+G1 Z3.4
+G1 E.6 F2100
+;TYPE:External perimeter
+;WIDTH:0.38292
+G1 F1500
+G1 X125.455 Y115.927 E.01416
+G1 E-.6 F2100
+G1 X125.455 Y115.927 Z3.5 F10800
+G1 X122.776 Y116.814
+G1 Z3.4
+G1 E.6 F2100
+;TYPE:Perimeter
+;WIDTH:0.449999
+G1 F1500
+G1 X122.719 Y117.428 E.01983
+G1 X122.859 Y118.029 E.01984
+G1 X122.954 Y118.242 E.0075
+G1 X122.773 Y118.211 E.00591
+G1 X114.539 Y118.211 E.26478
+G1 X114.539 Y116.814 E.04492
+G1 X122.716 Y116.814 E.26294
+G1 E-.6 F2100
+G1 X122.716 Y116.814 Z3.5 F10800
+G1 X126.671 Y116.407
+G1 Z3.4
+G1 E.6 F2100
+G1 F2056
+G1 X135.868 Y116.407 E.29574
+G1 X135.868 Y117.513 E.03556
+G1 X135.868 Y118.618 E.03553
+G1 X127.134 Y118.625 E.28085
+;WIDTH:0.496017
+G1 X126.803 Y118.758 E.01277
+M73 P96 R0
+M73 Q96 S0
+;WIDTH:0.498959
+G1 X126.388 Y119.13 E.02008
+G1 X125.955 Y119.39 E.01819
+;WIDTH:0.498203
+G1 X125.467 Y119.541 E.01837
+G1 X125.079 Y119.593 E.01408
+G1 X124.573 Y119.548 E.01827
+G1 X124.089 Y119.408 E.01812
+;WIDTH:0.495656
+G1 X123.651 Y119.161 E.01798
+G1 X123.303 Y118.858 E.0165
+;WIDTH:0.489382
+G1 X122.978 Y118.653 E.01355
+;WIDTH:0.449999
+G1 X122.773 Y118.618 E.00669
+G1 X114.132 Y118.618 E.27786
+G1 X114.132 Y116.407 E.0711
+G1 X123.338 Y116.407 E.29603
+G1 X123.202 Y116.722 E.01103
+G1 X123.126 Y117.212 E.01594
+G1 X123.136 Y117.45 E.00766
+G1 X123.262 Y117.962 E.01696
+;WIDTH:0.489382
+G1 X123.632 Y118.56 E.0248
+;WIDTH:0.495656
+G1 X123.881 Y118.77 E.01165
+G1 X124.379 Y119.043 E.02031
+;WIDTH:0.486952
+G1 X124.959 Y119.142 E.02064
+;WIDTH:0.498203
+G1 X125.345 Y119.103 E.01395
+G1 X125.848 Y118.947 E.01894
+;WIDTH:0.485551
+G1 X126.309 Y118.616 E.01984
+;WIDTH:0.491176
+G1 X126.477 Y118.436 E.00872
+G1 X126.759 Y117.918 E.02088
+;WIDTH:0.449999
+G1 X126.865 Y117.344 E.01877
+G1 X126.864 Y117.05 E.00945
+G1 X126.746 Y116.568 E.01596
+G1 X126.696 Y116.461 E.0038
+G1 X125.736 Y116 F10800
+;TYPE:External perimeter
+G1 F1500
+G1 X136.275 Y116 E.3389
+G1 X136.275 Y117.513 E.04865
+G1 X136.275 Y119.025 E.04862
+G1 X127.227 Y119.025 E.29095
+G1 X127.091 Y119.077 E.00468
+G1 X126.624 Y119.499 E.02024
+G1 X126.105 Y119.794 E.0192
+G1 X125.595 Y119.953 E.01718
+G1 X125.062 Y120.023 E.01729
+G1 X124.465 Y119.972 E.01927
+G1 X123.895 Y119.794 E.0192
+G1 X123.376 Y119.499 E.0192
+G1 X122.909 Y119.077 E.02024
+G1 X122.773 Y119.025 E.00468
+G1 X113.725 Y119.025 E.29095
+G1 X113.725 Y116 E.09727
+G1 X124.252 Y116 E.33851
+G1 X123.889 Y116.285 E.01484
+G1 X123.604 Y116.784 E.01848
+G1 X123.532 Y117.354 E.01847
+G1 X123.683 Y117.907 E.01843
+G1 X124.035 Y118.361 E.01847
+G1 X124.534 Y118.646 E.01848
+G1 X125.104 Y118.718 E.01847
+G1 X125.658 Y118.567 E.01846
+G1 X126.112 Y118.214 E.01849
+G1 X126.383 Y117.763 E.01692
+G1 X126.472 Y117.226 E.0175
+G1 X126.35 Y116.664 E.01849
+G1 X126.023 Y116.192 E.01846
+G1 X125.786 Y116.033 E.00918
+G1 X126.184 Y115.995 F10800
+G1 E-.6 F2100
+G1 Z3.5 F10800
+G1 X122.659 Y117.696
+G1 Z3.4
+G1 E.6 F2100
+;TYPE:Top solid infill
+;WIDTH:0.404225
+G1 F2056
+G1 X122.057 Y117.094 E.0243
+G1 X121.546 Y117.094 E.01458
+G1 X122.382 Y117.931 E.03376
+G1 X121.871 Y117.931 E.01458
+G1 X121.035 Y117.094 E.03376
+G1 X120.524 Y117.094 E.01458
+G1 X121.36 Y117.931 E.03376
+G1 X120.849 Y117.931 E.01458
+G1 X120.013 Y117.094 E.03376
+G1 X119.502 Y117.094 E.01458
+G1 X120.338 Y117.931 E.03376
+G1 X119.827 Y117.931 E.01458
+G1 X118.991 Y117.094 E.03376
+G1 X118.48 Y117.094 E.01458
+G1 X119.316 Y117.931 E.03376
+G1 X118.806 Y117.931 E.01456
+G1 X117.969 Y117.094 E.03378
+G1 X117.458 Y117.094 E.01458
+G1 X118.295 Y117.931 E.03378
+G1 X117.784 Y117.931 E.01458
+G1 X116.947 Y117.094 E.03378
+G1 X116.437 Y117.094 E.01456
+G1 X117.273 Y117.931 E.03376
+G1 X116.762 Y117.931 E.01458
+G1 X115.926 Y117.094 E.03376
+G1 X115.415 Y117.094 E.01458
+G1 X116.251 Y117.931 E.03376
+G1 X115.74 Y117.931 E.01458
+G1 X114.904 Y117.094 E.03376
+G1 X114.819 Y117.094 E.00243
+G1 X114.819 Y117.521 E.01219
+G1 X115.389 Y118.091 E.02301
+G1 E-.6 F2100
+G1 X115.389 Y118.091 Z3.5 F10800
+G1 X135.341 Y117.672
+G1 Z3.4
+G1 E.6 F2100
+;WIDTH:0.407868
+G1 F2056
+G1 X134.763 Y117.094 E.02356
+G1 X134.247 Y117.094 E.01488
+G1 X135.083 Y117.931 E.0341
+M73 P97 R0
+M73 Q97 S0
+G1 X134.567 Y117.931 E.01488
+G1 X133.731 Y117.094 E.0341
+G1 X133.215 Y117.094 E.01488
+G1 X134.051 Y117.931 E.0341
+G1 X133.535 Y117.931 E.01488
+G1 X132.699 Y117.094 E.0341
+G1 X132.183 Y117.094 E.01488
+G1 X133.019 Y117.931 E.0341
+G1 X132.503 Y117.931 E.01488
+G1 X131.667 Y117.094 E.0341
+G1 X131.151 Y117.094 E.01488
+G1 X131.987 Y117.931 E.0341
+G1 X131.471 Y117.931 E.01488
+G1 X130.634 Y117.094 E.03412
+G1 X130.118 Y117.094 E.01488
+G1 X130.954 Y117.931 E.0341
+G1 X130.438 Y117.931 E.01488
+G1 X129.602 Y117.094 E.0341
+G1 X129.086 Y117.094 E.01488
+G1 X129.922 Y117.931 E.0341
+G1 X129.406 Y117.931 E.01488
+G1 X128.57 Y117.094 E.0341
+G1 X128.054 Y117.094 E.01488
+G1 X128.89 Y117.931 E.0341
+G1 X128.374 Y117.931 E.01488
+G1 X127.542 Y117.099 E.03392
+G1 X127.554 Y117.385 E.00825
+G1 X127.522 Y117.595 E.00612
+G1 X128.018 Y118.091 E.02022
+G1 E-.6 F2100
+G1 X128.018 Y118.091 Z3.5 F10800
+G1 X127.247 Y93.186
+G1 Z3.4
+G1 E.6 F2100
+;TYPE:Perimeter
+;WIDTH:0.449999
+G1 F1500
+G1 X127.281 Y92.77 E.01342
+G1 X127.243 Y92.334 E.01407
+G1 X127.143 Y91.975 E.01198
+G1 X127.029 Y91.742 E.00834
+G1 X127.228 Y91.789 E.00658
+G1 X135.461 Y91.789 E.26474
+G1 X135.461 Y92.488 E.02248
+G1 X135.461 Y93.186 E.02245
+G1 X127.307 Y93.186 E.2622
+G1 E-.6 F2100
+G1 X127.307 Y93.186 Z3.5 F10800
+G1 X122.762 Y93.186
+G1 Z3.4
+G1 E.6 F2100
+G1 F1500
+G1 X114.539 Y93.186 E.26442
+G1 X114.539 Y91.789 E.04492
+G1 X122.773 Y91.789 E.26478
+G1 X122.973 Y91.739 E.00663
+G1 X122.872 Y91.937 E.00715
+G1 X122.763 Y92.316 E.01268
+G1 X122.722 Y92.808 E.01588
+G1 X122.756 Y93.126 E.01028
+G1 X123.256 Y93.422 F10800
+G1 F2056
+G1 X123.111 Y93.511 E.00547
+G1 X123.076 Y93.593 E.00287
+G1 X114.132 Y93.593 E.28761
+G1 X114.132 Y91.382 E.0711
+G1 X122.773 Y91.382 E.27786
+;WIDTH:0.473975
+G1 X123.074 Y91.316 E.01049
+;WIDTH:0.493458
+G1 X123.196 Y91.241 E.0051
+;WIDTH:0.495332
+G1 X123.651 Y90.839 E.0217
+G1 X124.09 Y90.594 E.01797
+;WIDTH:0.493659
+G1 X124.576 Y90.448 E.01807
+;WIDTH:0.498022
+G1 X125.14 Y90.417 E.02031
+G1 X125.524 Y90.465 E.01391
+;WIDTH:0.49486
+G1 X126.002 Y90.636 E.01812
+G1 X126.255 Y90.781 E.01041
+;WIDTH:0.492439
+G1 X126.747 Y91.187 E.02265
+G1 X126.951 Y91.328 E.00881
+;WIDTH:0.471284
+G1 X127.228 Y91.382 E.00955
+;WIDTH:0.449999
+G1 X135.868 Y91.382 E.27783
+G1 X135.868 Y92.488 E.03556
+G1 X135.868 Y93.593 E.03553
+G1 X127.02 Y93.593 E.28452
+G1 X126.973 Y93.491 E.00361
+G1 X126.748 Y93.399 E.00782
+G1 X126.845 Y93.06 E.01134
+G1 X126.875 Y92.806 E.00822
+G1 X126.837 Y92.369 E.01411
+;WIDTH:0.471284
+G1 X126.57 Y91.707 E.02415
+;WIDTH:0.492439
+G1 X126.441 Y91.516 E.00818
+G1 X126.022 Y91.151 E.01973
+;WIDTH:0.485816
+G1 X125.529 Y90.932 E.01887
+;WIDTH:0.488598
+G1 X125.304 Y90.881 E.00812
+G1 X124.751 Y90.871 E.01947
+;WIDTH:0.493659
+G1 X124.232 Y91.022 E.01925
+;WIDTH:0.495332
+G1 X123.91 Y91.208 E.01329
+G1 X123.511 Y91.563 E.01909
+;WIDTH:0.494764
+G1 X123.234 Y92.122 E.02227
+;WIDTH:0.449999
+G1 X123.15 Y92.579 E.01494
+G1 X123.151 Y93.064 E.0156
+G1 X123.239 Y93.365 E.01008
+G1 X123.928 Y93.75 F10800
+;TYPE:External perimeter
+G1 F1500
+G1 X123.536 Y93.75 E.01261
+G1 X123.391 Y93.806 E.005
+G1 X123.328 Y94 E.00656
+G1 X113.725 Y94 E.3088
+G1 X113.725 Y90.975 E.09727
+M73 P98 R0
+M73 Q98 S0
+G1 X122.773 Y90.975 E.29095
+G1 X122.909 Y90.923 E.00468
+G1 X123.376 Y90.501 E.02024
+G1 X123.895 Y90.206 E.0192
+G1 X124.463 Y90.029 E.01913
+G1 X125.112 Y89.987 E.02091
+G1 X125.65 Y90.053 E.01743
+G1 X126.214 Y90.256 E.01928
+G1 X126.721 Y90.574 E.01924
+G1 X127.088 Y90.92 E.01622
+G1 X127.228 Y90.975 E.00484
+G1 X136.275 Y90.975 E.29092
+G1 X136.275 Y92.488 E.04865
+G1 X136.275 Y94 E.04862
+G1 X126.778 Y94 E.30539
+G1 X126.707 Y93.799 E.00685
+G1 X126.574 Y93.75 E.00456
+G1 X126.061 Y93.75 E.0165
+G1 X126.329 Y93.383 E.01461
+G1 X126.47 Y92.841 E.01801
+G1 X126.398 Y92.305 E.01739
+G1 X126.15 Y91.83 E.01723
+G1 X125.768 Y91.494 E.01636
+G1 X125.291 Y91.307 E.01648
+G1 X124.724 Y91.304 E.01823
+G1 X124.245 Y91.487 E.01649
+G1 X123.844 Y91.833 E.01703
+G1 X123.596 Y92.309 E.01726
+G1 X123.534 Y92.875 E.01831
+G1 X123.665 Y93.371 E.0165
+G1 X123.894 Y93.701 E.01292
+G1 X123.498 Y93.757 F10800
+G1 E-.6 F2100
+G1 Z3.5 F10800
+G1 X122.021 Y91.909
+G1 Z3.4
+G1 E.6 F2100
+;TYPE:Top solid infill
+;WIDTH:0.409565
+G1 F2056
+G1 X122.478 Y92.366 E.01872
+G1 X122.449 Y92.855 E.01419
+G1 X121.663 Y92.069 E.03219
+G1 X121.145 Y92.069 E.015
+G1 X121.981 Y92.906 E.03426
+G1 X121.462 Y92.906 E.01503
+G1 X120.626 Y92.069 E.03426
+G1 X120.108 Y92.069 E.015
+G1 X120.944 Y92.906 E.03426
+G1 X120.425 Y92.906 E.01503
+G1 X119.589 Y92.069 E.03426
+G1 X119.071 Y92.069 E.015
+G1 X119.907 Y92.906 E.03426
+G1 X119.388 Y92.906 E.01503
+G1 X118.552 Y92.069 E.03426
+G1 X118.034 Y92.069 E.015
+G1 X118.87 Y92.906 E.03426
+G1 X118.351 Y92.906 E.01503
+G1 X117.515 Y92.069 E.03426
+G1 X116.997 Y92.069 E.015
+G1 X117.833 Y92.906 E.03426
+G1 X117.314 Y92.906 E.01503
+G1 X116.478 Y92.069 E.03426
+G1 X115.96 Y92.069 E.015
+G1 X116.796 Y92.906 E.03426
+G1 X116.277 Y92.906 E.01503
+G1 X115.441 Y92.069 E.03426
+G1 X114.923 Y92.069 E.015
+G1 X115.759 Y92.906 E.03426
+G1 X115.24 Y92.906 E.01503
+G1 X114.659 Y92.324 E.02382
+G1 E-.6 F2100
+G1 X114.659 Y92.324 Z3.5 F10800
+G1 X134.61 Y91.909
+G1 Z3.4
+G1 E.6 F2100
+;WIDTH:0.40444
+G1 F2056
+G1 X135.181 Y92.479 E.02304
+G1 X135.181 Y92.906 E.01219
+G1 X135.095 Y92.906 E.00246
+G1 X134.259 Y92.069 E.03378
+G1 X133.748 Y92.069 E.01459
+G1 X134.584 Y92.906 E.03378
+G1 X134.073 Y92.906 E.01459
+G1 X133.237 Y92.069 E.03378
+G1 X132.726 Y92.069 E.01459
+G1 X133.562 Y92.906 E.03378
+G1 X133.05 Y92.906 E.01462
+G1 X132.214 Y92.069 E.03378
+G1 X131.703 Y92.069 E.01459
+G1 X132.539 Y92.906 E.03378
+G1 X132.028 Y92.906 E.01459
+G1 X131.192 Y92.069 E.03378
+G1 X130.681 Y92.069 E.01459
+G1 X131.517 Y92.906 E.03378
+G1 X131.005 Y92.906 E.01462
+G1 X130.169 Y92.069 E.03378
+G1 X129.658 Y92.069 E.01459
+G1 X130.494 Y92.906 E.03378
+G1 X129.983 Y92.906 E.01459
+G1 X129.147 Y92.069 E.03378
+G1 X128.635 Y92.069 E.01462
+G1 X129.472 Y92.906 E.0338
+G1 X128.96 Y92.906 E.01462
+G1 X128.124 Y92.069 E.03378
+G1 X127.613 Y92.069 E.01459
+G1 X128.449 Y92.906 E.03378
+G1 X127.938 Y92.906 E.01459
+G1 X127.362 Y92.33 E.02326
+G1 E-.6 F2100
+M107
+;TYPE:Custom
+; Filament-specific end gcode
+G4 ; wait
+M221 S100 ; reset flow
+M900 K0 ; reset LA
+
+M104 S0 ; turn off temperature
+M140 S0 ; turn off heatbed
+M107 ; turn off fan
+G1 Z33.4 ; Move print head up
+G1 X0 Y200 F3000 ; home X axis
+M73 P99 R0
+M73 Q99 S0
+M84 ; disable motors
+M73 P100 R0
+M73 Q100 S0
+; filament used [mm] = 520.79
+; filament used [cm3] = 1.25
+; filament used [g] = 1.55
+; filament cost = 0.04
+; total filament used [g] = 1.55
+; total filament cost = 0.04
+; total filament used for wipe tower [g] = 0.00
+; estimated printing time (normal mode) = 9m 16s
+; estimated printing time (silent mode) = 9m 19s
+; estimated first layer printing time (normal mode) = 1m 19s
+; estimated first layer printing time (silent mode) = 1m 20s
+
+; prusaslicer_config = begin
+; arc_fitting = disabled
+; autoemit_temperature_commands = 1
+; avoid_crossing_curled_overhangs = 0
+; avoid_crossing_perimeters = 0
+; avoid_crossing_perimeters_max_detour = 0
+; bed_custom_model =
+; bed_custom_texture =
+; bed_shape = 0x0,250x0,250x210,0x210
+; bed_temperature = 60
+; before_layer_gcode = ;BEFORE_LAYER_CHANGE\nG92 E0.0\n;[layer_z]\n\n
+; between_objects_gcode =
+; binary_gcode = 0
+; bottom_fill_pattern = monotonic
+; bottom_solid_layers = 5
+; bottom_solid_min_thickness = 1
+; bridge_acceleration = 1000
+; bridge_angle = 0
+; bridge_fan_speed = 100
+; bridge_flow_ratio = 0.8
+; bridge_speed = 30
+; brim_separation = 0
+; brim_type = outer_only
+; brim_width = 0
+; color_change_gcode = M600
+; compatible_printers_condition_cummulative = "printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK3.*/ and nozzle_diameter[0]==0.4";"! (printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK(2.5|3).*/ and single_extruder_multi_material)"
+; complete_objects = 0
+; cooling = 1
+; cooling_tube_length = 5
+; cooling_tube_retraction = 91.5
+; default_acceleration = 0
+; default_filament_profile = "Prusament PLA"
+; default_print_profile = 0.15mm QUALITY @MK3
+; deretract_speed = 0
+; disable_fan_first_layers = 1
+; dont_support_bridges = 0
+; draft_shield = disabled
+; duplicate_distance = 6
+; elefant_foot_compensation = 0.2
+; enable_dynamic_fan_speeds = 0
+; enable_dynamic_overhang_speeds = 0
+; end_filament_gcode = "; Filament-specific end gcode"
+; end_gcode = G4 ; wait\nM221 S100 ; reset flow\nM900 K0 ; reset LA\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3|@0.25 nozzle MK3).*/}M907 E538 ; reset extruder motor current{endif}\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+30, max_print_height)}{endif} ; Move print head up\nG1 X0 Y200 F3000 ; home X axis\nM84 ; disable motors
+; external_perimeter_acceleration = 0
+; external_perimeter_extrusion_width = 0.45
+; external_perimeter_speed = 25
+; external_perimeters_first = 0
+; extra_loading_move = -2
+; extra_perimeters = 0
+; extra_perimeters_on_overhangs = 0
+; extruder_clearance_height = 20
+; extruder_clearance_radius = 45
+; extruder_colour = ""
+; extruder_offset = 0x0
+; extrusion_axis = E
+; extrusion_multiplier = 0.95
+; extrusion_width = 0.45
+; fan_always_on = 1
+; fan_below_layer_time = 100
+; filament_colour = #FF8000
+; filament_cooling_final_speed = 3.4
+; filament_cooling_initial_speed = 2.2
+; filament_cooling_moves = 4
+; filament_cost = 25.4
+; filament_density = 1.24
+; filament_diameter = 1.75
+; filament_load_time = 0
+; filament_loading_speed = 28
+; filament_loading_speed_start = 3
+; filament_max_volumetric_speed = 10
+; filament_minimal_purge_on_wipe_tower = 15
+; filament_multitool_ramming = 0
+; filament_multitool_ramming_flow = 10
+; filament_multitool_ramming_volume = 10
+; filament_notes = ""
+; filament_ramming_parameters = "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6"
+; filament_settings_id = "2000 Manuform PLA Revo"
+; filament_soluble = 0
+; filament_spool_weight = 265
+; filament_toolchange_delay = 0
+; filament_type = PLA
+; filament_unload_time = 0
+; filament_unloading_speed = 90
+; filament_unloading_speed_start = 100
+; filament_vendor = Esun
+; fill_angle = 45
+; fill_density = 10%
+; fill_pattern = grid
+; first_layer_acceleration = 0
+; first_layer_acceleration_over_raft = 0
+; first_layer_bed_temperature = 60
+; first_layer_extrusion_width = 0.42
+; first_layer_height = 0.2
+; first_layer_speed = 20
+; first_layer_speed_over_raft = 30
+; first_layer_temperature = 215
+; full_fan_speed_layer = 3
+; fuzzy_skin = none
+; fuzzy_skin_point_dist = 0.8
+; fuzzy_skin_thickness = 0.3
+; gap_fill_enabled = 1
+; gap_fill_speed = 40
+; gcode_comments = 0
+; gcode_flavor = marlin
+; gcode_label_objects = disabled
+; gcode_resolution = 0.0125
+; gcode_substitutions =
+; high_current_on_filament_swap = 0
+; host_type = octoprint
+; infill_acceleration = 1000
+; infill_anchor = 600%
+; infill_anchor_max = 50
+; infill_every_layers = 1
+; infill_extruder = 1
+; infill_extrusion_width = 0.45
+; infill_first = 0
+; infill_overlap = 25%
+; infill_speed = 80
+; inherits_cummulative = "0.15mm QUALITY @MK3";"Esun PLA";"Original Prusa i3 MK3S & MK3S+"
+; interface_shells = 0
+; ironing = 0
+; ironing_flowrate = 15%
+; ironing_spacing = 0.1
+; ironing_speed = 15
+; ironing_type = top
+; layer_gcode = ;AFTER_LAYER_CHANGE\n;[layer_z]
+; layer_height = 0.2
+; machine_limits_usage = emit_to_gcode
+; machine_max_acceleration_e = 5000,5000
+; machine_max_acceleration_extruding = 1250,1250
+; machine_max_acceleration_retracting = 1250,1250
+; machine_max_acceleration_travel = 1500,1250
+; machine_max_acceleration_x = 1000,960
+; machine_max_acceleration_y = 1000,960
+; machine_max_acceleration_z = 200,200
+; machine_max_feedrate_e = 120,120
+; machine_max_feedrate_x = 200,100
+; machine_max_feedrate_y = 200,100
+; machine_max_feedrate_z = 12,12
+; machine_max_jerk_e = 4.5,4.5
+; machine_max_jerk_x = 8,8
+; machine_max_jerk_y = 8,8
+; machine_max_jerk_z = 0.4,0.4
+; machine_min_extruding_rate = 0,0
+; machine_min_travel_rate = 0,0
+; max_fan_speed = 100
+; max_layer_height = 0.25
+; max_print_height = 210
+; max_print_speed = 200
+; max_volumetric_extrusion_rate_slope_negative = 0
+; max_volumetric_extrusion_rate_slope_positive = 0
+; max_volumetric_speed = 0
+; min_bead_width = 85%
+; min_fan_speed = 100
+; min_feature_size = 0.1
+; min_layer_height = 0.07
+; min_print_speed = 15
+; min_skirt_length = 4
+; mmu_segmented_region_interlocking_depth = 0
+; mmu_segmented_region_max_width = 0
+; notes = Most settings copied from Creality Manuform NICE
+; nozzle_diameter = 0.4
+; only_retract_when_crossing_perimeters = 0
+; ooze_prevention = 0
+; output_filename_format = {input_filename_base}_{layer_height}mm_{filament_type[0]}_{printer_model}_{print_time}.gcode
+; overhang_fan_speed_0 = 0
+; overhang_fan_speed_1 = 0
+; overhang_fan_speed_2 = 0
+; overhang_fan_speed_3 = 0
+; overhang_speed_0 = 15
+; overhang_speed_1 = 15
+; overhang_speed_2 = 20
+; overhang_speed_3 = 25
+; overhangs = 1
+; parking_pos_retraction = 92
+; pause_print_gcode = M601
+; perimeter_acceleration = 800
+; perimeter_extruder = 1
+; perimeter_extrusion_width = 0.45
+; perimeter_generator = arachne
+; perimeter_speed = 45
+; perimeters = 3
+; physical_printer_settings_id =
+; post_process =
+; print_settings_id = 2000 0.2mm MK3s - Manuform Support Standard
+; printer_model = MK3S
+; printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_MK3\n
+; printer_settings_id = 2000 Original Prusa i3 MK3S Revo Z-Hoppy
+; printer_technology = FFF
+; printer_variant = 0.4
+; printer_vendor =
+; raft_contact_distance = 0.1
+; raft_expansion = 1.5
+; raft_first_layer_density = 90%
+; raft_first_layer_expansion = 3
+; raft_layers = 0
+; remaining_times = 1
+; resolution = 0
+; retract_before_travel = 2
+; retract_before_wipe = 70%
+; retract_layer_change = 0
+; retract_length = 0.6
+; retract_length_toolchange = 4
+; retract_lift = 0.1
+; retract_lift_above = 0
+; retract_lift_below = 209
+; retract_restart_extra = 0
+; retract_restart_extra_toolchange = 0
+; retract_speed = 35
+; seam_position = aligned
+; silent_mode = 1
+; single_extruder_multi_material = 0
+; single_extruder_multi_material_priming = 0
+; skirt_distance = 2
+; skirt_height = 2
+; skirts = 0
+; slice_closing_radius = 0.049
+; slicing_mode = regular
+; slowdown_below_layer_time = 15
+; small_perimeter_speed = 25
+; solid_infill_acceleration = 0
+; solid_infill_below_area = 0
+; solid_infill_every_layers = 0
+; solid_infill_extruder = 1
+; solid_infill_extrusion_width = 0.45
+; solid_infill_speed = 80
+; spiral_vase = 0
+; staggered_inner_seams = 0
+; standby_temperature_delta = -5
+; start_filament_gcode = "M900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.8}0.06{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.8}0.01{elsif nozzle_diameter[0]==0.6}0.04{else}0.05{endif} ; Filament gcode LA 1.5\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K18{elsif nozzle_diameter[0]==0.8};{else}M900 K30{endif} ; Filament gcode LA 1.0"
+; start_gcode = M862.3 P "[printer_model]" ; printer model check\nM862.1 P[nozzle_diameter] ; nozzle diameter check\nM115 U3.10.0 ; tell printer latest fw version\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG1 Y-3.0 F1000.0 ; go outside print area\nG92 E0.0\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0\nM221 S{if layer_height<0.075}100{else}95{endif}\n\n; Don't change E values below. Excessive value can damage the printer.\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3).*/}M907 E430 ; set extruder motor current{endif}\n{if print_settings_id=~/.*(SPEED @MK3|DRAFT @MK3).*/}M907 E538 ; set extruder motor current{endif}
+; support_material = 1
+; support_material_angle = 0
+; support_material_auto = 1
+; support_material_bottom_contact_distance = 0
+; support_material_bottom_interface_layers = -1
+; support_material_buildplate_only = 1
+; support_material_closing_radius = 2
+; support_material_contact_distance = 0.25
+; support_material_enforce_layers = 0
+; support_material_extruder = 0
+; support_material_extrusion_width = 0.35
+; support_material_interface_contact_loops = 0
+; support_material_interface_extruder = 0
+; support_material_interface_layers = 4
+; support_material_interface_pattern = rectilinear
+; support_material_interface_spacing = 0.2
+; support_material_interface_speed = 80%
+; support_material_pattern = rectilinear
+; support_material_spacing = 3
+; support_material_speed = 50
+; support_material_style = grid
+; support_material_synchronize_layers = 0
+; support_material_threshold = 50
+; support_material_with_sheath = 0
+; support_material_xy_spacing = 75%
+; support_tree_angle = 40
+; support_tree_angle_slow = 25
+; support_tree_branch_diameter = 2
+; support_tree_branch_diameter_angle = 5
+; support_tree_branch_diameter_double_wall = 3
+; support_tree_branch_distance = 1
+; support_tree_tip_diameter = 0.8
+; support_tree_top_rate = 30%
+; temperature = 215
+; template_custom_gcode =
+; thick_bridges = 1
+; thin_walls = 1
+; thumbnails =
+; thumbnails_format = PNG
+; toolchange_gcode =
+; top_fill_pattern = monotonic
+; top_infill_extrusion_width = 0.4
+; top_solid_infill_acceleration = 0
+; top_solid_infill_speed = 40
+; top_solid_layers = 5
+; top_solid_min_thickness = 1
+; travel_acceleration = 0
+; travel_lift_before_obstacle = 0
+; travel_max_lift = 0
+; travel_ramping_lift = 0
+; travel_slope = 0
+; travel_speed = 180
+; travel_speed_z = 0
+; use_firmware_retraction = 0
+; use_relative_e_distances = 1
+; use_volumetric_e = 0
+; variable_layer_height = 1
+; wall_distribution_count = 1
+; wall_transition_angle = 10
+; wall_transition_filter_deviation = 25%
+; wall_transition_length = 0.4
+; wipe = 0
+; wipe_into_infill = 0
+; wipe_into_objects = 0
+; wipe_tower = 1
+; wipe_tower_bridging = 10
+; wipe_tower_brim_width = 2
+; wipe_tower_cone_angle = 0
+; wipe_tower_extra_spacing = 100%
+; wipe_tower_extruder = 0
+; wipe_tower_no_sparse_layers = 0
+; wipe_tower_rotation_angle = 0
+; wipe_tower_width = 60
+; wipe_tower_x = 170
+; wipe_tower_y = 125
+; wiping_volumes_extruders = 70,70
+; wiping_volumes_matrix = 0
+; xy_size_compensation = 0
+; z_offset = 0
+; prusaslicer_config = end
diff --git a/avr/mingw-w64-x86_64-avr-gcc-8.5.0-1-any.pkg.tar.zst b/avr/mingw-w64-x86_64-avr-gcc-8.5.0-1-any.pkg.tar.zst
new file mode 100644
index 00000000000..1c46dc8cba0
Binary files /dev/null and b/avr/mingw-w64-x86_64-avr-gcc-8.5.0-1-any.pkg.tar.zst differ
diff --git a/handwired_wylderbuilds_trackball_4x6_3_all_track_vial.uf2.zip b/handwired_wylderbuilds_trackball_4x6_3_all_track_vial.uf2.zip
new file mode 100644
index 00000000000..2cc842c1c21
Binary files /dev/null and b/handwired_wylderbuilds_trackball_4x6_3_all_track_vial.uf2.zip differ
diff --git a/handwired_wylderbuilds_trackball_4x6_3_wyld_track_vial.uf2.zip b/handwired_wylderbuilds_trackball_4x6_3_wyld_track_vial.uf2.zip
new file mode 100644
index 00000000000..3df3d3a6094
Binary files /dev/null and b/handwired_wylderbuilds_trackball_4x6_3_wyld_track_vial.uf2.zip differ
diff --git a/handwired_wylderbuilds_trackball_5x6_full_track_vial.uf2.zip b/handwired_wylderbuilds_trackball_5x6_full_track_vial.uf2.zip
new file mode 100644
index 00000000000..4635d061477
Binary files /dev/null and b/handwired_wylderbuilds_trackball_5x6_full_track_vial.uf2.zip differ
diff --git a/handwired_wylderbuilds_trackball_5x6_full_track_vial_liftoff_0x03.uf2.zip b/handwired_wylderbuilds_trackball_5x6_full_track_vial_liftoff_0x03.uf2.zip
new file mode 100644
index 00000000000..9e755a8f7e4
Binary files /dev/null and b/handwired_wylderbuilds_trackball_5x6_full_track_vial_liftoff_0x03.uf2.zip differ
diff --git a/handwired_wylderbuilds_trackball_5x7_full_dual_track_vial.uf2.zip b/handwired_wylderbuilds_trackball_5x7_full_dual_track_vial.uf2.zip
new file mode 100644
index 00000000000..c9751045948
Binary files /dev/null and b/handwired_wylderbuilds_trackball_5x7_full_dual_track_vial.uf2.zip differ
diff --git a/handwired_wylderbuilds_trackball_5x7_full_track_vial.uf2 2.zip b/handwired_wylderbuilds_trackball_5x7_full_track_vial.uf2 2.zip
new file mode 100644
index 00000000000..981b27748f0
Binary files /dev/null and b/handwired_wylderbuilds_trackball_5x7_full_track_vial.uf2 2.zip differ
diff --git a/handwired_wylderbuilds_trackball_5x7_full_track_vial.uf2.zip b/handwired_wylderbuilds_trackball_5x7_full_track_vial.uf2.zip
new file mode 100644
index 00000000000..728c6055e16
Binary files /dev/null and b/handwired_wylderbuilds_trackball_5x7_full_track_vial.uf2.zip differ
diff --git a/keyboards/cyboard/config.h b/keyboards/cyboard/config.h
new file mode 100644
index 00000000000..7fd64caa286
--- /dev/null
+++ b/keyboards/cyboard/config.h
@@ -0,0 +1,54 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#pragma once
+
+/* Split keyboard settings */
+#define SERIAL_USART_TX_PIN GP28
+#define SPLIT_HAND_PIN GP0
+
+/* RGB settings */
+#ifdef RGB_MATRIX_ENABLE
+# define WS2812_PIO_USE_PIO1 // Force the usage of PIO1 peripheral, by default the WS2812 implementation uses the PIO0 peripheral
+# define SPLIT_TRANSPORT_MIRROR
+# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_REACTIVE // Sets the default mode, if none has been set
+# define RGB_MATRIX_DEFAULT_HUE 33 // Sets the default hue value, if none has been set
+# define RGB_MATRIX_DEFAULT_SAT 255 // Sets the default saturation value, if none has been set
+# define RGB_MATRIX_DEFAULT_SPD 50
+# define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
+# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# define RGB_MATRIX_KEYPRESSES
+# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#endif
+
+/* Double-tap reset button parameters */
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U
+
+#define USB_VBUS_PIN GP27
+
+/* Vial set up */
+#define VIAL_KEYBOARD_UID {0xC4, 0xCC, 0xB4, 0x76, 0x30, 0x16, 0xFC, 0x70}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 10, 10 }
+#define VIAL_UNLOCK_COMBO_COLS { 3, 4 }
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 10
+#define DYNAMIC_KEYMAP_MACRO_COUNT 64
+
+//trackball support
+#define SPI_DRIVER SPID0
+#define SPI_SCK_PIN GP22
+#define SPI_MISO_PIN GP20
+#define SPI_MOSI_PIN GP23
+#define POINTING_DEVICE_CS_PIN GP21
+#define POINTING_DEVICE_INVERT_X
+#define POINTING_DEVICE_INVERT_X_RIGHT
+#define SPLIT_POINTING_ENABLE
+#define POINTING_DEVICE_COMBINED
+#define CHARYBDIS_DRAGSCROLL_REVERSE_Y
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define CHARYBDIS_CONFIG_DUAL_SYNC
+#define PMW3360_LIFTOFF_DISTANCE 0x02 //default 0x02, 2mm liftoff distance
diff --git a/keyboards/cyboard/dactyl/dual_arcs_function_row/info.json b/keyboards/cyboard/dactyl/dual_arcs_function_row/info.json
new file mode 100644
index 00000000000..34b6bf2921d
--- /dev/null
+++ b/keyboards/cyboard/dactyl/dual_arcs_function_row/info.json
@@ -0,0 +1,189 @@
+{
+ "rgb_matrix": {
+ "split_count": [39, 39],
+ "layout": [
+ {"flags": 4, "matrix": [3, 0], "x": 86, "y": 32},
+ {"flags": 4, "matrix": [2, 0], "x": 86, "y": 43},
+ {"flags": 4, "matrix": [6, 0], "x": 86, "y": 0},
+ {"flags": 4, "matrix": [5, 0], "x": 86, "y": 11},
+ {"flags": 4, "matrix": [4, 0], "x": 86, "y": 21},
+
+ {"flags": 4, "matrix": [3, 1], "x": 69, "y": 32},
+ {"flags": 4, "matrix": [2, 1], "x": 69, "y": 43},
+ {"flags": 4, "matrix": [6, 1], "x": 69, "y": 0},
+ {"flags": 4, "matrix": [5, 1], "x": 69, "y": 11},
+ {"flags": 4, "matrix": [4, 1], "x": 69, "y": 21},
+
+ {"flags": 4, "matrix": [3, 2], "x": 52, "y": 32},
+ {"flags": 4, "matrix": [2, 2], "x": 52, "y": 43},
+ {"flags": 4, "matrix": [1, 2], "x": 52, "y": 53},
+ {"flags": 4, "matrix": [6, 2], "x": 52, "y": 0},
+ {"flags": 4, "matrix": [5, 2], "x": 52, "y": 11},
+ {"flags": 4, "matrix": [4, 2], "x": 52, "y": 21},
+
+ {"flags": 4, "matrix": [3, 3], "x": 34, "y": 32},
+ {"flags": 4, "matrix": [2, 3], "x": 34, "y": 43},
+ {"flags": 4, "matrix": [1, 3], "x": 34, "y": 53},
+ {"flags": 4, "matrix": [6, 3], "x": 34, "y": 0},
+ {"flags": 4, "matrix": [5, 3], "x": 34, "y": 11},
+ {"flags": 4, "matrix": [4, 3], "x": 34, "y": 21},
+
+ {"flags": 4, "matrix": [3, 4], "x": 17, "y": 32},
+ {"flags": 4, "matrix": [2, 4], "x": 17, "y": 43},
+ {"flags": 4, "matrix": [1, 4], "x": 17, "y": 53},
+ {"flags": 4, "matrix": [6, 4], "x": 17, "y": 0},
+ {"flags": 4, "matrix": [5, 4], "x": 17, "y": 11},
+ {"flags": 4, "matrix": [4, 4], "x": 17, "y": 21},
+
+ {"flags": 4, "matrix": [3, 5], "x": 0, "y": 32},
+ {"flags": 4, "matrix": [2, 5], "x": 0, "y": 43},
+ {"flags": 4, "matrix": [1, 5], "x": 0, "y": 53},
+ {"flags": 4, "matrix": [6, 5], "x": 0, "y": 0},
+ {"flags": 4, "matrix": [5, 5], "x": 0, "y": 11},
+ {"flags": 4, "matrix": [4, 5], "x": 0, "y": 21},
+
+ {"flags": 4, "matrix": [0, 3], "x": 86, "y": 53},
+ {"flags": 4, "matrix": [0, 2], "x": 103, "y": 53},
+ {"flags": 4, "matrix": [0, 1], "x": 103, "y": 64},
+ {"flags": 4, "matrix": [0, 7], "x": 69, "y": 53},
+ {"flags": 4, "matrix": [0, 6], "x": 69, "y": 64},
+
+
+ {"flags": 4, "matrix": [10, 0], "x": 138, "y": 32},
+ {"flags": 4, "matrix": [9, 0], "x": 138, "y": 43},
+ {"flags": 4, "matrix": [13, 0], "x": 138, "y": 0},
+ {"flags": 4, "matrix": [12, 0], "x": 138, "y": 11},
+ {"flags": 4, "matrix": [11, 0], "x": 138, "y": 21},
+
+ {"flags": 4, "matrix": [10, 1], "x": 155, "y": 32},
+ {"flags": 4, "matrix": [9, 1], "x": 155, "y": 43},
+ {"flags": 4, "matrix": [13, 1], "x": 155, "y": 0},
+ {"flags": 4, "matrix": [12, 1], "x": 155, "y": 11},
+ {"flags": 4, "matrix": [11, 1], "x": 155, "y": 21},
+
+ {"flags": 4, "matrix": [10, 2], "x": 172, "y": 32},
+ {"flags": 4, "matrix": [9, 2], "x": 172, "y": 43},
+ {"flags": 4, "matrix": [8, 2], "x": 172, "y": 53},
+ {"flags": 4, "matrix": [13, 2], "x": 172, "y": 0},
+ {"flags": 4, "matrix": [12, 2], "x": 172, "y": 11},
+ {"flags": 4, "matrix": [11, 2], "x": 172, "y": 21},
+
+ {"flags": 4, "matrix": [10, 3], "x": 190, "y": 32},
+ {"flags": 4, "matrix": [9, 3], "x": 190, "y": 43},
+ {"flags": 4, "matrix": [8, 3], "x": 190, "y": 53},
+ {"flags": 4, "matrix": [13, 3], "x": 190, "y": 0},
+ {"flags": 4, "matrix": [12, 3], "x": 190, "y": 11},
+ {"flags": 4, "matrix": [11, 3], "x": 190, "y": 21},
+
+ {"flags": 4, "matrix": [10, 4], "x": 207, "y": 32},
+ {"flags": 4, "matrix": [9, 4], "x": 207, "y": 43},
+ {"flags": 4, "matrix": [8, 4], "x": 207, "y": 53},
+ {"flags": 4, "matrix": [13, 4], "x": 207, "y": 0},
+ {"flags": 4, "matrix": [12, 4], "x": 207, "y": 11},
+ {"flags": 4, "matrix": [11, 4], "x": 207, "y": 21},
+
+ {"flags": 4, "matrix": [10, 5], "x": 224, "y": 32},
+ {"flags": 4, "matrix": [9, 5], "x": 224, "y": 43},
+ {"flags": 4, "matrix": [8, 5], "x": 224, "y": 53},
+ {"flags": 4, "matrix": [13, 5], "x": 224, "y": 0},
+ {"flags": 4, "matrix": [12, 5], "x": 224, "y": 11},
+ {"flags": 4, "matrix": [11, 5], "x": 224, "y": 21},
+
+ {"flags": 4, "matrix": [7, 3], "x": 138, "y": 53},
+ {"flags": 4, "matrix": [7, 2], "x": 121, "y": 53},
+ {"flags": 4, "matrix": [7, 1], "x": 121, "y": 64},
+ {"flags": 4, "matrix": [7, 7], "x": 138, "y": 64},
+ {"flags": 4, "matrix": [7, 6], "x": 155, "y": 64}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_dual_arcs_fun": {
+ "layout": [
+ { "matrix": [6, 5], "x": 0, "y": 0 },
+ { "matrix": [6, 4], "x": 1, "y": 0 },
+ { "matrix": [6, 3], "x": 2, "y": 0 },
+ { "matrix": [6, 2], "x": 3, "y": 0 },
+ { "matrix": [6, 1], "x": 4, "y": 0 },
+ { "matrix": [6, 0], "x": 5, "y": 0 },
+ { "matrix": [13, 0], "x": 11.5, "y": 0 },
+ { "matrix": [13, 1], "x": 12.5, "y": 0 },
+ { "matrix": [13, 2], "x": 13.5, "y": 0 },
+ { "matrix": [13, 3], "x": 14.5, "y": 0 },
+ { "matrix": [13, 4], "x": 15.5, "y": 0 },
+ { "matrix": [13, 5], "x": 16.5, "y": 0 },
+ { "matrix": [5, 5], "x": 0, "y": 0 },
+ { "matrix": [5, 4], "x": 1, "y": 0 },
+ { "matrix": [5, 3], "x": 2, "y": 0 },
+ { "matrix": [5, 2], "x": 3, "y": 0 },
+ { "matrix": [5, 1], "x": 4, "y": 0 },
+ { "matrix": [5, 0], "x": 5, "y": 0 },
+ { "matrix": [12, 0], "x": 11.5, "y": 0 },
+ { "matrix": [12, 1], "x": 12.5, "y": 0 },
+ { "matrix": [12, 2], "x": 13.5, "y": 0 },
+ { "matrix": [12, 3], "x": 14.5, "y": 0 },
+ { "matrix": [12, 4], "x": 15.5, "y": 0 },
+ { "matrix": [12, 5], "x": 16.5, "y": 0 },
+ { "matrix": [4, 5], "x": 0, "y": 1 },
+ { "matrix": [4, 4], "x": 1, "y": 1 },
+ { "matrix": [4, 3], "x": 2, "y": 1 },
+ { "matrix": [4, 2], "x": 3, "y": 1 },
+ { "matrix": [4, 1], "x": 4, "y": 1 },
+ { "matrix": [4, 0], "x": 5, "y": 1 },
+ { "matrix": [11, 0], "x": 10.5, "y": 1 },
+ { "matrix": [11, 1], "x": 11.5, "y": 1 },
+ { "matrix": [11, 2], "x": 12.5, "y": 1 },
+ { "matrix": [11, 3], "x": 13.5, "y": 1 },
+ { "matrix": [11, 4], "x": 14.5, "y": 1 },
+ { "matrix": [11, 5], "x": 15.5, "y": 1 },
+ { "matrix": [3, 5], "x": 0, "y": 2 },
+ { "matrix": [3, 4], "x": 1, "y": 2 },
+ { "matrix": [3, 3], "x": 2, "y": 2 },
+ { "matrix": [3, 2], "x": 3, "y": 2 },
+ { "matrix": [3, 1], "x": 4, "y": 2 },
+ { "matrix": [3, 0], "x": 5, "y": 2 },
+ { "matrix": [10, 0], "x": 10.5, "y": 2 },
+ { "matrix": [10, 1], "x": 11.5, "y": 2 },
+ { "matrix": [10, 2], "x": 12.5, "y": 2 },
+ { "matrix": [10, 3], "x": 13.5, "y": 2 },
+ { "matrix": [10, 4], "x": 14.5, "y": 2 },
+ { "matrix": [10, 5], "x": 15.5, "y": 2 },
+ { "matrix": [2, 5], "x": 0, "y": 3 },
+ { "matrix": [2, 4], "x": 1, "y": 3 },
+ { "matrix": [2, 3], "x": 2, "y": 3 },
+ { "matrix": [2, 2], "x": 3, "y": 3 },
+ { "matrix": [2, 1], "x": 4, "y": 3 },
+ { "matrix": [2, 0], "x": 5, "y": 3 },
+ { "matrix": [9, 0], "x": 10.5, "y": 3 },
+ { "matrix": [9, 1], "x": 11.5, "y": 3 },
+ { "matrix": [9, 2], "x": 12.5, "y": 3 },
+ { "matrix": [9, 3], "x": 13.5, "y": 3 },
+ { "matrix": [9, 4], "x": 14.5, "y": 3 },
+ { "matrix": [9, 5], "x": 15.5, "y": 3 },
+
+ { "matrix": [1, 5], "x": 0, "y": 4 },
+ { "matrix": [1, 4], "x": 1, "y": 4 },
+ { "matrix": [1, 3], "x": 2, "y": 4 },
+ { "matrix": [1, 2], "x": 3, "y": 4 },
+
+ { "matrix": [0, 3], "x": 4.5, "y": 4.5 },
+ { "matrix": [0, 2], "x": 5.5, "y": 4.5 },
+ { "matrix": [0, 1], "x": 6.5, "y": 4.5 },
+
+ { "matrix": [7, 1], "x": 9, "y": 4.5 },
+ { "matrix": [7, 2], "x": 10, "y": 4.5 },
+ { "matrix": [7, 3], "x": 11, "y": 4.5 },
+
+ { "matrix": [8, 2], "x": 12.5, "y": 4 },
+ { "matrix": [8, 3], "x": 13.5, "y": 4 },
+ { "matrix": [8, 4], "x": 14.5, "y": 4 },
+ { "matrix": [8, 5], "x": 15.5, "y": 4 },
+
+ { "matrix": [0, 7], "x": 5.5, "y": 5.5 },
+ { "matrix": [0, 6], "x": 6.5, "y": 5.5 },
+
+ { "matrix": [7, 6], "x": 9, "y": 5.5 },
+ { "matrix": [7, 7], "x": 10, "y": 5.5 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/cyboard/dactyl/dual_arcs_function_row/keymaps/vial/keymap.c b/keyboards/cyboard/dactyl/dual_arcs_function_row/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..1bc9fc21bd4
--- /dev/null
+++ b/keyboards/cyboard/dactyl/dual_arcs_function_row/keymaps/vial/keymap.c
@@ -0,0 +1,108 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_dual_arcs_fun(
+ 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_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_UP, KC_DOWN, KC_LGUI, KC_LALT, KC_LGUI, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, MO(1), KC_LBRC, KC_RBRC, KC_LEFT, KC_RIGHT,
+ KC_GRAVE, KC_ESC, KC_CAPS, KC_APP
+ ),
+
+ [1] = LAYOUT_dual_arcs_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_dual_arcs_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_dual_arcs_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_dual_arcs_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_dual_arcs_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_dual_arcs_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_dual_arcs_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_dual_arcs_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_dual_arcs_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/dactyl/dual_arcs_function_row/keymaps/vial/rules.mk b/keyboards/cyboard/dactyl/dual_arcs_function_row/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/dactyl/dual_arcs_function_row/keymaps/vial/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/dactyl/dual_arcs_function_row/keymaps/vial/vial.json b/keyboards/cyboard/dactyl/dual_arcs_function_row/keymaps/vial/vial.json
new file mode 100644
index 00000000000..31188a04dc0
--- /dev/null
+++ b/keyboards/cyboard/dactyl/dual_arcs_function_row/keymaps/vial/vial.json
@@ -0,0 +1,140 @@
+{
+ "name": "Dactyl",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 8
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "6,5",
+ "6,4",
+ "6,3",
+ "6,2",
+ "6,1",
+ "6,0",
+ {
+ "x": 3.25
+ },
+ "13,0",
+ "13,1",
+ "13,2",
+ "13,3",
+ "13,4",
+ "13,5"
+ ],
+ [
+ "5,5",
+ "5,4",
+ "5,3",
+ "5,2",
+ "5,1",
+ "5,0",
+ {
+ "x": 3.25
+ },
+ "12,0",
+ "12,1",
+ "12,2",
+ "12,3",
+ "12,4",
+ "12,5"
+ ],
+ [
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ "4,0",
+ {
+ "x": 3.25
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5"
+ ],
+ [
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ "3,0",
+ {
+ "x": 3.25
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5"
+ ],
+ [
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ "2,0",
+ {
+ "x": 3.25
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5"
+ ],
+ [
+ "1,5",
+ "1,4",
+ "1,3",
+ "1,2",
+ {
+ "x": 7.25
+ },
+ "8,2",
+ "8,3",
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 4.25
+ },
+ "0,3",
+ "0,2",
+ "0,1",
+ {
+ "x": 0.5
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "x": 5.25
+ },
+ "0,7",
+ "0,6",
+ {
+ "x": 0.5
+ },
+ "7,6",
+ "7,7"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/dactyl/dual_arcs_function_row/rules.mk b/keyboards/cyboard/dactyl/dual_arcs_function_row/rules.mk
new file mode 100644
index 00000000000..e02abfc9b0e
--- /dev/null
+++ b/keyboards/cyboard/dactyl/dual_arcs_function_row/rules.mk
@@ -0,0 +1 @@
+
diff --git a/keyboards/cyboard/dactyl/dual_arcs_letters_only/info.json b/keyboards/cyboard/dactyl/dual_arcs_letters_only/info.json
new file mode 100644
index 00000000000..b62dccd020b
--- /dev/null
+++ b/keyboards/cyboard/dactyl/dual_arcs_letters_only/info.json
@@ -0,0 +1,146 @@
+{
+ "rgb_matrix": {
+ "split_count": [27, 27],
+ "layout": [
+ {"flags": 4, "matrix": [3, 0], "x": 86, "y": 32},
+ {"flags": 4, "matrix": [2, 0], "x": 86, "y": 43},
+ {"flags": 4, "matrix": [4, 0], "x": 86, "y": 21},
+
+ {"flags": 4, "matrix": [3, 1], "x": 69, "y": 32},
+ {"flags": 4, "matrix": [2, 1], "x": 69, "y": 43},
+ {"flags": 4, "matrix": [4, 1], "x": 69, "y": 21},
+
+ {"flags": 4, "matrix": [3, 2], "x": 52, "y": 32},
+ {"flags": 4, "matrix": [2, 2], "x": 52, "y": 43},
+ {"flags": 4, "matrix": [1, 2], "x": 52, "y": 53},
+ {"flags": 4, "matrix": [4, 2], "x": 52, "y": 21},
+
+ {"flags": 4, "matrix": [3, 3], "x": 34, "y": 32},
+ {"flags": 4, "matrix": [2, 3], "x": 34, "y": 43},
+ {"flags": 4, "matrix": [1, 3], "x": 34, "y": 53},
+ {"flags": 4, "matrix": [4, 3], "x": 34, "y": 21},
+
+ {"flags": 4, "matrix": [3, 4], "x": 17, "y": 32},
+ {"flags": 4, "matrix": [2, 4], "x": 17, "y": 43},
+ {"flags": 4, "matrix": [1, 4], "x": 17, "y": 53},
+ {"flags": 4, "matrix": [4, 4], "x": 17, "y": 21},
+
+ {"flags": 4, "matrix": [3, 5], "x": 0, "y": 32},
+ {"flags": 4, "matrix": [2, 5], "x": 0, "y": 43},
+ {"flags": 4, "matrix": [1, 5], "x": 0, "y": 53},
+ {"flags": 4, "matrix": [4, 5], "x": 0, "y": 21},
+
+ {"flags": 4, "matrix": [0, 3], "x": 86, "y": 53},
+ {"flags": 4, "matrix": [0, 2], "x": 103, "y": 53},
+ {"flags": 4, "matrix": [0, 1], "x": 103, "y": 64},
+ {"flags": 4, "matrix": [0, 7], "x": 69, "y": 53},
+ {"flags": 4, "matrix": [0, 6], "x": 69, "y": 64},
+
+
+ {"flags": 4, "matrix": [10, 0], "x": 138, "y": 32},
+ {"flags": 4, "matrix": [9, 0], "x": 138, "y": 43},
+ {"flags": 4, "matrix": [11, 0], "x": 138, "y": 21},
+
+ {"flags": 4, "matrix": [10, 1], "x": 155, "y": 32},
+ {"flags": 4, "matrix": [9, 1], "x": 155, "y": 43},
+ {"flags": 4, "matrix": [11, 1], "x": 155, "y": 21},
+
+ {"flags": 4, "matrix": [10, 2], "x": 172, "y": 32},
+ {"flags": 4, "matrix": [9, 2], "x": 172, "y": 43},
+ {"flags": 4, "matrix": [8, 2], "x": 172, "y": 53},
+ {"flags": 4, "matrix": [11, 2], "x": 172, "y": 21},
+
+ {"flags": 4, "matrix": [10, 3], "x": 190, "y": 32},
+ {"flags": 4, "matrix": [9, 3], "x": 190, "y": 43},
+ {"flags": 4, "matrix": [8, 3], "x": 190, "y": 53},
+ {"flags": 4, "matrix": [11, 3], "x": 190, "y": 21},
+
+ {"flags": 4, "matrix": [10, 4], "x": 207, "y": 32},
+ {"flags": 4, "matrix": [9, 4], "x": 207, "y": 43},
+ {"flags": 4, "matrix": [8, 4], "x": 207, "y": 53},
+ {"flags": 4, "matrix": [11, 4], "x": 207, "y": 21},
+
+ {"flags": 4, "matrix": [10, 5], "x": 224, "y": 32},
+ {"flags": 4, "matrix": [9, 5], "x": 224, "y": 43},
+ {"flags": 4, "matrix": [8, 5], "x": 224, "y": 53},
+ {"flags": 4, "matrix": [11, 5], "x": 224, "y": 21},
+
+ {"flags": 4, "matrix": [7, 3], "x": 138, "y": 53},
+ {"flags": 4, "matrix": [7, 2], "x": 121, "y": 53},
+ {"flags": 4, "matrix": [7, 1], "x": 121, "y": 64},
+ {"flags": 4, "matrix": [7, 7], "x": 138, "y": 64},
+ {"flags": 4, "matrix": [7, 6], "x": 155, "y": 64}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_dual_arcs_let": {
+ "layout": [
+ { "matrix": [4, 5], "x": 0, "y": 0 },
+ { "matrix": [4, 4], "x": 1, "y": 0 },
+ { "matrix": [4, 3], "x": 2, "y": 0 },
+ { "matrix": [4, 2], "x": 3, "y": 0 },
+ { "matrix": [4, 1], "x": 4, "y": 0 },
+ { "matrix": [4, 0], "x": 5, "y": 0 },
+
+ { "matrix": [11, 0], "x": 10.5, "y": 0 },
+ { "matrix": [11, 1], "x": 11.5, "y": 0 },
+ { "matrix": [11, 2], "x": 12.5, "y": 0 },
+ { "matrix": [11, 3], "x": 13.5, "y": 0 },
+ { "matrix": [11, 4], "x": 14.5, "y": 0 },
+ { "matrix": [11, 5], "x": 15.5, "y": 0 },
+
+ { "matrix": [3, 5], "x": 0, "y": 1 },
+ { "matrix": [3, 4], "x": 1, "y": 1 },
+ { "matrix": [3, 3], "x": 2, "y": 1 },
+ { "matrix": [3, 2], "x": 3, "y": 1 },
+ { "matrix": [3, 1], "x": 4, "y": 1 },
+ { "matrix": [3, 0], "x": 5, "y": 1 },
+
+ { "matrix": [10, 0], "x": 10.5, "y": 1 },
+ { "matrix": [10, 1], "x": 11.5, "y": 1 },
+ { "matrix": [10, 2], "x": 12.5, "y": 1 },
+ { "matrix": [10, 3], "x": 13.5, "y": 1 },
+ { "matrix": [10, 4], "x": 14.5, "y": 1 },
+ { "matrix": [10, 5], "x": 15.5, "y": 1 },
+
+ { "matrix": [2, 5], "x": 0, "y": 2 },
+ { "matrix": [2, 4], "x": 1, "y": 2 },
+ { "matrix": [2, 3], "x": 2, "y": 2 },
+ { "matrix": [2, 2], "x": 3, "y": 2 },
+ { "matrix": [2, 1], "x": 4, "y": 2 },
+ { "matrix": [2, 0], "x": 5, "y": 2 },
+
+ { "matrix": [9, 0], "x": 10.5, "y": 2 },
+ { "matrix": [9, 1], "x": 11.5, "y": 2 },
+ { "matrix": [9, 2], "x": 12.5, "y": 2 },
+ { "matrix": [9, 3], "x": 13.5, "y": 2 },
+ { "matrix": [9, 4], "x": 14.5, "y": 2 },
+ { "matrix": [9, 5], "x": 15.5, "y": 2 },
+
+ { "matrix": [1, 5], "x": 0, "y": 3 },
+ { "matrix": [1, 4], "x": 1, "y": 3 },
+ { "matrix": [1, 3], "x": 2, "y": 3 },
+ { "matrix": [1, 2], "x": 3, "y": 3 },
+
+ { "matrix": [0, 3], "x": 4.5, "y": 3.5 },
+ { "matrix": [0, 2], "x": 5.5, "y": 3.5 },
+ { "matrix": [0, 1], "x": 6.5, "y": 3.5 },
+
+ { "matrix": [7, 1], "x": 9, "y": 3.5 },
+ { "matrix": [7, 2], "x": 10, "y": 3.5 },
+ { "matrix": [7, 3], "x": 11, "y": 3.5 },
+
+ { "matrix": [8, 2], "x": 12.5, "y": 3 },
+ { "matrix": [8, 3], "x": 13.5, "y": 3 },
+ { "matrix": [8, 4], "x": 14.5, "y": 3 },
+ { "matrix": [8, 5], "x": 15.5, "y": 3 },
+
+ { "matrix": [0, 7], "x": 5.5, "y": 4.5 },
+ { "matrix": [0, 6], "x": 6.5, "y": 4.5 },
+
+ { "matrix": [7, 6], "x": 9, "y": 4.5 },
+ { "matrix": [7, 7], "x": 10, "y": 5.5 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/cyboard/dactyl/dual_arcs_letters_only/keymaps/vial/keymap.c b/keyboards/cyboard/dactyl/dual_arcs_letters_only/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..f9b6e22671a
--- /dev/null
+++ b/keyboards/cyboard/dactyl/dual_arcs_letters_only/keymaps/vial/keymap.c
@@ -0,0 +1,88 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_dual_arcs_let(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_UP, KC_DOWN, KC_LGUI, KC_LALT, KC_LGUI, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, MO(1), KC_LBRC, KC_RBRC, KC_LEFT, KC_RIGHT,
+ KC_GRAVE, KC_ESC, KC_CAPS, KC_APP
+ ),
+
+ [1] = LAYOUT_dual_arcs_let(
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_dual_arcs_let(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_dual_arcs_let(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_dual_arcs_let(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_dual_arcs_let(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_dual_arcs_let(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_dual_arcs_let(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_dual_arcs_let(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_dual_arcs_let(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/dactyl/dual_arcs_letters_only/keymaps/vial/rules.mk b/keyboards/cyboard/dactyl/dual_arcs_letters_only/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/dactyl/dual_arcs_letters_only/keymaps/vial/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/dactyl/dual_arcs_letters_only/keymaps/vial/vial.json b/keyboards/cyboard/dactyl/dual_arcs_letters_only/keymaps/vial/vial.json
new file mode 100644
index 00000000000..c2c12d498f8
--- /dev/null
+++ b/keyboards/cyboard/dactyl/dual_arcs_letters_only/keymaps/vial/vial.json
@@ -0,0 +1,106 @@
+{
+ "name": "Dactyl",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 8
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ "4,0",
+ {
+ "x": 3
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5"
+ ],
+ [
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ "3,0",
+ {
+ "x": 3
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5"
+ ],
+ [
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ "2,0",
+ {
+ "x": 3
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5"
+ ],
+ [
+ "1,5",
+ "1,4",
+ "1,3",
+ "1,2",
+ {
+ "x": 7
+ },
+ "8,2",
+ "8,3",
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 4.25
+ },
+ "0,3",
+ "0,2",
+ "0,1",
+ {
+ "x": 0.5
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "x": 5.25
+ },
+ "0,7",
+ "0,6",
+ {
+ "x": 0.5
+ },
+ "7,6",
+ "7,7"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/dactyl/dual_arcs_letters_only/rules.mk b/keyboards/cyboard/dactyl/dual_arcs_letters_only/rules.mk
new file mode 100644
index 00000000000..e02abfc9b0e
--- /dev/null
+++ b/keyboards/cyboard/dactyl/dual_arcs_letters_only/rules.mk
@@ -0,0 +1 @@
+
diff --git a/keyboards/cyboard/dactyl/dual_arcs_number_row/info.json b/keyboards/cyboard/dactyl/dual_arcs_number_row/info.json
new file mode 100644
index 00000000000..283458b12d9
--- /dev/null
+++ b/keyboards/cyboard/dactyl/dual_arcs_number_row/info.json
@@ -0,0 +1,172 @@
+{
+ "rgb_matrix": {
+ "split_count": [33, 33],
+ "layout": [
+ {"flags": 4, "matrix": [3, 0], "x": 86, "y": 32},
+ {"flags": 4, "matrix": [2, 0], "x": 86, "y": 43},
+ {"flags": 4, "matrix": [5, 0], "x": 86, "y": 11},
+ {"flags": 4, "matrix": [4, 0], "x": 86, "y": 21},
+
+ {"flags": 4, "matrix": [3, 1], "x": 69, "y": 32},
+ {"flags": 4, "matrix": [2, 1], "x": 69, "y": 43},
+ {"flags": 4, "matrix": [5, 1], "x": 69, "y": 11},
+ {"flags": 4, "matrix": [4, 1], "x": 69, "y": 21},
+
+ {"flags": 4, "matrix": [3, 2], "x": 52, "y": 32},
+ {"flags": 4, "matrix": [2, 2], "x": 52, "y": 43},
+ {"flags": 4, "matrix": [1, 2], "x": 52, "y": 53},
+ {"flags": 4, "matrix": [5, 2], "x": 52, "y": 11},
+ {"flags": 4, "matrix": [4, 2], "x": 52, "y": 21},
+
+ {"flags": 4, "matrix": [3, 3], "x": 34, "y": 32},
+ {"flags": 4, "matrix": [2, 3], "x": 34, "y": 43},
+ {"flags": 4, "matrix": [1, 3], "x": 34, "y": 53},
+ {"flags": 4, "matrix": [5, 3], "x": 34, "y": 11},
+ {"flags": 4, "matrix": [4, 3], "x": 34, "y": 21},
+
+ {"flags": 4, "matrix": [3, 4], "x": 17, "y": 32},
+ {"flags": 4, "matrix": [2, 4], "x": 17, "y": 43},
+ {"flags": 4, "matrix": [1, 4], "x": 17, "y": 53},
+ {"flags": 4, "matrix": [5, 4], "x": 17, "y": 11},
+ {"flags": 4, "matrix": [4, 4], "x": 17, "y": 21},
+
+ {"flags": 4, "matrix": [3, 5], "x": 0, "y": 32},
+ {"flags": 4, "matrix": [2, 5], "x": 0, "y": 43},
+ {"flags": 4, "matrix": [1, 5], "x": 0, "y": 53},
+ {"flags": 4, "matrix": [5, 5], "x": 0, "y": 11},
+ {"flags": 4, "matrix": [4, 5], "x": 0, "y": 21},
+
+ {"flags": 4, "matrix": [0, 3], "x": 86, "y": 53},
+ {"flags": 4, "matrix": [0, 2], "x": 103, "y": 53},
+ {"flags": 4, "matrix": [0, 1], "x": 103, "y": 64},
+ {"flags": 4, "matrix": [0, 7], "x": 69, "y": 53},
+ {"flags": 4, "matrix": [0, 6], "x": 69, "y": 64},
+
+
+ {"flags": 4, "matrix": [10, 0], "x": 138, "y": 32},
+ {"flags": 4, "matrix": [9, 0], "x": 138, "y": 43},
+ {"flags": 4, "matrix": [12, 0], "x": 138, "y": 11},
+ {"flags": 4, "matrix": [11, 0], "x": 138, "y": 21},
+
+ {"flags": 4, "matrix": [10, 1], "x": 155, "y": 32},
+ {"flags": 4, "matrix": [9, 1], "x": 155, "y": 43},
+ {"flags": 4, "matrix": [12, 1], "x": 155, "y": 11},
+ {"flags": 4, "matrix": [11, 1], "x": 155, "y": 21},
+
+ {"flags": 4, "matrix": [10, 2], "x": 172, "y": 32},
+ {"flags": 4, "matrix": [9, 2], "x": 172, "y": 43},
+ {"flags": 4, "matrix": [8, 2], "x": 172, "y": 53},
+ {"flags": 4, "matrix": [12, 2], "x": 172, "y": 11},
+ {"flags": 4, "matrix": [11, 2], "x": 172, "y": 21},
+
+ {"flags": 4, "matrix": [10, 3], "x": 190, "y": 32},
+ {"flags": 4, "matrix": [9, 3], "x": 190, "y": 43},
+ {"flags": 4, "matrix": [8, 3], "x": 190, "y": 53},
+ {"flags": 4, "matrix": [12, 3], "x": 190, "y": 11},
+ {"flags": 4, "matrix": [11, 3], "x": 190, "y": 21},
+
+ {"flags": 4, "matrix": [10, 4], "x": 207, "y": 32},
+ {"flags": 4, "matrix": [9, 4], "x": 207, "y": 43},
+ {"flags": 4, "matrix": [8, 4], "x": 207, "y": 53},
+ {"flags": 4, "matrix": [12, 4], "x": 207, "y": 11},
+ {"flags": 4, "matrix": [11, 4], "x": 207, "y": 21},
+
+ {"flags": 4, "matrix": [10, 5], "x": 224, "y": 32},
+ {"flags": 4, "matrix": [9, 5], "x": 224, "y": 43},
+ {"flags": 4, "matrix": [8, 5], "x": 224, "y": 53},
+ {"flags": 4, "matrix": [12, 5], "x": 224, "y": 11},
+ {"flags": 4, "matrix": [11, 5], "x": 224, "y": 21},
+
+ {"flags": 4, "matrix": [7, 3], "x": 138, "y": 53},
+ {"flags": 4, "matrix": [7, 2], "x": 121, "y": 53},
+ {"flags": 4, "matrix": [7, 1], "x": 121, "y": 64},
+ {"flags": 4, "matrix": [7, 7], "x": 138, "y": 64},
+ {"flags": 4, "matrix": [7, 6], "x": 155, "y": 64}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_dual_arcs_num": {
+ "layout": [
+ { "matrix": [5, 5], "x": 0, "y": 0 },
+ { "matrix": [5, 4], "x": 1, "y": 0 },
+ { "matrix": [5, 3], "x": 2, "y": 0 },
+ { "matrix": [5, 2], "x": 3, "y": 0 },
+ { "matrix": [5, 1], "x": 4, "y": 0 },
+ { "matrix": [5, 0], "x": 5, "y": 0 },
+
+ { "matrix": [12, 0], "x": 10.5, "y": 0 },
+ { "matrix": [12, 1], "x": 11.5, "y": 0 },
+ { "matrix": [12, 2], "x": 12.5, "y": 0 },
+ { "matrix": [12, 3], "x": 13.5, "y": 0 },
+ { "matrix": [12, 4], "x": 14.5, "y": 0 },
+ { "matrix": [12, 5], "x": 15.5, "y": 0 },
+
+ { "matrix": [4, 5], "x": 0, "y": 1 },
+ { "matrix": [4, 4], "x": 1, "y": 1 },
+ { "matrix": [4, 3], "x": 2, "y": 1 },
+ { "matrix": [4, 2], "x": 3, "y": 1 },
+ { "matrix": [4, 1], "x": 4, "y": 1 },
+ { "matrix": [4, 0], "x": 5, "y": 1 },
+
+ { "matrix": [11, 0], "x": 10.5, "y": 1 },
+ { "matrix": [11, 1], "x": 11.5, "y": 1 },
+ { "matrix": [11, 2], "x": 12.5, "y": 1 },
+ { "matrix": [11, 3], "x": 13.5, "y": 1 },
+ { "matrix": [11, 4], "x": 14.5, "y": 1 },
+ { "matrix": [11, 5], "x": 15.5, "y": 1 },
+
+ { "matrix": [3, 5], "x": 0, "y": 2 },
+ { "matrix": [3, 4], "x": 1, "y": 2 },
+ { "matrix": [3, 3], "x": 2, "y": 2 },
+ { "matrix": [3, 2], "x": 3, "y": 2 },
+ { "matrix": [3, 1], "x": 4, "y": 2 },
+ { "matrix": [3, 0], "x": 5, "y": 2 },
+
+ { "matrix": [10, 0], "x": 10.5, "y": 2 },
+ { "matrix": [10, 1], "x": 11.5, "y": 2 },
+ { "matrix": [10, 2], "x": 12.5, "y": 2 },
+ { "matrix": [10, 3], "x": 13.5, "y": 2 },
+ { "matrix": [10, 4], "x": 14.5, "y": 2 },
+ { "matrix": [10, 5], "x": 15.5, "y": 2 },
+
+ { "matrix": [2, 5], "x": 0, "y": 3 },
+ { "matrix": [2, 4], "x": 1, "y": 3 },
+ { "matrix": [2, 3], "x": 2, "y": 3 },
+ { "matrix": [2, 2], "x": 3, "y": 3 },
+ { "matrix": [2, 1], "x": 4, "y": 3 },
+ { "matrix": [2, 0], "x": 5, "y": 3 },
+
+ { "matrix": [9, 0], "x": 10.5, "y": 3 },
+ { "matrix": [9, 1], "x": 11.5, "y": 3 },
+ { "matrix": [9, 2], "x": 12.5, "y": 3 },
+ { "matrix": [9, 3], "x": 13.5, "y": 3 },
+ { "matrix": [9, 4], "x": 14.5, "y": 3 },
+ { "matrix": [9, 5], "x": 15.5, "y": 3 },
+
+ { "matrix": [1, 5], "x": 0, "y": 4 },
+ { "matrix": [1, 4], "x": 1, "y": 4 },
+ { "matrix": [1, 3], "x": 2, "y": 4 },
+ { "matrix": [1, 2], "x": 3, "y": 4 },
+
+ { "matrix": [0, 3], "x": 4.5, "y": 4.5 },
+ { "matrix": [0, 2], "x": 5.5, "y": 4.5 },
+ { "matrix": [0, 1], "x": 6.5, "y": 4.5 },
+
+ { "matrix": [7, 1], "x": 9, "y": 4.5 },
+ { "matrix": [7, 2], "x": 10, "y": 4.5 },
+ { "matrix": [7, 3], "x": 11, "y": 4.5 },
+
+ { "matrix": [8, 2], "x": 12.5, "y": 4 },
+ { "matrix": [8, 3], "x": 13.5, "y": 4 },
+ { "matrix": [8, 4], "x": 14.5, "y": 4 },
+ { "matrix": [8, 5], "x": 15.5, "y": 4 },
+
+ { "matrix": [0, 7], "x": 5.5, "y": 5.5 },
+ { "matrix": [0, 6], "x": 6.5, "y": 5.5 },
+
+ { "matrix": [7, 6], "x": 9, "y": 5.5 },
+ { "matrix": [7, 7], "x": 10, "y": 5.5 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/cyboard/dactyl/dual_arcs_number_row/keymaps/vial/keymap.c b/keyboards/cyboard/dactyl/dual_arcs_number_row/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..e9501d61aca
--- /dev/null
+++ b/keyboards/cyboard/dactyl/dual_arcs_number_row/keymaps/vial/keymap.c
@@ -0,0 +1,98 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_dual_arcs_num(
+ KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_UP, KC_DOWN, KC_LGUI, KC_LALT, KC_LGUI, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, MO(1), KC_LBRC, KC_RBRC, KC_LEFT, KC_RIGHT,
+ KC_GRAVE, KC_ESC, KC_CAPS, KC_APP
+ ),
+
+ [1] = LAYOUT_dual_arcs_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_dual_arcs_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_dual_arcs_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_dual_arcs_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_dual_arcs_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_dual_arcs_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_dual_arcs_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_dual_arcs_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_dual_arcs_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/dactyl/dual_arcs_number_row/keymaps/vial/rules.mk b/keyboards/cyboard/dactyl/dual_arcs_number_row/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/dactyl/dual_arcs_number_row/keymaps/vial/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/dactyl/dual_arcs_number_row/keymaps/vial/vial.json b/keyboards/cyboard/dactyl/dual_arcs_number_row/keymaps/vial/vial.json
new file mode 100644
index 00000000000..89317bbc843
--- /dev/null
+++ b/keyboards/cyboard/dactyl/dual_arcs_number_row/keymaps/vial/vial.json
@@ -0,0 +1,123 @@
+{
+ "name": "Dactyl",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 8
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "5,5",
+ "5,4",
+ "5,3",
+ "5,2",
+ "5,1",
+ "5,0",
+ {
+ "x": 3
+ },
+ "12,0",
+ "12,1",
+ "12,2",
+ "12,3",
+ "12,4",
+ "12,5"
+ ],
+ [
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ "4,0",
+ {
+ "x": 3
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5"
+ ],
+ [
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ "3,0",
+ {
+ "x": 3
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5"
+ ],
+ [
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ "2,0",
+ {
+ "x": 3
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5"
+ ],
+ [
+ "1,5",
+ "1,4",
+ "1,3",
+ "1,2",
+ {
+ "x": 7
+ },
+ "8,2",
+ "8,3",
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 4.25
+ },
+ "0,3",
+ "0,2",
+ "0,1",
+ {
+ "x": 0.5
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "x": 5.25
+ },
+ "0,7",
+ "0,6",
+ {
+ "x": 0.5
+ },
+ "7,6",
+ "7,7"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/dactyl/dual_arcs_number_row/rules.mk b/keyboards/cyboard/dactyl/dual_arcs_number_row/rules.mk
new file mode 100644
index 00000000000..e02abfc9b0e
--- /dev/null
+++ b/keyboards/cyboard/dactyl/dual_arcs_number_row/rules.mk
@@ -0,0 +1 @@
+
diff --git a/keyboards/cyboard/dactyl/info.json b/keyboards/cyboard/dactyl/info.json
new file mode 100644
index 00000000000..ef1bc9c5439
--- /dev/null
+++ b/keyboards/cyboard/dactyl/info.json
@@ -0,0 +1,3 @@
+{
+ "keyboard_name": "Dactyl"
+}
diff --git a/keyboards/cyboard/dactyl/keymaps/default/config.h b/keyboards/cyboard/dactyl/keymaps/default/config.h
new file mode 100644
index 00000000000..540d390e0e0
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/default/config.h
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xBF, 0xD5, 0x55, 0xA8, 0x17, 0xBA, 0xA6, 0x13}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 10, 10 }
+#define VIAL_UNLOCK_COMBO_COLS { 5, 6 }
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 10
diff --git a/keyboards/cyboard/dactyl/keymaps/default/keymap.c b/keyboards/cyboard/dactyl/keymaps/default/keymap.c
new file mode 100644
index 00000000000..7199c56a44a
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/default/keymap.c
@@ -0,0 +1,88 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_dualarcs_letters_only(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_UP, KC_DOWN, KC_LGUI, KC_LALT, KC_LGUI, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, MO(2), KC_LBRC, KC_RBRC, KC_LEFT, KC_RIGHT,
+ KC_GRAVE, KC_ESC, KC_CAPS, KC_APP
+ ),
+
+ [1] = LAYOUT_dualarcs_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_dualarcs_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_dualarcs_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_dualarcs_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_dualarcs_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_dualarcs_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_dualarcs_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_dualarcs_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_dualarcs_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/dactyl/keymaps/default/rules.mk b/keyboards/cyboard/dactyl/keymaps/default/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/default/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/dactyl/keymaps/default/vial.json b/keyboards/cyboard/dactyl/keymaps/default/vial.json
new file mode 100644
index 00000000000..89a3294a030
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/default/vial.json
@@ -0,0 +1,106 @@
+{
+ "name": "Dactyl",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 7
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "4,6",
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ {
+ "x": 3
+ },
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5",
+ "11,6"
+ ],
+ [
+ "3,6",
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ {
+ "x": 3
+ },
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ "2,6",
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ {
+ "x": 3
+ },
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ "1,6",
+ "1,5",
+ "1,4",
+ "1,3",
+ {
+ "x": 7
+ },
+ "8,3",
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 4.25
+ },
+ "1,2",
+ "1,1",
+ "1,0",
+ {
+ "x": 0.5
+ },
+ "8,0",
+ "8,1",
+ "8,2"
+ ],
+ [
+ {
+ "x": 5.25
+ },
+ "0,1",
+ "0,0",
+ {
+ "x": 0.5
+ },
+ "7,0",
+ "7,1"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/dactyl/keymaps/dualarcs2x3_functionrow_noextrapinky/config.h b/keyboards/cyboard/dactyl/keymaps/dualarcs2x3_functionrow_noextrapinky/config.h
new file mode 100644
index 00000000000..e97011c105b
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/dualarcs2x3_functionrow_noextrapinky/config.h
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xC5, 0xAA, 0x8A, 0x4E, 0xF5, 0xEB, 0x3B, 0x19}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 10, 10 }
+#define VIAL_UNLOCK_COMBO_COLS { 5, 6 }
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 10
diff --git a/keyboards/cyboard/dactyl/keymaps/dualarcs2x3_functionrow_noextrapinky/keymap.c b/keyboards/cyboard/dactyl/keymaps/dualarcs2x3_functionrow_noextrapinky/keymap.c
new file mode 100644
index 00000000000..4f65fa31a09
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/dualarcs2x3_functionrow_noextrapinky/keymap.c
@@ -0,0 +1,108 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_dualarcs2x3_function_row_noextrapinky(
+ 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_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_LGUI, KC_LALT, KC_LGUI, KC_ENT, MO(1), KC_BSPC, KC_SPC, MO(2), KC_LBRC, KC_RBRC,
+ KC_F12, KC_GRAVE, KC_ESC, KC_CAPS, KC_APP, MO(3)
+ ),
+
+ [1] = LAYOUT_dualarcs2x3_function_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_7, KC_8, KC_9, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_4, KC_5, KC_6, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_1, KC_2, KC_3, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_0, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_dualarcs2x3_function_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_dualarcs2x3_function_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_dualarcs2x3_function_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_dualarcs2x3_function_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_dualarcs2x3_function_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_dualarcs2x3_function_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_dualarcs2x3_function_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_dualarcs2x3_function_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/dactyl/keymaps/dualarcs2x3_functionrow_noextrapinky/rules.mk b/keyboards/cyboard/dactyl/keymaps/dualarcs2x3_functionrow_noextrapinky/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/dualarcs2x3_functionrow_noextrapinky/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/dactyl/keymaps/dualarcs2x3_functionrow_noextrapinky/vial.json b/keyboards/cyboard/dactyl/keymaps/dualarcs2x3_functionrow_noextrapinky/vial.json
new file mode 100644
index 00000000000..5807b9215d8
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/dualarcs2x3_functionrow_noextrapinky/vial.json
@@ -0,0 +1,141 @@
+{
+ "name": "Dactyl",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 7
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "6,6",
+ "6,5",
+ "6,4",
+ "6,3",
+ "6,2",
+ "6,1",
+ {
+ "x": 3
+ },
+ "13,1",
+ "13,2",
+ "13,3",
+ "13,4",
+ "13,5",
+ "13,6"
+ ],
+ [
+ "5,6",
+ "5,5",
+ "5,4",
+ "5,3",
+ "5,2",
+ "5,1",
+ {
+ "x": 3
+ },
+ "12,1",
+ "12,2",
+ "12,3",
+ "12,4",
+ "12,5",
+ "12,6"
+ ],
+ [
+ "4,6",
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ {
+ "x": 3
+ },
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5",
+ "11,6"
+ ],
+ [
+ "3,6",
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ {
+ "x": 3
+ },
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ "2,6",
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ {
+ "x": 3
+ },
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "x": 2
+ },
+ "1,4",
+ "1,3",
+ {
+ "x": 7
+ },
+ "8,3",
+ "8,4"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 4.25
+ },
+ "1,2",
+ "1,1",
+ "1,0",
+ {
+ "x": 0.5
+ },
+ "8,0",
+ "8,1",
+ "8,2"
+ ],
+ [
+ {
+ "x": 4.25
+ },
+ "0,2",
+ "0,1",
+ "0,0",
+ {
+ "x": 0.5
+ },
+ "7,0",
+ "7,1",
+ "7,2"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/dactyl/keymaps/dualarcs_function_row/config.h b/keyboards/cyboard/dactyl/keymaps/dualarcs_function_row/config.h
new file mode 100644
index 00000000000..85193fd60e9
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/dualarcs_function_row/config.h
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xC4, 0xCC, 0xB4, 0x76, 0x30, 0x16, 0xFC, 0x70}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 10, 10 }
+#define VIAL_UNLOCK_COMBO_COLS { 5, 6 }
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 10
diff --git a/keyboards/cyboard/dactyl/keymaps/dualarcs_function_row/keymap.c b/keyboards/cyboard/dactyl/keymaps/dualarcs_function_row/keymap.c
new file mode 100644
index 00000000000..9703c4124f8
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/dualarcs_function_row/keymap.c
@@ -0,0 +1,108 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_dualarcs_function_row(
+ 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_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_UP, KC_DOWN, KC_LGUI, KC_LALT, KC_LGUI, KC_ENT, MO(1), KC_BSPC, KC_SPC, MO(2), KC_LBRC, KC_RBRC, KC_LEFT, KC_RIGHT,
+ KC_GRAVE, KC_ESC, KC_CAPS, KC_APP
+ ),
+
+ [1] = LAYOUT_dualarcs_function_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_7, KC_8, KC_9, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_4, KC_5, KC_6, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_1, KC_2, KC_3, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_0, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_dualarcs_function_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_dualarcs_function_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_dualarcs_function_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_dualarcs_function_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_dualarcs_function_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_dualarcs_function_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_dualarcs_function_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_dualarcs_function_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/dactyl/keymaps/dualarcs_function_row/rules.mk b/keyboards/cyboard/dactyl/keymaps/dualarcs_function_row/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/dualarcs_function_row/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/dactyl/keymaps/dualarcs_function_row/vial.json b/keyboards/cyboard/dactyl/keymaps/dualarcs_function_row/vial.json
new file mode 100644
index 00000000000..696d9e6475f
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/dualarcs_function_row/vial.json
@@ -0,0 +1,140 @@
+{
+ "name": "Dactyl",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 7
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "6,6",
+ "6,5",
+ "6,4",
+ "6,3",
+ "6,2",
+ "6,1",
+ {
+ "x": 3
+ },
+ "13,1",
+ "13,2",
+ "13,3",
+ "13,4",
+ "13,5",
+ "13,6"
+ ],
+ [
+ "5,6",
+ "5,5",
+ "5,4",
+ "5,3",
+ "5,2",
+ "5,1",
+ {
+ "x": 3
+ },
+ "12,1",
+ "12,2",
+ "12,3",
+ "12,4",
+ "12,5",
+ "12,6"
+ ],
+ [
+ "4,6",
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ {
+ "x": 3
+ },
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5",
+ "11,6"
+ ],
+ [
+ "3,6",
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ {
+ "x": 3
+ },
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ "2,6",
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ {
+ "x": 3
+ },
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ "1,6",
+ "1,5",
+ "1,4",
+ "1,3",
+ {
+ "x": 7
+ },
+ "8,3",
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 4.25
+ },
+ "1,2",
+ "1,1",
+ "1,0",
+ {
+ "x": 0.5
+ },
+ "8,0",
+ "8,1",
+ "8,2"
+ ],
+ [
+ {
+ "x": 5.25
+ },
+ "0,1",
+ "0,0",
+ {
+ "x": 0.5
+ },
+ "7,0",
+ "7,1"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/dactyl/keymaps/dualarcs_high_function_row_noextrapinky/config.h b/keyboards/cyboard/dactyl/keymaps/dualarcs_high_function_row_noextrapinky/config.h
new file mode 100644
index 00000000000..c350f1c7556
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/dualarcs_high_function_row_noextrapinky/config.h
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xAB, 0x85, 0x24, 0x3E, 0xAB, 0x9B, 0x86, 0xCB}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 10, 10 }
+#define VIAL_UNLOCK_COMBO_COLS { 5, 6 }
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 10
diff --git a/keyboards/cyboard/dactyl/keymaps/dualarcs_high_function_row_noextrapinky/keymap.c b/keyboards/cyboard/dactyl/keymaps/dualarcs_high_function_row_noextrapinky/keymap.c
new file mode 100644
index 00000000000..5e9bd9c7c6e
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/dualarcs_high_function_row_noextrapinky/keymap.c
@@ -0,0 +1,99 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_dualarcs_high_function_row_noextrapinky(
+ 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_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LGUI, KC_LALT, KC_HOME, KC_END, KC_ESC, KC_APP, KC_CAPS, MO(1), KC_LBRC, KC_RBRC
+
+ ),
+
+ [1] = LAYOUT_dualarcs_high_function_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_dualarcs_high_function_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_dualarcs_high_function_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_dualarcs_high_function_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_dualarcs_high_function_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_dualarcs_high_function_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_dualarcs_high_function_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_dualarcs_high_function_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_dualarcs_high_function_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/dactyl/keymaps/dualarcs_high_function_row_noextrapinky/rules.mk b/keyboards/cyboard/dactyl/keymaps/dualarcs_high_function_row_noextrapinky/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/dualarcs_high_function_row_noextrapinky/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/dactyl/keymaps/dualarcs_high_function_row_noextrapinky/vial.json b/keyboards/cyboard/dactyl/keymaps/dualarcs_high_function_row_noextrapinky/vial.json
new file mode 100644
index 00000000000..7d0b5b48939
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/dualarcs_high_function_row_noextrapinky/vial.json
@@ -0,0 +1,141 @@
+{
+ "name": "Dactyl",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 7
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "6,6",
+ "6,5",
+ "6,4",
+ "6,3",
+ "6,2",
+ "6,1",
+ {
+ "x": 5.5
+ },
+ "13,1",
+ "13,2",
+ "13,3",
+ "13,4",
+ "13,5",
+ "13,6"
+ ],
+ [
+ "5,6",
+ "5,5",
+ "5,4",
+ "5,3",
+ "5,2",
+ "5,1",
+ {
+ "x": 5.5
+ },
+ "12,1",
+ "12,2",
+ "12,3",
+ "12,4",
+ "12,5",
+ "12,6"
+ ],
+ [
+ "4,6",
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ {
+ "x": 5.5
+ },
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5",
+ "11,6"
+ ],
+ [
+ "3,6",
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ {
+ "x": 5.5
+ },
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ "2,6",
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ {
+ "x": 5.5
+ },
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 6.25
+ },
+ "1,1",
+ "1,0",
+ {
+ "x": 1
+ },
+ "8,0",
+ "8,1"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 2
+ },
+ "1,4",
+ "1,3",
+ {
+ "x": 9.5
+ },
+ "8,3",
+ "8,4"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 5.25
+ },
+ "0,2",
+ "0,1",
+ "0,0",
+ {
+ "x": 1
+ },
+ "7,0",
+ "7,1",
+ "7,2"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/dactyl/keymaps/dualarcs_high_number_row_noextrapinky/config.h b/keyboards/cyboard/dactyl/keymaps/dualarcs_high_number_row_noextrapinky/config.h
new file mode 100644
index 00000000000..c350f1c7556
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/dualarcs_high_number_row_noextrapinky/config.h
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xAB, 0x85, 0x24, 0x3E, 0xAB, 0x9B, 0x86, 0xCB}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 10, 10 }
+#define VIAL_UNLOCK_COMBO_COLS { 5, 6 }
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 10
diff --git a/keyboards/cyboard/dactyl/keymaps/dualarcs_high_number_row_noextrapinky/keymap.c b/keyboards/cyboard/dactyl/keymaps/dualarcs_high_number_row_noextrapinky/keymap.c
new file mode 100644
index 00000000000..daa723d006d
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/dualarcs_high_number_row_noextrapinky/keymap.c
@@ -0,0 +1,89 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_dualarcs_high_number_row_noextrapinky(
+ KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LGUI, KC_LALT, KC_HOME, KC_END, KC_ESC, KC_APP, KC_CAPS, MO(1), KC_LBRC, KC_RBRC
+
+ ),
+
+ [1] = LAYOUT_dualarcs_high_number_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_dualarcs_high_number_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_dualarcs_high_number_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_dualarcs_high_number_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_dualarcs_high_number_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_dualarcs_high_number_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_dualarcs_high_number_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_dualarcs_high_number_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_dualarcs_high_number_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/dactyl/keymaps/dualarcs_high_number_row_noextrapinky/rules.mk b/keyboards/cyboard/dactyl/keymaps/dualarcs_high_number_row_noextrapinky/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/dualarcs_high_number_row_noextrapinky/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/dactyl/keymaps/dualarcs_high_number_row_noextrapinky/vial.json b/keyboards/cyboard/dactyl/keymaps/dualarcs_high_number_row_noextrapinky/vial.json
new file mode 100644
index 00000000000..00963c24326
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/dualarcs_high_number_row_noextrapinky/vial.json
@@ -0,0 +1,124 @@
+{
+ "name": "Dactyl",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 7
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "5,6",
+ "5,5",
+ "5,4",
+ "5,3",
+ "5,2",
+ "5,1",
+ {
+ "x": 5.5
+ },
+ "12,1",
+ "12,2",
+ "12,3",
+ "12,4",
+ "12,5",
+ "12,6"
+ ],
+ [
+ "4,6",
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ {
+ "x": 5.5
+ },
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5",
+ "11,6"
+ ],
+ [
+ "3,6",
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ {
+ "x": 5.5
+ },
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ "2,6",
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ {
+ "x": 5.5
+ },
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 6.25
+ },
+ "1,1",
+ "1,0",
+ {
+ "x": 1
+ },
+ "8,0",
+ "8,1"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 2
+ },
+ "1,4",
+ "1,3",
+ {
+ "x": 9.5
+ },
+ "8,3",
+ "8,4"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 5.25
+ },
+ "0,2",
+ "0,1",
+ "0,0",
+ {
+ "x": 1
+ },
+ "7,0",
+ "7,1",
+ "7,2"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/dactyl/keymaps/dualarcs_letters_only/config.h b/keyboards/cyboard/dactyl/keymaps/dualarcs_letters_only/config.h
new file mode 100644
index 00000000000..85193fd60e9
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/dualarcs_letters_only/config.h
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xC4, 0xCC, 0xB4, 0x76, 0x30, 0x16, 0xFC, 0x70}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 10, 10 }
+#define VIAL_UNLOCK_COMBO_COLS { 5, 6 }
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 10
diff --git a/keyboards/cyboard/dactyl/keymaps/dualarcs_letters_only/keymap.c b/keyboards/cyboard/dactyl/keymaps/dualarcs_letters_only/keymap.c
new file mode 100644
index 00000000000..7199c56a44a
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/dualarcs_letters_only/keymap.c
@@ -0,0 +1,88 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_dualarcs_letters_only(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_UP, KC_DOWN, KC_LGUI, KC_LALT, KC_LGUI, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, MO(2), KC_LBRC, KC_RBRC, KC_LEFT, KC_RIGHT,
+ KC_GRAVE, KC_ESC, KC_CAPS, KC_APP
+ ),
+
+ [1] = LAYOUT_dualarcs_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_dualarcs_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_dualarcs_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_dualarcs_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_dualarcs_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_dualarcs_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_dualarcs_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_dualarcs_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_dualarcs_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/dactyl/keymaps/dualarcs_letters_only/rules.mk b/keyboards/cyboard/dactyl/keymaps/dualarcs_letters_only/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/dualarcs_letters_only/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/dactyl/keymaps/dualarcs_letters_only/vial.json b/keyboards/cyboard/dactyl/keymaps/dualarcs_letters_only/vial.json
new file mode 100644
index 00000000000..89a3294a030
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/dualarcs_letters_only/vial.json
@@ -0,0 +1,106 @@
+{
+ "name": "Dactyl",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 7
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "4,6",
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ {
+ "x": 3
+ },
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5",
+ "11,6"
+ ],
+ [
+ "3,6",
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ {
+ "x": 3
+ },
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ "2,6",
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ {
+ "x": 3
+ },
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ "1,6",
+ "1,5",
+ "1,4",
+ "1,3",
+ {
+ "x": 7
+ },
+ "8,3",
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 4.25
+ },
+ "1,2",
+ "1,1",
+ "1,0",
+ {
+ "x": 0.5
+ },
+ "8,0",
+ "8,1",
+ "8,2"
+ ],
+ [
+ {
+ "x": 5.25
+ },
+ "0,1",
+ "0,0",
+ {
+ "x": 0.5
+ },
+ "7,0",
+ "7,1"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/dactyl/keymaps/dualarcs_number_row/config.h b/keyboards/cyboard/dactyl/keymaps/dualarcs_number_row/config.h
new file mode 100644
index 00000000000..85193fd60e9
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/dualarcs_number_row/config.h
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xC4, 0xCC, 0xB4, 0x76, 0x30, 0x16, 0xFC, 0x70}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 10, 10 }
+#define VIAL_UNLOCK_COMBO_COLS { 5, 6 }
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 10
diff --git a/keyboards/cyboard/dactyl/keymaps/dualarcs_number_row/keymap.c b/keyboards/cyboard/dactyl/keymaps/dualarcs_number_row/keymap.c
new file mode 100644
index 00000000000..239c413ff7d
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/dualarcs_number_row/keymap.c
@@ -0,0 +1,98 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_dualarcs_number_row(
+ KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_UP, KC_DOWN, KC_LGUI, KC_LALT, KC_LGUI, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, MO(2), KC_LBRC, KC_RBRC, KC_LEFT, KC_RIGHT,
+ KC_GRAVE, KC_ESC, KC_CAPS, KC_APP
+ ),
+
+ [1] = LAYOUT_dualarcs_number_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_dualarcs_number_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_dualarcs_number_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_dualarcs_number_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_dualarcs_number_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_dualarcs_number_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_dualarcs_number_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_dualarcs_number_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_dualarcs_number_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/dactyl/keymaps/dualarcs_number_row/rules.mk b/keyboards/cyboard/dactyl/keymaps/dualarcs_number_row/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/dualarcs_number_row/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/dactyl/keymaps/dualarcs_number_row/vial.json b/keyboards/cyboard/dactyl/keymaps/dualarcs_number_row/vial.json
new file mode 100644
index 00000000000..69e8a8f8785
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/dualarcs_number_row/vial.json
@@ -0,0 +1,123 @@
+{
+ "name": "Dactyl",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 7
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "5,6",
+ "5,5",
+ "5,4",
+ "5,3",
+ "5,2",
+ "5,1",
+ {
+ "x": 3
+ },
+ "12,1",
+ "12,2",
+ "12,3",
+ "12,4",
+ "12,5",
+ "12,6"
+ ],
+ [
+ "4,6",
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ {
+ "x": 3
+ },
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5",
+ "11,6"
+ ],
+ [
+ "3,6",
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ {
+ "x": 3
+ },
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ "2,6",
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ {
+ "x": 3
+ },
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ "1,6",
+ "1,5",
+ "1,4",
+ "1,3",
+ {
+ "x": 7
+ },
+ "8,3",
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 4.25
+ },
+ "1,2",
+ "1,1",
+ "1,0",
+ {
+ "x": 0.5
+ },
+ "8,0",
+ "8,1",
+ "8,2"
+ ],
+ [
+ {
+ "x": 5.25
+ },
+ "0,1",
+ "0,0",
+ {
+ "x": 0.5
+ },
+ "7,0",
+ "7,1"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/dactyl/keymaps/manuform_function_row/config.h b/keyboards/cyboard/dactyl/keymaps/manuform_function_row/config.h
new file mode 100644
index 00000000000..85193fd60e9
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/manuform_function_row/config.h
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xC4, 0xCC, 0xB4, 0x76, 0x30, 0x16, 0xFC, 0x70}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 10, 10 }
+#define VIAL_UNLOCK_COMBO_COLS { 5, 6 }
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 10
diff --git a/keyboards/cyboard/dactyl/keymaps/manuform_function_row/keymap.c b/keyboards/cyboard/dactyl/keymaps/manuform_function_row/keymap.c
new file mode 100644
index 00000000000..aedbb7e5fb7
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/manuform_function_row/keymap.c
@@ -0,0 +1,108 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_manuform_function_row(
+ 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_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_UP, KC_DOWN, KC_LGUI, KC_LALT, KC_LGUI, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, MO(2), KC_LBRC, KC_RBRC, KC_LEFT, KC_RIGHT,
+ KC_HOME, KC_END, KC_ESC, MO(3), KC_CAPS, KC_APP
+ ),
+
+ [1] = LAYOUT_manuform_function_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_manuform_function_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_manuform_function_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_manuform_function_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_manuform_function_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_manuform_function_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_manuform_function_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_manuform_function_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_manuform_function_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/dactyl/keymaps/manuform_function_row/rules.mk b/keyboards/cyboard/dactyl/keymaps/manuform_function_row/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/manuform_function_row/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/dactyl/keymaps/manuform_function_row/vial.json b/keyboards/cyboard/dactyl/keymaps/manuform_function_row/vial.json
new file mode 100644
index 00000000000..49745f24010
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/manuform_function_row/vial.json
@@ -0,0 +1,151 @@
+{
+ "name": "Dactyl",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 7
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "6,6",
+ "6,5",
+ "6,4",
+ "6,3",
+ "6,2",
+ "6,1",
+ {
+ "x": 5.5
+ },
+ "13,1",
+ "13,2",
+ "13,3",
+ "13,4",
+ "13,5",
+ "13,6"
+ ],
+ [
+ "5,6",
+ "5,5",
+ "5,4",
+ "5,3",
+ "5,2",
+ "5,1",
+ {
+ "x": 5.5
+ },
+ "12,1",
+ "12,2",
+ "12,3",
+ "12,4",
+ "12,5",
+ "12,6"
+ ],
+ [
+ "4,6",
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ {
+ "x": 5.5
+ },
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5",
+ "11,6"
+ ],
+ [
+ "3,6",
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ {
+ "x": 5.5
+ },
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ "2,6",
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ {
+ "x": 5.5
+ },
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ "1,6",
+ "1,5",
+ "1,4",
+ "1,3",
+ {
+ "x": 9.5
+ },
+ "8,3",
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4.5
+ },
+ "1,2",
+ "1,1",
+ {
+ "x": 4.5
+ },
+ "8,1",
+ "8,2"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 6.5
+ },
+ "1,0",
+ "0,0",
+ {
+ "x": 0.5
+ },
+ "7,0",
+ "8,0"
+ ],
+ [
+ {
+ "x": 6.5
+ },
+ "0,2",
+ "0,1",
+ {
+ "x": 0.5
+ },
+ "7,1",
+ "7,2"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/dactyl/keymaps/manuform_letters_only/config.h b/keyboards/cyboard/dactyl/keymaps/manuform_letters_only/config.h
new file mode 100644
index 00000000000..85193fd60e9
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/manuform_letters_only/config.h
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xC4, 0xCC, 0xB4, 0x76, 0x30, 0x16, 0xFC, 0x70}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 10, 10 }
+#define VIAL_UNLOCK_COMBO_COLS { 5, 6 }
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 10
diff --git a/keyboards/cyboard/dactyl/keymaps/manuform_letters_only/keymap.c b/keyboards/cyboard/dactyl/keymaps/manuform_letters_only/keymap.c
new file mode 100644
index 00000000000..0f864e765be
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/manuform_letters_only/keymap.c
@@ -0,0 +1,88 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_manuform_letters_only(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_UP, KC_DOWN, KC_LGUI, KC_LALT, KC_LGUI, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, MO(2), KC_LBRC, KC_RBRC, KC_LEFT, KC_RIGHT,
+ KC_HOME, KC_END, KC_ESC, MO(3), KC_CAPS, KC_APP
+ ),
+
+ [1] = LAYOUT_manuform_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_manuform_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_manuform_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_manuform_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_manuform_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_manuform_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_manuform_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_manuform_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_manuform_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/dactyl/keymaps/manuform_letters_only/rules.mk b/keyboards/cyboard/dactyl/keymaps/manuform_letters_only/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/manuform_letters_only/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/dactyl/keymaps/manuform_letters_only/vial.json b/keyboards/cyboard/dactyl/keymaps/manuform_letters_only/vial.json
new file mode 100644
index 00000000000..c59e6665ec4
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/manuform_letters_only/vial.json
@@ -0,0 +1,117 @@
+{
+ "name": "Dactyl",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 7
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "4,6",
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ {
+ "x": 5.5
+ },
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5",
+ "11,6"
+ ],
+ [
+ "3,6",
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ {
+ "x": 5.5
+ },
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ "2,6",
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ {
+ "x": 5.5
+ },
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ "1,6",
+ "1,5",
+ "1,4",
+ "1,3",
+ {
+ "x": 9.5
+ },
+ "8,3",
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4.5
+ },
+ "1,2",
+ "1,1",
+ {
+ "x": 4.5
+ },
+ "8,1",
+ "8,2"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 6.5
+ },
+ "1,0",
+ "0,0",
+ {
+ "x": 0.5
+ },
+ "7,0",
+ "8,0"
+ ],
+ [
+ {
+ "x": 6.5
+ },
+ "0,2",
+ "0,1",
+ {
+ "x": 0.5
+ },
+ "7,1",
+ "7,2"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/dactyl/keymaps/manuform_number_row/config.h b/keyboards/cyboard/dactyl/keymaps/manuform_number_row/config.h
new file mode 100644
index 00000000000..85193fd60e9
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/manuform_number_row/config.h
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xC4, 0xCC, 0xB4, 0x76, 0x30, 0x16, 0xFC, 0x70}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 10, 10 }
+#define VIAL_UNLOCK_COMBO_COLS { 5, 6 }
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 10
diff --git a/keyboards/cyboard/dactyl/keymaps/manuform_number_row/keymap.c b/keyboards/cyboard/dactyl/keymaps/manuform_number_row/keymap.c
new file mode 100644
index 00000000000..f6708779db9
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/manuform_number_row/keymap.c
@@ -0,0 +1,98 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_manuform_number_row(
+ KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_UP, KC_DOWN, KC_LGUI, KC_LALT, KC_LGUI, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, MO(2), KC_LBRC, KC_RBRC, KC_LEFT, KC_RIGHT,
+ KC_HOME, KC_END, KC_ESC, MO(3), KC_CAPS, KC_APP
+ ),
+
+ [1] = LAYOUT_manuform_number_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_manuform_number_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_manuform_number_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_manuform_number_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_manuform_number_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_manuform_number_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_manuform_number_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_manuform_number_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_manuform_number_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/dactyl/keymaps/manuform_number_row/rules.mk b/keyboards/cyboard/dactyl/keymaps/manuform_number_row/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/manuform_number_row/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/dactyl/keymaps/manuform_number_row/vial.json b/keyboards/cyboard/dactyl/keymaps/manuform_number_row/vial.json
new file mode 100644
index 00000000000..7f7e6faf7e4
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/manuform_number_row/vial.json
@@ -0,0 +1,134 @@
+{
+ "name": "Dactyl",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 7
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "5,6",
+ "5,5",
+ "5,4",
+ "5,3",
+ "5,2",
+ "5,1",
+ {
+ "x": 5.5
+ },
+ "12,1",
+ "12,2",
+ "12,3",
+ "12,4",
+ "12,5",
+ "12,6"
+ ],
+ [
+ "4,6",
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ {
+ "x": 5.5
+ },
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5",
+ "11,6"
+ ],
+ [
+ "3,6",
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ {
+ "x": 5.5
+ },
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ "2,6",
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ {
+ "x": 5.5
+ },
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ "1,6",
+ "1,5",
+ "1,4",
+ "1,3",
+ {
+ "x": 9.5
+ },
+ "8,3",
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4.5
+ },
+ "1,2",
+ "1,1",
+ {
+ "x": 4.5
+ },
+ "8,1",
+ "8,2"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 6.5
+ },
+ "1,0",
+ "0,0",
+ {
+ "x": 0.5
+ },
+ "7,0",
+ "8,0"
+ ],
+ [
+ {
+ "x": 6.5
+ },
+ "0,2",
+ "0,1",
+ {
+ "x": 0.5
+ },
+ "7,1",
+ "7,2"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/dactyl/keymaps/manuform_number_row_noextrapinky/config.h b/keyboards/cyboard/dactyl/keymaps/manuform_number_row_noextrapinky/config.h
new file mode 100644
index 00000000000..c350f1c7556
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/manuform_number_row_noextrapinky/config.h
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xAB, 0x85, 0x24, 0x3E, 0xAB, 0x9B, 0x86, 0xCB}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 10, 10 }
+#define VIAL_UNLOCK_COMBO_COLS { 5, 6 }
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 10
diff --git a/keyboards/cyboard/dactyl/keymaps/manuform_number_row_noextrapinky/keymap.c b/keyboards/cyboard/dactyl/keymaps/manuform_number_row_noextrapinky/keymap.c
new file mode 100644
index 00000000000..52f969a60f0
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/manuform_number_row_noextrapinky/keymap.c
@@ -0,0 +1,98 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_manuform_number_row_noextrapinky(
+ KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_LGUI, KC_LALT, KC_LGUI, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, MO(2), KC_LBRC, KC_RBRC,
+ KC_HOME, KC_END, KC_ESC, MO(3), KC_CAPS, KC_APP
+ ),
+
+ [1] = LAYOUT_manuform_number_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_manuform_number_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_manuform_number_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_manuform_number_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_manuform_number_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_manuform_number_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_manuform_number_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_manuform_number_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_manuform_number_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/dactyl/keymaps/manuform_number_row_noextrapinky/rules.mk b/keyboards/cyboard/dactyl/keymaps/manuform_number_row_noextrapinky/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/manuform_number_row_noextrapinky/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/dactyl/keymaps/manuform_number_row_noextrapinky/vial.json b/keyboards/cyboard/dactyl/keymaps/manuform_number_row_noextrapinky/vial.json
new file mode 100644
index 00000000000..be8c93e1338
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/manuform_number_row_noextrapinky/vial.json
@@ -0,0 +1,133 @@
+{
+ "name": "Dactyl",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 7
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "5,6",
+ "5,5",
+ "5,4",
+ "5,3",
+ "5,2",
+ "5,1",
+ {
+ "x": 5.5
+ },
+ "12,1",
+ "12,2",
+ "12,3",
+ "12,4",
+ "12,5",
+ "12,6"
+ ],
+ [
+ "4,6",
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ {
+ "x": 5.5
+ },
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5",
+ "11,6"
+ ],
+ [
+ "3,6",
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ {
+ "x": 5.5
+ },
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ "2,6",
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ {
+ "x": 5.5
+ },
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "x": 2
+ },
+ "1,4",
+ "1,3",
+ {
+ "x": 9.5
+ },
+ "8,3",
+ "8,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4.5
+ },
+ "1,2",
+ "1,1",
+ {
+ "x": 4.5
+ },
+ "8,1",
+ "8,2"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 6.5
+ },
+ "1,0",
+ "0,0",
+ {
+ "x": 0.5
+ },
+ "7,0",
+ "8,0"
+ ],
+ [
+ {
+ "x": 6.5
+ },
+ "0,2",
+ "0,1",
+ {
+ "x": 0.5
+ },
+ "7,1",
+ "7,2"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/dactyl/keymaps/singlearc_function_row/config.h b/keyboards/cyboard/dactyl/keymaps/singlearc_function_row/config.h
new file mode 100644
index 00000000000..85193fd60e9
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/singlearc_function_row/config.h
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xC4, 0xCC, 0xB4, 0x76, 0x30, 0x16, 0xFC, 0x70}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 10, 10 }
+#define VIAL_UNLOCK_COMBO_COLS { 5, 6 }
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 10
diff --git a/keyboards/cyboard/dactyl/keymaps/singlearc_function_row/keymap.c b/keyboards/cyboard/dactyl/keymaps/singlearc_function_row/keymap.c
new file mode 100644
index 00000000000..840ed16cf84
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/singlearc_function_row/keymap.c
@@ -0,0 +1,98 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_singlearc_function_row(
+ 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_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_UP, KC_DOWN, KC_LGUI, KC_LALT, KC_LGUI, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, MO(2), KC_LBRC, KC_RBRC, KC_LEFT, KC_RIGHT
+ ),
+
+ [1] = LAYOUT_singlearc_function_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_singlearc_function_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_singlearc_function_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_singlearc_function_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_singlearc_function_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_singlearc_function_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_singlearc_function_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_singlearc_function_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_singlearc_function_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/dactyl/keymaps/singlearc_function_row/rules.mk b/keyboards/cyboard/dactyl/keymaps/singlearc_function_row/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/singlearc_function_row/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/dactyl/keymaps/singlearc_function_row/vial.json b/keyboards/cyboard/dactyl/keymaps/singlearc_function_row/vial.json
new file mode 100644
index 00000000000..37cc139c103
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/singlearc_function_row/vial.json
@@ -0,0 +1,128 @@
+{
+ "name": "Dactyl",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 7
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "6,6",
+ "6,5",
+ "6,4",
+ "6,3",
+ "6,2",
+ "6,1",
+ {
+ "x": 3
+ },
+ "13,1",
+ "13,2",
+ "13,3",
+ "13,4",
+ "13,5",
+ "13,6"
+ ],
+ [
+ "5,6",
+ "5,5",
+ "5,4",
+ "5,3",
+ "5,2",
+ "5,1",
+ {
+ "x": 3
+ },
+ "12,1",
+ "12,2",
+ "12,3",
+ "12,4",
+ "12,5",
+ "12,6"
+ ],
+ [
+ "4,6",
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ {
+ "x": 3
+ },
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5",
+ "11,6"
+ ],
+ [
+ "3,6",
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ {
+ "x": 3
+ },
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ "2,6",
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ {
+ "x": 3
+ },
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ "1,6",
+ "1,5",
+ "1,4",
+ "1,3",
+ {
+ "x": 7
+ },
+ "8,3",
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 4.25
+ },
+ "1,2",
+ "1,1",
+ "1,0",
+ {
+ "x": 0.5
+ },
+ "8,0",
+ "8,1",
+ "8,2"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/dactyl/keymaps/singlearc_letters_only/config.h b/keyboards/cyboard/dactyl/keymaps/singlearc_letters_only/config.h
new file mode 100644
index 00000000000..85193fd60e9
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/singlearc_letters_only/config.h
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xC4, 0xCC, 0xB4, 0x76, 0x30, 0x16, 0xFC, 0x70}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 10, 10 }
+#define VIAL_UNLOCK_COMBO_COLS { 5, 6 }
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 10
diff --git a/keyboards/cyboard/dactyl/keymaps/singlearc_letters_only/keymap.c b/keyboards/cyboard/dactyl/keymaps/singlearc_letters_only/keymap.c
new file mode 100644
index 00000000000..373b382e83d
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/singlearc_letters_only/keymap.c
@@ -0,0 +1,91 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_singlearc_letters_only(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_UP, KC_DOWN, KC_LGUI, KC_LALT, KC_LGUI, KC_ENT, KC_MUTE, KC_BSPC, KC_SPC, MO(2), KC_LBRC, KC_RBRC, KC_LEFT, KC_RIGHT
+ ),
+
+ [1] = LAYOUT_singlearc_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, KC_7, KC_8, KC_9, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_4, KC_5, KC_6, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_1, KC_2, KC_3, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_0, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_singlearc_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_singlearc_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_singlearc_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_singlearc_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_singlearc_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_singlearc_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_singlearc_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_singlearc_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
+
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_LEFT, KC_RIGHT) },
+ [1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [4] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [5] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [6] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [7] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [8] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [9] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+};
diff --git a/keyboards/cyboard/dactyl/keymaps/singlearc_letters_only/rules.mk b/keyboards/cyboard/dactyl/keymaps/singlearc_letters_only/rules.mk
new file mode 100644
index 00000000000..6ce084d18d0
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/singlearc_letters_only/rules.mk
@@ -0,0 +1,11 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
+
+ENCODER_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/cyboard/dactyl/keymaps/singlearc_letters_only/vial.json b/keyboards/cyboard/dactyl/keymaps/singlearc_letters_only/vial.json
new file mode 100644
index 00000000000..438db1f336a
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/singlearc_letters_only/vial.json
@@ -0,0 +1,116 @@
+{
+ "name": "Dactyl",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 7
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "4,6",
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ {
+ "x": 4.75
+ },
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5",
+ "11,6"
+ ],
+ [
+ "3,6",
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ {
+ "x": 4.75
+ },
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ "2,6",
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ {
+ "x": 4.75
+ },
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 6.25
+ },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 0.25
+ },
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne"
+ ],
+ [
+ {
+ "y": -0.25
+ },
+ "1,6",
+ "1,5",
+ "1,4",
+ "1,3",
+ {
+ "x": 8.75
+ },
+ "8,3",
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 4.25
+ },
+ "1,2",
+ "1,1",
+ {
+ "x": 0.5
+ },
+ "1,0",
+ {
+ "x": 1.25
+ },
+ "8,0",
+ {
+ "x": 0.5
+ },
+ "8,1",
+ "8,2"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/dactyl/keymaps/singlearc_number_row/config.h b/keyboards/cyboard/dactyl/keymaps/singlearc_number_row/config.h
new file mode 100644
index 00000000000..cdbdc3fc576
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/singlearc_number_row/config.h
@@ -0,0 +1,19 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xC4, 0xCC, 0xB4, 0x76, 0x30, 0x16, 0xFC, 0x70}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 10, 10 }
+#define VIAL_UNLOCK_COMBO_COLS { 5, 6 }
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 10
+
+// -----------------------------------------------------------------------------
+// sunaku
+// -----------------------------------------------------------------------------
+
+// https://github.com/qmk/qmk_firmware/issues/18511#issuecomment-1264604610
+// https://github.com/qmk/qmk_firmware/issues/8990#issuecomment-851055637
+#undef SPLIT_USB_DETECT
+
diff --git a/keyboards/cyboard/dactyl/keymaps/singlearc_number_row/keymap.c b/keyboards/cyboard/dactyl/keymaps/singlearc_number_row/keymap.c
new file mode 100644
index 00000000000..a2f85b30ff8
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/singlearc_number_row/keymap.c
@@ -0,0 +1,88 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_singlearc_number_row(
+ KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_UP, KC_DOWN, KC_LGUI, KC_LALT, KC_LGUI, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, MO(2), KC_LBRC, KC_RBRC, KC_LEFT, KC_RIGHT
+ ),
+
+ [1] = LAYOUT_singlearc_number_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_singlearc_number_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_singlearc_number_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_singlearc_number_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_singlearc_number_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_singlearc_number_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_singlearc_number_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_singlearc_number_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_singlearc_number_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/dactyl/keymaps/singlearc_number_row/rules.mk b/keyboards/cyboard/dactyl/keymaps/singlearc_number_row/rules.mk
new file mode 100644
index 00000000000..36344e24314
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/singlearc_number_row/rules.mk
@@ -0,0 +1,9 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
+
diff --git a/keyboards/cyboard/dactyl/keymaps/singlearc_number_row/vial.json b/keyboards/cyboard/dactyl/keymaps/singlearc_number_row/vial.json
new file mode 100644
index 00000000000..62612445d9d
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/singlearc_number_row/vial.json
@@ -0,0 +1,110 @@
+{
+ "name": "Dactyl",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 7
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "5,6",
+ "5,5",
+ "5,4",
+ "5,3",
+ "5,2",
+ "5,1",
+ {
+ "x": 3
+ },
+ "12,1",
+ "12,2",
+ "12,3",
+ "12,4",
+ "12,5",
+ "12,6"
+ ],
+ [
+ "4,6",
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ {
+ "x": 3
+ },
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5",
+ "11,6"
+ ],
+ [
+ "3,6",
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ {
+ "x": 3
+ },
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ "2,6",
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ {
+ "x": 3
+ },
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "x": 2
+ },
+ "1,4",
+ "1,3",
+ {
+ "x": 7
+ },
+ "8,3",
+ "8,4"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 4.25
+ },
+ "1,2",
+ "1,1",
+ "1,0",
+ {
+ "x": 0.5
+ },
+ "8,0",
+ "8,1",
+ "8,2"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/dactyl/keymaps/singlearc_number_row_noextrapinky/config.h b/keyboards/cyboard/dactyl/keymaps/singlearc_number_row_noextrapinky/config.h
new file mode 100644
index 00000000000..cdbdc3fc576
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/singlearc_number_row_noextrapinky/config.h
@@ -0,0 +1,19 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xC4, 0xCC, 0xB4, 0x76, 0x30, 0x16, 0xFC, 0x70}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 10, 10 }
+#define VIAL_UNLOCK_COMBO_COLS { 5, 6 }
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 10
+
+// -----------------------------------------------------------------------------
+// sunaku
+// -----------------------------------------------------------------------------
+
+// https://github.com/qmk/qmk_firmware/issues/18511#issuecomment-1264604610
+// https://github.com/qmk/qmk_firmware/issues/8990#issuecomment-851055637
+#undef SPLIT_USB_DETECT
+
diff --git a/keyboards/cyboard/dactyl/keymaps/singlearc_number_row_noextrapinky/keymap.c b/keyboards/cyboard/dactyl/keymaps/singlearc_number_row_noextrapinky/keymap.c
new file mode 100644
index 00000000000..284ff0fb2c6
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/singlearc_number_row_noextrapinky/keymap.c
@@ -0,0 +1,88 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_singlearc_number_row_noextrapinky(
+ KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_LGUI, KC_LALT, KC_LGUI, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, MO(2), KC_LBRC, KC_RBRC
+ ),
+
+ [1] = LAYOUT_singlearc_number_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_singlearc_number_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_singlearc_number_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_singlearc_number_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_singlearc_number_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_singlearc_number_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_singlearc_number_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_singlearc_number_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_singlearc_number_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/dactyl/keymaps/singlearc_number_row_noextrapinky/rules.mk b/keyboards/cyboard/dactyl/keymaps/singlearc_number_row_noextrapinky/rules.mk
new file mode 100644
index 00000000000..36344e24314
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/singlearc_number_row_noextrapinky/rules.mk
@@ -0,0 +1,9 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
+
diff --git a/keyboards/cyboard/dactyl/keymaps/singlearc_number_row_noextrapinky/vial.json b/keyboards/cyboard/dactyl/keymaps/singlearc_number_row_noextrapinky/vial.json
new file mode 100644
index 00000000000..62612445d9d
--- /dev/null
+++ b/keyboards/cyboard/dactyl/keymaps/singlearc_number_row_noextrapinky/vial.json
@@ -0,0 +1,110 @@
+{
+ "name": "Dactyl",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 7
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "5,6",
+ "5,5",
+ "5,4",
+ "5,3",
+ "5,2",
+ "5,1",
+ {
+ "x": 3
+ },
+ "12,1",
+ "12,2",
+ "12,3",
+ "12,4",
+ "12,5",
+ "12,6"
+ ],
+ [
+ "4,6",
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ {
+ "x": 3
+ },
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5",
+ "11,6"
+ ],
+ [
+ "3,6",
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ {
+ "x": 3
+ },
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ "2,6",
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ {
+ "x": 3
+ },
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "x": 2
+ },
+ "1,4",
+ "1,3",
+ {
+ "x": 7
+ },
+ "8,3",
+ "8,4"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 4.25
+ },
+ "1,2",
+ "1,1",
+ "1,0",
+ {
+ "x": 0.5
+ },
+ "8,0",
+ "8,1",
+ "8,2"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/dactyl/manuform_6x7/config.h b/keyboards/cyboard/dactyl/manuform_6x7/config.h
new file mode 100644
index 00000000000..4f6eef8a7bd
--- /dev/null
+++ b/keyboards/cyboard/dactyl/manuform_6x7/config.h
@@ -0,0 +1,147 @@
+//
+// Created by nethe on 11/9/2022.
+//
+//#define PRODUCT_ID 0x0001
+
+
+// Dactyl Manuform Hotswap
+#pragma once
+
+//#include "config_common.h"
+// Basic Config
+#define SPLIT_POINTING_ENABLE
+//#define ROTATIONAL_TRANSFORM_ANGLE -25
+//#define PMW33XX_CS_PIN GP21
+//#define POINTING_DEVICE_CS_PIN GP21
+
+//#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+#define CHARYBDIS_MINIMUM_DEFAULT_DPI 600
+//#define CHARYBDIS_MAX_DEFAULT_DPI_MULTIPLIER 0x08
+//#define CHARYBDIS_BASE_DEFAULT_DPI_MULTIPLIER 0x02
+#define CHARYBDIS_DEFAULT_DPI_CONFIG_STEP 400
+#define CHARYBDIS_MINIMUM_SNIPING_DPI 400
+#define CHARYBDIS_SNIPING_DPI_CONFIG_STEP 100
+#define CHARYBDIS_DRAGSCROLL_DPI 100
+
+//#define SPLIT_POINTING_ENABLE
+//#define POINTING_DEVICE_INVERT_Y
+//#define ROTATIONAL_TRANSFORM_ANGLE -25
+//#define POINTING_DEVICE_RIGHT
+//#define PMW33XX_CS_PIN GP21
+//#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+//#define PMW33XX_LIFTOFF_DISTANCE 0x02
+
+//#define POINTING_DEVICE_AUTO_MOUSE_ENABLE
+//// only required if not setting mouse layer elsewhere
+//#define AUTO_MOUSE_DEFAULT_LAYER 3
+//
+//#define DYNAMIC_KEYMAP_LAYER_COUNT 4
+
+// Using Serial instead of I2C
+//#define SERIAL_USART_FULL_DUPLEX
+//#define SERIAL_USART_TX_PIN GP0
+//#define SERIAL_USART_RX_PIN GP1
+//
+//#define SERIAL_PIO_USE_PIO0
+//#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+//#define SERIAL_USART_SPEED 921600
+//#define SERIAL_USART_PIN_SWAP
+
+// RP2040 Settings
+
+
+//#define USB_VBUS_PIN GP27
+/* key matrix size */
+// Rows are doubled-up
+
+//# define MASTER_RIGHT
+//# define SPLIT_MODS_ENABLE
+//# define SPLIT_WPM_ENABLE
+//# define SPLIT_LAYER_STATE_ENABLE
+//# define SPLIT_OLED_ENABLE
+//# define SPLIT_LED_STATE_ENABLE
+// End of Basic Config
+
+#define SPI_DRIVER SPID0
+#define SPI_SCK_PIN GP22
+#define SPI_MISO_PIN GP20
+#define SPI_MOSI_PIN GP23
+#define SPLIT_POINTING_ENABLE
+#define ROTATIONAL_TRANSFORM_ANGLE -25
+#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_RIGHT
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x02
+
+#define POINTING_DEVICE_AUTO_MOUSE_ENABLE
+// only required if not setting mouse layer elsewhere
+#define AUTO_MOUSE_DEFAULT_LAYER 3
+
+#ifdef RGB_MATRIX_ENABLE
+#define RGBLED_NUM 72
+# define WS2812_PIO_USE_PIO1 // Force the usage of PIO1 peripheral, by default the WS2812 implementation uses the PIO0 peripheral
+# define SPLIT_TRANSPORT_MIRROR
+# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_REACTIVE // Sets the default mode, if none has been set
+# define RGB_MATRIX_DEFAULT_HUE 33 // Sets the default hue value, if none has been set
+# define RGB_MATRIX_DEFAULT_SAT 255 // Sets the default saturation value, if none has been set
+# define RGB_MATRIX_DEFAULT_SPD 50
+# define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
+# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# define RGB_MATRIX_KEYPRESSES
+# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define NOP_FUDGE 0.4 // may not be needed if ws driver loaded
+#endif
+
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD0
+#define I2C1_SDA_PIN GP24
+#define I2C1_SCL_PIN GP25
+#define RGBLIGHT_LAYERS
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+#ifdef ENCODER_ENABLE
+#define ENCODERS_PAD_A { GP16 }
+#define ENCODERS_PAD_B { GP18 }
+#define ENCODER_RESOLUTIONS { 2 }
+#define ENCODERS_PAD_A_RIGHT { GP16 }
+#define ENCODERS_PAD_B_RIGHT { GP18 }
+#define ENCODER_RESOLUTIONS_RIGHT { 2 }
+#endif
+
+//#ifdef RGBLIGHT_ENABLE
+//#define WS2812_PIO_USE_PIO1
+////#define WS2812_PIO_USE_PIO1
+////#define WS2812_PIO_USE_PIO1
+//#define RGBLIGHT_LAYERS
+////#define WS2812_DI_PIN GP22 // can use trackball jack if not used
+////#define WS2812_EXTERNAL_PULLUP
+//#define RGBLED_NUM 36
+////#define DRIVER_LED_TOTAL 34
+//#define RGBLED_SPLIT { 18, 18 }
+//#define RGBLIGHT_SPLIT
+//#define RGBLIGHT_EFFECT_RGB_TEST
+//#define RGBLIGHT_EFFECT_BREATHING
+//#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+//#define RGBLIGHT_EFFECT_SNAKE
+//#define RGBLIGHT_EFFECT_TWINKLE
+//#define RGBLIGHT_HUE_STEP 8
+//#define RGBLIGHT_SAT_STEP 8
+//#define RGBLIGHT_VAL_STEP 17
+//#define RGBLIGHT_LIMIT_VAL 100
+////#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+//#define NOP_FUDGE 0.4 // may not be needed if ws driver loaded
+//#endif
\ No newline at end of file
diff --git a/keyboards/cyboard/dactyl/manuform_6x7/info.json b/keyboards/cyboard/dactyl/manuform_6x7/info.json
new file mode 100644
index 00000000000..bd9c7e85c38
--- /dev/null
+++ b/keyboards/cyboard/dactyl/manuform_6x7/info.json
@@ -0,0 +1,190 @@
+{
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "encoder": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
+ "ws2812": {
+ "pin": "GP15",
+ "driver": "vendor"
+ },
+ "rgb_matrix": {
+ "split_count": [36, 34],
+ "layout": [
+ {"flags": 4, "matrix": [3, 0], "x": 103, "y": 32},
+ {"flags": 4, "matrix": [2, 0], "x": 103, "y": 43},
+ {"flags": 4, "matrix": [5, 0], "x": 103, "y": 11},
+ {"flags": 4, "matrix": [4, 0], "x": 103, "y": 21},
+
+ {"flags": 4, "matrix": [3, 1], "x": 86, "y": 32},
+ {"flags": 4, "matrix": [2, 1], "x": 86, "y": 43},
+ {"flags": 4, "matrix": [5, 1], "x": 86, "y": 11},
+ {"flags": 4, "matrix": [4, 1], "x": 86, "y": 21},
+
+ {"flags": 4, "matrix": [3, 2], "x": 69, "y": 32},
+ {"flags": 4, "matrix": [2, 2], "x": 69, "y": 43},
+ {"flags": 4, "matrix": [1, 2], "x": 69, "y": 53},
+ {"flags": 4, "matrix": [5, 2], "x": 69, "y": 11},
+ {"flags": 4, "matrix": [4, 2], "x": 69, "y": 21},
+
+ {"flags": 4, "matrix": [3, 3], "x": 52, "y": 32},
+ {"flags": 4, "matrix": [2, 3], "x": 52, "y": 43},
+ {"flags": 4, "matrix": [1, 3], "x": 52, "y": 53},
+ {"flags": 4, "matrix": [5, 3], "x": 52, "y": 11},
+ {"flags": 4, "matrix": [4, 3], "x": 52, "y": 21},
+
+ {"flags": 4, "matrix": [3, 4], "x": 34, "y": 32},
+ {"flags": 4, "matrix": [2, 4], "x": 34, "y": 43},
+ {"flags": 4, "matrix": [5, 4], "x": 34, "y": 11},
+ {"flags": 4, "matrix": [4, 4], "x": 34, "y": 21},
+
+ {"flags": 4, "matrix": [3, 5], "x": 17, "y": 32},
+ {"flags": 4, "matrix": [2, 5], "x": 17, "y": 43},
+ {"flags": 4, "matrix": [5, 5], "x": 17, "y": 11},
+ {"flags": 4, "matrix": [4, 5], "x": 17, "y": 21},
+
+ {"flags": 4, "matrix": [3, 6], "x": 0, "y": 32},
+ {"flags": 4, "matrix": [2, 6], "x": 0, "y": 43},
+ {"flags": 4, "matrix": [5, 6], "x": 0, "y": 11},
+ {"flags": 4, "matrix": [4, 6], "x": 0, "y": 21},
+
+
+ {"flags": 4, "matrix": [0, 3], "x": 103, "y": 53},
+ {"flags": 4, "matrix": [0, 2], "x": 120, "y": 53},
+ {"flags": 4, "matrix": [0, 1], "x": 120, "y": 64},
+ {"flags": 4, "matrix": [0, 6], "x": 86, "y": 53},
+ {"flags": 4, "matrix": [0, 5], "x": 86, "y": 64},
+ {"flags": 4, "matrix": [0, 4], "x": 103, "y": 64},
+
+ {"flags": 4, "matrix": [10, 0], "x": 155, "y": 32},
+ {"flags": 4, "matrix": [9, 0], "x": 155, "y": 43},
+ {"flags": 4, "matrix": [12, 0], "x": 155, "y": 11},
+ {"flags": 4, "matrix": [11, 0], "x": 155, "y": 21},
+
+ {"flags": 4, "matrix": [10, 1], "x": 172, "y": 32},
+ {"flags": 4, "matrix": [9, 1], "x": 172, "y": 43},
+ {"flags": 4, "matrix": [12, 1], "x": 172, "y": 11},
+ {"flags": 4, "matrix": [11, 1], "x": 172, "y": 21},
+
+ {"flags": 4, "matrix": [10, 2], "x": 190, "y": 32},
+ {"flags": 4, "matrix": [9, 2], "x": 190, "y": 43},
+ {"flags": 4, "matrix": [8, 2], "x": 190, "y": 53},
+ {"flags": 4, "matrix": [12, 2], "x": 190, "y": 11},
+ {"flags": 4, "matrix": [11, 2], "x": 190, "y": 21},
+
+ {"flags": 4, "matrix": [10, 3], "x": 207, "y": 32},
+ {"flags": 4, "matrix": [9, 3], "x": 207, "y": 43},
+ {"flags": 4, "matrix": [8, 3], "x": 207, "y": 53},
+ {"flags": 4, "matrix": [12, 3], "x": 207, "y": 11},
+ {"flags": 4, "matrix": [11, 3], "x": 207, "y": 21},
+
+ {"flags": 4, "matrix": [10, 4], "x": 224, "y": 32},
+ {"flags": 4, "matrix": [9, 4], "x": 224, "y": 43},
+ {"flags": 4, "matrix": [12, 4], "x": 224, "y": 11},
+ {"flags": 4, "matrix": [11, 4], "x": 224, "y": 21},
+
+ {"flags": 4, "matrix": [10, 5], "x": 224, "y": 32},
+ {"flags": 4, "matrix": [9, 5], "x": 224, "y": 43},
+ {"flags": 4, "matrix": [12, 5], "x": 224, "y": 11},
+ {"flags": 4, "matrix": [11, 5], "x": 224, "y": 21},
+
+ {"flags": 4, "matrix": [10, 6], "x": 224, "y": 32},
+ {"flags": 4, "matrix": [9, 6], "x": 224, "y": 43},
+ {"flags": 4, "matrix": [12, 6], "x": 224, "y": 11},
+ {"flags": 4, "matrix": [11, 6], "x": 224, "y": 21},
+
+ {"flags": 4, "matrix": [7, 0], "x": 155, "y": 53},
+ {"flags": 4, "matrix": [7, 1], "x": 155, "y": 53},
+ {"flags": 4, "matrix": [7, 2], "x": 155, "y": 64},
+ {"flags": 4, "matrix": [7, 3], "x": 138, "y": 64}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_manuform_6x7": {
+ "layout": [
+ { "matrix": [5, 6], "x": 0, "y": 0 },
+ { "matrix": [5, 5], "x": 1, "y": 0 },
+ { "matrix": [5, 4], "x": 2, "y": 0 },
+ { "matrix": [5, 3], "x": 3, "y": 0 },
+ { "matrix": [5, 2], "x": 4, "y": 0 },
+ { "matrix": [5, 1], "x": 5, "y": 0 },
+ { "matrix": [5, 0], "x": 6, "y": 0 },
+ { "matrix": [12, 0], "x": 11.5, "y": 0 },
+ { "matrix": [12, 1], "x": 12.5, "y": 0 },
+ { "matrix": [12, 2], "x": 13.5, "y": 0 },
+ { "matrix": [12, 3], "x": 14.5, "y": 0 },
+ { "matrix": [12, 4], "x": 15.5, "y": 0 },
+ { "matrix": [12, 5], "x": 16.5, "y": 0 },
+ { "matrix": [12, 6], "x": 17.5, "y": 0 },
+
+ { "matrix": [4, 6], "x": 0, "y": 1 },
+ { "matrix": [4, 5], "x": 1, "y": 1 },
+ { "matrix": [4, 4], "x": 2, "y": 1 },
+ { "matrix": [4, 3], "x": 3, "y": 1 },
+ { "matrix": [4, 2], "x": 4, "y": 1 },
+ { "matrix": [4, 1], "x": 5, "y": 1 },
+ { "matrix": [4, 0], "x": 6, "y": 1 },
+ { "matrix": [11, 0], "x": 10.5, "y": 1 },
+ { "matrix": [11, 1], "x": 11.5, "y": 1 },
+ { "matrix": [11, 2], "x": 12.5, "y": 1 },
+ { "matrix": [11, 3], "x": 13.5, "y": 1 },
+ { "matrix": [11, 4], "x": 14.5, "y": 1 },
+ { "matrix": [11, 5], "x": 15.5, "y": 1 },
+ { "matrix": [11, 6], "x": 16.5, "y": 1 },
+
+ { "matrix": [3, 6], "x": 0, "y": 2 },
+ { "matrix": [3, 5], "x": 1, "y": 2 },
+ { "matrix": [3, 4], "x": 2, "y": 2 },
+ { "matrix": [3, 3], "x": 3, "y": 2 },
+ { "matrix": [3, 2], "x": 4, "y": 2 },
+ { "matrix": [3, 1], "x": 5, "y": 2 },
+ { "matrix": [3, 0], "x": 6, "y": 2 },
+ { "matrix": [10, 0], "x": 10.5, "y": 2 },
+ { "matrix": [10, 1], "x": 11.5, "y": 2 },
+ { "matrix": [10, 2], "x": 12.5, "y": 2 },
+ { "matrix": [10, 3], "x": 13.5, "y": 2 },
+ { "matrix": [10, 4], "x": 14.5, "y": 2 },
+ { "matrix": [10, 5], "x": 15.5, "y": 2 },
+ { "matrix": [10, 6], "x": 16.5, "y": 2 },
+
+ { "matrix": [2, 6], "x": 0, "y": 3 },
+ { "matrix": [2, 5], "x": 1, "y": 3 },
+ { "matrix": [2, 4], "x": 2, "y": 3 },
+ { "matrix": [2, 3], "x": 3, "y": 3 },
+ { "matrix": [2, 2], "x": 4, "y": 3 },
+ { "matrix": [2, 1], "x": 5, "y": 3 },
+ { "matrix": [2, 0], "x": 6, "y": 3 },
+ { "matrix": [9, 0], "x": 10.5, "y": 3 },
+ { "matrix": [9, 1], "x": 11.5, "y": 3 },
+ { "matrix": [9, 2], "x": 12.5, "y": 3 },
+ { "matrix": [9, 3], "x": 13.5, "y": 3 },
+ { "matrix": [9, 4], "x": 14.5, "y": 3 },
+ { "matrix": [9, 5], "x": 15.5, "y": 3 },
+ { "matrix": [9, 6], "x": 16.5, "y": 3 },
+
+ { "matrix": [1, 3], "x": 3, "y": 4 },
+ { "matrix": [1, 2], "x": 4, "y": 4 },
+ { "matrix": [8, 2], "x": 13.5, "y": 4 },
+ { "matrix": [8, 3], "x": 14.5, "y": 4 },
+
+ { "matrix": [0, 2], "x": 4.5, "y": 5.5 },
+ { "matrix": [0, 1], "x": 5.5, "y": 5.5 },
+ { "matrix": [0, 0], "x": 6.5, "y": 5.5 },
+ { "matrix": [7, 0], "x": 10, "y": 5.5 },
+
+ { "matrix": [0, 5], "x": 4.5, "y": 6.5 },
+ { "matrix": [0, 4], "x": 5.5, "y": 6.5 },
+ { "matrix": [0, 3], "x": 6.5, "y": 6.5 },
+ { "matrix": [7, 1], "x": 10, "y": 6.5 },
+
+ { "matrix": [7, 3], "x": 9, "y": 7.5 },
+ { "matrix": [7, 2], "x": 10, "y": 7.5 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/cyboard/dactyl/manuform_6x7/keymaps/vial/keymap.c b/keyboards/cyboard/dactyl/manuform_6x7/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..f64913aff7c
--- /dev/null
+++ b/keyboards/cyboard/dactyl/manuform_6x7/keymaps/vial/keymap.c
@@ -0,0 +1,331 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+#include "trackball.h"
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+#define _MOUSE 3
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+//#define TO_QWERTY TO(_QWERTY)
+//#define TO_DVORAK TO(_DVORAK)
+
+enum wyld_keycodes {
+ WYLD_AUTO_MS_TOG = SAFE_RANGE
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_manuform_6x7(
+ KC_ESC, KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_LBRC , KC_RBRC,
+ _______, KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_QUOT, KC_BACKSLASH,
+ _______, KC_CAPS , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L ,KC_SCLN, KC_RCTL, _______,
+ _______, 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_LBRC,KC_RBRC, KC_PLUS, KC_EQL,
+ RAISE, KC_SPC, KC_BSPC, LOWER,
+ KC_TAB, KC_BSPC, KC_DEL, KC_ENT,
+ KC_RCTL, KC_RALT
+ ),
+
+ [1] = LAYOUT_manuform_6x7(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______
+ ),
+
+ [2] = LAYOUT_manuform_6x7(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______
+ ),
+
+ [3] = LAYOUT_manuform_6x7(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______
+ ),
+
+ [4] = LAYOUT_manuform_6x7(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______
+ ),
+
+ [5] = LAYOUT_manuform_6x7(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______
+ ),
+
+ [6] = LAYOUT_manuform_6x7(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______
+ ),
+
+ [7] = LAYOUT_manuform_6x7(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______
+ ),
+
+ [8] = LAYOUT_manuform_6x7(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______
+ ),
+
+ [9] = LAYOUT_manuform_6x7(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______
+ )
+};
+
+
+
+// AUTOMOUSE LAYERS
+#ifdef POINTING_DEVICE_AUTO_MOUSE_ENABLE
+void pointing_device_init_user(void) {
+ set_auto_mouse_enable(true);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case WYLD_AUTO_MS_TOG:
+ if (record->event.pressed) {
+ set_auto_mouse_enable(!get_auto_mouse_enable());
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+#endif
+
+// ENCODERS
+#ifdef ENCODER_MAP_ENABLE
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_QWERTY] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_LOWER] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_RAISE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_MOUSE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [4] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [5] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [6] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [7] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [8] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [9] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) }
+};
+//#endif
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+const rgblight_segment_t PROGMEM querty_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_RED}, // Light 4 LEDs, starting with LED 6
+ {33, 3, HSV_RED} // Light 4 LEDs, starting with LED 6
+);
+const rgblight_segment_t PROGMEM lower_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_BLUE},
+ {33, 3, HSV_BLUE}
+);
+const rgblight_segment_t PROGMEM raise_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_YELLOW},
+ {33, 3, HSV_YELLOW}
+);
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ querty_layer, // Overrides caps lock layer
+ lower_layer, // Overrides other layers
+ raise_layer // Overrides other layers
+);
+
+//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(0, layer_state_cmp(state, _QWERTY));
+ return state;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(1, layer_state_cmp(state, _LOWER));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _RAISE));
+ return state;
+}
+
+
+#endif
+
+// rgblight_enable();
+#ifdef RGBLIGHT_ENABLE
+void keyboard_post_init_user(void) {
+ // Enable the LED layers
+ rgblight_layers = my_rgb_layers;
+}
+// rgblight_layers = my_rgb_layers;
+// rgblight_enable_noeeprom(); // Enables RGB, without saving settings
+// rgblight_sethsv_noeeprom_cyan();
+// rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
+#endif
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_left()) {
+ return OLED_ROTATION_270;
+ }
+#ifdef POINTING_DEVICE_ENABLE
+ return OLED_ROTATION_270;
+#else
+ return OLED_ROTATION_0;
+#endif
+}
+
+#ifndef POINTING_DEVICE_ENABLE
+static const char PROGMEM wylderbuilds[] = {
+ // 'dark wylderbuilds_oled_name', 128x32
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40,
+ 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x20, 0x60,
+ 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x60, 0x60,
+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0,
+ 0x00, 0x00, 0xc1, 0xc1, 0x01, 0x01, 0xf1, 0x11, 0x01, 0x01, 0x01, 0x31, 0x60, 0xc0, 0x80, 0xc0,
+ 0xf0, 0x10, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0,
+ 0x00, 0x01, 0x03, 0x9e, 0xf8, 0x00, 0x00, 0x20, 0xe0, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0xf0, 0x30, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x98, 0xf0, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x00, 0x70, 0xfe, 0x03, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00,
+ 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x11, 0xf1, 0x11, 0x33, 0x63, 0xc3,
+ 0x83, 0x01, 0x01, 0xc1, 0xe1, 0x31, 0x11, 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,
+ 0x1f, 0x7c, 0xff, 0x07, 0x7c, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7f, 0xff,
+ 0x60, 0x30, 0x18, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xf2, 0x82, 0x02, 0x80, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x7f, 0x0e, 0x1b, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0x81, 0xc1, 0x63,
+ 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00,
+ 0x00, 0x1f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x60, 0x30, 0x1f,
+ 0x07, 0x00, 0x00, 0x01, 0x43, 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static void render_wylderbuilds(void) {
+ oled_write_raw_P(wylderbuilds, sizeof(wylderbuilds));
+}
+
+#endif
+
+static char layer_names[5][8] = {
+ " BASE\n",
+ "LOWER\n",
+ "RAISE\n",
+ "MOUSE\n",
+ " XTRA\n"
+ };
+
+bool oled_task_user(void) {
+ char* layer_name = layer_names[get_highest_layer(layer_state)];
+
+ if (is_keyboard_left()) {
+ // oled_write_P(PSTR("Layer\n"), false);
+ oled_set_cursor(0, 3);
+ oled_write_P(PSTR(layer_name), false);
+
+ oled_set_cursor(2, 6);
+ oled_write_P(PSTR("WPM "), false);
+ oled_set_cursor(2, 7);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 9);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+ } else {
+ // write WPM to right OLED
+#ifdef POINTING_DEVICE_ENABLE
+ char* mode = get_mouse_mode_string();
+ uint16_t dpi = get_current_dpi();
+ oled_set_cursor(2, 3);
+ oled_write_P(PSTR("DPI "), false);
+ oled_set_cursor(0, 5);
+ oled_write_P(PSTR(get_u16_str(dpi, ' ')), false);
+ oled_set_cursor(0, 9);
+ oled_write(PSTR(mode), false);
+#else
+ oled_set_cursor(0, 0);
+ render_wylderbuilds();
+ oled_scroll_left();
+#endif
+ }
+
+ return false;
+}
+#endif
+
+
+
diff --git a/keyboards/cyboard/dactyl/manuform_6x7/keymaps/vial/rules.mk b/keyboards/cyboard/dactyl/manuform_6x7/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/dactyl/manuform_6x7/keymaps/vial/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/dactyl/manuform_6x7/keymaps/vial/vial.json b/keyboards/cyboard/dactyl/manuform_6x7/keymaps/vial/vial.json
new file mode 100644
index 00000000000..884325f5462
--- /dev/null
+++ b/keyboards/cyboard/dactyl/manuform_6x7/keymaps/vial/vial.json
@@ -0,0 +1,134 @@
+{
+ "name": "Dactyl",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 8
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "5,5",
+ "5,4",
+ "5,3",
+ "5,2",
+ "5,1",
+ "5,0",
+ {
+ "x": 5.5
+ },
+ "12,0",
+ "12,1",
+ "12,2",
+ "12,3",
+ "12,4",
+ "12,5"
+ ],
+ [
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ "4,0",
+ {
+ "x": 5.5
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5"
+ ],
+ [
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ "3,0",
+ {
+ "x": 5.5
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5"
+ ],
+ [
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ "2,0",
+ {
+ "x": 5.5
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5"
+ ],
+ [
+ "1,5",
+ "1,4",
+ "1,3",
+ "1,2",
+ {
+ "x": 9.5
+ },
+ "8,2",
+ "8,3",
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4.5
+ },
+ "0,7",
+ "0,3",
+ {
+ "x": 4.5
+ },
+ "7,3",
+ "7,7"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 6.5
+ },
+ "0,2",
+ "0,1",
+ {
+ "x": 0.5
+ },
+ "7,1",
+ "7,2"
+ ],
+ [
+ {
+ "x": 6.5
+ },
+ "0,6",
+ "0,5",
+ {
+ "x": 0.5
+ },
+ "7,5",
+ "7,6"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/dactyl/manuform_6x7/mcuconf.h b/keyboards/cyboard/dactyl/manuform_6x7/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/cyboard/dactyl/manuform_6x7/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/cyboard/dactyl/manuform_6x7/rules.mk b/keyboards/cyboard/dactyl/manuform_6x7/rules.mk
new file mode 100644
index 00000000000..dac299e5d69
--- /dev/null
+++ b/keyboards/cyboard/dactyl/manuform_6x7/rules.mk
@@ -0,0 +1,22 @@
+
+#POINTING_DEVICE_DRIVER = adns9800
+#RGBLIGHT_ENABLE = no
+#MOUSEKEY_ENABLE = yes
+CONSOLE_ENABLE = yes
+POINTING_DEVICE_ENABLE = yes
+POINTING_DEVICE_DRIVER = pmw3360
+##COMMAND_ENABLE = yes
+#BOOTMAGIC_ENABLE = yes
+#NKRO_ENABLE = yes # Enable N-Key Rollover
+#RGB_MATRIX_ENABLE = yes
+OLED_ENABLE = yes
+##OLED_DRIVER = SSD1306
+
+
+WPM_ENABLE = yes
+#EXTRAKEY_ENABLE = yes # Audio control and System control
+#
+#ENCODER_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+#
+OPT_DEFS += -DHAL_USE_I2C=TRUE
diff --git a/keyboards/cyboard/dactyl/manuform_6x7/trackball.c b/keyboards/cyboard/dactyl/manuform_6x7/trackball.c
new file mode 100644
index 00000000000..d89997a566e
--- /dev/null
+++ b/keyboards/cyboard/dactyl/manuform_6x7/trackball.c
@@ -0,0 +1,448 @@
+/* Copyright 2020 Christopher Courtney (@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 "trackball.h"
+#include "transactions.h"
+#include
+#include
+#include "print.h"
+
+#ifdef CONSOLE_ENABLE
+# include "print.h"
+#endif // CONSOLE_ENABLE
+
+//#warning ">>> PREPROCESSOR CHECKING trackball.c"
+//#define POINTING_DEVICE_ENABLE
+#ifdef POINTING_DEVICE_ENABLE
+# ifndef CHARYBDIS_MINIMUM_DEFAULT_DPI
+# define CHARYBDIS_MINIMUM_DEFAULT_DPI 400
+# endif // CHARYBDIS_MINIMUM_DEFAULT_DPI
+
+# ifndef CHARYBDIS_DEFAULT_DPI_CONFIG_STEP
+# define CHARYBDIS_DEFAULT_DPI_CONFIG_STEP 200
+# endif // CHARYBDIS_DEFAULT_DPI_CONFIG_STEP
+
+# ifndef CHARYBDIS_MINIMUM_SNIPING_DPI
+# define CHARYBDIS_MINIMUM_SNIPING_DPI 200
+# endif // CHARYBDIS_MINIMUM_SNIPING_DPI
+
+# ifndef CHARYBDIS_SNIPING_DPI_CONFIG_STEP
+# define CHARYBDIS_SNIPING_DPI_CONFIG_STEP 100
+# endif // CHARYBDIS_SNIPING_DPI_CONFIG_STEP
+
+// Fixed DPI for drag-scroll.
+# ifndef CHARYBDIS_DRAGSCROLL_DPI
+# define CHARYBDIS_DRAGSCROLL_DPI 100
+# endif // CHARYBDIS_DRAGSCROLL_DPI
+
+# ifndef CHARYBDIS_DRAGSCROLL_BUFFER_SIZE
+# define CHARYBDIS_DRAGSCROLL_BUFFER_SIZE 6
+# endif // !CHARYBDIS_DRAGSCROLL_BUFFER_SIZE
+
+# ifndef CHARYBDIS_POINTER_ACCELERATION_FACTOR
+# define CHARYBDIS_POINTER_ACCELERATION_FACTOR 24
+# endif // !CHARYBDIS_POINTER_ACCELERATION_FACTOR
+
+# ifndef CHARYBDIS_MAX_DEFAULT_DPI_MULTIPLIER
+# define CHARYBDIS_MAX_DEFAULT_DPI_MULTIPLIER 5
+# endif // !CHARYBDIS_POINTER_ACCELERATION_FACTOR
+typedef union {
+ uint8_t raw;
+ struct {
+ uint8_t pointer_default_dpi : 4; // 16 steps available.
+ uint8_t pointer_sniping_dpi : 2; // 4 steps available.
+ bool is_dragscroll_enabled : 1;
+ bool is_sniping_enabled : 1;
+ } __attribute__((packed));
+} charybdis_config_t;
+
+static charybdis_config_t g_charybdis_config = {0};
+
+/**
+ * \brief Set the value of `config` from EEPROM.
+ *
+ * Note that `is_dragscroll_enabled` and `is_sniping_enabled` are purposefully
+ * ignored since we do not want to persist this state to memory. In practice,
+ * this state is always written to maximize write-performances. Therefore, we
+ * explicitly set them to `false` in this function.
+ */
+static void read_charybdis_config_from_eeprom(charybdis_config_t* config) {
+ config->raw = eeconfig_read_kb() & 0xff;
+ config->is_dragscroll_enabled = false;
+ config->is_sniping_enabled = false;
+}
+
+/**
+ * \brief Save the value of `config` to eeprom.
+ *
+ * Note that all values are written verbatim, including whether drag-scroll
+ * and/or sniper mode are enabled. `read_charybdis_config_from_eeprom(…)`
+ * resets these 2 values to `false` since it does not make sense to persist
+ * these across reboots of the board.
+ */
+static void write_charybdis_config_to_eeprom(charybdis_config_t* config) { eeconfig_update_kb(config->raw); }
+
+/** \brief Return the current value of the pointer's default DPI. */
+static uint16_t get_pointer_default_dpi(charybdis_config_t* config) { return (uint16_t)config->pointer_default_dpi * CHARYBDIS_DEFAULT_DPI_CONFIG_STEP + CHARYBDIS_MINIMUM_DEFAULT_DPI; }
+
+/** \brief Return the current value of the pointer's sniper-mode DPI. */
+static uint16_t get_pointer_sniping_dpi(charybdis_config_t* config) { return (uint16_t)config->pointer_sniping_dpi * CHARYBDIS_SNIPING_DPI_CONFIG_STEP + CHARYBDIS_MINIMUM_SNIPING_DPI; }
+
+/** \brief Set the appropriate DPI for the input config. */
+static void maybe_update_pointing_device_cpi(charybdis_config_t* config) {
+ if (config->is_dragscroll_enabled) {
+ pointing_device_set_cpi(CHARYBDIS_DRAGSCROLL_DPI);
+ } else if (config->is_sniping_enabled) {
+ pointing_device_set_cpi(get_pointer_sniping_dpi(config));
+ } else {
+ pointing_device_set_cpi(get_pointer_default_dpi(config));
+ }
+}
+
+/**
+ * \brief Update the pointer's default DPI to the next or previous step.
+ *
+ * Increases the DPI value if `forward` is `true`, decreases it otherwise.
+ * The increment/decrement steps are equal to CHARYBDIS_DEFAULT_DPI_CONFIG_STEP.
+ */
+static void step_pointer_default_dpi(charybdis_config_t* config, bool forward) {
+ config->pointer_default_dpi += forward ? 1 : -1;
+ if (config->pointer_default_dpi < 1) {
+ config->pointer_default_dpi = 1;
+ } else if (config->pointer_default_dpi >= CHARYBDIS_MAX_DEFAULT_DPI_MULTIPLIER) {
+ config->pointer_default_dpi = CHARYBDIS_MAX_DEFAULT_DPI_MULTIPLIER;
+ }
+ maybe_update_pointing_device_cpi(config);
+}
+
+/**
+ * \brief Update the pointer's sniper-mode DPI to the next or previous step.
+ *
+ * Increases the DPI value if `forward` is `true`, decreases it otherwise.
+ * The increment/decrement steps are equal to CHARYBDIS_SNIPING_DPI_CONFIG_STEP.
+ */
+static void step_pointer_sniping_dpi(charybdis_config_t* config, bool forward) {
+ config->pointer_sniping_dpi += forward ? 1 : -1;
+ if (config->pointer_sniping_dpi < 1) {
+ config->pointer_sniping_dpi = 1;
+ }
+ maybe_update_pointing_device_cpi(config);
+}
+
+
+void reset_dpi(void) {
+ g_charybdis_config.pointer_default_dpi = 1;
+ write_charybdis_config_to_eeprom(&g_charybdis_config);
+}
+
+uint16_t charybdis_get_pointer_default_dpi(void) { return get_pointer_default_dpi(&g_charybdis_config); }
+
+uint16_t charybdis_get_pointer_sniping_dpi(void) { return get_pointer_sniping_dpi(&g_charybdis_config); }
+
+void charybdis_cycle_pointer_default_dpi_noeeprom(bool forward) { step_pointer_default_dpi(&g_charybdis_config, forward); }
+
+void charybdis_cycle_pointer_default_dpi(bool forward) {
+ step_pointer_default_dpi(&g_charybdis_config, forward);
+ write_charybdis_config_to_eeprom(&g_charybdis_config);
+}
+
+void charybdis_cycle_pointer_sniping_dpi_noeeprom(bool forward) { step_pointer_sniping_dpi(&g_charybdis_config, forward); }
+
+void charybdis_cycle_pointer_sniping_dpi(bool forward) {
+ step_pointer_sniping_dpi(&g_charybdis_config, forward);
+ write_charybdis_config_to_eeprom(&g_charybdis_config);
+}
+
+bool charybdis_get_pointer_sniping_enabled(void) { return g_charybdis_config.is_sniping_enabled; }
+
+void charybdis_set_pointer_sniping_enabled(bool enable) {
+ g_charybdis_config.is_sniping_enabled = enable;
+ if(enable) g_charybdis_config.is_dragscroll_enabled = false; // if we're adjusting sniping, then dragscroll should be false
+ maybe_update_pointing_device_cpi(&g_charybdis_config);
+}
+
+bool charybdis_get_pointer_dragscroll_enabled(void) { return g_charybdis_config.is_dragscroll_enabled; }
+
+void charybdis_set_pointer_dragscroll_enabled(bool enable) {
+ g_charybdis_config.is_dragscroll_enabled = enable;
+ if(enable) g_charybdis_config.is_sniping_enabled = false; // if we're adjusting dragscroll. then sniping should be false
+ maybe_update_pointing_device_cpi(&g_charybdis_config);
+}
+
+# ifndef CONSTRAIN_HID
+# define CONSTRAIN_HID(value) ((value) < XY_REPORT_MIN ? XY_REPORT_MIN : ((value) > XY_REPORT_MAX ? XY_REPORT_MAX : (value)))
+# endif // !CONSTRAIN_HID
+
+/**
+ * \brief Add optional acceleration effect.
+ *
+ * If `CHARYBDIS_ENABLE_POINTER_ACCELERATION` is defined, add a simple and naive
+ * acceleration effect to the provided value. Return the value unchanged
+ * otherwise.
+ */
+# ifndef DISPLACEMENT_WITH_ACCELERATION
+# ifdef CHARYBDIS_POINTER_ACCELERATION_ENABLE
+# define DISPLACEMENT_WITH_ACCELERATION(d) (CONSTRAIN_HID(d > 0 ? d * d / CHARYBDIS_POINTER_ACCELERATION_FACTOR + d : -d * d / CHARYBDIS_POINTER_ACCELERATION_FACTOR + d))
+# else // !CHARYBDIS_POINTER_ACCELERATION_ENABLE
+# define DISPLACEMENT_WITH_ACCELERATION(d) (d)
+# endif // CHARYBDIS_POINTER_ACCELERATION_ENABLE
+# endif // !DISPLACEMENT_WITH_ACCELERATION
+
+/**
+ * \brief Augment the pointing device behavior.
+ *
+ * Implement the Charybdis-specific features for pointing devices:
+ * - Drag-scroll
+ * - Sniping
+ * - Acceleration
+ */
+static void pointing_device_task_charybdis(report_mouse_t* mouse_report) {
+ static int16_t scroll_buffer_x = 0;
+ static int16_t scroll_buffer_y = 0;
+ // print("In pointing_device_task_charybdis\n");
+ if (g_charybdis_config.is_dragscroll_enabled) {
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_X
+ scroll_buffer_x -= mouse_report->x;
+# else
+ scroll_buffer_x += mouse_report->x;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_X
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ scroll_buffer_y -= mouse_report->y;
+# else
+ scroll_buffer_y += mouse_report->y;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ mouse_report->x = 0;
+ mouse_report->y = 0;
+ if (abs(scroll_buffer_x) > CHARYBDIS_DRAGSCROLL_BUFFER_SIZE) {
+ mouse_report->h = scroll_buffer_x > 0 ? 1 : -1;
+ scroll_buffer_x = 0;
+ }
+ if (abs(scroll_buffer_y) > CHARYBDIS_DRAGSCROLL_BUFFER_SIZE) {
+ mouse_report->v = scroll_buffer_y > 0 ? 1 : -1;
+ scroll_buffer_y = 0;
+ }
+
+ } else if (!g_charybdis_config.is_sniping_enabled) {
+ mouse_report->x = DISPLACEMENT_WITH_ACCELERATION(mouse_report->x);
+ mouse_report->y = DISPLACEMENT_WITH_ACCELERATION(mouse_report->y);
+ }
+
+}
+
+report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) {
+ if (is_keyboard_master()) {
+ pointing_device_task_charybdis(&mouse_report);
+ mouse_report = pointing_device_task_user(mouse_report);
+ }
+ return mouse_report;
+}
+
+//report_mouse_t pointing_device_set_shared_report(report_mouse_t mouse_report) {
+// print("pointing_device_set_shared_report");
+// pointing_device_task_charybdis(&mouse_report);
+// mouse_report = pointing_device_task_user(mouse_report);
+// pointing_device_set_shared_report(mouse_report);
+// return mouse_report;
+//}
+
+# if defined(POINTING_DEVICE_ENABLE) && !defined(NO_CHARYBDIS_KEYCODES)
+/** \brief Whether SHIFT mod is enabled. */
+static bool has_shift_mod(void) {
+# ifdef NO_ACTION_ONESHOT
+ return mod_config(get_mods()) & MOD_MASK_SHIFT;
+# else
+ return mod_config(get_mods() | get_oneshot_mods()) & MOD_MASK_SHIFT;
+# endif // NO_ACTION_ONESHOT
+}
+# endif // POINTING_DEVICE_ENABLE && !NO_CHARYBDIS_KEYCODES
+
+/**
+ * \brief Outputs the Charybdis configuration to console.
+ *
+ * Prints the in-memory configuration structure to console, for debugging.
+ * Includes:
+ * - raw value
+ * - drag-scroll: on/off
+ * - sniping: on/off
+ * - default DPI: internal table index/actual DPI
+ * - sniping DPI: internal table index/actual DPI
+ */
+__attribute__((unused)) static void debug_charybdis_config_to_console(charybdis_config_t* config) {
+# ifdef CONSOLE_ENABLE
+ IGNORE_FORMAT_WARNING(dprintf("(charybdis) process_record_kb: config = {\n"
+ "\traw = 0x%04X,\n"
+ "\t{\n"
+ "\t\tis_dragscroll_enabled=%b\n"
+ "\t\tis_sniping_enabled=%b\n"
+ "\t\tdefault_dpi=0x%02X (%ld)\n"
+ "\t\tsniping_dpi=0x%01X (%ld)\n"
+ "\t}\n"
+ "}\n",
+ config->raw, config->is_dragscroll_enabled, config->is_sniping_enabled, config->pointer_default_dpi, get_pointer_default_dpi(config), config->pointer_sniping_dpi, get_pointer_sniping_dpi(config)));
+# endif // CONSOLE_ENABLE
+}
+
+bool process_record_kb(uint16_t keycode, keyrecord_t* record) {
+ if (!process_record_user(keycode, record)) {
+ return false;
+ }
+# ifndef NO_CHARYBDIS_KEYCODES
+ switch (keycode) {
+ case POINTER_DEFAULT_DPI_FORWARD:
+ if (record->event.pressed) {
+ // Step backward if shifted, forward otherwise.
+ charybdis_cycle_pointer_default_dpi(/* forward= */ !has_shift_mod());
+ }
+ break;
+ case POINTER_DEFAULT_DPI_REVERSE:
+ if (record->event.pressed) {
+ // Step forward if shifted, backward otherwise.
+ charybdis_cycle_pointer_default_dpi(/* forward= */ has_shift_mod());
+ }
+ break;
+ case POINTER_DEFAULT_DPI_RESET:
+ if (record->event.pressed) {
+ reset_dpi();
+ }
+ break;
+ case POINTER_SNIPING_DPI_FORWARD:
+ if (record->event.pressed) {
+ // Step backward if shifted, forward otherwise.
+ charybdis_cycle_pointer_sniping_dpi(/* forward= */ !has_shift_mod());
+ }
+ break;
+ case POINTER_SNIPING_DPI_REVERSE:
+ if (record->event.pressed) {
+ // Step forward if shifted, backward otherwise.
+ charybdis_cycle_pointer_sniping_dpi(/* forward= */ has_shift_mod());
+ }
+ break;
+ case SNIPING_MODE:
+ charybdis_set_pointer_sniping_enabled(record->event.pressed);
+ break;
+ case SNIPING_MODE_TOGGLE:
+ if (record->event.pressed) {
+ charybdis_set_pointer_sniping_enabled(!charybdis_get_pointer_sniping_enabled());
+ }
+ break;
+ case DRAGSCROLL_MODE:
+ charybdis_set_pointer_dragscroll_enabled(record->event.pressed);
+ break;
+ case DRAGSCROLL_MODE_TOGGLE:
+ if (record->event.pressed) {
+ charybdis_set_pointer_dragscroll_enabled(!charybdis_get_pointer_dragscroll_enabled());
+ }
+ break;
+ }
+# endif // !NO_CHARYBDIS_KEYCODES
+# ifndef MOUSEKEY_ENABLE
+ // Simulate mouse keys if full support is not enabled (reduces firmware size
+ // while maintaining support for mouse keys).
+ if (IS_MOUSEKEY_BUTTON(keycode)) {
+ report_mouse_t mouse_report = pointing_device_get_report();
+ mouse_report.buttons = pointing_device_handle_buttons(mouse_report.buttons, record->event.pressed, keycode - KC_MS_BTN1);
+ pointing_device_set_report(mouse_report);
+ pointing_device_send();
+ }
+# endif // !MOUSEKEY_ENABLE
+ return true;
+}
+
+void eeconfig_init_kb(void) {
+ g_charybdis_config.raw = 0;
+ write_charybdis_config_to_eeprom(&g_charybdis_config);
+ maybe_update_pointing_device_cpi(&g_charybdis_config);
+ eeconfig_init_user();
+}
+
+void matrix_power_up(void) { pointing_device_task(); }
+
+void charybdis_config_sync_handler(uint8_t initiator2target_buffer_size, const void* initiator2target_buffer, uint8_t target2initiator_buffer_size, void* target2initiator_buffer) {
+ if (initiator2target_buffer_size == sizeof(g_charybdis_config)) {
+ memcpy(&g_charybdis_config, initiator2target_buffer, sizeof(g_charybdis_config));
+ }
+}
+
+void keyboard_post_init_kb(void) {
+// pointing_device_set_cpi(8200);
+ maybe_update_pointing_device_cpi(&g_charybdis_config);
+ transaction_register_rpc(RPC_ID_KB_CONFIG_SYNC, charybdis_config_sync_handler);
+
+ keyboard_post_init_user();
+}
+
+
+uint16_t get_current_dpi(void) {
+ if (g_charybdis_config.is_sniping_enabled) {
+ return get_pointer_sniping_dpi(&g_charybdis_config);
+ }
+ return get_pointer_default_dpi(&g_charybdis_config);
+}
+
+
+char* get_mouse_mode_string(void) {
+ if (g_charybdis_config.is_dragscroll_enabled) {
+ return "DRAG ";
+ }
+ if (g_charybdis_config.is_sniping_enabled) {
+ return "SNIPE";
+ }
+ return "POINT";
+}
+
+void housekeeping_task_kb(void) {
+ if (is_keyboard_master()) {
+ // Keep track of the last state, so that we can tell if we need to propagate to slave
+ static charybdis_config_t last_charybdis_config = {0};
+ static uint32_t last_sync = 0;
+ bool needs_sync = false;
+
+ // Check if the state values are different
+ if (memcmp(&g_charybdis_config, &last_charybdis_config, sizeof(g_charybdis_config))) {
+ needs_sync = true;
+ memcpy(&last_charybdis_config, &g_charybdis_config, sizeof(g_charybdis_config));
+ }
+ // Send to slave every 500ms regardless of state change
+ if (timer_elapsed32(last_sync) > 500) {
+ needs_sync = true;
+ }
+
+ // Perform the sync if requested
+ if (needs_sync) {
+ if (transaction_rpc_send(RPC_ID_KB_CONFIG_SYNC, sizeof(g_charybdis_config), &g_charybdis_config)) {
+ last_sync = timer_read32();
+ }
+ }
+ }
+ // no need for user function, is called already
+}
+
+#endif // POINTING_DEVICE_ENABLE
+
+__attribute__((weak)) void matrix_init_sub_kb(void) {}
+void matrix_init_kb(void) {
+#ifdef POINTING_DEVICE_ENABLE
+ read_charybdis_config_from_eeprom(&g_charybdis_config);
+#endif // POINTING_DEVICE_ENABLE
+ matrix_init_sub_kb();
+ matrix_init_user();
+}
+
+__attribute__((weak)) void matrix_scan_sub_kb(void) {}
+void matrix_scan_kb(void) {
+ matrix_scan_sub_kb();
+ matrix_scan_user();
+}
diff --git a/keyboards/cyboard/dactyl/manuform_6x7/trackball.h b/keyboards/cyboard/dactyl/manuform_6x7/trackball.h
new file mode 100644
index 00000000000..39aedb4641a
--- /dev/null
+++ b/keyboards/cyboard/dactyl/manuform_6x7/trackball.h
@@ -0,0 +1,128 @@
+/* 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
+
+#include "quantum.h"
+#include
+
+//#warning ">>> PREPROCESSOR CHECKING trackball.h"
+
+
+enum charybdis_keycodes {
+ POINTER_DEFAULT_DPI_FORWARD = QK_KB_0,
+ POINTER_DEFAULT_DPI_REVERSE,
+ POINTER_DEFAULT_DPI_RESET,
+ POINTER_SNIPING_DPI_FORWARD,
+ POINTER_SNIPING_DPI_REVERSE,
+ SNIPING_MODE,
+ SNIPING_MODE_TOGGLE,
+ DRAGSCROLL_MODE,
+ DRAGSCROLL_MODE_TOGGLE,
+};
+# define CHARYBDIS_SAFE_RANGE KEYMAP_SAFE_RANGE
+# define DPI_MOD POINTER_DEFAULT_DPI_FORWARD
+# define DPI_RMOD POINTER_DEFAULT_DPI_REVERSE
+# define DPI_RST POINTER_DEFAULT_DPI_RESET
+# define S_D_MOD POINTER_SNIPING_DPI_FORWARD
+# define S_D_RMOD POINTER_SNIPING_DPI_REVERSE
+# define SNIPING SNIPING_MODE
+# define SNP_TOG SNIPING_MODE_TOGGLE
+# define DRGSCRL DRAGSCROLL_MODE
+# define DRG_TOG DRAGSCROLL_MODE_TOGGLE
+
+#ifdef POINTING_DEVICE_ENABLE
+/** \brief Return the current DPI value for the pointer's default mode. */
+uint16_t charybdis_get_pointer_default_dpi(void);
+
+/**
+ * \brief Update the pointer's default DPI to the next or previous step.
+ *
+ * Increases the DPI value if `forward` is `true`, decreases it otherwise.
+ * The increment/decrement steps are equal to CHARYBDIS_DEFAULT_DPI_CONFIG_STEP.
+ *
+ * The new value is persisted in EEPROM.
+ */
+void charybdis_cycle_pointer_default_dpi(bool forward);
+
+/**
+ * \brief Same as `charybdis_cycle_pointer_default_dpi`, but do not write to
+ * EEPROM.
+ *
+ * This means that reseting the board will revert the value to the last
+ * persisted one.
+ */
+void charybdis_cycle_pointer_default_dpi_noeeprom(bool forward);
+
+/** \brief Return the current DPI value for the pointer's sniper-mode. */
+uint16_t charybdis_get_pointer_sniping_dpi(void);
+
+/**
+ * \brief Update the pointer's sniper-mode DPI to the next or previous step.
+ *
+ * Increases the DPI value if `forward` is `true`, decreases it otherwise.
+ * The increment/decrement steps are equal to CHARYBDIS_SNIPING_DPI_CONFIG_STEP.
+ *
+ * The new value is persisted in EEPROM.
+ */
+void charybdis_cycle_pointer_sniping_dpi(bool forward);
+
+/**
+ * \brief Same as `charybdis_cycle_pointer_sniping_dpi`, but do not write to
+ * EEPROM.
+ *
+ * This means that reseting the board will revert the value to the last
+ * persisted one.
+ */
+void charybdis_cycle_pointer_sniping_dpi_noeeprom(bool forward);
+
+/** \brief Whether sniper-mode is enabled. */
+bool charybdis_get_pointer_sniping_enabled(void);
+
+/**
+ * \brief Enable/disable sniper mode.
+ *
+ * When sniper mode is enabled the dpi is reduced to slow down the pointer for
+ * more accurate movements.
+ */
+void charybdis_set_pointer_sniping_enabled(bool enable);
+
+/** \brief Whether drag-scroll is enabled. */
+bool charybdis_get_pointer_dragscroll_enabled(void);
+
+/** calculate drag scroll on specific mouse report */
+void check_drag_scroll(report_mouse_t* mouse_report);
+
+/**
+ * \brief Enable/disable drag-scroll mode.
+ *
+ * When drag-scroll mode is enabled, horizontal and vertical pointer movements
+ * are translated into horizontal and vertical scroll movements.
+ */
+void charybdis_set_pointer_dragscroll_enabled(bool enable);
+
+void set_default_pointer_dpi(void);
+
+void reset_dpi(void);
+
+uint16_t get_current_dpi(void);
+
+char* get_mouse_mode_string(void);
+
+#endif // POINTING_DEVICE_ENABLE
+
+void matrix_init_sub_kb(void);
+void matrix_scan_sub_kb(void);
diff --git a/keyboards/cyboard/dactyl/manuform_function_row/info.json b/keyboards/cyboard/dactyl/manuform_function_row/info.json
new file mode 100644
index 00000000000..e2b579bf56e
--- /dev/null
+++ b/keyboards/cyboard/dactyl/manuform_function_row/info.json
@@ -0,0 +1,187 @@
+{
+ "rgb_matrix": {
+ "split_count": [40, 40],
+ "layout": [
+ {"flags": 4, "matrix": [3, 0], "x": 86, "y": 32},
+ {"flags": 4, "matrix": [2, 0], "x": 86, "y": 43},
+ {"flags": 4, "matrix": [6, 0], "x": 86, "y": 0},
+ {"flags": 4, "matrix": [5, 0], "x": 86, "y": 11},
+ {"flags": 4, "matrix": [4, 0], "x": 86, "y": 21},
+
+ {"flags": 4, "matrix": [3, 1], "x": 69, "y": 32},
+ {"flags": 4, "matrix": [2, 1], "x": 69, "y": 43},
+ {"flags": 4, "matrix": [6, 1], "x": 69, "y": 0},
+ {"flags": 4, "matrix": [5, 1], "x": 69, "y": 11},
+ {"flags": 4, "matrix": [4, 1], "x": 69, "y": 21},
+
+ {"flags": 4, "matrix": [3, 2], "x": 52, "y": 32},
+ {"flags": 4, "matrix": [2, 2], "x": 52, "y": 43},
+ {"flags": 4, "matrix": [1, 2], "x": 52, "y": 53},
+ {"flags": 4, "matrix": [6, 2], "x": 52, "y": 0},
+ {"flags": 4, "matrix": [5, 2], "x": 52, "y": 11},
+ {"flags": 4, "matrix": [4, 2], "x": 52, "y": 21},
+
+ {"flags": 4, "matrix": [3, 3], "x": 34, "y": 32},
+ {"flags": 4, "matrix": [2, 3], "x": 34, "y": 43},
+ {"flags": 4, "matrix": [1, 3], "x": 34, "y": 53},
+ {"flags": 4, "matrix": [6, 3], "x": 34, "y": 0},
+ {"flags": 4, "matrix": [5, 3], "x": 34, "y": 11},
+ {"flags": 4, "matrix": [4, 3], "x": 34, "y": 21},
+
+ {"flags": 4, "matrix": [3, 4], "x": 17, "y": 32},
+ {"flags": 4, "matrix": [2, 4], "x": 17, "y": 43},
+ {"flags": 4, "matrix": [1, 4], "x": 17, "y": 53},
+ {"flags": 4, "matrix": [6, 4], "x": 17, "y": 0},
+ {"flags": 4, "matrix": [5, 4], "x": 17, "y": 11},
+ {"flags": 4, "matrix": [4, 4], "x": 17, "y": 21},
+
+ {"flags": 4, "matrix": [3, 5], "x": 0, "y": 32},
+ {"flags": 4, "matrix": [2, 5], "x": 0, "y": 43},
+ {"flags": 4, "matrix": [1, 5], "x": 0, "y": 53},
+ {"flags": 4, "matrix": [6, 5], "x": 0, "y": 0},
+ {"flags": 4, "matrix": [5, 5], "x": 0, "y": 11},
+ {"flags": 4, "matrix": [4, 5], "x": 0, "y": 21},
+
+ {"flags": 4, "matrix": [0, 3], "x": 86, "y": 53},
+ {"flags": 4, "matrix": [0, 2], "x": 103, "y": 53},
+ {"flags": 4, "matrix": [0, 1], "x": 103, "y": 64},
+ {"flags": 4, "matrix": [0, 7], "x": 69, "y": 53},
+ {"flags": 4, "matrix": [0, 6], "x": 69, "y": 64},
+ {"flags": 4, "matrix": [0, 5], "x": 86, "y": 64},
+
+
+ {"flags": 4, "matrix": [10, 0], "x": 138, "y": 32},
+ {"flags": 4, "matrix": [9, 0], "x": 138, "y": 43},
+ {"flags": 4, "matrix": [13, 0], "x": 138, "y": 0},
+ {"flags": 4, "matrix": [12, 0], "x": 138, "y": 11},
+ {"flags": 4, "matrix": [11, 0], "x": 138, "y": 21},
+
+ {"flags": 4, "matrix": [10, 1], "x": 155, "y": 32},
+ {"flags": 4, "matrix": [9, 1], "x": 155, "y": 43},
+ {"flags": 4, "matrix": [13, 1], "x": 155, "y": 0},
+ {"flags": 4, "matrix": [12, 1], "x": 155, "y": 11},
+ {"flags": 4, "matrix": [11, 1], "x": 155, "y": 21},
+
+ {"flags": 4, "matrix": [10, 2], "x": 172, "y": 32},
+ {"flags": 4, "matrix": [9, 2], "x": 172, "y": 43},
+ {"flags": 4, "matrix": [8, 2], "x": 172, "y": 53},
+ {"flags": 4, "matrix": [13, 2], "x": 172, "y": 0},
+ {"flags": 4, "matrix": [12, 2], "x": 172, "y": 11},
+ {"flags": 4, "matrix": [11, 2], "x": 172, "y": 21},
+
+ {"flags": 4, "matrix": [10, 3], "x": 190, "y": 32},
+ {"flags": 4, "matrix": [9, 3], "x": 190, "y": 43},
+ {"flags": 4, "matrix": [8, 3], "x": 190, "y": 53},
+ {"flags": 4, "matrix": [13, 3], "x": 190, "y": 0},
+ {"flags": 4, "matrix": [12, 3], "x": 190, "y": 11},
+ {"flags": 4, "matrix": [11, 3], "x": 190, "y": 21},
+
+ {"flags": 4, "matrix": [10, 4], "x": 207, "y": 32},
+ {"flags": 4, "matrix": [9, 4], "x": 207, "y": 43},
+ {"flags": 4, "matrix": [8, 4], "x": 207, "y": 53},
+ {"flags": 4, "matrix": [13, 4], "x": 207, "y": 0},
+ {"flags": 4, "matrix": [12, 4], "x": 207, "y": 11},
+ {"flags": 4, "matrix": [11, 4], "x": 207, "y": 21},
+
+ {"flags": 4, "matrix": [10, 5], "x": 224, "y": 32},
+ {"flags": 4, "matrix": [9, 5], "x": 224, "y": 43},
+ {"flags": 4, "matrix": [8, 5], "x": 224, "y": 53},
+ {"flags": 4, "matrix": [13, 5], "x": 224, "y": 0},
+ {"flags": 4, "matrix": [12, 5], "x": 224, "y": 11},
+ {"flags": 4, "matrix": [11, 5], "x": 224, "y": 21},
+
+ {"flags": 4, "matrix": [7, 3], "x": 138, "y": 53},
+ {"flags": 4, "matrix": [7, 2], "x": 121, "y": 53},
+ {"flags": 4, "matrix": [7, 1], "x": 121, "y": 64},
+ {"flags": 4, "matrix": [7, 7], "x": 138, "y": 64},
+ {"flags": 4, "matrix": [7, 6], "x": 155, "y": 64},
+ {"flags": 4, "matrix": [7, 5], "x": 155, "y": 53}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_manuform_fun": {
+ "layout": [
+ { "matrix": [6, 5], "x": 0, "y": 0 },
+ { "matrix": [6, 4], "x": 1, "y": 0 },
+ { "matrix": [6, 3], "x": 2, "y": 0 },
+ { "matrix": [6, 2], "x": 3, "y": 0 },
+ { "matrix": [6, 1], "x": 4, "y": 0 },
+ { "matrix": [6, 0], "x": 5, "y": 0 },
+ { "matrix": [13, 0], "x": 11.5, "y": 0 },
+ { "matrix": [13, 1], "x": 12.5, "y": 0 },
+ { "matrix": [13, 2], "x": 13.5, "y": 0 },
+ { "matrix": [13, 3], "x": 14.5, "y": 0 },
+ { "matrix": [13, 4], "x": 15.5, "y": 0 },
+ { "matrix": [13, 5], "x": 16.5, "y": 0 },
+ { "matrix": [5, 5], "x": 0, "y": 0 },
+ { "matrix": [5, 4], "x": 1, "y": 0 },
+ { "matrix": [5, 3], "x": 2, "y": 0 },
+ { "matrix": [5, 2], "x": 3, "y": 0 },
+ { "matrix": [5, 1], "x": 4, "y": 0 },
+ { "matrix": [5, 0], "x": 5, "y": 0 },
+ { "matrix": [12, 0], "x": 11.5, "y": 0 },
+ { "matrix": [12, 1], "x": 12.5, "y": 0 },
+ { "matrix": [12, 2], "x": 13.5, "y": 0 },
+ { "matrix": [12, 3], "x": 14.5, "y": 0 },
+ { "matrix": [12, 4], "x": 15.5, "y": 0 },
+ { "matrix": [12, 5], "x": 16.5, "y": 0 },
+ { "matrix": [4, 5], "x": 0, "y": 1 },
+ { "matrix": [4, 4], "x": 1, "y": 1 },
+ { "matrix": [4, 3], "x": 2, "y": 1 },
+ { "matrix": [4, 2], "x": 3, "y": 1 },
+ { "matrix": [4, 1], "x": 4, "y": 1 },
+ { "matrix": [4, 0], "x": 5, "y": 1 },
+ { "matrix": [11, 0], "x": 10.5, "y": 1 },
+ { "matrix": [11, 1], "x": 11.5, "y": 1 },
+ { "matrix": [11, 2], "x": 12.5, "y": 1 },
+ { "matrix": [11, 3], "x": 13.5, "y": 1 },
+ { "matrix": [11, 4], "x": 14.5, "y": 1 },
+ { "matrix": [11, 5], "x": 15.5, "y": 1 },
+ { "matrix": [3, 5], "x": 0, "y": 2 },
+ { "matrix": [3, 4], "x": 1, "y": 2 },
+ { "matrix": [3, 3], "x": 2, "y": 2 },
+ { "matrix": [3, 2], "x": 3, "y": 2 },
+ { "matrix": [3, 1], "x": 4, "y": 2 },
+ { "matrix": [3, 0], "x": 5, "y": 2 },
+ { "matrix": [10, 0], "x": 10.5, "y": 2 },
+ { "matrix": [10, 1], "x": 11.5, "y": 2 },
+ { "matrix": [10, 2], "x": 12.5, "y": 2 },
+ { "matrix": [10, 3], "x": 13.5, "y": 2 },
+ { "matrix": [10, 4], "x": 14.5, "y": 2 },
+ { "matrix": [10, 5], "x": 15.5, "y": 2 },
+ { "matrix": [2, 5], "x": 0, "y": 3 },
+ { "matrix": [2, 4], "x": 1, "y": 3 },
+ { "matrix": [2, 3], "x": 2, "y": 3 },
+ { "matrix": [2, 2], "x": 3, "y": 3 },
+ { "matrix": [2, 1], "x": 4, "y": 3 },
+ { "matrix": [2, 0], "x": 5, "y": 3 },
+ { "matrix": [9, 0], "x": 10.5, "y": 3 },
+ { "matrix": [9, 1], "x": 11.5, "y": 3 },
+ { "matrix": [9, 2], "x": 12.5, "y": 3 },
+ { "matrix": [9, 3], "x": 13.5, "y": 3 },
+ { "matrix": [9, 4], "x": 14.5, "y": 3 },
+ { "matrix": [9, 5], "x": 15.5, "y": 3 },
+ { "matrix": [1, 5], "x": 0, "y": 3 },
+ { "matrix": [1, 4], "x": 1, "y": 3 },
+ { "matrix": [1, 3], "x": 2, "y": 3 },
+ { "matrix": [1, 2], "x": 3, "y": 3 },
+ { "matrix": [0, 7], "x": 4.5, "y": 3.5 },
+ { "matrix": [0, 3], "x": 5.5, "y": 3.5 },
+ { "matrix": [0, 2], "x": 6.5, "y": 4 },
+ { "matrix": [7, 2], "x": 10, "y": 4 },
+ { "matrix": [7, 3], "x": 11, "y": 3.5 },
+ { "matrix": [7, 7], "x": 12, "y": 3.5 },
+ { "matrix": [8, 2], "x": 13.5, "y": 3 },
+ { "matrix": [8, 3], "x": 14.5, "y": 3 },
+ { "matrix": [8, 4], "x": 15.5, "y": 3 },
+ { "matrix": [8, 5], "x": 16.5, "y": 3 },
+ { "matrix": [0, 6], "x": 6.5, "y": 5 },
+ { "matrix": [0, 5], "x": 7.5, "y": 5 },
+ { "matrix": [0, 1], "x": 7.5, "y": 4 },
+ { "matrix": [7, 1], "x": 9, "y": 4 },
+ { "matrix": [7, 5], "x": 9, "y": 5 },
+ { "matrix": [7, 6], "x": 10, "y": 5 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/cyboard/dactyl/manuform_function_row/keymaps/vial/keymap.c b/keyboards/cyboard/dactyl/manuform_function_row/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..f9128d49aee
--- /dev/null
+++ b/keyboards/cyboard/dactyl/manuform_function_row/keymaps/vial/keymap.c
@@ -0,0 +1,108 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_manuform_fun(
+ 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_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_UP, KC_DOWN, KC_LGUI, KC_LALT, KC_LGUI, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, MO(1), KC_LBRC, KC_RBRC, KC_LEFT, KC_RIGHT,
+ KC_HOME, KC_END, KC_ESC, KC_GRAVE, KC_CAPS, KC_APP
+ ),
+
+ [1] = LAYOUT_manuform_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_manuform_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_manuform_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_manuform_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_manuform_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_manuform_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_manuform_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_manuform_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_manuform_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/dactyl/manuform_function_row/keymaps/vial/rules.mk b/keyboards/cyboard/dactyl/manuform_function_row/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/dactyl/manuform_function_row/keymaps/vial/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/dactyl/manuform_function_row/keymaps/vial/vial.json b/keyboards/cyboard/dactyl/manuform_function_row/keymaps/vial/vial.json
new file mode 100644
index 00000000000..775052d983e
--- /dev/null
+++ b/keyboards/cyboard/dactyl/manuform_function_row/keymaps/vial/vial.json
@@ -0,0 +1,151 @@
+{
+ "name": "Dactyl",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 8
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "6,5",
+ "6,4",
+ "6,3",
+ "6,2",
+ "6,1",
+ "6,0",
+ {
+ "x": 5.5
+ },
+ "13,0",
+ "13,1",
+ "13,2",
+ "13,3",
+ "13,4",
+ "13,5"
+ ],
+ [
+ "5,5",
+ "5,4",
+ "5,3",
+ "5,2",
+ "5,1",
+ "5,0",
+ {
+ "x": 5.5
+ },
+ "12,0",
+ "12,1",
+ "12,2",
+ "12,3",
+ "12,4",
+ "12,5"
+ ],
+ [
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ "4,0",
+ {
+ "x": 5.5
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5"
+ ],
+ [
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ "3,0",
+ {
+ "x": 5.5
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5"
+ ],
+ [
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ "2,0",
+ {
+ "x": 5.5
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5"
+ ],
+ [
+ "1,5",
+ "1,4",
+ "1,3",
+ "1,2",
+ {
+ "x": 9.5
+ },
+ "8,2",
+ "8,3",
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4.5
+ },
+ "0,7",
+ "0,3",
+ {
+ "x": 4.5
+ },
+ "7,3",
+ "7,7"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 6.5
+ },
+ "0,2",
+ "0,1",
+ {
+ "x": 0.5
+ },
+ "7,1",
+ "7,2"
+ ],
+ [
+ {
+ "x": 6.5
+ },
+ "0,6",
+ "0,5",
+ {
+ "x": 0.5
+ },
+ "7,5",
+ "7,6"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/dactyl/manuform_function_row/rules.mk b/keyboards/cyboard/dactyl/manuform_function_row/rules.mk
new file mode 100644
index 00000000000..e02abfc9b0e
--- /dev/null
+++ b/keyboards/cyboard/dactyl/manuform_function_row/rules.mk
@@ -0,0 +1 @@
+
diff --git a/keyboards/cyboard/dactyl/manuform_letters_only/info.json b/keyboards/cyboard/dactyl/manuform_letters_only/info.json
new file mode 100644
index 00000000000..bc3f0bca953
--- /dev/null
+++ b/keyboards/cyboard/dactyl/manuform_letters_only/info.json
@@ -0,0 +1,139 @@
+{
+ "rgb_matrix": {
+ "split_count": [28, 28],
+ "layout": [
+ {"flags": 4, "matrix": [3, 0], "x": 86, "y": 32},
+ {"flags": 4, "matrix": [2, 0], "x": 86, "y": 43},
+ {"flags": 4, "matrix": [4, 0], "x": 86, "y": 21},
+
+ {"flags": 4, "matrix": [3, 1], "x": 69, "y": 32},
+ {"flags": 4, "matrix": [2, 1], "x": 69, "y": 43},
+ {"flags": 4, "matrix": [4, 1], "x": 69, "y": 21},
+
+ {"flags": 4, "matrix": [3, 2], "x": 52, "y": 32},
+ {"flags": 4, "matrix": [2, 2], "x": 52, "y": 43},
+ {"flags": 4, "matrix": [1, 2], "x": 52, "y": 53},
+ {"flags": 4, "matrix": [4, 2], "x": 52, "y": 21},
+
+ {"flags": 4, "matrix": [3, 3], "x": 34, "y": 32},
+ {"flags": 4, "matrix": [2, 3], "x": 34, "y": 43},
+ {"flags": 4, "matrix": [1, 3], "x": 34, "y": 53},
+ {"flags": 4, "matrix": [4, 3], "x": 34, "y": 21},
+
+ {"flags": 4, "matrix": [3, 4], "x": 17, "y": 32},
+ {"flags": 4, "matrix": [2, 4], "x": 17, "y": 43},
+ {"flags": 4, "matrix": [1, 4], "x": 17, "y": 53},
+ {"flags": 4, "matrix": [4, 4], "x": 17, "y": 21},
+
+ {"flags": 4, "matrix": [3, 5], "x": 0, "y": 32},
+ {"flags": 4, "matrix": [2, 5], "x": 0, "y": 43},
+ {"flags": 4, "matrix": [1, 5], "x": 0, "y": 53},
+ {"flags": 4, "matrix": [4, 5], "x": 0, "y": 21},
+
+ {"flags": 4, "matrix": [0, 3], "x": 86, "y": 53},
+ {"flags": 4, "matrix": [0, 2], "x": 103, "y": 53},
+ {"flags": 4, "matrix": [0, 1], "x": 103, "y": 64},
+ {"flags": 4, "matrix": [0, 7], "x": 69, "y": 53},
+ {"flags": 4, "matrix": [0, 6], "x": 69, "y": 64},
+ {"flags": 4, "matrix": [0, 5], "x": 86, "y": 64},
+
+
+ {"flags": 4, "matrix": [10, 0], "x": 138, "y": 32},
+ {"flags": 4, "matrix": [9, 0], "x": 138, "y": 43},
+ {"flags": 4, "matrix": [11, 0], "x": 138, "y": 21},
+
+ {"flags": 4, "matrix": [10, 1], "x": 155, "y": 32},
+ {"flags": 4, "matrix": [9, 1], "x": 155, "y": 43},
+ {"flags": 4, "matrix": [11, 1], "x": 155, "y": 21},
+
+ {"flags": 4, "matrix": [10, 2], "x": 172, "y": 32},
+ {"flags": 4, "matrix": [9, 2], "x": 172, "y": 43},
+ {"flags": 4, "matrix": [8, 2], "x": 172, "y": 53},
+ {"flags": 4, "matrix": [11, 2], "x": 172, "y": 21},
+
+ {"flags": 4, "matrix": [10, 3], "x": 190, "y": 32},
+ {"flags": 4, "matrix": [9, 3], "x": 190, "y": 43},
+ {"flags": 4, "matrix": [8, 3], "x": 190, "y": 53},
+ {"flags": 4, "matrix": [11, 3], "x": 190, "y": 21},
+
+ {"flags": 4, "matrix": [10, 4], "x": 207, "y": 32},
+ {"flags": 4, "matrix": [9, 4], "x": 207, "y": 43},
+ {"flags": 4, "matrix": [8, 4], "x": 207, "y": 53},
+ {"flags": 4, "matrix": [11, 4], "x": 207, "y": 21},
+
+ {"flags": 4, "matrix": [10, 5], "x": 224, "y": 32},
+ {"flags": 4, "matrix": [9, 5], "x": 224, "y": 43},
+ {"flags": 4, "matrix": [8, 5], "x": 224, "y": 53},
+ {"flags": 4, "matrix": [11, 5], "x": 224, "y": 21},
+
+ {"flags": 4, "matrix": [7, 3], "x": 138, "y": 53},
+ {"flags": 4, "matrix": [7, 2], "x": 121, "y": 53},
+ {"flags": 4, "matrix": [7, 1], "x": 121, "y": 64},
+ {"flags": 4, "matrix": [7, 7], "x": 138, "y": 64},
+ {"flags": 4, "matrix": [7, 6], "x": 155, "y": 64},
+ {"flags": 4, "matrix": [7, 5], "x": 155, "y": 53}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_manuform_let": {
+ "layout": [
+ { "matrix": [4, 5], "x": 0, "y": 0 },
+ { "matrix": [4, 4], "x": 1, "y": 0 },
+ { "matrix": [4, 3], "x": 2, "y": 0 },
+ { "matrix": [4, 2], "x": 3, "y": 0 },
+ { "matrix": [4, 1], "x": 4, "y": 0 },
+ { "matrix": [4, 0], "x": 5, "y": 0 },
+ { "matrix": [11, 0], "x": 10.5, "y": 0 },
+ { "matrix": [11, 1], "x": 11.5, "y": 0 },
+ { "matrix": [11, 2], "x": 12.5, "y": 0 },
+ { "matrix": [11, 3], "x": 13.5, "y": 0 },
+ { "matrix": [11, 4], "x": 14.5, "y": 0 },
+ { "matrix": [11, 5], "x": 15.5, "y": 0 },
+ { "matrix": [3, 5], "x": 0, "y": 1 },
+ { "matrix": [3, 4], "x": 1, "y": 1 },
+ { "matrix": [3, 3], "x": 2, "y": 1 },
+ { "matrix": [3, 2], "x": 3, "y": 1 },
+ { "matrix": [3, 1], "x": 4, "y": 1 },
+ { "matrix": [3, 0], "x": 5, "y": 1 },
+ { "matrix": [10, 0], "x": 10.5, "y": 1 },
+ { "matrix": [10, 1], "x": 11.5, "y": 1 },
+ { "matrix": [10, 2], "x": 12.5, "y": 1 },
+ { "matrix": [10, 3], "x": 13.5, "y": 1 },
+ { "matrix": [10, 4], "x": 14.5, "y": 1 },
+ { "matrix": [10, 5], "x": 15.5, "y": 1 },
+ { "matrix": [2, 5], "x": 0, "y": 2 },
+ { "matrix": [2, 4], "x": 1, "y": 2 },
+ { "matrix": [2, 3], "x": 2, "y": 2 },
+ { "matrix": [2, 2], "x": 3, "y": 2 },
+ { "matrix": [2, 1], "x": 4, "y": 2 },
+ { "matrix": [2, 0], "x": 5, "y": 2 },
+ { "matrix": [9, 0], "x": 10.5, "y": 2 },
+ { "matrix": [9, 1], "x": 11.5, "y": 2 },
+ { "matrix": [9, 2], "x": 12.5, "y": 2 },
+ { "matrix": [9, 3], "x": 13.5, "y": 2 },
+ { "matrix": [9, 4], "x": 14.5, "y": 2 },
+ { "matrix": [9, 5], "x": 15.5, "y": 2 },
+ { "matrix": [1, 5], "x": 0, "y": 2 },
+ { "matrix": [1, 4], "x": 1, "y": 2 },
+ { "matrix": [1, 3], "x": 2, "y": 2 },
+ { "matrix": [1, 2], "x": 3, "y": 2 },
+ { "matrix": [0, 7], "x": 4.5, "y": 2.5 },
+ { "matrix": [0, 3], "x": 5.5, "y": 2.5 },
+ { "matrix": [0, 2], "x": 6.5, "y": 3 },
+ { "matrix": [7, 2], "x": 10, "y": 3 },
+ { "matrix": [7, 3], "x": 11, "y": 2.5 },
+ { "matrix": [7, 7], "x": 12, "y": 2.5 },
+ { "matrix": [8, 2], "x": 13.5, "y": 2 },
+ { "matrix": [8, 3], "x": 14.5, "y": 2 },
+ { "matrix": [8, 4], "x": 15.5, "y": 2 },
+ { "matrix": [8, 5], "x": 16.5, "y": 2 },
+ { "matrix": [0, 6], "x": 6.5, "y": 4 },
+ { "matrix": [0, 5], "x": 7.5, "y": 4 },
+ { "matrix": [0, 1], "x": 7.5, "y": 3 },
+ { "matrix": [7, 1], "x": 9, "y": 3 },
+ { "matrix": [7, 5], "x": 9, "y": 4 },
+ { "matrix": [7, 6], "x": 10, "y": 4 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/cyboard/dactyl/manuform_letters_only/keymaps/vial/keymap.c b/keyboards/cyboard/dactyl/manuform_letters_only/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..9454d9a3141
--- /dev/null
+++ b/keyboards/cyboard/dactyl/manuform_letters_only/keymaps/vial/keymap.c
@@ -0,0 +1,88 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_manuform_let(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_UP, KC_DOWN, KC_LGUI, KC_LALT, KC_LGUI, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, MO(1), KC_LBRC, KC_RBRC, KC_LEFT, KC_RIGHT,
+ KC_HOME, KC_END, KC_ESC, KC_GRAVE, KC_CAPS, KC_APP
+ ),
+
+ [1] = LAYOUT_manuform_let(
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_manuform_let(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_manuform_let(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_manuform_let(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_manuform_let(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_manuform_let(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_manuform_let(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_manuform_let(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_manuform_let(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/dactyl/manuform_letters_only/keymaps/vial/rules.mk b/keyboards/cyboard/dactyl/manuform_letters_only/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/dactyl/manuform_letters_only/keymaps/vial/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/dactyl/manuform_letters_only/keymaps/vial/vial.json b/keyboards/cyboard/dactyl/manuform_letters_only/keymaps/vial/vial.json
new file mode 100644
index 00000000000..e67c6d8fcf0
--- /dev/null
+++ b/keyboards/cyboard/dactyl/manuform_letters_only/keymaps/vial/vial.json
@@ -0,0 +1,117 @@
+{
+ "name": "Dactyl",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 8
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ "4,0",
+ {
+ "x": 5.5
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5"
+ ],
+ [
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ "3,0",
+ {
+ "x": 5.5
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5"
+ ],
+ [
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ "2,0",
+ {
+ "x": 5.5
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5"
+ ],
+ [
+ "1,5",
+ "1,4",
+ "1,3",
+ "1,2",
+ {
+ "x": 9.5
+ },
+ "8,2",
+ "8,3",
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4.5
+ },
+ "0,7",
+ "0,3",
+ {
+ "x": 4.5
+ },
+ "7,3",
+ "7,7"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 6.5
+ },
+ "0,2",
+ "0,1",
+ {
+ "x": 0.5
+ },
+ "7,1",
+ "7,2"
+ ],
+ [
+ {
+ "x": 6.5
+ },
+ "0,6",
+ "0,5",
+ {
+ "x": 0.5
+ },
+ "7,5",
+ "7,6"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/dactyl/manuform_letters_only/rules.mk b/keyboards/cyboard/dactyl/manuform_letters_only/rules.mk
new file mode 100644
index 00000000000..e02abfc9b0e
--- /dev/null
+++ b/keyboards/cyboard/dactyl/manuform_letters_only/rules.mk
@@ -0,0 +1 @@
+
diff --git a/keyboards/cyboard/dactyl/manuform_number_row/info.json b/keyboards/cyboard/dactyl/manuform_number_row/info.json
new file mode 100644
index 00000000000..ef1730fb5f0
--- /dev/null
+++ b/keyboards/cyboard/dactyl/manuform_number_row/info.json
@@ -0,0 +1,163 @@
+{
+ "rgb_matrix": {
+ "split_count": [34, 34],
+ "layout": [
+ {"flags": 4, "matrix": [3, 0], "x": 86, "y": 32},
+ {"flags": 4, "matrix": [2, 0], "x": 86, "y": 43},
+ {"flags": 4, "matrix": [5, 0], "x": 86, "y": 11},
+ {"flags": 4, "matrix": [4, 0], "x": 86, "y": 21},
+
+ {"flags": 4, "matrix": [3, 1], "x": 69, "y": 32},
+ {"flags": 4, "matrix": [2, 1], "x": 69, "y": 43},
+ {"flags": 4, "matrix": [5, 1], "x": 69, "y": 11},
+ {"flags": 4, "matrix": [4, 1], "x": 69, "y": 21},
+
+ {"flags": 4, "matrix": [3, 2], "x": 52, "y": 32},
+ {"flags": 4, "matrix": [2, 2], "x": 52, "y": 43},
+ {"flags": 4, "matrix": [1, 2], "x": 52, "y": 53},
+ {"flags": 4, "matrix": [5, 2], "x": 52, "y": 11},
+ {"flags": 4, "matrix": [4, 2], "x": 52, "y": 21},
+
+ {"flags": 4, "matrix": [3, 3], "x": 34, "y": 32},
+ {"flags": 4, "matrix": [2, 3], "x": 34, "y": 43},
+ {"flags": 4, "matrix": [1, 3], "x": 34, "y": 53},
+ {"flags": 4, "matrix": [5, 3], "x": 34, "y": 11},
+ {"flags": 4, "matrix": [4, 3], "x": 34, "y": 21},
+
+ {"flags": 4, "matrix": [3, 4], "x": 17, "y": 32},
+ {"flags": 4, "matrix": [2, 4], "x": 17, "y": 43},
+ {"flags": 4, "matrix": [1, 4], "x": 17, "y": 53},
+ {"flags": 4, "matrix": [5, 4], "x": 17, "y": 11},
+ {"flags": 4, "matrix": [4, 4], "x": 17, "y": 21},
+
+ {"flags": 4, "matrix": [3, 5], "x": 0, "y": 32},
+ {"flags": 4, "matrix": [2, 5], "x": 0, "y": 43},
+ {"flags": 4, "matrix": [1, 5], "x": 0, "y": 53},
+ {"flags": 4, "matrix": [5, 5], "x": 0, "y": 11},
+ {"flags": 4, "matrix": [4, 5], "x": 0, "y": 21},
+
+ {"flags": 4, "matrix": [0, 3], "x": 86, "y": 53},
+ {"flags": 4, "matrix": [0, 2], "x": 103, "y": 53},
+ {"flags": 4, "matrix": [0, 1], "x": 103, "y": 64},
+ {"flags": 4, "matrix": [0, 7], "x": 69, "y": 53},
+ {"flags": 4, "matrix": [0, 6], "x": 69, "y": 64},
+ {"flags": 4, "matrix": [0, 5], "x": 86, "y": 64},
+
+
+ {"flags": 4, "matrix": [10, 0], "x": 138, "y": 32},
+ {"flags": 4, "matrix": [9, 0], "x": 138, "y": 43},
+ {"flags": 4, "matrix": [12, 0], "x": 138, "y": 11},
+ {"flags": 4, "matrix": [11, 0], "x": 138, "y": 21},
+
+ {"flags": 4, "matrix": [10, 1], "x": 155, "y": 32},
+ {"flags": 4, "matrix": [9, 1], "x": 155, "y": 43},
+ {"flags": 4, "matrix": [12, 1], "x": 155, "y": 11},
+ {"flags": 4, "matrix": [11, 1], "x": 155, "y": 21},
+
+ {"flags": 4, "matrix": [10, 2], "x": 172, "y": 32},
+ {"flags": 4, "matrix": [9, 2], "x": 172, "y": 43},
+ {"flags": 4, "matrix": [8, 2], "x": 172, "y": 53},
+ {"flags": 4, "matrix": [12, 2], "x": 172, "y": 11},
+ {"flags": 4, "matrix": [11, 2], "x": 172, "y": 21},
+
+ {"flags": 4, "matrix": [10, 3], "x": 190, "y": 32},
+ {"flags": 4, "matrix": [9, 3], "x": 190, "y": 43},
+ {"flags": 4, "matrix": [8, 3], "x": 190, "y": 53},
+ {"flags": 4, "matrix": [12, 3], "x": 190, "y": 11},
+ {"flags": 4, "matrix": [11, 3], "x": 190, "y": 21},
+
+ {"flags": 4, "matrix": [10, 4], "x": 207, "y": 32},
+ {"flags": 4, "matrix": [9, 4], "x": 207, "y": 43},
+ {"flags": 4, "matrix": [8, 4], "x": 207, "y": 53},
+ {"flags": 4, "matrix": [12, 4], "x": 207, "y": 11},
+ {"flags": 4, "matrix": [11, 4], "x": 207, "y": 21},
+
+ {"flags": 4, "matrix": [10, 5], "x": 224, "y": 32},
+ {"flags": 4, "matrix": [9, 5], "x": 224, "y": 43},
+ {"flags": 4, "matrix": [8, 5], "x": 224, "y": 53},
+ {"flags": 4, "matrix": [12, 5], "x": 224, "y": 11},
+ {"flags": 4, "matrix": [11, 5], "x": 224, "y": 21},
+
+ {"flags": 4, "matrix": [7, 3], "x": 138, "y": 53},
+ {"flags": 4, "matrix": [7, 2], "x": 121, "y": 53},
+ {"flags": 4, "matrix": [7, 1], "x": 121, "y": 64},
+ {"flags": 4, "matrix": [7, 7], "x": 138, "y": 64},
+ {"flags": 4, "matrix": [7, 6], "x": 155, "y": 64},
+ {"flags": 4, "matrix": [7, 5], "x": 155, "y": 53}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_manuform_num": {
+ "layout": [
+ { "matrix": [5, 5], "x": 0, "y": 0 },
+ { "matrix": [5, 4], "x": 1, "y": 0 },
+ { "matrix": [5, 3], "x": 2, "y": 0 },
+ { "matrix": [5, 2], "x": 3, "y": 0 },
+ { "matrix": [5, 1], "x": 4, "y": 0 },
+ { "matrix": [5, 0], "x": 5, "y": 0 },
+ { "matrix": [12, 0], "x": 11.5, "y": 0 },
+ { "matrix": [12, 1], "x": 12.5, "y": 0 },
+ { "matrix": [12, 2], "x": 13.5, "y": 0 },
+ { "matrix": [12, 3], "x": 14.5, "y": 0 },
+ { "matrix": [12, 4], "x": 15.5, "y": 0 },
+ { "matrix": [12, 5], "x": 16.5, "y": 0 },
+ { "matrix": [4, 5], "x": 0, "y": 1 },
+ { "matrix": [4, 4], "x": 1, "y": 1 },
+ { "matrix": [4, 3], "x": 2, "y": 1 },
+ { "matrix": [4, 2], "x": 3, "y": 1 },
+ { "matrix": [4, 1], "x": 4, "y": 1 },
+ { "matrix": [4, 0], "x": 5, "y": 1 },
+ { "matrix": [11, 0], "x": 10.5, "y": 1 },
+ { "matrix": [11, 1], "x": 11.5, "y": 1 },
+ { "matrix": [11, 2], "x": 12.5, "y": 1 },
+ { "matrix": [11, 3], "x": 13.5, "y": 1 },
+ { "matrix": [11, 4], "x": 14.5, "y": 1 },
+ { "matrix": [11, 5], "x": 15.5, "y": 1 },
+ { "matrix": [3, 5], "x": 0, "y": 2 },
+ { "matrix": [3, 4], "x": 1, "y": 2 },
+ { "matrix": [3, 3], "x": 2, "y": 2 },
+ { "matrix": [3, 2], "x": 3, "y": 2 },
+ { "matrix": [3, 1], "x": 4, "y": 2 },
+ { "matrix": [3, 0], "x": 5, "y": 2 },
+ { "matrix": [10, 0], "x": 10.5, "y": 2 },
+ { "matrix": [10, 1], "x": 11.5, "y": 2 },
+ { "matrix": [10, 2], "x": 12.5, "y": 2 },
+ { "matrix": [10, 3], "x": 13.5, "y": 2 },
+ { "matrix": [10, 4], "x": 14.5, "y": 2 },
+ { "matrix": [10, 5], "x": 15.5, "y": 2 },
+ { "matrix": [2, 5], "x": 0, "y": 3 },
+ { "matrix": [2, 4], "x": 1, "y": 3 },
+ { "matrix": [2, 3], "x": 2, "y": 3 },
+ { "matrix": [2, 2], "x": 3, "y": 3 },
+ { "matrix": [2, 1], "x": 4, "y": 3 },
+ { "matrix": [2, 0], "x": 5, "y": 3 },
+ { "matrix": [9, 0], "x": 10.5, "y": 3 },
+ { "matrix": [9, 1], "x": 11.5, "y": 3 },
+ { "matrix": [9, 2], "x": 12.5, "y": 3 },
+ { "matrix": [9, 3], "x": 13.5, "y": 3 },
+ { "matrix": [9, 4], "x": 14.5, "y": 3 },
+ { "matrix": [9, 5], "x": 15.5, "y": 3 },
+ { "matrix": [1, 5], "x": 0, "y": 3 },
+ { "matrix": [1, 4], "x": 1, "y": 3 },
+ { "matrix": [1, 3], "x": 2, "y": 3 },
+ { "matrix": [1, 2], "x": 3, "y": 3 },
+ { "matrix": [0, 7], "x": 4.5, "y": 3.5 },
+ { "matrix": [0, 3], "x": 5.5, "y": 3.5 },
+ { "matrix": [0, 2], "x": 6.5, "y": 4 },
+ { "matrix": [7, 2], "x": 10, "y": 4 },
+ { "matrix": [7, 3], "x": 11, "y": 3.5 },
+ { "matrix": [7, 7], "x": 12, "y": 3.5 },
+ { "matrix": [8, 2], "x": 13.5, "y": 3 },
+ { "matrix": [8, 3], "x": 14.5, "y": 3 },
+ { "matrix": [8, 4], "x": 15.5, "y": 3 },
+ { "matrix": [8, 5], "x": 16.5, "y": 3 },
+ { "matrix": [0, 6], "x": 6.5, "y": 5 },
+ { "matrix": [0, 5], "x": 7.5, "y": 5 },
+ { "matrix": [0, 1], "x": 7.5, "y": 4 },
+ { "matrix": [7, 1], "x": 9, "y": 4 },
+ { "matrix": [7, 5], "x": 9, "y": 5 },
+ { "matrix": [7, 6], "x": 10, "y": 5 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/cyboard/dactyl/manuform_number_row/keymaps/vial/keymap.c b/keyboards/cyboard/dactyl/manuform_number_row/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..ce3f29661ab
--- /dev/null
+++ b/keyboards/cyboard/dactyl/manuform_number_row/keymaps/vial/keymap.c
@@ -0,0 +1,98 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_manuform_num(
+ KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_UP, KC_DOWN, KC_LGUI, KC_LALT, KC_LGUI, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, MO(1), KC_LBRC, KC_RBRC, KC_LEFT, KC_RIGHT,
+ KC_HOME, KC_END, KC_ESC, KC_GRAVE, KC_CAPS, KC_APP
+ ),
+
+ [1] = LAYOUT_manuform_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_manuform_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_manuform_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_manuform_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_manuform_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_manuform_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_manuform_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_manuform_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_manuform_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/dactyl/manuform_number_row/keymaps/vial/rules.mk b/keyboards/cyboard/dactyl/manuform_number_row/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/dactyl/manuform_number_row/keymaps/vial/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/dactyl/manuform_number_row/keymaps/vial/vial.json b/keyboards/cyboard/dactyl/manuform_number_row/keymaps/vial/vial.json
new file mode 100644
index 00000000000..884325f5462
--- /dev/null
+++ b/keyboards/cyboard/dactyl/manuform_number_row/keymaps/vial/vial.json
@@ -0,0 +1,134 @@
+{
+ "name": "Dactyl",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 8
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "5,5",
+ "5,4",
+ "5,3",
+ "5,2",
+ "5,1",
+ "5,0",
+ {
+ "x": 5.5
+ },
+ "12,0",
+ "12,1",
+ "12,2",
+ "12,3",
+ "12,4",
+ "12,5"
+ ],
+ [
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ "4,0",
+ {
+ "x": 5.5
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5"
+ ],
+ [
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ "3,0",
+ {
+ "x": 5.5
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5"
+ ],
+ [
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ "2,0",
+ {
+ "x": 5.5
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5"
+ ],
+ [
+ "1,5",
+ "1,4",
+ "1,3",
+ "1,2",
+ {
+ "x": 9.5
+ },
+ "8,2",
+ "8,3",
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4.5
+ },
+ "0,7",
+ "0,3",
+ {
+ "x": 4.5
+ },
+ "7,3",
+ "7,7"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 6.5
+ },
+ "0,2",
+ "0,1",
+ {
+ "x": 0.5
+ },
+ "7,1",
+ "7,2"
+ ],
+ [
+ {
+ "x": 6.5
+ },
+ "0,6",
+ "0,5",
+ {
+ "x": 0.5
+ },
+ "7,5",
+ "7,6"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/dactyl/manuform_number_row/rules.mk b/keyboards/cyboard/dactyl/manuform_number_row/rules.mk
new file mode 100644
index 00000000000..e02abfc9b0e
--- /dev/null
+++ b/keyboards/cyboard/dactyl/manuform_number_row/rules.mk
@@ -0,0 +1 @@
+
diff --git a/keyboards/cyboard/dactyl/manuform_number_row_noextrapinky/info.json b/keyboards/cyboard/dactyl/manuform_number_row_noextrapinky/info.json
new file mode 100644
index 00000000000..5e7c4f6349a
--- /dev/null
+++ b/keyboards/cyboard/dactyl/manuform_number_row_noextrapinky/info.json
@@ -0,0 +1,155 @@
+{
+ "rgb_matrix": {
+ "split_count": [32, 32],
+ "layout": [
+ {"flags": 4, "matrix": [3, 0], "x": 86, "y": 32},
+ {"flags": 4, "matrix": [2, 0], "x": 86, "y": 43},
+ {"flags": 4, "matrix": [5, 0], "x": 86, "y": 11},
+ {"flags": 4, "matrix": [4, 0], "x": 86, "y": 21},
+
+ {"flags": 4, "matrix": [3, 1], "x": 69, "y": 32},
+ {"flags": 4, "matrix": [2, 1], "x": 69, "y": 43},
+ {"flags": 4, "matrix": [5, 1], "x": 69, "y": 11},
+ {"flags": 4, "matrix": [4, 1], "x": 69, "y": 21},
+
+ {"flags": 4, "matrix": [3, 2], "x": 52, "y": 32},
+ {"flags": 4, "matrix": [2, 2], "x": 52, "y": 43},
+ {"flags": 4, "matrix": [1, 2], "x": 52, "y": 53},
+ {"flags": 4, "matrix": [5, 2], "x": 52, "y": 11},
+ {"flags": 4, "matrix": [4, 2], "x": 52, "y": 21},
+
+ {"flags": 4, "matrix": [3, 3], "x": 34, "y": 32},
+ {"flags": 4, "matrix": [2, 3], "x": 34, "y": 43},
+ {"flags": 4, "matrix": [1, 3], "x": 34, "y": 53},
+ {"flags": 4, "matrix": [5, 3], "x": 34, "y": 11},
+ {"flags": 4, "matrix": [4, 3], "x": 34, "y": 21},
+
+ {"flags": 4, "matrix": [3, 4], "x": 17, "y": 32},
+ {"flags": 4, "matrix": [2, 4], "x": 17, "y": 43},
+ {"flags": 4, "matrix": [5, 4], "x": 17, "y": 11},
+ {"flags": 4, "matrix": [4, 4], "x": 17, "y": 21},
+
+ {"flags": 4, "matrix": [3, 5], "x": 0, "y": 32},
+ {"flags": 4, "matrix": [2, 5], "x": 0, "y": 43},
+ {"flags": 4, "matrix": [5, 5], "x": 0, "y": 11},
+ {"flags": 4, "matrix": [4, 5], "x": 0, "y": 21},
+
+ {"flags": 4, "matrix": [0, 3], "x": 86, "y": 53},
+ {"flags": 4, "matrix": [0, 2], "x": 103, "y": 53},
+ {"flags": 4, "matrix": [0, 1], "x": 103, "y": 64},
+ {"flags": 4, "matrix": [0, 7], "x": 69, "y": 53},
+ {"flags": 4, "matrix": [0, 6], "x": 69, "y": 64},
+ {"flags": 4, "matrix": [0, 5], "x": 86, "y": 64},
+
+
+ {"flags": 4, "matrix": [10, 0], "x": 138, "y": 32},
+ {"flags": 4, "matrix": [9, 0], "x": 138, "y": 43},
+ {"flags": 4, "matrix": [12, 0], "x": 138, "y": 11},
+ {"flags": 4, "matrix": [11, 0], "x": 138, "y": 21},
+
+ {"flags": 4, "matrix": [10, 1], "x": 155, "y": 32},
+ {"flags": 4, "matrix": [9, 1], "x": 155, "y": 43},
+ {"flags": 4, "matrix": [12, 1], "x": 155, "y": 11},
+ {"flags": 4, "matrix": [11, 1], "x": 155, "y": 21},
+
+ {"flags": 4, "matrix": [10, 2], "x": 172, "y": 32},
+ {"flags": 4, "matrix": [9, 2], "x": 172, "y": 43},
+ {"flags": 4, "matrix": [8, 2], "x": 172, "y": 53},
+ {"flags": 4, "matrix": [12, 2], "x": 172, "y": 11},
+ {"flags": 4, "matrix": [11, 2], "x": 172, "y": 21},
+
+ {"flags": 4, "matrix": [10, 3], "x": 190, "y": 32},
+ {"flags": 4, "matrix": [9, 3], "x": 190, "y": 43},
+ {"flags": 4, "matrix": [8, 3], "x": 190, "y": 53},
+ {"flags": 4, "matrix": [12, 3], "x": 190, "y": 11},
+ {"flags": 4, "matrix": [11, 3], "x": 190, "y": 21},
+
+ {"flags": 4, "matrix": [10, 4], "x": 207, "y": 32},
+ {"flags": 4, "matrix": [9, 4], "x": 207, "y": 43},
+ {"flags": 4, "matrix": [12, 4], "x": 207, "y": 11},
+ {"flags": 4, "matrix": [11, 4], "x": 207, "y": 21},
+
+ {"flags": 4, "matrix": [10, 5], "x": 224, "y": 32},
+ {"flags": 4, "matrix": [9, 5], "x": 224, "y": 43},
+ {"flags": 4, "matrix": [12, 5], "x": 224, "y": 11},
+ {"flags": 4, "matrix": [11, 5], "x": 224, "y": 21},
+
+ {"flags": 4, "matrix": [7, 3], "x": 138, "y": 53},
+ {"flags": 4, "matrix": [7, 2], "x": 121, "y": 53},
+ {"flags": 4, "matrix": [7, 1], "x": 121, "y": 64},
+ {"flags": 4, "matrix": [7, 7], "x": 138, "y": 64},
+ {"flags": 4, "matrix": [7, 6], "x": 155, "y": 64},
+ {"flags": 4, "matrix": [7, 5], "x": 155, "y": 53}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_manuform_num_noextrapinky": {
+ "layout": [
+ { "matrix": [5, 5], "x": 0, "y": 0 },
+ { "matrix": [5, 4], "x": 1, "y": 0 },
+ { "matrix": [5, 3], "x": 2, "y": 0 },
+ { "matrix": [5, 2], "x": 3, "y": 0 },
+ { "matrix": [5, 1], "x": 4, "y": 0 },
+ { "matrix": [5, 0], "x": 5, "y": 0 },
+ { "matrix": [12, 0], "x": 11.5, "y": 0 },
+ { "matrix": [12, 1], "x": 12.5, "y": 0 },
+ { "matrix": [12, 2], "x": 13.5, "y": 0 },
+ { "matrix": [12, 3], "x": 14.5, "y": 0 },
+ { "matrix": [12, 4], "x": 15.5, "y": 0 },
+ { "matrix": [12, 5], "x": 16.5, "y": 0 },
+ { "matrix": [4, 5], "x": 0, "y": 1 },
+ { "matrix": [4, 4], "x": 1, "y": 1 },
+ { "matrix": [4, 3], "x": 2, "y": 1 },
+ { "matrix": [4, 2], "x": 3, "y": 1 },
+ { "matrix": [4, 1], "x": 4, "y": 1 },
+ { "matrix": [4, 0], "x": 5, "y": 1 },
+ { "matrix": [11, 0], "x": 10.5, "y": 1 },
+ { "matrix": [11, 1], "x": 11.5, "y": 1 },
+ { "matrix": [11, 2], "x": 12.5, "y": 1 },
+ { "matrix": [11, 3], "x": 13.5, "y": 1 },
+ { "matrix": [11, 4], "x": 14.5, "y": 1 },
+ { "matrix": [11, 5], "x": 15.5, "y": 1 },
+ { "matrix": [3, 5], "x": 0, "y": 2 },
+ { "matrix": [3, 4], "x": 1, "y": 2 },
+ { "matrix": [3, 3], "x": 2, "y": 2 },
+ { "matrix": [3, 2], "x": 3, "y": 2 },
+ { "matrix": [3, 1], "x": 4, "y": 2 },
+ { "matrix": [3, 0], "x": 5, "y": 2 },
+ { "matrix": [10, 0], "x": 10.5, "y": 2 },
+ { "matrix": [10, 1], "x": 11.5, "y": 2 },
+ { "matrix": [10, 2], "x": 12.5, "y": 2 },
+ { "matrix": [10, 3], "x": 13.5, "y": 2 },
+ { "matrix": [10, 4], "x": 14.5, "y": 2 },
+ { "matrix": [10, 5], "x": 15.5, "y": 2 },
+ { "matrix": [2, 5], "x": 0, "y": 3 },
+ { "matrix": [2, 4], "x": 1, "y": 3 },
+ { "matrix": [2, 3], "x": 2, "y": 3 },
+ { "matrix": [2, 2], "x": 3, "y": 3 },
+ { "matrix": [2, 1], "x": 4, "y": 3 },
+ { "matrix": [2, 0], "x": 5, "y": 3 },
+ { "matrix": [9, 0], "x": 10.5, "y": 3 },
+ { "matrix": [9, 1], "x": 11.5, "y": 3 },
+ { "matrix": [9, 2], "x": 12.5, "y": 3 },
+ { "matrix": [9, 3], "x": 13.5, "y": 3 },
+ { "matrix": [9, 4], "x": 14.5, "y": 3 },
+ { "matrix": [9, 5], "x": 15.5, "y": 3 },
+ { "matrix": [1, 3], "x": 2, "y": 3 },
+ { "matrix": [1, 2], "x": 3, "y": 3 },
+ { "matrix": [0, 7], "x": 4.5, "y": 3.5 },
+ { "matrix": [0, 3], "x": 5.5, "y": 3.5 },
+ { "matrix": [0, 2], "x": 6.5, "y": 4 },
+ { "matrix": [7, 2], "x": 10, "y": 4 },
+ { "matrix": [7, 3], "x": 11, "y": 3.5 },
+ { "matrix": [7, 7], "x": 12, "y": 3.5 },
+ { "matrix": [8, 2], "x": 13.5, "y": 3 },
+ { "matrix": [8, 3], "x": 14.5, "y": 3 },
+ { "matrix": [0, 6], "x": 6.5, "y": 5 },
+ { "matrix": [0, 5], "x": 7.5, "y": 5 },
+ { "matrix": [0, 1], "x": 7.5, "y": 4 },
+ { "matrix": [7, 1], "x": 9, "y": 4 },
+ { "matrix": [7, 5], "x": 9, "y": 5 },
+ { "matrix": [7, 6], "x": 10, "y": 5 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/cyboard/dactyl/manuform_number_row_noextrapinky/keymaps/vial/keymap.c b/keyboards/cyboard/dactyl/manuform_number_row_noextrapinky/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..1eb27b16d8d
--- /dev/null
+++ b/keyboards/cyboard/dactyl/manuform_number_row_noextrapinky/keymaps/vial/keymap.c
@@ -0,0 +1,98 @@
+/* Copyright 2024 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_manuform_num_noextrapinky(
+ KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_LGUI, KC_LALT, KC_LGUI, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, MO(1), KC_LBRC, KC_RBRC,
+ KC_HOME, KC_END, KC_ESC, KC_GRAVE, KC_CAPS, KC_APP
+ ),
+
+ [1] = LAYOUT_manuform_num_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_manuform_num_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_manuform_num_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_manuform_num_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_manuform_num_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_manuform_num_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_manuform_num_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_manuform_num_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_manuform_num_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/dactyl/manuform_number_row_noextrapinky/keymaps/vial/rules.mk b/keyboards/cyboard/dactyl/manuform_number_row_noextrapinky/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/dactyl/manuform_number_row_noextrapinky/keymaps/vial/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/dactyl/manuform_number_row_noextrapinky/keymaps/vial/vial.json b/keyboards/cyboard/dactyl/manuform_number_row_noextrapinky/keymaps/vial/vial.json
new file mode 100644
index 00000000000..33eebcb5ccd
--- /dev/null
+++ b/keyboards/cyboard/dactyl/manuform_number_row_noextrapinky/keymaps/vial/vial.json
@@ -0,0 +1,133 @@
+{
+ "name": "Dactyl",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 8
+ },
+ "layouts": {
+ "keymap":
+ [
+ [
+ "5,5",
+ "5,4",
+ "5,3",
+ "5,2",
+ "5,1",
+ "5,0",
+ {
+ "x": 5.5
+ },
+ "12,0",
+ "12,1",
+ "12,2",
+ "12,3",
+ "12,4",
+ "12,5"
+ ],
+ [
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ "4,0",
+ {
+ "x": 5.5
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5"
+ ],
+ [
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ "3,0",
+ {
+ "x": 5.5
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5"
+ ],
+ [
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ "2,0",
+ {
+ "x": 5.5
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "x": 2
+ },
+ "1,3",
+ "1,2",
+ {
+ "x": 9.5
+ },
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4.5
+ },
+ "0,7",
+ "0,3",
+ {
+ "x": 4.5
+ },
+ "7,3",
+ "7,7"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 6.5
+ },
+ "0,2",
+ "0,1",
+ {
+ "x": 0.5
+ },
+ "7,1",
+ "7,2"
+ ],
+ [
+ {
+ "x": 6.5
+ },
+ "0,6",
+ "0,5",
+ {
+ "x": 0.5
+ },
+ "7,5",
+ "7,6"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/cyboard/dactyl/manuform_number_row_noextrapinky/rules.mk b/keyboards/cyboard/dactyl/manuform_number_row_noextrapinky/rules.mk
new file mode 100644
index 00000000000..e02abfc9b0e
--- /dev/null
+++ b/keyboards/cyboard/dactyl/manuform_number_row_noextrapinky/rules.mk
@@ -0,0 +1 @@
+
diff --git a/keyboards/cyboard/dactyl/single_arc_3x5/info.json b/keyboards/cyboard/dactyl/single_arc_3x5/info.json
new file mode 100644
index 00000000000..6901806af77
--- /dev/null
+++ b/keyboards/cyboard/dactyl/single_arc_3x5/info.json
@@ -0,0 +1,104 @@
+{
+ "rgb_matrix": {
+ "split_count": [18, 18],
+ "layout": [
+ {"flags": 4, "matrix": [3, 0], "x": 86, "y": 32},
+ {"flags": 4, "matrix": [2, 0], "x": 86, "y": 43},
+ {"flags": 4, "matrix": [4, 0], "x": 86, "y": 21},
+
+ {"flags": 4, "matrix": [3, 1], "x": 69, "y": 32},
+ {"flags": 4, "matrix": [2, 1], "x": 69, "y": 43},
+ {"flags": 4, "matrix": [4, 1], "x": 69, "y": 21},
+
+ {"flags": 4, "matrix": [3, 2], "x": 52, "y": 32},
+ {"flags": 4, "matrix": [2, 2], "x": 52, "y": 43},
+ {"flags": 4, "matrix": [4, 2], "x": 52, "y": 21},
+
+ {"flags": 4, "matrix": [3, 3], "x": 34, "y": 32},
+ {"flags": 4, "matrix": [2, 3], "x": 34, "y": 43},
+ {"flags": 4, "matrix": [4, 3], "x": 34, "y": 21},
+
+ {"flags": 4, "matrix": [3, 4], "x": 17, "y": 32},
+ {"flags": 4, "matrix": [2, 4], "x": 17, "y": 43},
+ {"flags": 4, "matrix": [4, 4], "x": 17, "y": 21},
+
+ {"flags": 4, "matrix": [0, 3], "x": 86, "y": 53},
+ {"flags": 4, "matrix": [0, 2], "x": 93, "y": 53},
+ {"flags": 4, "matrix": [0, 1], "x": 93, "y": 64},
+
+
+ {"flags": 4, "matrix": [10, 0], "x": 128, "y": 32},
+ {"flags": 4, "matrix": [9, 0], "x": 128, "y": 43},
+ {"flags": 4, "matrix": [11, 0], "x": 128, "y": 21},
+
+ {"flags": 4, "matrix": [10, 1], "x": 145, "y": 32},
+ {"flags": 4, "matrix": [9, 1], "x": 145, "y": 43},
+ {"flags": 4, "matrix": [11, 1], "x": 145, "y": 21},
+
+ {"flags": 4, "matrix": [10, 2], "x": 172, "y": 32},
+ {"flags": 4, "matrix": [9, 2], "x": 172, "y": 43},
+ {"flags": 4, "matrix": [11, 2], "x": 172, "y": 21},
+
+ {"flags": 4, "matrix": [10, 3], "x": 190, "y": 32},
+ {"flags": 4, "matrix": [9, 3], "x": 190, "y": 43},
+ {"flags": 4, "matrix": [11, 3], "x": 190, "y": 21},
+
+ {"flags": 4, "matrix": [10, 4], "x": 207, "y": 32},
+ {"flags": 4, "matrix": [9, 4], "x": 207, "y": 43},
+ {"flags": 4, "matrix": [11, 4], "x": 207, "y": 21},
+
+ {"flags": 4, "matrix": [7, 3], "x": 128, "y": 53},
+ {"flags": 4, "matrix": [7, 2], "x": 111, "y": 53},
+ {"flags": 4, "matrix": [7, 1], "x": 111, "y": 64}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_single_arc_3x5": {
+ "layout": [
+ { "matrix": [4, 4], "x": 0, "y": 0 },
+ { "matrix": [4, 3], "x": 1, "y": 0 },
+ { "matrix": [4, 2], "x": 2, "y": 0 },
+ { "matrix": [4, 1], "x": 3, "y": 0 },
+ { "matrix": [4, 0], "x": 4, "y": 0 },
+
+ { "matrix": [11, 0], "x": 9.5, "y": 0 },
+ { "matrix": [11, 1], "x": 10.5, "y": 0 },
+ { "matrix": [11, 2], "x": 11.5, "y": 0 },
+ { "matrix": [11, 3], "x": 12.5, "y": 0 },
+ { "matrix": [11, 4], "x": 13.5, "y": 0 },
+
+ { "matrix": [3, 4], "x": 0, "y": 1 },
+ { "matrix": [3, 3], "x": 1, "y": 1 },
+ { "matrix": [3, 2], "x": 2, "y": 1 },
+ { "matrix": [3, 1], "x": 3, "y": 1 },
+ { "matrix": [3, 0], "x": 4, "y": 1 },
+
+ { "matrix": [10, 0], "x": 9.5, "y": 1 },
+ { "matrix": [10, 1], "x": 10.5, "y": 1 },
+ { "matrix": [10, 2], "x": 11.5, "y": 1 },
+ { "matrix": [10, 3], "x": 12.5, "y": 1 },
+ { "matrix": [10, 4], "x": 13.5, "y": 1 },
+
+ { "matrix": [2, 4], "x": 0, "y": 2 },
+ { "matrix": [2, 3], "x": 1, "y": 2 },
+ { "matrix": [2, 2], "x": 2, "y": 2 },
+ { "matrix": [2, 1], "x": 3, "y": 2 },
+ { "matrix": [2, 0], "x": 4, "y": 2 },
+
+ { "matrix": [9, 0], "x": 9.5, "y": 2 },
+ { "matrix": [9, 1], "x": 10.5, "y": 2 },
+ { "matrix": [9, 2], "x": 11.5, "y": 2 },
+ { "matrix": [9, 3], "x": 12.5, "y": 2 },
+ { "matrix": [9, 4], "x": 13.5, "y": 2 },
+
+ { "matrix": [0, 3], "x": 4.5, "y": 3.5 },
+ { "matrix": [0, 2], "x": 5.5, "y": 3.5 },
+ { "matrix": [0, 1], "x": 6.5, "y": 3.5 },
+
+ { "matrix": [7, 1], "x": 8, "y": 3.5 },
+ { "matrix": [7, 2], "x": 9, "y": 3.5 },
+ { "matrix": [7, 3], "x": 10, "y": 3.5 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/cyboard/dactyl/single_arc_3x5/keymaps/vial/keymap.c b/keyboards/cyboard/dactyl/single_arc_3x5/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..ae1eb6d24eb
--- /dev/null
+++ b/keyboards/cyboard/dactyl/single_arc_3x5/keymaps/vial/keymap.c
@@ -0,0 +1,78 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_single_arc_3x5(
+ 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_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ KC_LGUI, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, MO(1)
+ ),
+
+ [1] = LAYOUT_single_arc_3x5(
+ _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______,
+ _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_single_arc_3x5(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_single_arc_3x5(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_single_arc_3x5(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_single_arc_3x5(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_single_arc_3x5(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_single_arc_3x5(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_single_arc_3x5(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_single_arc_3x5(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/dactyl/single_arc_3x5/keymaps/vial/rules.mk b/keyboards/cyboard/dactyl/single_arc_3x5/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/dactyl/single_arc_3x5/keymaps/vial/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/dactyl/single_arc_3x5/keymaps/vial/vial.json b/keyboards/cyboard/dactyl/single_arc_3x5/keymaps/vial/vial.json
new file mode 100644
index 00000000000..d6e451208c3
--- /dev/null
+++ b/keyboards/cyboard/dactyl/single_arc_3x5/keymaps/vial/vial.json
@@ -0,0 +1,75 @@
+{
+ "name": "Dactyl",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 8
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ "4,0",
+ {
+ "x": 3
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4"
+ ],
+ [
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ "3,0",
+ {
+ "x": 3
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4"
+ ],
+ [
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ "2,0",
+ {
+ "x": 3
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 3.25
+ },
+ "0,3",
+ "0,2",
+ "0,1",
+ {
+ "x": 0.5
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/dactyl/single_arc_3x5/rules.mk b/keyboards/cyboard/dactyl/single_arc_3x5/rules.mk
new file mode 100644
index 00000000000..e02abfc9b0e
--- /dev/null
+++ b/keyboards/cyboard/dactyl/single_arc_3x5/rules.mk
@@ -0,0 +1 @@
+
diff --git a/keyboards/cyboard/dactyl/single_arc_function_row/info.json b/keyboards/cyboard/dactyl/single_arc_function_row/info.json
new file mode 100644
index 00000000000..7688dfd9f52
--- /dev/null
+++ b/keyboards/cyboard/dactyl/single_arc_function_row/info.json
@@ -0,0 +1,179 @@
+{
+ "rgb_matrix": {
+ "split_count": [37, 37],
+ "layout": [
+ {"flags": 4, "matrix": [3, 0], "x": 86, "y": 32},
+ {"flags": 4, "matrix": [2, 0], "x": 86, "y": 43},
+ {"flags": 4, "matrix": [6, 0], "x": 86, "y": 0},
+ {"flags": 4, "matrix": [5, 0], "x": 86, "y": 11},
+ {"flags": 4, "matrix": [4, 0], "x": 86, "y": 21},
+
+ {"flags": 4, "matrix": [3, 1], "x": 69, "y": 32},
+ {"flags": 4, "matrix": [2, 1], "x": 69, "y": 43},
+ {"flags": 4, "matrix": [6, 1], "x": 69, "y": 0},
+ {"flags": 4, "matrix": [5, 1], "x": 69, "y": 11},
+ {"flags": 4, "matrix": [4, 1], "x": 69, "y": 21},
+
+ {"flags": 4, "matrix": [3, 2], "x": 52, "y": 32},
+ {"flags": 4, "matrix": [2, 2], "x": 52, "y": 43},
+ {"flags": 4, "matrix": [1, 2], "x": 52, "y": 53},
+ {"flags": 4, "matrix": [6, 2], "x": 52, "y": 0},
+ {"flags": 4, "matrix": [5, 2], "x": 52, "y": 11},
+ {"flags": 4, "matrix": [4, 2], "x": 52, "y": 21},
+
+ {"flags": 4, "matrix": [3, 3], "x": 34, "y": 32},
+ {"flags": 4, "matrix": [2, 3], "x": 34, "y": 43},
+ {"flags": 4, "matrix": [1, 3], "x": 34, "y": 53},
+ {"flags": 4, "matrix": [6, 3], "x": 34, "y": 0},
+ {"flags": 4, "matrix": [5, 3], "x": 34, "y": 11},
+ {"flags": 4, "matrix": [4, 3], "x": 34, "y": 21},
+
+ {"flags": 4, "matrix": [3, 4], "x": 17, "y": 32},
+ {"flags": 4, "matrix": [2, 4], "x": 17, "y": 43},
+ {"flags": 4, "matrix": [1, 4], "x": 17, "y": 53},
+ {"flags": 4, "matrix": [6, 4], "x": 17, "y": 0},
+ {"flags": 4, "matrix": [5, 4], "x": 17, "y": 11},
+ {"flags": 4, "matrix": [4, 4], "x": 17, "y": 21},
+
+ {"flags": 4, "matrix": [3, 5], "x": 0, "y": 32},
+ {"flags": 4, "matrix": [2, 5], "x": 0, "y": 43},
+ {"flags": 4, "matrix": [1, 5], "x": 0, "y": 53},
+ {"flags": 4, "matrix": [6, 5], "x": 0, "y": 0},
+ {"flags": 4, "matrix": [5, 5], "x": 0, "y": 11},
+ {"flags": 4, "matrix": [4, 5], "x": 0, "y": 21},
+
+ {"flags": 4, "matrix": [0, 3], "x": 86, "y": 53},
+ {"flags": 4, "matrix": [0, 2], "x": 103, "y": 53},
+ {"flags": 4, "matrix": [0, 1], "x": 103, "y": 64},
+
+
+ {"flags": 4, "matrix": [10, 0], "x": 138, "y": 32},
+ {"flags": 4, "matrix": [9, 0], "x": 138, "y": 43},
+ {"flags": 4, "matrix": [13, 0], "x": 138, "y": 0},
+ {"flags": 4, "matrix": [12, 0], "x": 138, "y": 11},
+ {"flags": 4, "matrix": [11, 0], "x": 138, "y": 21},
+
+ {"flags": 4, "matrix": [10, 1], "x": 155, "y": 32},
+ {"flags": 4, "matrix": [9, 1], "x": 155, "y": 43},
+ {"flags": 4, "matrix": [13, 1], "x": 155, "y": 0},
+ {"flags": 4, "matrix": [12, 1], "x": 155, "y": 11},
+ {"flags": 4, "matrix": [11, 1], "x": 155, "y": 21},
+
+ {"flags": 4, "matrix": [10, 2], "x": 172, "y": 32},
+ {"flags": 4, "matrix": [9, 2], "x": 172, "y": 43},
+ {"flags": 4, "matrix": [8, 2], "x": 172, "y": 53},
+ {"flags": 4, "matrix": [13, 2], "x": 172, "y": 0},
+ {"flags": 4, "matrix": [12, 2], "x": 172, "y": 11},
+ {"flags": 4, "matrix": [11, 2], "x": 172, "y": 21},
+
+ {"flags": 4, "matrix": [10, 3], "x": 190, "y": 32},
+ {"flags": 4, "matrix": [9, 3], "x": 190, "y": 43},
+ {"flags": 4, "matrix": [8, 3], "x": 190, "y": 53},
+ {"flags": 4, "matrix": [13, 3], "x": 190, "y": 0},
+ {"flags": 4, "matrix": [12, 3], "x": 190, "y": 11},
+ {"flags": 4, "matrix": [11, 3], "x": 190, "y": 21},
+
+ {"flags": 4, "matrix": [10, 4], "x": 207, "y": 32},
+ {"flags": 4, "matrix": [9, 4], "x": 207, "y": 43},
+ {"flags": 4, "matrix": [8, 4], "x": 207, "y": 53},
+ {"flags": 4, "matrix": [13, 4], "x": 207, "y": 0},
+ {"flags": 4, "matrix": [12, 4], "x": 207, "y": 11},
+ {"flags": 4, "matrix": [11, 4], "x": 207, "y": 21},
+
+ {"flags": 4, "matrix": [10, 5], "x": 224, "y": 32},
+ {"flags": 4, "matrix": [9, 5], "x": 224, "y": 43},
+ {"flags": 4, "matrix": [8, 5], "x": 224, "y": 53},
+ {"flags": 4, "matrix": [13, 5], "x": 224, "y": 0},
+ {"flags": 4, "matrix": [12, 5], "x": 224, "y": 11},
+ {"flags": 4, "matrix": [11, 5], "x": 224, "y": 21},
+
+ {"flags": 4, "matrix": [7, 3], "x": 138, "y": 53},
+ {"flags": 4, "matrix": [7, 2], "x": 121, "y": 53},
+ {"flags": 4, "matrix": [7, 1], "x": 121, "y": 64},
+ ]
+ },
+ "layouts": {
+ "LAYOUT_single_arc_fun": {
+ "layout": [
+ { "matrix": [6, 5], "x": 0, "y": 0 },
+ { "matrix": [6, 4], "x": 1, "y": 0 },
+ { "matrix": [6, 3], "x": 2, "y": 0 },
+ { "matrix": [6, 2], "x": 3, "y": 0 },
+ { "matrix": [6, 1], "x": 4, "y": 0 },
+ { "matrix": [6, 0], "x": 5, "y": 0 },
+ { "matrix": [13, 0], "x": 11.5, "y": 0 },
+ { "matrix": [13, 1], "x": 12.5, "y": 0 },
+ { "matrix": [13, 2], "x": 13.5, "y": 0 },
+ { "matrix": [13, 3], "x": 14.5, "y": 0 },
+ { "matrix": [13, 4], "x": 15.5, "y": 0 },
+ { "matrix": [13, 5], "x": 16.5, "y": 0 },
+ { "matrix": [5, 5], "x": 0, "y": 0 },
+ { "matrix": [5, 4], "x": 1, "y": 0 },
+ { "matrix": [5, 3], "x": 2, "y": 0 },
+ { "matrix": [5, 2], "x": 3, "y": 0 },
+ { "matrix": [5, 1], "x": 4, "y": 0 },
+ { "matrix": [5, 0], "x": 5, "y": 0 },
+ { "matrix": [12, 0], "x": 11.5, "y": 0 },
+ { "matrix": [12, 1], "x": 12.5, "y": 0 },
+ { "matrix": [12, 2], "x": 13.5, "y": 0 },
+ { "matrix": [12, 3], "x": 14.5, "y": 0 },
+ { "matrix": [12, 4], "x": 15.5, "y": 0 },
+ { "matrix": [12, 5], "x": 16.5, "y": 0 },
+ { "matrix": [4, 5], "x": 0, "y": 1 },
+ { "matrix": [4, 4], "x": 1, "y": 1 },
+ { "matrix": [4, 3], "x": 2, "y": 1 },
+ { "matrix": [4, 2], "x": 3, "y": 1 },
+ { "matrix": [4, 1], "x": 4, "y": 1 },
+ { "matrix": [4, 0], "x": 5, "y": 1 },
+ { "matrix": [11, 0], "x": 10.5, "y": 1 },
+ { "matrix": [11, 1], "x": 11.5, "y": 1 },
+ { "matrix": [11, 2], "x": 12.5, "y": 1 },
+ { "matrix": [11, 3], "x": 13.5, "y": 1 },
+ { "matrix": [11, 4], "x": 14.5, "y": 1 },
+ { "matrix": [11, 5], "x": 15.5, "y": 1 },
+ { "matrix": [3, 5], "x": 0, "y": 2 },
+ { "matrix": [3, 4], "x": 1, "y": 2 },
+ { "matrix": [3, 3], "x": 2, "y": 2 },
+ { "matrix": [3, 2], "x": 3, "y": 2 },
+ { "matrix": [3, 1], "x": 4, "y": 2 },
+ { "matrix": [3, 0], "x": 5, "y": 2 },
+ { "matrix": [10, 0], "x": 10.5, "y": 2 },
+ { "matrix": [10, 1], "x": 11.5, "y": 2 },
+ { "matrix": [10, 2], "x": 12.5, "y": 2 },
+ { "matrix": [10, 3], "x": 13.5, "y": 2 },
+ { "matrix": [10, 4], "x": 14.5, "y": 2 },
+ { "matrix": [10, 5], "x": 15.5, "y": 2 },
+ { "matrix": [2, 5], "x": 0, "y": 3 },
+ { "matrix": [2, 4], "x": 1, "y": 3 },
+ { "matrix": [2, 3], "x": 2, "y": 3 },
+ { "matrix": [2, 2], "x": 3, "y": 3 },
+ { "matrix": [2, 1], "x": 4, "y": 3 },
+ { "matrix": [2, 0], "x": 5, "y": 3 },
+ { "matrix": [9, 0], "x": 10.5, "y": 3 },
+ { "matrix": [9, 1], "x": 11.5, "y": 3 },
+ { "matrix": [9, 2], "x": 12.5, "y": 3 },
+ { "matrix": [9, 3], "x": 13.5, "y": 3 },
+ { "matrix": [9, 4], "x": 14.5, "y": 3 },
+ { "matrix": [9, 5], "x": 15.5, "y": 3 },
+
+ { "matrix": [1, 5], "x": 0, "y": 4 },
+ { "matrix": [1, 4], "x": 1, "y": 4 },
+ { "matrix": [1, 3], "x": 2, "y": 4 },
+ { "matrix": [1, 2], "x": 3, "y": 4 },
+
+ { "matrix": [0, 3], "x": 4.5, "y": 4.5 },
+ { "matrix": [0, 2], "x": 5.5, "y": 4.5 },
+ { "matrix": [0, 1], "x": 6.5, "y": 4.5 },
+
+ { "matrix": [7, 1], "x": 9, "y": 4.5 },
+ { "matrix": [7, 2], "x": 10, "y": 4.5 },
+ { "matrix": [7, 3], "x": 11, "y": 4.5 },
+
+ { "matrix": [8, 2], "x": 12.5, "y": 4 },
+ { "matrix": [8, 3], "x": 13.5, "y": 4 },
+ { "matrix": [8, 4], "x": 14.5, "y": 4 },
+ { "matrix": [8, 5], "x": 15.5, "y": 4 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/cyboard/dactyl/single_arc_function_row/keymaps/default/keymap.c b/keyboards/cyboard/dactyl/single_arc_function_row/keymaps/default/keymap.c
new file mode 100644
index 00000000000..b321f76effa
--- /dev/null
+++ b/keyboards/cyboard/dactyl/single_arc_function_row/keymaps/default/keymap.c
@@ -0,0 +1,26 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_single_arc_fun(
+ 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_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_UP, KC_DOWN, KC_LGUI, KC_LALT, KC_LGUI, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, MO(1), KC_LBRC, KC_RBRC, KC_LEFT, KC_RIGHT
+ ),
+
+ [1] = LAYOUT_single_arc_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/dactyl/single_arc_function_row/keymaps/vial/keymap.c b/keyboards/cyboard/dactyl/single_arc_function_row/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..9f4607a84be
--- /dev/null
+++ b/keyboards/cyboard/dactyl/single_arc_function_row/keymaps/vial/keymap.c
@@ -0,0 +1,98 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_single_arc_fun(
+ 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_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_UP, KC_DOWN, KC_LGUI, KC_LALT, KC_LGUI, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, MO(1), KC_LBRC, KC_RBRC, KC_LEFT, KC_RIGHT
+ ),
+
+ [1] = LAYOUT_single_arc_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_single_arc_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_single_arc_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_single_arc_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_single_arc_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_single_arc_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_single_arc_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_single_arc_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_single_arc_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/dactyl/single_arc_function_row/keymaps/vial/rules.mk b/keyboards/cyboard/dactyl/single_arc_function_row/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/dactyl/single_arc_function_row/keymaps/vial/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/dactyl/single_arc_function_row/keymaps/vial/vial.json b/keyboards/cyboard/dactyl/single_arc_function_row/keymaps/vial/vial.json
new file mode 100644
index 00000000000..efad41c4637
--- /dev/null
+++ b/keyboards/cyboard/dactyl/single_arc_function_row/keymaps/vial/vial.json
@@ -0,0 +1,128 @@
+{
+ "name": "Dactyl",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 8
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "6,5",
+ "6,4",
+ "6,3",
+ "6,2",
+ "6,1",
+ "6,0",
+ {
+ "x": 3
+ },
+ "13,0",
+ "13,1",
+ "13,2",
+ "13,3",
+ "13,4",
+ "13,5"
+ ],
+ [
+ "5,5",
+ "5,4",
+ "5,3",
+ "5,2",
+ "5,1",
+ "5,0",
+ {
+ "x": 3
+ },
+ "12,0",
+ "12,1",
+ "12,2",
+ "12,3",
+ "12,4",
+ "12,5"
+ ],
+ [
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ "4,0",
+ {
+ "x": 3
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5"
+ ],
+ [
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ "3,0",
+ {
+ "x": 3
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5"
+ ],
+ [
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ "2,0",
+ {
+ "x": 3
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5"
+ ],
+ [
+ "1,5",
+ "1,4",
+ "1,3",
+ "1,2",
+ {
+ "x": 7
+ },
+ "8,2",
+ "8,3",
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 4.25
+ },
+ "0,3",
+ "0,2",
+ "0,1",
+ {
+ "x": 0.5
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/dactyl/single_arc_function_row/rules.mk b/keyboards/cyboard/dactyl/single_arc_function_row/rules.mk
new file mode 100644
index 00000000000..e02abfc9b0e
--- /dev/null
+++ b/keyboards/cyboard/dactyl/single_arc_function_row/rules.mk
@@ -0,0 +1 @@
+
diff --git a/keyboards/cyboard/dactyl/single_arc_letters_only/info.json b/keyboards/cyboard/dactyl/single_arc_letters_only/info.json
new file mode 100644
index 00000000000..07b43e478dd
--- /dev/null
+++ b/keyboards/cyboard/dactyl/single_arc_letters_only/info.json
@@ -0,0 +1,136 @@
+{
+ "rgb_matrix": {
+ "split_count": [25, 25],
+ "layout": [
+ {"flags": 4, "matrix": [3, 0], "x": 86, "y": 32},
+ {"flags": 4, "matrix": [2, 0], "x": 86, "y": 43},
+ {"flags": 4, "matrix": [4, 0], "x": 86, "y": 21},
+
+ {"flags": 4, "matrix": [3, 1], "x": 69, "y": 32},
+ {"flags": 4, "matrix": [2, 1], "x": 69, "y": 43},
+ {"flags": 4, "matrix": [4, 1], "x": 69, "y": 21},
+
+ {"flags": 4, "matrix": [3, 2], "x": 52, "y": 32},
+ {"flags": 4, "matrix": [2, 2], "x": 52, "y": 43},
+ {"flags": 4, "matrix": [1, 2], "x": 52, "y": 53},
+ {"flags": 4, "matrix": [4, 2], "x": 52, "y": 21},
+
+ {"flags": 4, "matrix": [3, 3], "x": 34, "y": 32},
+ {"flags": 4, "matrix": [2, 3], "x": 34, "y": 43},
+ {"flags": 4, "matrix": [1, 3], "x": 34, "y": 53},
+ {"flags": 4, "matrix": [4, 3], "x": 34, "y": 21},
+
+ {"flags": 4, "matrix": [3, 4], "x": 17, "y": 32},
+ {"flags": 4, "matrix": [2, 4], "x": 17, "y": 43},
+ {"flags": 4, "matrix": [1, 4], "x": 17, "y": 53},
+ {"flags": 4, "matrix": [4, 4], "x": 17, "y": 21},
+
+ {"flags": 4, "matrix": [3, 5], "x": 0, "y": 32},
+ {"flags": 4, "matrix": [2, 5], "x": 0, "y": 43},
+ {"flags": 4, "matrix": [1, 5], "x": 0, "y": 53},
+ {"flags": 4, "matrix": [4, 5], "x": 0, "y": 21},
+
+ {"flags": 4, "matrix": [0, 3], "x": 86, "y": 53},
+ {"flags": 4, "matrix": [0, 2], "x": 103, "y": 53},
+ {"flags": 4, "matrix": [0, 1], "x": 103, "y": 64},
+
+
+ {"flags": 4, "matrix": [10, 0], "x": 138, "y": 32},
+ {"flags": 4, "matrix": [9, 0], "x": 138, "y": 43},
+ {"flags": 4, "matrix": [11, 0], "x": 138, "y": 21},
+
+ {"flags": 4, "matrix": [10, 1], "x": 155, "y": 32},
+ {"flags": 4, "matrix": [9, 1], "x": 155, "y": 43},
+ {"flags": 4, "matrix": [11, 1], "x": 155, "y": 21},
+
+ {"flags": 4, "matrix": [10, 2], "x": 172, "y": 32},
+ {"flags": 4, "matrix": [9, 2], "x": 172, "y": 43},
+ {"flags": 4, "matrix": [8, 2], "x": 172, "y": 53},
+ {"flags": 4, "matrix": [11, 2], "x": 172, "y": 21},
+
+ {"flags": 4, "matrix": [10, 3], "x": 190, "y": 32},
+ {"flags": 4, "matrix": [9, 3], "x": 190, "y": 43},
+ {"flags": 4, "matrix": [8, 3], "x": 190, "y": 53},
+ {"flags": 4, "matrix": [11, 3], "x": 190, "y": 21},
+
+ {"flags": 4, "matrix": [10, 4], "x": 207, "y": 32},
+ {"flags": 4, "matrix": [9, 4], "x": 207, "y": 43},
+ {"flags": 4, "matrix": [8, 4], "x": 207, "y": 53},
+ {"flags": 4, "matrix": [11, 4], "x": 207, "y": 21},
+
+ {"flags": 4, "matrix": [10, 5], "x": 224, "y": 32},
+ {"flags": 4, "matrix": [9, 5], "x": 224, "y": 43},
+ {"flags": 4, "matrix": [8, 5], "x": 224, "y": 53},
+ {"flags": 4, "matrix": [11, 5], "x": 224, "y": 21},
+
+ {"flags": 4, "matrix": [7, 3], "x": 138, "y": 53},
+ {"flags": 4, "matrix": [7, 2], "x": 121, "y": 53},
+ {"flags": 4, "matrix": [7, 1], "x": 121, "y": 64}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_single_arc_let": {
+ "layout": [
+ { "matrix": [4, 5], "x": 0, "y": 0 },
+ { "matrix": [4, 4], "x": 1, "y": 0 },
+ { "matrix": [4, 3], "x": 2, "y": 0 },
+ { "matrix": [4, 2], "x": 3, "y": 0 },
+ { "matrix": [4, 1], "x": 4, "y": 0 },
+ { "matrix": [4, 0], "x": 5, "y": 0 },
+
+ { "matrix": [11, 0], "x": 10.5, "y": 0 },
+ { "matrix": [11, 1], "x": 11.5, "y": 0 },
+ { "matrix": [11, 2], "x": 12.5, "y": 0 },
+ { "matrix": [11, 3], "x": 13.5, "y": 0 },
+ { "matrix": [11, 4], "x": 14.5, "y": 0 },
+ { "matrix": [11, 5], "x": 15.5, "y": 0 },
+
+ { "matrix": [3, 5], "x": 0, "y": 1 },
+ { "matrix": [3, 4], "x": 1, "y": 1 },
+ { "matrix": [3, 3], "x": 2, "y": 1 },
+ { "matrix": [3, 2], "x": 3, "y": 1 },
+ { "matrix": [3, 1], "x": 4, "y": 1 },
+ { "matrix": [3, 0], "x": 5, "y": 1 },
+
+ { "matrix": [10, 0], "x": 10.5, "y": 1 },
+ { "matrix": [10, 1], "x": 11.5, "y": 1 },
+ { "matrix": [10, 2], "x": 12.5, "y": 1 },
+ { "matrix": [10, 3], "x": 13.5, "y": 1 },
+ { "matrix": [10, 4], "x": 14.5, "y": 1 },
+ { "matrix": [10, 5], "x": 15.5, "y": 1 },
+
+ { "matrix": [2, 5], "x": 0, "y": 2 },
+ { "matrix": [2, 4], "x": 1, "y": 2 },
+ { "matrix": [2, 3], "x": 2, "y": 2 },
+ { "matrix": [2, 2], "x": 3, "y": 2 },
+ { "matrix": [2, 1], "x": 4, "y": 2 },
+ { "matrix": [2, 0], "x": 5, "y": 2 },
+
+ { "matrix": [9, 0], "x": 10.5, "y": 2 },
+ { "matrix": [9, 1], "x": 11.5, "y": 2 },
+ { "matrix": [9, 2], "x": 12.5, "y": 2 },
+ { "matrix": [9, 3], "x": 13.5, "y": 2 },
+ { "matrix": [9, 4], "x": 14.5, "y": 2 },
+ { "matrix": [9, 5], "x": 15.5, "y": 2 },
+
+ { "matrix": [1, 5], "x": 0, "y": 3 },
+ { "matrix": [1, 4], "x": 1, "y": 3 },
+ { "matrix": [1, 3], "x": 2, "y": 3 },
+ { "matrix": [1, 2], "x": 3, "y": 3 },
+
+ { "matrix": [0, 3], "x": 4.5, "y": 3.5 },
+ { "matrix": [0, 2], "x": 5.5, "y": 3.5 },
+ { "matrix": [0, 1], "x": 6.5, "y": 3.5 },
+
+ { "matrix": [7, 1], "x": 9, "y": 3.5 },
+ { "matrix": [7, 2], "x": 10, "y": 3.5 },
+ { "matrix": [7, 3], "x": 11, "y": 3.5 },
+
+ { "matrix": [8, 2], "x": 12.5, "y": 3 },
+ { "matrix": [8, 3], "x": 13.5, "y": 3 },
+ { "matrix": [8, 4], "x": 14.5, "y": 3 },
+ { "matrix": [8, 5], "x": 15.5, "y": 3 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/cyboard/dactyl/single_arc_letters_only/keymaps/vial/keymap.c b/keyboards/cyboard/dactyl/single_arc_letters_only/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..102969c6094
--- /dev/null
+++ b/keyboards/cyboard/dactyl/single_arc_letters_only/keymaps/vial/keymap.c
@@ -0,0 +1,78 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_single_arc_let(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_UP, KC_DOWN, KC_LGUI, KC_LALT, KC_LGUI, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, MO(1), KC_LBRC, KC_RBRC, KC_LEFT, KC_RIGHT
+ ),
+
+ [1] = LAYOUT_single_arc_let(
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_single_arc_let(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_single_arc_let(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_single_arc_let(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_single_arc_let(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_single_arc_let(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_single_arc_let(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_single_arc_let(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_single_arc_let(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/dactyl/single_arc_letters_only/keymaps/vial/rules.mk b/keyboards/cyboard/dactyl/single_arc_letters_only/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/dactyl/single_arc_letters_only/keymaps/vial/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/dactyl/single_arc_letters_only/keymaps/vial/vial.json b/keyboards/cyboard/dactyl/single_arc_letters_only/keymaps/vial/vial.json
new file mode 100644
index 00000000000..fadac9c1200
--- /dev/null
+++ b/keyboards/cyboard/dactyl/single_arc_letters_only/keymaps/vial/vial.json
@@ -0,0 +1,94 @@
+{
+ "name": "Dactyl",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 8
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ "4,0",
+ {
+ "x": 3
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5"
+ ],
+ [
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ "3,0",
+ {
+ "x": 3
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5"
+ ],
+ [
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ "2,0",
+ {
+ "x": 3
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5"
+ ],
+ [
+ "1,5",
+ "1,4",
+ "1,3",
+ "1,2",
+ {
+ "x": 7
+ },
+ "8,2",
+ "8,3",
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 4.25
+ },
+ "0,3",
+ "0,2",
+ "0,1",
+ {
+ "x": 0.5
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/dactyl/single_arc_letters_only/rules.mk b/keyboards/cyboard/dactyl/single_arc_letters_only/rules.mk
new file mode 100644
index 00000000000..e02abfc9b0e
--- /dev/null
+++ b/keyboards/cyboard/dactyl/single_arc_letters_only/rules.mk
@@ -0,0 +1 @@
+
diff --git a/keyboards/cyboard/dactyl/single_arc_number_row/info.json b/keyboards/cyboard/dactyl/single_arc_number_row/info.json
new file mode 100644
index 00000000000..fc2b7a17291
--- /dev/null
+++ b/keyboards/cyboard/dactyl/single_arc_number_row/info.json
@@ -0,0 +1,162 @@
+{
+ "rgb_matrix": {
+ "split_count": [31, 31],
+ "layout": [
+ {"flags": 4, "matrix": [3, 0], "x": 86, "y": 32},
+ {"flags": 4, "matrix": [2, 0], "x": 86, "y": 43},
+ {"flags": 4, "matrix": [5, 0], "x": 86, "y": 11},
+ {"flags": 4, "matrix": [4, 0], "x": 86, "y": 21},
+
+ {"flags": 4, "matrix": [3, 1], "x": 69, "y": 32},
+ {"flags": 4, "matrix": [2, 1], "x": 69, "y": 43},
+ {"flags": 4, "matrix": [5, 1], "x": 69, "y": 11},
+ {"flags": 4, "matrix": [4, 1], "x": 69, "y": 21},
+
+ {"flags": 4, "matrix": [3, 2], "x": 52, "y": 32},
+ {"flags": 4, "matrix": [2, 2], "x": 52, "y": 43},
+ {"flags": 4, "matrix": [1, 2], "x": 52, "y": 53},
+ {"flags": 4, "matrix": [5, 2], "x": 52, "y": 11},
+ {"flags": 4, "matrix": [4, 2], "x": 52, "y": 21},
+
+ {"flags": 4, "matrix": [3, 3], "x": 34, "y": 32},
+ {"flags": 4, "matrix": [2, 3], "x": 34, "y": 43},
+ {"flags": 4, "matrix": [1, 3], "x": 34, "y": 53},
+ {"flags": 4, "matrix": [5, 3], "x": 34, "y": 11},
+ {"flags": 4, "matrix": [4, 3], "x": 34, "y": 21},
+
+ {"flags": 4, "matrix": [3, 4], "x": 17, "y": 32},
+ {"flags": 4, "matrix": [2, 4], "x": 17, "y": 43},
+ {"flags": 4, "matrix": [1, 4], "x": 17, "y": 53},
+ {"flags": 4, "matrix": [5, 4], "x": 17, "y": 11},
+ {"flags": 4, "matrix": [4, 4], "x": 17, "y": 21},
+
+ {"flags": 4, "matrix": [3, 5], "x": 0, "y": 32},
+ {"flags": 4, "matrix": [2, 5], "x": 0, "y": 43},
+ {"flags": 4, "matrix": [1, 5], "x": 0, "y": 53},
+ {"flags": 4, "matrix": [5, 5], "x": 0, "y": 11},
+ {"flags": 4, "matrix": [4, 5], "x": 0, "y": 21},
+
+ {"flags": 4, "matrix": [0, 3], "x": 86, "y": 53},
+ {"flags": 4, "matrix": [0, 2], "x": 103, "y": 53},
+ {"flags": 4, "matrix": [0, 1], "x": 103, "y": 64},
+
+
+ {"flags": 4, "matrix": [10, 0], "x": 138, "y": 32},
+ {"flags": 4, "matrix": [9, 0], "x": 138, "y": 43},
+ {"flags": 4, "matrix": [12, 0], "x": 138, "y": 11},
+ {"flags": 4, "matrix": [11, 0], "x": 138, "y": 21},
+
+ {"flags": 4, "matrix": [10, 1], "x": 155, "y": 32},
+ {"flags": 4, "matrix": [9, 1], "x": 155, "y": 43},
+ {"flags": 4, "matrix": [12, 1], "x": 155, "y": 11},
+ {"flags": 4, "matrix": [11, 1], "x": 155, "y": 21},
+
+ {"flags": 4, "matrix": [10, 2], "x": 172, "y": 32},
+ {"flags": 4, "matrix": [9, 2], "x": 172, "y": 43},
+ {"flags": 4, "matrix": [8, 2], "x": 172, "y": 53},
+ {"flags": 4, "matrix": [12, 2], "x": 172, "y": 11},
+ {"flags": 4, "matrix": [11, 2], "x": 172, "y": 21},
+
+ {"flags": 4, "matrix": [10, 3], "x": 190, "y": 32},
+ {"flags": 4, "matrix": [9, 3], "x": 190, "y": 43},
+ {"flags": 4, "matrix": [8, 3], "x": 190, "y": 53},
+ {"flags": 4, "matrix": [12, 3], "x": 190, "y": 11},
+ {"flags": 4, "matrix": [11, 3], "x": 190, "y": 21},
+
+ {"flags": 4, "matrix": [10, 4], "x": 207, "y": 32},
+ {"flags": 4, "matrix": [9, 4], "x": 207, "y": 43},
+ {"flags": 4, "matrix": [8, 4], "x": 207, "y": 53},
+ {"flags": 4, "matrix": [12, 4], "x": 207, "y": 11},
+ {"flags": 4, "matrix": [11, 4], "x": 207, "y": 21},
+
+ {"flags": 4, "matrix": [10, 5], "x": 224, "y": 32},
+ {"flags": 4, "matrix": [9, 5], "x": 224, "y": 43},
+ {"flags": 4, "matrix": [8, 5], "x": 224, "y": 53},
+ {"flags": 4, "matrix": [12, 5], "x": 224, "y": 11},
+ {"flags": 4, "matrix": [11, 5], "x": 224, "y": 21},
+
+ {"flags": 4, "matrix": [7, 3], "x": 138, "y": 53},
+ {"flags": 4, "matrix": [7, 2], "x": 121, "y": 53},
+ {"flags": 4, "matrix": [7, 1], "x": 121, "y": 64}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_single_arc_num": {
+ "layout": [
+ { "matrix": [5, 5], "x": 0, "y": 0 },
+ { "matrix": [5, 4], "x": 1, "y": 0 },
+ { "matrix": [5, 3], "x": 2, "y": 0 },
+ { "matrix": [5, 2], "x": 3, "y": 0 },
+ { "matrix": [5, 1], "x": 4, "y": 0 },
+ { "matrix": [5, 0], "x": 5, "y": 0 },
+
+ { "matrix": [12, 0], "x": 10.5, "y": 0 },
+ { "matrix": [12, 1], "x": 11.5, "y": 0 },
+ { "matrix": [12, 2], "x": 12.5, "y": 0 },
+ { "matrix": [12, 3], "x": 13.5, "y": 0 },
+ { "matrix": [12, 4], "x": 14.5, "y": 0 },
+ { "matrix": [12, 5], "x": 15.5, "y": 0 },
+
+ { "matrix": [4, 5], "x": 0, "y": 1 },
+ { "matrix": [4, 4], "x": 1, "y": 1 },
+ { "matrix": [4, 3], "x": 2, "y": 1 },
+ { "matrix": [4, 2], "x": 3, "y": 1 },
+ { "matrix": [4, 1], "x": 4, "y": 1 },
+ { "matrix": [4, 0], "x": 5, "y": 1 },
+
+ { "matrix": [11, 0], "x": 10.5, "y": 1 },
+ { "matrix": [11, 1], "x": 11.5, "y": 1 },
+ { "matrix": [11, 2], "x": 12.5, "y": 1 },
+ { "matrix": [11, 3], "x": 13.5, "y": 1 },
+ { "matrix": [11, 4], "x": 14.5, "y": 1 },
+ { "matrix": [11, 5], "x": 15.5, "y": 1 },
+
+ { "matrix": [3, 5], "x": 0, "y": 2 },
+ { "matrix": [3, 4], "x": 1, "y": 2 },
+ { "matrix": [3, 3], "x": 2, "y": 2 },
+ { "matrix": [3, 2], "x": 3, "y": 2 },
+ { "matrix": [3, 1], "x": 4, "y": 2 },
+ { "matrix": [3, 0], "x": 5, "y": 2 },
+
+ { "matrix": [10, 0], "x": 10.5, "y": 2 },
+ { "matrix": [10, 1], "x": 11.5, "y": 2 },
+ { "matrix": [10, 2], "x": 12.5, "y": 2 },
+ { "matrix": [10, 3], "x": 13.5, "y": 2 },
+ { "matrix": [10, 4], "x": 14.5, "y": 2 },
+ { "matrix": [10, 5], "x": 15.5, "y": 2 },
+
+ { "matrix": [2, 5], "x": 0, "y": 3 },
+ { "matrix": [2, 4], "x": 1, "y": 3 },
+ { "matrix": [2, 3], "x": 2, "y": 3 },
+ { "matrix": [2, 2], "x": 3, "y": 3 },
+ { "matrix": [2, 1], "x": 4, "y": 3 },
+ { "matrix": [2, 0], "x": 5, "y": 3 },
+
+ { "matrix": [9, 0], "x": 10.5, "y": 3 },
+ { "matrix": [9, 1], "x": 11.5, "y": 3 },
+ { "matrix": [9, 2], "x": 12.5, "y": 3 },
+ { "matrix": [9, 3], "x": 13.5, "y": 3 },
+ { "matrix": [9, 4], "x": 14.5, "y": 3 },
+ { "matrix": [9, 5], "x": 15.5, "y": 3 },
+
+ { "matrix": [1, 5], "x": 0, "y": 4 },
+ { "matrix": [1, 4], "x": 1, "y": 4 },
+ { "matrix": [1, 3], "x": 2, "y": 4 },
+ { "matrix": [1, 2], "x": 3, "y": 4 },
+
+ { "matrix": [0, 3], "x": 4.5, "y": 4.5 },
+ { "matrix": [0, 2], "x": 5.5, "y": 4.5 },
+ { "matrix": [0, 1], "x": 6.5, "y": 4.5 },
+
+ { "matrix": [7, 1], "x": 9, "y": 4.5 },
+ { "matrix": [7, 2], "x": 10, "y": 4.5 },
+ { "matrix": [7, 3], "x": 11, "y": 4.5 },
+
+ { "matrix": [8, 2], "x": 12.5, "y": 4 },
+ { "matrix": [8, 3], "x": 13.5, "y": 4 },
+ { "matrix": [8, 4], "x": 14.5, "y": 4 },
+ { "matrix": [8, 5], "x": 15.5, "y": 4 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/cyboard/dactyl/single_arc_number_row/keymaps/vial/keymap.c b/keyboards/cyboard/dactyl/single_arc_number_row/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..ca4d5968def
--- /dev/null
+++ b/keyboards/cyboard/dactyl/single_arc_number_row/keymaps/vial/keymap.c
@@ -0,0 +1,88 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_single_arc_num(
+ KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_UP, KC_DOWN, KC_LGUI, KC_LALT, KC_LGUI, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, MO(1), KC_LBRC, KC_RBRC, KC_LEFT, KC_RIGHT
+ ),
+
+ [1] = LAYOUT_single_arc_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_single_arc_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_single_arc_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_single_arc_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_single_arc_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_single_arc_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_single_arc_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_single_arc_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_single_arc_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/dactyl/single_arc_number_row/keymaps/vial/rules.mk b/keyboards/cyboard/dactyl/single_arc_number_row/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..36344e24314
--- /dev/null
+++ b/keyboards/cyboard/dactyl/single_arc_number_row/keymaps/vial/rules.mk
@@ -0,0 +1,9 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
+
diff --git a/keyboards/cyboard/dactyl/single_arc_number_row/keymaps/vial/vial.json b/keyboards/cyboard/dactyl/single_arc_number_row/keymaps/vial/vial.json
new file mode 100644
index 00000000000..f09bdabaacd
--- /dev/null
+++ b/keyboards/cyboard/dactyl/single_arc_number_row/keymaps/vial/vial.json
@@ -0,0 +1,111 @@
+{
+ "name": "Dactyl",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 8
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "5,5",
+ "5,4",
+ "5,3",
+ "5,2",
+ "5,1",
+ "5,0",
+ {
+ "x": 3
+ },
+ "12,0",
+ "12,1",
+ "12,2",
+ "12,3",
+ "12,4",
+ "12,5"
+ ],
+ [
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ "4,0",
+ {
+ "x": 3
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5"
+ ],
+ [
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ "3,0",
+ {
+ "x": 3
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5"
+ ],
+ [
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ "2,0",
+ {
+ "x": 3
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5"
+ ],
+ [
+ "1,5",
+ "1,4",
+ "1,3",
+ "1,2",
+ {
+ "x": 7
+ },
+ "8,2",
+ "8,3",
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 4.25
+ },
+ "0,3",
+ "0,2",
+ "0,1",
+ {
+ "x": 0.5
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/dactyl/single_arc_number_row/rules.mk b/keyboards/cyboard/dactyl/single_arc_number_row/rules.mk
new file mode 100644
index 00000000000..e02abfc9b0e
--- /dev/null
+++ b/keyboards/cyboard/dactyl/single_arc_number_row/rules.mk
@@ -0,0 +1 @@
+
diff --git a/keyboards/cyboard/dactyl_manuform_6x6_underglow/config.h b/keyboards/cyboard/dactyl_manuform_6x6_underglow/config.h
new file mode 100644
index 00000000000..ac9bf68a575
--- /dev/null
+++ b/keyboards/cyboard/dactyl_manuform_6x6_underglow/config.h
@@ -0,0 +1,100 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* Key matrix definitions */
+#define MATRIX_ROWS 14
+#define MATRIX_COLS 7
+#define MATRIX_ROW_PINS { GP8, GP7, GP28, GP6, GP23, GP27, GP21 }
+#define MATRIX_COL_PINS { GP9, GP26, GP22, GP20, GP29, GP4, GP5 }
+#define DIODE_DIRECTION ROW2COL
+
+/* Split keyboard settings */
+#define SOFT_SERIAL_PIN GP0
+#define MASTER_LEFT
+
+/* RGB settings */
+#define RGB_DI_PIN GP1
+#define RGBLED_NUM 124
+#define RGBLED_SPLIT { 62, 62 }
+#ifdef RGB_MATRIX_ENABLE
+# define SPLIT_TRANSPORT_MIRROR
+# define DRIVER_LED_TOTAL RGBLED_NUM
+# define RGB_MATRIX_SPLIT RGBLED_SPLIT
+# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 60
+# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_REACTIVE // Sets the default mode, if none has been set
+# define RGB_MATRIX_STARTUP_HUE 33 // Sets the default hue value, if none has been set
+# define RGB_MATRIX_STARTUP_SAT 255 // Sets the default saturation value, if none has been set
+# define RGB_MATRIX_STARTUP_SPD 50
+# define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
+# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# define RGB_MATRIX_KEYPRESSES
+# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+// RGB Matrix Animation modes. Explicitly enabled
+// For full list of effects, see:
+// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
+# define ENABLE_RGB_MATRIX_ALPHAS_MODS
+# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+# define ENABLE_RGB_MATRIX_BREATHING
+# define ENABLE_RGB_MATRIX_BAND_SAT
+# define ENABLE_RGB_MATRIX_BAND_VAL
+# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+# define ENABLE_RGB_MATRIX_CYCLE_ALL
+# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+# define ENABLE_RGB_MATRIX_DUAL_BEACON
+# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+# define ENABLE_RGB_MATRIX_RAINDROPS
+# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+# define ENABLE_RGB_MATRIX_HUE_BREATHING
+# define ENABLE_RGB_MATRIX_HUE_PENDULUM
+# define ENABLE_RGB_MATRIX_HUE_WAVE
+# define ENABLE_RGB_MATRIX_PIXEL_RAIN
+# define ENABLE_RGB_MATRIX_PIXEL_FLOW
+# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
+# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+# define ENABLE_RGB_MATRIX_SPLASH
+# define ENABLE_RGB_MATRIX_MULTISPLASH
+# define ENABLE_RGB_MATRIX_SOLID_SPLASH
+# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* Double-tap reset button parameters */
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U
+
+// fix for device detection after cold boot
+// https://github.com/qmk/qmk_firmware/issues/18511#issuecomment-1264604610
+// https://github.com/qmk/qmk_firmware/issues/8990#issuecomment-851055637
+#undef SPLIT_USB_DETECT
+//https://www.reddit.com/r/ErgoMechKeyboards/comments/11qevf9/comment/jc5y8ux/?context=3
+#define USB_VBUS_PIN GP19
diff --git a/keyboards/cyboard/dactyl_manuform_6x6_underglow/dactyl_manuform_6x6_underglow.c b/keyboards/cyboard/dactyl_manuform_6x6_underglow/dactyl_manuform_6x6_underglow.c
new file mode 100644
index 00000000000..08225c469bb
--- /dev/null
+++ b/keyboards/cyboard/dactyl_manuform_6x6_underglow/dactyl_manuform_6x6_underglow.c
@@ -0,0 +1,64 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "dactyl_manuform_6x6_underglow.h"
+
+#ifdef RGB_MATRIX_ENABLE
+led_config_t g_led_config = { {
+ // left
+ { 29, 30, 31, NO_LED, NO_LED, NO_LED, NO_LED }, \
+ { 28, 27, 32, 38, 44, 50, 56 }, \
+ { NO_LED, 22, 33, 39, 45, 51, 57 }, \
+ { NO_LED, 23, 34, 40, 46, 52, 58 }, \
+ { NO_LED, 24, 35, 41, 47, 53, 59 }, \
+ { NO_LED, 25, 36, 42, 48, 54, 60 }, \
+ { NO_LED, 26, 37, 43, 49, 55, 61 }, \
+ // right
+ { 91, 92, 93, NO_LED, NO_LED, NO_LED, NO_LED }, \
+ { 90, 89, 94, 100, 106, 112, 118 }, \
+ { NO_LED, 84, 95, 101, 107, 113, 119 }, \
+ { NO_LED, 85, 96, 102, 108, 114, 120 }, \
+ { NO_LED, 86, 97, 103, 109, 115, 121 }, \
+ { NO_LED, 87, 98, 104, 110, 116, 122 }, \
+ { NO_LED, 88, 99, 105, 111, 117, 123 } \
+}, {
+ // left underglow strip
+ { 86, 43 }, { 86, 32 }, { 86, 21 }, { 86, 11 }, { 86, 0 }, { 86, 53 }, { 103, 53 }, { 103, 64 }, { 86, 64 }, { 69, 64 },
+ { 69, 53 }, { 69, 43 }, { 69, 32 }, { 69, 21 }, { 69, 11 }, { 69, 0 }, { 52, 53 }, { 52, 43 }, { 52, 32 }, { 52, 21 },
+ { 52, 11 }, { 52, 0 },
+ // left per-key
+ { 86, 43 }, { 86, 32 }, { 86, 21 }, { 86, 11 }, { 86, 0 }, { 86, 53 }, { 103, 53 }, { 103, 64 }, { 86, 64 }, { 69, 64 },
+ { 69, 53 }, { 69, 43 }, { 69, 32 }, { 69, 21 }, { 69, 11 }, { 69, 0 }, { 52, 53 }, { 52, 43 }, { 52, 32 }, { 52, 21 },
+ { 52, 11 }, { 52, 0 }, { 34, 53 }, { 34, 43 }, { 34, 32 }, { 34, 21 }, { 34, 11 }, { 34, 0 }, { 17, 53 }, { 17, 43 },
+ { 17, 32 }, { 17, 21 }, { 17, 11 }, { 17, 0 }, { 0, 53 }, { 0, 43 }, { 0, 32 }, { 0, 21 }, { 0, 11 }, { 0, 0 },
+ // right underglow strip
+ { 138, 43 }, { 138, 32 }, { 138, 21 }, { 138, 11 }, { 138, 0 }, { 138, 53 }, { 121, 53 }, { 121, 64 }, { 138, 64 }, { 155, 64 },
+ { 155, 53 }, { 155, 43 }, { 155, 32 }, { 155, 21 }, { 155, 11 }, { 155, 0 }, { 172, 53 }, { 172, 43 }, { 172, 32 }, { 172, 21 },
+ { 172, 11 }, { 172, 0 },
+ // right per-key
+ { 138, 43 }, { 138, 32 }, { 138, 21 }, { 138, 11 }, { 138, 0 }, { 138, 53 }, { 121, 53 }, { 121, 64 }, { 138, 64 }, { 155, 64 },
+ { 155, 53 }, { 155, 43 }, { 155, 32 }, { 155, 21 }, { 155, 11 }, { 155, 0 }, { 172, 53 }, { 172, 43 }, { 172, 32 }, { 172, 21 },
+ { 172, 11 }, { 172, 0 }, { 190, 53 }, { 190, 43 }, { 190, 32 }, { 190, 21 }, { 190, 11 }, { 190, 0 }, { 207, 53 }, { 207, 43 },
+ { 207, 32 }, { 207, 21 }, { 207, 11 }, { 207, 0 }, { 224, 53 }, { 224, 43 }, { 224, 32 }, { 224, 21 }, { 224, 11 }, { 224, 0 }
+}, {
+ //left underglow strip
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2,
+ // left per-key
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ //right underglow strip
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2,
+ // right per-key
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4
+} };
+#endif
diff --git a/keyboards/cyboard/dactyl_manuform_6x6_underglow/dactyl_manuform_6x6_underglow.h b/keyboards/cyboard/dactyl_manuform_6x6_underglow/dactyl_manuform_6x6_underglow.h
new file mode 100644
index 00000000000..50e3876e64f
--- /dev/null
+++ b/keyboards/cyboard/dactyl_manuform_6x6_underglow/dactyl_manuform_6x6_underglow.h
@@ -0,0 +1,291 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_manuform_function_row( \
+ r6c6, r6c5, r6c4, r6c3, r6c2, r6c1, r13c8, r13c9, r13c10, r13c11, r13c12, r13c13, \
+ r5c6, r5c5, r5c4, r5c3, r5c2, r5c1, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13, \
+ r4c6, r4c5, r4c4, r4c3, r4c2, r4c1, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13, \
+ r3c6, r3c5, r3c4, r3c3, r3c2, r3c1, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13, \
+ r2c6, r2c5, r2c4, r2c3, r2c2, r2c1, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13, \
+ r1c6, r1c5, r1c4, r1c3, r1c2, r1c1, r1c0, r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13, \
+ r0c2, r0c1, r0c0, r7c7, r7c8, r7c9 \
+) \
+{ \
+ { r0c0, r0c1, r0c2, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r1c0, r1c1, r1c2, r1c3, r1c4, r1c5, r1c6 }, \
+ { KC_NO, r2c1, r2c2, r2c3, r2c4, r2c5, r2c6 }, \
+ { KC_NO, r3c1, r3c2, r3c3, r3c4, r3c5, r3c6 }, \
+ { KC_NO, r4c1, r4c2, r4c3, r4c4, r4c5, r4c6 }, \
+ { KC_NO, r5c1, r5c2, r5c3, r5c4, r5c5, r5c6 }, \
+ { KC_NO, r6c1, r6c2, r6c3, r6c4, r6c5, r6c6 }, \
+\
+ { r7c7, r7c8, r7c9, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13 }, \
+ { KC_NO, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13 }, \
+ { KC_NO, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13 }, \
+ { KC_NO, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13 }, \
+ { KC_NO, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13 }, \
+ { KC_NO, r13c8, r13c9, r13c10, r13c11, r13c12, r13c13 } \
+}
+
+#define LAYOUT_manuform_number_row( \
+ r5c6, r5c5, r5c4, r5c3, r5c2, r5c1, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13, \
+ r4c6, r4c5, r4c4, r4c3, r4c2, r4c1, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13, \
+ r3c6, r3c5, r3c4, r3c3, r3c2, r3c1, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13, \
+ r2c6, r2c5, r2c4, r2c3, r2c2, r2c1, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13, \
+ r1c6, r1c5, r1c4, r1c3, r1c2, r1c1, r1c0, r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13, \
+ r0c2, r0c1, r0c0, r7c7, r7c8, r7c9 \
+) \
+{ \
+ { r0c0, r0c1, r0c2, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r1c0, r1c1, r1c2, r1c3, r1c4, r1c5, r1c6 }, \
+ { KC_NO, r2c1, r2c2, r2c3, r2c4, r2c5, r2c6 }, \
+ { KC_NO, r3c1, r3c2, r3c3, r3c4, r3c5, r3c6 }, \
+ { KC_NO, r4c1, r4c2, r4c3, r4c4, r4c5, r4c6 }, \
+ { KC_NO, r5c1, r5c2, r5c3, r5c4, r5c5, r5c6 }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+\
+ { r7c7, r7c8, r7c9, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13 }, \
+ { KC_NO, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13 }, \
+ { KC_NO, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13 }, \
+ { KC_NO, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13 }, \
+ { KC_NO, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13 }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
+}
+
+#define LAYOUT_manuform_letters_only( \
+ r4c6, r4c5, r4c4, r4c3, r4c2, r4c1, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13, \
+ r3c6, r3c5, r3c4, r3c3, r3c2, r3c1, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13, \
+ r2c6, r2c5, r2c4, r2c3, r2c2, r2c1, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13, \
+ r1c6, r1c5, r1c4, r1c3, r1c2, r1c1, r1c0, r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13, \
+ r0c2, r0c1, r0c0, r7c7, r7c8, r7c9 \
+) \
+{ \
+ { r0c0, r0c1, r0c2, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r1c0, r1c1, r1c2, r1c3, r1c4, r1c5, r1c6 }, \
+ { KC_NO, r2c1, r2c2, r2c3, r2c4, r2c5, r2c6 }, \
+ { KC_NO, r3c1, r3c2, r3c3, r3c4, r3c5, r3c6 }, \
+ { KC_NO, r4c1, r4c2, r4c3, r4c4, r4c5, r4c6 }, \
+ { 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 }, \
+\
+ { r7c7, r7c8, r7c9, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13 }, \
+ { KC_NO, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13 }, \
+ { KC_NO, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13 }, \
+ { KC_NO, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13 }, \
+ { 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 } \
+}
+
+#define LAYOUT_dualarcs_function_row( \
+ r6c6, r6c5, r6c4, r6c3, r6c2, r6c1, r13c8, r13c9, r13c10, r13c11, r13c12, r13c13, \
+ r5c6, r5c5, r5c4, r5c3, r5c2, r5c1, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13, \
+ r4c6, r4c5, r4c4, r4c3, r4c2, r4c1, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13, \
+ r3c6, r3c5, r3c4, r3c3, r3c2, r3c1, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13, \
+ r2c6, r2c5, r2c4, r2c3, r2c2, r2c1, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13, \
+ r1c6, r1c5, r1c4, r1c3, r1c2, r1c1, r1c0, r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13, \
+ r0c1, r0c0, r7c7, r7c8 \
+) \
+{ \
+ { r0c0, r0c1, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r1c0, r1c1, r1c2, r1c3, r1c4, r1c5, r1c6 }, \
+ { KC_NO, r2c1, r2c2, r2c3, r2c4, r2c5, r2c6 }, \
+ { KC_NO, r3c1, r3c2, r3c3, r3c4, r3c5, r3c6 }, \
+ { KC_NO, r4c1, r4c2, r4c3, r4c4, r4c5, r4c6 }, \
+ { KC_NO, r5c1, r5c2, r5c3, r5c4, r5c5, r5c6 }, \
+ { KC_NO, r6c1, r6c2, r6c3, r6c4, r6c5, r6c6 }, \
+\
+ { r7c7, r7c8, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13 }, \
+ { KC_NO, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13 }, \
+ { KC_NO, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13 }, \
+ { KC_NO, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13 }, \
+ { KC_NO, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13 }, \
+ { KC_NO, r13c8, r13c9, r13c10, r13c11, r13c12, r13c13 } \
+}
+
+#define LAYOUT_dualarcs_number_row( \
+ r5c6, r5c5, r5c4, r5c3, r5c2, r5c1, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13, \
+ r4c6, r4c5, r4c4, r4c3, r4c2, r4c1, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13, \
+ r3c6, r3c5, r3c4, r3c3, r3c2, r3c1, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13, \
+ r2c6, r2c5, r2c4, r2c3, r2c2, r2c1, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13, \
+ r1c6, r1c5, r1c4, r1c3, r1c2, r1c1, r1c0, r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13, \
+ r0c1, r0c0, r7c7, r7c8 \
+) \
+{ \
+ { r0c0, r0c1, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r1c0, r1c1, r1c2, r1c3, r1c4, r1c5, r1c6 }, \
+ { KC_NO, r2c1, r2c2, r2c3, r2c4, r2c5, r2c6 }, \
+ { KC_NO, r3c1, r3c2, r3c3, r3c4, r3c5, r3c6 }, \
+ { KC_NO, r4c1, r4c2, r4c3, r4c4, r4c5, r4c6 }, \
+ { KC_NO, r5c1, r5c2, r5c3, r5c4, r5c5, r5c6 }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+\
+ { r7c7, r7c8, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13 }, \
+ { KC_NO, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13 }, \
+ { KC_NO, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13 }, \
+ { KC_NO, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13 }, \
+ { KC_NO, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13 }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
+}
+
+#define LAYOUT_dualarcs_letters_only( \
+ r4c6, r4c5, r4c4, r4c3, r4c2, r4c1, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13, \
+ r3c6, r3c5, r3c4, r3c3, r3c2, r3c1, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13, \
+ r2c6, r2c5, r2c4, r2c3, r2c2, r2c1, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13, \
+ r1c6, r1c5, r1c4, r1c3, r1c2, r1c1, r1c0, r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13, \
+ r0c1, r0c0, r7c7, r7c8 \
+) \
+{ \
+ { r0c0, r0c1, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r1c0, r1c1, r1c2, r1c3, r1c4, r1c5, r1c6 }, \
+ { KC_NO, r2c1, r2c2, r2c3, r2c4, r2c5, r2c6 }, \
+ { KC_NO, r3c1, r3c2, r3c3, r3c4, r3c5, r3c6 }, \
+ { KC_NO, r4c1, r4c2, r4c3, r4c4, r4c5, r4c6 }, \
+ { 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 }, \
+\
+ { r7c7, r7c8, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13 }, \
+ { KC_NO, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13 }, \
+ { KC_NO, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13 }, \
+ { KC_NO, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13 }, \
+ { 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 } \
+}
+
+#define LAYOUT_singlearc_function_row( \
+ r6c6, r6c5, r6c4, r6c3, r6c2, r6c1, r13c8, r13c9, r13c10, r13c11, r13c12, r13c13, \
+ r5c6, r5c5, r5c4, r5c3, r5c2, r5c1, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13, \
+ r4c6, r4c5, r4c4, r4c3, r4c2, r4c1, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13, \
+ r3c6, r3c5, r3c4, r3c3, r3c2, r3c1, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13, \
+ r2c6, r2c5, r2c4, r2c3, r2c2, r2c1, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13, \
+ r1c6, r1c5, r1c4, r1c3, r1c2, r1c1, r1c0, r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13 \
+) \
+{ \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r1c0, r1c1, r1c2, r1c3, r1c4, r1c5, r1c6 }, \
+ { KC_NO, r2c1, r2c2, r2c3, r2c4, r2c5, r2c6 }, \
+ { KC_NO, r3c1, r3c2, r3c3, r3c4, r3c5, r3c6 }, \
+ { KC_NO, r4c1, r4c2, r4c3, r4c4, r4c5, r4c6 }, \
+ { KC_NO, r5c1, r5c2, r5c3, r5c4, r5c5, r5c6 }, \
+ { KC_NO, r6c1, r6c2, r6c3, r6c4, r6c5, r6c6 }, \
+\
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13 }, \
+ { KC_NO, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13 }, \
+ { KC_NO, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13 }, \
+ { KC_NO, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13 }, \
+ { KC_NO, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13 }, \
+ { KC_NO, r13c8, r13c9, r13c10, r13c11, r13c12, r13c13 } \
+}
+
+#define LAYOUT_singlearc_number_row( \
+ r5c6, r5c5, r5c4, r5c3, r5c2, r5c1, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13, \
+ r4c6, r4c5, r4c4, r4c3, r4c2, r4c1, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13, \
+ r3c6, r3c5, r3c4, r3c3, r3c2, r3c1, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13, \
+ r2c6, r2c5, r2c4, r2c3, r2c2, r2c1, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13, \
+ r1c6, r1c5, r1c4, r1c3, r1c2, r1c1, r1c0, r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13 \
+) \
+{ \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r1c0, r1c1, r1c2, r1c3, r1c4, r1c5, r1c6 }, \
+ { KC_NO, r2c1, r2c2, r2c3, r2c4, r2c5, r2c6 }, \
+ { KC_NO, r3c1, r3c2, r3c3, r3c4, r3c5, r3c6 }, \
+ { KC_NO, r4c1, r4c2, r4c3, r4c4, r4c5, r4c6 }, \
+ { KC_NO, r5c1, r5c2, r5c3, r5c4, r5c5, r5c6 }, \
+ { 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 }, \
+ { r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13 }, \
+ { KC_NO, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13 }, \
+ { KC_NO, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13 }, \
+ { KC_NO, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13 }, \
+ { KC_NO, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13 }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
+}
+
+#define LAYOUT_singlearc_letters_only( \
+ r4c6, r4c5, r4c4, r4c3, r4c2, r4c1, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13, \
+ r3c6, r3c5, r3c4, r3c3, r3c2, r3c1, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13, \
+ r2c6, r2c5, r2c4, r2c3, r2c2, r2c1, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13, \
+ r1c6, r1c5, r1c4, r1c3, r1c2, r1c1, r1c0, r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13 \
+) \
+{ \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r1c0, r1c1, r1c2, r1c3, r1c4, r1c5, r1c6 }, \
+ { KC_NO, r2c1, r2c2, r2c3, r2c4, r2c5, r2c6 }, \
+ { KC_NO, r3c1, r3c2, r3c3, r3c4, r3c5, r3c6 }, \
+ { KC_NO, r4c1, r4c2, r4c3, r4c4, r4c5, r4c6 }, \
+ { 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 }, \
+ { r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13 }, \
+ { KC_NO, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13 }, \
+ { KC_NO, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13 }, \
+ { KC_NO, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13 }, \
+ { 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 } \
+}
+
+#define LAYOUT_dualarcs2x3_function_row_noextrapinky( \
+ r6c6, r6c5, r6c4, r6c3, r6c2, r6c1, r13c8, r13c9, r13c10, r13c11, r13c12, r13c13, \
+ r5c6, r5c5, r5c4, r5c3, r5c2, r5c1, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13, \
+ r4c6, r4c5, r4c4, r4c3, r4c2, r4c1, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13, \
+ r3c6, r3c5, r3c4, r3c3, r3c2, r3c1, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13, \
+ r2c6, r2c5, r2c4, r2c3, r2c2, r2c1, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13, \
+ r1c4, r1c3, r1c2, r1c1, r1c0, r8c7, r8c8, r8c9, r8c10, r8c11, \
+ r0c2, r0c1, r0c0, r7c7, r7c8, r7c9 \
+) \
+{ \
+ { r0c0, r0c1, r0c2, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r1c0, r1c1, r1c2, r1c3, r1c4, KC_NO, KC_NO }, \
+ { KC_NO, r2c1, r2c2, r2c3, r2c4, r2c5, r2c6 }, \
+ { KC_NO, r3c1, r3c2, r3c3, r3c4, r3c5, r3c6 }, \
+ { KC_NO, r4c1, r4c2, r4c3, r4c4, r4c5, r4c6 }, \
+ { KC_NO, r5c1, r5c2, r5c3, r5c4, r5c5, r5c6 }, \
+ { KC_NO, r6c1, r6c2, r6c3, r6c4, r6c5, r6c6 }, \
+\
+ { r7c7, r7c8, r7c9, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r8c7, r8c8, r8c9, r8c10, r8c11, KC_NO, KC_NO }, \
+ { KC_NO, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13 }, \
+ { KC_NO, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13 }, \
+ { KC_NO, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13 }, \
+ { KC_NO, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13 }, \
+ { KC_NO, r13c8, r13c9, r13c10, r13c11, r13c12, r13c13 } \
+}
+
+#define LAYOUT_manuform_number_row_noextrapinky( \
+ r5c6, r5c5, r5c4, r5c3, r5c2, r5c1, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13, \
+ r4c6, r4c5, r4c4, r4c3, r4c2, r4c1, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13, \
+ r3c6, r3c5, r3c4, r3c3, r3c2, r3c1, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13, \
+ r2c6, r2c5, r2c4, r2c3, r2c2, r2c1, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13, \
+ r1c4, r1c3, r1c2, r1c1, r1c0, r8c7, r8c8, r8c9, r8c10, r8c11, \
+ r0c2, r0c1, r0c0, r7c7, r7c8, r7c9 \
+) \
+{ \
+ { r0c0, r0c1, r0c2, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r1c0, r1c1, r1c2, r1c3, r1c4, KC_NO, KC_NO }, \
+ { KC_NO, r2c1, r2c2, r2c3, r2c4, r2c5, r2c6 }, \
+ { KC_NO, r3c1, r3c2, r3c3, r3c4, r3c5, r3c6 }, \
+ { KC_NO, r4c1, r4c2, r4c3, r4c4, r4c5, r4c6 }, \
+ { KC_NO, r5c1, r5c2, r5c3, r5c4, r5c5, r5c6 }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+\
+ { r7c7, r7c8, r7c9, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r8c7, r8c8, r8c9, r8c10, r8c11, KC_NO, KC_NO }, \
+ { KC_NO, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13 }, \
+ { KC_NO, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13 }, \
+ { KC_NO, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13 }, \
+ { KC_NO, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13 }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
+}
diff --git a/keyboards/cyboard/dactyl_manuform_6x6_underglow/info.json b/keyboards/cyboard/dactyl_manuform_6x6_underglow/info.json
new file mode 100644
index 00000000000..a091fe26362
--- /dev/null
+++ b/keyboards/cyboard/dactyl_manuform_6x6_underglow/info.json
@@ -0,0 +1,11 @@
+{
+ "manufacturer": "Cyboard",
+ "maintainer": "Erik Trinkle",
+ "url": "https://cyboard.digital",
+ "keyboard_name": "Dactyl",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "1.0.0"
+ }
+}
diff --git a/keyboards/cyboard/dactyl_manuform_6x6_underglow/keymaps/default/config.h b/keyboards/cyboard/dactyl_manuform_6x6_underglow/keymaps/default/config.h
new file mode 100644
index 00000000000..540d390e0e0
--- /dev/null
+++ b/keyboards/cyboard/dactyl_manuform_6x6_underglow/keymaps/default/config.h
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xBF, 0xD5, 0x55, 0xA8, 0x17, 0xBA, 0xA6, 0x13}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 10, 10 }
+#define VIAL_UNLOCK_COMBO_COLS { 5, 6 }
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 10
diff --git a/keyboards/cyboard/dactyl_manuform_6x6_underglow/keymaps/default/keymap.c b/keyboards/cyboard/dactyl_manuform_6x6_underglow/keymaps/default/keymap.c
new file mode 100644
index 00000000000..7199c56a44a
--- /dev/null
+++ b/keyboards/cyboard/dactyl_manuform_6x6_underglow/keymaps/default/keymap.c
@@ -0,0 +1,88 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_dualarcs_letters_only(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_UP, KC_DOWN, KC_LGUI, KC_LALT, KC_LGUI, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, MO(2), KC_LBRC, KC_RBRC, KC_LEFT, KC_RIGHT,
+ KC_GRAVE, KC_ESC, KC_CAPS, KC_APP
+ ),
+
+ [1] = LAYOUT_dualarcs_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_dualarcs_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_dualarcs_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_dualarcs_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_dualarcs_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_dualarcs_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_dualarcs_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_dualarcs_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_dualarcs_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/dactyl_manuform_6x6_underglow/keymaps/default/rules.mk b/keyboards/cyboard/dactyl_manuform_6x6_underglow/keymaps/default/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/dactyl_manuform_6x6_underglow/keymaps/default/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/dactyl_manuform_6x6_underglow/keymaps/default/vial.json b/keyboards/cyboard/dactyl_manuform_6x6_underglow/keymaps/default/vial.json
new file mode 100644
index 00000000000..89a3294a030
--- /dev/null
+++ b/keyboards/cyboard/dactyl_manuform_6x6_underglow/keymaps/default/vial.json
@@ -0,0 +1,106 @@
+{
+ "name": "Dactyl",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 7
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "4,6",
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ {
+ "x": 3
+ },
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5",
+ "11,6"
+ ],
+ [
+ "3,6",
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ {
+ "x": 3
+ },
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ "2,6",
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ {
+ "x": 3
+ },
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ "1,6",
+ "1,5",
+ "1,4",
+ "1,3",
+ {
+ "x": 7
+ },
+ "8,3",
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 4.25
+ },
+ "1,2",
+ "1,1",
+ "1,0",
+ {
+ "x": 0.5
+ },
+ "8,0",
+ "8,1",
+ "8,2"
+ ],
+ [
+ {
+ "x": 5.25
+ },
+ "0,1",
+ "0,0",
+ {
+ "x": 0.5
+ },
+ "7,0",
+ "7,1"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/dactyl_manuform_6x6_underglow/keymaps/manuform_function_row/config.h b/keyboards/cyboard/dactyl_manuform_6x6_underglow/keymaps/manuform_function_row/config.h
new file mode 100644
index 00000000000..85193fd60e9
--- /dev/null
+++ b/keyboards/cyboard/dactyl_manuform_6x6_underglow/keymaps/manuform_function_row/config.h
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xC4, 0xCC, 0xB4, 0x76, 0x30, 0x16, 0xFC, 0x70}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 10, 10 }
+#define VIAL_UNLOCK_COMBO_COLS { 5, 6 }
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 10
diff --git a/keyboards/cyboard/dactyl_manuform_6x6_underglow/keymaps/manuform_function_row/keymap.c b/keyboards/cyboard/dactyl_manuform_6x6_underglow/keymaps/manuform_function_row/keymap.c
new file mode 100644
index 00000000000..aedbb7e5fb7
--- /dev/null
+++ b/keyboards/cyboard/dactyl_manuform_6x6_underglow/keymaps/manuform_function_row/keymap.c
@@ -0,0 +1,108 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_manuform_function_row(
+ 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_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_UP, KC_DOWN, KC_LGUI, KC_LALT, KC_LGUI, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, MO(2), KC_LBRC, KC_RBRC, KC_LEFT, KC_RIGHT,
+ KC_HOME, KC_END, KC_ESC, MO(3), KC_CAPS, KC_APP
+ ),
+
+ [1] = LAYOUT_manuform_function_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_manuform_function_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_manuform_function_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_manuform_function_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_manuform_function_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_manuform_function_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_manuform_function_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_manuform_function_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_manuform_function_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/dactyl_manuform_6x6_underglow/keymaps/manuform_function_row/rules.mk b/keyboards/cyboard/dactyl_manuform_6x6_underglow/keymaps/manuform_function_row/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/dactyl_manuform_6x6_underglow/keymaps/manuform_function_row/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/dactyl_manuform_6x6_underglow/keymaps/manuform_function_row/vial.json b/keyboards/cyboard/dactyl_manuform_6x6_underglow/keymaps/manuform_function_row/vial.json
new file mode 100644
index 00000000000..49745f24010
--- /dev/null
+++ b/keyboards/cyboard/dactyl_manuform_6x6_underglow/keymaps/manuform_function_row/vial.json
@@ -0,0 +1,151 @@
+{
+ "name": "Dactyl",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 7
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "6,6",
+ "6,5",
+ "6,4",
+ "6,3",
+ "6,2",
+ "6,1",
+ {
+ "x": 5.5
+ },
+ "13,1",
+ "13,2",
+ "13,3",
+ "13,4",
+ "13,5",
+ "13,6"
+ ],
+ [
+ "5,6",
+ "5,5",
+ "5,4",
+ "5,3",
+ "5,2",
+ "5,1",
+ {
+ "x": 5.5
+ },
+ "12,1",
+ "12,2",
+ "12,3",
+ "12,4",
+ "12,5",
+ "12,6"
+ ],
+ [
+ "4,6",
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ {
+ "x": 5.5
+ },
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5",
+ "11,6"
+ ],
+ [
+ "3,6",
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ {
+ "x": 5.5
+ },
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ "2,6",
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ {
+ "x": 5.5
+ },
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ "1,6",
+ "1,5",
+ "1,4",
+ "1,3",
+ {
+ "x": 9.5
+ },
+ "8,3",
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4.5
+ },
+ "1,2",
+ "1,1",
+ {
+ "x": 4.5
+ },
+ "8,1",
+ "8,2"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 6.5
+ },
+ "1,0",
+ "0,0",
+ {
+ "x": 0.5
+ },
+ "7,0",
+ "8,0"
+ ],
+ [
+ {
+ "x": 6.5
+ },
+ "0,2",
+ "0,1",
+ {
+ "x": 0.5
+ },
+ "7,1",
+ "7,2"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/dactyl_manuform_6x6_underglow/readme.md b/keyboards/cyboard/dactyl_manuform_6x6_underglow/readme.md
new file mode 100644
index 00000000000..0fe694188b5
--- /dev/null
+++ b/keyboards/cyboard/dactyl_manuform_6x6_underglow/readme.md
@@ -0,0 +1,19 @@
+#Cyboard Dactyl Manuform 6x6 with 22 underglow LEDs on each half.
+
+* Keyboard Maintainer: [Cyboard](https://github.com/Cyboard-DigitalTailor)
+* Hardware Supported: Cyboard Dactyls
+* Hardware Availability: [cyboard.digital](https://www.cyboard.digital/product-page/Dactyl-Manuform)
+
+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).
+
+## Building Firmware
+
+To build the firmware, use the command:
+`qmk compile -kb cyboard/dactyl_manuform_6x6_underglow -km manuform_function_row`
+
+## Flashing
+
+To flash the firmware to your Cyboard,
+1. Enter the bootloader by double-tapping the reset button on the back of the board, next to the USB port.
+2. A USB device called `RPI-RP2` should appear on your computer.
+3. Drag the `.uf2` firmware file into `RPI-RP2`. `RPI-RP2` should now disappear, and your Cyboard is ready to use with your new firmware!
diff --git a/keyboards/cyboard/dactyl_manuform_6x6_underglow/rules.mk b/keyboards/cyboard/dactyl_manuform_6x6_underglow/rules.mk
new file mode 100644
index 00000000000..c10beb0815e
--- /dev/null
+++ b/keyboards/cyboard/dactyl_manuform_6x6_underglow/rules.mk
@@ -0,0 +1,28 @@
+# MCU name
+MCU = RP2040
+
+# Bootloader selection
+BOOTLOADER = rp2040
+
+# Build Options
+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
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+NKRO_ENABLE = no # USB Nkey Rollover
+SPLIT_KEYBOARD = yes
+
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+AUDIO_SUPPORTED = no # Audio is not supported
+RGB_MATRIX_SUPPORTED = yes # RGB matrix is supported and enabled by default
+RGBLIGHT_SUPPORTED = yes # RGB underglow is supported, but not enabled by default
+RGB_MATRIX_ENABLE = yes # Enable keyboard RGB matrix (do not use together with RGBLIGHT_ENABLE)
+RGB_MATRIX_DRIVER = WS2812 # RGB matrix driver support
+
+SERIAL_DRIVER = vendor
+WS2812_DRIVER = vendor
+
+# https://github.com/qmk/qmk_firmware/issues/19593#issuecomment-1387476045
+NO_USB_STARTUP_CHECK = yes
diff --git a/keyboards/cyboard/dactyl_underglow/config.h b/keyboards/cyboard/dactyl_underglow/config.h
new file mode 100644
index 00000000000..49929b2b32e
--- /dev/null
+++ b/keyboards/cyboard/dactyl_underglow/config.h
@@ -0,0 +1,101 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* Key matrix definitions */
+#define MATRIX_ROWS 14
+#define MATRIX_COLS 7
+#define MATRIX_ROW_PINS { GP8, GP7, GP28, GP6, GP23, GP27, GP21 }
+#define MATRIX_COL_PINS { GP9, GP26, GP22, GP20, GP29, GP4, GP5 }
+#define DIODE_DIRECTION ROW2COL
+
+/* Split keyboard settings */
+#define SOFT_SERIAL_PIN GP0
+#define MASTER_LEFT
+
+/* RGB settings */
+#define RGB_DI_PIN GP1
+#define RGBLED_NUM 102
+#define RGBLED_SPLIT { 51, 51 }
+#ifdef RGB_MATRIX_ENABLE
+# define SPLIT_TRANSPORT_MIRROR
+# define DRIVER_LED_TOTAL RGBLED_NUM
+# define RGB_MATRIX_SPLIT RGBLED_SPLIT
+# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120
+# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_REACTIVE // Sets the default mode, if none has been set
+# define RGB_MATRIX_STARTUP_HUE 33 // Sets the default hue value, if none has been set
+# define RGB_MATRIX_STARTUP_SAT 255 // Sets the default saturation value, if none has been set
+# define RGB_MATRIX_STARTUP_SPD 50
+# define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
+# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# define RGB_MATRIX_KEYPRESSES
+# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+// RGB Matrix Animation modes. Explicitly enabled
+// For full list of effects, see:
+// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
+# define ENABLE_RGB_MATRIX_ALPHAS_MODS
+# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+# define ENABLE_RGB_MATRIX_BREATHING
+# define ENABLE_RGB_MATRIX_BAND_SAT
+# define ENABLE_RGB_MATRIX_BAND_VAL
+# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+# define ENABLE_RGB_MATRIX_CYCLE_ALL
+# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+# define ENABLE_RGB_MATRIX_DUAL_BEACON
+# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+# define ENABLE_RGB_MATRIX_RAINDROPS
+# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+# define ENABLE_RGB_MATRIX_HUE_BREATHING
+# define ENABLE_RGB_MATRIX_HUE_PENDULUM
+# define ENABLE_RGB_MATRIX_HUE_WAVE
+# define ENABLE_RGB_MATRIX_PIXEL_RAIN
+# define ENABLE_RGB_MATRIX_PIXEL_FLOW
+# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
+# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+# define ENABLE_RGB_MATRIX_SPLASH
+# define ENABLE_RGB_MATRIX_MULTISPLASH
+# define ENABLE_RGB_MATRIX_SOLID_SPLASH
+# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* Double-tap reset button parameters */
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U
+
+/* Bootmagic */
+#define BOOTMAGIC_LITE_ROW 3
+#define BOOTMAGIC_LITE_COLUMN 2
+
+// https://github.com/qmk/qmk_firmware/issues/18511#issuecomment-1264604610
+// https://github.com/qmk/qmk_firmware/issues/8990#issuecomment-851055637
+#undef SPLIT_USB_DETECT
diff --git a/keyboards/cyboard/dactyl_underglow/dactyl_underglow.c b/keyboards/cyboard/dactyl_underglow/dactyl_underglow.c
new file mode 100644
index 00000000000..c78a175b79a
--- /dev/null
+++ b/keyboards/cyboard/dactyl_underglow/dactyl_underglow.c
@@ -0,0 +1,57 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "dactyl_underglow.h"
+
+#ifdef RGB_MATRIX_ENABLE
+led_config_t g_led_config = { {
+ // left
+ { 7, 8, 9, NO_LED, NO_LED, NO_LED, NO_LED }, \
+ { 6, 5, 10, 16, 22, 28, 34 }, \
+ { NO_LED, 0, 11, 17, 23, 29, 35 }, \
+ { NO_LED, 1, 12, 18, 24, 30, 36 }, \
+ { NO_LED, 2, 13, 19, 25, 31, 37 }, \
+ { NO_LED, 3, 14, 20, 26, 32, 38 }, \
+ { NO_LED, 4, 15, 21, 27, 33, 39 }, \
+ // right
+ { 47, 48, 49, NO_LED, NO_LED, NO_LED, NO_LED }, \
+ { 46, 45, 50, 56, 62, 68, 74 }, \
+ { NO_LED, 40, 51, 57, 63, 69, 75 }, \
+ { NO_LED, 41, 52, 58, 64, 70, 76 }, \
+ { NO_LED, 42, 53, 59, 65, 71, 77 }, \
+ { NO_LED, 43, 54, 60, 66, 72, 78 }, \
+ { NO_LED, 44, 55, 61, 67, 73, 79 } \
+}, {
+//left PCB
+ { 86, 43 }, { 86, 32 }, { 86, 21 }, { 86, 11 }, { 86, 0 }, { 86, 53 }, { 103, 53 }, { 103, 64 }, { 86, 64 }, { 69, 64 },
+ { 69, 53 }, { 69, 43 }, { 69, 32 }, { 69, 21 }, { 69, 11 }, { 69, 0 }, { 52, 53 }, { 52, 43 }, { 52, 32 }, { 52, 21 },
+ { 52, 11 }, { 52, 0 }, { 34, 53 }, { 34, 43 }, { 34, 32 }, { 34, 21 }, { 34, 11 }, { 34, 0 }, { 17, 53 }, { 17, 43 },
+ { 17, 32 }, { 17, 21 }, { 17, 11 }, { 17, 0 }, { 0, 53 }, { 0, 43 }, { 0, 32 }, { 0, 21 }, { 0, 11 }, { 0, 0 },
+//left extra underglow strip
+ { 86, 11 }, { 86, 21 }, { 86, 32 }, { 86, 43 }, { 86, 0 }, { 86, 53 }, { 95, 25 }, { 86, 64 }, { 69, 64 }, { 69, 0 }, { 52, 0 },
+
+//right PCB
+ { 138, 43 }, { 138, 32 }, { 138, 21 }, { 138, 11 }, { 138, 0 }, { 138, 53 }, { 121, 53 }, { 121, 64 }, { 138, 64 }, { 155, 64 },
+ { 155, 53 }, { 155, 43 }, { 155, 32 }, { 155, 21 }, { 155, 11 }, { 155, 0 }, { 172, 53 }, { 172, 43 }, { 172, 32 }, { 172, 21 },
+ { 172, 11 }, { 172, 0 }, { 190, 53 }, { 190, 43 }, { 190, 32 }, { 190, 21 }, { 190, 11 }, { 190, 0 }, { 207, 53 }, { 207, 43 },
+ { 207, 32 }, { 207, 21 }, { 207, 11 }, { 207, 0 }, { 224, 53 }, { 224, 43 }, { 224, 32 }, { 224, 21 }, { 224, 11 }, { 224, 0 },
+//right extra underglow strip
+ { 138, 11 }, { 138, 21 }, { 138, 32 }, { 138, 43 }, { 138, 0 }, { 138, 53 }, { 129, 59 }, { 138, 64 }, { 155, 64 }, { 155, 0 },{ 172, 0 }
+}, {
+ // left PCB
+ 4, 4, 4, 4, 2, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 2, 4, 4, 4, 4, 4,
+ 2, 4, 4, 4, 4, 4, 2, 4, 4, 4,
+ 4, 4, 2, 4, 4, 4, 4, 4, 4, 2,
+//left extra underglow strip
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+//right PCB
+ 4, 4, 4, 4, 2, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 2, 4, 4, 4, 4, 4,
+ 2, 4, 4, 4, 4, 4, 2, 4, 4, 4,
+ 4, 4, 2, 4, 4, 4, 4, 4, 4, 2,
+//right extra underglow strip
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+} };
+#endif
diff --git a/keyboards/cyboard/dactyl_underglow/dactyl_underglow.h b/keyboards/cyboard/dactyl_underglow/dactyl_underglow.h
new file mode 100644
index 00000000000..31155302de1
--- /dev/null
+++ b/keyboards/cyboard/dactyl_underglow/dactyl_underglow.h
@@ -0,0 +1,319 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_manuform_function_row( \
+ r6c6, r6c5, r6c4, r6c3, r6c2, r6c1, r13c8, r13c9, r13c10, r13c11, r13c12, r13c13, \
+ r5c6, r5c5, r5c4, r5c3, r5c2, r5c1, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13, \
+ r4c6, r4c5, r4c4, r4c3, r4c2, r4c1, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13, \
+ r3c6, r3c5, r3c4, r3c3, r3c2, r3c1, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13, \
+ r2c6, r2c5, r2c4, r2c3, r2c2, r2c1, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13, \
+ r1c6, r1c5, r1c4, r1c3, r1c2, r1c1, r1c0, r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13, \
+ r0c2, r0c1, r0c0, r7c7, r7c8, r7c9 \
+) \
+{ \
+ { r0c0, r0c1, r0c2, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r1c0, r1c1, r1c2, r1c3, r1c4, r1c5, r1c6 }, \
+ { KC_NO, r2c1, r2c2, r2c3, r2c4, r2c5, r2c6 }, \
+ { KC_NO, r3c1, r3c2, r3c3, r3c4, r3c5, r3c6 }, \
+ { KC_NO, r4c1, r4c2, r4c3, r4c4, r4c5, r4c6 }, \
+ { KC_NO, r5c1, r5c2, r5c3, r5c4, r5c5, r5c6 }, \
+ { KC_NO, r6c1, r6c2, r6c3, r6c4, r6c5, r6c6 }, \
+\
+ { r7c7, r7c8, r7c9, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13 }, \
+ { KC_NO, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13 }, \
+ { KC_NO, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13 }, \
+ { KC_NO, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13 }, \
+ { KC_NO, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13 }, \
+ { KC_NO, r13c8, r13c9, r13c10, r13c11, r13c12, r13c13 } \
+}
+
+#define LAYOUT_manuform_6x7( \
+ r5c6, r5c5, r5c4, r5c3, r5c2, r5c1, r5c0, r12c7, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13, \
+ r4c6, r4c5, r4c4, r4c3, r4c2, r4c1, r4c0, r11c7, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13, \
+ r3c6, r3c5, r3c4, r3c3, r3c2, r3c1, r3c0, r10c7, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13, \
+ r2c6, r2c5, r2c4, r2c3, r2c2, r2c1, r2c0, r9c7, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13, \
+ r1c3, r1c2, r8c9, r8c10, \
+ r0c2, r0c1, r0c0, r7c7, \
+ r0c5, r0c4, r0c3, r7c8, \
+ r7c10, r7c9 \
+) \
+{ \
+ { r0c0, r0c1, r0c2, r0c3, r0c4, r0c5, KC_NO }, \
+ { KC_NO, KC_NO, r1c2, r1c3, KC_NO, KC_NO, KC_NO }, \
+ { r2c0, r2c1, r2c2, r2c3, r2c4, r2c5, r2c6 }, \
+ { r3c0, r3c1, r3c2, r3c3, r3c4, r3c5, r3c6 }, \
+ { r4c0, r4c1, r4c2, r4c3, r4c4, r4c5, r4c6 }, \
+ { r5c0, r5c1, r5c2, r5c3, r5c4, r5c5, r5c6 }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+\
+ { r7c7, r7c8, r7c9, r7c10, KC_NO, KC_NO, KC_NO }, \
+ { KC_NO, KC_NO, r8c9, r8c10, KC_NO, KC_NO, KC_NO }, \
+ { r9c7, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13 }, \
+ { r10c7, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13 }, \
+ { r11c7, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13 }, \
+ { r12c7, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13 }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
+}
+
+#define LAYOUT_manuform_number_row( \
+ r5c6, r5c5, r5c4, r5c3, r5c2, r5c1, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13, \
+ r4c6, r4c5, r4c4, r4c3, r4c2, r4c1, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13, \
+ r3c6, r3c5, r3c4, r3c3, r3c2, r3c1, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13, \
+ r2c6, r2c5, r2c4, r2c3, r2c2, r2c1, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13, \
+ r1c6, r1c5, r1c4, r1c3, r1c2, r1c1, r1c0, r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13, \
+ r0c2, r0c1, r0c0, r7c7, r7c8, r7c9 \
+) \
+{ \
+ { r0c0, r0c1, r0c2, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r1c0, r1c1, r1c2, r1c3, r1c4, r1c5, r1c6 }, \
+ { KC_NO, r2c1, r2c2, r2c3, r2c4, r2c5, r2c6 }, \
+ { KC_NO, r3c1, r3c2, r3c3, r3c4, r3c5, r3c6 }, \
+ { KC_NO, r4c1, r4c2, r4c3, r4c4, r4c5, r4c6 }, \
+ { KC_NO, r5c1, r5c2, r5c3, r5c4, r5c5, r5c6 }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+\
+ { r7c7, r7c8, r7c9, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13 }, \
+ { KC_NO, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13 }, \
+ { KC_NO, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13 }, \
+ { KC_NO, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13 }, \
+ { KC_NO, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13 }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
+}
+
+#define LAYOUT_manuform_letters_only( \
+ r4c6, r4c5, r4c4, r4c3, r4c2, r4c1, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13, \
+ r3c6, r3c5, r3c4, r3c3, r3c2, r3c1, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13, \
+ r2c6, r2c5, r2c4, r2c3, r2c2, r2c1, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13, \
+ r1c6, r1c5, r1c4, r1c3, r1c2, r1c1, r1c0, r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13, \
+ r0c2, r0c1, r0c0, r7c7, r7c8, r7c9 \
+) \
+{ \
+ { r0c0, r0c1, r0c2, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r1c0, r1c1, r1c2, r1c3, r1c4, r1c5, r1c6 }, \
+ { KC_NO, r2c1, r2c2, r2c3, r2c4, r2c5, r2c6 }, \
+ { KC_NO, r3c1, r3c2, r3c3, r3c4, r3c5, r3c6 }, \
+ { KC_NO, r4c1, r4c2, r4c3, r4c4, r4c5, r4c6 }, \
+ { 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 }, \
+\
+ { r7c7, r7c8, r7c9, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13 }, \
+ { KC_NO, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13 }, \
+ { KC_NO, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13 }, \
+ { KC_NO, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13 }, \
+ { 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 } \
+}
+
+#define LAYOUT_dualarcs_function_row( \
+ r6c6, r6c5, r6c4, r6c3, r6c2, r6c1, r13c8, r13c9, r13c10, r13c11, r13c12, r13c13, \
+ r5c6, r5c5, r5c4, r5c3, r5c2, r5c1, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13, \
+ r4c6, r4c5, r4c4, r4c3, r4c2, r4c1, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13, \
+ r3c6, r3c5, r3c4, r3c3, r3c2, r3c1, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13, \
+ r2c6, r2c5, r2c4, r2c3, r2c2, r2c1, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13, \
+ r1c6, r1c5, r1c4, r1c3, r1c2, r1c1, r1c0, r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13, \
+ r0c1, r0c0, r7c7, r7c8 \
+) \
+{ \
+ { r0c0, r0c1, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r1c0, r1c1, r1c2, r1c3, r1c4, r1c5, r1c6 }, \
+ { KC_NO, r2c1, r2c2, r2c3, r2c4, r2c5, r2c6 }, \
+ { KC_NO, r3c1, r3c2, r3c3, r3c4, r3c5, r3c6 }, \
+ { KC_NO, r4c1, r4c2, r4c3, r4c4, r4c5, r4c6 }, \
+ { KC_NO, r5c1, r5c2, r5c3, r5c4, r5c5, r5c6 }, \
+ { KC_NO, r6c1, r6c2, r6c3, r6c4, r6c5, r6c6 }, \
+\
+ { r7c7, r7c8, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13 }, \
+ { KC_NO, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13 }, \
+ { KC_NO, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13 }, \
+ { KC_NO, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13 }, \
+ { KC_NO, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13 }, \
+ { KC_NO, r13c8, r13c9, r13c10, r13c11, r13c12, r13c13 } \
+}
+
+#define LAYOUT_dualarcs_number_row( \
+ r5c6, r5c5, r5c4, r5c3, r5c2, r5c1, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13, \
+ r4c6, r4c5, r4c4, r4c3, r4c2, r4c1, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13, \
+ r3c6, r3c5, r3c4, r3c3, r3c2, r3c1, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13, \
+ r2c6, r2c5, r2c4, r2c3, r2c2, r2c1, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13, \
+ r1c6, r1c5, r1c4, r1c3, r1c2, r1c1, r1c0, r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13, \
+ r0c1, r0c0, r7c7, r7c8 \
+) \
+{ \
+ { r0c0, r0c1, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r1c0, r1c1, r1c2, r1c3, r1c4, r1c5, r1c6 }, \
+ { KC_NO, r2c1, r2c2, r2c3, r2c4, r2c5, r2c6 }, \
+ { KC_NO, r3c1, r3c2, r3c3, r3c4, r3c5, r3c6 }, \
+ { KC_NO, r4c1, r4c2, r4c3, r4c4, r4c5, r4c6 }, \
+ { KC_NO, r5c1, r5c2, r5c3, r5c4, r5c5, r5c6 }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+\
+ { r7c7, r7c8, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13 }, \
+ { KC_NO, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13 }, \
+ { KC_NO, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13 }, \
+ { KC_NO, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13 }, \
+ { KC_NO, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13 }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
+}
+
+#define LAYOUT_dualarcs_letters_only( \
+ r4c6, r4c5, r4c4, r4c3, r4c2, r4c1, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13, \
+ r3c6, r3c5, r3c4, r3c3, r3c2, r3c1, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13, \
+ r2c6, r2c5, r2c4, r2c3, r2c2, r2c1, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13, \
+ r1c6, r1c5, r1c4, r1c3, r1c2, r1c1, r1c0, r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13, \
+ r0c1, r0c0, r7c7, r7c8 \
+) \
+{ \
+ { r0c0, r0c1, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r1c0, r1c1, r1c2, r1c3, r1c4, r1c5, r1c6 }, \
+ { KC_NO, r2c1, r2c2, r2c3, r2c4, r2c5, r2c6 }, \
+ { KC_NO, r3c1, r3c2, r3c3, r3c4, r3c5, r3c6 }, \
+ { KC_NO, r4c1, r4c2, r4c3, r4c4, r4c5, r4c6 }, \
+ { 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 }, \
+\
+ { r7c7, r7c8, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13 }, \
+ { KC_NO, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13 }, \
+ { KC_NO, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13 }, \
+ { KC_NO, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13 }, \
+ { 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 } \
+}
+
+#define LAYOUT_singlearc_function_row( \
+ r6c6, r6c5, r6c4, r6c3, r6c2, r6c1, r13c8, r13c9, r13c10, r13c11, r13c12, r13c13, \
+ r5c6, r5c5, r5c4, r5c3, r5c2, r5c1, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13, \
+ r4c6, r4c5, r4c4, r4c3, r4c2, r4c1, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13, \
+ r3c6, r3c5, r3c4, r3c3, r3c2, r3c1, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13, \
+ r2c6, r2c5, r2c4, r2c3, r2c2, r2c1, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13, \
+ r1c4, r1c3, r1c2, r1c1, r1c0, r8c7, r8c8, r8c9, r8c10, r8c11 \
+) \
+{ \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r1c0, r1c1, r1c2, r1c3, r1c4, KC_NO, KC_NO }, \
+ { KC_NO, r2c1, r2c2, r2c3, r2c4, r2c5, r2c6 }, \
+ { KC_NO, r3c1, r3c2, r3c3, r3c4, r3c5, r3c6 }, \
+ { KC_NO, r4c1, r4c2, r4c3, r4c4, r4c5, r4c6 }, \
+ { KC_NO, r5c1, r5c2, r5c3, r5c4, r5c5, r5c6 }, \
+ { KC_NO, r6c1, r6c2, r6c3, r6c4, r6c5, r6c6 }, \
+\
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r8c7, r8c8, r8c9, r8c10, r8c11, KC_NO, KC_NO }, \
+ { KC_NO, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13 }, \
+ { KC_NO, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13 }, \
+ { KC_NO, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13 }, \
+ { KC_NO, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13 }, \
+ { KC_NO, r13c8, r13c9, r13c10, r13c11, r13c12, r13c13 } \
+}
+
+#define LAYOUT_singlearc_number_row( \
+ r5c6, r5c5, r5c4, r5c3, r5c2, r5c1, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13, \
+ r4c6, r4c5, r4c4, r4c3, r4c2, r4c1, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13, \
+ r3c6, r3c5, r3c4, r3c3, r3c2, r3c1, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13, \
+ r2c6, r2c5, r2c4, r2c3, r2c2, r2c1, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13, \
+ r1c6, r1c5, r1c4, r1c3, r1c2, r1c1, r1c0, r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13 \
+) \
+{ \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r1c0, r1c1, r1c2, r1c3, r1c4, r1c5, r1c6 }, \
+ { KC_NO, r2c1, r2c2, r2c3, r2c4, r2c5, r2c6 }, \
+ { KC_NO, r3c1, r3c2, r3c3, r3c4, r3c5, r3c6 }, \
+ { KC_NO, r4c1, r4c2, r4c3, r4c4, r4c5, r4c6 }, \
+ { KC_NO, r5c1, r5c2, r5c3, r5c4, r5c5, r5c6 }, \
+ { 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 }, \
+ { r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13 }, \
+ { KC_NO, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13 }, \
+ { KC_NO, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13 }, \
+ { KC_NO, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13 }, \
+ { KC_NO, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13 }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
+}
+
+#define LAYOUT_singlearc_letters_only( \
+ r4c6, r4c5, r4c4, r4c3, r4c2, r4c1, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13, \
+ r3c6, r3c5, r3c4, r3c3, r3c2, r3c1, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13, \
+ r2c6, r2c5, r2c4, r2c3, r2c2, r2c1, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13, \
+ r1c6, r1c5, r1c4, r1c3, r1c2, r1c1, r1c0, r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13 \
+) \
+{ \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r1c0, r1c1, r1c2, r1c3, r1c4, r1c5, r1c6 }, \
+ { KC_NO, r2c1, r2c2, r2c3, r2c4, r2c5, r2c6 }, \
+ { KC_NO, r3c1, r3c2, r3c3, r3c4, r3c5, r3c6 }, \
+ { KC_NO, r4c1, r4c2, r4c3, r4c4, r4c5, r4c6 }, \
+ { 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 }, \
+ { r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13 }, \
+ { KC_NO, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13 }, \
+ { KC_NO, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13 }, \
+ { KC_NO, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13 }, \
+ { 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 } \
+}
+
+#define LAYOUT_dualarcs2x3_function_row_noextrapinky( \
+ r6c6, r6c5, r6c4, r6c3, r6c2, r6c1, r13c8, r13c9, r13c10, r13c11, r13c12, r13c13, \
+ r5c6, r5c5, r5c4, r5c3, r5c2, r5c1, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13, \
+ r4c6, r4c5, r4c4, r4c3, r4c2, r4c1, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13, \
+ r3c6, r3c5, r3c4, r3c3, r3c2, r3c1, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13, \
+ r2c6, r2c5, r2c4, r2c3, r2c2, r2c1, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13, \
+ r1c4, r1c3, r1c2, r1c1, r1c0, r8c7, r8c8, r8c9, r8c10, r8c11, \
+ r0c2, r0c1, r0c0, r7c7, r7c8, r7c9 \
+) \
+{ \
+ { r0c0, r0c1, r0c2, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r1c0, r1c1, r1c2, r1c3, r1c4, KC_NO, KC_NO }, \
+ { KC_NO, r2c1, r2c2, r2c3, r2c4, r2c5, r2c6 }, \
+ { KC_NO, r3c1, r3c2, r3c3, r3c4, r3c5, r3c6 }, \
+ { KC_NO, r4c1, r4c2, r4c3, r4c4, r4c5, r4c6 }, \
+ { KC_NO, r5c1, r5c2, r5c3, r5c4, r5c5, r5c6 }, \
+ { KC_NO, r6c1, r6c2, r6c3, r6c4, r6c5, r6c6 }, \
+\
+ { r7c7, r7c8, r7c9, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r8c7, r8c8, r8c9, r8c10, r8c11, KC_NO, KC_NO }, \
+ { KC_NO, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13 }, \
+ { KC_NO, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13 }, \
+ { KC_NO, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13 }, \
+ { KC_NO, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13 }, \
+ { KC_NO, r13c8, r13c9, r13c10, r13c11, r13c12, r13c13 } \
+}
+
+#define LAYOUT_manuform_number_row_noextrapinky( \
+ r5c6, r5c5, r5c4, r5c3, r5c2, r5c1, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13, \
+ r4c6, r4c5, r4c4, r4c3, r4c2, r4c1, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13, \
+ r3c6, r3c5, r3c4, r3c3, r3c2, r3c1, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13, \
+ r2c6, r2c5, r2c4, r2c3, r2c2, r2c1, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13, \
+ r1c4, r1c3, r1c2, r1c1, r1c0, r8c7, r8c8, r8c9, r8c10, r8c11, \
+ r0c2, r0c1, r0c0, r7c7, r7c8, r7c9 \
+) \
+{ \
+ { r0c0, r0c1, r0c2, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r1c0, r1c1, r1c2, r1c3, r1c4, KC_NO, KC_NO }, \
+ { KC_NO, r2c1, r2c2, r2c3, r2c4, r2c5, r2c6 }, \
+ { KC_NO, r3c1, r3c2, r3c3, r3c4, r3c5, r3c6 }, \
+ { KC_NO, r4c1, r4c2, r4c3, r4c4, r4c5, r4c6 }, \
+ { KC_NO, r5c1, r5c2, r5c3, r5c4, r5c5, r5c6 }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+\
+ { r7c7, r7c8, r7c9, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r8c7, r8c8, r8c9, r8c10, r8c11, KC_NO, KC_NO }, \
+ { KC_NO, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13 }, \
+ { KC_NO, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13 }, \
+ { KC_NO, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13 }, \
+ { KC_NO, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13 }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
+}
diff --git a/keyboards/cyboard/dactyl_underglow/info.json b/keyboards/cyboard/dactyl_underglow/info.json
new file mode 100644
index 00000000000..a091fe26362
--- /dev/null
+++ b/keyboards/cyboard/dactyl_underglow/info.json
@@ -0,0 +1,11 @@
+{
+ "manufacturer": "Cyboard",
+ "maintainer": "Erik Trinkle",
+ "url": "https://cyboard.digital",
+ "keyboard_name": "Dactyl",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "1.0.0"
+ }
+}
diff --git a/keyboards/cyboard/dactyl_underglow/keymaps/default/config.h b/keyboards/cyboard/dactyl_underglow/keymaps/default/config.h
new file mode 100644
index 00000000000..540d390e0e0
--- /dev/null
+++ b/keyboards/cyboard/dactyl_underglow/keymaps/default/config.h
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xBF, 0xD5, 0x55, 0xA8, 0x17, 0xBA, 0xA6, 0x13}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 10, 10 }
+#define VIAL_UNLOCK_COMBO_COLS { 5, 6 }
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 10
diff --git a/keyboards/cyboard/dactyl_underglow/keymaps/default/keymap.c b/keyboards/cyboard/dactyl_underglow/keymaps/default/keymap.c
new file mode 100644
index 00000000000..7199c56a44a
--- /dev/null
+++ b/keyboards/cyboard/dactyl_underglow/keymaps/default/keymap.c
@@ -0,0 +1,88 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_dualarcs_letters_only(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_UP, KC_DOWN, KC_LGUI, KC_LALT, KC_LGUI, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, MO(2), KC_LBRC, KC_RBRC, KC_LEFT, KC_RIGHT,
+ KC_GRAVE, KC_ESC, KC_CAPS, KC_APP
+ ),
+
+ [1] = LAYOUT_dualarcs_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_dualarcs_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_dualarcs_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_dualarcs_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_dualarcs_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_dualarcs_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_dualarcs_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_dualarcs_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_dualarcs_letters_only(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/dactyl_underglow/keymaps/default/rules.mk b/keyboards/cyboard/dactyl_underglow/keymaps/default/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/dactyl_underglow/keymaps/default/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/dactyl_underglow/keymaps/default/vial.json b/keyboards/cyboard/dactyl_underglow/keymaps/default/vial.json
new file mode 100644
index 00000000000..89a3294a030
--- /dev/null
+++ b/keyboards/cyboard/dactyl_underglow/keymaps/default/vial.json
@@ -0,0 +1,106 @@
+{
+ "name": "Dactyl",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 7
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "4,6",
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ {
+ "x": 3
+ },
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5",
+ "11,6"
+ ],
+ [
+ "3,6",
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ {
+ "x": 3
+ },
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ "2,6",
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ {
+ "x": 3
+ },
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ "1,6",
+ "1,5",
+ "1,4",
+ "1,3",
+ {
+ "x": 7
+ },
+ "8,3",
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 4.25
+ },
+ "1,2",
+ "1,1",
+ "1,0",
+ {
+ "x": 0.5
+ },
+ "8,0",
+ "8,1",
+ "8,2"
+ ],
+ [
+ {
+ "x": 5.25
+ },
+ "0,1",
+ "0,0",
+ {
+ "x": 0.5
+ },
+ "7,0",
+ "7,1"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/dactyl_underglow/keymaps/manuform_number_row_noextrapinky/config.h b/keyboards/cyboard/dactyl_underglow/keymaps/manuform_number_row_noextrapinky/config.h
new file mode 100644
index 00000000000..c350f1c7556
--- /dev/null
+++ b/keyboards/cyboard/dactyl_underglow/keymaps/manuform_number_row_noextrapinky/config.h
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xAB, 0x85, 0x24, 0x3E, 0xAB, 0x9B, 0x86, 0xCB}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 10, 10 }
+#define VIAL_UNLOCK_COMBO_COLS { 5, 6 }
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 10
diff --git a/keyboards/cyboard/dactyl_underglow/keymaps/manuform_number_row_noextrapinky/keymap.c b/keyboards/cyboard/dactyl_underglow/keymaps/manuform_number_row_noextrapinky/keymap.c
new file mode 100644
index 00000000000..52f969a60f0
--- /dev/null
+++ b/keyboards/cyboard/dactyl_underglow/keymaps/manuform_number_row_noextrapinky/keymap.c
@@ -0,0 +1,98 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_manuform_number_row_noextrapinky(
+ KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_LGUI, KC_LALT, KC_LGUI, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, MO(2), KC_LBRC, KC_RBRC,
+ KC_HOME, KC_END, KC_ESC, MO(3), KC_CAPS, KC_APP
+ ),
+
+ [1] = LAYOUT_manuform_number_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_manuform_number_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_manuform_number_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_manuform_number_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_manuform_number_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_manuform_number_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_manuform_number_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_manuform_number_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_manuform_number_row_noextrapinky(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/dactyl_underglow/keymaps/manuform_number_row_noextrapinky/rules.mk b/keyboards/cyboard/dactyl_underglow/keymaps/manuform_number_row_noextrapinky/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/dactyl_underglow/keymaps/manuform_number_row_noextrapinky/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/dactyl_underglow/keymaps/manuform_number_row_noextrapinky/vial.json b/keyboards/cyboard/dactyl_underglow/keymaps/manuform_number_row_noextrapinky/vial.json
new file mode 100644
index 00000000000..be8c93e1338
--- /dev/null
+++ b/keyboards/cyboard/dactyl_underglow/keymaps/manuform_number_row_noextrapinky/vial.json
@@ -0,0 +1,133 @@
+{
+ "name": "Dactyl",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 7
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "5,6",
+ "5,5",
+ "5,4",
+ "5,3",
+ "5,2",
+ "5,1",
+ {
+ "x": 5.5
+ },
+ "12,1",
+ "12,2",
+ "12,3",
+ "12,4",
+ "12,5",
+ "12,6"
+ ],
+ [
+ "4,6",
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ {
+ "x": 5.5
+ },
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5",
+ "11,6"
+ ],
+ [
+ "3,6",
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ {
+ "x": 5.5
+ },
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ "2,6",
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ {
+ "x": 5.5
+ },
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "x": 2
+ },
+ "1,4",
+ "1,3",
+ {
+ "x": 9.5
+ },
+ "8,3",
+ "8,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4.5
+ },
+ "1,2",
+ "1,1",
+ {
+ "x": 4.5
+ },
+ "8,1",
+ "8,2"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 6.5
+ },
+ "1,0",
+ "0,0",
+ {
+ "x": 0.5
+ },
+ "7,0",
+ "8,0"
+ ],
+ [
+ {
+ "x": 6.5
+ },
+ "0,2",
+ "0,1",
+ {
+ "x": 0.5
+ },
+ "7,1",
+ "7,2"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/dactyl_underglow/readme.md b/keyboards/cyboard/dactyl_underglow/readme.md
new file mode 100644
index 00000000000..3597dfb0662
--- /dev/null
+++ b/keyboards/cyboard/dactyl_underglow/readme.md
@@ -0,0 +1,21 @@
+#Cyboard Dactyls
+
+* Keyboard Maintainer: [Cyboard](https://github.com/Cyboard-DigitalTailor)
+* Hardware Supported: Cyboard Dactyls
+* Hardware Availability: [cyboard.digital](https://www.cyboard.digital/product-page/Dactyl-Manuform)
+
+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).
+
+## Building Firmware
+
+Various sizes and thumb-cluster styles are supported as keymaps. To build the firmware, use the command:
+`qmk compile -kb cyboard/dactyl_underglow -km {THUMB STYLE}_{ROWS}`
+where `{THUMB STYLE}` can be `manuform`, `dual_arcs`, or `single_arc`
+and `{ROWS}` can be `function_row`, `number_row`, or `letters_only`
+
+## Flashing
+
+To flash the firmware to your Cyboard,
+1. Enter the bootloader by double-tapping the reset button on the back of the board, next to the USB port.
+2. A USB device called `RPI-RP2` should appear on your computer.
+3. Drag the `.uf2` firmware file into `RPI-RP2`. `RPI-RP2` should now disappear, and your Cyboard is ready to use with your new firmware!
diff --git a/keyboards/cyboard/dactyl_underglow/rules.mk b/keyboards/cyboard/dactyl_underglow/rules.mk
new file mode 100644
index 00000000000..c5c07555f81
--- /dev/null
+++ b/keyboards/cyboard/dactyl_underglow/rules.mk
@@ -0,0 +1,25 @@
+# MCU name
+MCU = RP2040
+
+# Bootloader selection
+BOOTLOADER = rp2040
+
+# Build Options
+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
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+NKRO_ENABLE = yes # USB Nkey Rollover
+SPLIT_KEYBOARD = yes
+
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+AUDIO_SUPPORTED = no # Audio is not supported
+RGB_MATRIX_SUPPORTED = yes # RGB matrix is supported and enabled by default
+RGBLIGHT_SUPPORTED = yes # RGB underglow is supported, but not enabled by default
+RGB_MATRIX_ENABLE = yes # Enable keyboard RGB matrix (do not use together with RGBLIGHT_ENABLE)
+RGB_MATRIX_DRIVER = WS2812 # RGB matrix driver support
+
+SERIAL_DRIVER = vendor
+WS2812_DRIVER = vendor
diff --git a/keyboards/cyboard/imprint/dual_arcs_number_row/info.json b/keyboards/cyboard/imprint/dual_arcs_number_row/info.json
new file mode 100644
index 00000000000..5ec2e35f293
--- /dev/null
+++ b/keyboards/cyboard/imprint/dual_arcs_number_row/info.json
@@ -0,0 +1,164 @@
+{
+ "rgb_matrix": {
+ "split_count": [31, 31],
+ "layout": [
+ {"flags": 4, "matrix": [3, 0], "x": 86, "y": 32},
+ {"flags": 4, "matrix": [2, 0], "x": 86, "y": 43},
+ {"flags": 4, "matrix": [5, 0], "x": 86, "y": 11},
+ {"flags": 4, "matrix": [4, 0], "x": 86, "y": 21},
+
+ {"flags": 4, "matrix": [3, 1], "x": 69, "y": 32},
+ {"flags": 4, "matrix": [2, 1], "x": 69, "y": 43},
+ {"flags": 4, "matrix": [5, 1], "x": 69, "y": 11},
+ {"flags": 4, "matrix": [4, 1], "x": 69, "y": 21},
+
+ {"flags": 4, "matrix": [3, 2], "x": 52, "y": 32},
+ {"flags": 4, "matrix": [2, 2], "x": 52, "y": 43},
+ {"flags": 4, "matrix": [1, 2], "x": 52, "y": 53},
+ {"flags": 4, "matrix": [5, 2], "x": 52, "y": 11},
+ {"flags": 4, "matrix": [4, 2], "x": 52, "y": 21},
+
+ {"flags": 4, "matrix": [3, 3], "x": 34, "y": 32},
+ {"flags": 4, "matrix": [2, 3], "x": 34, "y": 43},
+ {"flags": 4, "matrix": [1, 3], "x": 34, "y": 53},
+ {"flags": 4, "matrix": [5, 3], "x": 34, "y": 11},
+ {"flags": 4, "matrix": [4, 3], "x": 34, "y": 21},
+
+ {"flags": 4, "matrix": [3, 4], "x": 17, "y": 32},
+ {"flags": 4, "matrix": [2, 4], "x": 17, "y": 43},
+ {"flags": 4, "matrix": [5, 4], "x": 17, "y": 11},
+ {"flags": 4, "matrix": [4, 4], "x": 17, "y": 21},
+
+ {"flags": 4, "matrix": [3, 5], "x": 0, "y": 32},
+ {"flags": 4, "matrix": [2, 5], "x": 0, "y": 43},
+ {"flags": 4, "matrix": [5, 5], "x": 0, "y": 11},
+ {"flags": 4, "matrix": [4, 5], "x": 0, "y": 21},
+
+ {"flags": 4, "matrix": [0, 3], "x": 86, "y": 53},
+ {"flags": 4, "matrix": [0, 2], "x": 103, "y": 53},
+ {"flags": 4, "matrix": [0, 1], "x": 103, "y": 64},
+ {"flags": 4, "matrix": [0, 7], "x": 69, "y": 53},
+ {"flags": 4, "matrix": [0, 6], "x": 69, "y": 64},
+
+
+ {"flags": 4, "matrix": [10, 0], "x": 138, "y": 32},
+ {"flags": 4, "matrix": [9, 0], "x": 138, "y": 43},
+ {"flags": 4, "matrix": [12, 0], "x": 138, "y": 11},
+ {"flags": 4, "matrix": [11, 0], "x": 138, "y": 21},
+
+ {"flags": 4, "matrix": [10, 1], "x": 155, "y": 32},
+ {"flags": 4, "matrix": [9, 1], "x": 155, "y": 43},
+ {"flags": 4, "matrix": [12, 1], "x": 155, "y": 11},
+ {"flags": 4, "matrix": [11, 1], "x": 155, "y": 21},
+
+ {"flags": 4, "matrix": [10, 2], "x": 172, "y": 32},
+ {"flags": 4, "matrix": [9, 2], "x": 172, "y": 43},
+ {"flags": 4, "matrix": [8, 2], "x": 172, "y": 53},
+ {"flags": 4, "matrix": [12, 2], "x": 172, "y": 11},
+ {"flags": 4, "matrix": [11, 2], "x": 172, "y": 21},
+
+ {"flags": 4, "matrix": [10, 3], "x": 190, "y": 32},
+ {"flags": 4, "matrix": [9, 3], "x": 190, "y": 43},
+ {"flags": 4, "matrix": [8, 3], "x": 190, "y": 53},
+ {"flags": 4, "matrix": [12, 3], "x": 190, "y": 11},
+ {"flags": 4, "matrix": [11, 3], "x": 190, "y": 21},
+
+ {"flags": 4, "matrix": [10, 4], "x": 207, "y": 32},
+ {"flags": 4, "matrix": [9, 4], "x": 207, "y": 43},
+ {"flags": 4, "matrix": [12, 4], "x": 207, "y": 11},
+ {"flags": 4, "matrix": [11, 4], "x": 207, "y": 21},
+
+ {"flags": 4, "matrix": [10, 5], "x": 224, "y": 32},
+ {"flags": 4, "matrix": [9, 5], "x": 224, "y": 43},
+ {"flags": 4, "matrix": [12, 5], "x": 224, "y": 11},
+ {"flags": 4, "matrix": [11, 5], "x": 224, "y": 21},
+
+ {"flags": 4, "matrix": [7, 3], "x": 138, "y": 53},
+ {"flags": 4, "matrix": [7, 2], "x": 121, "y": 53},
+ {"flags": 4, "matrix": [7, 1], "x": 121, "y": 64},
+ {"flags": 4, "matrix": [7, 7], "x": 138, "y": 64},
+ {"flags": 4, "matrix": [7, 6], "x": 155, "y": 64}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_dual_arcs_num": {
+ "layout": [
+ { "matrix": [5, 5], "x": 0, "y": 0 },
+ { "matrix": [5, 4], "x": 1, "y": 0 },
+ { "matrix": [5, 3], "x": 2, "y": 0 },
+ { "matrix": [5, 2], "x": 3, "y": 0 },
+ { "matrix": [5, 1], "x": 4, "y": 0 },
+ { "matrix": [5, 0], "x": 5, "y": 0 },
+
+ { "matrix": [12, 0], "x": 11.5, "y": 0 },
+ { "matrix": [12, 1], "x": 12.5, "y": 0 },
+ { "matrix": [12, 2], "x": 13.5, "y": 0 },
+ { "matrix": [12, 3], "x": 14.5, "y": 0 },
+ { "matrix": [12, 4], "x": 15.5, "y": 0 },
+ { "matrix": [12, 5], "x": 16.5, "y": 0 },
+
+ { "matrix": [4, 5], "x": 0, "y": 1 },
+ { "matrix": [4, 4], "x": 1, "y": 1 },
+ { "matrix": [4, 3], "x": 2, "y": 1 },
+ { "matrix": [4, 2], "x": 3, "y": 1 },
+ { "matrix": [4, 1], "x": 4, "y": 1 },
+ { "matrix": [4, 0], "x": 5, "y": 1 },
+
+ { "matrix": [11, 0], "x": 10.5, "y": 1 },
+ { "matrix": [11, 1], "x": 11.5, "y": 1 },
+ { "matrix": [11, 2], "x": 12.5, "y": 1 },
+ { "matrix": [11, 3], "x": 13.5, "y": 1 },
+ { "matrix": [11, 4], "x": 14.5, "y": 1 },
+ { "matrix": [11, 5], "x": 15.5, "y": 1 },
+
+ { "matrix": [3, 5], "x": 0, "y": 2 },
+ { "matrix": [3, 4], "x": 1, "y": 2 },
+ { "matrix": [3, 3], "x": 2, "y": 2 },
+ { "matrix": [3, 2], "x": 3, "y": 2 },
+ { "matrix": [3, 1], "x": 4, "y": 2 },
+ { "matrix": [3, 0], "x": 5, "y": 2 },
+
+ { "matrix": [10, 0], "x": 10.5, "y": 2 },
+ { "matrix": [10, 1], "x": 11.5, "y": 2 },
+ { "matrix": [10, 2], "x": 12.5, "y": 2 },
+ { "matrix": [10, 3], "x": 13.5, "y": 2 },
+ { "matrix": [10, 4], "x": 14.5, "y": 2 },
+ { "matrix": [10, 5], "x": 15.5, "y": 2 },
+
+ { "matrix": [2, 5], "x": 0, "y": 3 },
+ { "matrix": [2, 4], "x": 1, "y": 3 },
+ { "matrix": [2, 3], "x": 2, "y": 3 },
+ { "matrix": [2, 2], "x": 3, "y": 3 },
+ { "matrix": [2, 1], "x": 4, "y": 3 },
+ { "matrix": [2, 0], "x": 5, "y": 3 },
+
+ { "matrix": [9, 0], "x": 10.5, "y": 3 },
+ { "matrix": [9, 1], "x": 11.5, "y": 3 },
+ { "matrix": [9, 2], "x": 12.5, "y": 3 },
+ { "matrix": [9, 3], "x": 13.5, "y": 3 },
+ { "matrix": [9, 4], "x": 14.5, "y": 3 },
+ { "matrix": [9, 5], "x": 15.5, "y": 3 },
+
+ { "matrix": [1, 3], "x": 2, "y": 3 },
+ { "matrix": [1, 2], "x": 3, "y": 3 },
+
+ { "matrix": [0, 3], "x": 4.5, "y": 3.5 },
+ { "matrix": [0, 2], "x": 5.5, "y": 3.5 },
+ { "matrix": [0, 1], "x": 6.5, "y": 4 },
+
+ { "matrix": [7, 1], "x": 10, "y": 4 },
+ { "matrix": [7, 2], "x": 11, "y": 3.5 },
+ { "matrix": [7, 3], "x": 12, "y": 3.5 },
+
+ { "matrix": [8, 2], "x": 13.5, "y": 3 },
+ { "matrix": [8, 3], "x": 14.5, "y": 3 },
+
+ { "matrix": [0, 7], "x": 6.5, "y": 5 },
+ { "matrix": [0, 6], "x": 7.5, "y": 5 },
+
+ { "matrix": [7, 6], "x": 9, "y": 5 },
+ { "matrix": [7, 7], "x": 10, "y": 5 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/cyboard/imprint/dual_arcs_number_row/keymaps/vial/keymap.c b/keyboards/cyboard/imprint/dual_arcs_number_row/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..1e0853e9205
--- /dev/null
+++ b/keyboards/cyboard/imprint/dual_arcs_number_row/keymaps/vial/keymap.c
@@ -0,0 +1,98 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_dual_arcs_num(
+ KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_LGUI, KC_LALT, KC_LGUI, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, MO(1), KC_LBRC, KC_RBRC,
+ KC_HOME, KC_END, KC_CAPS, KC_APP
+ ),
+
+ [1] = LAYOUT_dual_arcs_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_dual_arcs_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_dual_arcs_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_dual_arcs_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_dual_arcs_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_dual_arcs_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_dual_arcs_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_dual_arcs_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_dual_arcs_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/imprint/dual_arcs_number_row/keymaps/vial/rules.mk b/keyboards/cyboard/imprint/dual_arcs_number_row/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/imprint/dual_arcs_number_row/keymaps/vial/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/imprint/dual_arcs_number_row/keymaps/vial/vial.json b/keyboards/cyboard/imprint/dual_arcs_number_row/keymaps/vial/vial.json
new file mode 100644
index 00000000000..9c951096726
--- /dev/null
+++ b/keyboards/cyboard/imprint/dual_arcs_number_row/keymaps/vial/vial.json
@@ -0,0 +1,122 @@
+{
+ "name": "Imprint",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 8
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "5,5",
+ "5,4",
+ "5,3",
+ "5,2",
+ "5,1",
+ "5,0",
+ {
+ "x": 5.5
+ },
+ "12,0",
+ "12,1",
+ "12,2",
+ "12,3",
+ "12,4",
+ "12,5"
+ ],
+ [
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ "4,0",
+ {
+ "x": 5.5
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5"
+ ],
+ [
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ "3,0",
+ {
+ "x": 5.5
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5"
+ ],
+ [
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ "2,0",
+ {
+ "x": 5.5
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "x": 2
+ },
+ "1,3",
+ "1,2",
+ {
+ "x": 9.5
+ },
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 5.5
+ },
+ "0,3",
+ "0,2",
+ "0,1",
+ {
+ "x": 0.5
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "x": 6.5
+ },
+ "0,7",
+ "0,6",
+ {
+ "x": 0.5
+ },
+ "7,6",
+ "7,7"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/imprint/dual_arcs_number_row/rules.mk b/keyboards/cyboard/imprint/dual_arcs_number_row/rules.mk
new file mode 100644
index 00000000000..e02abfc9b0e
--- /dev/null
+++ b/keyboards/cyboard/imprint/dual_arcs_number_row/rules.mk
@@ -0,0 +1 @@
+
diff --git a/keyboards/cyboard/imprint/imprint_function_row/info.json b/keyboards/cyboard/imprint/imprint_function_row/info.json
new file mode 100644
index 00000000000..f53988891b0
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_function_row/info.json
@@ -0,0 +1,179 @@
+{
+ "rgb_matrix": {
+ "split_count": [38, 38],
+ "layout": [
+ {"flags": 4, "matrix": [3, 0], "x": 86, "y": 32},
+ {"flags": 4, "matrix": [2, 0], "x": 86, "y": 43},
+ {"flags": 4, "matrix": [6, 0], "x": 86, "y": 0},
+ {"flags": 4, "matrix": [5, 0], "x": 86, "y": 11},
+ {"flags": 4, "matrix": [4, 0], "x": 86, "y": 21},
+
+ {"flags": 4, "matrix": [3, 1], "x": 69, "y": 32},
+ {"flags": 4, "matrix": [2, 1], "x": 69, "y": 43},
+ {"flags": 4, "matrix": [6, 1], "x": 69, "y": 0},
+ {"flags": 4, "matrix": [5, 1], "x": 69, "y": 11},
+ {"flags": 4, "matrix": [4, 1], "x": 69, "y": 21},
+
+ {"flags": 4, "matrix": [3, 2], "x": 52, "y": 32},
+ {"flags": 4, "matrix": [2, 2], "x": 52, "y": 43},
+ {"flags": 4, "matrix": [1, 2], "x": 52, "y": 53},
+ {"flags": 4, "matrix": [6, 2], "x": 52, "y": 0},
+ {"flags": 4, "matrix": [5, 2], "x": 52, "y": 11},
+ {"flags": 4, "matrix": [4, 2], "x": 52, "y": 21},
+
+ {"flags": 4, "matrix": [3, 3], "x": 34, "y": 32},
+ {"flags": 4, "matrix": [2, 3], "x": 34, "y": 43},
+ {"flags": 4, "matrix": [1, 3], "x": 34, "y": 53},
+ {"flags": 4, "matrix": [6, 3], "x": 34, "y": 0},
+ {"flags": 4, "matrix": [5, 3], "x": 34, "y": 11},
+ {"flags": 4, "matrix": [4, 3], "x": 34, "y": 21},
+
+ {"flags": 4, "matrix": [3, 4], "x": 17, "y": 32},
+ {"flags": 4, "matrix": [2, 4], "x": 17, "y": 43},
+ {"flags": 4, "matrix": [6, 4], "x": 17, "y": 0},
+ {"flags": 4, "matrix": [5, 4], "x": 17, "y": 11},
+ {"flags": 4, "matrix": [4, 4], "x": 17, "y": 21},
+
+ {"flags": 4, "matrix": [3, 5], "x": 0, "y": 32},
+ {"flags": 4, "matrix": [2, 5], "x": 0, "y": 43},
+ {"flags": 4, "matrix": [6, 5], "x": 0, "y": 0},
+ {"flags": 4, "matrix": [5, 5], "x": 0, "y": 11},
+ {"flags": 4, "matrix": [4, 5], "x": 0, "y": 21},
+
+ {"flags": 4, "matrix": [0, 3], "x": 86, "y": 53},
+ {"flags": 4, "matrix": [0, 2], "x": 103, "y": 53},
+ {"flags": 4, "matrix": [0, 1], "x": 103, "y": 64},
+ {"flags": 4, "matrix": [0, 7], "x": 69, "y": 53},
+ {"flags": 4, "matrix": [0, 6], "x": 69, "y": 64},
+ {"flags": 4, "matrix": [0, 5], "x": 86, "y": 64},
+
+
+ {"flags": 4, "matrix": [10, 0], "x": 138, "y": 32},
+ {"flags": 4, "matrix": [9, 0], "x": 138, "y": 43},
+ {"flags": 4, "matrix": [13, 0], "x": 138, "y": 0},
+ {"flags": 4, "matrix": [12, 0], "x": 138, "y": 11},
+ {"flags": 4, "matrix": [11, 0], "x": 138, "y": 21},
+
+ {"flags": 4, "matrix": [10, 1], "x": 155, "y": 32},
+ {"flags": 4, "matrix": [9, 1], "x": 155, "y": 43},
+ {"flags": 4, "matrix": [13, 1], "x": 155, "y": 0},
+ {"flags": 4, "matrix": [12, 1], "x": 155, "y": 11},
+ {"flags": 4, "matrix": [11, 1], "x": 155, "y": 21},
+
+ {"flags": 4, "matrix": [10, 2], "x": 172, "y": 32},
+ {"flags": 4, "matrix": [9, 2], "x": 172, "y": 43},
+ {"flags": 4, "matrix": [8, 2], "x": 172, "y": 53},
+ {"flags": 4, "matrix": [13, 2], "x": 172, "y": 0},
+ {"flags": 4, "matrix": [12, 2], "x": 172, "y": 11},
+ {"flags": 4, "matrix": [11, 2], "x": 172, "y": 21},
+
+ {"flags": 4, "matrix": [10, 3], "x": 190, "y": 32},
+ {"flags": 4, "matrix": [9, 3], "x": 190, "y": 43},
+ {"flags": 4, "matrix": [8, 3], "x": 190, "y": 53},
+ {"flags": 4, "matrix": [13, 3], "x": 190, "y": 0},
+ {"flags": 4, "matrix": [12, 3], "x": 190, "y": 11},
+ {"flags": 4, "matrix": [11, 3], "x": 190, "y": 21},
+
+ {"flags": 4, "matrix": [10, 4], "x": 207, "y": 32},
+ {"flags": 4, "matrix": [9, 4], "x": 207, "y": 43},
+ {"flags": 4, "matrix": [13, 4], "x": 207, "y": 0},
+ {"flags": 4, "matrix": [12, 4], "x": 207, "y": 11},
+ {"flags": 4, "matrix": [11, 4], "x": 207, "y": 21},
+
+ {"flags": 4, "matrix": [10, 5], "x": 224, "y": 32},
+ {"flags": 4, "matrix": [9, 5], "x": 224, "y": 43},
+ {"flags": 4, "matrix": [13, 5], "x": 224, "y": 0},
+ {"flags": 4, "matrix": [12, 5], "x": 224, "y": 11},
+ {"flags": 4, "matrix": [11, 5], "x": 224, "y": 21},
+
+ {"flags": 4, "matrix": [7, 3], "x": 138, "y": 53},
+ {"flags": 4, "matrix": [7, 2], "x": 121, "y": 53},
+ {"flags": 4, "matrix": [7, 1], "x": 121, "y": 64},
+ {"flags": 4, "matrix": [7, 7], "x": 138, "y": 64},
+ {"flags": 4, "matrix": [7, 6], "x": 155, "y": 64},
+ {"flags": 4, "matrix": [7, 5], "x": 155, "y": 53}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_fun": {
+ "layout": [
+ { "matrix": [6, 5], "x": 0, "y": 0 },
+ { "matrix": [6, 4], "x": 1, "y": 0 },
+ { "matrix": [6, 3], "x": 2, "y": 0 },
+ { "matrix": [6, 2], "x": 3, "y": 0 },
+ { "matrix": [6, 1], "x": 4, "y": 0 },
+ { "matrix": [6, 0], "x": 5, "y": 0 },
+ { "matrix": [13, 0], "x": 11.5, "y": 0 },
+ { "matrix": [13, 1], "x": 12.5, "y": 0 },
+ { "matrix": [13, 2], "x": 13.5, "y": 0 },
+ { "matrix": [13, 3], "x": 14.5, "y": 0 },
+ { "matrix": [13, 4], "x": 15.5, "y": 0 },
+ { "matrix": [13, 5], "x": 16.5, "y": 0 },
+ { "matrix": [5, 5], "x": 0, "y": 0 },
+ { "matrix": [5, 4], "x": 1, "y": 0 },
+ { "matrix": [5, 3], "x": 2, "y": 0 },
+ { "matrix": [5, 2], "x": 3, "y": 0 },
+ { "matrix": [5, 1], "x": 4, "y": 0 },
+ { "matrix": [5, 0], "x": 5, "y": 0 },
+ { "matrix": [12, 0], "x": 11.5, "y": 0 },
+ { "matrix": [12, 1], "x": 12.5, "y": 0 },
+ { "matrix": [12, 2], "x": 13.5, "y": 0 },
+ { "matrix": [12, 3], "x": 14.5, "y": 0 },
+ { "matrix": [12, 4], "x": 15.5, "y": 0 },
+ { "matrix": [12, 5], "x": 16.5, "y": 0 },
+ { "matrix": [4, 5], "x": 0, "y": 1 },
+ { "matrix": [4, 4], "x": 1, "y": 1 },
+ { "matrix": [4, 3], "x": 2, "y": 1 },
+ { "matrix": [4, 2], "x": 3, "y": 1 },
+ { "matrix": [4, 1], "x": 4, "y": 1 },
+ { "matrix": [4, 0], "x": 5, "y": 1 },
+ { "matrix": [11, 0], "x": 10.5, "y": 1 },
+ { "matrix": [11, 1], "x": 11.5, "y": 1 },
+ { "matrix": [11, 2], "x": 12.5, "y": 1 },
+ { "matrix": [11, 3], "x": 13.5, "y": 1 },
+ { "matrix": [11, 4], "x": 14.5, "y": 1 },
+ { "matrix": [11, 5], "x": 15.5, "y": 1 },
+ { "matrix": [3, 5], "x": 0, "y": 2 },
+ { "matrix": [3, 4], "x": 1, "y": 2 },
+ { "matrix": [3, 3], "x": 2, "y": 2 },
+ { "matrix": [3, 2], "x": 3, "y": 2 },
+ { "matrix": [3, 1], "x": 4, "y": 2 },
+ { "matrix": [3, 0], "x": 5, "y": 2 },
+ { "matrix": [10, 0], "x": 10.5, "y": 2 },
+ { "matrix": [10, 1], "x": 11.5, "y": 2 },
+ { "matrix": [10, 2], "x": 12.5, "y": 2 },
+ { "matrix": [10, 3], "x": 13.5, "y": 2 },
+ { "matrix": [10, 4], "x": 14.5, "y": 2 },
+ { "matrix": [10, 5], "x": 15.5, "y": 2 },
+ { "matrix": [2, 5], "x": 0, "y": 3 },
+ { "matrix": [2, 4], "x": 1, "y": 3 },
+ { "matrix": [2, 3], "x": 2, "y": 3 },
+ { "matrix": [2, 2], "x": 3, "y": 3 },
+ { "matrix": [2, 1], "x": 4, "y": 3 },
+ { "matrix": [2, 0], "x": 5, "y": 3 },
+ { "matrix": [9, 0], "x": 10.5, "y": 3 },
+ { "matrix": [9, 1], "x": 11.5, "y": 3 },
+ { "matrix": [9, 2], "x": 12.5, "y": 3 },
+ { "matrix": [9, 3], "x": 13.5, "y": 3 },
+ { "matrix": [9, 4], "x": 14.5, "y": 3 },
+ { "matrix": [9, 5], "x": 15.5, "y": 3 },
+ { "matrix": [1, 3], "x": 2, "y": 3 },
+ { "matrix": [1, 2], "x": 3, "y": 3 },
+ { "matrix": [0, 7], "x": 4.5, "y": 3.5 },
+ { "matrix": [0, 3], "x": 5.5, "y": 3.5 },
+ { "matrix": [0, 2], "x": 6.5, "y": 4 },
+ { "matrix": [7, 2], "x": 10, "y": 4 },
+ { "matrix": [7, 3], "x": 11, "y": 3.5 },
+ { "matrix": [7, 7], "x": 12, "y": 3.5 },
+ { "matrix": [8, 2], "x": 13.5, "y": 3 },
+ { "matrix": [8, 3], "x": 14.5, "y": 3 },
+ { "matrix": [0, 6], "x": 6.5, "y": 5 },
+ { "matrix": [0, 5], "x": 7.5, "y": 5 },
+ { "matrix": [0, 1], "x": 7.5, "y": 4 },
+ { "matrix": [7, 1], "x": 9, "y": 4 },
+ { "matrix": [7, 5], "x": 9, "y": 5 },
+ { "matrix": [7, 6], "x": 10, "y": 5 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/cyboard/imprint/imprint_function_row/keymaps/vial/keymap.c b/keyboards/cyboard/imprint/imprint_function_row/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..cb0c1c8922b
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_function_row/keymaps/vial/keymap.c
@@ -0,0 +1,109 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+#include
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_fun(
+ 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_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_LGUI, KC_LALT, KC_LGUI, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, MO(1), KC_LBRC, KC_RBRC,
+ KC_HOME, KC_END, KC_ESC, KC_GRAVE, KC_CAPS, KC_APP
+ ),
+
+ [1] = LAYOUT_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/imprint/imprint_function_row/keymaps/vial/rules.mk b/keyboards/cyboard/imprint/imprint_function_row/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_function_row/keymaps/vial/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/imprint/imprint_function_row/keymaps/vial/vial.json b/keyboards/cyboard/imprint/imprint_function_row/keymaps/vial/vial.json
new file mode 100644
index 00000000000..feb95f2a368
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_function_row/keymaps/vial/vial.json
@@ -0,0 +1,207 @@
+{
+ "name": "Imprint",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "customKeycodes": [
+ {"name": "L_DPI_INC",
+ "title": "Increase left trackball sensitivity",
+ "shortName": "LEFT_POINTER_DEFAULT_DPI_FORWARD"
+ },
+ {"name": "L_DPI_DEC",
+ "title": "Decrease left trackball sensitivity",
+ "shortName": "LEFT_POINTER_DEFAULT_DPI_REVERSE"
+ },
+ {"name": "L_SNP_INC",
+ "title": "Increase left trackball sensitivity when in sniping mode",
+ "shortName": "LEFT_POINTER_SNIPING_DPI_FORWARD"
+ },
+ {"name": "L_SNP_DEC",
+ "title": "Decrease left trackball sensitivity when in sniping mode",
+ "shortName": "LEFT_POINTER_SNIPING_DPI_REVERSE"
+ },
+ {"name": "L_Snipe",
+ "title": "Reduce left trackball sensitivity while held",
+ "shortName": "LEFT_SNIPING_MODE"
+ },
+ {"name": "L_SNP_TOG",
+ "title": "Toggle left trackball between normal and sniping mode",
+ "shortName": "LEFT_SNIPING_MODE_TOGGLE"
+ },
+ {"name": "L_DragScroll",
+ "title": "Make left trackball behave as a scroll wheel while held",
+ "shortName": "LEFT_DRAGSCROLL_MODE"
+ },
+ {"name": "L_DragScroll_TOG",
+ "title": "Toggle left trackball between normal and drag scroll mode",
+ "shortName": "LEFT_DRAGSCROLL_MODE_TOGGLE"
+ },
+ {"name": "R_DPI_INC",
+ "title": "Increase trackball sensitivity on right hand",
+ "shortName": "RIGHT_POINTER_DEFAULT_DPI_FORWARD"
+ },
+ {"name": "R_DPI_DEC",
+ "title": "Decrease trackball sensitivity on right hand",
+ "shortName": "RIGHT_POINTER_DEFAULT_DPI_REVERSE"
+ },
+ {"name": "R_SNP_INC",
+ "title": "Increase right trackball sensitivity when in sniping mode",
+ "shortName": "RIGHT_POINTER_SNIPING_DPI_FORWARD"
+ },
+ {"name": "R_SNP_DEC",
+ "title": "Decrease right trackball sensitivity when in sniping mode",
+ "shortName": "RIGHT_POINTER_SNIPING_DPI_REVERSE"
+ },
+ {"name": "R_Snipe",
+ "title": "Reduce right trackball sensitivity while held",
+ "shortName": "RIGHT_SNIPING_MODE"
+ },
+ {"name": "R_SNP_TOG",
+ "title": "Toggle right trackball between normal and sniping mode",
+ "shortName": "RIGHT_SNIPING_MODE_TOGGLE"
+ },
+ {"name": "R_DragScroll",
+ "title": "Make right trackball behave as a scroll wheel while held",
+ "shortName": "RIGHT_DRAGSCROLL_MODE"
+ },
+ {"name": "R_DragScroll_TOG",
+ "title": "Toggle right trackball between normal and drag scroll mode",
+ "shortName": "RIGHT_DRAGSCROLL_MODE_TOGGLE"
+ }
+ ],
+ "matrix": {
+ "rows": 14,
+ "cols": 8
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "6,5",
+ "6,4",
+ "6,3",
+ "6,2",
+ "6,1",
+ "6,0",
+ {
+ "x": 5.5
+ },
+ "13,0",
+ "13,1",
+ "13,2",
+ "13,3",
+ "13,4",
+ "13,5"
+ ],
+ [
+ "5,5",
+ "5,4",
+ "5,3",
+ "5,2",
+ "5,1",
+ "5,0",
+ {
+ "x": 5.5
+ },
+ "12,0",
+ "12,1",
+ "12,2",
+ "12,3",
+ "12,4",
+ "12,5"
+ ],
+ [
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ "4,0",
+ {
+ "x": 5.5
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5"
+ ],
+ [
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ "3,0",
+ {
+ "x": 5.5
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5"
+ ],
+ [
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ "2,0",
+ {
+ "x": 5.5
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "x": 2
+ },
+ "1,3",
+ "1,2",
+ {
+ "x": 9.5
+ },
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 5.5
+ },
+ "0,3",
+ "0,2",
+ "0,1",
+ {
+ "x": 0.5
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "x": 5.5
+ },
+ "0,7",
+ "0,6",
+ "0,5",
+ {
+ "x": 0.5
+ },
+ "7,5",
+ "7,6",
+ "7,7"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/imprint/imprint_function_row/rules.mk b/keyboards/cyboard/imprint/imprint_function_row/rules.mk
new file mode 100644
index 00000000000..e02abfc9b0e
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_function_row/rules.mk
@@ -0,0 +1 @@
+
diff --git a/keyboards/cyboard/imprint/imprint_function_row_566665/info.json b/keyboards/cyboard/imprint/imprint_function_row_566665/info.json
new file mode 100644
index 00000000000..243247538fe
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_function_row_566665/info.json
@@ -0,0 +1,193 @@
+{
+ "rgb_matrix": {
+ "split_count": [40, 40],
+ "layout": [
+ {"flags": 4, "matrix": [3, 0], "x": 86, "y": 32},
+ {"flags": 4, "matrix": [2, 0], "x": 86, "y": 43},
+ {"flags": 4, "matrix": [6, 0], "x": 86, "y": 0},
+ {"flags": 4, "matrix": [5, 0], "x": 86, "y": 11},
+ {"flags": 4, "matrix": [4, 0], "x": 86, "y": 21},
+
+ {"flags": 4, "matrix": [3, 1], "x": 69, "y": 32},
+ {"flags": 4, "matrix": [2, 1], "x": 69, "y": 43},
+ {"flags": 4, "matrix": [1, 1], "x": 69, "y": 43},
+ {"flags": 4, "matrix": [6, 1], "x": 69, "y": 0},
+ {"flags": 4, "matrix": [5, 1], "x": 69, "y": 11},
+ {"flags": 4, "matrix": [4, 1], "x": 69, "y": 21},
+
+ {"flags": 4, "matrix": [3, 2], "x": 52, "y": 32},
+ {"flags": 4, "matrix": [2, 2], "x": 52, "y": 43},
+ {"flags": 4, "matrix": [1, 2], "x": 52, "y": 53},
+ {"flags": 4, "matrix": [6, 2], "x": 52, "y": 0},
+ {"flags": 4, "matrix": [5, 2], "x": 52, "y": 11},
+ {"flags": 4, "matrix": [4, 2], "x": 52, "y": 21},
+
+ {"flags": 4, "matrix": [3, 3], "x": 34, "y": 32},
+ {"flags": 4, "matrix": [2, 3], "x": 34, "y": 43},
+ {"flags": 4, "matrix": [1, 3], "x": 34, "y": 53},
+ {"flags": 4, "matrix": [6, 3], "x": 34, "y": 0},
+ {"flags": 4, "matrix": [5, 3], "x": 34, "y": 11},
+ {"flags": 4, "matrix": [4, 3], "x": 34, "y": 21},
+
+ {"flags": 4, "matrix": [3, 4], "x": 17, "y": 32},
+ {"flags": 4, "matrix": [2, 4], "x": 17, "y": 43},
+ {"flags": 4, "matrix": [1, 4], "x": 17, "y": 53},
+ {"flags": 4, "matrix": [6, 4], "x": 17, "y": 0},
+ {"flags": 4, "matrix": [5, 4], "x": 17, "y": 11},
+ {"flags": 4, "matrix": [4, 4], "x": 17, "y": 21},
+
+ {"flags": 4, "matrix": [3, 5], "x": 0, "y": 32},
+ {"flags": 4, "matrix": [2, 5], "x": 0, "y": 43},
+ {"flags": 4, "matrix": [6, 5], "x": 0, "y": 0},
+ {"flags": 4, "matrix": [5, 5], "x": 0, "y": 11},
+ {"flags": 4, "matrix": [4, 5], "x": 0, "y": 21},
+
+ {"flags": 4, "matrix": [0, 3], "x": 86, "y": 53},
+ {"flags": 4, "matrix": [0, 2], "x": 103, "y": 53},
+ {"flags": 4, "matrix": [0, 1], "x": 103, "y": 64},
+ {"flags": 4, "matrix": [0, 7], "x": 69, "y": 53},
+ {"flags": 4, "matrix": [0, 6], "x": 69, "y": 64},
+ {"flags": 4, "matrix": [0, 5], "x": 86, "y": 64},
+
+
+ {"flags": 4, "matrix": [10, 0], "x": 138, "y": 32},
+ {"flags": 4, "matrix": [9, 0], "x": 138, "y": 43},
+ {"flags": 4, "matrix": [13, 0], "x": 138, "y": 0},
+ {"flags": 4, "matrix": [12, 0], "x": 138, "y": 11},
+ {"flags": 4, "matrix": [11, 0], "x": 138, "y": 21},
+
+ {"flags": 4, "matrix": [10, 1], "x": 155, "y": 32},
+ {"flags": 4, "matrix": [9, 1], "x": 155, "y": 43},
+ {"flags": 4, "matrix": [8, 1], "x": 155, "y": 53},
+ {"flags": 4, "matrix": [13, 1], "x": 155, "y": 0},
+ {"flags": 4, "matrix": [12, 1], "x": 155, "y": 11},
+ {"flags": 4, "matrix": [11, 1], "x": 155, "y": 21},
+
+ {"flags": 4, "matrix": [10, 2], "x": 172, "y": 32},
+ {"flags": 4, "matrix": [9, 2], "x": 172, "y": 43},
+ {"flags": 4, "matrix": [8, 2], "x": 172, "y": 53},
+ {"flags": 4, "matrix": [13, 2], "x": 172, "y": 0},
+ {"flags": 4, "matrix": [12, 2], "x": 172, "y": 11},
+ {"flags": 4, "matrix": [11, 2], "x": 172, "y": 21},
+
+ {"flags": 4, "matrix": [10, 3], "x": 190, "y": 32},
+ {"flags": 4, "matrix": [9, 3], "x": 190, "y": 43},
+ {"flags": 4, "matrix": [8, 3], "x": 190, "y": 53},
+ {"flags": 4, "matrix": [13, 3], "x": 190, "y": 0},
+ {"flags": 4, "matrix": [12, 3], "x": 190, "y": 11},
+ {"flags": 4, "matrix": [11, 3], "x": 190, "y": 21},
+
+ {"flags": 4, "matrix": [10, 4], "x": 207, "y": 32},
+ {"flags": 4, "matrix": [9, 4], "x": 207, "y": 43},
+ {"flags": 4, "matrix": [8, 4], "x": 207, "y": 53},
+ {"flags": 4, "matrix": [13, 4], "x": 207, "y": 0},
+ {"flags": 4, "matrix": [12, 4], "x": 207, "y": 11},
+ {"flags": 4, "matrix": [11, 4], "x": 207, "y": 21},
+
+ {"flags": 4, "matrix": [10, 5], "x": 224, "y": 32},
+ {"flags": 4, "matrix": [9, 5], "x": 224, "y": 43},
+ {"flags": 4, "matrix": [13, 5], "x": 224, "y": 0},
+ {"flags": 4, "matrix": [12, 5], "x": 224, "y": 11},
+ {"flags": 4, "matrix": [11, 5], "x": 224, "y": 21},
+
+ {"flags": 4, "matrix": [7, 3], "x": 138, "y": 53},
+ {"flags": 4, "matrix": [7, 2], "x": 121, "y": 53},
+ {"flags": 4, "matrix": [7, 1], "x": 121, "y": 64},
+ {"flags": 4, "matrix": [7, 7], "x": 138, "y": 64},
+ {"flags": 4, "matrix": [7, 6], "x": 155, "y": 64},
+ {"flags": 4, "matrix": [7, 5], "x": 155, "y": 53}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_fun_566665": {
+ "layout": [
+ { "matrix": [6, 5], "x": 0, "y": 0 },
+ { "matrix": [6, 4], "x": 1, "y": 0 },
+ { "matrix": [6, 3], "x": 2, "y": 0 },
+ { "matrix": [6, 2], "x": 3, "y": 0 },
+ { "matrix": [6, 1], "x": 4, "y": 0 },
+ { "matrix": [6, 0], "x": 5, "y": 0 },
+ { "matrix": [13, 0], "x": 11.5, "y": 0 },
+ { "matrix": [13, 1], "x": 12.5, "y": 0 },
+ { "matrix": [13, 2], "x": 13.5, "y": 0 },
+ { "matrix": [13, 3], "x": 14.5, "y": 0 },
+ { "matrix": [13, 4], "x": 15.5, "y": 0 },
+ { "matrix": [13, 5], "x": 16.5, "y": 0 },
+ { "matrix": [5, 5], "x": 0, "y": 0 },
+ { "matrix": [5, 4], "x": 1, "y": 0 },
+ { "matrix": [5, 3], "x": 2, "y": 0 },
+ { "matrix": [5, 2], "x": 3, "y": 0 },
+ { "matrix": [5, 1], "x": 4, "y": 0 },
+ { "matrix": [5, 0], "x": 5, "y": 0 },
+ { "matrix": [12, 0], "x": 11.5, "y": 0 },
+ { "matrix": [12, 1], "x": 12.5, "y": 0 },
+ { "matrix": [12, 2], "x": 13.5, "y": 0 },
+ { "matrix": [12, 3], "x": 14.5, "y": 0 },
+ { "matrix": [12, 4], "x": 15.5, "y": 0 },
+ { "matrix": [12, 5], "x": 16.5, "y": 0 },
+ { "matrix": [4, 5], "x": 0, "y": 1 },
+ { "matrix": [4, 4], "x": 1, "y": 1 },
+ { "matrix": [4, 3], "x": 2, "y": 1 },
+ { "matrix": [4, 2], "x": 3, "y": 1 },
+ { "matrix": [4, 1], "x": 4, "y": 1 },
+ { "matrix": [4, 0], "x": 5, "y": 1 },
+ { "matrix": [11, 0], "x": 10.5, "y": 1 },
+ { "matrix": [11, 1], "x": 11.5, "y": 1 },
+ { "matrix": [11, 2], "x": 12.5, "y": 1 },
+ { "matrix": [11, 3], "x": 13.5, "y": 1 },
+ { "matrix": [11, 4], "x": 14.5, "y": 1 },
+ { "matrix": [11, 5], "x": 15.5, "y": 1 },
+ { "matrix": [3, 5], "x": 0, "y": 2 },
+ { "matrix": [3, 4], "x": 1, "y": 2 },
+ { "matrix": [3, 3], "x": 2, "y": 2 },
+ { "matrix": [3, 2], "x": 3, "y": 2 },
+ { "matrix": [3, 1], "x": 4, "y": 2 },
+ { "matrix": [3, 0], "x": 5, "y": 2 },
+ { "matrix": [10, 0], "x": 10.5, "y": 2 },
+ { "matrix": [10, 1], "x": 11.5, "y": 2 },
+ { "matrix": [10, 2], "x": 12.5, "y": 2 },
+ { "matrix": [10, 3], "x": 13.5, "y": 2 },
+ { "matrix": [10, 4], "x": 14.5, "y": 2 },
+ { "matrix": [10, 5], "x": 15.5, "y": 2 },
+ { "matrix": [2, 5], "x": 0, "y": 3 },
+ { "matrix": [2, 4], "x": 1, "y": 3 },
+ { "matrix": [2, 3], "x": 2, "y": 3 },
+ { "matrix": [2, 2], "x": 3, "y": 3 },
+ { "matrix": [2, 1], "x": 4, "y": 3 },
+ { "matrix": [2, 0], "x": 5, "y": 3 },
+ { "matrix": [9, 0], "x": 10.5, "y": 3 },
+ { "matrix": [9, 1], "x": 11.5, "y": 3 },
+ { "matrix": [9, 2], "x": 12.5, "y": 3 },
+ { "matrix": [9, 3], "x": 13.5, "y": 3 },
+ { "matrix": [9, 4], "x": 14.5, "y": 3 },
+ { "matrix": [9, 5], "x": 15.5, "y": 3 },
+
+ { "matrix": [1, 4], "x": 1, "y": 3 },
+ { "matrix": [1, 3], "x": 2, "y": 3 },
+ { "matrix": [1, 2], "x": 3, "y": 3 },
+ { "matrix": [1, 1], "x": 4, "y": 3 },
+
+ { "matrix": [0, 3], "x": 4.5, "y": 3.5 },
+ { "matrix": [0, 2], "x": 5.5, "y": 3.5 },
+ { "matrix": [0, 1], "x": 6.5, "y": 4 },
+
+ { "matrix": [7, 1], "x": 10, "y": 4 },
+ { "matrix": [7, 2], "x": 11, "y": 3.5 },
+ { "matrix": [7, 3], "x": 12, "y": 3.5 },
+
+ { "matrix": [8, 1], "x": 11.5, "y": 3 },
+ { "matrix": [8, 2], "x": 12.5, "y": 3 },
+ { "matrix": [8, 3], "x": 13.5, "y": 3 },
+ { "matrix": [8, 4], "x": 14.5, "y": 3 },
+
+ { "matrix": [0, 7], "x": 6.5, "y": 5 },
+ { "matrix": [0, 6], "x": 7.5, "y": 5 },
+ { "matrix": [0, 5], "x": 7.5, "y": 4 },
+
+ { "matrix": [7, 5], "x": 9, "y": 4 },
+ { "matrix": [7, 6], "x": 9, "y": 5 },
+ { "matrix": [7, 7], "x": 10, "y": 5 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/cyboard/imprint/imprint_function_row_566665/keymaps/vial/keymap.c b/keyboards/cyboard/imprint/imprint_function_row_566665/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..87d2e906f36
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_function_row_566665/keymaps/vial/keymap.c
@@ -0,0 +1,108 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_fun_566665(
+ 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_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_RIGHT, KC_LGUI, KC_LALT, KC_QUOT, KC_LGUI, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, MO(1), KC_LBRC, KC_LBRC, KC_RBRC, KC_UP,
+ KC_HOME, KC_END, KC_ESC, KC_GRAVE, KC_CAPS, KC_APP
+ ),
+
+ [1] = LAYOUT_fun_566665(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_fun_566665(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_fun_566665(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_fun_566665(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_fun_566665(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_fun_566665(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_fun_566665(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_fun_566665(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_fun_566665(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/imprint/imprint_function_row_566665/keymaps/vial/rules.mk b/keyboards/cyboard/imprint/imprint_function_row_566665/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_function_row_566665/keymaps/vial/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/imprint/imprint_function_row_566665/keymaps/vial/vial.json b/keyboards/cyboard/imprint/imprint_function_row_566665/keymaps/vial/vial.json
new file mode 100644
index 00000000000..7512393b131
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_function_row_566665/keymaps/vial/vial.json
@@ -0,0 +1,145 @@
+{
+ "name": "Imprint",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 8
+ },
+ "layouts": {
+ "keymap":
+ [
+ [
+ "6,5",
+ "6,4",
+ "6,3",
+ "6,2",
+ "6,1",
+ "6,0",
+ {
+ "x": 5.5
+ },
+ "13,0",
+ "13,1",
+ "13,2",
+ "13,3",
+ "13,4",
+ "13,5"
+ ],
+ [
+ "5,5",
+ "5,4",
+ "5,3",
+ "5,2",
+ "5,1",
+ "5,0",
+ {
+ "x": 5.5
+ },
+ "12,0",
+ "12,1",
+ "12,2",
+ "12,3",
+ "12,4",
+ "12,5"
+ ],
+ [
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ "4,0",
+ {
+ "x": 5.5
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5"
+ ],
+ [
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ "3,0",
+ {
+ "x": 5.5
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5"
+ ],
+ [
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ "2,0",
+ {
+ "x": 5.5
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "x": 1
+ },
+ "1,4",
+ "1,3",
+ "1,2",
+ "1,1",
+ {
+ "x": 7.5
+ },
+ "8,1",
+ "8,2",
+ "8,3",
+ "8,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 5.5
+ },
+ "0,3",
+ "0,2",
+ "0,1",
+ {
+ "x": 0.5
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "x": 5.5
+ },
+ "0,7",
+ "0,6",
+ "0,5",
+ {
+ "x": 0.5
+ },
+ "7,5",
+ "7,6",
+ "7,7"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/cyboard/imprint/imprint_function_row_566665/rules.mk b/keyboards/cyboard/imprint/imprint_function_row_566665/rules.mk
new file mode 100644
index 00000000000..e02abfc9b0e
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_function_row_566665/rules.mk
@@ -0,0 +1 @@
+
diff --git a/keyboards/cyboard/imprint/imprint_function_row_full_bottom_row/info.json b/keyboards/cyboard/imprint/imprint_function_row_full_bottom_row/info.json
new file mode 100644
index 00000000000..5d3f33f2142
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_function_row_full_bottom_row/info.json
@@ -0,0 +1,197 @@
+{
+ "rgb_matrix": {
+ "split_count": [41, 41],
+ "layout": [
+ {"flags": 4, "matrix": [3, 0], "x": 86, "y": 32},
+ {"flags": 4, "matrix": [2, 0], "x": 86, "y": 43},
+ {"flags": 4, "matrix": [6, 0], "x": 86, "y": 0},
+ {"flags": 4, "matrix": [5, 0], "x": 86, "y": 11},
+ {"flags": 4, "matrix": [4, 0], "x": 86, "y": 21},
+
+ {"flags": 4, "matrix": [3, 1], "x": 69, "y": 32},
+ {"flags": 4, "matrix": [2, 1], "x": 69, "y": 43},
+ {"flags": 4, "matrix": [2, 1], "x": 69, "y": 43},
+ {"flags": 4, "matrix": [6, 1], "x": 69, "y": 0},
+ {"flags": 4, "matrix": [5, 1], "x": 69, "y": 11},
+ {"flags": 4, "matrix": [4, 1], "x": 69, "y": 21},
+
+ {"flags": 4, "matrix": [3, 2], "x": 52, "y": 32},
+ {"flags": 4, "matrix": [2, 2], "x": 52, "y": 43},
+ {"flags": 4, "matrix": [1, 2], "x": 52, "y": 53},
+ {"flags": 4, "matrix": [6, 2], "x": 52, "y": 0},
+ {"flags": 4, "matrix": [5, 2], "x": 52, "y": 11},
+ {"flags": 4, "matrix": [4, 2], "x": 52, "y": 21},
+
+ {"flags": 4, "matrix": [3, 3], "x": 34, "y": 32},
+ {"flags": 4, "matrix": [2, 3], "x": 34, "y": 43},
+ {"flags": 4, "matrix": [1, 3], "x": 34, "y": 53},
+ {"flags": 4, "matrix": [6, 3], "x": 34, "y": 0},
+ {"flags": 4, "matrix": [5, 3], "x": 34, "y": 11},
+ {"flags": 4, "matrix": [4, 3], "x": 34, "y": 21},
+
+ {"flags": 4, "matrix": [3, 4], "x": 17, "y": 32},
+ {"flags": 4, "matrix": [2, 4], "x": 17, "y": 43},
+ {"flags": 4, "matrix": [2, 4], "x": 17, "y": 53},
+ {"flags": 4, "matrix": [6, 4], "x": 17, "y": 0},
+ {"flags": 4, "matrix": [5, 4], "x": 17, "y": 11},
+ {"flags": 4, "matrix": [4, 4], "x": 17, "y": 21},
+
+ {"flags": 4, "matrix": [3, 5], "x": 0, "y": 32},
+ {"flags": 4, "matrix": [2, 5], "x": 0, "y": 43},
+ {"flags": 4, "matrix": [2, 5], "x": 0, "y": 53},
+ {"flags": 4, "matrix": [6, 5], "x": 0, "y": 0},
+ {"flags": 4, "matrix": [5, 5], "x": 0, "y": 11},
+ {"flags": 4, "matrix": [4, 5], "x": 0, "y": 21},
+
+ {"flags": 4, "matrix": [0, 3], "x": 86, "y": 53},
+ {"flags": 4, "matrix": [0, 2], "x": 103, "y": 53},
+ {"flags": 4, "matrix": [0, 1], "x": 103, "y": 64},
+ {"flags": 4, "matrix": [0, 7], "x": 69, "y": 53},
+ {"flags": 4, "matrix": [0, 6], "x": 69, "y": 64},
+ {"flags": 4, "matrix": [0, 5], "x": 86, "y": 64},
+
+
+ {"flags": 4, "matrix": [10, 0], "x": 138, "y": 32},
+ {"flags": 4, "matrix": [9, 0], "x": 138, "y": 43},
+ {"flags": 4, "matrix": [13, 0], "x": 138, "y": 0},
+ {"flags": 4, "matrix": [12, 0], "x": 138, "y": 11},
+ {"flags": 4, "matrix": [11, 0], "x": 138, "y": 21},
+
+ {"flags": 4, "matrix": [10, 1], "x": 155, "y": 32},
+ {"flags": 4, "matrix": [9, 1], "x": 155, "y": 43},
+ {"flags": 4, "matrix": [9, 1], "x": 155, "y": 53},
+ {"flags": 4, "matrix": [13, 1], "x": 155, "y": 0},
+ {"flags": 4, "matrix": [12, 1], "x": 155, "y": 11},
+ {"flags": 4, "matrix": [11, 1], "x": 155, "y": 21},
+
+ {"flags": 4, "matrix": [10, 2], "x": 172, "y": 32},
+ {"flags": 4, "matrix": [9, 2], "x": 172, "y": 43},
+ {"flags": 4, "matrix": [8, 2], "x": 172, "y": 53},
+ {"flags": 4, "matrix": [13, 2], "x": 172, "y": 0},
+ {"flags": 4, "matrix": [12, 2], "x": 172, "y": 11},
+ {"flags": 4, "matrix": [11, 2], "x": 172, "y": 21},
+
+ {"flags": 4, "matrix": [10, 3], "x": 190, "y": 32},
+ {"flags": 4, "matrix": [9, 3], "x": 190, "y": 43},
+ {"flags": 4, "matrix": [8, 3], "x": 190, "y": 53},
+ {"flags": 4, "matrix": [13, 3], "x": 190, "y": 0},
+ {"flags": 4, "matrix": [12, 3], "x": 190, "y": 11},
+ {"flags": 4, "matrix": [11, 3], "x": 190, "y": 21},
+
+ {"flags": 4, "matrix": [10, 4], "x": 207, "y": 32},
+ {"flags": 4, "matrix": [9, 4], "x": 207, "y": 43},
+ {"flags": 4, "matrix": [9, 4], "x": 207, "y": 53},
+ {"flags": 4, "matrix": [13, 4], "x": 207, "y": 0},
+ {"flags": 4, "matrix": [12, 4], "x": 207, "y": 11},
+ {"flags": 4, "matrix": [11, 4], "x": 207, "y": 21},
+
+ {"flags": 4, "matrix": [10, 5], "x": 224, "y": 32},
+ {"flags": 4, "matrix": [9, 5], "x": 224, "y": 43},
+ {"flags": 4, "matrix": [9, 5], "x": 224, "y": 53},
+ {"flags": 4, "matrix": [13, 5], "x": 224, "y": 0},
+ {"flags": 4, "matrix": [12, 5], "x": 224, "y": 11},
+ {"flags": 4, "matrix": [11, 5], "x": 224, "y": 21},
+
+ {"flags": 4, "matrix": [7, 3], "x": 138, "y": 53},
+ {"flags": 4, "matrix": [7, 2], "x": 121, "y": 53},
+ {"flags": 4, "matrix": [7, 1], "x": 121, "y": 64},
+ {"flags": 4, "matrix": [7, 7], "x": 138, "y": 64},
+ {"flags": 4, "matrix": [7, 6], "x": 155, "y": 64},
+ {"flags": 4, "matrix": [7, 5], "x": 155, "y": 53}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_fun_full_bottom_row": {
+ "layout": [
+ { "matrix": [6, 5], "x": 0, "y": 0 },
+ { "matrix": [6, 4], "x": 1, "y": 0 },
+ { "matrix": [6, 3], "x": 2, "y": 0 },
+ { "matrix": [6, 2], "x": 3, "y": 0 },
+ { "matrix": [6, 1], "x": 4, "y": 0 },
+ { "matrix": [6, 0], "x": 5, "y": 0 },
+ { "matrix": [13, 0], "x": 11.5, "y": 0 },
+ { "matrix": [13, 1], "x": 12.5, "y": 0 },
+ { "matrix": [13, 2], "x": 13.5, "y": 0 },
+ { "matrix": [13, 3], "x": 14.5, "y": 0 },
+ { "matrix": [13, 4], "x": 15.5, "y": 0 },
+ { "matrix": [13, 5], "x": 16.5, "y": 0 },
+ { "matrix": [5, 5], "x": 0, "y": 0 },
+ { "matrix": [5, 4], "x": 1, "y": 0 },
+ { "matrix": [5, 3], "x": 2, "y": 0 },
+ { "matrix": [5, 2], "x": 3, "y": 0 },
+ { "matrix": [5, 1], "x": 4, "y": 0 },
+ { "matrix": [5, 0], "x": 5, "y": 0 },
+ { "matrix": [12, 0], "x": 11.5, "y": 0 },
+ { "matrix": [12, 1], "x": 12.5, "y": 0 },
+ { "matrix": [12, 2], "x": 13.5, "y": 0 },
+ { "matrix": [12, 3], "x": 14.5, "y": 0 },
+ { "matrix": [12, 4], "x": 15.5, "y": 0 },
+ { "matrix": [12, 5], "x": 16.5, "y": 0 },
+ { "matrix": [4, 5], "x": 0, "y": 1 },
+ { "matrix": [4, 4], "x": 1, "y": 1 },
+ { "matrix": [4, 3], "x": 2, "y": 1 },
+ { "matrix": [4, 2], "x": 3, "y": 1 },
+ { "matrix": [4, 1], "x": 4, "y": 1 },
+ { "matrix": [4, 0], "x": 5, "y": 1 },
+ { "matrix": [11, 0], "x": 10.5, "y": 1 },
+ { "matrix": [11, 1], "x": 11.5, "y": 1 },
+ { "matrix": [11, 2], "x": 12.5, "y": 1 },
+ { "matrix": [11, 3], "x": 13.5, "y": 1 },
+ { "matrix": [11, 4], "x": 14.5, "y": 1 },
+ { "matrix": [11, 5], "x": 15.5, "y": 1 },
+ { "matrix": [3, 5], "x": 0, "y": 2 },
+ { "matrix": [3, 4], "x": 1, "y": 2 },
+ { "matrix": [3, 3], "x": 2, "y": 2 },
+ { "matrix": [3, 2], "x": 3, "y": 2 },
+ { "matrix": [3, 1], "x": 4, "y": 2 },
+ { "matrix": [3, 0], "x": 5, "y": 2 },
+ { "matrix": [10, 0], "x": 10.5, "y": 2 },
+ { "matrix": [10, 1], "x": 11.5, "y": 2 },
+ { "matrix": [10, 2], "x": 12.5, "y": 2 },
+ { "matrix": [10, 3], "x": 13.5, "y": 2 },
+ { "matrix": [10, 4], "x": 14.5, "y": 2 },
+ { "matrix": [10, 5], "x": 15.5, "y": 2 },
+ { "matrix": [2, 5], "x": 0, "y": 3 },
+ { "matrix": [2, 4], "x": 1, "y": 3 },
+ { "matrix": [2, 3], "x": 2, "y": 3 },
+ { "matrix": [2, 2], "x": 3, "y": 3 },
+ { "matrix": [2, 1], "x": 4, "y": 3 },
+ { "matrix": [2, 0], "x": 5, "y": 3 },
+ { "matrix": [9, 0], "x": 10.5, "y": 3 },
+ { "matrix": [9, 1], "x": 11.5, "y": 3 },
+ { "matrix": [9, 2], "x": 12.5, "y": 3 },
+ { "matrix": [9, 3], "x": 13.5, "y": 3 },
+ { "matrix": [9, 4], "x": 14.5, "y": 3 },
+ { "matrix": [9, 5], "x": 15.5, "y": 3 },
+
+ { "matrix": [1, 5], "x": 0, "y": 3 },
+ { "matrix": [1, 4], "x": 1, "y": 3 },
+ { "matrix": [1, 3], "x": 2, "y": 3 },
+ { "matrix": [1, 2], "x": 3, "y": 3 },
+ { "matrix": [1, 1], "x": 4, "y": 3 },
+
+ { "matrix": [0, 3], "x": 4.5, "y": 3.5 },
+ { "matrix": [0, 2], "x": 5.5, "y": 3.5 },
+ { "matrix": [0, 1], "x": 6.5, "y": 4 },
+
+ { "matrix": [7, 1], "x": 10, "y": 4 },
+ { "matrix": [7, 2], "x": 11, "y": 3.5 },
+ { "matrix": [7, 3], "x": 12, "y": 3.5 },
+
+ { "matrix": [8, 1], "x": 11.5, "y": 3 },
+ { "matrix": [8, 2], "x": 12.5, "y": 3 },
+ { "matrix": [8, 3], "x": 13.5, "y": 3 },
+ { "matrix": [8, 4], "x": 14.5, "y": 3 },
+ { "matrix": [8, 5], "x": 15.5, "y": 3 },
+
+ { "matrix": [0, 7], "x": 6.5, "y": 5 },
+ { "matrix": [0, 6], "x": 7.5, "y": 5 },
+ { "matrix": [0, 5], "x": 7.5, "y": 4 },
+
+ { "matrix": [7, 5], "x": 9, "y": 4 },
+ { "matrix": [7, 6], "x": 9, "y": 5 },
+ { "matrix": [7, 7], "x": 10, "y": 5 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/cyboard/imprint/imprint_function_row_full_bottom_row/keymaps/vial/keymap.c b/keyboards/cyboard/imprint/imprint_function_row_full_bottom_row/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..05effb52de3
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_function_row_full_bottom_row/keymaps/vial/keymap.c
@@ -0,0 +1,108 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_fun_full_bottom_row(
+ 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_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_LEFT, KC_RIGHT, KC_LGUI, KC_LALT, KC_QUOT, KC_LGUI, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, MO(1), KC_LBRC, KC_LBRC, KC_RBRC, KC_UP, KC_DOWN,
+ KC_HOME, KC_END, KC_ESC, KC_GRAVE, KC_CAPS, KC_APP
+ ),
+
+ [1] = LAYOUT_fun_full_bottom_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_fun_full_bottom_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_fun_full_bottom_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_fun_full_bottom_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_fun_full_bottom_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_fun_full_bottom_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_fun_full_bottom_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_fun_full_bottom_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_fun_full_bottom_row(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/imprint/imprint_function_row_full_bottom_row/keymaps/vial/rules.mk b/keyboards/cyboard/imprint/imprint_function_row_full_bottom_row/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_function_row_full_bottom_row/keymaps/vial/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/imprint/imprint_function_row_full_bottom_row/keymaps/vial/vial.json b/keyboards/cyboard/imprint/imprint_function_row_full_bottom_row/keymaps/vial/vial.json
new file mode 100644
index 00000000000..e620b04c320
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_function_row_full_bottom_row/keymaps/vial/vial.json
@@ -0,0 +1,144 @@
+{
+ "name": "Imprint",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 8
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "6,5",
+ "6,4",
+ "6,3",
+ "6,2",
+ "6,1",
+ "6,0",
+ {
+ "x": 5.5
+ },
+ "13,0",
+ "13,1",
+ "13,2",
+ "13,3",
+ "13,4",
+ "13,5"
+ ],
+ [
+ "5,5",
+ "5,4",
+ "5,3",
+ "5,2",
+ "5,1",
+ "5,0",
+ {
+ "x": 5.5
+ },
+ "12,0",
+ "12,1",
+ "12,2",
+ "12,3",
+ "12,4",
+ "12,5"
+ ],
+ [
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ "4,0",
+ {
+ "x": 5.5
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5"
+ ],
+ [
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ "3,0",
+ {
+ "x": 5.5
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5"
+ ],
+ [
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ "2,0",
+ {
+ "x": 5.5
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5"
+ ],
+ [
+ "1,5",
+ "1,4",
+ "1,3",
+ "1,2",
+ "1,1",
+ {
+ "x": 7.5
+ },
+ "8,1",
+ "8,2",
+ "8,3",
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 5.5
+ },
+ "0,3",
+ "0,2",
+ "0,1",
+ {
+ "x": 0.5
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "x": 5.5
+ },
+ "0,7",
+ "0,6",
+ "0,5",
+ {
+ "x": 0.5
+ },
+ "7,5",
+ "7,6",
+ "7,7"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/imprint/imprint_function_row_full_bottom_row/rules.mk b/keyboards/cyboard/imprint/imprint_function_row_full_bottom_row/rules.mk
new file mode 100644
index 00000000000..e02abfc9b0e
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_function_row_full_bottom_row/rules.mk
@@ -0,0 +1 @@
+
diff --git a/keyboards/cyboard/imprint/imprint_function_row_full_bottom_row_7_col/info.json b/keyboards/cyboard/imprint/imprint_function_row_full_bottom_row_7_col/info.json
new file mode 100644
index 00000000000..9185ad3b90a
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_function_row_full_bottom_row_7_col/info.json
@@ -0,0 +1,211 @@
+{
+ "rgb_matrix": {
+ "split_count": [47, 47],
+ "layout": [
+ {"flags": 4, "matrix": [3, 0]},
+ {"flags": 4, "matrix": [2, 0], "x": 86, "y": 43},
+ {"flags": 4, "matrix": [6, 0], "x": 86, "y": 0},
+ {"flags": 4, "matrix": [5, 0], "x": 86, "y": 11},
+ {"flags": 4, "matrix": [4, 0], "x": 86, "y": 21},
+
+ {"flags": 4, "matrix": [3, 1], "x": 69, "y": 32},
+ {"flags": 4, "matrix": [2, 1], "x": 69, "y": 43},
+ {"flags": 4, "matrix": [1, 1], "x": 69, "y": 43},
+ {"flags": 4, "matrix": [6, 1], "x": 69, "y": 0},
+ {"flags": 4, "matrix": [5, 1], "x": 69, "y": 11},
+ {"flags": 4, "matrix": [4, 1], "x": 69, "y": 21},
+
+ {"flags": 4, "matrix": [3, 2], "x": 52, "y": 32},
+ {"flags": 4, "matrix": [2, 2], "x": 52, "y": 43},
+ {"flags": 4, "matrix": [1, 2], "x": 52, "y": 53},
+ {"flags": 4, "matrix": [6, 2], "x": 52, "y": 0},
+ {"flags": 4, "matrix": [5, 2], "x": 52, "y": 11},
+ {"flags": 4, "matrix": [4, 2], "x": 52, "y": 21},
+
+ {"flags": 4, "matrix": [3, 3], "x": 34, "y": 32},
+ {"flags": 4, "matrix": [2, 3], "x": 34, "y": 43},
+ {"flags": 4, "matrix": [1, 3], "x": 34, "y": 53},
+ {"flags": 4, "matrix": [6, 3], "x": 34, "y": 0},
+ {"flags": 4, "matrix": [5, 3], "x": 34, "y": 11},
+ {"flags": 4, "matrix": [4, 3], "x": 34, "y": 21},
+
+ {"flags": 4, "matrix": [3, 4], "x": 17, "y": 32},
+ {"flags": 4, "matrix": [2, 4], "x": 17, "y": 43},
+ {"flags": 4, "matrix": [1, 4], "x": 17, "y": 53},
+ {"flags": 4, "matrix": [6, 4], "x": 17, "y": 0},
+ {"flags": 4, "matrix": [5, 4], "x": 17, "y": 11},
+ {"flags": 4, "matrix": [4, 4], "x": 17, "y": 21},
+
+ {"flags": 4, "matrix": [3, 5], "x": 0, "y": 32},
+ {"flags": 4, "matrix": [2, 5], "x": 0, "y": 43},
+ {"flags": 4, "matrix": [1, 5], "x": 0, "y": 53},
+ {"flags": 4, "matrix": [6, 5], "x": 0, "y": 0},
+ {"flags": 4, "matrix": [5, 5], "x": 0, "y": 11},
+ {"flags": 4, "matrix": [4, 5], "x": 0, "y": 21},
+
+ {"flags": 4, "matrix": [3, 6], "x": 0, "y": 32},
+ {"flags": 4, "matrix": [2, 6], "x": 0, "y": 43},
+ {"flags": 4, "matrix": [1, 6], "x": 0, "y": 53},
+ {"flags": 4, "matrix": [6, 6], "x": 0, "y": 0},
+ {"flags": 4, "matrix": [5, 6], "x": 0, "y": 11},
+ {"flags": 4, "matrix": [4, 6], "x": 0, "y": 21},
+
+ {"flags": 4, "matrix": [0, 3], "x": 86, "y": 53},
+ {"flags": 4, "matrix": [0, 2], "x": 103, "y": 53},
+ {"flags": 4, "matrix": [0, 1], "x": 103, "y": 64},
+ {"flags": 4, "matrix": [0, 7], "x": 69, "y": 53},
+ {"flags": 4, "matrix": [0, 6], "x": 69, "y": 64},
+ {"flags": 4, "matrix": [0, 5], "x": 86, "y": 64},
+
+
+ {"flags": 4, "matrix": [10, 0], "x": 138, "y": 32},
+ {"flags": 4, "matrix": [9, 0], "x": 138, "y": 43},
+ {"flags": 4, "matrix": [13, 0], "x": 138, "y": 0},
+ {"flags": 4, "matrix": [12, 0], "x": 138, "y": 11},
+ {"flags": 4, "matrix": [11, 0], "x": 138, "y": 21},
+
+ {"flags": 4, "matrix": [10, 1], "x": 155, "y": 32},
+ {"flags": 4, "matrix": [9, 1], "x": 155, "y": 43},
+ {"flags": 4, "matrix": [8, 1], "x": 155, "y": 53},
+ {"flags": 4, "matrix": [13, 1], "x": 155, "y": 0},
+ {"flags": 4, "matrix": [12, 1], "x": 155, "y": 11},
+ {"flags": 4, "matrix": [11, 1], "x": 155, "y": 21},
+
+ {"flags": 4, "matrix": [10, 2], "x": 172, "y": 32},
+ {"flags": 4, "matrix": [9, 2], "x": 172, "y": 43},
+ {"flags": 4, "matrix": [8, 2], "x": 172, "y": 53},
+ {"flags": 4, "matrix": [13, 2], "x": 172, "y": 0},
+ {"flags": 4, "matrix": [12, 2], "x": 172, "y": 11},
+ {"flags": 4, "matrix": [11, 2], "x": 172, "y": 21},
+
+ {"flags": 4, "matrix": [10, 3], "x": 190, "y": 32},
+ {"flags": 4, "matrix": [9, 3], "x": 190, "y": 43},
+ {"flags": 4, "matrix": [8, 3], "x": 190, "y": 53},
+ {"flags": 4, "matrix": [13, 3], "x": 190, "y": 0},
+ {"flags": 4, "matrix": [12, 3], "x": 190, "y": 11},
+ {"flags": 4, "matrix": [11, 3], "x": 190, "y": 21},
+
+ {"flags": 4, "matrix": [10, 4], "x": 207, "y": 32},
+ {"flags": 4, "matrix": [9, 4], "x": 207, "y": 43},
+ {"flags": 4, "matrix": [8, 4], "x": 207, "y": 53},
+ {"flags": 4, "matrix": [13, 4], "x": 207, "y": 0},
+ {"flags": 4, "matrix": [12, 4], "x": 207, "y": 11},
+ {"flags": 4, "matrix": [11, 4], "x": 207, "y": 21},
+
+ {"flags": 4, "matrix": [10, 5], "x": 224, "y": 32},
+ {"flags": 4, "matrix": [9, 5], "x": 224, "y": 43},
+ {"flags": 4, "matrix": [8, 5], "x": 224, "y": 53},
+ {"flags": 4, "matrix": [13, 5], "x": 224, "y": 0},
+ {"flags": 4, "matrix": [12, 5], "x": 224, "y": 11},
+ {"flags": 4, "matrix": [11, 5], "x": 224, "y": 21},
+
+ {"flags": 4, "matrix": [10, 6], "x": 224, "y": 32},
+ {"flags": 4, "matrix": [9, 6], "x": 224, "y": 43},
+ {"flags": 4, "matrix": [8, 6], "x": 224, "y": 53},
+ {"flags": 4, "matrix": [13, 6], "x": 224, "y": 0},
+ {"flags": 4, "matrix": [12, 6], "x": 224, "y": 11},
+ {"flags": 4, "matrix": [11, 6], "x": 224, "y": 21},
+
+ {"flags": 4, "matrix": [7, 3], "x": 138, "y": 53},
+ {"flags": 4, "matrix": [7, 2], "x": 121, "y": 53},
+ {"flags": 4, "matrix": [7, 1], "x": 121, "y": 64},
+ {"flags": 4, "matrix": [7, 7], "x": 138, "y": 64},
+ {"flags": 4, "matrix": [7, 6], "x": 155, "y": 64},
+ {"flags": 4, "matrix": [7, 5], "x": 155, "y": 53}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_fun_full_bottom_row_7_col": {
+ "layout": [
+ { "matrix": [6, 5], "x": 0, "y": 0 },
+ { "matrix": [6, 4], "x": 1, "y": 0 },
+ { "matrix": [6, 3], "x": 2, "y": 0 },
+ { "matrix": [6, 2], "x": 3, "y": 0 },
+ { "matrix": [6, 1], "x": 4, "y": 0 },
+ { "matrix": [6, 0], "x": 5, "y": 0 },
+ { "matrix": [13, 0], "x": 11.5, "y": 0 },
+ { "matrix": [13, 1], "x": 12.5, "y": 0 },
+ { "matrix": [13, 2], "x": 13.5, "y": 0 },
+ { "matrix": [13, 3], "x": 14.5, "y": 0 },
+ { "matrix": [13, 4], "x": 15.5, "y": 0 },
+ { "matrix": [13, 5], "x": 16.5, "y": 0 },
+ { "matrix": [5, 5], "x": 0, "y": 0 },
+ { "matrix": [5, 4], "x": 1, "y": 0 },
+ { "matrix": [5, 3], "x": 2, "y": 0 },
+ { "matrix": [5, 2], "x": 3, "y": 0 },
+ { "matrix": [5, 1], "x": 4, "y": 0 },
+ { "matrix": [5, 0], "x": 5, "y": 0 },
+ { "matrix": [12, 0], "x": 11.5, "y": 0 },
+ { "matrix": [12, 1], "x": 12.5, "y": 0 },
+ { "matrix": [12, 2], "x": 13.5, "y": 0 },
+ { "matrix": [12, 3], "x": 14.5, "y": 0 },
+ { "matrix": [12, 4], "x": 15.5, "y": 0 },
+ { "matrix": [12, 5], "x": 16.5, "y": 0 },
+ { "matrix": [4, 5], "x": 0, "y": 1 },
+ { "matrix": [4, 4], "x": 1, "y": 1 },
+ { "matrix": [4, 3], "x": 2, "y": 1 },
+ { "matrix": [4, 2], "x": 3, "y": 1 },
+ { "matrix": [4, 1], "x": 4, "y": 1 },
+ { "matrix": [4, 0], "x": 5, "y": 1 },
+ { "matrix": [11, 0], "x": 10.5, "y": 1 },
+ { "matrix": [11, 1], "x": 11.5, "y": 1 },
+ { "matrix": [11, 2], "x": 12.5, "y": 1 },
+ { "matrix": [11, 3], "x": 13.5, "y": 1 },
+ { "matrix": [11, 4], "x": 14.5, "y": 1 },
+ { "matrix": [11, 5], "x": 15.5, "y": 1 },
+ { "matrix": [3, 5], "x": 0, "y": 2 },
+ { "matrix": [3, 4], "x": 1, "y": 2 },
+ { "matrix": [3, 3], "x": 2, "y": 2 },
+ { "matrix": [3, 2], "x": 3, "y": 2 },
+ { "matrix": [3, 1], "x": 4, "y": 2 },
+ { "matrix": [3, 0], "x": 5, "y": 2 },
+ { "matrix": [10, 0], "x": 10.5, "y": 2 },
+ { "matrix": [10, 1], "x": 11.5, "y": 2 },
+ { "matrix": [10, 2], "x": 12.5, "y": 2 },
+ { "matrix": [10, 3], "x": 13.5, "y": 2 },
+ { "matrix": [10, 4], "x": 14.5, "y": 2 },
+ { "matrix": [10, 5], "x": 15.5, "y": 2 },
+ { "matrix": [2, 5], "x": 0, "y": 3 },
+ { "matrix": [2, 4], "x": 1, "y": 3 },
+ { "matrix": [2, 3], "x": 2, "y": 3 },
+ { "matrix": [2, 2], "x": 3, "y": 3 },
+ { "matrix": [2, 1], "x": 4, "y": 3 },
+ { "matrix": [2, 0], "x": 5, "y": 3 },
+ { "matrix": [9, 0], "x": 10.5, "y": 3 },
+ { "matrix": [9, 1], "x": 11.5, "y": 3 },
+ { "matrix": [9, 2], "x": 12.5, "y": 3 },
+ { "matrix": [9, 3], "x": 13.5, "y": 3 },
+ { "matrix": [9, 4], "x": 14.5, "y": 3 },
+ { "matrix": [9, 5], "x": 15.5, "y": 3 },
+
+ { "matrix": [1, 5], "x": 0, "y": 3 },
+ { "matrix": [1, 4], "x": 1, "y": 3 },
+ { "matrix": [1, 3], "x": 2, "y": 3 },
+ { "matrix": [1, 2], "x": 3, "y": 3 },
+ { "matrix": [1, 1], "x": 4, "y": 3 },
+
+ { "matrix": [0, 3], "x": 4.5, "y": 3.5 },
+ { "matrix": [0, 2], "x": 5.5, "y": 3.5 },
+ { "matrix": [0, 1], "x": 6.5, "y": 4 },
+
+ { "matrix": [7, 1], "x": 10, "y": 4 },
+ { "matrix": [7, 2], "x": 11, "y": 3.5 },
+ { "matrix": [7, 3], "x": 12, "y": 3.5 },
+
+ { "matrix": [8, 1], "x": 11.5, "y": 3 },
+ { "matrix": [8, 2], "x": 12.5, "y": 3 },
+ { "matrix": [8, 3], "x": 13.5, "y": 3 },
+ { "matrix": [8, 4], "x": 14.5, "y": 3 },
+ { "matrix": [8, 5], "x": 15.5, "y": 3 },
+
+ { "matrix": [0, 7], "x": 6.5, "y": 5 },
+ { "matrix": [0, 6], "x": 7.5, "y": 5 },
+ { "matrix": [0, 5], "x": 7.5, "y": 4 },
+
+ { "matrix": [7, 5], "x": 9, "y": 4 },
+ { "matrix": [7, 6], "x": 9, "y": 5 },
+ { "matrix": [7, 7], "x": 10, "y": 5 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/cyboard/imprint/imprint_function_row_full_bottom_row_7_col/keymaps/vial/keymap.c b/keyboards/cyboard/imprint/imprint_function_row_full_bottom_row_7_col/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..e55a6a47b59
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_function_row_full_bottom_row_7_col/keymaps/vial/keymap.c
@@ -0,0 +1,109 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+#include
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_fun_full_bottom_row_7_col(
+ 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_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_LEFT, KC_RIGHT, KC_LGUI, KC_LALT, KC_QUOT, KC_LGUI, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, MO(1), KC_LBRC, KC_LBRC, KC_RBRC, KC_UP, KC_DOWN,
+ KC_HOME, KC_END, KC_ESC, KC_GRAVE, KC_CAPS, KC_APP
+ ),
+
+ [1] = LAYOUT_fun_full_bottom_row_7_col(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_fun_full_bottom_row_7_col(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_fun_full_bottom_row_7_col(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_fun_full_bottom_row_7_col(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_fun_full_bottom_row_7_col(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_fun_full_bottom_row_7_col(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_fun_full_bottom_row_7_col(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_fun_full_bottom_row_7_col(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_fun_full_bottom_row_7_col(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/imprint/imprint_function_row_full_bottom_row_7_col/keymaps/vial/rules.mk b/keyboards/cyboard/imprint/imprint_function_row_full_bottom_row_7_col/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_function_row_full_bottom_row_7_col/keymaps/vial/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/imprint/imprint_function_row_full_bottom_row_7_col/keymaps/vial/vial.json b/keyboards/cyboard/imprint/imprint_function_row_full_bottom_row_7_col/keymaps/vial/vial.json
new file mode 100644
index 00000000000..9e41eb7d6ce
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_function_row_full_bottom_row_7_col/keymaps/vial/vial.json
@@ -0,0 +1,190 @@
+{
+ "name": "Imprint",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "customKeycodes": [
+ {"name": "DPI_INC",
+ "title": "Increase trackball sensitivity",
+ "shortName": "POINTER_DEFAULT_DPI_FORWARD"
+ },
+ {"name": "DPI_DEC",
+ "title": "Decrease trackball sensitivity",
+ "shortName": "POINTER_DEFAULT_DPI_REVERSE"
+ },
+ {"name": "SNP_INC",
+ "title": "Increase trackball sensitivity when in sniping mode",
+ "shortName": "POINTER_SNIPING_DPI_FORWARD"
+ },
+ {"name": "SNP_DEC",
+ "title": "Decrease trackball sensitivity when in sniping mode",
+ "shortName": "POINTER_SNIPING_DPI_REVERSE"
+ },
+ {"name": "Snipe",
+ "title": "Reduce trackball sensitivity while held",
+ "shortName": "SNIPING_MODE"
+ },
+ {"name": "SNP_TOG",
+ "title": "Toggle between normal and sniping mode",
+ "shortName": "SNIPING_MODE_TOGGLE"
+ },
+ {"name": "DragScroll",
+ "title": "Make trackball behave as a scroll wheel while held",
+ "shortName": "DRAGSCROLL_MODE"
+ },
+ {"name": "DragScroll_TOG",
+ "title": "Toggle between normal and drag scroll mode",
+ "shortName": "DRAGSCROLL_MODE_TOGGLE"
+ }
+ ],
+ "matrix": {
+ "rows": 14,
+ "cols": 8
+ },
+ "layouts": {
+ "keymap":
+ [
+ [
+ "6,6",
+ "6,5",
+ "6,4",
+ "6,3",
+ "6,2",
+ "6,1",
+ "6,0",
+ {
+ "x": 5.5
+ },
+ "13,0",
+ "13,1",
+ "13,2",
+ "13,3",
+ "13,4",
+ "13,5",
+ "13,6"
+ ],
+ [
+ "5,6",
+ "5,5",
+ "5,4",
+ "5,3",
+ "5,2",
+ "5,1",
+ "5,0",
+ {
+ "x": 5.5
+ },
+ "12,0",
+ "12,1",
+ "12,2",
+ "12,3",
+ "12,4",
+ "12,5",
+ "12,6"
+ ],
+ [
+ "4,6",
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ "4,0",
+ {
+ "x": 5.5
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5",
+ "11,6"
+ ],
+ [
+ "3,6",
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ "3,0",
+ {
+ "x": 5.5
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ "2,6",
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ "2,0",
+ {
+ "x": 5.5
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ "1,6",
+ "1,5",
+ "1,4",
+ "1,3",
+ "1,2",
+ "1,1",
+ {
+ "x": 7.5
+ },
+ "8,1",
+ "8,2",
+ "8,3",
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 6.5
+ },
+ "0,3",
+ "0,2",
+ "0,1",
+ {
+ "x": 0.5
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "x": 6.5
+ },
+ "0,7",
+ "0,6",
+ "0,5",
+ {
+ "x": 0.5
+ },
+ "7,5",
+ "7,6",
+ "7,7"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/cyboard/imprint/imprint_function_row_full_bottom_row_7_col/rules.mk b/keyboards/cyboard/imprint/imprint_function_row_full_bottom_row_7_col/rules.mk
new file mode 100644
index 00000000000..e02abfc9b0e
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_function_row_full_bottom_row_7_col/rules.mk
@@ -0,0 +1 @@
+
diff --git a/keyboards/cyboard/imprint/imprint_function_row_underglow/info.json b/keyboards/cyboard/imprint/imprint_function_row_underglow/info.json
new file mode 100644
index 00000000000..621b2568b8f
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_function_row_underglow/info.json
@@ -0,0 +1,244 @@
+{
+ "rgb_matrix": {
+ "split_count": [69, 69],
+ "layout": [
+ {"flags": 4, "matrix": [3, 0], "x": 86, "y": 32},
+ {"flags": 4, "matrix": [2, 0], "x": 86, "y": 43},
+ {"flags": 4, "matrix": [6, 0], "x": 86, "y": 0},
+ {"flags": 4, "matrix": [5, 0], "x": 86, "y": 11},
+ {"flags": 4, "matrix": [4, 0], "x": 86, "y": 21},
+
+ {"flags": 4, "matrix": [3, 1], "x": 69, "y": 32},
+ {"flags": 4, "matrix": [2, 1], "x": 69, "y": 43},
+ {"flags": 4, "matrix": [6, 1], "x": 69, "y": 0},
+ {"flags": 4, "matrix": [5, 1], "x": 69, "y": 11},
+ {"flags": 4, "matrix": [4, 1], "x": 69, "y": 21},
+
+ {"flags": 4, "matrix": [3, 2], "x": 52, "y": 32},
+ {"flags": 4, "matrix": [2, 2], "x": 52, "y": 43},
+ {"flags": 4, "matrix": [1, 2], "x": 52, "y": 53},
+ {"flags": 4, "matrix": [6, 2], "x": 52, "y": 0},
+ {"flags": 4, "matrix": [5, 2], "x": 52, "y": 11},
+ {"flags": 4, "matrix": [4, 2], "x": 52, "y": 21},
+
+ {"flags": 4, "matrix": [3, 3], "x": 34, "y": 32},
+ {"flags": 4, "matrix": [2, 3], "x": 34, "y": 43},
+ {"flags": 4, "matrix": [1, 3], "x": 34, "y": 53},
+ {"flags": 4, "matrix": [6, 3], "x": 34, "y": 0},
+ {"flags": 4, "matrix": [5, 3], "x": 34, "y": 11},
+ {"flags": 4, "matrix": [4, 3], "x": 34, "y": 21},
+
+ {"flags": 4, "matrix": [3, 4], "x": 17, "y": 32},
+ {"flags": 4, "matrix": [2, 4], "x": 17, "y": 43},
+ {"flags": 4, "matrix": [6, 4], "x": 17, "y": 0},
+ {"flags": 4, "matrix": [5, 4], "x": 17, "y": 11},
+ {"flags": 4, "matrix": [4, 4], "x": 17, "y": 21},
+
+ {"flags": 4, "matrix": [3, 5], "x": 0, "y": 32},
+ {"flags": 4, "matrix": [2, 5], "x": 0, "y": 43},
+ {"flags": 4, "matrix": [6, 5], "x": 0, "y": 0},
+ {"flags": 4, "matrix": [5, 5], "x": 0, "y": 11},
+ {"flags": 4, "matrix": [4, 5], "x": 0, "y": 21},
+
+ {"flags": 4, "matrix": [0, 3], "x": 86, "y": 53},
+ {"flags": 4, "matrix": [0, 2], "x": 103, "y": 53},
+ {"flags": 4, "matrix": [0, 1], "x": 103, "y": 64},
+ {"flags": 4, "matrix": [0, 7], "x": 69, "y": 53},
+ {"flags": 4, "matrix": [0, 6], "x": 69, "y": 64},
+ {"flags": 4, "matrix": [0, 5], "x": 86, "y": 64},
+
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+
+
+ {"flags": 4, "matrix": [10, 0], "x": 138, "y": 32},
+ {"flags": 4, "matrix": [9, 0], "x": 138, "y": 43},
+ {"flags": 4, "matrix": [13, 0], "x": 138, "y": 0},
+ {"flags": 4, "matrix": [12, 0], "x": 138, "y": 11},
+ {"flags": 4, "matrix": [11, 0], "x": 138, "y": 21},
+
+ {"flags": 4, "matrix": [10, 1], "x": 155, "y": 32},
+ {"flags": 4, "matrix": [9, 1], "x": 155, "y": 43},
+ {"flags": 4, "matrix": [13, 1], "x": 155, "y": 0},
+ {"flags": 4, "matrix": [12, 1], "x": 155, "y": 11},
+ {"flags": 4, "matrix": [11, 1], "x": 155, "y": 21},
+
+ {"flags": 4, "matrix": [10, 2], "x": 172, "y": 32},
+ {"flags": 4, "matrix": [9, 2], "x": 172, "y": 43},
+ {"flags": 4, "matrix": [8, 2], "x": 172, "y": 53},
+ {"flags": 4, "matrix": [13, 2], "x": 172, "y": 0},
+ {"flags": 4, "matrix": [12, 2], "x": 172, "y": 11},
+ {"flags": 4, "matrix": [11, 2], "x": 172, "y": 21},
+
+ {"flags": 4, "matrix": [10, 3], "x": 190, "y": 32},
+ {"flags": 4, "matrix": [9, 3], "x": 190, "y": 43},
+ {"flags": 4, "matrix": [8, 3], "x": 190, "y": 53},
+ {"flags": 4, "matrix": [13, 3], "x": 190, "y": 0},
+ {"flags": 4, "matrix": [12, 3], "x": 190, "y": 11},
+ {"flags": 4, "matrix": [11, 3], "x": 190, "y": 21},
+
+ {"flags": 4, "matrix": [10, 4], "x": 207, "y": 32},
+ {"flags": 4, "matrix": [9, 4], "x": 207, "y": 43},
+ {"flags": 4, "matrix": [13, 4], "x": 207, "y": 0},
+ {"flags": 4, "matrix": [12, 4], "x": 207, "y": 11},
+ {"flags": 4, "matrix": [11, 4], "x": 207, "y": 21},
+
+ {"flags": 4, "matrix": [10, 5], "x": 224, "y": 32},
+ {"flags": 4, "matrix": [9, 5], "x": 224, "y": 43},
+ {"flags": 4, "matrix": [13, 5], "x": 224, "y": 0},
+ {"flags": 4, "matrix": [12, 5], "x": 224, "y": 11},
+ {"flags": 4, "matrix": [11, 5], "x": 224, "y": 21},
+
+ {"flags": 4, "matrix": [7, 3], "x": 138, "y": 53},
+ {"flags": 4, "matrix": [7, 2], "x": 121, "y": 53},
+ {"flags": 4, "matrix": [7, 1], "x": 121, "y": 64},
+ {"flags": 4, "matrix": [7, 7], "x": 138, "y": 64},
+ {"flags": 4, "matrix": [7, 6], "x": 155, "y": 64},
+ {"flags": 4, "matrix": [7, 5], "x": 155, "y": 53},
+
+
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0},
+ {"flags": 1, "matrix": [0, 0], "x": 0, "y": 0}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_fun": {
+ "layout": [
+ { "matrix": [6, 5], "x": 0, "y": 0 },
+ { "matrix": [6, 4], "x": 1, "y": 0 },
+ { "matrix": [6, 3], "x": 2, "y": 0 },
+ { "matrix": [6, 2], "x": 3, "y": 0 },
+ { "matrix": [6, 1], "x": 4, "y": 0 },
+ { "matrix": [6, 0], "x": 5, "y": 0 },
+ { "matrix": [13, 0], "x": 11.5, "y": 0 },
+ { "matrix": [13, 1], "x": 12.5, "y": 0 },
+ { "matrix": [13, 2], "x": 13.5, "y": 0 },
+ { "matrix": [13, 3], "x": 14.5, "y": 0 },
+ { "matrix": [13, 4], "x": 15.5, "y": 0 },
+ { "matrix": [13, 5], "x": 16.5, "y": 0 },
+ { "matrix": [5, 5], "x": 0, "y": 0 },
+ { "matrix": [5, 4], "x": 1, "y": 0 },
+ { "matrix": [5, 3], "x": 2, "y": 0 },
+ { "matrix": [5, 2], "x": 3, "y": 0 },
+ { "matrix": [5, 1], "x": 4, "y": 0 },
+ { "matrix": [5, 0], "x": 5, "y": 0 },
+ { "matrix": [12, 0], "x": 11.5, "y": 0 },
+ { "matrix": [12, 1], "x": 12.5, "y": 0 },
+ { "matrix": [12, 2], "x": 13.5, "y": 0 },
+ { "matrix": [12, 3], "x": 14.5, "y": 0 },
+ { "matrix": [12, 4], "x": 15.5, "y": 0 },
+ { "matrix": [12, 5], "x": 16.5, "y": 0 },
+ { "matrix": [4, 5], "x": 0, "y": 1 },
+ { "matrix": [4, 4], "x": 1, "y": 1 },
+ { "matrix": [4, 3], "x": 2, "y": 1 },
+ { "matrix": [4, 2], "x": 3, "y": 1 },
+ { "matrix": [4, 1], "x": 4, "y": 1 },
+ { "matrix": [4, 0], "x": 5, "y": 1 },
+ { "matrix": [11, 0], "x": 10.5, "y": 1 },
+ { "matrix": [11, 1], "x": 11.5, "y": 1 },
+ { "matrix": [11, 2], "x": 12.5, "y": 1 },
+ { "matrix": [11, 3], "x": 13.5, "y": 1 },
+ { "matrix": [11, 4], "x": 14.5, "y": 1 },
+ { "matrix": [11, 5], "x": 15.5, "y": 1 },
+ { "matrix": [3, 5], "x": 0, "y": 2 },
+ { "matrix": [3, 4], "x": 1, "y": 2 },
+ { "matrix": [3, 3], "x": 2, "y": 2 },
+ { "matrix": [3, 2], "x": 3, "y": 2 },
+ { "matrix": [3, 1], "x": 4, "y": 2 },
+ { "matrix": [3, 0], "x": 5, "y": 2 },
+ { "matrix": [10, 0], "x": 10.5, "y": 2 },
+ { "matrix": [10, 1], "x": 11.5, "y": 2 },
+ { "matrix": [10, 2], "x": 12.5, "y": 2 },
+ { "matrix": [10, 3], "x": 13.5, "y": 2 },
+ { "matrix": [10, 4], "x": 14.5, "y": 2 },
+ { "matrix": [10, 5], "x": 15.5, "y": 2 },
+ { "matrix": [2, 5], "x": 0, "y": 3 },
+ { "matrix": [2, 4], "x": 1, "y": 3 },
+ { "matrix": [2, 3], "x": 2, "y": 3 },
+ { "matrix": [2, 2], "x": 3, "y": 3 },
+ { "matrix": [2, 1], "x": 4, "y": 3 },
+ { "matrix": [2, 0], "x": 5, "y": 3 },
+ { "matrix": [9, 0], "x": 10.5, "y": 3 },
+ { "matrix": [9, 1], "x": 11.5, "y": 3 },
+ { "matrix": [9, 2], "x": 12.5, "y": 3 },
+ { "matrix": [9, 3], "x": 13.5, "y": 3 },
+ { "matrix": [9, 4], "x": 14.5, "y": 3 },
+ { "matrix": [9, 5], "x": 15.5, "y": 3 },
+ { "matrix": [1, 3], "x": 2, "y": 3 },
+ { "matrix": [1, 2], "x": 3, "y": 3 },
+ { "matrix": [0, 7], "x": 4.5, "y": 3.5 },
+ { "matrix": [0, 3], "x": 5.5, "y": 3.5 },
+ { "matrix": [0, 2], "x": 6.5, "y": 4 },
+ { "matrix": [7, 2], "x": 10, "y": 4 },
+ { "matrix": [7, 3], "x": 11, "y": 3.5 },
+ { "matrix": [7, 7], "x": 12, "y": 3.5 },
+ { "matrix": [8, 2], "x": 13.5, "y": 3 },
+ { "matrix": [8, 3], "x": 14.5, "y": 3 },
+ { "matrix": [0, 6], "x": 6.5, "y": 5 },
+ { "matrix": [0, 5], "x": 7.5, "y": 5 },
+ { "matrix": [0, 1], "x": 7.5, "y": 4 },
+ { "matrix": [7, 1], "x": 9, "y": 4 },
+ { "matrix": [7, 5], "x": 9, "y": 5 },
+ { "matrix": [7, 6], "x": 10, "y": 5 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/cyboard/imprint/imprint_function_row_underglow/keymaps/vial/keymap.c b/keyboards/cyboard/imprint/imprint_function_row_underglow/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..8eaa787acb6
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_function_row_underglow/keymaps/vial/keymap.c
@@ -0,0 +1,108 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_fun(
+ 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_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_LGUI, KC_LALT, KC_LGUI, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, MO(1), KC_LBRC, KC_RBRC,
+ KC_HOME, KC_END, KC_ESC, KC_GRAVE, KC_CAPS, KC_APP
+ ),
+
+ [1] = LAYOUT_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/imprint/imprint_function_row_underglow/keymaps/vial/rules.mk b/keyboards/cyboard/imprint/imprint_function_row_underglow/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_function_row_underglow/keymaps/vial/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/imprint/imprint_function_row_underglow/keymaps/vial/vial.json b/keyboards/cyboard/imprint/imprint_function_row_underglow/keymaps/vial/vial.json
new file mode 100644
index 00000000000..81933911a8b
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_function_row_underglow/keymaps/vial/vial.json
@@ -0,0 +1,141 @@
+{
+ "name": "Imprint",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 8
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "6,5",
+ "6,4",
+ "6,3",
+ "6,2",
+ "6,1",
+ "6,0",
+ {
+ "x": 5.5
+ },
+ "13,0",
+ "13,1",
+ "13,2",
+ "13,3",
+ "13,4",
+ "13,5"
+ ],
+ [
+ "5,5",
+ "5,4",
+ "5,3",
+ "5,2",
+ "5,1",
+ "5,0",
+ {
+ "x": 5.5
+ },
+ "12,0",
+ "12,1",
+ "12,2",
+ "12,3",
+ "12,4",
+ "12,5"
+ ],
+ [
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ "4,0",
+ {
+ "x": 5.5
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5"
+ ],
+ [
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ "3,0",
+ {
+ "x": 5.5
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5"
+ ],
+ [
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ "2,0",
+ {
+ "x": 5.5
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "x": 2
+ },
+ "1,3",
+ "1,2",
+ {
+ "x": 9.5
+ },
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 5.5
+ },
+ "0,3",
+ "0,2",
+ "0,1",
+ {
+ "x": 0.5
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "x": 5.5
+ },
+ "0,7",
+ "0,6",
+ "0,5",
+ {
+ "x": 0.5
+ },
+ "7,5",
+ "7,6",
+ "7,7"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/imprint/imprint_function_row_underglow/rules.mk b/keyboards/cyboard/imprint/imprint_function_row_underglow/rules.mk
new file mode 100644
index 00000000000..e02abfc9b0e
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_function_row_underglow/rules.mk
@@ -0,0 +1 @@
+
diff --git a/keyboards/cyboard/imprint/imprint_letters_only/info.json b/keyboards/cyboard/imprint/imprint_letters_only/info.json
new file mode 100644
index 00000000000..4b6d2ace712
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_letters_only/info.json
@@ -0,0 +1,142 @@
+{
+ "rgb_matrix": {
+ "split_count": [26, 26],
+ "layout": [
+ {"flags": 4, "matrix": [3, 0], "x": 86, "y": 32},
+ {"flags": 4, "matrix": [2, 0], "x": 86, "y": 43},
+ {"flags": 4, "matrix": [4, 0], "x": 86, "y": 21},
+
+ {"flags": 4, "matrix": [3, 1], "x": 69, "y": 32},
+ {"flags": 4, "matrix": [2, 1], "x": 69, "y": 43},
+ {"flags": 4, "matrix": [4, 1], "x": 69, "y": 21},
+
+ {"flags": 4, "matrix": [3, 2], "x": 52, "y": 32},
+ {"flags": 4, "matrix": [2, 2], "x": 52, "y": 43},
+ {"flags": 4, "matrix": [1, 2], "x": 52, "y": 53},
+ {"flags": 4, "matrix": [4, 2], "x": 52, "y": 21},
+
+ {"flags": 4, "matrix": [3, 3], "x": 34, "y": 32},
+ {"flags": 4, "matrix": [2, 3], "x": 34, "y": 43},
+ {"flags": 4, "matrix": [1, 3], "x": 34, "y": 53},
+ {"flags": 4, "matrix": [4, 3], "x": 34, "y": 21},
+
+ {"flags": 4, "matrix": [3, 4], "x": 17, "y": 32},
+ {"flags": 4, "matrix": [2, 4], "x": 17, "y": 43},
+ {"flags": 4, "matrix": [4, 4], "x": 17, "y": 21},
+
+ {"flags": 4, "matrix": [3, 5], "x": 0, "y": 32},
+ {"flags": 4, "matrix": [2, 5], "x": 0, "y": 43},
+ {"flags": 4, "matrix": [4, 5], "x": 0, "y": 21},
+
+ {"flags": 4, "matrix": [0, 3], "x": 86, "y": 53},
+ {"flags": 4, "matrix": [0, 2], "x": 103, "y": 53},
+ {"flags": 4, "matrix": [0, 1], "x": 103, "y": 64},
+ {"flags": 4, "matrix": [0, 7], "x": 69, "y": 53},
+ {"flags": 4, "matrix": [0, 6], "x": 69, "y": 64},
+ {"flags": 4, "matrix": [0, 5], "x": 86, "y": 64},
+
+
+ {"flags": 4, "matrix": [10, 0], "x": 138, "y": 32},
+ {"flags": 4, "matrix": [9, 0], "x": 138, "y": 43},
+ {"flags": 4, "matrix": [11, 0], "x": 138, "y": 21},
+
+ {"flags": 4, "matrix": [10, 1], "x": 155, "y": 32},
+ {"flags": 4, "matrix": [9, 1], "x": 155, "y": 43},
+ {"flags": 4, "matrix": [11, 1], "x": 155, "y": 21},
+
+ {"flags": 4, "matrix": [10, 2], "x": 172, "y": 32},
+ {"flags": 4, "matrix": [9, 2], "x": 172, "y": 43},
+ {"flags": 4, "matrix": [8, 2], "x": 172, "y": 53},
+ {"flags": 4, "matrix": [11, 2], "x": 172, "y": 21},
+
+ {"flags": 4, "matrix": [10, 3], "x": 190, "y": 32},
+ {"flags": 4, "matrix": [9, 3], "x": 190, "y": 43},
+ {"flags": 4, "matrix": [8, 3], "x": 190, "y": 53},
+ {"flags": 4, "matrix": [11, 3], "x": 190, "y": 21},
+
+ {"flags": 4, "matrix": [10, 4], "x": 207, "y": 32},
+ {"flags": 4, "matrix": [9, 4], "x": 207, "y": 43},
+ {"flags": 4, "matrix": [11, 4], "x": 207, "y": 21},
+
+ {"flags": 4, "matrix": [10, 5], "x": 224, "y": 32},
+ {"flags": 4, "matrix": [9, 5], "x": 224, "y": 43},
+ {"flags": 4, "matrix": [11, 5], "x": 224, "y": 21},
+
+ {"flags": 4, "matrix": [7, 3], "x": 138, "y": 53},
+ {"flags": 4, "matrix": [7, 2], "x": 121, "y": 53},
+ {"flags": 4, "matrix": [7, 1], "x": 121, "y": 64},
+ {"flags": 4, "matrix": [7, 7], "x": 138, "y": 64},
+ {"flags": 4, "matrix": [7, 6], "x": 155, "y": 64},
+ {"flags": 4, "matrix": [7, 5], "x": 155, "y": 53}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_let": {
+ "layout": [
+ { "matrix": [4, 5], "x": 0, "y": 1 },
+ { "matrix": [4, 4], "x": 1, "y": 1 },
+ { "matrix": [4, 3], "x": 2, "y": 1 },
+ { "matrix": [4, 2], "x": 3, "y": 1 },
+ { "matrix": [4, 1], "x": 4, "y": 1 },
+ { "matrix": [4, 0], "x": 5, "y": 1 },
+
+ { "matrix": [11, 0], "x": 10.5, "y": 1 },
+ { "matrix": [11, 1], "x": 11.5, "y": 1 },
+ { "matrix": [11, 2], "x": 12.5, "y": 1 },
+ { "matrix": [11, 3], "x": 13.5, "y": 1 },
+ { "matrix": [11, 4], "x": 14.5, "y": 1 },
+ { "matrix": [11, 5], "x": 15.5, "y": 1 },
+
+ { "matrix": [3, 5], "x": 0, "y": 2 },
+ { "matrix": [3, 4], "x": 1, "y": 2 },
+ { "matrix": [3, 3], "x": 2, "y": 2 },
+ { "matrix": [3, 2], "x": 3, "y": 2 },
+ { "matrix": [3, 1], "x": 4, "y": 2 },
+ { "matrix": [3, 0], "x": 5, "y": 2 },
+
+ { "matrix": [10, 0], "x": 10.5, "y": 2 },
+ { "matrix": [10, 1], "x": 11.5, "y": 2 },
+ { "matrix": [10, 2], "x": 12.5, "y": 2 },
+ { "matrix": [10, 3], "x": 13.5, "y": 2 },
+ { "matrix": [10, 4], "x": 14.5, "y": 2 },
+ { "matrix": [10, 5], "x": 15.5, "y": 2 },
+
+ { "matrix": [2, 5], "x": 0, "y": 3 },
+ { "matrix": [2, 4], "x": 1, "y": 3 },
+ { "matrix": [2, 3], "x": 2, "y": 3 },
+ { "matrix": [2, 2], "x": 3, "y": 3 },
+ { "matrix": [2, 1], "x": 4, "y": 3 },
+ { "matrix": [2, 0], "x": 5, "y": 3 },
+
+ { "matrix": [9, 0], "x": 10.5, "y": 3 },
+ { "matrix": [9, 1], "x": 11.5, "y": 3 },
+ { "matrix": [9, 2], "x": 12.5, "y": 3 },
+ { "matrix": [9, 3], "x": 13.5, "y": 3 },
+ { "matrix": [9, 4], "x": 14.5, "y": 3 },
+ { "matrix": [9, 5], "x": 15.5, "y": 3 },
+
+ { "matrix": [1, 3], "x": 2, "y": 3 },
+ { "matrix": [1, 2], "x": 3, "y": 3 },
+
+ { "matrix": [0, 3], "x": 4.5, "y": 3.5 },
+ { "matrix": [0, 2], "x": 5.5, "y": 3.5 },
+ { "matrix": [0, 1], "x": 6.5, "y": 4 },
+
+ { "matrix": [7, 1], "x": 10, "y": 4 },
+ { "matrix": [7, 2], "x": 11, "y": 3.5 },
+ { "matrix": [7, 3], "x": 12, "y": 3.5 },
+
+ { "matrix": [8, 2], "x": 13.5, "y": 3 },
+ { "matrix": [8, 3], "x": 14.5, "y": 3 },
+
+ { "matrix": [0, 7], "x": 6.5, "y": 5 },
+ { "matrix": [0, 6], "x": 7.5, "y": 5 },
+ { "matrix": [0, 5], "x": 7.5, "y": 4 },
+
+ { "matrix": [7, 5], "x": 9, "y": 4 },
+ { "matrix": [7, 6], "x": 9, "y": 5 },
+ { "matrix": [7, 7], "x": 10, "y": 5 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/cyboard/imprint/imprint_letters_only/keymaps/vial/keymap.c b/keyboards/cyboard/imprint/imprint_letters_only/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..1105596bd43
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_letters_only/keymaps/vial/keymap.c
@@ -0,0 +1,89 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+#include
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_let(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_LGUI, KC_LALT, KC_ENT, KC_DEL, KC_ESC, KC_GRAVE, KC_BSPC, KC_SPC, KC_LBRC, KC_RBRC,
+ KC_LGUI, KC_HOME, KC_END, KC_CAPS, KC_APP, MO(1)
+ ),
+
+ [1] = LAYOUT_let(
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_let(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_let(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_let(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_let(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_let(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_let(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_let(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_let(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/imprint/imprint_letters_only/keymaps/vial/rules.mk b/keyboards/cyboard/imprint/imprint_letters_only/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_letters_only/keymaps/vial/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/imprint/imprint_letters_only/keymaps/vial/vial.json b/keyboards/cyboard/imprint/imprint_letters_only/keymaps/vial/vial.json
new file mode 100644
index 00000000000..e1b95a85340
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_letters_only/keymaps/vial/vial.json
@@ -0,0 +1,173 @@
+{
+ "name": "Imprint",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "customKeycodes": [
+ {"name": "L_DPI_INC",
+ "title": "Increase left trackball sensitivity",
+ "shortName": "LEFT_POINTER_DEFAULT_DPI_FORWARD"
+ },
+ {"name": "L_DPI_DEC",
+ "title": "Decrease left trackball sensitivity",
+ "shortName": "LEFT_POINTER_DEFAULT_DPI_REVERSE"
+ },
+ {"name": "L_SNP_INC",
+ "title": "Increase left trackball sensitivity when in sniping mode",
+ "shortName": "LEFT_POINTER_SNIPING_DPI_FORWARD"
+ },
+ {"name": "L_SNP_DEC",
+ "title": "Decrease left trackball sensitivity when in sniping mode",
+ "shortName": "LEFT_POINTER_SNIPING_DPI_REVERSE"
+ },
+ {"name": "L_Snipe",
+ "title": "Reduce left trackball sensitivity while held",
+ "shortName": "LEFT_SNIPING_MODE"
+ },
+ {"name": "L_SNP_TOG",
+ "title": "Toggle left trackball between normal and sniping mode",
+ "shortName": "LEFT_SNIPING_MODE_TOGGLE"
+ },
+ {"name": "L_DragScroll",
+ "title": "Make left trackball behave as a scroll wheel while held",
+ "shortName": "LEFT_DRAGSCROLL_MODE"
+ },
+ {"name": "L_DragScroll_TOG",
+ "title": "Toggle left trackball between normal and drag scroll mode",
+ "shortName": "LEFT_DRAGSCROLL_MODE_TOGGLE"
+ },
+ {"name": "R_DPI_INC",
+ "title": "Increase trackball sensitivity on right hand",
+ "shortName": "RIGHT_POINTER_DEFAULT_DPI_FORWARD"
+ },
+ {"name": "R_DPI_DEC",
+ "title": "Decrease trackball sensitivity on right hand",
+ "shortName": "RIGHT_POINTER_DEFAULT_DPI_REVERSE"
+ },
+ {"name": "R_SNP_INC",
+ "title": "Increase right trackball sensitivity when in sniping mode",
+ "shortName": "RIGHT_POINTER_SNIPING_DPI_FORWARD"
+ },
+ {"name": "R_SNP_DEC",
+ "title": "Decrease right trackball sensitivity when in sniping mode",
+ "shortName": "RIGHT_POINTER_SNIPING_DPI_REVERSE"
+ },
+ {"name": "R_Snipe",
+ "title": "Reduce right trackball sensitivity while held",
+ "shortName": "RIGHT_SNIPING_MODE"
+ },
+ {"name": "R_SNP_TOG",
+ "title": "Toggle right trackball between normal and sniping mode",
+ "shortName": "RIGHT_SNIPING_MODE_TOGGLE"
+ },
+ {"name": "R_DragScroll",
+ "title": "Make right trackball behave as a scroll wheel while held",
+ "shortName": "RIGHT_DRAGSCROLL_MODE"
+ },
+ {"name": "R_DragScroll_TOG",
+ "title": "Toggle right trackball between normal and drag scroll mode",
+ "shortName": "RIGHT_DRAGSCROLL_MODE_TOGGLE"
+ }
+ ],
+ "matrix": {
+ "rows": 14,
+ "cols": 8
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ "4,0",
+ {
+ "x": 5.5
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5"
+ ],
+ [
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ "3,0",
+ {
+ "x": 5.5
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5"
+ ],
+ [
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ "2,0",
+ {
+ "x": 5.5
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "x": 2
+ },
+ "1,3",
+ "1,2",
+ {
+ "x": 9.5
+ },
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 5.5
+ },
+ "0,3",
+ "0,2",
+ "0,1",
+ {
+ "x": 0.5
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "x": 5.5
+ },
+ "0,7",
+ "0,6",
+ "0,5",
+ {
+ "x": 0.5
+ },
+ "7,5",
+ "7,6",
+ "7,7"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/imprint/imprint_letters_only/rules.mk b/keyboards/cyboard/imprint/imprint_letters_only/rules.mk
new file mode 100644
index 00000000000..e02abfc9b0e
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_letters_only/rules.mk
@@ -0,0 +1 @@
+
diff --git a/keyboards/cyboard/imprint/imprint_letters_only_7_thumb_keys/info.json b/keyboards/cyboard/imprint/imprint_letters_only_7_thumb_keys/info.json
new file mode 100644
index 00000000000..05e55cc409e
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_letters_only_7_thumb_keys/info.json
@@ -0,0 +1,146 @@
+{
+ "rgb_matrix": {
+ "split_count": [27, 27],
+ "layout": [
+ {"flags": 4, "matrix": [3, 0], "x": 86, "y": 32},
+ {"flags": 4, "matrix": [2, 0], "x": 86, "y": 43},
+ {"flags": 4, "matrix": [4, 0], "x": 86, "y": 21},
+
+ {"flags": 4, "matrix": [3, 1], "x": 69, "y": 32},
+ {"flags": 4, "matrix": [2, 1], "x": 69, "y": 43},
+ {"flags": 4, "matrix": [4, 1], "x": 69, "y": 21},
+
+ {"flags": 4, "matrix": [3, 2], "x": 52, "y": 32},
+ {"flags": 4, "matrix": [2, 2], "x": 52, "y": 43},
+ {"flags": 4, "matrix": [1, 2], "x": 52, "y": 53},
+ {"flags": 4, "matrix": [4, 2], "x": 52, "y": 21},
+
+ {"flags": 4, "matrix": [3, 3], "x": 34, "y": 32},
+ {"flags": 4, "matrix": [2, 3], "x": 34, "y": 43},
+ {"flags": 4, "matrix": [1, 3], "x": 34, "y": 53},
+ {"flags": 4, "matrix": [4, 3], "x": 34, "y": 21},
+
+ {"flags": 4, "matrix": [3, 4], "x": 17, "y": 32},
+ {"flags": 4, "matrix": [2, 4], "x": 17, "y": 43},
+ {"flags": 4, "matrix": [4, 4], "x": 17, "y": 21},
+
+ {"flags": 4, "matrix": [3, 5], "x": 0, "y": 32},
+ {"flags": 4, "matrix": [2, 5], "x": 0, "y": 43},
+ {"flags": 4, "matrix": [4, 5], "x": 0, "y": 21},
+
+ {"flags": 4, "matrix": [0, 3], "x": 86, "y": 53},
+ {"flags": 4, "matrix": [0, 2], "x": 103, "y": 53},
+ {"flags": 4, "matrix": [0, 1], "x": 103, "y": 64},
+ {"flags": 4, "matrix": [0, 7], "x": 69, "y": 53},
+ {"flags": 4, "matrix": [0, 6], "x": 69, "y": 64},
+ {"flags": 4, "matrix": [0, 5], "x": 86, "y": 64},
+ {"flags": 4, "matrix": [0, 4], "x": 86, "y": 64},
+
+
+ {"flags": 4, "matrix": [10, 0], "x": 138, "y": 32},
+ {"flags": 4, "matrix": [9, 0], "x": 138, "y": 43},
+ {"flags": 4, "matrix": [11, 0], "x": 138, "y": 21},
+
+ {"flags": 4, "matrix": [10, 1], "x": 155, "y": 32},
+ {"flags": 4, "matrix": [9, 1], "x": 155, "y": 43},
+ {"flags": 4, "matrix": [11, 1], "x": 155, "y": 21},
+
+ {"flags": 4, "matrix": [10, 2], "x": 172, "y": 32},
+ {"flags": 4, "matrix": [9, 2], "x": 172, "y": 43},
+ {"flags": 4, "matrix": [8, 2], "x": 172, "y": 53},
+ {"flags": 4, "matrix": [11, 2], "x": 172, "y": 21},
+
+ {"flags": 4, "matrix": [10, 3], "x": 190, "y": 32},
+ {"flags": 4, "matrix": [9, 3], "x": 190, "y": 43},
+ {"flags": 4, "matrix": [8, 3], "x": 190, "y": 53},
+ {"flags": 4, "matrix": [11, 3], "x": 190, "y": 21},
+
+ {"flags": 4, "matrix": [10, 4], "x": 207, "y": 32},
+ {"flags": 4, "matrix": [9, 4], "x": 207, "y": 43},
+ {"flags": 4, "matrix": [11, 4], "x": 207, "y": 21},
+
+ {"flags": 4, "matrix": [10, 5], "x": 224, "y": 32},
+ {"flags": 4, "matrix": [9, 5], "x": 224, "y": 43},
+ {"flags": 4, "matrix": [11, 5], "x": 224, "y": 21},
+
+ {"flags": 4, "matrix": [7, 3], "x": 138, "y": 53},
+ {"flags": 4, "matrix": [7, 2], "x": 121, "y": 53},
+ {"flags": 4, "matrix": [7, 1], "x": 121, "y": 64},
+ {"flags": 4, "matrix": [7, 7], "x": 138, "y": 64},
+ {"flags": 4, "matrix": [7, 6], "x": 155, "y": 64},
+ {"flags": 4, "matrix": [7, 5], "x": 155, "y": 53},
+ {"flags": 4, "matrix": [7, 4], "x": 155, "y": 53}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_let_7_thumb_keys": {
+ "layout": [
+ { "matrix": [4, 5], "x": 0, "y": 1 },
+ { "matrix": [4, 4], "x": 1, "y": 1 },
+ { "matrix": [4, 3], "x": 2, "y": 1 },
+ { "matrix": [4, 2], "x": 3, "y": 1 },
+ { "matrix": [4, 1], "x": 4, "y": 1 },
+ { "matrix": [4, 0], "x": 5, "y": 1 },
+
+ { "matrix": [11, 0], "x": 10.5, "y": 1 },
+ { "matrix": [11, 1], "x": 11.5, "y": 1 },
+ { "matrix": [11, 2], "x": 12.5, "y": 1 },
+ { "matrix": [11, 3], "x": 13.5, "y": 1 },
+ { "matrix": [11, 4], "x": 14.5, "y": 1 },
+ { "matrix": [11, 5], "x": 15.5, "y": 1 },
+
+ { "matrix": [3, 5], "x": 0, "y": 2 },
+ { "matrix": [3, 4], "x": 1, "y": 2 },
+ { "matrix": [3, 3], "x": 2, "y": 2 },
+ { "matrix": [3, 2], "x": 3, "y": 2 },
+ { "matrix": [3, 1], "x": 4, "y": 2 },
+ { "matrix": [3, 0], "x": 5, "y": 2 },
+
+ { "matrix": [10, 0], "x": 10.5, "y": 2 },
+ { "matrix": [10, 1], "x": 11.5, "y": 2 },
+ { "matrix": [10, 2], "x": 12.5, "y": 2 },
+ { "matrix": [10, 3], "x": 13.5, "y": 2 },
+ { "matrix": [10, 4], "x": 14.5, "y": 2 },
+ { "matrix": [10, 5], "x": 15.5, "y": 2 },
+
+ { "matrix": [2, 5], "x": 0, "y": 3 },
+ { "matrix": [2, 4], "x": 1, "y": 3 },
+ { "matrix": [2, 3], "x": 2, "y": 3 },
+ { "matrix": [2, 2], "x": 3, "y": 3 },
+ { "matrix": [2, 1], "x": 4, "y": 3 },
+ { "matrix": [2, 0], "x": 5, "y": 3 },
+
+ { "matrix": [9, 0], "x": 10.5, "y": 3 },
+ { "matrix": [9, 1], "x": 11.5, "y": 3 },
+ { "matrix": [9, 2], "x": 12.5, "y": 3 },
+ { "matrix": [9, 3], "x": 13.5, "y": 3 },
+ { "matrix": [9, 4], "x": 14.5, "y": 3 },
+ { "matrix": [9, 5], "x": 15.5, "y": 3 },
+
+ { "matrix": [1, 3], "x": 2, "y": 3 },
+ { "matrix": [1, 2], "x": 3, "y": 3 },
+
+ { "matrix": [0, 3], "x": 4.5, "y": 3.5 },
+ { "matrix": [0, 2], "x": 5.5, "y": 3.5 },
+ { "matrix": [0, 1], "x": 6.5, "y": 4 },
+
+ { "matrix": [7, 1], "x": 10, "y": 4 },
+ { "matrix": [7, 2], "x": 11, "y": 3.5 },
+ { "matrix": [7, 3], "x": 12, "y": 3.5 },
+
+ { "matrix": [8, 2], "x": 13.5, "y": 3 },
+ { "matrix": [8, 3], "x": 14.5, "y": 3 },
+
+ { "matrix": [0, 7], "x": 6.5, "y": 5 },
+ { "matrix": [0, 6], "x": 7.5, "y": 5 },
+ { "matrix": [0, 5], "x": 7.5, "y": 4 },
+ { "matrix": [0, 4], "x": 7.5, "y": 4 },
+
+ { "matrix": [7, 4], "x": 9, "y": 4 },
+ { "matrix": [7, 5], "x": 9, "y": 4 },
+ { "matrix": [7, 6], "x": 9, "y": 5 },
+ { "matrix": [7, 7], "x": 10, "y": 5 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/cyboard/imprint/imprint_letters_only_7_thumb_keys/keymaps/vial/keymap.c b/keyboards/cyboard/imprint/imprint_letters_only_7_thumb_keys/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..feb55991e16
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_letters_only_7_thumb_keys/keymaps/vial/keymap.c
@@ -0,0 +1,89 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+#include
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_let_7_thumb_keys(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_LGUI, KC_LALT, KC_ENT, KC_DEL, KC_ESC, KC_GRAVE, KC_BSPC, KC_SPC, KC_LBRC, KC_RBRC,
+ KC_LGUI, KC_LGUI, KC_HOME, KC_END, KC_CAPS, KC_APP, MO(1), MO(1)
+ ),
+
+ [1] = LAYOUT_let_7_thumb_keys(
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_let_7_thumb_keys(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_let_7_thumb_keys(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_let_7_thumb_keys(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_let_7_thumb_keys(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_let_7_thumb_keys(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_let_7_thumb_keys(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_let_7_thumb_keys(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_let_7_thumb_keys(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/imprint/imprint_letters_only_7_thumb_keys/keymaps/vial/rules.mk b/keyboards/cyboard/imprint/imprint_letters_only_7_thumb_keys/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_letters_only_7_thumb_keys/keymaps/vial/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/imprint/imprint_letters_only_7_thumb_keys/keymaps/vial/vial.json b/keyboards/cyboard/imprint/imprint_letters_only_7_thumb_keys/keymaps/vial/vial.json
new file mode 100644
index 00000000000..95890871ae1
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_letters_only_7_thumb_keys/keymaps/vial/vial.json
@@ -0,0 +1,175 @@
+{
+ "name": "Imprint",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "customKeycodes": [
+ {"name": "L_DPI_INC",
+ "title": "Increase left trackball sensitivity",
+ "shortName": "LEFT_POINTER_DEFAULT_DPI_FORWARD"
+ },
+ {"name": "L_DPI_DEC",
+ "title": "Decrease left trackball sensitivity",
+ "shortName": "LEFT_POINTER_DEFAULT_DPI_REVERSE"
+ },
+ {"name": "L_SNP_INC",
+ "title": "Increase left trackball sensitivity when in sniping mode",
+ "shortName": "LEFT_POINTER_SNIPING_DPI_FORWARD"
+ },
+ {"name": "L_SNP_DEC",
+ "title": "Decrease left trackball sensitivity when in sniping mode",
+ "shortName": "LEFT_POINTER_SNIPING_DPI_REVERSE"
+ },
+ {"name": "L_Snipe",
+ "title": "Reduce left trackball sensitivity while held",
+ "shortName": "LEFT_SNIPING_MODE"
+ },
+ {"name": "L_SNP_TOG",
+ "title": "Toggle left trackball between normal and sniping mode",
+ "shortName": "LEFT_SNIPING_MODE_TOGGLE"
+ },
+ {"name": "L_DragScroll",
+ "title": "Make left trackball behave as a scroll wheel while held",
+ "shortName": "LEFT_DRAGSCROLL_MODE"
+ },
+ {"name": "L_DragScroll_TOG",
+ "title": "Toggle left trackball between normal and drag scroll mode",
+ "shortName": "LEFT_DRAGSCROLL_MODE_TOGGLE"
+ },
+ {"name": "R_DPI_INC",
+ "title": "Increase trackball sensitivity on right hand",
+ "shortName": "RIGHT_POINTER_DEFAULT_DPI_FORWARD"
+ },
+ {"name": "R_DPI_DEC",
+ "title": "Decrease trackball sensitivity on right hand",
+ "shortName": "RIGHT_POINTER_DEFAULT_DPI_REVERSE"
+ },
+ {"name": "R_SNP_INC",
+ "title": "Increase right trackball sensitivity when in sniping mode",
+ "shortName": "RIGHT_POINTER_SNIPING_DPI_FORWARD"
+ },
+ {"name": "R_SNP_DEC",
+ "title": "Decrease right trackball sensitivity when in sniping mode",
+ "shortName": "RIGHT_POINTER_SNIPING_DPI_REVERSE"
+ },
+ {"name": "R_Snipe",
+ "title": "Reduce right trackball sensitivity while held",
+ "shortName": "RIGHT_SNIPING_MODE"
+ },
+ {"name": "R_SNP_TOG",
+ "title": "Toggle right trackball between normal and sniping mode",
+ "shortName": "RIGHT_SNIPING_MODE_TOGGLE"
+ },
+ {"name": "R_DragScroll",
+ "title": "Make right trackball behave as a scroll wheel while held",
+ "shortName": "RIGHT_DRAGSCROLL_MODE"
+ },
+ {"name": "R_DragScroll_TOG",
+ "title": "Toggle right trackball between normal and drag scroll mode",
+ "shortName": "RIGHT_DRAGSCROLL_MODE_TOGGLE"
+ }
+ ],
+ "matrix": {
+ "rows": 14,
+ "cols": 8
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ "4,0",
+ {
+ "x": 5.5
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5"
+ ],
+ [
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ "3,0",
+ {
+ "x": 5.5
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5"
+ ],
+ [
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ "2,0",
+ {
+ "x": 5.5
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "x": 2
+ },
+ "1,3",
+ "1,2",
+ {
+ "x": 9.5
+ },
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 5.5
+ },
+ "0,3",
+ "0,2",
+ "0,1",
+ {
+ "x": 0.5
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "x": 4.5
+ },
+ "0,7",
+ "0,6",
+ "0,5",
+ "0,4",
+ {
+ "x": 0.5
+ },
+ "7,4",
+ "7,5",
+ "7,6",
+ "7,7"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/imprint/imprint_letters_only_7_thumb_keys/rules.mk b/keyboards/cyboard/imprint/imprint_letters_only_7_thumb_keys/rules.mk
new file mode 100644
index 00000000000..e02abfc9b0e
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_letters_only_7_thumb_keys/rules.mk
@@ -0,0 +1 @@
+
diff --git a/keyboards/cyboard/imprint/imprint_number_row/info.json b/keyboards/cyboard/imprint/imprint_number_row/info.json
new file mode 100644
index 00000000000..ecec0857848
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_number_row/info.json
@@ -0,0 +1,167 @@
+{
+ "rgb_matrix": {
+ "split_count": [32, 32],
+ "layout": [
+ {"flags": 4, "matrix": [3, 0], "x": 86, "y": 32},
+ {"flags": 4, "matrix": [2, 0], "x": 86, "y": 43},
+ {"flags": 4, "matrix": [5, 0], "x": 86, "y": 11},
+ {"flags": 4, "matrix": [4, 0], "x": 86, "y": 21},
+
+ {"flags": 4, "matrix": [3, 1], "x": 69, "y": 32},
+ {"flags": 4, "matrix": [2, 1], "x": 69, "y": 43},
+ {"flags": 4, "matrix": [5, 1], "x": 69, "y": 11},
+ {"flags": 4, "matrix": [4, 1], "x": 69, "y": 21},
+
+ {"flags": 4, "matrix": [3, 2], "x": 52, "y": 32},
+ {"flags": 4, "matrix": [2, 2], "x": 52, "y": 43},
+ {"flags": 4, "matrix": [1, 2], "x": 52, "y": 53},
+ {"flags": 4, "matrix": [5, 2], "x": 52, "y": 11},
+ {"flags": 4, "matrix": [4, 2], "x": 52, "y": 21},
+
+ {"flags": 4, "matrix": [3, 3], "x": 34, "y": 32},
+ {"flags": 4, "matrix": [2, 3], "x": 34, "y": 43},
+ {"flags": 4, "matrix": [1, 3], "x": 34, "y": 53},
+ {"flags": 4, "matrix": [5, 3], "x": 34, "y": 11},
+ {"flags": 4, "matrix": [4, 3], "x": 34, "y": 21},
+
+ {"flags": 4, "matrix": [3, 4], "x": 17, "y": 32},
+ {"flags": 4, "matrix": [2, 4], "x": 17, "y": 43},
+ {"flags": 4, "matrix": [5, 4], "x": 17, "y": 11},
+ {"flags": 4, "matrix": [4, 4], "x": 17, "y": 21},
+
+ {"flags": 4, "matrix": [3, 5], "x": 0, "y": 32},
+ {"flags": 4, "matrix": [2, 5], "x": 0, "y": 43},
+ {"flags": 4, "matrix": [5, 5], "x": 0, "y": 11},
+ {"flags": 4, "matrix": [4, 5], "x": 0, "y": 21},
+
+ {"flags": 4, "matrix": [0, 3], "x": 86, "y": 53},
+ {"flags": 4, "matrix": [0, 2], "x": 103, "y": 53},
+ {"flags": 4, "matrix": [0, 1], "x": 103, "y": 64},
+ {"flags": 4, "matrix": [0, 7], "x": 69, "y": 53},
+ {"flags": 4, "matrix": [0, 6], "x": 69, "y": 64},
+ {"flags": 4, "matrix": [0, 5], "x": 86, "y": 64},
+
+
+ {"flags": 4, "matrix": [10, 0], "x": 138, "y": 32},
+ {"flags": 4, "matrix": [9, 0], "x": 138, "y": 43},
+ {"flags": 4, "matrix": [12, 0], "x": 138, "y": 11},
+ {"flags": 4, "matrix": [11, 0], "x": 138, "y": 21},
+
+ {"flags": 4, "matrix": [10, 1], "x": 155, "y": 32},
+ {"flags": 4, "matrix": [9, 1], "x": 155, "y": 43},
+ {"flags": 4, "matrix": [12, 1], "x": 155, "y": 11},
+ {"flags": 4, "matrix": [11, 1], "x": 155, "y": 21},
+
+ {"flags": 4, "matrix": [10, 2], "x": 172, "y": 32},
+ {"flags": 4, "matrix": [9, 2], "x": 172, "y": 43},
+ {"flags": 4, "matrix": [8, 2], "x": 172, "y": 53},
+ {"flags": 4, "matrix": [12, 2], "x": 172, "y": 11},
+ {"flags": 4, "matrix": [11, 2], "x": 172, "y": 21},
+
+ {"flags": 4, "matrix": [10, 3], "x": 190, "y": 32},
+ {"flags": 4, "matrix": [9, 3], "x": 190, "y": 43},
+ {"flags": 4, "matrix": [8, 3], "x": 190, "y": 53},
+ {"flags": 4, "matrix": [12, 3], "x": 190, "y": 11},
+ {"flags": 4, "matrix": [11, 3], "x": 190, "y": 21},
+
+ {"flags": 4, "matrix": [10, 4], "x": 207, "y": 32},
+ {"flags": 4, "matrix": [9, 4], "x": 207, "y": 43},
+ {"flags": 4, "matrix": [12, 4], "x": 207, "y": 11},
+ {"flags": 4, "matrix": [11, 4], "x": 207, "y": 21},
+
+ {"flags": 4, "matrix": [10, 5], "x": 224, "y": 32},
+ {"flags": 4, "matrix": [9, 5], "x": 224, "y": 43},
+ {"flags": 4, "matrix": [12, 5], "x": 224, "y": 11},
+ {"flags": 4, "matrix": [11, 5], "x": 224, "y": 21},
+
+ {"flags": 4, "matrix": [7, 3], "x": 138, "y": 53},
+ {"flags": 4, "matrix": [7, 2], "x": 121, "y": 53},
+ {"flags": 4, "matrix": [7, 1], "x": 121, "y": 64},
+ {"flags": 4, "matrix": [7, 7], "x": 138, "y": 64},
+ {"flags": 4, "matrix": [7, 6], "x": 155, "y": 64},
+ {"flags": 4, "matrix": [7, 5], "x": 155, "y": 53}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_num": {
+ "layout": [{ "matrix": [5, 5], "x": 0, "y": 0 },
+ { "matrix": [5, 4], "x": 1, "y": 0 },
+ { "matrix": [5, 3], "x": 2, "y": 0 },
+ { "matrix": [5, 2], "x": 3, "y": 0 },
+ { "matrix": [5, 1], "x": 4, "y": 0 },
+ { "matrix": [5, 0], "x": 5, "y": 0 },
+
+ { "matrix": [12, 0], "x": 11.5, "y": 0 },
+ { "matrix": [12, 1], "x": 12.5, "y": 0 },
+ { "matrix": [12, 2], "x": 13.5, "y": 0 },
+ { "matrix": [12, 3], "x": 14.5, "y": 0 },
+ { "matrix": [12, 4], "x": 15.5, "y": 0 },
+ { "matrix": [12, 5], "x": 16.5, "y": 0 },
+
+ { "matrix": [4, 5], "x": 0, "y": 1 },
+ { "matrix": [4, 4], "x": 1, "y": 1 },
+ { "matrix": [4, 3], "x": 2, "y": 1 },
+ { "matrix": [4, 2], "x": 3, "y": 1 },
+ { "matrix": [4, 1], "x": 4, "y": 1 },
+ { "matrix": [4, 0], "x": 5, "y": 1 },
+
+ { "matrix": [11, 0], "x": 10.5, "y": 1 },
+ { "matrix": [11, 1], "x": 11.5, "y": 1 },
+ { "matrix": [11, 2], "x": 12.5, "y": 1 },
+ { "matrix": [11, 3], "x": 13.5, "y": 1 },
+ { "matrix": [11, 4], "x": 14.5, "y": 1 },
+ { "matrix": [11, 5], "x": 15.5, "y": 1 },
+
+ { "matrix": [3, 5], "x": 0, "y": 2 },
+ { "matrix": [3, 4], "x": 1, "y": 2 },
+ { "matrix": [3, 3], "x": 2, "y": 2 },
+ { "matrix": [3, 2], "x": 3, "y": 2 },
+ { "matrix": [3, 1], "x": 4, "y": 2 },
+ { "matrix": [3, 0], "x": 5, "y": 2 },
+
+ { "matrix": [10, 0], "x": 10.5, "y": 2 },
+ { "matrix": [10, 1], "x": 11.5, "y": 2 },
+ { "matrix": [10, 2], "x": 12.5, "y": 2 },
+ { "matrix": [10, 3], "x": 13.5, "y": 2 },
+ { "matrix": [10, 4], "x": 14.5, "y": 2 },
+ { "matrix": [10, 5], "x": 15.5, "y": 2 },
+
+ { "matrix": [2, 5], "x": 0, "y": 3 },
+ { "matrix": [2, 4], "x": 1, "y": 3 },
+ { "matrix": [2, 3], "x": 2, "y": 3 },
+ { "matrix": [2, 2], "x": 3, "y": 3 },
+ { "matrix": [2, 1], "x": 4, "y": 3 },
+ { "matrix": [2, 0], "x": 5, "y": 3 },
+
+ { "matrix": [9, 0], "x": 10.5, "y": 3 },
+ { "matrix": [9, 1], "x": 11.5, "y": 3 },
+ { "matrix": [9, 2], "x": 12.5, "y": 3 },
+ { "matrix": [9, 3], "x": 13.5, "y": 3 },
+ { "matrix": [9, 4], "x": 14.5, "y": 3 },
+ { "matrix": [9, 5], "x": 15.5, "y": 3 },
+
+ { "matrix": [1, 3], "x": 2, "y": 3 },
+ { "matrix": [1, 2], "x": 3, "y": 3 },
+
+ { "matrix": [0, 3], "x": 4.5, "y": 3.5 },
+ { "matrix": [0, 2], "x": 5.5, "y": 3.5 },
+ { "matrix": [0, 1], "x": 6.5, "y": 4 },
+
+ { "matrix": [7, 1], "x": 10, "y": 4 },
+ { "matrix": [7, 2], "x": 11, "y": 3.5 },
+ { "matrix": [7, 3], "x": 12, "y": 3.5 },
+
+ { "matrix": [8, 2], "x": 13.5, "y": 3 },
+ { "matrix": [8, 3], "x": 14.5, "y": 3 },
+
+ { "matrix": [0, 7], "x": 6.5, "y": 5 },
+ { "matrix": [0, 6], "x": 7.5, "y": 5 },
+ { "matrix": [0, 5], "x": 7.5, "y": 4 },
+
+ { "matrix": [7, 5], "x": 9, "y": 4 },
+ { "matrix": [7, 6], "x": 9, "y": 5 },
+ { "matrix": [7, 7], "x": 10, "y": 5 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/cyboard/imprint/imprint_number_row/keymaps/vial/keymap.c b/keyboards/cyboard/imprint/imprint_number_row/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..1c530a57f35
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_number_row/keymaps/vial/keymap.c
@@ -0,0 +1,99 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+#include
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_num(
+ KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_LGUI, KC_LALT, KC_ENT, KC_DEL, KC_ESC, KC_GRAVE, KC_BSPC, KC_SPC, KC_LBRC, KC_RBRC,
+ KC_LGUI, KC_HOME, KC_END, KC_CAPS, KC_APP, MO(1)
+ ),
+
+ [1] = LAYOUT_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/imprint/imprint_number_row/keymaps/vial/rules.mk b/keyboards/cyboard/imprint/imprint_number_row/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_number_row/keymaps/vial/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/imprint/imprint_number_row/keymaps/vial/vial.json b/keyboards/cyboard/imprint/imprint_number_row/keymaps/vial/vial.json
new file mode 100644
index 00000000000..6647ba75227
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_number_row/keymaps/vial/vial.json
@@ -0,0 +1,190 @@
+{
+ "name": "Imprint",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "customKeycodes": [
+ {"name": "L_DPI_INC",
+ "title": "Increase left trackball sensitivity",
+ "shortName": "LEFT_POINTER_DEFAULT_DPI_FORWARD"
+ },
+ {"name": "L_DPI_DEC",
+ "title": "Decrease left trackball sensitivity",
+ "shortName": "LEFT_POINTER_DEFAULT_DPI_REVERSE"
+ },
+ {"name": "L_SNP_INC",
+ "title": "Increase left trackball sensitivity when in sniping mode",
+ "shortName": "LEFT_POINTER_SNIPING_DPI_FORWARD"
+ },
+ {"name": "L_SNP_DEC",
+ "title": "Decrease left trackball sensitivity when in sniping mode",
+ "shortName": "LEFT_POINTER_SNIPING_DPI_REVERSE"
+ },
+ {"name": "L_Snipe",
+ "title": "Reduce left trackball sensitivity while held",
+ "shortName": "LEFT_SNIPING_MODE"
+ },
+ {"name": "L_SNP_TOG",
+ "title": "Toggle left trackball between normal and sniping mode",
+ "shortName": "LEFT_SNIPING_MODE_TOGGLE"
+ },
+ {"name": "L_DragScroll",
+ "title": "Make left trackball behave as a scroll wheel while held",
+ "shortName": "LEFT_DRAGSCROLL_MODE"
+ },
+ {"name": "L_DragScroll_TOG",
+ "title": "Toggle left trackball between normal and drag scroll mode",
+ "shortName": "LEFT_DRAGSCROLL_MODE_TOGGLE"
+ },
+ {"name": "R_DPI_INC",
+ "title": "Increase trackball sensitivity on right hand",
+ "shortName": "RIGHT_POINTER_DEFAULT_DPI_FORWARD"
+ },
+ {"name": "R_DPI_DEC",
+ "title": "Decrease trackball sensitivity on right hand",
+ "shortName": "RIGHT_POINTER_DEFAULT_DPI_REVERSE"
+ },
+ {"name": "R_SNP_INC",
+ "title": "Increase right trackball sensitivity when in sniping mode",
+ "shortName": "RIGHT_POINTER_SNIPING_DPI_FORWARD"
+ },
+ {"name": "R_SNP_DEC",
+ "title": "Decrease right trackball sensitivity when in sniping mode",
+ "shortName": "RIGHT_POINTER_SNIPING_DPI_REVERSE"
+ },
+ {"name": "R_Snipe",
+ "title": "Reduce right trackball sensitivity while held",
+ "shortName": "RIGHT_SNIPING_MODE"
+ },
+ {"name": "R_SNP_TOG",
+ "title": "Toggle right trackball between normal and sniping mode",
+ "shortName": "RIGHT_SNIPING_MODE_TOGGLE"
+ },
+ {"name": "R_DragScroll",
+ "title": "Make right trackball behave as a scroll wheel while held",
+ "shortName": "RIGHT_DRAGSCROLL_MODE"
+ },
+ {"name": "R_DragScroll_TOG",
+ "title": "Toggle right trackball between normal and drag scroll mode",
+ "shortName": "RIGHT_DRAGSCROLL_MODE_TOGGLE"
+ }
+ ],
+ "matrix": {
+ "rows": 14,
+ "cols": 8
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "5,5",
+ "5,4",
+ "5,3",
+ "5,2",
+ "5,1",
+ "5,0",
+ {
+ "x": 5.5
+ },
+ "12,0",
+ "12,1",
+ "12,2",
+ "12,3",
+ "12,4",
+ "12,5"
+ ],
+ [
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ "4,0",
+ {
+ "x": 5.5
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5"
+ ],
+ [
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ "3,0",
+ {
+ "x": 5.5
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5"
+ ],
+ [
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ "2,0",
+ {
+ "x": 5.5
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "x": 2
+ },
+ "1,3",
+ "1,2",
+ {
+ "x": 9.5
+ },
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 5.5
+ },
+ "0,3",
+ "0,2",
+ "0,1",
+ {
+ "x": 0.5
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "x": 5.5
+ },
+ "0,7",
+ "0,6",
+ "0,5",
+ {
+ "x": 0.5
+ },
+ "7,5",
+ "7,6",
+ "7,7"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/imprint/imprint_number_row/rules.mk b/keyboards/cyboard/imprint/imprint_number_row/rules.mk
new file mode 100644
index 00000000000..e02abfc9b0e
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_number_row/rules.mk
@@ -0,0 +1 @@
+
diff --git a/keyboards/cyboard/imprint/imprint_number_row_inner_col/info.json b/keyboards/cyboard/imprint/imprint_number_row_inner_col/info.json
new file mode 100644
index 00000000000..b61ffa7c00f
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_number_row_inner_col/info.json
@@ -0,0 +1,174 @@
+{
+ "rgb_matrix": {
+ "split_count": [32, 32],
+ "layout": [
+ {"flags": 4, "matrix": [3, 0], "x": 86, "y": 32},
+ {"flags": 4, "matrix": [2, 0], "x": 86, "y": 43},
+ {"flags": 4, "matrix": [5, 0], "x": 86, "y": 11},
+ {"flags": 4, "matrix": [4, 0], "x": 86, "y": 21},
+
+ {"flags": 4, "matrix": [3, 1], "x": 69, "y": 32},
+ {"flags": 4, "matrix": [2, 1], "x": 69, "y": 43},
+ {"flags": 4, "matrix": [5, 1], "x": 69, "y": 11},
+ {"flags": 4, "matrix": [4, 1], "x": 69, "y": 21},
+
+ {"flags": 4, "matrix": [3, 2], "x": 52, "y": 32},
+ {"flags": 4, "matrix": [2, 2], "x": 52, "y": 43},
+ {"flags": 4, "matrix": [1, 2], "x": 52, "y": 53},
+ {"flags": 4, "matrix": [5, 2], "x": 52, "y": 11},
+ {"flags": 4, "matrix": [4, 2], "x": 52, "y": 21},
+
+ {"flags": 4, "matrix": [3, 3], "x": 34, "y": 32},
+ {"flags": 4, "matrix": [2, 3], "x": 34, "y": 43},
+ {"flags": 4, "matrix": [1, 3], "x": 34, "y": 53},
+ {"flags": 4, "matrix": [5, 3], "x": 34, "y": 11},
+ {"flags": 4, "matrix": [4, 3], "x": 34, "y": 21},
+
+ {"flags": 4, "matrix": [3, 4], "x": 17, "y": 32},
+ {"flags": 4, "matrix": [2, 4], "x": 17, "y": 43},
+ {"flags": 4, "matrix": [5, 4], "x": 17, "y": 11},
+ {"flags": 4, "matrix": [4, 4], "x": 17, "y": 21},
+
+ {"flags": 4, "matrix": [3, 5], "x": 0, "y": 32},
+ {"flags": 4, "matrix": [2, 5], "x": 0, "y": 43},
+ {"flags": 4, "matrix": [5, 5], "x": 0, "y": 11},
+ {"flags": 4, "matrix": [4, 5], "x": 0, "y": 21},
+
+ {"flags": 4, "matrix": [0, 3], "x": 86, "y": 53},
+ {"flags": 4, "matrix": [0, 2], "x": 103, "y": 53},
+ {"flags": 4, "matrix": [0, 1], "x": 103, "y": 64},
+ {"flags": 4, "matrix": [0, 7], "x": 69, "y": 53},
+ {"flags": 4, "matrix": [0, 6], "x": 69, "y": 64},
+ {"flags": 4, "matrix": [0, 5], "x": 86, "y": 64},
+
+
+ {"flags": 4, "matrix": [10, 0], "x": 138, "y": 32},
+ {"flags": 4, "matrix": [9, 0], "x": 138, "y": 43},
+ {"flags": 4, "matrix": [12, 0], "x": 138, "y": 11},
+ {"flags": 4, "matrix": [11, 0], "x": 138, "y": 21},
+
+ {"flags": 4, "matrix": [10, 1], "x": 155, "y": 32},
+ {"flags": 4, "matrix": [9, 1], "x": 155, "y": 43},
+ {"flags": 4, "matrix": [12, 1], "x": 155, "y": 11},
+ {"flags": 4, "matrix": [11, 1], "x": 155, "y": 21},
+
+ {"flags": 4, "matrix": [10, 2], "x": 172, "y": 32},
+ {"flags": 4, "matrix": [9, 2], "x": 172, "y": 43},
+ {"flags": 4, "matrix": [8, 2], "x": 172, "y": 53},
+ {"flags": 4, "matrix": [12, 2], "x": 172, "y": 11},
+ {"flags": 4, "matrix": [11, 2], "x": 172, "y": 21},
+
+ {"flags": 4, "matrix": [10, 3], "x": 190, "y": 32},
+ {"flags": 4, "matrix": [9, 3], "x": 190, "y": 43},
+ {"flags": 4, "matrix": [8, 3], "x": 190, "y": 53},
+ {"flags": 4, "matrix": [12, 3], "x": 190, "y": 11},
+ {"flags": 4, "matrix": [11, 3], "x": 190, "y": 21},
+
+ {"flags": 4, "matrix": [10, 4], "x": 207, "y": 32},
+ {"flags": 4, "matrix": [9, 4], "x": 207, "y": 43},
+ {"flags": 4, "matrix": [12, 4], "x": 207, "y": 11},
+ {"flags": 4, "matrix": [11, 4], "x": 207, "y": 21},
+
+ {"flags": 4, "matrix": [10, 5], "x": 224, "y": 32},
+ {"flags": 4, "matrix": [9, 5], "x": 224, "y": 43},
+ {"flags": 4, "matrix": [12, 5], "x": 224, "y": 11},
+ {"flags": 4, "matrix": [11, 5], "x": 224, "y": 21},
+
+ {"flags": 4, "matrix": [7, 3], "x": 138, "y": 53},
+ {"flags": 4, "matrix": [7, 2], "x": 121, "y": 53},
+ {"flags": 4, "matrix": [7, 1], "x": 121, "y": 64},
+ {"flags": 4, "matrix": [7, 7], "x": 138, "y": 64},
+ {"flags": 4, "matrix": [7, 6], "x": 155, "y": 64},
+ {"flags": 4, "matrix": [7, 5], "x": 155, "y": 53}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_num": {
+ "layout": [
+ { "matrix": [5, 6], "x": 0, "y": 0 },
+ { "matrix": [5, 5], "x": 0, "y": 0 },
+ { "matrix": [5, 4], "x": 1, "y": 0 },
+ { "matrix": [5, 3], "x": 2, "y": 0 },
+ { "matrix": [5, 2], "x": 3, "y": 0 },
+ { "matrix": [5, 1], "x": 4, "y": 0 },
+ { "matrix": [5, 0], "x": 5, "y": 0 },
+
+ { "matrix": [12, 0], "x": 11.5, "y": 0 },
+ { "matrix": [12, 1], "x": 12.5, "y": 0 },
+ { "matrix": [12, 2], "x": 13.5, "y": 0 },
+ { "matrix": [12, 3], "x": 14.5, "y": 0 },
+ { "matrix": [12, 4], "x": 15.5, "y": 0 },
+ { "matrix": [12, 5], "x": 16.5, "y": 0 },
+ { "matrix": [12, 6], "x": 16.5, "y": 0 },
+
+ { "matrix": [4, 6], "x": 0, "y": 1 },
+ { "matrix": [4, 5], "x": 0, "y": 1 },
+ { "matrix": [4, 4], "x": 1, "y": 1 },
+ { "matrix": [4, 3], "x": 2, "y": 1 },
+ { "matrix": [4, 2], "x": 3, "y": 1 },
+ { "matrix": [4, 1], "x": 4, "y": 1 },
+ { "matrix": [4, 0], "x": 5, "y": 1 },
+
+ { "matrix": [11, 0], "x": 10.5, "y": 1 },
+ { "matrix": [11, 1], "x": 11.5, "y": 1 },
+ { "matrix": [11, 2], "x": 12.5, "y": 1 },
+ { "matrix": [11, 3], "x": 13.5, "y": 1 },
+ { "matrix": [11, 4], "x": 14.5, "y": 1 },
+ { "matrix": [11, 5], "x": 15.5, "y": 1 },
+ { "matrix": [11, 6], "x": 15.5, "y": 1 },
+
+ { "matrix": [3, 6], "x": 0, "y": 2 },
+ { "matrix": [3, 5], "x": 0, "y": 2 },
+ { "matrix": [3, 4], "x": 1, "y": 2 },
+ { "matrix": [3, 3], "x": 2, "y": 2 },
+ { "matrix": [3, 2], "x": 3, "y": 2 },
+ { "matrix": [3, 1], "x": 4, "y": 2 },
+ { "matrix": [3, 0], "x": 5, "y": 2 },
+
+ { "matrix": [10, 0], "x": 10.5, "y": 2 },
+ { "matrix": [10, 1], "x": 11.5, "y": 2 },
+ { "matrix": [10, 2], "x": 12.5, "y": 2 },
+ { "matrix": [10, 3], "x": 13.5, "y": 2 },
+ { "matrix": [10, 4], "x": 14.5, "y": 2 },
+ { "matrix": [10, 5], "x": 15.5, "y": 2 },
+ { "matrix": [10, 6], "x": 15.5, "y": 2 },
+
+ { "matrix": [2, 6], "x": 0, "y": 3 },
+ { "matrix": [2, 5], "x": 0, "y": 3 },
+ { "matrix": [2, 4], "x": 1, "y": 3 },
+ { "matrix": [2, 3], "x": 2, "y": 3 },
+ { "matrix": [2, 2], "x": 3, "y": 3 },
+ { "matrix": [2, 1], "x": 4, "y": 3 },
+
+ { "matrix": [9, 1], "x": 11.5, "y": 3 },
+ { "matrix": [9, 2], "x": 12.5, "y": 3 },
+ { "matrix": [9, 3], "x": 13.5, "y": 3 },
+ { "matrix": [9, 4], "x": 14.5, "y": 3 },
+ { "matrix": [9, 5], "x": 15.5, "y": 3 },
+ { "matrix": [9, 6], "x": 15.5, "y": 3 },
+
+ { "matrix": [1, 4], "x": 2, "y": 3 },
+ { "matrix": [1, 3], "x": 3, "y": 3 },
+
+ { "matrix": [0, 3], "x": 4.5, "y": 3.5 },
+ { "matrix": [0, 2], "x": 5.5, "y": 3.5 },
+ { "matrix": [0, 1], "x": 6.5, "y": 4 },
+
+ { "matrix": [7, 1], "x": 10, "y": 4 },
+ { "matrix": [7, 2], "x": 11, "y": 3.5 },
+ { "matrix": [7, 3], "x": 12, "y": 3.5 },
+
+ { "matrix": [8, 3], "x": 13.5, "y": 3 },
+ { "matrix": [8, 4], "x": 14.5, "y": 3 },
+
+ { "matrix": [0, 7], "x": 6.5, "y": 5 },
+ { "matrix": [0, 6], "x": 7.5, "y": 5 },
+ { "matrix": [0, 5], "x": 7.5, "y": 4 },
+
+ { "matrix": [7, 5], "x": 9, "y": 4 },
+ { "matrix": [7, 6], "x": 9, "y": 5 },
+ { "matrix": [7, 7], "x": 10, "y": 5 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/cyboard/imprint/imprint_number_row_inner_col/keymaps/vial/keymap.c b/keyboards/cyboard/imprint/imprint_number_row_inner_col/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..e99181bd50d
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_number_row_inner_col/keymaps/vial/keymap.c
@@ -0,0 +1,98 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_num(
+ KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_F1, KC_F4, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_F2, KC_F5, 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_F3, KC_F6, 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_LGUI, KC_LALT, KC_ENT, KC_DEL, KC_ESC, KC_GRAVE, KC_BSPC, KC_SPC, KC_LBRC, KC_RBRC,
+ KC_LGUI, KC_HOME, KC_END, KC_CAPS, KC_APP, MO(1)
+ ),
+
+ [1] = LAYOUT_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/imprint/imprint_number_row_inner_col/keymaps/vial/rules.mk b/keyboards/cyboard/imprint/imprint_number_row_inner_col/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_number_row_inner_col/keymaps/vial/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/imprint/imprint_number_row_inner_col/keymaps/vial/vial.json b/keyboards/cyboard/imprint/imprint_number_row_inner_col/keymaps/vial/vial.json
new file mode 100644
index 00000000000..d968f93ee6f
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_number_row_inner_col/keymaps/vial/vial.json
@@ -0,0 +1,130 @@
+{
+ "name": "Imprint",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 8
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "5,6",
+ "5,5",
+ "5,4",
+ "5,3",
+ "5,2",
+ "5,1",
+ "5,0",
+ {
+ "x": 3.5
+ },
+ "12,0",
+ "12,1",
+ "12,2",
+ "12,3",
+ "12,4",
+ "12,5",
+ "12,6"
+ ],
+ [
+ "4,6",
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ "4,0",
+ {
+ "x": 3.5
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5",
+ "11,6"
+ ],
+ [
+ "3,6",
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ "3,0",
+ {
+ "x": 3.5
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ "2,6",
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ {
+ "x": 5.5
+ },
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "x": 2
+ },
+ "1,4",
+ "1,3",
+ {
+ "x": 9.5
+ },
+ "8,3",
+ "8,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 5.5
+ },
+ "0,3",
+ "0,2",
+ "0,1",
+ {
+ "x": 0.5
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "x": 5.5
+ },
+ "0,7",
+ "0,6",
+ "0,5",
+ {
+ "x": 0.5
+ },
+ "7,5",
+ "7,6",
+ "7,7"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/imprint/imprint_number_row_inner_col/rules.mk b/keyboards/cyboard/imprint/imprint_number_row_inner_col/rules.mk
new file mode 100644
index 00000000000..e02abfc9b0e
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_number_row_inner_col/rules.mk
@@ -0,0 +1 @@
+
diff --git a/keyboards/cyboard/imprint/imprint_v4n4g0n/info.json b/keyboards/cyboard/imprint/imprint_v4n4g0n/info.json
new file mode 100644
index 00000000000..811882ace1d
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_v4n4g0n/info.json
@@ -0,0 +1,154 @@
+{
+ "rgb_matrix": {
+ "split_count": [32, 24],
+ "layout": [
+ {"flags": 4, "matrix": [3, 0], "x": 86, "y": 32},
+ {"flags": 4, "matrix": [2, 0], "x": 86, "y": 43},
+ {"flags": 4, "matrix": [5, 0], "x": 86, "y": 11},
+ {"flags": 4, "matrix": [4, 0], "x": 86, "y": 21},
+
+ {"flags": 4, "matrix": [3, 1], "x": 69, "y": 32},
+ {"flags": 4, "matrix": [2, 1], "x": 69, "y": 43},
+ {"flags": 4, "matrix": [5, 1], "x": 69, "y": 11},
+ {"flags": 4, "matrix": [4, 1], "x": 69, "y": 21},
+
+ {"flags": 4, "matrix": [3, 2], "x": 52, "y": 32},
+ {"flags": 4, "matrix": [2, 2], "x": 52, "y": 43},
+ {"flags": 4, "matrix": [1, 2], "x": 52, "y": 53},
+ {"flags": 4, "matrix": [5, 2], "x": 52, "y": 11},
+ {"flags": 4, "matrix": [4, 2], "x": 52, "y": 21},
+
+ {"flags": 4, "matrix": [3, 3], "x": 34, "y": 32},
+ {"flags": 4, "matrix": [2, 3], "x": 34, "y": 43},
+ {"flags": 4, "matrix": [1, 3], "x": 34, "y": 53},
+ {"flags": 4, "matrix": [5, 3], "x": 34, "y": 11},
+ {"flags": 4, "matrix": [4, 3], "x": 34, "y": 21},
+
+ {"flags": 4, "matrix": [3, 4], "x": 17, "y": 32},
+ {"flags": 4, "matrix": [2, 4], "x": 17, "y": 43},
+ {"flags": 4, "matrix": [5, 4], "x": 17, "y": 11},
+ {"flags": 4, "matrix": [4, 4], "x": 17, "y": 21},
+
+ {"flags": 4, "matrix": [3, 5], "x": 0, "y": 32},
+ {"flags": 4, "matrix": [2, 5], "x": 0, "y": 43},
+ {"flags": 4, "matrix": [5, 5], "x": 0, "y": 11},
+ {"flags": 4, "matrix": [4, 5], "x": 0, "y": 21},
+
+ {"flags": 4, "matrix": [0, 3], "x": 86, "y": 53},
+ {"flags": 4, "matrix": [0, 2], "x": 103, "y": 53},
+ {"flags": 4, "matrix": [0, 1], "x": 103, "y": 64},
+ {"flags": 4, "matrix": [0, 7], "x": 69, "y": 53},
+ {"flags": 4, "matrix": [0, 6], "x": 69, "y": 64},
+ {"flags": 4, "matrix": [0, 5], "x": 86, "y": 64},
+
+
+ {"flags": 4, "matrix": [10, 0], "x": 138, "y": 32},
+ {"flags": 4, "matrix": [9, 0], "x": 138, "y": 43},
+ {"flags": 4, "matrix": [11, 0], "x": 138, "y": 21},
+
+ {"flags": 4, "matrix": [10, 1], "x": 155, "y": 32},
+ {"flags": 4, "matrix": [9, 1], "x": 155, "y": 43},
+ {"flags": 4, "matrix": [11, 1], "x": 155, "y": 21},
+
+ {"flags": 4, "matrix": [10, 2], "x": 172, "y": 32},
+ {"flags": 4, "matrix": [9, 2], "x": 172, "y": 43},
+ {"flags": 4, "matrix": [8, 2], "x": 172, "y": 53},
+ {"flags": 4, "matrix": [11, 2], "x": 172, "y": 21},
+
+ {"flags": 4, "matrix": [10, 3], "x": 190, "y": 32},
+ {"flags": 4, "matrix": [9, 3], "x": 190, "y": 43},
+ {"flags": 4, "matrix": [8, 3], "x": 190, "y": 53},
+ {"flags": 4, "matrix": [11, 3], "x": 190, "y": 21},
+
+ {"flags": 4, "matrix": [10, 4], "x": 207, "y": 32},
+ {"flags": 4, "matrix": [9, 4], "x": 207, "y": 43},
+ {"flags": 4, "matrix": [11, 4], "x": 207, "y": 21},
+
+ {"flags": 4, "matrix": [10, 5], "x": 224, "y": 32},
+ {"flags": 4, "matrix": [9, 5], "x": 224, "y": 43},
+ {"flags": 4, "matrix": [11, 5], "x": 224, "y": 21},
+
+ {"flags": 4, "matrix": [7, 3], "x": 138, "y": 53},
+ {"flags": 4, "matrix": [7, 2], "x": 121, "y": 53},
+ {"flags": 4, "matrix": [7, 1], "x": 121, "y": 64},
+ {"flags": 4, "matrix": [7, 7], "x": 138, "y": 64},
+ {"flags": 4, "matrix": [7, 6], "x": 155, "y": 64},
+ {"flags": 4, "matrix": [7, 5], "x": 155, "y": 53}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_v4n4g0n": {
+ "layout": [{ "matrix": [5, 5], "x": 0, "y": 0 },
+ { "matrix": [5, 4], "x": 1, "y": 0 },
+ { "matrix": [5, 3], "x": 2, "y": 0 },
+ { "matrix": [5, 2], "x": 3, "y": 0 },
+ { "matrix": [5, 1], "x": 4, "y": 0 },
+ { "matrix": [5, 0], "x": 5, "y": 0 },
+
+ { "matrix": [4, 5], "x": 0, "y": 1 },
+ { "matrix": [4, 4], "x": 1, "y": 1 },
+ { "matrix": [4, 3], "x": 2, "y": 1 },
+ { "matrix": [4, 2], "x": 3, "y": 1 },
+ { "matrix": [4, 1], "x": 4, "y": 1 },
+ { "matrix": [4, 0], "x": 5, "y": 1 },
+
+ { "matrix": [11, 0], "x": 10.5, "y": 1 },
+ { "matrix": [11, 1], "x": 11.5, "y": 1 },
+ { "matrix": [11, 2], "x": 12.5, "y": 1 },
+ { "matrix": [11, 3], "x": 13.5, "y": 1 },
+ { "matrix": [11, 4], "x": 14.5, "y": 1 },
+ { "matrix": [11, 5], "x": 15.5, "y": 1 },
+
+ { "matrix": [3, 5], "x": 0, "y": 2 },
+ { "matrix": [3, 4], "x": 1, "y": 2 },
+ { "matrix": [3, 3], "x": 2, "y": 2 },
+ { "matrix": [3, 2], "x": 3, "y": 2 },
+ { "matrix": [3, 1], "x": 4, "y": 2 },
+ { "matrix": [3, 0], "x": 5, "y": 2 },
+
+ { "matrix": [10, 0], "x": 10.5, "y": 2 },
+ { "matrix": [10, 1], "x": 11.5, "y": 2 },
+ { "matrix": [10, 2], "x": 12.5, "y": 2 },
+ { "matrix": [10, 3], "x": 13.5, "y": 2 },
+ { "matrix": [10, 4], "x": 14.5, "y": 2 },
+ { "matrix": [10, 5], "x": 15.5, "y": 2 },
+
+ { "matrix": [2, 5], "x": 0, "y": 3 },
+ { "matrix": [2, 4], "x": 1, "y": 3 },
+ { "matrix": [2, 3], "x": 2, "y": 3 },
+ { "matrix": [2, 2], "x": 3, "y": 3 },
+ { "matrix": [2, 1], "x": 4, "y": 3 },
+ { "matrix": [2, 0], "x": 5, "y": 3 },
+
+ { "matrix": [9, 0], "x": 10.5, "y": 3 },
+ { "matrix": [9, 1], "x": 11.5, "y": 3 },
+ { "matrix": [9, 2], "x": 12.5, "y": 3 },
+ { "matrix": [9, 3], "x": 13.5, "y": 3 },
+ { "matrix": [9, 4], "x": 14.5, "y": 3 },
+ { "matrix": [9, 5], "x": 15.5, "y": 3 },
+
+ { "matrix": [1, 3], "x": 2, "y": 3 },
+ { "matrix": [1, 2], "x": 3, "y": 3 },
+
+ { "matrix": [0, 3], "x": 4.5, "y": 3.5 },
+ { "matrix": [0, 2], "x": 5.5, "y": 3.5 },
+ { "matrix": [0, 1], "x": 6.5, "y": 4 },
+
+ { "matrix": [7, 1], "x": 10, "y": 4 },
+ { "matrix": [7, 2], "x": 11, "y": 3.5 },
+ { "matrix": [7, 3], "x": 12, "y": 3.5 },
+
+ { "matrix": [8, 2], "x": 13.5, "y": 3 },
+ { "matrix": [8, 3], "x": 14.5, "y": 3 },
+
+ { "matrix": [0, 7], "x": 6.5, "y": 5 },
+ { "matrix": [0, 6], "x": 7.5, "y": 5 },
+ { "matrix": [0, 5], "x": 7.5, "y": 4 },
+
+ { "matrix": [7, 5], "x": 9, "y": 4 },
+ { "matrix": [7, 6], "x": 9, "y": 5 },
+ { "matrix": [7, 7], "x": 10, "y": 5 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/cyboard/imprint/imprint_v4n4g0n/keymaps/vial/keymap.c b/keyboards/cyboard/imprint/imprint_v4n4g0n/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..fcfb9e877a1
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_v4n4g0n/keymaps/vial/keymap.c
@@ -0,0 +1,98 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_v4n4g0n(
+ KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_LGUI, KC_LALT, KC_LGUI, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, MO(1), KC_LBRC, KC_RBRC,
+ KC_HOME, KC_END, KC_ESC, KC_GRAVE, KC_CAPS, KC_APP
+ ),
+
+ [1] = LAYOUT_v4n4g0n(
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_v4n4g0n(
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_v4n4g0n(
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_v4n4g0n(
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_v4n4g0n(
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_v4n4g0n(
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_v4n4g0n(
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_v4n4g0n(
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_v4n4g0n(
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/imprint/imprint_v4n4g0n/keymaps/vial/rules.mk b/keyboards/cyboard/imprint/imprint_v4n4g0n/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_v4n4g0n/keymaps/vial/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/imprint/imprint_v4n4g0n/keymaps/vial/vial.json b/keyboards/cyboard/imprint/imprint_v4n4g0n/keymaps/vial/vial.json
new file mode 100644
index 00000000000..dc7eb1be505
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_v4n4g0n/keymaps/vial/vial.json
@@ -0,0 +1,115 @@
+{
+ "name": "Imprint",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 8
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "5,5",
+ "5,4",
+ "5,3",
+ "5,2",
+ "5,1",
+ "5,0"
+ ],
+ [
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ "4,0",
+ {
+ "x": 5.5
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5"
+ ],
+ [
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ "3,0",
+ {
+ "x": 5.5
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5"
+ ],
+ [
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ "2,0",
+ {
+ "x": 5.5
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "x": 2
+ },
+ "1,3",
+ "1,2",
+ {
+ "x": 9.5
+ },
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 5.5
+ },
+ "0,3",
+ "0,2",
+ "0,1",
+ {
+ "x": 0.5
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "x": 5.5
+ },
+ "0,7",
+ "0,6",
+ "0,5",
+ {
+ "x": 0.5
+ },
+ "7,5",
+ "7,6",
+ "7,7"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/imprint/imprint_v4n4g0n/rules.mk b/keyboards/cyboard/imprint/imprint_v4n4g0n/rules.mk
new file mode 100644
index 00000000000..e02abfc9b0e
--- /dev/null
+++ b/keyboards/cyboard/imprint/imprint_v4n4g0n/rules.mk
@@ -0,0 +1 @@
+
diff --git a/keyboards/cyboard/imprint/info.json b/keyboards/cyboard/imprint/info.json
new file mode 100644
index 00000000000..c88b824d6ed
--- /dev/null
+++ b/keyboards/cyboard/imprint/info.json
@@ -0,0 +1,3 @@
+{
+ "keyboard_name": "Imprint"
+}
diff --git a/keyboards/cyboard/imprint/manuform_function_row/info.json b/keyboards/cyboard/imprint/manuform_function_row/info.json
new file mode 100644
index 00000000000..278b2bde333
--- /dev/null
+++ b/keyboards/cyboard/imprint/manuform_function_row/info.json
@@ -0,0 +1,179 @@
+{
+ "rgb_matrix": {
+ "split_count": [38, 38],
+ "layout": [
+ {"flags": 4, "matrix": [3, 0], "x": 86, "y": 32},
+ {"flags": 4, "matrix": [2, 0], "x": 86, "y": 43},
+ {"flags": 4, "matrix": [6, 0], "x": 86, "y": 0},
+ {"flags": 4, "matrix": [5, 0], "x": 86, "y": 11},
+ {"flags": 4, "matrix": [4, 0], "x": 86, "y": 21},
+
+ {"flags": 4, "matrix": [3, 1], "x": 69, "y": 32},
+ {"flags": 4, "matrix": [2, 1], "x": 69, "y": 43},
+ {"flags": 4, "matrix": [6, 1], "x": 69, "y": 0},
+ {"flags": 4, "matrix": [5, 1], "x": 69, "y": 11},
+ {"flags": 4, "matrix": [4, 1], "x": 69, "y": 21},
+
+ {"flags": 4, "matrix": [3, 2], "x": 52, "y": 32},
+ {"flags": 4, "matrix": [2, 2], "x": 52, "y": 43},
+ {"flags": 4, "matrix": [1, 2], "x": 52, "y": 53},
+ {"flags": 4, "matrix": [6, 2], "x": 52, "y": 0},
+ {"flags": 4, "matrix": [5, 2], "x": 52, "y": 11},
+ {"flags": 4, "matrix": [4, 2], "x": 52, "y": 21},
+
+ {"flags": 4, "matrix": [3, 3], "x": 34, "y": 32},
+ {"flags": 4, "matrix": [2, 3], "x": 34, "y": 43},
+ {"flags": 4, "matrix": [1, 3], "x": 34, "y": 53},
+ {"flags": 4, "matrix": [6, 3], "x": 34, "y": 0},
+ {"flags": 4, "matrix": [5, 3], "x": 34, "y": 11},
+ {"flags": 4, "matrix": [4, 3], "x": 34, "y": 21},
+
+ {"flags": 4, "matrix": [3, 4], "x": 17, "y": 32},
+ {"flags": 4, "matrix": [2, 4], "x": 17, "y": 43},
+ {"flags": 4, "matrix": [6, 4], "x": 17, "y": 0},
+ {"flags": 4, "matrix": [5, 4], "x": 17, "y": 11},
+ {"flags": 4, "matrix": [4, 4], "x": 17, "y": 21},
+
+ {"flags": 4, "matrix": [3, 5], "x": 0, "y": 32},
+ {"flags": 4, "matrix": [2, 5], "x": 0, "y": 43},
+ {"flags": 4, "matrix": [6, 5], "x": 0, "y": 0},
+ {"flags": 4, "matrix": [5, 5], "x": 0, "y": 11},
+ {"flags": 4, "matrix": [4, 5], "x": 0, "y": 21},
+
+ {"flags": 4, "matrix": [0, 3], "x": 86, "y": 53},
+ {"flags": 4, "matrix": [0, 2], "x": 103, "y": 53},
+ {"flags": 4, "matrix": [0, 1], "x": 103, "y": 64},
+ {"flags": 4, "matrix": [0, 7], "x": 69, "y": 53},
+ {"flags": 4, "matrix": [0, 6], "x": 69, "y": 64},
+ {"flags": 4, "matrix": [0, 5], "x": 86, "y": 64},
+
+
+ {"flags": 4, "matrix": [10, 0], "x": 138, "y": 32},
+ {"flags": 4, "matrix": [9, 0], "x": 138, "y": 43},
+ {"flags": 4, "matrix": [13, 0], "x": 138, "y": 0},
+ {"flags": 4, "matrix": [12, 0], "x": 138, "y": 11},
+ {"flags": 4, "matrix": [11, 0], "x": 138, "y": 21},
+
+ {"flags": 4, "matrix": [10, 1], "x": 155, "y": 32},
+ {"flags": 4, "matrix": [9, 1], "x": 155, "y": 43},
+ {"flags": 4, "matrix": [13, 1], "x": 155, "y": 0},
+ {"flags": 4, "matrix": [12, 1], "x": 155, "y": 11},
+ {"flags": 4, "matrix": [11, 1], "x": 155, "y": 21},
+
+ {"flags": 4, "matrix": [10, 2], "x": 172, "y": 32},
+ {"flags": 4, "matrix": [9, 2], "x": 172, "y": 43},
+ {"flags": 4, "matrix": [8, 2], "x": 172, "y": 53},
+ {"flags": 4, "matrix": [13, 2], "x": 172, "y": 0},
+ {"flags": 4, "matrix": [12, 2], "x": 172, "y": 11},
+ {"flags": 4, "matrix": [11, 2], "x": 172, "y": 21},
+
+ {"flags": 4, "matrix": [10, 3], "x": 190, "y": 32},
+ {"flags": 4, "matrix": [9, 3], "x": 190, "y": 43},
+ {"flags": 4, "matrix": [8, 3], "x": 190, "y": 53},
+ {"flags": 4, "matrix": [13, 3], "x": 190, "y": 0},
+ {"flags": 4, "matrix": [12, 3], "x": 190, "y": 11},
+ {"flags": 4, "matrix": [11, 3], "x": 190, "y": 21},
+
+ {"flags": 4, "matrix": [10, 4], "x": 207, "y": 32},
+ {"flags": 4, "matrix": [9, 4], "x": 207, "y": 43},
+ {"flags": 4, "matrix": [13, 4], "x": 207, "y": 0},
+ {"flags": 4, "matrix": [12, 4], "x": 207, "y": 11},
+ {"flags": 4, "matrix": [11, 4], "x": 207, "y": 21},
+
+ {"flags": 4, "matrix": [10, 5], "x": 224, "y": 32},
+ {"flags": 4, "matrix": [9, 5], "x": 224, "y": 43},
+ {"flags": 4, "matrix": [13, 5], "x": 224, "y": 0},
+ {"flags": 4, "matrix": [12, 5], "x": 224, "y": 11},
+ {"flags": 4, "matrix": [11, 5], "x": 224, "y": 21},
+
+ {"flags": 4, "matrix": [7, 3], "x": 138, "y": 53},
+ {"flags": 4, "matrix": [7, 2], "x": 121, "y": 53},
+ {"flags": 4, "matrix": [7, 1], "x": 121, "y": 64},
+ {"flags": 4, "matrix": [7, 7], "x": 138, "y": 64},
+ {"flags": 4, "matrix": [7, 6], "x": 155, "y": 64},
+ {"flags": 4, "matrix": [7, 5], "x": 155, "y": 53}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_manuform_fun": {
+ "layout": [
+ { "matrix": [6, 5], "x": 0, "y": 0 },
+ { "matrix": [6, 4], "x": 1, "y": 0 },
+ { "matrix": [6, 3], "x": 2, "y": 0 },
+ { "matrix": [6, 2], "x": 3, "y": 0 },
+ { "matrix": [6, 1], "x": 4, "y": 0 },
+ { "matrix": [6, 0], "x": 5, "y": 0 },
+ { "matrix": [13, 0], "x": 11.5, "y": 0 },
+ { "matrix": [13, 1], "x": 12.5, "y": 0 },
+ { "matrix": [13, 2], "x": 13.5, "y": 0 },
+ { "matrix": [13, 3], "x": 14.5, "y": 0 },
+ { "matrix": [13, 4], "x": 15.5, "y": 0 },
+ { "matrix": [13, 5], "x": 16.5, "y": 0 },
+ { "matrix": [5, 5], "x": 0, "y": 0 },
+ { "matrix": [5, 4], "x": 1, "y": 0 },
+ { "matrix": [5, 3], "x": 2, "y": 0 },
+ { "matrix": [5, 2], "x": 3, "y": 0 },
+ { "matrix": [5, 1], "x": 4, "y": 0 },
+ { "matrix": [5, 0], "x": 5, "y": 0 },
+ { "matrix": [12, 0], "x": 11.5, "y": 0 },
+ { "matrix": [12, 1], "x": 12.5, "y": 0 },
+ { "matrix": [12, 2], "x": 13.5, "y": 0 },
+ { "matrix": [12, 3], "x": 14.5, "y": 0 },
+ { "matrix": [12, 4], "x": 15.5, "y": 0 },
+ { "matrix": [12, 5], "x": 16.5, "y": 0 },
+ { "matrix": [4, 5], "x": 0, "y": 1 },
+ { "matrix": [4, 4], "x": 1, "y": 1 },
+ { "matrix": [4, 3], "x": 2, "y": 1 },
+ { "matrix": [4, 2], "x": 3, "y": 1 },
+ { "matrix": [4, 1], "x": 4, "y": 1 },
+ { "matrix": [4, 0], "x": 5, "y": 1 },
+ { "matrix": [11, 0], "x": 10.5, "y": 1 },
+ { "matrix": [11, 1], "x": 11.5, "y": 1 },
+ { "matrix": [11, 2], "x": 12.5, "y": 1 },
+ { "matrix": [11, 3], "x": 13.5, "y": 1 },
+ { "matrix": [11, 4], "x": 14.5, "y": 1 },
+ { "matrix": [11, 5], "x": 15.5, "y": 1 },
+ { "matrix": [3, 5], "x": 0, "y": 2 },
+ { "matrix": [3, 4], "x": 1, "y": 2 },
+ { "matrix": [3, 3], "x": 2, "y": 2 },
+ { "matrix": [3, 2], "x": 3, "y": 2 },
+ { "matrix": [3, 1], "x": 4, "y": 2 },
+ { "matrix": [3, 0], "x": 5, "y": 2 },
+ { "matrix": [10, 0], "x": 10.5, "y": 2 },
+ { "matrix": [10, 1], "x": 11.5, "y": 2 },
+ { "matrix": [10, 2], "x": 12.5, "y": 2 },
+ { "matrix": [10, 3], "x": 13.5, "y": 2 },
+ { "matrix": [10, 4], "x": 14.5, "y": 2 },
+ { "matrix": [10, 5], "x": 15.5, "y": 2 },
+ { "matrix": [2, 5], "x": 0, "y": 3 },
+ { "matrix": [2, 4], "x": 1, "y": 3 },
+ { "matrix": [2, 3], "x": 2, "y": 3 },
+ { "matrix": [2, 2], "x": 3, "y": 3 },
+ { "matrix": [2, 1], "x": 4, "y": 3 },
+ { "matrix": [2, 0], "x": 5, "y": 3 },
+ { "matrix": [9, 0], "x": 10.5, "y": 3 },
+ { "matrix": [9, 1], "x": 11.5, "y": 3 },
+ { "matrix": [9, 2], "x": 12.5, "y": 3 },
+ { "matrix": [9, 3], "x": 13.5, "y": 3 },
+ { "matrix": [9, 4], "x": 14.5, "y": 3 },
+ { "matrix": [9, 5], "x": 15.5, "y": 3 },
+ { "matrix": [1, 3], "x": 2, "y": 3 },
+ { "matrix": [1, 2], "x": 3, "y": 3 },
+ { "matrix": [0, 7], "x": 4.5, "y": 3.5 },
+ { "matrix": [0, 3], "x": 5.5, "y": 3.5 },
+ { "matrix": [0, 2], "x": 6.5, "y": 4 },
+ { "matrix": [7, 2], "x": 10, "y": 4 },
+ { "matrix": [7, 3], "x": 11, "y": 3.5 },
+ { "matrix": [7, 7], "x": 12, "y": 3.5 },
+ { "matrix": [8, 2], "x": 13.5, "y": 3 },
+ { "matrix": [8, 3], "x": 14.5, "y": 3 },
+ { "matrix": [0, 6], "x": 6.5, "y": 5 },
+ { "matrix": [0, 5], "x": 7.5, "y": 5 },
+ { "matrix": [0, 1], "x": 7.5, "y": 4 },
+ { "matrix": [7, 1], "x": 9, "y": 4 },
+ { "matrix": [7, 5], "x": 9, "y": 5 },
+ { "matrix": [7, 6], "x": 10, "y": 5 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/cyboard/imprint/manuform_function_row/keymaps/vial/keymap.c b/keyboards/cyboard/imprint/manuform_function_row/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..1a03adb6c39
--- /dev/null
+++ b/keyboards/cyboard/imprint/manuform_function_row/keymaps/vial/keymap.c
@@ -0,0 +1,108 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_manuform_fun(
+ 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_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_LGUI, KC_LALT, KC_LGUI, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, MO(1), KC_LBRC, KC_RBRC,
+ KC_HOME, KC_END, KC_ESC, KC_GRAVE, KC_CAPS, KC_APP
+ ),
+
+ [1] = LAYOUT_manuform_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_manuform_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_manuform_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_manuform_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_manuform_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_manuform_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_manuform_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_manuform_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_manuform_fun(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/imprint/manuform_function_row/keymaps/vial/rules.mk b/keyboards/cyboard/imprint/manuform_function_row/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/imprint/manuform_function_row/keymaps/vial/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/imprint/manuform_function_row/keymaps/vial/vial.json b/keyboards/cyboard/imprint/manuform_function_row/keymaps/vial/vial.json
new file mode 100644
index 00000000000..8a1359d748e
--- /dev/null
+++ b/keyboards/cyboard/imprint/manuform_function_row/keymaps/vial/vial.json
@@ -0,0 +1,150 @@
+{
+ "name": "Imprint Manuform",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 8
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "6,5",
+ "6,4",
+ "6,3",
+ "6,2",
+ "6,1",
+ "6,0",
+ {
+ "x": 5.5
+ },
+ "13,0",
+ "13,1",
+ "13,2",
+ "13,3",
+ "13,4",
+ "13,5"
+ ],
+ [
+ "5,5",
+ "5,4",
+ "5,3",
+ "5,2",
+ "5,1",
+ "5,0",
+ {
+ "x": 5.5
+ },
+ "12,0",
+ "12,1",
+ "12,2",
+ "12,3",
+ "12,4",
+ "12,5"
+ ],
+ [
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ "4,0",
+ {
+ "x": 5.5
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5"
+ ],
+ [
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ "3,0",
+ {
+ "x": 5.5
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5"
+ ],
+ [
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ "2,0",
+ {
+ "x": 5.5
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "x": 2
+ },
+ "1,3",
+ "1,2",
+ {
+ "x": 9.5
+ },
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4.5
+ },
+ "0,7",
+ "0,3",
+ {
+ "x": 4.5
+ },
+ "7,3",
+ "7,7"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 6.5
+ },
+ "0,2",
+ "0,1",
+ {
+ "x": 0.5
+ },
+ "7,1",
+ "7,2"
+ ],
+ [
+ {
+ "x": 6.5
+ },
+ "0,6",
+ "0,5",
+ {
+ "x": 0.5
+ },
+ "7,5",
+ "7,6"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/imprint/manuform_function_row/rules.mk b/keyboards/cyboard/imprint/manuform_function_row/rules.mk
new file mode 100644
index 00000000000..e02abfc9b0e
--- /dev/null
+++ b/keyboards/cyboard/imprint/manuform_function_row/rules.mk
@@ -0,0 +1 @@
+
diff --git a/keyboards/cyboard/imprint/manuform_number_row/info.json b/keyboards/cyboard/imprint/manuform_number_row/info.json
new file mode 100644
index 00000000000..6d1818d350f
--- /dev/null
+++ b/keyboards/cyboard/imprint/manuform_number_row/info.json
@@ -0,0 +1,155 @@
+{
+ "rgb_matrix": {
+ "split_count": [32, 32],
+ "layout": [
+ {"flags": 4, "matrix": [3, 0], "x": 86, "y": 32},
+ {"flags": 4, "matrix": [2, 0], "x": 86, "y": 43},
+ {"flags": 4, "matrix": [5, 0], "x": 86, "y": 11},
+ {"flags": 4, "matrix": [4, 0], "x": 86, "y": 21},
+
+ {"flags": 4, "matrix": [3, 1], "x": 69, "y": 32},
+ {"flags": 4, "matrix": [2, 1], "x": 69, "y": 43},
+ {"flags": 4, "matrix": [5, 1], "x": 69, "y": 11},
+ {"flags": 4, "matrix": [4, 1], "x": 69, "y": 21},
+
+ {"flags": 4, "matrix": [3, 2], "x": 52, "y": 32},
+ {"flags": 4, "matrix": [2, 2], "x": 52, "y": 43},
+ {"flags": 4, "matrix": [1, 2], "x": 52, "y": 53},
+ {"flags": 4, "matrix": [5, 2], "x": 52, "y": 11},
+ {"flags": 4, "matrix": [4, 2], "x": 52, "y": 21},
+
+ {"flags": 4, "matrix": [3, 3], "x": 34, "y": 32},
+ {"flags": 4, "matrix": [2, 3], "x": 34, "y": 43},
+ {"flags": 4, "matrix": [1, 3], "x": 34, "y": 53},
+ {"flags": 4, "matrix": [5, 3], "x": 34, "y": 11},
+ {"flags": 4, "matrix": [4, 3], "x": 34, "y": 21},
+
+ {"flags": 4, "matrix": [3, 4], "x": 17, "y": 32},
+ {"flags": 4, "matrix": [2, 4], "x": 17, "y": 43},
+ {"flags": 4, "matrix": [5, 4], "x": 17, "y": 11},
+ {"flags": 4, "matrix": [4, 4], "x": 17, "y": 21},
+
+ {"flags": 4, "matrix": [3, 5], "x": 0, "y": 32},
+ {"flags": 4, "matrix": [2, 5], "x": 0, "y": 43},
+ {"flags": 4, "matrix": [5, 5], "x": 0, "y": 11},
+ {"flags": 4, "matrix": [4, 5], "x": 0, "y": 21},
+
+ {"flags": 4, "matrix": [0, 3], "x": 86, "y": 53},
+ {"flags": 4, "matrix": [0, 2], "x": 103, "y": 53},
+ {"flags": 4, "matrix": [0, 1], "x": 103, "y": 64},
+ {"flags": 4, "matrix": [0, 7], "x": 69, "y": 53},
+ {"flags": 4, "matrix": [0, 6], "x": 69, "y": 64},
+ {"flags": 4, "matrix": [0, 5], "x": 86, "y": 64},
+
+
+ {"flags": 4, "matrix": [10, 0], "x": 138, "y": 32},
+ {"flags": 4, "matrix": [9, 0], "x": 138, "y": 43},
+ {"flags": 4, "matrix": [12, 0], "x": 138, "y": 11},
+ {"flags": 4, "matrix": [11, 0], "x": 138, "y": 21},
+
+ {"flags": 4, "matrix": [10, 1], "x": 155, "y": 32},
+ {"flags": 4, "matrix": [9, 1], "x": 155, "y": 43},
+ {"flags": 4, "matrix": [12, 1], "x": 155, "y": 11},
+ {"flags": 4, "matrix": [11, 1], "x": 155, "y": 21},
+
+ {"flags": 4, "matrix": [10, 2], "x": 172, "y": 32},
+ {"flags": 4, "matrix": [9, 2], "x": 172, "y": 43},
+ {"flags": 4, "matrix": [8, 2], "x": 172, "y": 53},
+ {"flags": 4, "matrix": [12, 2], "x": 172, "y": 11},
+ {"flags": 4, "matrix": [11, 2], "x": 172, "y": 21},
+
+ {"flags": 4, "matrix": [10, 3], "x": 190, "y": 32},
+ {"flags": 4, "matrix": [9, 3], "x": 190, "y": 43},
+ {"flags": 4, "matrix": [8, 3], "x": 190, "y": 53},
+ {"flags": 4, "matrix": [12, 3], "x": 190, "y": 11},
+ {"flags": 4, "matrix": [11, 3], "x": 190, "y": 21},
+
+ {"flags": 4, "matrix": [10, 4], "x": 207, "y": 32},
+ {"flags": 4, "matrix": [9, 4], "x": 207, "y": 43},
+ {"flags": 4, "matrix": [12, 4], "x": 207, "y": 11},
+ {"flags": 4, "matrix": [11, 4], "x": 207, "y": 21},
+
+ {"flags": 4, "matrix": [10, 5], "x": 224, "y": 32},
+ {"flags": 4, "matrix": [9, 5], "x": 224, "y": 43},
+ {"flags": 4, "matrix": [12, 5], "x": 224, "y": 11},
+ {"flags": 4, "matrix": [11, 5], "x": 224, "y": 21},
+
+ {"flags": 4, "matrix": [7, 3], "x": 138, "y": 53},
+ {"flags": 4, "matrix": [7, 2], "x": 121, "y": 53},
+ {"flags": 4, "matrix": [7, 1], "x": 121, "y": 64},
+ {"flags": 4, "matrix": [7, 7], "x": 138, "y": 64},
+ {"flags": 4, "matrix": [7, 6], "x": 155, "y": 64},
+ {"flags": 4, "matrix": [7, 5], "x": 155, "y": 53}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_manuform_num": {
+ "layout": [
+ { "matrix": [5, 5], "x": 0, "y": 0 },
+ { "matrix": [5, 4], "x": 1, "y": 0 },
+ { "matrix": [5, 3], "x": 2, "y": 0 },
+ { "matrix": [5, 2], "x": 3, "y": 0 },
+ { "matrix": [5, 1], "x": 4, "y": 0 },
+ { "matrix": [5, 0], "x": 5, "y": 0 },
+ { "matrix": [12, 0], "x": 11.5, "y": 0 },
+ { "matrix": [12, 1], "x": 12.5, "y": 0 },
+ { "matrix": [12, 2], "x": 13.5, "y": 0 },
+ { "matrix": [12, 3], "x": 14.5, "y": 0 },
+ { "matrix": [12, 4], "x": 15.5, "y": 0 },
+ { "matrix": [12, 5], "x": 16.5, "y": 0 },
+ { "matrix": [4, 5], "x": 0, "y": 1 },
+ { "matrix": [4, 4], "x": 1, "y": 1 },
+ { "matrix": [4, 3], "x": 2, "y": 1 },
+ { "matrix": [4, 2], "x": 3, "y": 1 },
+ { "matrix": [4, 1], "x": 4, "y": 1 },
+ { "matrix": [4, 0], "x": 5, "y": 1 },
+ { "matrix": [11, 0], "x": 10.5, "y": 1 },
+ { "matrix": [11, 1], "x": 11.5, "y": 1 },
+ { "matrix": [11, 2], "x": 12.5, "y": 1 },
+ { "matrix": [11, 3], "x": 13.5, "y": 1 },
+ { "matrix": [11, 4], "x": 14.5, "y": 1 },
+ { "matrix": [11, 5], "x": 15.5, "y": 1 },
+ { "matrix": [3, 5], "x": 0, "y": 2 },
+ { "matrix": [3, 4], "x": 1, "y": 2 },
+ { "matrix": [3, 3], "x": 2, "y": 2 },
+ { "matrix": [3, 2], "x": 3, "y": 2 },
+ { "matrix": [3, 1], "x": 4, "y": 2 },
+ { "matrix": [3, 0], "x": 5, "y": 2 },
+ { "matrix": [10, 0], "x": 10.5, "y": 2 },
+ { "matrix": [10, 1], "x": 11.5, "y": 2 },
+ { "matrix": [10, 2], "x": 12.5, "y": 2 },
+ { "matrix": [10, 3], "x": 13.5, "y": 2 },
+ { "matrix": [10, 4], "x": 14.5, "y": 2 },
+ { "matrix": [10, 5], "x": 15.5, "y": 2 },
+ { "matrix": [2, 5], "x": 0, "y": 3 },
+ { "matrix": [2, 4], "x": 1, "y": 3 },
+ { "matrix": [2, 3], "x": 2, "y": 3 },
+ { "matrix": [2, 2], "x": 3, "y": 3 },
+ { "matrix": [2, 1], "x": 4, "y": 3 },
+ { "matrix": [2, 0], "x": 5, "y": 3 },
+ { "matrix": [9, 0], "x": 10.5, "y": 3 },
+ { "matrix": [9, 1], "x": 11.5, "y": 3 },
+ { "matrix": [9, 2], "x": 12.5, "y": 3 },
+ { "matrix": [9, 3], "x": 13.5, "y": 3 },
+ { "matrix": [9, 4], "x": 14.5, "y": 3 },
+ { "matrix": [9, 5], "x": 15.5, "y": 3 },
+ { "matrix": [1, 3], "x": 2, "y": 3 },
+ { "matrix": [1, 2], "x": 3, "y": 3 },
+ { "matrix": [0, 7], "x": 4.5, "y": 3.5 },
+ { "matrix": [0, 3], "x": 5.5, "y": 3.5 },
+ { "matrix": [0, 2], "x": 6.5, "y": 4 },
+ { "matrix": [7, 2], "x": 10, "y": 4 },
+ { "matrix": [7, 3], "x": 11, "y": 3.5 },
+ { "matrix": [7, 7], "x": 12, "y": 3.5 },
+ { "matrix": [8, 2], "x": 13.5, "y": 3 },
+ { "matrix": [8, 3], "x": 14.5, "y": 3 },
+ { "matrix": [0, 6], "x": 6.5, "y": 5 },
+ { "matrix": [0, 5], "x": 7.5, "y": 5 },
+ { "matrix": [0, 1], "x": 7.5, "y": 4 },
+ { "matrix": [7, 1], "x": 9, "y": 4 },
+ { "matrix": [7, 5], "x": 9, "y": 5 },
+ { "matrix": [7, 6], "x": 10, "y": 5 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/cyboard/imprint/manuform_number_row/keymaps/vial/keymap.c b/keyboards/cyboard/imprint/manuform_number_row/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..8ac8b734c64
--- /dev/null
+++ b/keyboards/cyboard/imprint/manuform_number_row/keymaps/vial/keymap.c
@@ -0,0 +1,98 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_manuform_num(
+ KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_LGUI, KC_LALT, KC_LGUI, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, MO(1), KC_LBRC, KC_RBRC,
+ KC_HOME, KC_END, KC_ESC, KC_GRAVE, KC_CAPS, KC_APP
+ ),
+
+ [1] = LAYOUT_manuform_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_manuform_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_manuform_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_manuform_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_manuform_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_manuform_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_manuform_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_manuform_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_manuform_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/imprint/manuform_number_row/keymaps/vial/rules.mk b/keyboards/cyboard/imprint/manuform_number_row/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/imprint/manuform_number_row/keymaps/vial/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/imprint/manuform_number_row/keymaps/vial/vial.json b/keyboards/cyboard/imprint/manuform_number_row/keymaps/vial/vial.json
new file mode 100644
index 00000000000..3fab4f125e8
--- /dev/null
+++ b/keyboards/cyboard/imprint/manuform_number_row/keymaps/vial/vial.json
@@ -0,0 +1,133 @@
+{
+ "name": "Imprint Manuform",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 8
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "5,5",
+ "5,4",
+ "5,3",
+ "5,2",
+ "5,1",
+ "5,0",
+ {
+ "x": 5.5
+ },
+ "12,0",
+ "12,1",
+ "12,2",
+ "12,3",
+ "12,4",
+ "12,5"
+ ],
+ [
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ "4,0",
+ {
+ "x": 5.5
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5"
+ ],
+ [
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ "3,0",
+ {
+ "x": 5.5
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5"
+ ],
+ [
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ "2,0",
+ {
+ "x": 5.5
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "x": 2
+ },
+ "1,3",
+ "1,2",
+ {
+ "x": 9.5
+ },
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4.5
+ },
+ "0,7",
+ "0,3",
+ {
+ "x": 4.5
+ },
+ "7,3",
+ "7,7"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 6.5
+ },
+ "0,2",
+ "0,1",
+ {
+ "x": 0.5
+ },
+ "7,1",
+ "7,2"
+ ],
+ [
+ {
+ "x": 6.5
+ },
+ "0,6",
+ "0,5",
+ {
+ "x": 0.5
+ },
+ "7,5",
+ "7,6"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/imprint/manuform_number_row/rules.mk b/keyboards/cyboard/imprint/manuform_number_row/rules.mk
new file mode 100644
index 00000000000..e02abfc9b0e
--- /dev/null
+++ b/keyboards/cyboard/imprint/manuform_number_row/rules.mk
@@ -0,0 +1 @@
+
diff --git a/keyboards/cyboard/imprint/single_arc_number_row/info.json b/keyboards/cyboard/imprint/single_arc_number_row/info.json
new file mode 100644
index 00000000000..efe600dd665
--- /dev/null
+++ b/keyboards/cyboard/imprint/single_arc_number_row/info.json
@@ -0,0 +1,153 @@
+{
+ "rgb_matrix": {
+ "split_count": [29, 29],
+ "layout": [
+ {"flags": 4, "matrix": [3, 0], "x": 86, "y": 32},
+ {"flags": 4, "matrix": [2, 0], "x": 86, "y": 43},
+ {"flags": 4, "matrix": [5, 0], "x": 86, "y": 11},
+ {"flags": 4, "matrix": [4, 0], "x": 86, "y": 21},
+
+ {"flags": 4, "matrix": [3, 1], "x": 69, "y": 32},
+ {"flags": 4, "matrix": [2, 1], "x": 69, "y": 43},
+ {"flags": 4, "matrix": [5, 1], "x": 69, "y": 11},
+ {"flags": 4, "matrix": [4, 1], "x": 69, "y": 21},
+
+ {"flags": 4, "matrix": [3, 2], "x": 52, "y": 32},
+ {"flags": 4, "matrix": [2, 2], "x": 52, "y": 43},
+ {"flags": 4, "matrix": [1, 2], "x": 52, "y": 53},
+ {"flags": 4, "matrix": [5, 2], "x": 52, "y": 11},
+ {"flags": 4, "matrix": [4, 2], "x": 52, "y": 21},
+
+ {"flags": 4, "matrix": [3, 3], "x": 34, "y": 32},
+ {"flags": 4, "matrix": [2, 3], "x": 34, "y": 43},
+ {"flags": 4, "matrix": [1, 3], "x": 34, "y": 53},
+ {"flags": 4, "matrix": [5, 3], "x": 34, "y": 11},
+ {"flags": 4, "matrix": [4, 3], "x": 34, "y": 21},
+
+ {"flags": 4, "matrix": [3, 4], "x": 17, "y": 32},
+ {"flags": 4, "matrix": [2, 4], "x": 17, "y": 43},
+ {"flags": 4, "matrix": [5, 4], "x": 17, "y": 11},
+ {"flags": 4, "matrix": [4, 4], "x": 17, "y": 21},
+
+ {"flags": 4, "matrix": [3, 5], "x": 0, "y": 32},
+ {"flags": 4, "matrix": [2, 5], "x": 0, "y": 43},
+ {"flags": 4, "matrix": [5, 5], "x": 0, "y": 11},
+ {"flags": 4, "matrix": [4, 5], "x": 0, "y": 21},
+
+ {"flags": 4, "matrix": [0, 3], "x": 86, "y": 53},
+ {"flags": 4, "matrix": [0, 2], "x": 103, "y": 53},
+ {"flags": 4, "matrix": [0, 1], "x": 103, "y": 64},
+
+
+ {"flags": 4, "matrix": [10, 0], "x": 138, "y": 32},
+ {"flags": 4, "matrix": [9, 0], "x": 138, "y": 43},
+ {"flags": 4, "matrix": [12, 0], "x": 138, "y": 11},
+ {"flags": 4, "matrix": [11, 0], "x": 138, "y": 21},
+
+ {"flags": 4, "matrix": [10, 1], "x": 155, "y": 32},
+ {"flags": 4, "matrix": [9, 1], "x": 155, "y": 43},
+ {"flags": 4, "matrix": [12, 1], "x": 155, "y": 11},
+ {"flags": 4, "matrix": [11, 1], "x": 155, "y": 21},
+
+ {"flags": 4, "matrix": [10, 2], "x": 172, "y": 32},
+ {"flags": 4, "matrix": [9, 2], "x": 172, "y": 43},
+ {"flags": 4, "matrix": [8, 2], "x": 172, "y": 53},
+ {"flags": 4, "matrix": [12, 2], "x": 172, "y": 11},
+ {"flags": 4, "matrix": [11, 2], "x": 172, "y": 21},
+
+ {"flags": 4, "matrix": [10, 3], "x": 190, "y": 32},
+ {"flags": 4, "matrix": [9, 3], "x": 190, "y": 43},
+ {"flags": 4, "matrix": [8, 3], "x": 190, "y": 53},
+ {"flags": 4, "matrix": [12, 3], "x": 190, "y": 11},
+ {"flags": 4, "matrix": [11, 3], "x": 190, "y": 21},
+
+ {"flags": 4, "matrix": [10, 4], "x": 207, "y": 32},
+ {"flags": 4, "matrix": [9, 4], "x": 207, "y": 43},
+ {"flags": 4, "matrix": [12, 4], "x": 207, "y": 11},
+ {"flags": 4, "matrix": [11, 4], "x": 207, "y": 21},
+
+ {"flags": 4, "matrix": [10, 5], "x": 224, "y": 32},
+ {"flags": 4, "matrix": [9, 5], "x": 224, "y": 43},
+ {"flags": 4, "matrix": [12, 5], "x": 224, "y": 11},
+ {"flags": 4, "matrix": [11, 5], "x": 224, "y": 21},
+
+ {"flags": 4, "matrix": [7, 3], "x": 138, "y": 53},
+ {"flags": 4, "matrix": [7, 2], "x": 121, "y": 53},
+ {"flags": 4, "matrix": [7, 1], "x": 121, "y": 64}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_single_arc_num": {
+ "layout": [{ "matrix": [5, 5], "x": 0, "y": 0 },
+ { "matrix": [5, 4], "x": 1, "y": 0 },
+ { "matrix": [5, 3], "x": 2, "y": 0 },
+ { "matrix": [5, 2], "x": 3, "y": 0 },
+ { "matrix": [5, 1], "x": 4, "y": 0 },
+ { "matrix": [5, 0], "x": 5, "y": 0 },
+
+ { "matrix": [12, 0], "x": 11.5, "y": 0 },
+ { "matrix": [12, 1], "x": 12.5, "y": 0 },
+ { "matrix": [12, 2], "x": 13.5, "y": 0 },
+ { "matrix": [12, 3], "x": 14.5, "y": 0 },
+ { "matrix": [12, 4], "x": 15.5, "y": 0 },
+ { "matrix": [12, 5], "x": 16.5, "y": 0 },
+
+ { "matrix": [4, 5], "x": 0, "y": 1 },
+ { "matrix": [4, 4], "x": 1, "y": 1 },
+ { "matrix": [4, 3], "x": 2, "y": 1 },
+ { "matrix": [4, 2], "x": 3, "y": 1 },
+ { "matrix": [4, 1], "x": 4, "y": 1 },
+ { "matrix": [4, 0], "x": 5, "y": 1 },
+
+ { "matrix": [11, 0], "x": 10.5, "y": 1 },
+ { "matrix": [11, 1], "x": 11.5, "y": 1 },
+ { "matrix": [11, 2], "x": 12.5, "y": 1 },
+ { "matrix": [11, 3], "x": 13.5, "y": 1 },
+ { "matrix": [11, 4], "x": 14.5, "y": 1 },
+ { "matrix": [11, 5], "x": 15.5, "y": 1 },
+
+ { "matrix": [3, 5], "x": 0, "y": 2 },
+ { "matrix": [3, 4], "x": 1, "y": 2 },
+ { "matrix": [3, 3], "x": 2, "y": 2 },
+ { "matrix": [3, 2], "x": 3, "y": 2 },
+ { "matrix": [3, 1], "x": 4, "y": 2 },
+ { "matrix": [3, 0], "x": 5, "y": 2 },
+
+ { "matrix": [10, 0], "x": 10.5, "y": 2 },
+ { "matrix": [10, 1], "x": 11.5, "y": 2 },
+ { "matrix": [10, 2], "x": 12.5, "y": 2 },
+ { "matrix": [10, 3], "x": 13.5, "y": 2 },
+ { "matrix": [10, 4], "x": 14.5, "y": 2 },
+ { "matrix": [10, 5], "x": 15.5, "y": 2 },
+
+ { "matrix": [2, 5], "x": 0, "y": 3 },
+ { "matrix": [2, 4], "x": 1, "y": 3 },
+ { "matrix": [2, 3], "x": 2, "y": 3 },
+ { "matrix": [2, 2], "x": 3, "y": 3 },
+ { "matrix": [2, 1], "x": 4, "y": 3 },
+ { "matrix": [2, 0], "x": 5, "y": 3 },
+
+ { "matrix": [9, 0], "x": 10.5, "y": 3 },
+ { "matrix": [9, 1], "x": 11.5, "y": 3 },
+ { "matrix": [9, 2], "x": 12.5, "y": 3 },
+ { "matrix": [9, 3], "x": 13.5, "y": 3 },
+ { "matrix": [9, 4], "x": 14.5, "y": 3 },
+ { "matrix": [9, 5], "x": 15.5, "y": 3 },
+
+ { "matrix": [1, 3], "x": 2, "y": 3 },
+ { "matrix": [1, 2], "x": 3, "y": 3 },
+
+ { "matrix": [0, 3], "x": 4.5, "y": 3.5 },
+ { "matrix": [0, 2], "x": 5.5, "y": 3.5 },
+ { "matrix": [0, 1], "x": 6.5, "y": 4 },
+
+ { "matrix": [7, 1], "x": 10, "y": 4 },
+ { "matrix": [7, 2], "x": 11, "y": 3.5 },
+ { "matrix": [7, 3], "x": 12, "y": 3.5 },
+
+ { "matrix": [8, 2], "x": 13.5, "y": 3 },
+ { "matrix": [8, 3], "x": 14.5, "y": 3 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/cyboard/imprint/single_arc_number_row/keymaps/vial/keymap.c b/keyboards/cyboard/imprint/single_arc_number_row/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..a958ddb5f20
--- /dev/null
+++ b/keyboards/cyboard/imprint/single_arc_number_row/keymaps/vial/keymap.c
@@ -0,0 +1,88 @@
+/* Copyright 2024 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_single_arc_num(
+ KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 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_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_LGUI, KC_LALT, KC_LGUI, KC_ENT, KC_DEL, KC_BSPC, KC_SPC, MO(1), KC_LBRC, KC_RBRC
+ ),
+
+ [1] = LAYOUT_single_arc_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_single_arc_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_single_arc_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [4] = LAYOUT_single_arc_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_single_arc_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_single_arc_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_single_arc_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_single_arc_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_single_arc_num(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/imprint/single_arc_number_row/keymaps/vial/rules.mk b/keyboards/cyboard/imprint/single_arc_number_row/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..a4fbe60c24e
--- /dev/null
+++ b/keyboards/cyboard/imprint/single_arc_number_row/keymaps/vial/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/cyboard/imprint/single_arc_number_row/keymaps/vial/vial.json b/keyboards/cyboard/imprint/single_arc_number_row/keymaps/vial/vial.json
new file mode 100644
index 00000000000..ac903c9020d
--- /dev/null
+++ b/keyboards/cyboard/imprint/single_arc_number_row/keymaps/vial/vial.json
@@ -0,0 +1,110 @@
+{
+ "name": "Imprint",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 8
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "5,5",
+ "5,4",
+ "5,3",
+ "5,2",
+ "5,1",
+ "5,0",
+ {
+ "x": 5.5
+ },
+ "12,0",
+ "12,1",
+ "12,2",
+ "12,3",
+ "12,4",
+ "12,5"
+ ],
+ [
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ "4,0",
+ {
+ "x": 5.5
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5"
+ ],
+ [
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ "3,0",
+ {
+ "x": 5.5
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5"
+ ],
+ [
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ "2,0",
+ {
+ "x": 5.5
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "x": 2
+ },
+ "1,3",
+ "1,2",
+ {
+ "x": 9.5
+ },
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 5.5
+ },
+ "0,3",
+ "0,2",
+ "0,1",
+ {
+ "x": 0.5
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/imprint/single_arc_number_row/rules.mk b/keyboards/cyboard/imprint/single_arc_number_row/rules.mk
new file mode 100644
index 00000000000..e02abfc9b0e
--- /dev/null
+++ b/keyboards/cyboard/imprint/single_arc_number_row/rules.mk
@@ -0,0 +1 @@
+
diff --git a/keyboards/cyboard/imprint/tester/info.json b/keyboards/cyboard/imprint/tester/info.json
new file mode 100644
index 00000000000..4c141259b6a
--- /dev/null
+++ b/keyboards/cyboard/imprint/tester/info.json
@@ -0,0 +1,271 @@
+{
+ "keyboard_name": "FPC TESTER",
+ "rgb_matrix": {
+ "split_count": [56, 56],
+ "layout": [
+ {"flags": 4, "matrix": [3, 0], "x": 86, "y": 32},
+ {"flags": 4, "matrix": [2, 0], "x": 86, "y": 43},
+ {"flags": 4, "matrix": [1, 0], "x": 86, "y": 43},
+ {"flags": 4, "matrix": [6, 0], "x": 86, "y": 0},
+ {"flags": 4, "matrix": [5, 0], "x": 86, "y": 11},
+ {"flags": 4, "matrix": [4, 0], "x": 86, "y": 21},
+
+ {"flags": 4, "matrix": [3, 1], "x": 69, "y": 32},
+ {"flags": 4, "matrix": [2, 1], "x": 69, "y": 43},
+ {"flags": 4, "matrix": [1, 1], "x": 69, "y": 43},
+ {"flags": 4, "matrix": [6, 1], "x": 69, "y": 0},
+ {"flags": 4, "matrix": [5, 1], "x": 69, "y": 11},
+ {"flags": 4, "matrix": [4, 1], "x": 69, "y": 21},
+
+ {"flags": 4, "matrix": [3, 2], "x": 52, "y": 32},
+ {"flags": 4, "matrix": [2, 2], "x": 52, "y": 43},
+ {"flags": 4, "matrix": [1, 2], "x": 52, "y": 53},
+ {"flags": 4, "matrix": [6, 2], "x": 52, "y": 0},
+ {"flags": 4, "matrix": [5, 2], "x": 52, "y": 11},
+ {"flags": 4, "matrix": [4, 2], "x": 52, "y": 21},
+
+ {"flags": 4, "matrix": [3, 3], "x": 34, "y": 32},
+ {"flags": 4, "matrix": [2, 3], "x": 34, "y": 43},
+ {"flags": 4, "matrix": [1, 3], "x": 34, "y": 53},
+ {"flags": 4, "matrix": [6, 3], "x": 34, "y": 0},
+ {"flags": 4, "matrix": [5, 3], "x": 34, "y": 11},
+ {"flags": 4, "matrix": [4, 3], "x": 34, "y": 21},
+
+ {"flags": 4, "matrix": [3, 4], "x": 17, "y": 32},
+ {"flags": 4, "matrix": [2, 4], "x": 17, "y": 43},
+ {"flags": 4, "matrix": [1, 4], "x": 17, "y": 53},
+ {"flags": 4, "matrix": [6, 4], "x": 17, "y": 0},
+ {"flags": 4, "matrix": [5, 4], "x": 17, "y": 11},
+ {"flags": 4, "matrix": [4, 4], "x": 17, "y": 21},
+
+ {"flags": 4, "matrix": [3, 5], "x": 0, "y": 32},
+ {"flags": 4, "matrix": [2, 5], "x": 0, "y": 43},
+ {"flags": 4, "matrix": [1, 5], "x": 0, "y": 53},
+ {"flags": 4, "matrix": [6, 5], "x": 0, "y": 0},
+ {"flags": 4, "matrix": [5, 5], "x": 0, "y": 11},
+ {"flags": 4, "matrix": [4, 5], "x": 0, "y": 21},
+
+ {"flags": 4, "matrix": [3, 6], "x": 0, "y": 32},
+ {"flags": 4, "matrix": [2, 6], "x": 0, "y": 43},
+ {"flags": 4, "matrix": [1, 6], "x": 0, "y": 53},
+ {"flags": 4, "matrix": [6, 6], "x": 0, "y": 0},
+ {"flags": 4, "matrix": [5, 6], "x": 0, "y": 11},
+ {"flags": 4, "matrix": [4, 6], "x": 0, "y": 21},
+
+ {"flags": 4, "matrix": [3, 7], "x": 0, "y": 32},
+ {"flags": 4, "matrix": [2, 7], "x": 0, "y": 43},
+ {"flags": 4, "matrix": [1, 7], "x": 0, "y": 53},
+ {"flags": 4, "matrix": [6, 7], "x": 0, "y": 0},
+ {"flags": 4, "matrix": [5, 7], "x": 0, "y": 11},
+ {"flags": 4, "matrix": [4, 7], "x": 0, "y": 21},
+
+ {"flags": 4, "matrix": [0, 3], "x": 86, "y": 53},
+ {"flags": 4, "matrix": [0, 2], "x": 103, "y": 53},
+ {"flags": 4, "matrix": [0, 1], "x": 103, "y": 64},
+ {"flags": 4, "matrix": [0, 0], "x": 103, "y": 64},
+ {"flags": 4, "matrix": [0, 7], "x": 69, "y": 53},
+ {"flags": 4, "matrix": [0, 6], "x": 69, "y": 64},
+ {"flags": 4, "matrix": [0, 5], "x": 86, "y": 64},
+ {"flags": 4, "matrix": [0, 4], "x": 86, "y": 64},
+
+
+ {"flags": 4, "matrix": [10, 0], "x": 138, "y": 32},
+ {"flags": 4, "matrix": [9, 0], "x": 138, "y": 43},
+ {"flags": 4, "matrix": [8, 0], "x": 138, "y": 43},
+ {"flags": 4, "matrix": [13, 0], "x": 138, "y": 0},
+ {"flags": 4, "matrix": [12, 0], "x": 138, "y": 11},
+ {"flags": 4, "matrix": [11, 0], "x": 138, "y": 21},
+
+ {"flags": 4, "matrix": [10, 1], "x": 155, "y": 32},
+ {"flags": 4, "matrix": [9, 1], "x": 155, "y": 43},
+ {"flags": 4, "matrix": [8, 1], "x": 155, "y": 43},
+ {"flags": 4, "matrix": [13, 1], "x": 155, "y": 0},
+ {"flags": 4, "matrix": [12, 1], "x": 155, "y": 11},
+ {"flags": 4, "matrix": [11, 1], "x": 155, "y": 21},
+
+ {"flags": 4, "matrix": [10, 2], "x": 172, "y": 32},
+ {"flags": 4, "matrix": [9, 2], "x": 172, "y": 43},
+ {"flags": 4, "matrix": [8, 2], "x": 172, "y": 53},
+ {"flags": 4, "matrix": [13, 2], "x": 172, "y": 0},
+ {"flags": 4, "matrix": [12, 2], "x": 172, "y": 11},
+ {"flags": 4, "matrix": [11, 2], "x": 172, "y": 21},
+
+ {"flags": 4, "matrix": [10, 3], "x": 190, "y": 32},
+ {"flags": 4, "matrix": [9, 3], "x": 190, "y": 43},
+ {"flags": 4, "matrix": [8, 3], "x": 190, "y": 53},
+ {"flags": 4, "matrix": [13, 3], "x": 190, "y": 0},
+ {"flags": 4, "matrix": [12, 3], "x": 190, "y": 11},
+ {"flags": 4, "matrix": [11, 3], "x": 190, "y": 21},
+
+ {"flags": 4, "matrix": [10, 4], "x": 207, "y": 32},
+ {"flags": 4, "matrix": [9, 4], "x": 207, "y": 43},
+ {"flags": 4, "matrix": [8, 4], "x": 207, "y": 53},
+ {"flags": 4, "matrix": [13, 4], "x": 207, "y": 0},
+ {"flags": 4, "matrix": [12, 4], "x": 207, "y": 11},
+ {"flags": 4, "matrix": [11, 4], "x": 207, "y": 21},
+
+ {"flags": 4, "matrix": [10, 5], "x": 224, "y": 32},
+ {"flags": 4, "matrix": [9, 5], "x": 224, "y": 43},
+ {"flags": 4, "matrix": [8, 5], "x": 224, "y": 53},
+ {"flags": 4, "matrix": [13, 5], "x": 224, "y": 0},
+ {"flags": 4, "matrix": [12, 5], "x": 224, "y": 11},
+ {"flags": 4, "matrix": [11, 5], "x": 224, "y": 21},
+
+ {"flags": 4, "matrix": [10, 6], "x": 224, "y": 32},
+ {"flags": 4, "matrix": [9, 6], "x": 224, "y": 43},
+ {"flags": 4, "matrix": [8, 6], "x": 224, "y": 53},
+ {"flags": 4, "matrix": [13, 6], "x": 224, "y": 0},
+ {"flags": 4, "matrix": [12, 6], "x": 224, "y": 11},
+ {"flags": 4, "matrix": [11, 6], "x": 224, "y": 21},
+
+ {"flags": 4, "matrix": [10, 7], "x": 224, "y": 32},
+ {"flags": 4, "matrix": [9, 7], "x": 224, "y": 43},
+ {"flags": 4, "matrix": [8, 7], "x": 224, "y": 53},
+ {"flags": 4, "matrix": [13, 7], "x": 224, "y": 0},
+ {"flags": 4, "matrix": [12, 7], "x": 224, "y": 11},
+ {"flags": 4, "matrix": [11, 7], "x": 224, "y": 21},
+
+ {"flags": 4, "matrix": [7, 3], "x": 138, "y": 53},
+ {"flags": 4, "matrix": [7, 2], "x": 121, "y": 53},
+ {"flags": 4, "matrix": [7, 1], "x": 121, "y": 64},
+ {"flags": 4, "matrix": [7, 0], "x": 121, "y": 64},
+ {"flags": 4, "matrix": [7, 7], "x": 138, "y": 64},
+ {"flags": 4, "matrix": [7, 6], "x": 155, "y": 64},
+ {"flags": 4, "matrix": [7, 5], "x": 155, "y": 53},
+ {"flags": 4, "matrix": [7, 4], "x": 155, "y": 53}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_tester": {
+ "layout": [
+ { "matrix": [6, 7], "x": 0, "y": 0 },
+ { "matrix": [6, 6], "x": 0, "y": 0 },
+ { "matrix": [6, 5], "x": 0, "y": 0 },
+ { "matrix": [6, 4], "x": 1, "y": 0 },
+ { "matrix": [6, 3], "x": 2, "y": 0 },
+ { "matrix": [6, 2], "x": 3, "y": 0 },
+ { "matrix": [6, 1], "x": 4, "y": 0 },
+ { "matrix": [6, 0], "x": 5, "y": 0 },
+
+ { "matrix": [13, 0], "x": 11.5, "y": 0 },
+ { "matrix": [13, 1], "x": 12.5, "y": 0 },
+ { "matrix": [13, 2], "x": 13.5, "y": 0 },
+ { "matrix": [13, 3], "x": 14.5, "y": 0 },
+ { "matrix": [13, 4], "x": 15.5, "y": 0 },
+ { "matrix": [13, 5], "x": 16.5, "y": 0 },
+ { "matrix": [13, 6], "x": 16.5, "y": 0 },
+ { "matrix": [13, 7], "x": 16.5, "y": 0 },
+
+ { "matrix": [5, 7], "x": 0, "y": 0 },
+ { "matrix": [5, 6], "x": 1, "y": 0 },
+ { "matrix": [5, 5], "x": 0, "y": 0 },
+ { "matrix": [5, 4], "x": 1, "y": 0 },
+ { "matrix": [5, 3], "x": 2, "y": 0 },
+ { "matrix": [5, 2], "x": 3, "y": 0 },
+ { "matrix": [5, 1], "x": 4, "y": 0 },
+ { "matrix": [5, 0], "x": 5, "y": 0 },
+
+ { "matrix": [12, 0], "x": 11.5, "y": 0 },
+ { "matrix": [12, 1], "x": 12.5, "y": 0 },
+ { "matrix": [12, 2], "x": 13.5, "y": 0 },
+ { "matrix": [12, 3], "x": 14.5, "y": 0 },
+ { "matrix": [12, 4], "x": 15.5, "y": 0 },
+ { "matrix": [12, 5], "x": 16.5, "y": 0 },
+ { "matrix": [12, 6], "x": 15.5, "y": 0 },
+ { "matrix": [12, 7], "x": 16.5, "y": 0 },
+
+ { "matrix": [4, 7], "x": 0, "y": 1 },
+ { "matrix": [4, 6], "x": 1, "y": 1 },
+ { "matrix": [4, 5], "x": 0, "y": 1 },
+ { "matrix": [4, 4], "x": 1, "y": 1 },
+ { "matrix": [4, 3], "x": 2, "y": 1 },
+ { "matrix": [4, 2], "x": 3, "y": 1 },
+ { "matrix": [4, 1], "x": 4, "y": 1 },
+ { "matrix": [4, 0], "x": 5, "y": 1 },
+
+ { "matrix": [11, 0], "x": 10.5, "y": 1 },
+ { "matrix": [11, 1], "x": 11.5, "y": 1 },
+ { "matrix": [11, 2], "x": 12.5, "y": 1 },
+ { "matrix": [11, 3], "x": 13.5, "y": 1 },
+ { "matrix": [11, 4], "x": 14.5, "y": 1 },
+ { "matrix": [11, 5], "x": 15.5, "y": 1 },
+ { "matrix": [11, 6], "x": 14.5, "y": 1 },
+ { "matrix": [11, 7], "x": 15.5, "y": 1 },
+
+ { "matrix": [3, 7], "x": 0, "y": 2 },
+ { "matrix": [3, 6], "x": 1, "y": 2 },
+ { "matrix": [3, 5], "x": 0, "y": 2 },
+ { "matrix": [3, 4], "x": 1, "y": 2 },
+ { "matrix": [3, 3], "x": 2, "y": 2 },
+ { "matrix": [3, 2], "x": 3, "y": 2 },
+ { "matrix": [3, 1], "x": 4, "y": 2 },
+ { "matrix": [3, 0], "x": 5, "y": 2 },
+
+ { "matrix": [10, 0], "x": 10.5, "y": 2 },
+ { "matrix": [10, 1], "x": 11.5, "y": 2 },
+ { "matrix": [10, 2], "x": 12.5, "y": 2 },
+ { "matrix": [10, 3], "x": 13.5, "y": 2 },
+ { "matrix": [10, 4], "x": 14.5, "y": 2 },
+ { "matrix": [10, 5], "x": 15.5, "y": 2 },
+ { "matrix": [10, 6], "x": 14.5, "y": 2 },
+ { "matrix": [10, 7], "x": 15.5, "y": 2 },
+
+ { "matrix": [2, 7], "x": 0, "y": 3 },
+ { "matrix": [2, 6], "x": 1, "y": 3 },
+ { "matrix": [2, 5], "x": 0, "y": 3 },
+ { "matrix": [2, 4], "x": 1, "y": 3 },
+ { "matrix": [2, 3], "x": 2, "y": 3 },
+ { "matrix": [2, 2], "x": 3, "y": 3 },
+ { "matrix": [2, 1], "x": 4, "y": 3 },
+ { "matrix": [2, 0], "x": 5, "y": 3 },
+
+ { "matrix": [9, 0], "x": 10.5, "y": 3 },
+ { "matrix": [9, 1], "x": 11.5, "y": 3 },
+ { "matrix": [9, 2], "x": 12.5, "y": 3 },
+ { "matrix": [9, 3], "x": 13.5, "y": 3 },
+ { "matrix": [9, 4], "x": 14.5, "y": 3 },
+ { "matrix": [9, 5], "x": 15.5, "y": 3 },
+ { "matrix": [9, 6], "x": 14.5, "y": 3 },
+ { "matrix": [9, 7], "x": 15.5, "y": 3 },
+
+ { "matrix": [1, 7], "x": 0, "y": 3 },
+ { "matrix": [1, 6], "x": 1, "y": 3 },
+ { "matrix": [1, 5], "x": 0, "y": 3 },
+ { "matrix": [1, 4], "x": 1, "y": 3 },
+ { "matrix": [1, 3], "x": 2, "y": 3 },
+ { "matrix": [1, 2], "x": 3, "y": 3 },
+ { "matrix": [1, 1], "x": 2, "y": 3 },
+ { "matrix": [1, 0], "x": 3, "y": 3 },
+
+ { "matrix": [0, 3], "x": 4.5, "y": 3.5 },
+ { "matrix": [0, 2], "x": 5.5, "y": 3.5 },
+ { "matrix": [0, 1], "x": 6.5, "y": 4 },
+ { "matrix": [0, 0], "x": 6.5, "y": 4 },
+
+ { "matrix": [7, 0], "x": 10, "y": 4 },
+ { "matrix": [7, 1], "x": 10, "y": 4 },
+ { "matrix": [7, 2], "x": 11, "y": 3.5 },
+ { "matrix": [7, 3], "x": 12, "y": 3.5 },
+
+ { "matrix": [8, 0], "x": 13.5, "y": 3 },
+ { "matrix": [8, 1], "x": 14.5, "y": 3 },
+ { "matrix": [8, 2], "x": 13.5, "y": 3 },
+ { "matrix": [8, 3], "x": 14.5, "y": 3 },
+ { "matrix": [8, 4], "x": 15.5, "y": 3 },
+ { "matrix": [8, 5], "x": 16.5, "y": 3 },
+ { "matrix": [8, 6], "x": 15.5, "y": 3 },
+ { "matrix": [8, 7], "x": 16.5, "y": 3 },
+
+ { "matrix": [0, 7], "x": 6.5, "y": 5 },
+ { "matrix": [0, 6], "x": 7.5, "y": 5 },
+ { "matrix": [0, 5], "x": 7.5, "y": 4 },
+ { "matrix": [0, 4], "x": 7.5, "y": 4 },
+
+ { "matrix": [7, 4], "x": 9, "y": 4 },
+ { "matrix": [7, 5], "x": 9, "y": 4 },
+ { "matrix": [7, 6], "x": 9, "y": 5 },
+ { "matrix": [7, 7], "x": 10, "y": 5 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/cyboard/imprint/tester/keymaps/vial/keymap.c b/keyboards/cyboard/imprint/tester/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..31e3908aaa5
--- /dev/null
+++ b/keyboards/cyboard/imprint/tester/keymaps/vial/keymap.c
@@ -0,0 +1,30 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_tester(
+ KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC,
+ KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC,
+ KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC,
+ KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC,
+ KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC,
+ KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC,
+ KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC,
+ KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC
+ ),
+
+ [1] = LAYOUT_tester(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cyboard/imprint/tester/keymaps/vial/rules.mk b/keyboards/cyboard/imprint/tester/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..89616e3a363
--- /dev/null
+++ b/keyboards/cyboard/imprint/tester/keymaps/vial/rules.mk
@@ -0,0 +1,10 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
+
+VIAL_INSECURE = yes
diff --git a/keyboards/cyboard/imprint/tester/keymaps/vial/vial.json b/keyboards/cyboard/imprint/tester/keymaps/vial/vial.json
new file mode 100644
index 00000000000..830e758aa88
--- /dev/null
+++ b/keyboards/cyboard/imprint/tester/keymaps/vial/vial.json
@@ -0,0 +1,174 @@
+{
+ "name": "TESTER",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 8
+ },
+ "layouts": {
+ "keymap":
+[
+ [
+ "6,7",
+ "6,6",
+ "6,5",
+ "6,4",
+ "6,3",
+ "6,2",
+ "6,1",
+ "6,0",
+ {
+ "x": 1
+ },
+ "13,0",
+ "13,1",
+ "13,2",
+ "13,3",
+ "13,4",
+ "13,5",
+ "13,6",
+ "13,7"
+ ],
+ [
+ "5,7",
+ "5,6",
+ "5,5",
+ "5,4",
+ "5,3",
+ "5,2",
+ "5,1",
+ "5,0",
+ {
+ "x": 1
+ },
+ "12,0",
+ "12,1",
+ "12,2",
+ "12,3",
+ "12,4",
+ "12,5",
+ "12,6",
+ "12,7"
+ ],
+ [
+ "4,7",
+ "4,6",
+ "4,5",
+ "4,4",
+ "4,3",
+ "4,2",
+ "4,1",
+ "4,0",
+ {
+ "x": 1
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4",
+ "11,5",
+ "11,6",
+ "11,7"
+ ],
+ [
+ "3,7",
+ "3,6",
+ "3,5",
+ "3,4",
+ "3,3",
+ "3,2",
+ "3,1",
+ "3,0",
+ {
+ "x": 1
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4",
+ "10,5",
+ "10,6",
+ "10,7"
+ ],
+ [
+ "2,7",
+ "2,6",
+ "2,5",
+ "2,4",
+ "2,3",
+ "2,2",
+ "2,1",
+ "2,0",
+ {
+ "x": 1
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4",
+ "9,5",
+ "9,6",
+ "9,7"
+ ],
+ [
+ "1,7",
+ "1,6",
+ "1,5",
+ "1,4",
+ "1,3",
+ "1,2",
+ "1,1",
+ "1,0",
+ {
+ "x": 1
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3",
+ "8,4",
+ "8,5",
+ "8,6",
+ "8,7"
+ ],
+ [
+ {
+ "y": 0.5,
+ "x": 4
+ },
+ "0,3",
+ "0,2",
+ "0,1",
+ "0,0",
+ {
+ "x": 1
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "x": 4
+ },
+ "0,7",
+ "0,6",
+ "0,5",
+ "0,4",
+ {
+ "x": 1
+ },
+ "7,4",
+ "7,5",
+ "7,6",
+ "7,7"
+ ]
+]
+ }
+}
diff --git a/keyboards/cyboard/imprint/tester/rules.mk b/keyboards/cyboard/imprint/tester/rules.mk
new file mode 100644
index 00000000000..e02abfc9b0e
--- /dev/null
+++ b/keyboards/cyboard/imprint/tester/rules.mk
@@ -0,0 +1 @@
+
diff --git a/keyboards/cyboard/info.json b/keyboards/cyboard/info.json
new file mode 100644
index 00000000000..3ca91d133ee
--- /dev/null
+++ b/keyboards/cyboard/info.json
@@ -0,0 +1,78 @@
+{
+ "manufacturer": "Cyboard",
+ "maintainer": "@Cyboard-DigitalTailor",
+ "url": "https://cyboard.digital",
+ "usb": {
+ "vid": "0x4359",
+ "pid": "0x0000",
+ "device_version": "0.2.0"
+ },
+ "processor": "RP2040",
+ "bootloader": "rp2040",
+ "diode_direction": "ROW2COL",
+ "matrix_pins": {
+ "rows": ["GP2", "GP3", "GP8", "GP4", "GP13", "GP9", "GP14"],
+ "cols": ["GP1", "GP10", "GP11", "GP12", "GP7", "GP6", "GP5", "GP19"]
+ },
+ "split": {
+ "enabled": true
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
+ "ws2812": {
+ "pin": "GP15",
+ "driver": "vendor"
+ },
+ "rgb_matrix": {
+ "driver": "ws2812",
+ "max_brightness": 120,
+ "animations": {
+ "alpha_mods": true,
+ "breathing": true,
+ "colorband_pinwheel_sat": true,
+ "colorband_pinwheel_val": true,
+ "colorband_sat": true,
+ "colorband_spiral_sat": true,
+ "colorband_spiral_val": true,
+ "colorband_val": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_out_in": true,
+ "cycle_out_in_dual": true,
+ "cycle_pinwheel": true,
+ "cycle_spiral": true,
+ "cycle_up_down": true,
+ "digital_rain": true,
+ "dual_beacon": true,
+ "gradient_left_right": true,
+ "gradient_up_down": true,
+ "hue_breathing": true,
+ "hue_pendulum": true,
+ "hue_wave": true,
+ "jellybean_raindrops": true,
+ "pixel_flow": true,
+ "pixel_fractal": true,
+ "pixel_rain": true,
+ "rainbow_beacon": true,
+ "rainbow_moving_chevron": true,
+ "rainbow_pinwheels": true,
+ "raindrops": true,
+ "solid_color": true,
+ "solid_reactive": true,
+ "solid_reactive_cross": true,
+ "solid_reactive_nexus": true,
+ "solid_reactive_simple": true,
+ "solid_reactive_wide": true,
+ "solid_splash": true,
+ "splash": true,
+ "typing_heatmap": true
+ }
+ }
+}
diff --git a/keyboards/cyboard/readme.md b/keyboards/cyboard/readme.md
new file mode 100644
index 00000000000..c17b0d2b7af
--- /dev/null
+++ b/keyboards/cyboard/readme.md
@@ -0,0 +1,26 @@
+# Cyboard
+
+* Keyboard Maintainer: [Cyboard](https://github.com/Cyboard-DigitalTailor)
+* Hardware Supported: Cyboard Imprints and Dactyls
+* Hardware Availability: [Imprint](https://www.cyboard.digital/product-page/imprint), [Dactyl](https://www.cyboard.digital/product-page/custom-dactyl-manuform)
+
+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).
+
+## Building Firmware
+
+Various sizes and thumb-cluster styles are supported as keymaps. To build the firmware, use the command:
+`make cyboard/{MODEL}/{THUMB STYLE}_{ROWS}:vial`
+where `{MODEL}` can be `imprint` or `dactyl`
+, `{THUMB STYLE}` can be `imprint`, `manuform`, `dual_arcs`, or `single_arc`
+, and `{ROWS}` can be `function_row`, `number_row`, or `letters_only`
+
+## Flashing
+
+Note: If you've already made changes with Vial, open the Vial app first, and save your layout `File -> Save Current Layout (Ctrl + S)`. Then you can load it after you complete the firmware update.
+
+To flash the firmware to your Cyboard,
+1. Enter the bootloader by double-tapping the reset button on the back of the board.
+2. A USB device called `RPI-RP2` should appear on your computer.
+3. Drag the `.uf2` firmware file into `RPI-RP2`. `RPI-RP2` should now disappear.
+4. Repeat steps 1-3 on the other half. Note: there is a rubber plug in the right-hand USB-C-to-computer port by default. Remove that and use that port for flashing. The split connection USB-C port will not be able to flash.
+Your Cyboard is now ready to use with your new firmware!
diff --git a/keyboards/cyboard/rules.mk b/keyboards/cyboard/rules.mk
new file mode 100644
index 00000000000..0efffe4460e
--- /dev/null
+++ b/keyboards/cyboard/rules.mk
@@ -0,0 +1,6 @@
+SERIAL_DRIVER = vendor
+
+POINTING_DEVICE_ENABLE = yes
+POINTING_DEVICE_DRIVER = pmw3360
+
+CONSOLE_ENABLE = yes
diff --git a/keyboards/handwired/wylderbuilds/3x5_2/3x5_2.c b/keyboards/handwired/wylderbuilds/3x5_2/3x5_2.c
new file mode 100644
index 00000000000..7ad8e52b7eb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_2/3x5_2.c
@@ -0,0 +1,66 @@
+/*
+Copyright 2021 @dlford
+
+This 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 "3x5_2.h"
+
+#ifdef RGB_MATRIX_ENABLE
+
+// LED Layout
+// Columns
+// 0 1 2 3 4 5 6 7 8 9 10 11
+// Physical (Center: 133)
+// 20 41 61 81 102 122 143 163 183 204 224 244
+// Rows Physical (Center: 54)
+// 17 12 11 06 05 23 24 29 30 35 0 21
+// 16 13 10 07 04 22 25 28 31 34 1 43
+// 15 14 09 08 03 21 26 27 32 33 2 64
+// 02 01 00 18 19 20 3 85
+
+led_config_t g_led_config = { {
+ // Key matrix to LED index
+ // Left 1-18
+ {17, 12, 11, 6, 5},
+ {16, 13, 10, 7, 4},
+ {15, 14, 9, 8, 3},
+ {NO_LED, NO_LED, 2, 1, 0},
+ // Right 1-18
+ {23, 24, 29, 30, 35},
+ {22, 25, 28, 31, 34},
+ {21, 26, 27, 32, 33},
+ {18, 19, 20, NO_LED, NO_LED},
+}, {
+ // LED index to physical position
+ // Left 1-18
+ {122,85},{102,85},{81,85},{102,64},{102,43},{102,21},
+ {81,21},{81,43},{81,64},{61,64},{61,43},{61,21},
+ {41,21},{41,43},{41,64},{20,64},{20,43},{20,21},
+ // Right 1-18
+ {143,85},{163,85},{183,85},{163,64},{163,43},{163,21},
+ {183,21},{183,43},{183,64},{204,64},{204,43},{204,21},
+ {224,21},{224,43},{224,64},{244,64},{244,43},{244,21}
+}, {
+ // LED index to flag
+ // Left 1-18
+ 4,4,4,4,4,4,
+ 4,4,4,4,4,4,
+ 4,4,4,4,4,4,
+ // Right 1-18
+ 4,4,4,4,4,4,
+ 4,4,4,4,4,4,
+ 4,4,4,4,4,4
+} };
+
+#endif
diff --git a/keyboards/handwired/wylderbuilds/3x5_2/3x5_2.h b/keyboards/handwired/wylderbuilds/3x5_2/3x5_2.h
new file mode 100644
index 00000000000..8013a187991
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_2/3x5_2.h
@@ -0,0 +1,38 @@
+/*
+Copyright 2021 @dlford
+
+This 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_split_3x5_2( \
+ L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \
+ L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \
+ L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \
+ L33, L34, R30, R31 \
+) { \
+ { L00, L01, L02, L03, L04 }, \
+ { L10, L11, L12, L13, L14 }, \
+ { L20, L21, L22, L23, L24 }, \
+ { XXX, XXX, XXX, L33, L34 }, \
+ { R00, R01, R02, R03, R04 }, \
+ { R10, R11, R12, R13, R14 }, \
+ { R20, R21, R22, R23, R24 }, \
+ { R30, R31, XXX, XXX, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/3x5_2/config.h b/keyboards/handwired/wylderbuilds/3x5_2/config.h
new file mode 100644
index 00000000000..c7a0303ce2f
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_2/config.h
@@ -0,0 +1,63 @@
+/*
+Copyright 2012 Jun Wako
+Copyright 2015 Jack Humbert
+Copyright 2021 @dlford
+This 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"
+
+// Communication
+// #define USE_I2C
+#define USE_SERIAL
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+#define SERIAL_USART_PIN_SWAP
+
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+//#define SPLIT_HAND_PIN_LOW_IS_LEFT
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 5
+
+// wiring of each half
+#define MATRIX_COL_PINS { GP3, GP4, GP5, GP6, GP7}
+#define MATRIX_ROW_PINS { GP10, GP11, GP12, GP13 }
+
+#define DIODE_DIRECTION COL2ROW
+
+// WS2812 RGB LED strip input and number of LEDs
+//#define RGB_DI_PIN D3
+//#define DRIVER_LED_TOTAL 36
+//#define RGB_MATRIX_SPLIT { 18, 18 }
+//#define RGB_MATRIX_CENTER { 133, 54 }
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+//#undef LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_SUPPORT_ENABLE
+// Locking resynchronize hack
+#define LOCKING_RESYNC_ENABLE
+// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
diff --git a/keyboards/handwired/wylderbuilds/3x5_2/info.json b/keyboards/handwired/wylderbuilds/3x5_2/info.json
new file mode 100644
index 00000000000..330b3ce96f3
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_2/info.json
@@ -0,0 +1,194 @@
+{
+ "keyboard_name": "Dactyl Minidox (3x5+2)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0031",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 8,
+ "cols": 5
+ },
+ "layouts": {
+ "LAYOUT_split_3x5_2": {
+ "layout": [
+ {
+ "label": "0,1",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,2",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,3",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "4,0",
+ "x": 11,
+ "y": 0
+ },
+ {
+ "label": "4,1",
+ "x": 12,
+ "y": 0
+ },
+ {
+ "label": "4,2",
+ "x": 13,
+ "y": 0
+ },
+ {
+ "label": "4,3",
+ "x": 14,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "4,4",
+ "x": 15,
+ "y": 0.5
+ },
+ {
+ "label": "1,1",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,2",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,3",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "5,0",
+ "x": 11,
+ "y": 1
+ },
+ {
+ "label": "5,1",
+ "x": 12,
+ "y": 1
+ },
+ {
+ "label": "5,2",
+ "x": 13,
+ "y": 1
+ },
+ {
+ "label": "5,3",
+ "x": 14,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "5,4",
+ "x": 15,
+ "y": 1.5
+ },
+ {
+ "label": "2,1",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,2",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,3",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "6,0",
+ "x": 11,
+ "y": 2
+ },
+ {
+ "label": "6,1",
+ "x": 12,
+ "y": 2
+ },
+ {
+ "label": "6,2",
+ "x": 13,
+ "y": 2
+ },
+ {
+ "label": "6,3",
+ "x": 14,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "6,4",
+ "x": 15,
+ "y": 2.5
+ },
+ {
+ "label": "3,3",
+ "x": 7.25,
+ "y": 1.5
+ },
+ {
+ "label": "3,4",
+ "x": 8.25,
+ "y": 1.5
+ },
+ {
+ "label": "7,0",
+ "x": 8,
+ "y": 6.15
+ },
+ {
+ "label": "7,1",
+ "x": 9,
+ "y": 6.15
+ }
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/wylderbuilds/3x5_2/keymaps/default/keymap.c b/keyboards/handwired/wylderbuilds/3x5_2/keymaps/default/keymap.c
new file mode 100644
index 00000000000..abd64335581
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_2/keymaps/default/keymap.c
@@ -0,0 +1,26 @@
+// Copyright 2022 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐
+ * │ 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 │ , │ . │ / │
+ * └───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘
+ * ┌───┐ ┌───┐
+ * │GUI├───┐ ┌───┤Alt│
+ * └───┤Bsp├───┐ ┌───┤Ent├───┘
+ * └───┤ │ │ ├───┘
+ * └───┘ └───┘
+ */
+ [0] = LAYOUT_split_3x5_3(
+ 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_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/handwired/wylderbuilds/3x5_2/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/3x5_2/keymaps/vial/config.h
new file mode 100644
index 00000000000..8edcf6834f3
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_2/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x5A, 0x0A, 0x23, 0x92, 0x71, 0xF2, 0x5B, 0x92}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 3 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 3 }
diff --git a/keyboards/handwired/wylderbuilds/3x5_2/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/3x5_2/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..7020bb940f2
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_2/keymaps/vial/keymap.c
@@ -0,0 +1,49 @@
+#include QMK_KEYBOARD_H
+
+#define _BASE 0
+#define _RAISE 1
+#define _LOWER 2
+
+#define SFT_ESC SFT_T(KC_ESC)
+#define CTL_BSPC CTL_T(KC_BSPC)
+#define ALT_SPC ALT_T(KC_SPC)
+#define SFT_ENT SFT_T(KC_ENT)
+
+#define KC_ML KC_MS_LEFT
+#define KC_MR KC_MS_RIGHT
+#define KC_MU KC_MS_UP
+#define KC_MD KC_MS_DOWN
+#define KC_MB1 KC_MS_BTN1
+#define KC_MB2 KC_MS_BTN2
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+#define ____ KC_TRANSPARENT
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_split_3x5_2(
+ 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_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ RAISE, KC_SPC, KC_ENT, LOWER
+ ),
+ [_RAISE] = LAYOUT_split_3x5_2(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ S(KC_9), S(KC_0), KC_LCBR, KC_RCBR, KC_EQL, KC_MINS, KC_4, KC_5, KC_6, KC_QUOT,
+ QK_RBT, QK_BOOT, KC_LBRC, KC_RBRC, ____, ____, KC_1, KC_2, KC_3, ____,
+ ____, ____, ____, ____
+ ),
+
+ [_LOWER] = LAYOUT_split_3x5_2(
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
+ S(KC_9), S(KC_0), KC_LBRC, KC_RBRC,KC_EQL, ____, KC_MINS, KC_EQL, KC_PIPE, QK_BOOT,
+ ____, ____, ____, ____, ____, ____, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
+ ____, ____, ____, ____
+
+ )
+};
+void persistent_default_layer_set(uint16_t default_layer) {
+ eeconfig_update_default_layer(default_layer);
+ default_layer_set(default_layer);
+}
diff --git a/keyboards/handwired/wylderbuilds/3x5_2/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/3x5_2/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_2/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/3x5_2/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/3x5_2/keymaps/vial/vial.json
new file mode 100644
index 00000000000..eb3d185a521
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_2/keymaps/vial/vial.json
@@ -0,0 +1,121 @@
+{
+ "matrix": {
+ "rows": 8,
+ "cols": 5
+ },
+ "layouts": {
+ "keymap":[
+ {
+ "name": "Wylderbuilds 3x5_2 Standard",
+ "author": "https://wylderbuilds.com"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 4
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ "4,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "0,0",
+ {
+ "x": 12
+ },
+ "4,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ {
+ "x": 4
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "1,0",
+ {
+ "x": 12
+ },
+ "5,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,1",
+ "2,2",
+ {
+ "n": true
+ },
+ "2,3",
+ "2,4",
+ {
+ "x": 4
+ },
+ "6,0",
+ {
+ "n": true
+ },
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "2,0",
+ {
+ "x": 12
+ },
+ "6,4"
+ ],
+ [
+ {
+ "r": 15,
+ "y": -2,
+ "x": 7.25
+ },
+ "3,3",
+ "3,4"
+ ],
+ [
+ {
+ "r": -15,
+ "y": 3.6500000000000004,
+ "x": 8
+ },
+ "7,0",
+ "7,1"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/3x5_2/mcuconf.h b/keyboards/handwired/wylderbuilds/3x5_2/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_2/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/3x5_2/rules.mk b/keyboards/handwired/wylderbuilds/3x5_2/rules.mk
new file mode 100644
index 00000000000..ad86505b7f2
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_2/rules.mk
@@ -0,0 +1,27 @@
+# MCU name
+MCU = RP2040
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+F_CPU = 8000000
+SPLIT_KEYBOARD = yes
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+# AUDIO_ENABLE = yes # Audio output
+
+RGB_MATRIX_ENABLE = no # Enable WS2812 RGB matrix
+#RGB_MATRIX_DRIVER = WS2812
+
+#RGBLIGHT_SUPPORTED = yes
+#RGB_MATRIX_SUPPORTED = yes
+
+#LAYOUTS = split_3x5_3
diff --git a/keyboards/handwired/wylderbuilds/3x5_3/3x5_3.c b/keyboards/handwired/wylderbuilds/3x5_3/3x5_3.c
new file mode 100644
index 00000000000..56186c0b9d6
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_3/3x5_3.c
@@ -0,0 +1,18 @@
+/*
+Copyright 2021 @dlford
+
+This 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 "3x5_3.h"
+
diff --git a/keyboards/handwired/wylderbuilds/3x5_3/3x5_3.h b/keyboards/handwired/wylderbuilds/3x5_3/3x5_3.h
new file mode 100644
index 00000000000..fbcbe3bc480
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_3/3x5_3.h
@@ -0,0 +1,38 @@
+/*
+Copyright 2021 @dlford
+
+This 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_split_3x5_3( \
+ L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \
+ L10, L11, L12, L13, L14, L31, R10, R11, R12, R13, R14, \
+ L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \
+ L32, L33, L34, R30, R31, R32 \
+) { \
+ { L00, L01, L02, L03, L04 }, \
+ { L10, L11, L12, L13, L14 }, \
+ { L20, L21, L22, L23, L24 }, \
+ { XXX, L31, L32, L33, L34 }, \
+ { R00, R01, R02, R03, R04 }, \
+ { R10, R11, R12, R13, R14 }, \
+ { R20, R21, R22, R23, R24 }, \
+ { R30, R31, R32, XXX, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/3x5_3/config.h b/keyboards/handwired/wylderbuilds/3x5_3/config.h
new file mode 100644
index 00000000000..187d5a3b9e3
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_3/config.h
@@ -0,0 +1,63 @@
+/*
+Copyright 2012 Jun Wako
+Copyright 2015 Jack Humbert
+Copyright 2021 @dlford
+This 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"
+
+// Communication
+// #define USE_I2C
+#define USE_SERIAL
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+//#define SERIAL_USART_PIN_SWAP
+
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+//#define SPLIT_HAND_PIN_LOW_IS_LEFT
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 5
+
+// wiring of each half
+#define MATRIX_COL_PINS { GP2, GP3, GP4, GP5, GP6 }
+#define MATRIX_ROW_PINS { GP9, GP10, GP11, GP12 }
+
+#define DIODE_DIRECTION COL2ROW
+
+// WS2812 RGB LED strip input and number of LEDs
+//#define RGB_DI_PIN D3
+//#define DRIVER_LED_TOTAL 36
+//#define RGB_MATRIX_SPLIT { 18, 18 }
+//#define RGB_MATRIX_CENTER { 133, 54 }
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+//#undef LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_SUPPORT_ENABLE
+// Locking resynchronize hack
+#define LOCKING_RESYNC_ENABLE
+// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
diff --git a/keyboards/handwired/wylderbuilds/3x5_3/info.json b/keyboards/handwired/wylderbuilds/3x5_3/info.json
new file mode 100644
index 00000000000..de5b5376372
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_3/info.json
@@ -0,0 +1,219 @@
+{
+ "keyboard_name": "Wylderbuilds 3x5 Dactyl Manuform Wyld Track",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0226",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 8,
+ "cols": 5
+ },
+ "layouts": {
+ "LAYOUT_split_3x5_3": {
+ "layout": [
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0
+ },
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "4,0",
+ "x": 11.25,
+ "y": 0
+ },
+ {
+ "label": "4,1",
+ "x": 12.25,
+ "y": 0
+ },
+ {
+ "label": "4,2",
+ "x": 13.25,
+ "y": 0
+ },
+ {
+ "label": "4,3",
+ "x": 14.25,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "4,4",
+ "x": 15.25,
+ "y": 0.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "0,0",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "0,1",
+ "x": 7,
+ "y": 1
+ },
+ {
+ "label": "5,0",
+ "x": 11.25,
+ "y": 1
+ },
+ {
+ "label": "5,1",
+ "x": 12.25,
+ "y": 1
+ },
+ {
+ "label": "5,2",
+ "x": 13.25,
+ "y": 1
+ },
+ {
+ "label": "5,3",
+ "x": 14.25,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "5,4",
+ "x": 15.25,
+ "y": 1.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "3,1",
+ "x": 6.5,
+ "y": 2
+ },
+ {
+ "label": "6,0",
+ "x": 11.25,
+ "y": 2
+ },
+ {
+ "label": "6,1",
+ "x": 12.25,
+ "y": 2
+ },
+ {
+ "label": "6,2",
+ "x": 13.25,
+ "y": 2
+ },
+ {
+ "label": "6,3",
+ "x": 14.25,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "6,4",
+ "x": 15.25,
+ "y": 2.5
+ },
+ {
+ "label": "3,2",
+ "x": 4.5,
+ "y": 3.25
+ },
+ {
+ "label": "3,3",
+ "x": 5.5,
+ "y": 3.25
+ },
+ {
+ "label": "3,4",
+ "x": 6.5,
+ "y": 3.25
+ },
+ {
+ "label": "7,0",
+ "x": 9.5,
+ "y": 3.25
+ },
+ {
+ "label": "7,1",
+ "x": 10.5,
+ "y": 3.25
+ },
+ {
+ "label": "7,2",
+ "x": 11.5,
+ "y": 3.25
+ }
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/wylderbuilds/3x5_3/keymaps/default/keymap.c b/keyboards/handwired/wylderbuilds/3x5_3/keymaps/default/keymap.c
new file mode 100644
index 00000000000..abd64335581
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_3/keymaps/default/keymap.c
@@ -0,0 +1,26 @@
+// Copyright 2022 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐
+ * │ 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 │ , │ . │ / │
+ * └───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘
+ * ┌───┐ ┌───┐
+ * │GUI├───┐ ┌───┤Alt│
+ * └───┤Bsp├───┐ ┌───┤Ent├───┘
+ * └───┤ │ │ ├───┘
+ * └───┘ └───┘
+ */
+ [0] = LAYOUT_split_3x5_3(
+ 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_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/handwired/wylderbuilds/3x5_3/keymaps/dlford/config.h b/keyboards/handwired/wylderbuilds/3x5_3/keymaps/dlford/config.h
new file mode 100644
index 00000000000..fac93539596
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_3/keymaps/dlford/config.h
@@ -0,0 +1,106 @@
+/*
+Copyright 2012 Jun Wako
+Copyright 2021 @dlford
+This 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 USE_MATRIX_I2C
+
+/* Select hand configuration */
+
+// #define MASTER_LEFT
+// #define MASTER_RIGHT
+#define EE_HANDS // ./util/docker_build.sh crkbd:dlford:dfu-split-[left|right] (or avrdude-split[left|right])
+
+#define TAPPING_TOGGLE 2 // number of taps to toggle TT
+#define TAPPING_TERM_PER_KEY // milliseconds from tap to hold for mod tap per key
+#define IGNORE_MOD_TAP_INTERRUPT // ignore hold mod if another tap occurs within tapping term
+#define PERMISSIVE_HOLD_PER_KEY // activate mod top hold earlier if another key is pressed AND released per key
+#define TAPPING_FORCE_HOLD_PER_KEY // disable double tap hold key repeat per key
+#undef MOUSEKEY_INTERVAL
+#undef MOUSEKEY_DELAY
+#undef MOUSEKEY_TIME_TO_MAX
+#undef MOUSEKEY_MAX_SPEED
+#undef MOUSEKEY_WHEEL_DELAY
+#define MK_KINETIC_SPEED
+#define MOUSEKEY_DELAY 100
+#define MOUSEKEY_INTERVAL 35
+#define MOUSEKEY_MOVE_DELTA 5
+#define MOUSEKEY_INITIAL_SPEED 1
+#define MOUSEKEY_DECELERATED_SPEED 10
+#define MOUSEKEY_BASE_SPEED 1200
+#define MOUSEKEY_ACCELERATED_SPEED 4800
+
+#ifdef RGB_MATRIX_ENABLE
+// # define RGB_DISABLE_TIMEOUT 300000 // number of milliseconds to wait until disabling effects
+// # define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+# 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_HUE_STEP 8
+# define RGB_MATRIX_SAT_STEP 8
+# define RGB_MATRIX_VAL_STEP 8
+# define RGB_MATRIX_SPD_STEP 10
+
+// Enable animations
+// # define ENABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue speed is hue for secondary hue
+// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom speed controls how much gradient changes
+// # define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static gradient left to right speed controls how much gradient changes
+// # define ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation
+// # define ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right
+// # define ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right
+// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation
+// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness
+// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation
+// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness
+// # define ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient
+// # define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
+// # define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
+// # define ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
+// # define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in
+// # define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right
+// # define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard
+# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
+// # define ENABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard
+// # define ENABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard
+// # define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard
+// # define ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue
+// # define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation
+// # define ENABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight ammount at the same time then shifts back
+// # define ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight ammount in a wave to the right then back to the left
+# define ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight ammount and then back down in a wave to the right
+// # define RGB_MATRIX_FRAMEBUFFER_EFFECTS // Required for the following two effects
+// # define ENABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM!
+// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation
+// # define RGB_MATRIX_KEYPRESSES // reacts to keypresses, required for the remaining effects
+// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue pulses keys hit to shifted hue then fades to current hue
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out
+// # define ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out
+// # define ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out
+// # define ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out
+// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out
+#endif
+
+// Features I don't want, remove to save space
+// #define NO_ACTION_ONESHOT // Used by caps word
+#define NO_ACTION_FUNCTION
+#define NO_ACTION_MACRO
+#define NO_USB_STARTUP_CHECK
diff --git a/keyboards/handwired/wylderbuilds/3x5_3/keymaps/dlford/features/caps_word.c b/keyboards/handwired/wylderbuilds/3x5_3/keymaps/dlford/features/caps_word.c
new file mode 100644
index 00000000000..ee295c73050
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_3/keymaps/dlford/features/caps_word.c
@@ -0,0 +1,76 @@
+// Copyright 2021 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//
+// For full documentation, see
+// https://getreuer.info/posts/keyboards/caps-word
+
+#include "caps_word.h"
+bool caps_word_enabled = false;
+
+bool process_caps_word(uint16_t keycode, keyrecord_t* record) {
+ static bool shifted = false;
+
+ if (!caps_word_enabled) {
+ // Pressing both shift keys at the same time enables caps word.
+ if (((get_mods() | get_oneshot_mods()) & MOD_MASK_SHIFT)
+ == MOD_MASK_SHIFT) {
+ clear_mods();
+ clear_oneshot_mods();
+ shifted = false;
+ caps_word_enabled = true;
+ return false;
+ }
+ return true;
+ }
+
+ if (!record->event.pressed) { return true; }
+
+ if (!((get_mods() | get_oneshot_mods()) & ~MOD_MASK_SHIFT)) {
+ switch (keycode) {
+ case QK_MOD_TAP ... QK_MOD_TAP_MAX:
+ case QK_LAYER_TAP ... QK_LAYER_TAP_MAX:
+ // Earlier return if this has not been considered tapped yet.
+ if (record->tap.count == 0) { return true; }
+ // Get the base tapping keycode of a mod- or layer-tap key.
+ keycode &= 0xff;
+ }
+
+ switch (keycode) {
+ // Letter keys should be shifted.
+ case KC_A ... KC_Z:
+ if (!shifted) { register_code(KC_LSFT); }
+ shifted = true;
+ return true;
+
+ // Keycodes that continue caps word but shouldn't get shifted.
+ case KC_1 ... KC_0:
+ case KC_BSPC:
+ case KC_MINS:
+ case KC_UNDS:
+ if (shifted) { unregister_code(KC_LSFT); }
+ shifted = false;
+ return true;
+
+ // Any other keycode disables caps word.
+ }
+ }
+
+ // Disable caps word.
+ caps_word_enabled = false;
+ if (shifted) { unregister_code(KC_LSFT); }
+ shifted = false;
+ return true;
+}
+
diff --git a/keyboards/handwired/wylderbuilds/3x5_3/keymaps/dlford/features/caps_word.h b/keyboards/handwired/wylderbuilds/3x5_3/keymaps/dlford/features/caps_word.h
new file mode 100644
index 00000000000..a609a325443
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_3/keymaps/dlford/features/caps_word.h
@@ -0,0 +1,36 @@
+// Copyright 2021 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//
+// Caps Word, activated by pressing both shift keys at the same time.
+//
+// This library implements "Caps Word", which is like conventional Caps Lock,
+// but automatically disables itself at the end of the word. This is useful for
+// typing all-caps identifiers like `MOD_MASK_ALT`.
+//
+// Caps Word is activated by pressing the left and right shift keys at the same
+// time. This way you don't need a dedicated key for using Caps Word. I've
+// tested that this works as expected with one-shot mods and Space Cadet Shift.
+// If your shift keys are mod-taps, activate Caps Word by holding both shift
+// mod-tap keys until the tapping term, release them, then begin typing.
+//
+// For full documentation, see
+// https://getreuer.info/posts/keyboards/caps-word
+
+#pragma once
+
+#include QMK_KEYBOARD_H
+
+bool process_caps_word(uint16_t keycode, keyrecord_t* record);
+extern bool caps_word_enabled;
diff --git a/keyboards/handwired/wylderbuilds/3x5_3/keymaps/dlford/keymap.c b/keyboards/handwired/wylderbuilds/3x5_3/keymaps/dlford/keymap.c
new file mode 100644
index 00000000000..cbb1b42fca3
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_3/keymaps/dlford/keymap.c
@@ -0,0 +1,385 @@
+/*
+Copyright 2019 @foostan
+Copyright 2020 Drashna Jaelre <@drashna>
+Copyright 2021 @dlford
+
+This 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 "features/caps_word.h"
+
+// Layers
+enum layers {
+ _QWERTY = 0,
+ _COLEMAK,
+ _NAVIGATION,
+ _SPECIAL,
+ _MOUSE,
+};
+
+static uint16_t default_animation = RGB_MATRIX_CYCLE_SPIRAL;
+static int default_speed = 50;
+static uint16_t secondary_animation = RGB_MATRIX_HUE_WAVE;
+static int secondary_speed = 150;
+static bool is_macro_recording = false;
+
+// Init
+void keyboard_post_init_user(void) {
+ rgb_matrix_sethsv_noeeprom(HSV_PURPLE);
+ rgb_matrix_mode_noeeprom(default_animation);
+ rgb_matrix_set_speed_noeeprom(default_speed);
+}
+
+// Permissive hold per key
+bool get_permissive_hold(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case LT(3, KC_SPC):
+ return true; // Enable permissive hold
+ case LT(2, KC_TAB):
+ return true;
+ default:
+ return false; // Disable permissive hold
+ }
+}
+
+// Tapping force hold per key
+bool get_tapping_force_hold(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case LT(3, KC_SPC):
+ return true; // Enable force hold
+ case LT(2, KC_TAB):
+ return true;
+ default:
+ return false; // Disable force hold
+ }
+}
+
+// Tapping term per key
+uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case C_S_T(KC_E):
+ case C_S_T(KC_I):
+ return 215;
+ default:
+ return 190;
+ }
+}
+
+// RGB timeout
+#define RGB_CUSTOM_TIMEOUT 5 // in minutes
+static uint16_t idle_timer = 0;
+static uint8_t halfmin_counter = 0;
+static bool led_on = true;
+void matrix_scan_user(void) {
+ if (is_keyboard_master()) {
+ // idle_timer needs to be set one time
+ if (idle_timer == 0) idle_timer = timer_read();
+
+ if (led_on && timer_elapsed(idle_timer) > 30000) {
+ halfmin_counter++;
+ idle_timer = timer_read();
+ }
+
+ if (led_on && halfmin_counter >= RGB_CUSTOM_TIMEOUT * 2) {
+ rgb_matrix_disable_noeeprom();
+ led_on = false;
+ halfmin_counter = 0;
+ }
+ }
+}
+
+// Macros
+enum macro_events {
+ M_KEYMAP = SAFE_RANGE,
+ M_COMM,
+ M_DOT,
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ // RGB resume
+ if (is_keyboard_master()) {
+ if (record->event.pressed) {
+ if (led_on == false) {
+ rgb_matrix_enable_noeeprom();
+ led_on = true;
+ }
+ idle_timer = timer_read();
+ halfmin_counter = 0;
+ }
+ }
+
+ // Caps word
+ if (!process_caps_word(keycode, record)) { return false; }
+
+ // Macros
+ const uint8_t mods = get_mods();
+ static uint8_t backstepCounter = 0;
+ static bool keyDown = false;
+ switch (keycode) {
+ case M_KEYMAP:
+ if (record->event.pressed) {
+ SEND_STRING("https://raw.githubusercontent.com/dlford/qmk_firmware/master/keyboards/crkbd/keymaps/dlford/legends.svg");
+ }
+ return false;
+ case M_COMM:
+ if (record->event.pressed) {
+ if ((mods & MOD_BIT(KC_LCTL)) && (mods & MOD_BIT(KC_LSFT) && (mods & MOD_BIT(KC_LALT)))) {
+ backstepCounter = 1;
+ clear_mods();
+ SEND_STRING("<>");
+ } else if ((mods & MOD_BIT(KC_LCTL)) && (mods & MOD_BIT(KC_LALT))) {
+ backstepCounter = 1;
+ clear_mods();
+ SEND_STRING("()");
+ } else if ((mods & MOD_BIT(KC_LCTL)) && (mods & MOD_BIT(KC_LSFT))) {
+ backstepCounter = 2;
+ clear_mods();
+ SEND_STRING("{};");
+ } else if (mods & MOD_BIT(KC_LCTL)) {
+ backstepCounter = 1;
+ clear_mods();
+ SEND_STRING("{}");
+ } else if ((mods & MOD_BIT(KC_LALT)) && (mods & MOD_BIT(KC_LSFT))) {
+ backstepCounter = 2;
+ clear_mods();
+ SEND_STRING("[];");
+ } else if (mods & MOD_BIT(KC_LALT)) {
+ backstepCounter = 1;
+ clear_mods();
+ SEND_STRING("[]");
+ } else {
+ keyDown = true;
+ register_code(KC_COMM);
+ return true;
+ }
+ if (backstepCounter) {
+ while (backstepCounter > 0) {
+ tap_code(KC_LEFT);
+ backstepCounter--;
+ }
+ set_mods(mods);
+ }
+ } else {
+ if (keyDown) {
+ unregister_code(KC_COMM);
+ keyDown = false;
+ return true;
+ }
+ }
+ return false;
+ case M_DOT:
+ if (record->event.pressed) {
+ if (mods & MOD_BIT(KC_LCTL)) {
+ clear_mods();
+ SEND_STRING("=>");
+ } else if (mods & MOD_BIT(KC_LALT)) {
+ clear_mods();
+ SEND_STRING("->");
+ } else {
+ keyDown = true;
+ register_code(KC_DOT);
+ return true;
+ }
+ } else {
+ if (keyDown) {
+ unregister_code(KC_DOT);
+ keyDown = false;
+ return true;
+ }
+ }
+ set_mods(mods);
+ return false;
+ }
+
+ return true;
+}
+
+// RGB Layers (Enable animations in config.h)
+layer_state_t layer_state_set_user(layer_state_t state) {
+ switch (get_highest_layer(state)) {
+ case _SPECIAL:
+ rgb_matrix_sethsv_noeeprom(HSV_ORANGE);
+ rgb_matrix_set_speed_noeeprom(secondary_speed);
+ rgb_matrix_mode_noeeprom(secondary_animation);
+ break;
+ case _NAVIGATION:
+ rgb_matrix_sethsv_noeeprom(HSV_BLUE);
+ rgb_matrix_set_speed_noeeprom(secondary_speed);
+ rgb_matrix_mode_noeeprom(secondary_animation);
+ break;
+ case _MOUSE:
+ rgb_matrix_sethsv_noeeprom(HSV_GREEN);
+ rgb_matrix_set_speed_noeeprom(secondary_speed);
+ rgb_matrix_mode_noeeprom(secondary_animation);
+ break;
+ default:
+ rgb_matrix_sethsv_noeeprom(HSV_PURPLE);
+ rgb_matrix_set_speed_noeeprom(default_speed);
+ rgb_matrix_mode_noeeprom(default_animation);
+ break;
+ }
+ return state;
+}
+
+// Dynamic Macro Recording Backlight
+void dynamic_macro_record_start_user(void) {
+ is_macro_recording = true;
+}
+
+void dynamic_macro_record_end_user(int8_t direction) {
+ is_macro_recording = false;
+}
+
+// Indicators
+void rgb_matrix_indicators_user(void) {
+ if (host_keyboard_led_state().caps_lock || caps_word_enabled) {
+ // Left master
+ rgb_matrix_set_color(3, RGB_RED);
+ // Right master
+ rgb_matrix_set_color(21, RGB_RED);
+ }
+ if (is_macro_recording) {
+ // Left master
+ rgb_matrix_set_color(4, RGB_ORANGE);
+ // Right master
+ rgb_matrix_set_color(22, RGB_ORANGE);
+ }
+ if (default_layer_state - 1 == _COLEMAK) {
+ // Left master
+ rgb_matrix_set_color(5, RGB_GREEN);
+ // Right master
+ rgb_matrix_set_color(23, RGB_GREEN);
+ }
+}
+
+// Quantum keys / Abbreviations
+enum custom_keycodes {
+ VVV = KC_TRNS,
+ XXX = KC_NO,
+ CSA_Q = MEH_T(KC_Q),
+ CSA_F1 = MEH_T(KC_F1),
+ CSA_1 = MEH_T(KC_1),
+ CA_W = LCA_T(KC_W),
+ CA_F2 = LCA_T(KC_F2),
+ CA_2 = LCA_T(KC_2),
+ CS_E = C_S_T(KC_E),
+ CS_F = C_S_T(KC_F),
+ CS_I = C_S_T(KC_I),
+ CS_U = C_S_T(KC_U),
+ CS_F3 = C_S_T(KC_F3),
+ CS_3 = C_S_T(KC_3),
+ CS_F8 = C_S_T(KC_F8),
+ CS_8 = C_S_T(KC_8),
+ CA_O = LCA_T(KC_O),
+ CA_Y = LCA_T(KC_Y),
+ CA_F9 = LCA_T(KC_F9),
+ CA_9 = LCA_T(KC_9),
+ CSA_P = MEH_T(KC_P),
+ CSA_SCLN = MEH_T(KC_SCLN),
+ CSA_F10 = MEH_T(KC_F10),
+ CSA_0 = MEH_T(KC_0),
+ LGUI_A = LGUI_T(KC_A),
+ LGUI_FIND = LGUI_T(KC_FIND),
+ LGUI_GRV = LGUI_T(KC_GRV),
+ LALT_S = LALT_T(KC_S),
+ LALT_R = LALT_T(KC_R),
+ LALT_HOME = LALT_T(KC_HOME),
+ LCTL_D = LCTL_T(KC_D),
+ LCTL_S = LCTL_T(KC_S),
+ LCTL_PGUP = LCTL_T(KC_PGUP),
+ LCTL_LBRC = LCTL_T(KC_LBRC),
+ LSFT_F = LSFT_T(KC_F),
+ _LSFT_T = LSFT_T(KC_T),
+ LSFT_PGDN = LSFT_T(KC_PGDN),
+ LSFT_RBRC = LSFT_T(KC_RBRC),
+ RSFT_J = RSFT_T(KC_J),
+ RSFT_N = RSFT_T(KC_N),
+ RSFT_DOWN = RSFT_T(KC_DOWN),
+ RSFT_MINS = RSFT_T(KC_MINS),
+ RCTL_K = RCTL_T(KC_K),
+ RCTL_E = RCTL_T(KC_E),
+ RCTL_UP = RCTL_T(KC_UP),
+ RCTL_EQL = RCTL_T(KC_EQL),
+ RALT_L = RALT_T(KC_L),
+ RALT_I = RALT_T(KC_I),
+ RALT_RGHT = RALT_T(KC_RGHT),
+ RALT_BSLS = RALT_T(KC_BSLS),
+ RGUI_SCLN = RGUI_T(KC_SCLN),
+ RGUI_O = RGUI_T(KC_O),
+ RGUI_F11 = RGUI_T(KC_F11),
+ RGUI_QUOT = RGUI_T(KC_QUOT),
+ LT3_SPC = LT(3,KC_SPC),
+ LT2_TAB = LT(2,KC_TAB),
+ DF_QWERTY = DF(0),
+ DF_COLEMAK = DF(1),
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_split_3x5_3(
+ //|--------------------------------------------| |--------------------------------------------|
+ CSA_Q, CA_W, CS_E, KC_R, KC_T, KC_Y, KC_U, CS_I, CA_O, CSA_P,
+ //|--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------|
+ LGUI_A, LALT_S, LCTL_D, LSFT_F, KC_G, KC_H, RSFT_J, RCTL_K, RALT_L, RGUI_SCLN,
+ //|--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------|
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, M_COMM, M_DOT, KC_SLSH,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_ESC, LT3_SPC, KC_BSPC, KC_DEL, LT2_TAB, KC_ENT
+ // |--------+--------+--------| |--------+--------+--------|
+ ),
+ [_COLEMAK] = LAYOUT_split_3x5_3(
+ //|--------------------------------------------| |--------------------------------------------|
+ CSA_Q, CA_W, CS_F, KC_P, KC_G, KC_J, KC_L, CS_U, CA_Y, CSA_SCLN,
+ //|--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------|
+ LGUI_A, LALT_R, LCTL_S, _LSFT_T, KC_D, KC_H, RSFT_N, RCTL_E, RALT_I, RGUI_O,
+ //|--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------|
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, M_COMM, M_DOT, KC_SLSH,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_ESC, LT3_SPC, KC_BSPC, KC_DEL, LT2_TAB, KC_ENT
+ // |--------+--------+--------| |--------+--------+--------|
+ ),
+ [_NAVIGATION] = LAYOUT_split_3x5_3(
+ //|--------------------------------------------| |--------------------------------------------|
+ CSA_F1, CA_F2, CS_F3, KC_F4, KC_F5, KC_F6, KC_F7, CS_F8, CA_F9, CSA_F10,
+ //|--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------|
+ LGUI_FIND,LALT_HOME,LCTL_PGUP,LSFT_PGDN,KC_END, KC_LEFT,RSFT_DOWN,RCTL_UP,RALT_RGHT,RGUI_F11,
+ //|--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------|
+ DF_QWERTY,DF_COLEMAK,KC_VOLD, KC_VOLU, QK_BOOT, KC_MUTE, KC_MPLY, KC_MPRV, KC_MNXT, KC_F12,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ VVV, TG(4), VVV, VVV, VVV, VVV
+ // |--------+--------+--------| |--------+--------+--------|
+ ),
+ [_SPECIAL] = LAYOUT_split_3x5_3(
+ //|--------------------------------------------| |--------------------------------------------|
+ CSA_1, CA_2, CS_3, KC_4, KC_5, KC_6, KC_7, CS_8, CA_9, CSA_0,
+ //|--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------|
+ LGUI_GRV,KC_LALT,LCTL_LBRC,LSFT_RBRC,KC_LPRN, KC_RPRN,RSFT_MINS,RCTL_EQL,RALT_BSLS,RGUI_QUOT,
+ //|--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------|
+ KC_TILD, KC_CAPS, KC_LCBR, KC_RCBR,TG(_MOUSE), EEP_RST, KC_UNDS, KC_PLUS, KC_PIPE, KC_DQUO,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ VVV, VVV, VVV, VVV, TG(4), VVV
+ // |--------+--------+--------| |--------+--------+--------|
+ ),
+ [_MOUSE] = LAYOUT_split_3x5_3(
+ //|--------------------------------------------| |--------------------------------------------|
+ KC_WH_U, KC_WH_L, KC_MS_U, KC_WH_R, DM_REC1, KC_WSTP, KC_ACL2, KC_ACL1, KC_ACL0, KC_WFWD,
+ //|--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------|
+ KC_WH_D, KC_MS_L, KC_MS_D, KC_MS_R, DM_PLY1, KC_WREF, KC_BTN1, KC_BTN2, KC_BTN3, KC_WBAK,
+ //|--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------|
+ M_KEYMAP,KC_BTN3, KC_BTN2, KC_BTN1, XXX, XXX, XXX, XXX, XXX, XXX,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ VVV, TG(4), VVV, VVV, TG(4), VVV
+ // |--------+--------+--------| |--------+--------+--------|
+ ),
+};
diff --git a/keyboards/handwired/wylderbuilds/3x5_3/keymaps/dlford/rules.mk b/keyboards/handwired/wylderbuilds/3x5_3/keymaps/dlford/rules.mk
new file mode 100644
index 00000000000..f40ace96060
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_3/keymaps/dlford/rules.mk
@@ -0,0 +1,17 @@
+# Includes
+SRC += features/caps_word.c
+
+# Build Options
+# change yes to no to disable
+#
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+DYNAMIC_MACRO_ENABLE = yes # Create macros on the fly
+RGB_MATRIX_DRIVER = WS2812
+INDICATOR_LIGHTS = yes # Enable indicator lights for caps lock, etc.
+# TAP_DANCE_ENABLE = yes # Send different keycodes if tapped multiple times
+# KEY_OVERRIDE_ENABLE = yes # Override key combos
+# COMBO_ENABLE = yes # Custom key combos
+
+LTO_ENABLE = yes
+RGBLIGHT_SUPPORTED = yes
+RGB_MATRIX_SUPPORTED = yes
diff --git a/keyboards/handwired/wylderbuilds/3x5_3/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/3x5_3/keymaps/vial/config.h
new file mode 100644
index 00000000000..8eae46aec00
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_3/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xD6, 0x3E, 0x59, 0x93, 0x8C, 0x9C, 0x5C, 0x31}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 3 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 3 }
diff --git a/keyboards/handwired/wylderbuilds/3x5_3/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/3x5_3/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..80693cb9e2f
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_3/keymaps/vial/keymap.c
@@ -0,0 +1,49 @@
+#include QMK_KEYBOARD_H
+
+#define _BASE 0
+#define _RAISE 1
+#define _LOWER 2
+
+#define SFT_ESC SFT_T(KC_ESC)
+#define CTL_BSPC CTL_T(KC_BSPC)
+#define ALT_SPC ALT_T(KC_SPC)
+#define SFT_ENT SFT_T(KC_ENT)
+
+#define KC_ML KC_MS_LEFT
+#define KC_MR KC_MS_RIGHT
+#define KC_MU KC_MS_UP
+#define KC_MD KC_MS_DOWN
+#define KC_MB1 KC_MS_BTN1
+#define KC_MB2 KC_MS_BTN2
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+#define ____ KC_TRANSPARENT
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_split_3x5_3(
+ 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_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ RAISE, KC_SPC, KC_TAB, KC_LCTRL, KC_ENT, LOWER
+ ),
+ [_RAISE] = LAYOUT_split_3x5_3(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ S(KC_9), S(KC_0), KC_LCBR, KC_RCBR, KC_EQL, KC_MINS, KC_4, KC_5, KC_6, KC_QUOT,
+ QK_RBT, QK_BOOT, KC_LBRC, KC_RBRC, ____, ____, KC_1, KC_2, KC_3, ____,
+ ____, ____, QK_BOOT, ____, ____, ____
+ ),
+
+ [_LOWER] = LAYOUT_split_3x5_3(
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
+ S(KC_9), S(KC_0), KC_LBRC, KC_RBRC,KC_EQL, ____, KC_MINS, KC_EQL, KC_PIPE, ____,
+ ____, ____, ____, ____, ____, ____, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
+ ____, ____, ____, QK_BOOT, ____, ____
+
+ )
+};
+void persistent_default_layer_set(uint16_t default_layer) {
+ eeconfig_update_default_layer(default_layer);
+ default_layer_set(default_layer);
+}
diff --git a/keyboards/handwired/wylderbuilds/3x5_3/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/3x5_3/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_3/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/3x5_3/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/3x5_3/keymaps/vial/vial.json
new file mode 100644
index 00000000000..4cf2394da93
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_3/keymaps/vial/vial.json
@@ -0,0 +1,123 @@
+{
+ "matrix": {
+ "rows": 8,
+ "cols": 5
+ },
+ "layouts": {
+ "keymap":[
+ {
+ "name": "Wylderbuilds 3x5_3 Standard",
+ "author": "https://wylderbuilds.com"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 4
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ "4,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "0,0",
+ {
+ "x": 12
+ },
+ "4,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ {
+ "x": 4
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "1,0",
+ {
+ "x": 12
+ },
+ "5,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,1",
+ "2,2",
+ {
+ "n": true
+ },
+ "2,3",
+ "2,4",
+ {
+ "x": 4
+ },
+ "6,0",
+ {
+ "n": true
+ },
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "2,0",
+ {
+ "x": 12
+ },
+ "6,4"
+ ],
+ [
+ {
+ "r": 15,
+ "y": -2,
+ "x": 6.25
+ },
+ "3,2",
+ "3,3",
+ "3,4"
+ ],
+ [
+ {
+ "r": -15,
+ "y": 3.6500000000000004,
+ "x": 8
+ },
+ "7,0",
+ "7,1",
+ "7,2"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/3x5_3/mcuconf.h b/keyboards/handwired/wylderbuilds/3x5_3/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_3/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/3x5_3/rules.mk b/keyboards/handwired/wylderbuilds/3x5_3/rules.mk
new file mode 100644
index 00000000000..ad86505b7f2
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_3/rules.mk
@@ -0,0 +1,27 @@
+# MCU name
+MCU = RP2040
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+F_CPU = 8000000
+SPLIT_KEYBOARD = yes
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+# AUDIO_ENABLE = yes # Audio output
+
+RGB_MATRIX_ENABLE = no # Enable WS2812 RGB matrix
+#RGB_MATRIX_DRIVER = WS2812
+
+#RGBLIGHT_SUPPORTED = yes
+#RGB_MATRIX_SUPPORTED = yes
+
+#LAYOUTS = split_3x5_3
diff --git a/keyboards/handwired/wylderbuilds/3x5_3/wylderbuilds-3x5-dactyl-manuform-wyld-track-encoder.json b/keyboards/handwired/wylderbuilds/3x5_3/wylderbuilds-3x5-dactyl-manuform-wyld-track-encoder.json
new file mode 100644
index 00000000000..d87d6eb9163
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_3/wylderbuilds-3x5-dactyl-manuform-wyld-track-encoder.json
@@ -0,0 +1,115 @@
+[
+ {
+ "name": "Wylderbuilds 3x5 Dactyl Manuform Wyld Track Encoder"
+ },
+ [
+ {
+ "x": 2
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 5.25
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ "4,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ {
+ "x": 13.25
+ },
+ "4,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 3.25
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ {
+ "x": 13.25
+ },
+ "5,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ {
+ "x": 0.5
+ },
+ "3,1",
+ {
+ "x": 3.75
+ },
+ "6,0",
+ {
+ "n": true
+ },
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ {
+ "x": 13.25
+ },
+ "6,4"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 4.5
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ {
+ "x": 2
+ },
+ "7,0",
+ "7,1",
+ "7,2"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/3x5_carbonfet/3x5_carbonfet.c b/keyboards/handwired/wylderbuilds/3x5_carbonfet/3x5_carbonfet.c
new file mode 100644
index 00000000000..a82c268a603
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_carbonfet/3x5_carbonfet.c
@@ -0,0 +1,18 @@
+/*
+Copyright 2021 @dlford
+
+This 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 "3x5_carbonfet.h"
+
diff --git a/keyboards/handwired/wylderbuilds/3x5_carbonfet/3x5_carbonfet.h b/keyboards/handwired/wylderbuilds/3x5_carbonfet/3x5_carbonfet.h
new file mode 100644
index 00000000000..db538dd9bd8
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_carbonfet/3x5_carbonfet.h
@@ -0,0 +1,39 @@
+/*
+Copyright 2021 @dlford
+
+This 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_split_3x5_carbonfet( \
+ L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \
+ L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \
+ L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \
+ L32, L33, L34, R30, R31, R32, \
+ L35, L30, L31, R33, R34, R35 \
+) { \
+ { L00, L01, L02, L03, L04, XXX }, \
+ { L10, L11, L12, L13, L14, XXX }, \
+ { L20, L21, L22, L23, L24, XXX }, \
+ { L30, L31, L32, L33, L34, L35 }, \
+ { R00, R01, R02, R03, R04, XXX }, \
+ { R10, R11, R12, R13, R14, XXX }, \
+ { R20, R21, R22, R23, R24, XXX }, \
+ { R30, R31, R32, R33, R34, R35 } \
+}
diff --git a/keyboards/handwired/wylderbuilds/3x5_carbonfet/config.h b/keyboards/handwired/wylderbuilds/3x5_carbonfet/config.h
new file mode 100644
index 00000000000..f488f25ece8
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_carbonfet/config.h
@@ -0,0 +1,63 @@
+/*
+Copyright 2012 Jun Wako
+Copyright 2015 Jack Humbert
+Copyright 2021 @dlford
+This 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"
+
+// Communication
+// #define USE_I2C
+#define USE_SERIAL
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+//#define SERIAL_USART_PIN_SWAP
+
+//#define SPLIT_HAND_PIN GP26 // high = left, low = right
+//#define SPLIT_HAND_PIN_LOW_IS_LEFT
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 6
+
+// wiring of each half
+#define MATRIX_COL_PINS { GP2, GP3, GP4, GP5, GP6, GP7 }
+#define MATRIX_ROW_PINS { GP9, GP10, GP11, GP12 }
+
+//#define DIODE_DIRECTION COL2ROW
+
+// WS2812 RGB LED strip input and number of LEDs
+//#define RGB_DI_PIN D3
+//#define DRIVER_LED_TOTAL 36
+//#define RGB_MATRIX_SPLIT { 18, 18 }
+//#define RGB_MATRIX_CENTER { 133, 54 }
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+//#undef LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_SUPPORT_ENABLE
+// Locking resynchronize hack
+#define LOCKING_RESYNC_ENABLE
+// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
diff --git a/keyboards/handwired/wylderbuilds/3x5_carbonfet/info.json b/keyboards/handwired/wylderbuilds/3x5_carbonfet/info.json
new file mode 100644
index 00000000000..1fba6e9862a
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_carbonfet/info.json
@@ -0,0 +1,352 @@
+{
+ "keyboard_name": "Wylderbuilds 3x5 Dactyl Manuform Wyld Track",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "bootloader": "rp2040",
+ "debounce": 5,
+ "diode_direction": "COL2ROW",
+ "dynamic_keymap": {
+ "layer_count": 3
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "encoder": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0229",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 8,
+ "cols": 6
+ },
+ "processor": "RP2040",
+ "rgb_matrix": {
+ "animations": {
+ "alpha_mods": true,
+ "breathing": true,
+ "colorband_pinwheel_sat": true,
+ "colorband_pinwheel_val": true,
+ "colorband_sat": true,
+ "colorband_spiral_sat": true,
+ "colorband_spiral_val": true,
+ "colorband_val": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_out_in": true,
+ "cycle_out_in_dual": true,
+ "cycle_pinwheel": true,
+ "cycle_spiral": true,
+ "cycle_up_down": true,
+ "digital_rain": true,
+ "dual_beacon": true,
+ "gradient_left_right": true,
+ "gradient_up_down": true,
+ "hue_breathing": true,
+ "hue_pendulum": true,
+ "hue_wave": true,
+ "jellybean_raindrops": true,
+ "pixel_flow": true,
+ "pixel_fractal": true,
+ "pixel_rain": true,
+ "rainbow_beacon": true,
+ "rainbow_moving_chevron": true,
+ "rainbow_pinwheels": true,
+ "raindrops": true,
+ "solid_color": true,
+ "solid_reactive": true,
+ "solid_reactive_cross": true,
+ "solid_reactive_nexus": true,
+ "solid_reactive_simple": true,
+ "solid_reactive_wide": true,
+ "solid_splash": true,
+ "splash": true,
+ "typing_heatmap": true
+ },
+ "driver": "ws2812",
+ "layout": [
+ {"flags": 4, "matrix": [0, 4], "x": 65, "y": 0},
+{"flags": 4, "matrix": [1, 4], "x": 65, "y": 16},
+{"flags": 4, "matrix": [2, 4], "x": 78, "y": 37},
+{"flags": 4, "matrix": [0, 3], "x": 52, "y": 0},
+{"flags": 4, "matrix": [1, 3], "x": 52, "y": 16},
+{"flags": 4, "matrix": [2, 3], "x": 52, "y": 37},
+{"flags": 4, "matrix": [0, 2], "x": 39, "y": 0},
+{"flags": 4, "matrix": [1, 2], "x": 39, "y": 16},
+{"flags": 4, "matrix": [2, 2], "x": 39, "y": 37},
+{"flags": 4, "matrix": [0, 1], "x": 26, "y": 0},
+{"flags": 4, "matrix": [1, 1], "x": 26, "y": 16},
+{"flags": 4, "matrix": [2, 1], "x": 26, "y": 37},
+{"flags": 4, "matrix": [0, 0], "x": 13, "y": 5},
+{"flags": 4, "matrix": [1, 0], "x": 0, "y": 27},
+{"flags": 4, "matrix": [2, 0], "x": 0, "y": 48},
+{"flags": 4, "matrix": [3, 2], "x": 58, "y": 61},
+{"flags": 4, "matrix": [3, 3], "x": 71, "y": 61},
+{"flags": 4, "matrix": [3, 4], "x": 84, "y": 61},
+{"flags": 4, "matrix": [3, 1], "x": 45, "y": 75},
+{"flags": 4, "matrix": [3, 0], "x": 45, "y": 75},
+{"flags": 4, "matrix": [3, 5], "x": 45, "y": 75},
+{"flags": 4, "matrix": [4, 0], "x": 159, "y": 0},
+{"flags": 4, "matrix": [5, 0], "x": 159, "y": 16},
+{"flags": 4, "matrix": [6, 0], "x": 172, "y": 37},
+{"flags": 4, "matrix": [4, 1], "x": 172, "y": 0},
+{"flags": 4, "matrix": [5, 1], "x": 172, "y": 16},
+{"flags": 4, "matrix": [6, 1], "x": 198, "y": 37},
+{"flags": 4, "matrix": [4, 2], "x": 185, "y": 0},
+{"flags": 4, "matrix": [5, 2], "x": 185, "y": 16},
+{"flags": 4, "matrix": [6, 2], "x": 211, "y": 37},
+{"flags": 4, "matrix": [4, 3], "x": 198, "y": 0},
+{"flags": 4, "matrix": [5, 3], "x": 198, "y": 16},
+{"flags": 4, "matrix": [6, 3], "x": 224, "y": 37},
+{"flags": 4, "matrix": [4, 4], "x": 211, "y": 5},
+{"flags": 4, "matrix": [5, 4], "x": 172, "y": 27},
+{"flags": 4, "matrix": [6, 4], "x": 172, "y": 48},
+{"flags": 4, "matrix": [7, 2], "x": 162, "y": 61},
+{"flags": 4, "matrix": [7, 1], "x": 149, "y": 61},
+{"flags": 4, "matrix": [7, 0], "x": 136, "y": 61},
+{"flags": 4, "matrix": [7, 3], "x": 71, "y": 75},
+{"flags": 4, "matrix": [7, 4], "x": 71, "y": 75},
+{"flags": 4, "matrix": [7, 5], "x": 71, "y": 75}
+ ],
+ "max_brightness": 120,
+ "split_count": [
+ 21,
+ 21
+ ]
+ },
+ "split": {
+ "enabled": true,
+ "handedness": {
+ "pin": "GP26"
+ }
+ },
+ "ws2812": {
+ "driver": "vendor",
+ "pin": "GP21"
+ },
+ "layouts": {
+ "LAYOUT_split_3x5_carbonfet": {
+ "layout": [
+ {
+ "label": "0,1",
+ "x": 1,
+ "y": 0
+ },
+ {
+ "label": "0,2",
+ "x": 2,
+ "y": 0
+ },
+ {
+ "label": "0,3",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "4,0",
+ "x": 10.25,
+ "y": 0
+ },
+ {
+ "label": "4,1",
+ "x": 11.25,
+ "y": 0
+ },
+ {
+ "label": "4,2",
+ "x": 12.25,
+ "y": 0
+ },
+ {
+ "label": "4,3",
+ "x": 13.25,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 0,
+ "y": 0.5
+ },
+ {
+ "label": "4,4",
+ "x": 14.25,
+ "y": 0.5
+ },
+ {
+ "label": "1,1",
+ "x": 1,
+ "y": 1
+ },
+ {
+ "label": "1,2",
+ "x": 2,
+ "y": 1
+ },
+ {
+ "label": "1,3",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "5,0",
+ "x": 10.25,
+ "y": 1
+ },
+ {
+ "label": "5,1",
+ "x": 11.25,
+ "y": 1
+ },
+ {
+ "label": "5,2",
+ "x": 12.25,
+ "y": 1
+ },
+ {
+ "label": "5,3",
+ "x": 13.25,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 0,
+ "y": 1.5
+ },
+ {
+ "label": "5,4",
+ "x": 14.25,
+ "y": 1.5
+ },
+ {
+ "label": "2,1",
+ "x": 1,
+ "y": 2
+ },
+ {
+ "label": "2,2",
+ "x": 2,
+ "y": 2
+ },
+ {
+ "label": "2,3",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "6,0",
+ "x": 10.25,
+ "y": 2
+ },
+ {
+ "label": "6,1",
+ "x": 11.25,
+ "y": 2
+ },
+ {
+ "label": "6,2",
+ "x": 12.25,
+ "y": 2
+ },
+ {
+ "label": "6,3",
+ "x": 13.25,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 0,
+ "y": 2.5
+ },
+ {
+ "label": "6,4",
+ "x": 14.25,
+ "y": 2.5
+ },
+ {
+ "label": "3,2",
+ "x": 3.5,
+ "y": 3.25
+ },
+ {
+ "label": "3,3",
+ "x": 4.5,
+ "y": 3.25
+ },
+ {
+ "label": "3,4",
+ "x": 5.5,
+ "y": 3.25
+ },
+ {
+ "label": "7,0",
+ "x": 8.5,
+ "y": 3.25
+ },
+ {
+ "label": "7,1",
+ "x": 9.5,
+ "y": 3.25
+ },
+ {
+ "label": "7,2",
+ "x": 10.5,
+ "y": 3.25
+ },
+ {
+ "label": "3,5",
+ "x": 3.5,
+ "y": 4.25
+ },
+ {
+ "label": "3,0",
+ "x": 4.5,
+ "y": 4.25
+ },
+ {
+ "label": "3,1",
+ "x": 5.5,
+ "y": 4.25
+ },
+ {
+ "label": "7,3",
+ "x": 8.5,
+ "y": 4.25
+ },
+ {
+ "label": "7,4",
+ "x": 9.5,
+ "y": 4.25
+ },
+ {
+ "label": "7,5",
+ "x": 10.5,
+ "y": 4.25
+ }
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/wylderbuilds/3x5_carbonfet/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/3x5_carbonfet/keymaps/vial/config.h
new file mode 100644
index 00000000000..8eae46aec00
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_carbonfet/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xD6, 0x3E, 0x59, 0x93, 0x8C, 0x9C, 0x5C, 0x31}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 3 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 3 }
diff --git a/keyboards/handwired/wylderbuilds/3x5_carbonfet/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/3x5_carbonfet/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..1cbb8e3cdce
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_carbonfet/keymaps/vial/keymap.c
@@ -0,0 +1,51 @@
+#include QMK_KEYBOARD_H
+
+#define _BASE 0
+#define _RAISE 1
+#define _LOWER 2
+
+#define SFT_ESC SFT_T(KC_ESC)
+#define CTL_BSPC CTL_T(KC_BSPC)
+#define ALT_SPC ALT_T(KC_SPC)
+#define SFT_ENT SFT_T(KC_ENT)
+
+#define KC_ML KC_MS_LEFT
+#define KC_MR KC_MS_RIGHT
+#define KC_MU KC_MS_UP
+#define KC_MD KC_MS_DOWN
+#define KC_MB1 KC_MS_BTN1
+#define KC_MB2 KC_MS_BTN2
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+#define ____ KC_TRANSPARENT
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_split_3x5_carbonfet(
+ 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_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ RAISE, KC_SPC, KC_BSPC, KC_DEL, KC_ENT, LOWER,
+ KC_LALT, KC_LCTL, KC_LGUI, KC_ESC, KC_DEL, KC_GRV
+ ),
+ [_RAISE] = LAYOUT_split_3x5_carbonfet(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ S(KC_9), S(KC_0), KC_LCBR, KC_RCBR, KC_EQL, KC_MINS, KC_4, KC_5, KC_6, KC_QUOT,
+ QK_RBT, QK_BOOT, KC_LBRC, KC_RBRC, ____, ____, KC_1, KC_2, KC_3, ____,
+ ____, ____, ____, ____, ____, ____,
+ QK_BOOT, ____, ____, ____, ____, ____
+ ),
+
+ [_LOWER] = LAYOUT_split_3x5_carbonfet(
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
+ S(KC_9), S(KC_0), KC_LBRC, KC_RBRC,KC_EQL, ____, KC_MINS, KC_EQL, KC_PIPE, ____,
+ ____, ____, ____, ____, ____, ____, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
+ ____, ____, ____, ____, ____, ____,
+ ____, ____, ____, ____, ____, QK_BOOT
+ )
+};
+void persistent_default_layer_set(uint16_t default_layer) {
+ eeconfig_update_default_layer(default_layer);
+ default_layer_set(default_layer);
+}
diff --git a/keyboards/handwired/wylderbuilds/3x5_carbonfet/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/3x5_carbonfet/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..d1c35cfd60d
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_carbonfet/keymaps/vial/rules.mk
@@ -0,0 +1,9 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/3x5_carbonfet/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/3x5_carbonfet/keymaps/vial/vial.json
new file mode 100644
index 00000000000..89f9271c277
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_carbonfet/keymaps/vial/vial.json
@@ -0,0 +1,129 @@
+{
+ "matrix": {
+ "rows": 8,
+ "cols": 6
+ },
+ "lighting": "vialrgb",
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 3x5 Carbonfet"
+ },
+ [
+ {
+ "x": 1
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 5.25
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ "4,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "0,0",
+ {
+ "x": 13.25
+ },
+ "4,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ {
+ "x": 5.25
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "1,0",
+ {
+ "x": 13.25
+ },
+ "5,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ {
+ "x": 5.25
+ },
+ "6,0",
+ {
+ "n": true
+ },
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "2,0",
+ {
+ "x": 13.25
+ },
+ "6,4"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 3.5
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ {
+ "x": 2
+ },
+ "7,0",
+ "7,1",
+ "7,2"
+ ],
+ [
+ {
+ "x": 3.5
+ },
+ "3,5",
+ "3,0",
+ "3,1",
+ {
+ "x": 2
+ },
+ "7,3",
+ "7,4",
+ "7,5"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/3x5_carbonfet/mcuconf.h b/keyboards/handwired/wylderbuilds/3x5_carbonfet/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_carbonfet/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/3x5_carbonfet/rules.mk b/keyboards/handwired/wylderbuilds/3x5_carbonfet/rules.mk
new file mode 100644
index 00000000000..55c9433ab27
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_carbonfet/rules.mk
@@ -0,0 +1,17 @@
+# MCU name
+SERIAL_DRIVER = vendor
+#MOUSEKEY_ENABLE = yes
+#CONSOLE_ENABLE = no
+#COMMAND_ENABLE = yes
+#BOOTMAGIC_ENABLE = yes
+OLED_ENABLE = no
+WPM_ENABLE = no
+# AUDIO_ENABLE = yes # Audio output
+
+#RGB_MATRIX_ENABLE = no # Enable WS2812 RGB matrix
+#RGB_MATRIX_DRIVER = WS2812
+
+#RGBLIGHT_SUPPORTED = yes
+#RGB_MATRIX_SUPPORTED = yes
+
+#LAYOUTS = split_3x5_3
diff --git a/keyboards/handwired/wylderbuilds/3x5_carbonfet/wylderbuilds-3x5-dactyl-manuform-wyld-track-encoder.json b/keyboards/handwired/wylderbuilds/3x5_carbonfet/wylderbuilds-3x5-dactyl-manuform-wyld-track-encoder.json
new file mode 100644
index 00000000000..d87d6eb9163
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x5_carbonfet/wylderbuilds-3x5-dactyl-manuform-wyld-track-encoder.json
@@ -0,0 +1,115 @@
+[
+ {
+ "name": "Wylderbuilds 3x5 Dactyl Manuform Wyld Track Encoder"
+ },
+ [
+ {
+ "x": 2
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 5.25
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ "4,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ {
+ "x": 13.25
+ },
+ "4,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 3.25
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ {
+ "x": 13.25
+ },
+ "5,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ {
+ "x": 0.5
+ },
+ "3,1",
+ {
+ "x": 3.75
+ },
+ "6,0",
+ {
+ "n": true
+ },
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ {
+ "x": 13.25
+ },
+ "6,4"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 4.5
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ {
+ "x": 2
+ },
+ "7,0",
+ "7,1",
+ "7,2"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/3x6_3/3x6_3.c b/keyboards/handwired/wylderbuilds/3x6_3/3x6_3.c
new file mode 100644
index 00000000000..69f3dadbeea
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x6_3/3x6_3.c
@@ -0,0 +1,18 @@
+/*
+Copyright 2021 @dlford
+
+This 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 "3x6_3.h"
+
diff --git a/keyboards/handwired/wylderbuilds/3x6_3/3x6_3.h b/keyboards/handwired/wylderbuilds/3x6_3/3x6_3.h
new file mode 100644
index 00000000000..38689ccaed9
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x6_3/3x6_3.h
@@ -0,0 +1,38 @@
+/*
+Copyright 2021 @dlford
+
+This 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_split_3x6_3( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+ L33, L34, L35, R30, R31, R32 \
+) { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { XXX, XXX, XXX, L33, L34, L35 }, \
+ { R00, R01, R02, R03, R04, R05 }, \
+ { R10, R11, R12, R13, R14, R15 }, \
+ { R20, R21, R22, R23, R24, R25 }, \
+ { R30, R31, R32, XXX, XXX, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/3x6_3/config.h b/keyboards/handwired/wylderbuilds/3x6_3/config.h
new file mode 100644
index 00000000000..79b85b495d2
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x6_3/config.h
@@ -0,0 +1,63 @@
+/*
+Copyright 2012 Jun Wako
+Copyright 2015 Jack Humbert
+Copyright 2021 @dlford
+This 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"
+
+// Communication
+// #define USE_I2C
+#define USE_SERIAL
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+#define SERIAL_USART_PIN_SWAP
+
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+//#define SPLIT_HAND_PIN_LOW_IS_LEFT
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 6
+
+// wiring of each half
+#define MATRIX_COL_PINS { GP3, GP4, GP5, GP6, GP7, GP8 }
+#define MATRIX_ROW_PINS { GP10, GP11, GP12, GP13 }
+
+#define DIODE_DIRECTION COL2ROW
+
+// WS2812 RGB LED strip input and number of LEDs
+//#define RGB_DI_PIN D3
+//#define DRIVER_LED_TOTAL 36
+//#define RGB_MATRIX_SPLIT { 18, 18 }
+//#define RGB_MATRIX_CENTER { 133, 54 }
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+//#undef LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_SUPPORT_ENABLE
+// Locking resynchronize hack
+#define LOCKING_RESYNC_ENABLE
+// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
diff --git a/keyboards/handwired/wylderbuilds/3x6_3/info.json b/keyboards/handwired/wylderbuilds/3x6_3/info.json
new file mode 100644
index 00000000000..5613a2cf588
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x6_3/info.json
@@ -0,0 +1,234 @@
+{
+ "keyboard_name": "Dactyl Minidox (3x6+3)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0036",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 8,
+ "cols": 6
+ },
+ "layouts": {
+ "LAYOUT_split_3x6_3": {
+ "layout": [
+ {
+ "label": "0,2",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,3",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 7,
+ "y": 0
+ },
+ {
+ "label": "4,0",
+ "x": 11,
+ "y": 0
+ },
+ {
+ "label": "4,1",
+ "x": 12,
+ "y": 0
+ },
+ {
+ "label": "4,2",
+ "x": 13,
+ "y": 0
+ },
+ {
+ "label": "4,3",
+ "x": 14,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 3,
+ "y": 0.5
+ },
+ {
+ "label": "4,4",
+ "x": 15,
+ "y": 0.5
+ },
+ {
+ "label": "4,5",
+ "x": 16,
+ "y": 0.5
+ },
+ {
+ "label": "1,2",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,3",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 7,
+ "y": 1
+ },
+ {
+ "label": "5,0",
+ "x": 11,
+ "y": 1
+ },
+ {
+ "label": "5,1",
+ "x": 12,
+ "y": 1
+ },
+ {
+ "label": "5,2",
+ "x": 13,
+ "y": 1
+ },
+ {
+ "label": "5,3",
+ "x": 14,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 3,
+ "y": 1.5
+ },
+ {
+ "label": "5,4",
+ "x": 15,
+ "y": 1.5
+ },
+ {
+ "label": "5,5",
+ "x": 16,
+ "y": 1.5
+ },
+ {
+ "label": "2,2",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,3",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 7,
+ "y": 2
+ },
+ {
+ "label": "6,0",
+ "x": 11,
+ "y": 2
+ },
+ {
+ "label": "6,1",
+ "x": 12,
+ "y": 2
+ },
+ {
+ "label": "6,2",
+ "x": 13,
+ "y": 2
+ },
+ {
+ "label": "6,3",
+ "x": 14,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 3,
+ "y": 2.5
+ },
+ {
+ "label": "6,4",
+ "x": 15,
+ "y": 2.5
+ },
+ {
+ "label": "6,5",
+ "x": 16,
+ "y": 2.5
+ },
+ {
+ "label": "3,3",
+ "x": 7,
+ "y": 1.25
+ },
+ {
+ "label": "3,4",
+ "x": 8,
+ "y": 1.25
+ },
+ {
+ "label": "3,5",
+ "x": 9,
+ "y": 1.25
+ },
+ {
+ "label": "7,0",
+ "x": 8.5,
+ "y": 6.25
+ },
+ {
+ "label": "7,1",
+ "x": 9.5,
+ "y": 6.25
+ },
+ {
+ "label": "7,2",
+ "x": 10.5,
+ "y": 6.25
+ }
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/wylderbuilds/3x6_3/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/3x6_3/keymaps/vial/config.h
new file mode 100644
index 00000000000..46a2e1172b9
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x6_3/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xCE, 0xE8, 0x2F, 0xFC, 0x13, 0x08, 0xF2, 0x39}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 3 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 3 }
diff --git a/keyboards/handwired/wylderbuilds/3x6_3/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/3x6_3/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..49b03164afa
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x6_3/keymaps/vial/keymap.c
@@ -0,0 +1,36 @@
+#include QMK_KEYBOARD_H
+
+#include "3x6_3.h"
+
+#define _QWERTY 0
+#define _RAISE 1
+#define _LOWER 2
+
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+#define ____ KC_TRANSPARENT
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_split_3x6_3(
+ KC_ESC , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_MINS,
+ 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_BSLS,
+ RAISE, KC_SPC, KC_TAB, KC_LCTRL, KC_ENT, LOWER
+ ),
+ [_RAISE] = LAYOUT_split_3x6_3(
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,
+ QK_BOOT,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,
+ _______,_______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [_LOWER] = LAYOUT_split_3x6_3(
+ KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,QK_BOOT,
+ _______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,KC_VOLD,KC_VOLU,
+ _______, _______, _______, _______, _______, _______
+ )
+};
+
diff --git a/keyboards/handwired/wylderbuilds/3x6_3/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/3x6_3/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x6_3/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/3x6_3/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/3x6_3/keymaps/vial/vial.json
new file mode 100644
index 00000000000..2a63fc9c894
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x6_3/keymaps/vial/vial.json
@@ -0,0 +1,128 @@
+{
+ "matrix": {
+ "rows": 8,
+ "cols": 6
+ },
+ "layouts": {
+ "keymap":[
+ {
+ "name": "Wylderbuilds 3x6_3 Dactyl Manuform"
+ },
+ [
+ {
+ "x": 4
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 3
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ "4,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 11
+ },
+ "4,4",
+ "4,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 3
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 11
+ },
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "2,2",
+ {
+ "n": true
+ },
+ "2,3",
+ "2,4",
+ "2,5",
+ {
+ "x": 3
+ },
+ "6,0",
+ {
+ "n": true
+ },
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 11
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "r": 15,
+ "y": -2.25,
+ "x": 7
+ },
+ "3,3",
+ "3,4",
+ "3,5"
+ ],
+ [
+ {
+ "r": -15,
+ "y": 4,
+ "x": 8.5
+ },
+ "7,0",
+ "7,1",
+ "7,2"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/3x6_3/mcuconf.h b/keyboards/handwired/wylderbuilds/3x6_3/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x6_3/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/3x6_3/rules.mk b/keyboards/handwired/wylderbuilds/3x6_3/rules.mk
new file mode 100644
index 00000000000..ad86505b7f2
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/3x6_3/rules.mk
@@ -0,0 +1,27 @@
+# MCU name
+MCU = RP2040
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+F_CPU = 8000000
+SPLIT_KEYBOARD = yes
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+# AUDIO_ENABLE = yes # Audio output
+
+RGB_MATRIX_ENABLE = no # Enable WS2812 RGB matrix
+#RGB_MATRIX_DRIVER = WS2812
+
+#RGBLIGHT_SUPPORTED = yes
+#RGB_MATRIX_SUPPORTED = yes
+
+#LAYOUTS = split_3x5_3
diff --git a/keyboards/handwired/wylderbuilds/4x5/4x5.c b/keyboards/handwired/wylderbuilds/4x5/4x5.c
new file mode 100644
index 00000000000..3170eb93998
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x5/4x5.c
@@ -0,0 +1 @@
+#include "4x5.h"
diff --git a/keyboards/handwired/wylderbuilds/4x5/4x5.h b/keyboards/handwired/wylderbuilds/4x5/4x5.h
new file mode 100644
index 00000000000..89e06f3884b
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x5/4x5.h
@@ -0,0 +1,27 @@
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_4x5( \
+ L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \
+ L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \
+ L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \
+ L32, L33, R32, R33, \
+ L34, L35, R30, R31, \
+ L44, L45, R40, R41, \
+ L42, L43, R42, R43 \
+) { \
+ { L00, L01, L02, L03, L04 }, \
+ { L10, L11, L12, L13, L14 }, \
+ { L20, L21, L22, L23, L24 }, \
+ { XXX, L32, L33, L34, L35 }, \
+ { XXX, L42, L43, L44, L45 }, \
+\
+ { R00, R01, R02, R03, R04 }, \
+ { R10, R11, R12, R13, R14 }, \
+ { R20, R21, R22, R23, R24 }, \
+ { R30, R31, R32, R33, XXX }, \
+ { R40, R41, R42, R43, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/4x5/README.md b/keyboards/handwired/wylderbuilds/4x5/README.md
new file mode 100644
index 00000000000..22be47a9470
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x5/README.md
@@ -0,0 +1,32 @@
+# pico/handwired/dactyl_manuform/5x6
+
+Just a dactyl_manform 5x6 but instead of default MCU being used, it's a Pico Pi
+
+* Hardware Supported: Pico Pi
+* Hardware Availability: https://www.raspberrypi.com/products/raspberry-pi-pico/
+
+Make example for this keyboard (after setting up your build environment):
+
+ make pico/handwired/dactyl_manuform/5x6:default
+
+Flashing example for this keyboard:
+
+ make pico/handwired/dactyl_manuform/5x6: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).
+
+# Credit section
+The doge keymap, have sections in the keymap.c that is from other people go support them.
+
+1. OLED(Optional) section in keymap.c
+in keymap OLED(Optional) section is from HellTM
+
+2. tap-dance section in keymap.c
+in keymap tap-dance section is from Walker's Keyboard Science
+
+3. leader and combo section in keymap.c
+in keymap leader and combo section is from Terminal_Heat_Sink
+
+4. BongoCat in keymap.c
+in keymap OLED(Optional) BongoCat section is from mechwild \
+keymap
diff --git a/keyboards/handwired/wylderbuilds/4x5/config.h b/keyboards/handwired/wylderbuilds/4x5/config.h
new file mode 100644
index 00000000000..aeb16eaa6d0
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x5/config.h
@@ -0,0 +1,84 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+//#include "config_common.h"
+
+//#define PRODUCT_ID 0x0004
+
+// Basic Config
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP16
+#define SERIAL_USART_RX_PIN GP17
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+#define SERIAL_USART_PIN_SWAP
+
+// RP2040 Settings
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+// More RP2040 Settings
+#define RP2040_FLASH_AT25SF128A
+#define RP2040_FLASH_GD25Q64CS
+#define RP2040_FLASH_W25X10CL
+#define RP2040_FLASH_IS25LP080
+#define RP2040_FLASH_GENERIC_03H
+
+// Bootmagic keys
+#define BOOTMAGIC_LITE_ROW 0 // Esc key on left side
+#define BOOTMAGIC_LITE_COLUMN 0
+#define BOOTMAGIC_LITE_ROW_RIGHT 5 // P key on right side
+#define BOOTMAGIC_LITE_COLUMN_RIGHT 4
+
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 5
+// Matrix COL and ROW
+#define MATRIX_COL_PINS { GP3, GP4, GP5, GP6, GP7 }
+#define MATRIX_ROW_PINS { GP10, GP11, GP12, GP13, GP14 }
+#define DIODE_DIRECTION COL2ROW
+
+// WS2812 RGB LED strip input and number of LEDs
+#ifdef RGBLIGHT_ENABLE
+#define RGB_DI_PIN GP17
+#define RGBLED_NUM 34
+//#define DRIVER_LED_TOTAL 34
+#define RGBLED_SPLIT { 17, 17 }
+#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+#define NOP_FUDGE 0.4
+#endif
+
+// OLED Pins and Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD1
+#define I2C1_SDA_PIN GP18
+#define I2C1_SCL_PIN GP19
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+// Misc settings -=hy
+// 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
+// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/4x5/info.json b/keyboards/handwired/wylderbuilds/4x5/info.json
new file mode 100644
index 00000000000..7438e7bbe19
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x5/info.json
@@ -0,0 +1,74 @@
+{
+ "keyboard_name": "Dactyl-Manuform (4x5)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "bootloader": "rp2040",
+ "processor": "RP2040",
+ "usb": { "vid": "0x9953", "pid": "0x0004", "device_version": "0.0.1" },
+ "layouts": {
+ "LAYOUT_4x5": {
+ "layout": [
+ {"x": 0, "y": 0},
+ {"x": 1, "y": 0},
+ {"x": 2, "y": 0},
+ {"x": 3, "y": 0},
+ {"x": 4, "y": 0},
+
+ {"x": 11, "y": 0},
+ {"x": 12, "y": 0},
+ {"x": 13, "y": 0},
+ {"x": 14, "y": 0},
+ {"x": 15, "y": 0},
+
+ {"x": 0, "y": 1},
+ {"x": 1, "y": 1},
+ {"x": 2, "y": 1},
+ {"x": 3, "y": 1},
+ {"x": 4, "y": 1},
+
+ {"x": 11, "y": 1},
+ {"x": 12, "y": 1},
+ {"x": 13, "y": 1},
+ {"x": 14, "y": 1},
+ {"x": 15, "y": 1},
+
+ {"x": 0, "y": 2},
+ {"x": 1, "y": 2},
+ {"x": 2, "y": 2},
+ {"x": 3, "y": 2},
+ {"x": 4, "y": 2},
+
+ {"x": 11, "y": 2},
+ {"x": 12, "y": 2},
+ {"x": 13, "y": 2},
+ {"x": 14, "y": 2},
+ {"x": 15, "y": 2},
+
+ {"x": 2, "y": 3},
+ {"x": 3, "y": 3},
+
+ {"x": 13, "y": 3},
+ {"x": 14, "y": 3},
+
+ {"x": 4, "y": 4},
+ {"x": 5, "y": 4},
+
+ {"x": 11, "y": 4},
+ {"x": 12, "y": 4},
+
+ {"x": 6, "y": 5},
+ {"x": 7, "y": 5},
+
+ {"x": 9, "y": 5},
+ {"x": 10, "y": 5},
+
+ {"x": 6, "y": 6},
+ {"x": 7, "y": 6},
+
+ {"x": 9, "y": 6},
+ {"x": 10, "y": 6}
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/wylderbuilds/4x5/keymaps/default/keymap.c b/keyboards/handwired/wylderbuilds/4x5/keymaps/default/keymap.c
new file mode 100644
index 00000000000..b47c82363bb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x5/keymaps/default/keymap.c
@@ -0,0 +1,117 @@
+#include QMK_KEYBOARD_H
+
+#define _BASE 0
+#define _RAISE 1
+#define _LOWER 2
+
+#define SFT_ESC SFT_T(KC_ESC)
+#define CTL_BSPC CTL_T(KC_BSPC)
+#define ALT_SPC ALT_T(KC_SPC)
+#define SFT_ENT SFT_T(KC_ENT)
+
+#define KC_ML KC_MS_LEFT
+#define KC_MR KC_MS_RIGHT
+#define KC_MU KC_MS_UP
+#define KC_MD KC_MS_DOWN
+#define KC_MB1 KC_MS_BTN1
+#define KC_MB2 KC_MS_BTN2
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base (qwerty)
+ * ,----------------------------------, ,----------------------------------,
+ * | 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 | BS | | SPACE|ENTER |
+ * | + | + | | + | + |
+ * | SHIFT| CTRL | | ALT |SHIFT |
+ * '------+------' '------+------'
+ * '------+------' '------+------'
+ * | TAB | HOME | | END | DEL |
+ * '------+------' '------+------'
+ * | Raise| ~ | | GUI | Lower|
+ * '------+------' '------+------'
+ */
+ [_BASE] = LAYOUT_4x5(
+ 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_N, KC_M, KC_COMM, KC_DOT, KC_QUOT,
+ KC_LBRC, KC_RBRC, KC_MINS, KC_EQL,
+ SFT_ESC, CTL_BSPC, ALT_SPC, SFT_ENT,
+ KC_TAB, KC_HOME, KC_END, KC_DEL,
+ RAISE, KC_GRV, KC_LGUI, LOWER
+ ),
+
+ /* Raise
+ * ,----------------------------------, ,----------------------------------,
+ * | | | mup | | | | VOL+ | | up | | PgUp |
+ * |------+------+------+------+------| |-------------+------+------+------|
+ * | | mleft| mdown|mright| | | MUTE | left | down |right | PgDn |
+ * |------+------+------+------+------| |------|------+------+------+------|
+ * | | | | | | | VOL- | / | \ | ? | | |
+ * |------+------+------+-------------, ,-------------+------+------+------,
+ * | | | | mbtn |mbtn2 |
+ * '------+------'-------------' '-------------'------+------'
+ * | | | | | |
+ * | | | | | |
+ * | | | | | |
+ * '------+------' '------+------'
+ * '------+------' '------+------'
+ * | | | | | |
+ * '------+------' '------+------'
+ * | | | | | |
+ * '------+------' '------+------'
+ */
+ [_RAISE] = LAYOUT_4x5(
+ _______, _______, KC_MU, _______, _______, KC_VOLU, _______, KC_UP, _______, KC_PGUP,
+ _______, KC_ML, KC_MD, KC_MR, _______, KC_MUTE, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN,
+ _______, _______, _______, _______, _______, KC_VOLD, KC_SLSH, KC_BSLS, KC_QUES, KC_PIPE,
+ _______, _______, KC_MB1, KC_MB2,
+ QK_BOOT, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ /* Lower
+ * ,----------------------------------, ,----------------------------------,
+ * | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 |
+ * |------+------+------+------+------| |-------------+------+------+------|
+ * | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 |
+ * |------+------+------+------+------| |------|------+------+------+------|
+ * | ! | @ | # | $ | % | | ^ | & | * | ( | ) |
+ * |------+------+------+-------------, ,-------------+------+------+------,
+ * | F11 | F12 | | - | = |
+ * '------+------'-------------' '-------------'------+------'
+ * | | | | | |
+ * | | | | | |
+ * | | | | | |
+ * '------+------' '------+------'
+ * '------+------' '------+------'
+ * | | | | | |
+ * '------+------' '------+------'
+ * | | | | | |
+ * '------+------' '------+------'
+ */
+ [_LOWER] = LAYOUT_4x5(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
+ KC_F11, KC_F12, _______, _______,
+ _______, _______, _______, QK_BOOT,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______
+ )
+};
+
+void persistent_default_layer_set(uint16_t default_layer) {
+ eeconfig_update_default_layer(default_layer);
+ default_layer_set(default_layer);
+}
diff --git a/keyboards/handwired/wylderbuilds/4x5/mcuconf.h b/keyboards/handwired/wylderbuilds/4x5/mcuconf.h
new file mode 100644
index 00000000000..8fb3e3eb04a
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x5/mcuconf.h
@@ -0,0 +1,11 @@
+#pragma once
+
+#include_next
+
+#ifdef OLED_ENABLE
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 TRUE
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 FALSE
+#endif
diff --git a/keyboards/handwired/wylderbuilds/4x5/rules.mk b/keyboards/handwired/wylderbuilds/4x5/rules.mk
new file mode 100644
index 00000000000..10e7fe2a95e
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x5/rules.mk
@@ -0,0 +1,19 @@
+# Bootloader and MCU
+MCU = RP2040
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+F_CPU = 8000000
+SPLIT_KEYBOARD = yes
+
+# Drivers for components
+OLED_DRIVER = SSD1306
+OLED_DRIVER = no
+# Needed for OLED setup
+WPM_ENABLE = no
+
+# VIA_ENABLE = yes # not yet
+# RGB Light
+RGBLIGHT_ENABLE = no
+
+# Opt defs, comment out you're if not using OLED screen for the dactyl_manuform.
+OPT_DEFS += -DHAL_USE_I2C=TRUE
diff --git a/keyboards/handwired/wylderbuilds/4x5_5/4x5_5.c b/keyboards/handwired/wylderbuilds/4x5_5/4x5_5.c
new file mode 100644
index 00000000000..d380f39db74
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x5_5/4x5_5.c
@@ -0,0 +1 @@
+#include "4x5_5.h"
diff --git a/keyboards/handwired/wylderbuilds/4x5_5/4x5_5.h b/keyboards/handwired/wylderbuilds/4x5_5/4x5_5.h
new file mode 100644
index 00000000000..7d80cc97eef
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x5_5/4x5_5.h
@@ -0,0 +1,27 @@
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT( \
+ L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \
+ L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \
+ L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \
+ L31, L32, R32, R33, \
+ L33, R31, \
+ L34, L44, R40, R30, \
+ L42, L43, R41, R42 \
+) { \
+ { L00, L01, L02, L03, L04 }, \
+ { L10, L11, L12, L13, L14 }, \
+ { L20, L21, L22, L23, L24 }, \
+ { XXX, L31, L32, L33, L34 }, \
+ { XXX, XXX, L42, L43, L44 }, \
+\
+ { R00, R01, R02, R03, R04 }, \
+ { R10, R11, R12, R13, R14 }, \
+ { R20, R21, R22, R23, R24 }, \
+ { R30, R31, R32, R33, XXX }, \
+ { R40, R41, R42, XXX, XXX }, \
+}
diff --git a/keyboards/handwired/wylderbuilds/4x5_5/README.md b/keyboards/handwired/wylderbuilds/4x5_5/README.md
new file mode 100644
index 00000000000..22be47a9470
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x5_5/README.md
@@ -0,0 +1,32 @@
+# pico/handwired/dactyl_manuform/5x6
+
+Just a dactyl_manform 5x6 but instead of default MCU being used, it's a Pico Pi
+
+* Hardware Supported: Pico Pi
+* Hardware Availability: https://www.raspberrypi.com/products/raspberry-pi-pico/
+
+Make example for this keyboard (after setting up your build environment):
+
+ make pico/handwired/dactyl_manuform/5x6:default
+
+Flashing example for this keyboard:
+
+ make pico/handwired/dactyl_manuform/5x6: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).
+
+# Credit section
+The doge keymap, have sections in the keymap.c that is from other people go support them.
+
+1. OLED(Optional) section in keymap.c
+in keymap OLED(Optional) section is from HellTM
+
+2. tap-dance section in keymap.c
+in keymap tap-dance section is from Walker's Keyboard Science
+
+3. leader and combo section in keymap.c
+in keymap leader and combo section is from Terminal_Heat_Sink
+
+4. BongoCat in keymap.c
+in keymap OLED(Optional) BongoCat section is from mechwild \
+keymap
diff --git a/keyboards/handwired/wylderbuilds/4x5_5/config.h b/keyboards/handwired/wylderbuilds/4x5_5/config.h
new file mode 100644
index 00000000000..7c97a8f0937
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x5_5/config.h
@@ -0,0 +1,48 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+#include "config_common.h"
+
+//#define PRODUCT_ID 0x0004
+
+// Basic Config
+//#define SPLIT_HAND_PIN GP26 // high = left, low = right
+
+#define USE_SERIAL
+#define SPLIT_HAND_PIN GP29 // high = left, low = right
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+#define SERIAL_USART_PIN_SWAP
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 5
+
+// wiring of each half
+#define MATRIX_COL_PINS { GP5, GP6, GP7, GP8, GP9 }
+#define MATRIX_ROW_PINS { GP26, GP18, GP20, GP19, GP10 }
+
+#define DIODE_DIRECTION COL2ROW
+
+// WS2812 RGB LED strip input and number of LEDs
+
+// Misc settings -=hy
+// 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
+// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/4x5_5/info.json b/keyboards/handwired/wylderbuilds/4x5_5/info.json
new file mode 100644
index 00000000000..3925c51b711
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x5_5/info.json
@@ -0,0 +1,243 @@
+{
+ "keyboard_name": "Dactyl-Manuform (4x5)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0004",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 10,
+ "cols": 5
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {
+ "label": "0,1",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,2",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,3",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "5,0",
+ "x": 12.75,
+ "y": 0
+ },
+ {
+ "label": "5,1",
+ "x": 13.75,
+ "y": 0
+ },
+ {
+ "label": "5,2",
+ "x": 14.75,
+ "y": 0
+ },
+ {
+ "label": "5,3",
+ "x": 15.75,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "5,4",
+ "x": 16.75,
+ "y": 0.5
+ },
+ {
+ "label": "1,1",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,2",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,3",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "6,0",
+ "x": 12.75,
+ "y": 1
+ },
+ {
+ "label": "6,1",
+ "x": 13.75,
+ "y": 1
+ },
+ {
+ "label": "6,2",
+ "x": 14.75,
+ "y": 1
+ },
+ {
+ "label": "6,3",
+ "x": 15.75,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "6,4",
+ "x": 16.75,
+ "y": 1.5
+ },
+ {
+ "label": "2,1",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,2",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,3",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "7,0",
+ "x": 12.75,
+ "y": 2
+ },
+ {
+ "label": "7,1",
+ "x": 13.75,
+ "y": 2
+ },
+ {
+ "label": "7,2",
+ "x": 14.75,
+ "y": 2
+ },
+ {
+ "label": "7,3",
+ "x": 15.75,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "7,4",
+ "x": 16.75,
+ "y": 2.5
+ },
+ {
+ "label": "3,1",
+ "x": 3,
+ "y": 3
+ },
+ {
+ "label": "3,2",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "8,2",
+ "x": 14.75,
+ "y": 3
+ },
+ {
+ "label": "8,3",
+ "x": 15.75,
+ "y": 3
+ },
+ {
+ "label": "3,3",
+ "x": 6,
+ "y": 2.75
+ },
+ {
+ "label": "9,2",
+ "x": 13.25,
+ "y": 2.5
+ },
+ {
+ "label": "9,1",
+ "x": 12.25,
+ "y": 2.5
+ },
+ {
+ "label": "9,0",
+ "x": 12.75,
+ "y": 1.25
+ },
+ {
+ "label": "8,0",
+ "x": 13.75,
+ "y": 1.25
+ },
+ {
+ "label": "3,4",
+ "x": 4.5,
+ "y": 6.5
+ },
+ {
+ "label": "4,4",
+ "x": 5.5,
+ "y": 6.5
+ },
+ {
+ "label": "4,2",
+ "x": 5.25,
+ "y": 7.5
+ },
+ {
+ "label": "4,3",
+ "x": 6.25,
+ "y": 7.5
+ },
+ {
+ "label": "8,1",
+ "x": 12.75,
+ "y": 5
+ }
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/wylderbuilds/4x5_5/keymaps/default/keymap.c b/keyboards/handwired/wylderbuilds/4x5_5/keymaps/default/keymap.c
new file mode 100644
index 00000000000..198301c5abe
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x5_5/keymaps/default/keymap.c
@@ -0,0 +1,109 @@
+#include QMK_KEYBOARD_H
+
+#define _BASE 0
+#define _RAISE 1
+#define _LOWER 2
+
+#define SFT_ESC SFT_T(KC_ESC)
+#define CTL_BSPC CTL_T(KC_BSPC)
+#define ALT_SPC ALT_T(KC_SPC)
+#define SFT_ENT SFT_T(KC_ENT)
+
+#define KC_ML KC_MS_LEFT
+#define KC_MR KC_MS_RIGHT
+#define KC_MU KC_MS_UP
+#define KC_MD KC_MS_DOWN
+#define KC_MB1 KC_MS_BTN1
+#define KC_MB2 KC_MS_BTN2
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+#define ____ KC_TRANSPARENT
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base (qwerty)
+ * ,----------------------------------, ,----------------------------------,
+ * | 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 | | BSPC |
+ * |-------------, ,------+------|
+ * | TAB | GUI | | SHIFT| SPACE|
+ * |------+------| |------+------|
+ * | CTRL | RAISE| | LOWER| ENTER|
+ * '-------------' '-------------'
+ */
+ [_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_SCLN,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ KC_LBRC, KC_RBRC, KC_QUOT, KC_GRV,
+ SFT_ESC, KC_BSPC,
+ KC_TAB, KC_LGUI, KC_RSFT, KC_SPC,
+ KC_LCTRL, RAISE, LOWER, KC_ENT
+ ),
+
+ /* RAISE
+ * ,----------------------------------, ,----------------------------------,
+ * | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | ( | ) | { | } | = | | - | 4 | 5 | 6 | ; |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | QK_BOOT| BOOT | [ | ] | | | | 1 | 2 | 3 | |
+ * |------+------+------+-------------| |------+------+------+------+------,
+ * | | | | 0 | . |
+ * '-------------+------, ,------|-------------'
+ * | QK_BOOT | | BSPC |
+ * |-------------, ,------+------|
+ * | GUI | TAB | | SHIFT| SPACE|
+ * |------+------| |------+------|
+ * | CTRL | RAISE| | LOWER| ENTER|
+ * '-------------' '-------------'
+ */
+ [_RAISE] = LAYOUT(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ S(KC_9), S(KC_0), KC_LCBR, KC_RCBR, KC_EQL, KC_MINS, KC_4, KC_5, KC_6, KC_QUOT,
+ QK_RBT, QK_BOOT, KC_LBRC, KC_RBRC, ____, ____, KC_1, KC_2, KC_3, ____,
+ ____, ____, KC_0, KC_DOT,
+ QK_BOOT, ____,
+ ____, ____, ____, ____,
+ ____, ____, ____, ____
+ ),
+
+ /* LOWER
+ * ,----------------------------------, ,----------------------------------,
+ * | ! | @ | # | $ | % | | ^ | & | * | ( | ) |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | ( | ) | { | } | = | | | - | + | | | |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | | | | | | | | LEFT | DOWN | UP | RIGHT|
+ * |------+------+------+-------------| |------+------+------+------+------,
+ * | | | | | |
+ * '-------------+------, ,------|-------------'
+ * | ESC | | QK_BOOT |
+ * |-------------, ,------+------|
+ * | GUI | TAB | | SHIFT| SPACE|
+ * |------+------| |------+------|
+ * | CTRL | RAISE| | LOWER| ENTER|
+ * '-------------' '-------------'
+ */
+ [_LOWER] = LAYOUT(
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
+ S(KC_9), S(KC_0), KC_LBRC, KC_RBRC, KC_EQL, ____, KC_MINS, KC_EQL, KC_PIPE, ____,
+ ____, ____, ____, ____, ____, ____, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
+ ____, ____, ____, ____,
+ ____, QK_BOOT,
+ ____, ____, ____, ____,
+ ____, ____, ____, ____
+ )
+};
+void persistent_default_layer_set(uint16_t default_layer) {
+ eeconfig_update_default_layer(default_layer);
+ default_layer_set(default_layer);
+}
diff --git a/keyboards/handwired/wylderbuilds/4x5_5/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/4x5_5/keymaps/vial/config.h
new file mode 100644
index 00000000000..2769a080406
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x5_5/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x08, 0x28, 0x6B, 0xE3, 0x82, 0x5A, 0x33, 0xE7}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 4 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 4 }
diff --git a/keyboards/handwired/wylderbuilds/4x5_5/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/4x5_5/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..5ddf94fd424
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x5_5/keymaps/vial/keymap.c
@@ -0,0 +1,109 @@
+#include QMK_KEYBOARD_H
+
+#define _BASE 0
+#define _RAISE 1
+#define _LOWER 2
+
+#define SFT_ESC SFT_T(KC_ESC)
+#define CTL_BSPC CTL_T(KC_BSPC)
+#define ALT_SPC ALT_T(KC_SPC)
+#define SFT_ENT SFT_T(KC_ENT)
+
+#define KC_ML KC_MS_LEFT
+#define KC_MR KC_MS_RIGHT
+#define KC_MU KC_MS_UP
+#define KC_MD KC_MS_DOWN
+#define KC_MB1 KC_MS_BTN1
+#define KC_MB2 KC_MS_BTN2
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+#define ____ KC_TRANSPARENT
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base (qwerty)
+ * ,----------------------------------, ,----------------------------------,
+ * | 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 | | BSPC |
+ * |-------------, ,------+------|
+ * | TAB | GUI | | SHIFT| SPACE|
+ * |------+------| |------+------|
+ * | CTRL | RAISE| | LOWER| ENTER|
+ * '-------------' '-------------'
+ */
+ [_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_SCLN,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ KC_LBRC, KC_RBRC, KC_QUOT, KC_GRV,
+ SFT_ESC, KC_BSPC,
+ KC_TAB, KC_LGUI, KC_RSFT, KC_SPC,
+ KC_LCTRL, RAISE, LOWER, KC_ENT
+ ),
+
+ /* RAISE
+ * ,----------------------------------, ,----------------------------------,
+ * | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | ( | ) | { | } | = | | - | 4 | 5 | 6 | ; |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | QK_BOOT| BOOT | [ | ] | | | | 1 | 2 | 3 | |
+ * |------+------+------+-------------| |------+------+------+------+------,
+ * | | | | 0 | . |
+ * '-------------+------, ,------|-------------'
+ * | QK_BOOT | | BSPC |
+ * |-------------, ,------+------|
+ * | GUI | TAB | | SHIFT| SPACE|
+ * |------+------| |------+------|
+ * | CTRL | RAISE| | LOWER| ENTER|
+ * '-------------' '-------------'
+ */
+ [_RAISE] = LAYOUT(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ S(KC_9), S(KC_0), KC_LCBR, KC_RCBR, KC_EQL, KC_MINS, KC_4, KC_5, KC_6, KC_QUOT,
+ QK_RBT, QK_BOOT, KC_LBRC, KC_RBRC, ____, ____, KC_1, KC_2, KC_3, ____,
+ ____, ____, KC_0, KC_DOT,
+ QK_BOOT, ____,
+ ____, ____, ____, ____,
+ ____, ____, ____, ____
+ ),
+
+ /* LOWER
+ * ,----------------------------------, ,----------------------------------,
+ * | ! | @ | # | $ | % | | ^ | & | * | ( | ) |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | ( | ) | { | } | = | | | - | + | | | |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | | | | | | | | LEFT | DOWN | UP | RIGHT|
+ * |------+------+------+-------------| |------+------+------+------+------,
+ * | | | | | |
+ * '-------------+------, ,------|-------------'
+ * | ESC | | QK_BOOT |
+ * |-------------, ,------+------|
+ * | GUI | TAB | | SHIFT| SPACE|
+ * |------+------| |------+------|
+ * | CTRL | RAISE| | LOWER| ENTER|
+ * '-------------' '-------------'
+ */
+ [_LOWER] = LAYOUT(
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
+ S(KC_9), S(KC_0), KC_LBRC, KC_RBRC, KC_EQL, ____, KC_MINS, KC_EQL, KC_PIPE, ____,
+ ____, ____, ____, ____, ____, ____, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
+ ____, ____, ____, ____,
+ ____, QK_BOOT,
+ ____, ____, ____, ____,
+ ____, ____, ____, ____
+ )
+};
+void persistent_default_layer_set(uint16_t default_layer) {
+ eeconfig_update_default_layer(default_layer);
+ default_layer_set(default_layer);
+}
diff --git a/keyboards/handwired/wylderbuilds/4x5_5/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/4x5_5/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x5_5/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/4x5_5/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/4x5_5/keymaps/vial/vial.json
new file mode 100644
index 00000000000..ce382aeb0ff
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x5_5/keymaps/vial/vial.json
@@ -0,0 +1,174 @@
+{
+ "matrix": {
+ "rows": 10,
+ "cols": 5
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 4x5_5 Standard",
+ "author": "https://wylderbuilds.com"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 5.75
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "0,0",
+ {
+ "x": 13.75
+ },
+ "5,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "1,0",
+ {
+ "x": 13.75
+ },
+ "6,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,1",
+ "2,2",
+ {
+ "n": true
+ },
+ "2,3",
+ "2,4",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ {
+ "n": true
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "2,0",
+ {
+ "x": 13.75
+ },
+ "7,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,1",
+ "3,2",
+ {
+ "x": 9.75
+ },
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -1.25,
+ "x": 6
+ },
+ "3,3"
+ ],
+ [
+ {
+ "r": 15.3,
+ "y": -1.25,
+ "x": 13.25
+ },
+ "9,2"
+ ],
+ [
+ {
+ "r": 15.4,
+ "y": -1,
+ "x": 12.25
+ },
+ "9,1"
+ ],
+ [
+ {
+ "r": 15.5,
+ "y": -2.25,
+ "x": 12.75
+ },
+ "9,0",
+ "8,0"
+ ],
+ [
+ {
+ "r": -15,
+ "y": 4.25,
+ "x": 4.5
+ },
+ "3,4",
+ "4,4"
+ ],
+ [
+ {
+ "r": -13,
+ "x": 5.25
+ },
+ "4,2",
+ "4,3"
+ ],
+ [
+ {
+ "r": -6.5,
+ "y": -3.5,
+ "x": 12.75
+ },
+ "8,1"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/4x5_5/rules.mk b/keyboards/handwired/wylderbuilds/4x5_5/rules.mk
new file mode 100644
index 00000000000..7386062769b
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x5_5/rules.mk
@@ -0,0 +1,26 @@
+MCU = RP2040
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+F_CPU = 8000000
+SPLIT_KEYBOARD = yes
+
+# 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
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+# AUDIO_ENABLE = yes # Audio output
+
+RGB_MATRIX_ENABLE = no # Enable WS2812 RGB matrix
+#RGB_MATRIX_DRIVER = WS2812
+
+#RGBLIGHT_SUPPORTED = yes
+#RGB_MATRIX_SUPPORTED = yes
+
+#LAYOUTS = split_3x5_3
diff --git a/keyboards/handwired/wylderbuilds/4x6/4x6.c b/keyboards/handwired/wylderbuilds/4x6/4x6.c
new file mode 100644
index 00000000000..5e68c1a9fa2
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x6/4x6.c
@@ -0,0 +1 @@
+#include "4x6.h"
diff --git a/keyboards/handwired/wylderbuilds/4x6/4x6.h b/keyboards/handwired/wylderbuilds/4x6/4x6.h
new file mode 100644
index 00000000000..a3efa58d9b8
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x6/4x6.h
@@ -0,0 +1,27 @@
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_4x6( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+ L32, L33, R32, R33, \
+ L34, L35, R30, R31, \
+ L44, L45, R40, R41, \
+ L42, L43, R42, R43 \
+) { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { XXX, XXX, L32, L33, L34, L35 }, \
+ { XXX, XXX, L42, L43, L44, L45 }, \
+\
+ { R00, R01, R02, R03, R04, R05 }, \
+ { R10, R11, R12, R13, R14, R15 }, \
+ { R20, R21, R22, R23, R24, R25 }, \
+ { R30, R31, R32, R33, XXX, XXX }, \
+ { R40, R41, R42, R43, XXX, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/4x6/README.md b/keyboards/handwired/wylderbuilds/4x6/README.md
new file mode 100644
index 00000000000..22be47a9470
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x6/README.md
@@ -0,0 +1,32 @@
+# pico/handwired/dactyl_manuform/5x6
+
+Just a dactyl_manform 5x6 but instead of default MCU being used, it's a Pico Pi
+
+* Hardware Supported: Pico Pi
+* Hardware Availability: https://www.raspberrypi.com/products/raspberry-pi-pico/
+
+Make example for this keyboard (after setting up your build environment):
+
+ make pico/handwired/dactyl_manuform/5x6:default
+
+Flashing example for this keyboard:
+
+ make pico/handwired/dactyl_manuform/5x6: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).
+
+# Credit section
+The doge keymap, have sections in the keymap.c that is from other people go support them.
+
+1. OLED(Optional) section in keymap.c
+in keymap OLED(Optional) section is from HellTM
+
+2. tap-dance section in keymap.c
+in keymap tap-dance section is from Walker's Keyboard Science
+
+3. leader and combo section in keymap.c
+in keymap leader and combo section is from Terminal_Heat_Sink
+
+4. BongoCat in keymap.c
+in keymap OLED(Optional) BongoCat section is from mechwild \
+keymap
diff --git a/keyboards/handwired/wylderbuilds/4x6/config.h b/keyboards/handwired/wylderbuilds/4x6/config.h
new file mode 100644
index 00000000000..c0742c7c206
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x6/config.h
@@ -0,0 +1,83 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+#include "config_common.h"
+
+//#define PRODUCT_ID 0x0003
+
+// Basic Config
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+//#define SERIAL_USART_PIN_SWAP
+
+// RP2040 Settings
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+// More RP2040 Settings
+//#define RP2040_FLASH_AT25SF128A
+//#define RP2040_FLASH_GD25Q64CS
+//#define RP2040_FLASH_W25X10CL
+//#define RP2040_FLASH_IS25LP080
+//#define RP2040_FLASH_GENERIC_03H
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 6
+// Matrix COL and ROW
+#define MATRIX_COL_PINS { GP2, GP3, GP4, GP5, GP6, GP7 }
+#define MATRIX_ROW_PINS { GP9, GP10, GP11, GP12, GP13 }
+#define DIODE_DIRECTION COL2ROW
+
+#define ENCODERS_PAD_A { GP16 }
+#define ENCODERS_PAD_B { GP17 }
+#define ENCODER_RESOLUTIONS { 2 }
+#define ENCODERS_PAD_A_RIGHT { GP16 }
+#define ENCODERS_PAD_B_RIGHT { GP17 }
+#define ENCODER_RESOLUTIONS_RIGHT { 2 }
+// WS2812 RGB LED strip input and number of LEDs
+#ifdef RGBLIGHT_ENABLE
+#define RGB_DI_PIN GP17
+#define RGBLED_NUM 34
+//#define DRIVER_LED_TOTAL 34
+#define RGBLED_SPLIT { 17, 17 }
+#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+#define NOP_FUDGE 0.4
+#endif
+
+// OLED Pins and Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD1
+#define I2C1_SDA_PIN GP18
+#define I2C1_SCL_PIN GP19
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+// Misc settings
+// 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
+// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/4x6/info.json b/keyboards/handwired/wylderbuilds/4x6/info.json
new file mode 100644
index 00000000000..3e6ed82d4db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x6/info.json
@@ -0,0 +1,279 @@
+{
+ "keyboard_name": "Dactyl-Manuform (4x6)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "bootloader": "rp2040",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0050",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_4x6": {
+ "layout": [
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "5,0",
+ "x": 12.75,
+ "y": 0
+ },
+ {
+ "label": "5,1",
+ "x": 13.75,
+ "y": 0
+ },
+ {
+ "label": "5,2",
+ "x": 14.75,
+ "y": 0
+ },
+ {
+ "label": "5,3",
+ "x": 15.75,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "5,4",
+ "x": 16.75,
+ "y": 0.5
+ },
+ {
+ "label": "5,5",
+ "x": 17.75,
+ "y": 0.5
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "6,0",
+ "x": 12.75,
+ "y": 1
+ },
+ {
+ "label": "6,1",
+ "x": 13.75,
+ "y": 1
+ },
+ {
+ "label": "6,2",
+ "x": 14.75,
+ "y": 1
+ },
+ {
+ "label": "6,3",
+ "x": 15.75,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "6,4",
+ "x": 16.75,
+ "y": 1.5
+ },
+ {
+ "label": "6,5",
+ "x": 17.75,
+ "y": 1.5
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "7,0",
+ "x": 12.75,
+ "y": 2
+ },
+ {
+ "label": "7,1",
+ "x": 13.75,
+ "y": 2
+ },
+ {
+ "label": "7,2",
+ "x": 14.75,
+ "y": 2
+ },
+ {
+ "label": "7,3",
+ "x": 15.75,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "7,4",
+ "x": 16.75,
+ "y": 2.5
+ },
+ {
+ "label": "7,5",
+ "x": 17.75,
+ "y": 2.5
+ },
+ {
+ "label": "3,2",
+ "x": 3,
+ "y": 3
+ },
+ {
+ "label": "8,2",
+ "x": 14.75,
+ "y": 3
+ },
+ {
+ "label": "8,3",
+ "x": 15.75,
+ "y": 3
+ },
+ {
+ "label": "3,3",
+ "x": 4.5,
+ "y": 3.75
+ },
+ {
+ "label": "3,4",
+ "x": 6,
+ "y": 3.5
+ },
+ {
+ "label": "3,5",
+ "x": 7,
+ "y": 3.5
+ },
+ {
+ "label": "9,3",
+ "x": 13.25,
+ "y": 3.25
+ },
+ {
+ "label": "9,2",
+ "x": 12.25,
+ "y": 3.25
+ },
+ {
+ "label": "9,0",
+ "x": 12.75,
+ "y": 2
+ },
+ {
+ "label": "9,1",
+ "x": 15,
+ "y": 2
+ },
+ {
+ "label": "4,4",
+ "x": 4.5,
+ "y": 7.25
+ },
+ {
+ "label": "4,5",
+ "x": 5.5,
+ "y": 7.25
+ },
+ {
+ "label": "4,2",
+ "x": 5.25,
+ "y": 8.25
+ },
+ {
+ "label": "4,3",
+ "x": 6.25,
+ "y": 8.25
+ },
+ {
+ "label": "8,0",
+ "x": 11.75,
+ "y": 5.75
+ },
+ {
+ "label": "8,1",
+ "x": 12.75,
+ "y": 5.75
+ }
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/wylderbuilds/4x6/keymaps/default/keymap.c b/keyboards/handwired/wylderbuilds/4x6/keymaps/default/keymap.c
new file mode 100644
index 00000000000..919f9a298c9
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x6/keymaps/default/keymap.c
@@ -0,0 +1,77 @@
+#include QMK_KEYBOARD_H
+
+#define _BASE 0
+#define _RAISE 1
+#define _LOWER 2
+
+#define SFT_ESC SFT_T(KC_ESC)
+#define CTL_BSPC CTL_T(KC_BSPC)
+#define ALT_SPC ALT_T(KC_SPC)
+#define SFT_ENT SFT_T(KC_ENT)
+
+#define KC_ML KC_MS_LEFT
+#define KC_MR KC_MS_RIGHT
+#define KC_MU KC_MS_UP
+#define KC_MD KC_MS_DOWN
+#define KC_MB1 KC_MS_BTN1
+#define KC_MB2 KC_MS_BTN1
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base (qwerty)
+ * +-----------------------------------------+ +-----------------------------------------+
+ * | ESC | q | w | e | r | t | | y | u | i | o | p | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | TAB | a | s | d | f | g | | h | j | k | l | ; | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | SHFT | z | x | c | v | b | | n | m | , | . | / | |
+ * +------+------+------+------+-------------+ +-------------+------+------+------+------+
+ * | [ | ] | | | |
+ * +-------------+-------------+ +-------------+-------------+
+ * | | | | | |
+ * |------+------| |------+------|
+ * | | | | | |
+ * +-------------+ +-------------+
+ * +-------------+ +-------------+
+ * | | | | | |
+ * |------+------| |------+------|
+ * | | | | | |
+ * +-------------+ +-------------+
+ */
+ [_BASE] = LAYOUT_4x6(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS,
+ 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_BSLS,
+ KC_LBRC, KC_RBRC, KC_PLUS, KC_EQL,
+ RAISE, KC_SPC, KC_ENT, LOWER,
+ KC_TAB, KC_HOME, KC_END, KC_DEL,
+ KC_BSPC, KC_GRV, KC_LGUI, KC_LALT
+ ),
+
+ [_LOWER] = LAYOUT_4x6(
+ _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, KC_P7, KC_P8, KC_P9, QK_BOOT, KC_PLUS,
+ _______, KC_HOME, KC_PGUP, KC_PGDN, KC_END , KC_LPRN, KC_RPRN, KC_P4, KC_P5, KC_P6, KC_MINS, KC_PIPE,
+ _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_EQL, KC_UNDS,
+ _______, KC_PSCR, _______, KC_P0,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, QK_BOOT, _______
+ ),
+
+ [_RAISE] = LAYOUT_4x6(
+ _______, QK_BOOT, _______, _______, _______, KC_LBRC, KC_RBRC, _______, KC_NUM, KC_INS, KC_SCRL, KC_MUTE,
+ _______, KC_LEFT, KC_UP , KC_DOWN, KC_RGHT, KC_LPRN, KC_RPRN, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_VOLU,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD,
+ _______, _______, KC_EQL, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, QK_BOOT, _______, _______
+ )
+};
+
+void persistent_default_layer_set(uint16_t default_layer) {
+ eeconfig_update_default_layer(default_layer);
+ default_layer_set(default_layer);
+}
diff --git a/keyboards/handwired/wylderbuilds/4x6/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/4x6/keymaps/vial/config.h
new file mode 100644
index 00000000000..4db68bed538
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x6/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xF1, 0x48, 0x6D, 0xE7, 0x48, 0xC2, 0xD2, 0x75}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 5 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 5 }
diff --git a/keyboards/handwired/wylderbuilds/4x6/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/4x6/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..4cd5a5e174a
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x6/keymaps/vial/keymap.c
@@ -0,0 +1,66 @@
+#include QMK_KEYBOARD_H
+#include "4x6.h"
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_4x6(
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_MINS,
+ KC_LSFT, 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_BSLS,
+ KC_ESC,KC_MUTE, KC_PLUS, KC_EQL,
+ RAISE,KC_SPC, KC_ENT, LOWER,
+ KC_TAB, KC_END, KC_DEL, KC_HOME,
+ KC_BSPC, KC_GRV, KC_LGUI, KC_LALT
+ ),
+
+ [_LOWER] = LAYOUT_4x6(
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,
+ _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,
+ _______,_______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS,
+ _______,KC_PSCR, _______, KC_P0,
+ _______,_______, _______,_______,
+ _______,_______, _______,_______,
+ _______,_______, _______,QK_BOOT
+
+ ),
+
+ [_RAISE] = LAYOUT_4x6(
+ KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,
+ _______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,KC_VOLD,KC_VOLU,
+ _______,_______, KC_EQL ,_______,
+ _______,_______, _______,_______,
+ _______,_______, _______,_______,
+ QK_BOOT,_______, _______,_______
+ )
+};
+
+void keyboard_post_init_user(void) {
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+ debug_keyboard=true;
+ debug_mouse=true;
+#else
+ debug_enable=false;
+ debug_matrix=false;
+ debug_keyboard=false;
+ debug_mouse=false;
+#endif
+}
+
+
+// TWO ENCODERS
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][2][2] = {
+ [_QWERTY] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_LOWER] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_RAISE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) }
+};
+#endif
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/4x6/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/4x6/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x6/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/4x6/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/4x6/keymaps/vial/vial.json
new file mode 100644
index 00000000000..f9308dbc47d
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x6/keymaps/vial/vial.json
@@ -0,0 +1,206 @@
+{
+ "matrix": {
+ "rows": 10,
+ "cols": 6
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 4x6 Standard. Encoders",
+ "author": "https://wylderbuilds.com"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ {
+ "n": true
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 4
+ },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 3
+ },
+ "3,2",
+ {
+ "x": 10.75
+ },
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 4.5
+ },
+ "3,3"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -1.25,
+ "x": 6
+ },
+ "3,4",
+ "3,5"
+ ],
+ [
+ {
+ "r": 15.3,
+ "y": -1.25,
+ "x": 13.25
+ },
+ "9,3"
+ ],
+ [
+ {
+ "r": 15.4,
+ "y": -1,
+ "x": 12.25
+ },
+ "9,2"
+ ],
+ [
+ {
+ "r": 15.5,
+ "y": -3.25,
+ "x": 14.5
+ },
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne"
+ ],
+ [
+ {
+ "x": 12.75
+ },
+ "9,0",
+ {
+ "x": 1.25
+ },
+ "9,1"
+ ],
+ [
+ {
+ "r": -15,
+ "y": 4.25,
+ "x": 4.5
+ },
+ "4,4",
+ "4,5"
+ ],
+ [
+ {
+ "r": -13,
+ "x": 5.25
+ },
+ "4,2",
+ "4,3"
+ ],
+ [
+ {
+ "r": -6.5,
+ "y": -3.5,
+ "x": 11.75
+ },
+ "8,0",
+ "8,1"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/4x6/mcuconf.h b/keyboards/handwired/wylderbuilds/4x6/mcuconf.h
new file mode 100644
index 00000000000..8fb3e3eb04a
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x6/mcuconf.h
@@ -0,0 +1,11 @@
+#pragma once
+
+#include_next
+
+#ifdef OLED_ENABLE
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 TRUE
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 FALSE
+#endif
diff --git a/keyboards/handwired/wylderbuilds/4x6/rules.mk b/keyboards/handwired/wylderbuilds/4x6/rules.mk
new file mode 100644
index 00000000000..4628517b585
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x6/rules.mk
@@ -0,0 +1,20 @@
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+RGBLIGHT_ENABLE = no
+MOUSEKEY_ENABLE = yes
+CONSOLE_ENABLE = no
+#COMMAND_ENABLE = yes
+BOOTMAGIC_ENABLE = yes
+NKRO_ENABLE = yes # Enable N-Key Rollover
+
+OLED_ENABLE = no
+OLED_DRIVER = SSD1306
+WPM_ENABLE = no
+EXTRAKEY_ENABLE = yes # Audio control and System control
+
+ENCODER_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+
+#OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/4x6/wylderbuilds-4x6-standard-encoders.json b/keyboards/handwired/wylderbuilds/4x6/wylderbuilds-4x6-standard-encoders.json
new file mode 100644
index 00000000000..01ba26c394c
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x6/wylderbuilds-4x6-standard-encoders.json
@@ -0,0 +1,198 @@
+[
+ {
+ "name": "Wylderbuilds 4x6 Standard. Encoders",
+ "author": "https://wylderbuilds.com"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ {
+ "n": true
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 4
+ },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 3
+ },
+ "3,2",
+ {
+ "x": 10.75
+ },
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 4.5
+ },
+ "3,3"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -1.25,
+ "x": 6
+ },
+ "3,4",
+ "3,5"
+ ],
+ [
+ {
+ "r": 15.3,
+ "y": -1.25,
+ "x": 13.25
+ },
+ "9,3"
+ ],
+ [
+ {
+ "r": 15.4,
+ "y": -1,
+ "x": 12.25
+ },
+ "9,2"
+ ],
+ [
+ {
+ "r": 15.5,
+ "y": -3.25,
+ "x": 14.5
+ },
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne"
+ ],
+ [
+ {
+ "x": 12.75
+ },
+ "9,0",
+ {
+ "x": 1.25
+ },
+ "9,1"
+ ],
+ [
+ {
+ "r": -15,
+ "y": 4.25,
+ "x": 4.5
+ },
+ "4,4",
+ "4,5"
+ ],
+ [
+ {
+ "r": -13,
+ "x": 5.25
+ },
+ "4,2",
+ "4,3"
+ ],
+ [
+ {
+ "r": -6.5,
+ "y": -3.5,
+ "x": 11.75
+ },
+ "8,0",
+ "8,1"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/4x6_full/4x6_full.c b/keyboards/handwired/wylderbuilds/4x6_full/4x6_full.c
new file mode 100644
index 00000000000..a8523c83bf7
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x6_full/4x6_full.c
@@ -0,0 +1 @@
+#include "4x6_full.h"
diff --git a/keyboards/handwired/wylderbuilds/4x6_full/4x6_full.h b/keyboards/handwired/wylderbuilds/4x6_full/4x6_full.h
new file mode 100644
index 00000000000..3e1592ea0dd
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x6_full/4x6_full.h
@@ -0,0 +1,26 @@
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_4x6_full( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+ L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \
+ L44, L45, R40, R41, \
+ L42, L43, R42, R43 \
+) { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { L30, L31, L32, L33, L34, L35 }, \
+ { XXX, XXX, L42, L43, L44, L45 }, \
+\
+ { R00, R01, R02, R03, R04, R05 }, \
+ { R10, R11, R12, R13, R14, R15 }, \
+ { R20, R21, R22, R23, R24, R25 }, \
+ { R30, R31, R32, R33, R34, R35 }, \
+ { R40, R41, R42, R43, XXX, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/4x6_full/config.h b/keyboards/handwired/wylderbuilds/4x6_full/config.h
new file mode 100644
index 00000000000..114b4f33543
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x6_full/config.h
@@ -0,0 +1,77 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+#include "config_common.h"
+
+//#define PRODUCT_ID 0x0003
+
+// Basic Config
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+#define SERIAL_USART_PIN_SWAP
+
+// RP2040 Settings
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+// More RP2040 Settings
+#define RP2040_FLASH_AT25SF128A
+#define RP2040_FLASH_GD25Q64CS
+#define RP2040_FLASH_W25X10CL
+#define RP2040_FLASH_IS25LP080
+#define RP2040_FLASH_GENERIC_03H
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 6
+// Matrix COL and ROW
+#define MATRIX_COL_PINS { GP3, GP4, GP5, GP6, GP7, GP8 }
+#define MATRIX_ROW_PINS { GP10, GP11, GP12, GP13, GP14 }
+#define DIODE_DIRECTION COL2ROW
+
+// WS2812 RGB LED strip input and number of LEDs
+#ifdef RGBLIGHT_ENABLE
+#define RGB_DI_PIN GP17
+#define RGBLED_NUM 34
+//#define DRIVER_LED_TOTAL 34
+#define RGBLED_SPLIT { 17, 17 }
+#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+#define NOP_FUDGE 0.4
+#endif
+
+// OLED Pins and Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD1
+#define I2C1_SDA_PIN GP18
+#define I2C1_SCL_PIN GP19
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+// Misc settings
+// 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
+// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/4x6_full/info.json b/keyboards/handwired/wylderbuilds/4x6_full/info.json
new file mode 100644
index 00000000000..9ded1eb6567
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x6_full/info.json
@@ -0,0 +1,305 @@
+{
+ "keyboard_name": "Dactyl-Manuform (4x6_full)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "bootloader": "rp2040",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0031",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 10,
+ "columns": 6
+ },
+ "layouts": {
+ "LAYOUT_4x6_full": {
+ "layout": [
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "5,0",
+ "x": 12.75,
+ "y": 0
+ },
+ {
+ "label": "5,1",
+ "x": 13.75,
+ "y": 0
+ },
+ {
+ "label": "5,2",
+ "x": 14.75,
+ "y": 0
+ },
+ {
+ "label": "5,3",
+ "x": 15.75,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "5,4",
+ "x": 16.75,
+ "y": 0.5
+ },
+ {
+ "label": "5,5",
+ "x": 17.75,
+ "y": 0.5
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "6,0",
+ "x": 12.75,
+ "y": 1
+ },
+ {
+ "label": "6,1",
+ "x": 13.75,
+ "y": 1
+ },
+ {
+ "label": "6,2",
+ "x": 14.75,
+ "y": 1
+ },
+ {
+ "label": "6,3",
+ "x": 15.75,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "6,4",
+ "x": 16.75,
+ "y": 1.5
+ },
+ {
+ "label": "6,5",
+ "x": 17.75,
+ "y": 1.5
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "7,0",
+ "x": 12.75,
+ "y": 2
+ },
+ {
+ "label": "7,1",
+ "x": 13.75,
+ "y": 2
+ },
+ {
+ "label": "7,2",
+ "x": 14.75,
+ "y": 2
+ },
+ {
+ "label": "7,3",
+ "x": 15.75,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "7,4",
+ "x": 16.75,
+ "y": 2.5
+ },
+ {
+ "label": "7,5",
+ "x": 17.75,
+ "y": 2.5
+ },
+ {
+ "label": "3,2",
+ "x": 3,
+ "y": 3
+ },
+ {
+ "label": "3,3",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "8,2",
+ "x": 14.75,
+ "y": 3
+ },
+ {
+ "label": "8,3",
+ "x": 15.75,
+ "y": 3
+ },
+ {
+ "label": "3,0",
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "label": "3,1",
+ "x": 2,
+ "y": 3.5
+ },
+ {
+ "label": "8,4",
+ "x": 16.75,
+ "y": 3.5
+ },
+ {
+ "label": "8,5",
+ "x": 17.75,
+ "y": 3.5
+ },
+ {
+ "label": "3,4",
+ "x": 6,
+ "y": 3.5
+ },
+ {
+ "label": "3,5",
+ "x": 7,
+ "y": 3.5
+ },
+ {
+ "label": "9,3",
+ "x": 13.25,
+ "y": 3.25
+ },
+ {
+ "label": "9,2",
+ "x": 12.25,
+ "y": 3.25
+ },
+ {
+ "label": "9,0",
+ "x": 12.75,
+ "y": 2
+ },
+ {
+ "label": "9,1",
+ "x": 13.75,
+ "y": 2
+ },
+ {
+ "label": "4,4",
+ "x": 4.5,
+ "y": 7.25
+ },
+ {
+ "label": "4,5",
+ "x": 5.5,
+ "y": 7.25
+ },
+ {
+ "label": "4,2",
+ "x": 5.25,
+ "y": 8.25
+ },
+ {
+ "label": "4,3",
+ "x": 6.25,
+ "y": 8.25
+ },
+ {
+ "label": "8,0",
+ "x": 11.75,
+ "y": 5.75
+ },
+ {
+ "label": "8,1",
+ "x": 12.75,
+ "y": 5.75
+ }
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/wylderbuilds/4x6_full/keymaps/default/keymap.c b/keyboards/handwired/wylderbuilds/4x6_full/keymaps/default/keymap.c
new file mode 100644
index 00000000000..919f9a298c9
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x6_full/keymaps/default/keymap.c
@@ -0,0 +1,77 @@
+#include QMK_KEYBOARD_H
+
+#define _BASE 0
+#define _RAISE 1
+#define _LOWER 2
+
+#define SFT_ESC SFT_T(KC_ESC)
+#define CTL_BSPC CTL_T(KC_BSPC)
+#define ALT_SPC ALT_T(KC_SPC)
+#define SFT_ENT SFT_T(KC_ENT)
+
+#define KC_ML KC_MS_LEFT
+#define KC_MR KC_MS_RIGHT
+#define KC_MU KC_MS_UP
+#define KC_MD KC_MS_DOWN
+#define KC_MB1 KC_MS_BTN1
+#define KC_MB2 KC_MS_BTN1
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base (qwerty)
+ * +-----------------------------------------+ +-----------------------------------------+
+ * | ESC | q | w | e | r | t | | y | u | i | o | p | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | TAB | a | s | d | f | g | | h | j | k | l | ; | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | SHFT | z | x | c | v | b | | n | m | , | . | / | |
+ * +------+------+------+------+-------------+ +-------------+------+------+------+------+
+ * | [ | ] | | | |
+ * +-------------+-------------+ +-------------+-------------+
+ * | | | | | |
+ * |------+------| |------+------|
+ * | | | | | |
+ * +-------------+ +-------------+
+ * +-------------+ +-------------+
+ * | | | | | |
+ * |------+------| |------+------|
+ * | | | | | |
+ * +-------------+ +-------------+
+ */
+ [_BASE] = LAYOUT_4x6(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS,
+ 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_BSLS,
+ KC_LBRC, KC_RBRC, KC_PLUS, KC_EQL,
+ RAISE, KC_SPC, KC_ENT, LOWER,
+ KC_TAB, KC_HOME, KC_END, KC_DEL,
+ KC_BSPC, KC_GRV, KC_LGUI, KC_LALT
+ ),
+
+ [_LOWER] = LAYOUT_4x6(
+ _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, KC_P7, KC_P8, KC_P9, QK_BOOT, KC_PLUS,
+ _______, KC_HOME, KC_PGUP, KC_PGDN, KC_END , KC_LPRN, KC_RPRN, KC_P4, KC_P5, KC_P6, KC_MINS, KC_PIPE,
+ _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_EQL, KC_UNDS,
+ _______, KC_PSCR, _______, KC_P0,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, QK_BOOT, _______
+ ),
+
+ [_RAISE] = LAYOUT_4x6(
+ _______, QK_BOOT, _______, _______, _______, KC_LBRC, KC_RBRC, _______, KC_NUM, KC_INS, KC_SCRL, KC_MUTE,
+ _______, KC_LEFT, KC_UP , KC_DOWN, KC_RGHT, KC_LPRN, KC_RPRN, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_VOLU,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD,
+ _______, _______, KC_EQL, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, QK_BOOT, _______, _______
+ )
+};
+
+void persistent_default_layer_set(uint16_t default_layer) {
+ eeconfig_update_default_layer(default_layer);
+ default_layer_set(default_layer);
+}
diff --git a/keyboards/handwired/wylderbuilds/4x6_full/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/4x6_full/keymaps/vial/config.h
new file mode 100644
index 00000000000..4f07356eff6
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x6_full/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xC6, 0x48, 0x21, 0x77, 0x30, 0x3C, 0x62, 0x74}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 5 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 5 }
diff --git a/keyboards/handwired/wylderbuilds/4x6_full/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/4x6_full/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..d22cd1d9650
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x6_full/keymaps/vial/keymap.c
@@ -0,0 +1,37 @@
+#include QMK_KEYBOARD_H
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_4x6_full(
+ KC_ESC , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_MINS,
+ 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_BSLS,
+ KC_LCTL, KC_TILDE,KC_LBRC,KC_RBRC, RAISE,KC_SPC, KC_ENT, LOWER, KC_PLUS, KC_EQL, KC_MINS, KC_RCTL,
+ KC_TAB,KC_HOME, KC_END, KC_DEL,
+ KC_BSPC, KC_GRV, KC_LGUI, KC_LALT ),
+
+ [_LOWER] = LAYOUT_4x6_full(
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,
+ _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,
+ _______,_______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS,
+ KC_TILD,KC_EXLM, KC_AT ,KC_HASH, _______,KC_DLR, KC_RPRN,_______, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,
+ KC_PERC,_______, KC_DEL,_______,
+ _______,_______, QK_BOOT,_______
+
+ ),
+
+ [_RAISE] = LAYOUT_4x6_full(
+ KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,
+ _______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU,
+ _______,_______,_______,_______, _______,_______, _______,_______, _______,_______,_______,KC_VOLD,
+ _______,_______, _______,_______,
+ _______,QK_BOOT, _______,_______
+ )
+};
diff --git a/keyboards/handwired/wylderbuilds/4x6_full/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/4x6_full/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x6_full/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/4x6_full/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/4x6_full/keymaps/vial/vial.json
new file mode 100644
index 00000000000..6f0d5968769
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x6_full/keymaps/vial/vial.json
@@ -0,0 +1,195 @@
+{
+ "matrix": {
+ "rows": 10,
+ "cols": 6
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 4x6 Full Rows Standard",
+ "author": "https://wylderbuilds.com"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ {
+ "n": true
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ {
+ "x": 9.75
+ },
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -1,
+ "x": 6
+ },
+ "3,4",
+ "3,5"
+ ],
+ [
+ {
+ "r": 15.3,
+ "y": -1.25,
+ "x": 13.25
+ },
+ "9,3"
+ ],
+ [
+ {
+ "r": 15.4,
+ "y": -1,
+ "x": 12.25
+ },
+ "9,2"
+ ],
+ [
+ {
+ "r": 15.5,
+ "y": -2.25,
+ "x": 12.75
+ },
+ "9,0",
+ "9,1"
+ ],
+ [
+ {
+ "r": -15,
+ "y": 4.25,
+ "x": 4.5
+ },
+ "4,4",
+ "4,5"
+ ],
+ [
+ {
+ "r": -13,
+ "x": 5.25
+ },
+ "4,2",
+ "4,3"
+ ],
+ [
+ {
+ "r": -6.5,
+ "y": -3.5,
+ "x": 11.75
+ },
+ "8,0",
+ "8,1"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/4x6_full/mcuconf.h b/keyboards/handwired/wylderbuilds/4x6_full/mcuconf.h
new file mode 100644
index 00000000000..8fb3e3eb04a
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x6_full/mcuconf.h
@@ -0,0 +1,11 @@
+#pragma once
+
+#include_next
+
+#ifdef OLED_ENABLE
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 TRUE
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 FALSE
+#endif
diff --git a/keyboards/handwired/wylderbuilds/4x6_full/rules.mk b/keyboards/handwired/wylderbuilds/4x6_full/rules.mk
new file mode 100644
index 00000000000..f98e367a381
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x6_full/rules.mk
@@ -0,0 +1,17 @@
+# Bootloader and MCU
+MCU = RP2040
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+F_CPU = 8000000
+SPLIT_KEYBOARD = yes
+
+# Drivers for components
+OLED_DRIVER = SSD1306
+OLED_DRIVER = no
+# Needed for OLED setup
+WPM_ENABLE = no
+# RGB Light
+RGBLIGHT_ENABLE = no
+
+# Opt defs, comment out you're if not using OLED screen for the dactyl_manuform.
+OPT_DEFS += -DHAL_USE_I2C=TRUE
diff --git a/keyboards/handwired/wylderbuilds/4x6_whole/4x6_whole.c b/keyboards/handwired/wylderbuilds/4x6_whole/4x6_whole.c
new file mode 100644
index 00000000000..4e62c1c777d
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x6_whole/4x6_whole.c
@@ -0,0 +1 @@
+#include "4x6_whole.h"
diff --git a/keyboards/handwired/wylderbuilds/4x6_whole/4x6_whole.h b/keyboards/handwired/wylderbuilds/4x6_whole/4x6_whole.h
new file mode 100644
index 00000000000..726234b1185
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x6_whole/4x6_whole.h
@@ -0,0 +1,27 @@
+#pragma once
+
+
+#define XXX KC_NO
+
+// Cluster columns were initially wired incorrectly, so that's why the cluster rows are odd, below.
+#define LAYOUT_4x6( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+ L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \
+ L44, L45, R40, R41, \
+ L40, L41, R44, R45,\
+ L42, L43, R42, R43 \
+) { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { L30, L31, L32, L33, L34, L35 }, \
+ { L40, L41, L42, L43, L44, L45 }, \
+\
+ { R00, R01, R02, R03, R04, R05 }, \
+ { R10, R11, R12, R13, R14, R15 }, \
+ { R20, R21, R22, R23, R24, R25 }, \
+ { R30, R31, R32, R33, R34, R35 }, \
+ { R40, R41, R42, R43, R44, R45 } \
+}
diff --git a/keyboards/handwired/wylderbuilds/4x6_whole/config.h b/keyboards/handwired/wylderbuilds/4x6_whole/config.h
new file mode 100644
index 00000000000..603077c4d77
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x6_whole/config.h
@@ -0,0 +1,94 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+//#include "config_common.h"
+// Basic Config
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+
+#define USE_SERIAL
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+
+// Using Serial instead of I2C
+#define SPLIT_LAYER_STATE_ENABLE
+
+#define USE_SERIAL
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Columns are doubled-up
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 6
+
+#define MATRIX_COL_PINS { GP2, GP3, GP4, GP5, GP6, GP7 }
+#define MATRIX_ROW_PINS { GP9, GP10, GP11, GP12, GP13 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define SPLIT_POINTING_ENABLE
+#define ROTATIONAL_TRANSFORM_ANGLE -25
+#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_RIGHT
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x02
+
+#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+//#define CHARYBDIS_MINIMUM_DEFAULT_DPI 1200
+//#define CHARYBDIS_DEFAULT_DPI_CONFIG_STEP 200
+//#define CHARYBDIS_MINIMUM_SNIPING_DPI 400
+//#define CHARYBDIS_SNIPING_DPI_CONFIG_STEP 200
+
+//#define ENCODERS_PAD_A { GP26 }
+//#define ENCODERS_PAD_B { GP27 }
+//#define ENCODER_RESOLUTIONS { 2 }
+//#define ENCODERS_PAD_A_RIGHT { GP26 }
+//#define ENCODERS_PAD_B_RIGHT { GP27 }
+//#define ENCODER_RESOLUTIONS_RIGHT { 2 }
+
+//// Sensor Notes ////
+//// Pi Pico pins ////
+// 3V3 -- Power (not 3v3_EN)
+// GP17 -- CS pin
+// GP20 -- MISO pin
+// GP19 -- MOSI pin
+// GP18 -- SCK pin clock Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD0
+#define I2C1_SDA_PIN GP16
+#define I2C1_SCL_PIN GP17
+#define RGBLIGHT_LAYERS
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+// Misc settings
+// 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// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/4x6_whole/info.json b/keyboards/handwired/wylderbuilds/4x6_whole/info.json
new file mode 100644
index 00000000000..0e0f3d5d344
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x6_whole/info.json
@@ -0,0 +1,325 @@
+{
+ "keyboard_name": "Dactyl-Manuform Wyld Trackball (4x6_whole_track)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0056",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 10,
+ "cols": 6
+ },
+ "layouts": {
+ "LAYOUT_4x6": {
+ "layout": [
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "5,0",
+ "x": 12.75,
+ "y": 0
+ },
+ {
+ "label": "5,1",
+ "x": 13.75,
+ "y": 0
+ },
+ {
+ "label": "5,2",
+ "x": 14.75,
+ "y": 0
+ },
+ {
+ "label": "5,3",
+ "x": 15.75,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "5,4",
+ "x": 16.75,
+ "y": 0.5
+ },
+ {
+ "label": "5,5",
+ "x": 17.75,
+ "y": 0.5
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "6,0",
+ "x": 12.75,
+ "y": 1
+ },
+ {
+ "label": "6,1",
+ "x": 13.75,
+ "y": 1
+ },
+ {
+ "label": "6,2",
+ "x": 14.75,
+ "y": 1
+ },
+ {
+ "label": "6,3",
+ "x": 15.75,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "6,4",
+ "x": 16.75,
+ "y": 1.5
+ },
+ {
+ "label": "6,5",
+ "x": 17.75,
+ "y": 1.5
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "7,0",
+ "x": 12.75,
+ "y": 2
+ },
+ {
+ "label": "7,1",
+ "x": 13.75,
+ "y": 2
+ },
+ {
+ "label": "7,2",
+ "x": 14.75,
+ "y": 2
+ },
+ {
+ "label": "7,3",
+ "x": 15.75,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "7,4",
+ "x": 16.75,
+ "y": 2.5
+ },
+ {
+ "label": "7,5",
+ "x": 17.75,
+ "y": 2.5
+ },
+ {
+ "label": "3,2",
+ "x": 3,
+ "y": 3
+ },
+ {
+ "label": "3,3",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "3,4",
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "3,5",
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "8,0",
+ "x": 12.75,
+ "y": 3
+ },
+ {
+ "label": "8,1",
+ "x": 13.75,
+ "y": 3
+ },
+ {
+ "label": "8,2",
+ "x": 14.75,
+ "y": 3
+ },
+ {
+ "label": "8,3",
+ "x": 15.75,
+ "y": 3
+ },
+ {
+ "label": "3,0",
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "label": "3,1",
+ "x": 2,
+ "y": 3.5
+ },
+ {
+ "label": "8,4",
+ "x": 16.75,
+ "y": 3.5
+ },
+ {
+ "label": "8,5",
+ "x": 17.75,
+ "y": 3.5
+ },
+ {
+ "label": "4,4",
+ "x": 6,
+ "y": 3.5
+ },
+ {
+ "label": "4,5",
+ "x": 7,
+ "y": 3.5
+ },
+ {
+ "label": "9,4",
+ "x": 12.25,
+ "y": 2.5
+ },
+ {
+ "label": "9,5",
+ "x": 13.25,
+ "y": 2.5
+ },
+ {
+ "label": "9,2",
+ "x": 11.75,
+ "y": 3.75
+ },
+ {
+ "label": "9,3",
+ "x": 12.75,
+ "y": 3.75
+ },
+ {
+ "label": "4,0",
+ "x": 4.5,
+ "y": 7.25
+ },
+ {
+ "label": "4,1",
+ "x": 5.5,
+ "y": 7.25
+ },
+ {
+ "label": "4,2",
+ "x": 5.25,
+ "y": 8.25
+ },
+ {
+ "label": "4,3",
+ "x": 6.25,
+ "y": 8.25
+ },
+ {
+ "label": "9,0",
+ "x": 11.5,
+ "y": 5.75
+ },
+ {
+ "label": "9,1",
+ "x": 12.5,
+ "y": 5.75
+ }
+ ]
+ }
+ }
+}
+
diff --git a/keyboards/handwired/wylderbuilds/4x6_whole/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/4x6_whole/keymaps/vial/config.h
new file mode 100644
index 00000000000..f0043218f20
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x6_whole/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x9F, 0xAA, 0xB6, 0x82, 0xD3, 0x4C, 0xC2, 0x87}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 4 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 4 }
diff --git a/keyboards/handwired/wylderbuilds/4x6_whole/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/4x6_whole/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..be14e7064d8
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x6_whole/keymaps/vial/keymap.c
@@ -0,0 +1,170 @@
+#include QMK_KEYBOARD_H
+#include "4x6_whole.h"
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_4x6(
+ KC_ESC , KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS,
+ KC_LSFT, 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_BSLS,
+ RAISE, KC_SPC, KC_ENT, LOWER,
+ KC_TAB, KC_HOME, KC_END, KC_DEL,
+ KC_BSPC, KC_GRV, KC_LGUI, KC_LALT
+ ),
+
+ [_LOWER] = LAYOUT_4x6(
+ KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,
+ _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,
+ _______,_______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS,
+ _______,_______, _______, _______,
+ _______,_______, _______, _______,
+ _______,_______, _______, QK_BOOT
+
+ ),
+
+ [_RAISE] = LAYOUT_4x6(
+ KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6, KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,
+ _______,KC_LEFT,KC_UP,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD,
+ _______,_______, _______, _______,
+ _______,_______, _______, _______,
+ QK_BOOT,_______, _______, _______
+ )
+};
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (index == 1) {
+ if (clockwise) {
+ tap_code(KC_VOLD);
+ } else {
+ tap_code(KC_VOLU);
+ }
+ } else if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_PGUP);
+ } else {
+ tap_code(KC_PGDN);
+ }
+ }
+ return false;
+}
+#endif
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_left()) {
+ return OLED_ROTATION_270;
+ }
+ return OLED_ROTATION_0;
+}
+
+static const char PROGMEM wylderbuilds[] = {
+ // 'dark wylderbuilds_oled_name', 128x32
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40,
+ 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x20, 0x60,
+ 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x60, 0x60,
+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0,
+ 0x00, 0x00, 0xc1, 0xc1, 0x01, 0x01, 0xf1, 0x11, 0x01, 0x01, 0x01, 0x31, 0x60, 0xc0, 0x80, 0xc0,
+ 0xf0, 0x10, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0,
+ 0x00, 0x01, 0x03, 0x9e, 0xf8, 0x00, 0x00, 0x20, 0xe0, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0xf0, 0x30, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x98, 0xf0, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x00, 0x70, 0xfe, 0x03, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00,
+ 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x11, 0xf1, 0x11, 0x33, 0x63, 0xc3,
+ 0x83, 0x01, 0x01, 0xc1, 0xe1, 0x31, 0x11, 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,
+ 0x1f, 0x7c, 0xff, 0x07, 0x7c, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7f, 0xff,
+ 0x60, 0x30, 0x18, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xf2, 0x82, 0x02, 0x80, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x7f, 0x0e, 0x1b, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0x81, 0xc1, 0x63,
+ 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00,
+ 0x00, 0x1f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x60, 0x30, 0x1f,
+ 0x07, 0x00, 0x00, 0x01, 0x43, 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static void render_wylderbuilds(void) {
+ oled_write_raw_P(wylderbuilds, sizeof(wylderbuilds));
+}
+
+bool oled_task_user(void) {
+ oled_set_cursor(0, 3);
+ if (is_keyboard_left()) {
+ // oled_write_P(PSTR("Layer\n"), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ oled_write_P(PSTR(" BASE\n"), false);
+ break;
+ case _LOWER:
+ oled_write_P(PSTR("LOWER\n"), false);
+ break;
+ case _RAISE:
+ oled_write_P(PSTR("RAISE\n"), false);
+ break;
+ case 3:
+ oled_write_P(PSTR("MOUSE\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+ oled_set_cursor(2, 7);
+ oled_write_P(PSTR("WPM "), false);
+ oled_set_cursor(1, 8);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 9);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+ } else {
+ // write WPM to right OLED
+ oled_set_cursor(0, 0);
+ render_wylderbuilds();
+ oled_scroll_left();
+ }
+
+ return false;
+}
+#endif
+
+
+void keyboard_post_init_user(void) {
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+ debug_keyboard=true;
+ debug_mouse=true;
+#else
+ debug_enable=false;
+ debug_matrix=false;
+ debug_keyboard=false;
+ debug_mouse=false;
+#endif
+}
diff --git a/keyboards/handwired/wylderbuilds/4x6_whole/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/4x6_whole/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x6_whole/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/4x6_whole/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/4x6_whole/keymaps/vial/vial.json
new file mode 100644
index 00000000000..c82604a106c
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x6_whole/keymaps/vial/vial.json
@@ -0,0 +1,190 @@
+{
+ "matrix": {
+ "rows": 10,
+ "cols": 6
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 4x6 Whole Matrix"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ {
+ "n": true
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5.75
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -1,
+ "x": 6
+ },
+ "4,4",
+ "4,5"
+ ],
+ [
+ {
+ "r": 13,
+ "y": -2,
+ "x": 12.25
+ },
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 11.75
+ },
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "r": -15,
+ "y": 2.5,
+ "x": 4.5
+ },
+ "4,0",
+ "4,1"
+ ],
+ [
+ {
+ "r": -13,
+ "x": 5.25
+ },
+ "4,2",
+ "4,3"
+ ],
+ [
+ {
+ "r": -7,
+ "y": -3.5,
+ "x": 11.5
+ },
+ "9,0",
+ "9,1"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/4x6_whole/mcuconf.h b/keyboards/handwired/wylderbuilds/4x6_whole/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x6_whole/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/4x6_whole/rules.mk b/keyboards/handwired/wylderbuilds/4x6_whole/rules.mk
new file mode 100644
index 00000000000..22a02d58996
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/4x6_whole/rules.mk
@@ -0,0 +1,20 @@
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+POINTING_DEVICE_DRIVER = pmw3389
+
+SERIAL_DRIVER = vendor
+RGBLIGHT_ENABLE = no
+MOUSEKEY_ENABLE = yes
+CONSOLE_ENABLE = no
+#COMMAND_ENABLE = yes
+BOOTMAGIC_ENABLE = yes
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
+WPM_ENABLE = yes
+EXTRAKEY_ENABLE = yes # Audio control and System control
+NKRO_ENABLE = yes # Enable N-Key Rollover
+ENCODER_ENABLE = no
+#ENCODER_MAP_ENABLE = yes
+
+OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/5x6/5x6.c b/keyboards/handwired/wylderbuilds/5x6/5x6.c
new file mode 100644
index 00000000000..0e9d5481c47
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6/5x6.c
@@ -0,0 +1 @@
+#include "5x6.h"
diff --git a/keyboards/handwired/wylderbuilds/5x6/5x6.h b/keyboards/handwired/wylderbuilds/5x6/5x6.h
new file mode 100644
index 00000000000..ebc959ddf1f
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6/5x6.h
@@ -0,0 +1,30 @@
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_5x6( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+ L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \
+ L42, L43, R42, R43, \
+ L44, L45, R40, R41, \
+ L54, L55, R50, R51, \
+ L52, L53, R52, R53 \
+) { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { L30, L31, L32, L33, L34, L35 }, \
+ { XXX, XXX, L42, L43, L44, L45 }, \
+ { XXX, XXX, L52, L53, L54, L55 }, \
+\
+ { R00, R01, R02, R03, R04, R05 }, \
+ { R10, R11, R12, R13, R14, R15 }, \
+ { R20, R21, R22, R23, R24, R25 }, \
+ { R30, R31, R32, R33, R34, R35 }, \
+ { R40, R41, R42, R43, XXX, XXX }, \
+ { R50, R51, R52, R53, XXX, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/5x6/config.h b/keyboards/handwired/wylderbuilds/5x6/config.h
new file mode 100644
index 00000000000..d35efa22605
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6/config.h
@@ -0,0 +1,65 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+//#include "config_common.h"
+// Basic Config
+
+//#define PRODUCT_ID 0x0002
+
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+//#define SERIAL_USART_PIN_SWAP
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 6
+
+#define MATRIX_COL_PINS { GP7, GP6, GP5, GP4, GP3, GP2 }
+#define MATRIX_ROW_PINS { GP12, GP11, GP10, GP9, GP13, GP14 }
+#define DIODE_DIRECTION COL2ROW
+
+// WS2812 RGB LED strip input and number of LEDs
+#ifdef RGBLIGHT_ENABLE
+#define RGB_DI_PIN GP17
+#define RGBLED_NUM 34
+//#define DRIVER_LED_TOTAL 34
+#define RGBLED_SPLIT { 17, 17 }
+#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+#define NOP_FUDGE 0.4
+#endif
+
+// OLED Pins and Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD1
+#define I2C1_SDA_PIN GP18
+#define I2C1_SCL_PIN GP19
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+// Misc settings
+// 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
+// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/5x6/info.json b/keyboards/handwired/wylderbuilds/5x6/info.json
new file mode 100644
index 00000000000..b50f676db6f
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6/info.json
@@ -0,0 +1,345 @@
+{
+ "keyboard_name": "Dactyl-Manuform (5x6)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "bootloader": "rp2040",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 12,
+ "columns": 6
+ },
+ "layouts": {
+ "LAYOUT_5x6": {
+ "layout": [
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "6,0",
+ "x": 12.75,
+ "y": 0
+ },
+ {
+ "label": "6,1",
+ "x": 13.75,
+ "y": 0
+ },
+ {
+ "label": "6,2",
+ "x": 14.75,
+ "y": 0
+ },
+ {
+ "label": "6,3",
+ "x": 15.75,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "6,4",
+ "x": 16.75,
+ "y": 0.5
+ },
+ {
+ "label": "6,5",
+ "x": 17.75,
+ "y": 0.5
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "7,0",
+ "x": 12.75,
+ "y": 1
+ },
+ {
+ "label": "7,1",
+ "x": 13.75,
+ "y": 1
+ },
+ {
+ "label": "7,2",
+ "x": 14.75,
+ "y": 1
+ },
+ {
+ "label": "7,3",
+ "x": 15.75,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "7,4",
+ "x": 16.75,
+ "y": 1.5
+ },
+ {
+ "label": "7,5",
+ "x": 17.75,
+ "y": 1.5
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "8,0",
+ "x": 12.75,
+ "y": 2
+ },
+ {
+ "label": "8,1",
+ "x": 13.75,
+ "y": 2
+ },
+ {
+ "label": "8,2",
+ "x": 14.75,
+ "y": 2
+ },
+ {
+ "label": "8,3",
+ "x": 15.75,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "8,4",
+ "x": 16.75,
+ "y": 2.5
+ },
+ {
+ "label": "8,5",
+ "x": 17.75,
+ "y": 2.5
+ },
+ {
+ "label": "3,2",
+ "x": 3,
+ "y": 3
+ },
+ {
+ "label": "3,3",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "3,4",
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "3,5",
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "9,0",
+ "x": 12.75,
+ "y": 3
+ },
+ {
+ "label": "9,1",
+ "x": 13.75,
+ "y": 3
+ },
+ {
+ "label": "9,2",
+ "x": 14.75,
+ "y": 3
+ },
+ {
+ "label": "9,3",
+ "x": 15.75,
+ "y": 3
+ },
+ {
+ "label": "3,0",
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "label": "3,1",
+ "x": 2,
+ "y": 3.5
+ },
+ {
+ "label": "9,4",
+ "x": 16.75,
+ "y": 3.5
+ },
+ {
+ "label": "9,5",
+ "x": 17.75,
+ "y": 3.5
+ },
+ {
+ "label": "4,2",
+ "x": 3,
+ "y": 4
+ },
+ {
+ "label": "4,3",
+ "x": 4,
+ "y": 4
+ },
+ {
+ "label": "10,2",
+ "x": 14.75,
+ "y": 4
+ },
+ {
+ "label": "10,3",
+ "x": 15.75,
+ "y": 4
+ },
+ {
+ "label": "4,4",
+ "x": 6,
+ "y": 3.5
+ },
+ {
+ "label": "4,5",
+ "x": 7,
+ "y": 3.5
+ },
+ {
+ "label": "5,4",
+ "x": 6.5,
+ "y": 4.5
+ },
+ {
+ "label": "5,5",
+ "x": 7.5,
+ "y": 4.5
+ },
+ {
+ "label": "5,2",
+ "x": 7,
+ "y": 5.5
+ },
+ {
+ "label": "5,3",
+ "x": 8,
+ "y": 5.5
+ },
+ {
+ "label": "10,0",
+ "x": 11.75,
+ "y": 5.75
+ },
+ {
+ "label": "10,1",
+ "x": 12.75,
+ "y": 5.75
+ },
+ {
+ "label": "11,0",
+ "x": 11.25,
+ "y": 6.75
+ },
+ {
+ "label": "11,1",
+ "x": 12.25,
+ "y": 6.75
+ },
+ {
+ "label": "11,2",
+ "x": 10.75,
+ "y": 7.75
+ },
+ {
+ "label": "11,3",
+ "x": 11.75,
+ "y": 7.75
+ }
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/wylderbuilds/5x6/keymaps/default/keymap.c b/keyboards/handwired/wylderbuilds/5x6/keymaps/default/keymap.c
new file mode 100644
index 00000000000..d8b6361f05d
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6/keymaps/default/keymap.c
@@ -0,0 +1,44 @@
+#include QMK_KEYBOARD_H
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_5x6(
+ KC_ESC , 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_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_MINS,
+ KC_LSFT, 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_BSLS,
+ KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL,
+ RAISE,KC_SPC, KC_ENT, LOWER,
+ KC_TAB,KC_HOME, KC_END, KC_DEL,
+ KC_BSPC, KC_GRV, KC_LGUI, KC_LALT
+ ),
+
+ [_LOWER] = LAYOUT_5x6(
+ KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,
+ _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,
+ _______,_______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS,
+ _______,KC_PSCR, _______, KC_P0,
+ _______,_______, _______,_______,
+ _______,_______, _______,_______,
+ _______,_______, _______,QK_BOOT
+
+ ),
+
+ [_RAISE] = LAYOUT_5x6(
+ KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,
+ _______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD,
+ _______,_______, KC_EQL ,_______,
+ _______,_______, _______,_______,
+ _______,_______, _______,_______,
+ QK_BOOT,_______, _______,_______
+ )
+};
diff --git a/keyboards/handwired/wylderbuilds/5x6/keymaps/doge/combos.c b/keyboards/handwired/wylderbuilds/5x6/keymaps/doge/combos.c
new file mode 100644
index 00000000000..f48b8b28e46
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6/keymaps/doge/combos.c
@@ -0,0 +1,38 @@
+//Including external files
+#include "sharedDefines.h"
+
+// Defining scrolling
+bool scrollwheel_down_on = false;
+bool scrollwheel_up_on = false;
+// Defining Combos -- Update combo count after in config.h
+enum combo_events {
+ COMBO_SCROLL_UP,
+ COMBO_SCROLL_DOWN
+};
+
+const uint16_t PROGMEM combo_scroll_up[] = {KC_PGUP, COMBO_END};
+const uint16_t PROGMEM combo_scroll_down[] = {KC_PGDN, COMBO_END};
+
+combo_t key_combos[COMBO_COUNT] = {
+ [COMBO_SCROLL_UP] = COMBO_ACTION(combo_scroll_up),
+ [COMBO_SCROLL_DOWN] = COMBO_ACTION(combo_scroll_down)
+};
+
+void process_combo_event(uint16_t combo_index, bool pressed) {
+
+ switch(combo_index) {
+ case COMBO_SCROLL_UP:
+ if (pressed) {
+ scrollwheel_up_on = true;
+ }else{
+ scrollwheel_up_on = false;
+ }
+ break;
+ case COMBO_SCROLL_DOWN:
+ if (pressed) {
+ scrollwheel_down_on = true;
+ }else{
+ scrollwheel_down_on = false;
+ }
+ }
+}
diff --git a/keyboards/handwired/wylderbuilds/5x6/keymaps/doge/config.h b/keyboards/handwired/wylderbuilds/5x6/keymaps/doge/config.h
new file mode 100644
index 00000000000..c9b6e009ece
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6/keymaps/doge/config.h
@@ -0,0 +1,104 @@
+#pragma once
+#include "config_common.h"
+
+// Vendor IDs
+//#define VENDOR_ID 0x444D
+//#define PRODUCT_ID 0x3536
+// Saving coding space
+// #undef NO_DEBUG
+// #define NO_DEBUG
+// #undef NO_PRINT
+// #define NO_PRINT
+// RP2040 Settings
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+// More RP2040 Settings
+#define RP2040_FLASH_AT25SF128A
+#define RP2040_FLASH_GD25Q64CS
+#define RP2040_FLASH_W25X10CL
+#define RP2040_FLASH_IS25LP080
+#define RP2040_FLASH_GENERIC_03H
+// End of RP2040
+
+// Leader Settings
+// #define USE_SERIAL
+// #define MASTER_RIGHT
+// WS2812 RGB LED strip input and number of LEDs
+//#define RGB_DI_PIN D3
+//#define RGBLED_NUM 12
+// Mouse Keyboard setup
+#define MK_3_SPEED
+#define MK_W_OFFSET_UNMOD 1
+#define MK_W_INTERVAL_UNMOD 20
+#define MOUSEKEY_MAX_SPEED 7
+// Leader Key Defines
+#define LEADER_PER_KEY_TIMING
+#define LEADER_TIMEOUT 500
+// Combo Count
+#define COMBO_COUNT 2
+#define COMBO_TERM 2
+// Complete Death
+#define USB_POLLING_INTERVAL_MS 1
+#define QMK_KEYS_PER_SCAN 12
+#define FORCE_NKRO
+#define DEBOUNCE 5
+// Tap Dancing
+#define TAPPING_TERM 150
+// ONESHOT Tap
+#define ONESHOT_TAP_TOGGLE 5
+#define ONESHOT_TIMEOUT 1500
+// Disabling ALL of the RGB effects, to use our own and save firmware size.
+#undef RGBLIGHT_ANIMATIONS
+#undef RGBLIGHT_EFFECT_BREATHING
+#undef RGBLIGHT_EFFECT_RAINBOW_MOOD
+#undef RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#undef RGBLIGHT_EFFECT_SNAKE
+#undef RGBLIGHT_EFFECT_KNIGHT
+#undef RGBLIGHT_EFFECT_CHRISTMAS
+#undef RGBLIGHT_EFFECT_STATIC_GRADIENT
+#undef RGBLIGHT_EFFECT_RGB_TEST
+#undef RGBLIGHT_EFFECT_ALTERNATING
+#undef RGBLIGHT_EFFECT_TWINKLE
+#undef ENABLE_RGB_MATRIX_ALPHAS_MODS
+#undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+#undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+#undef ENABLE_RGB_MATRIX_BREATHING
+#undef ENABLE_RGB_MATRIX_BAND_SAT
+#undef ENABLE_RGB_MATRIX_BAND_VAL
+#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+#undef ENABLE_RGB_MATRIX_CYCLE_ALL
+#undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+#undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+#undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+#undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+#undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+#undef ENABLE_RGB_MATRIX_DUAL_BEACON
+#undef ENABLE_RGB_MATRIX_RAINBOW_BEACON
+#undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+#undef ENABLE_RGB_MATRIX_RAINDROPS
+#undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+#undef ENABLE_RGB_MATRIX_HUE_BREATHING
+#undef ENABLE_RGB_MATRIX_HUE_PENDULUM
+#undef ENABLE_RGB_MATRIX_HUE_WAVE
+#undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+#undef ENABLE_RGB_MATRIX_PIXEL_RAIN
+#undef ENABLE_RGB_MATRIX_TYPING_HEATMAP
+#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+#undef ENABLE_RGB_MATRIX_SPLASH
+#undef ENABLE_RGB_MATRIX_MULTISPLASH
+#undef ENABLE_RGB_MATRIX_SOLID_SPLASH
+#undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
diff --git a/keyboards/handwired/wylderbuilds/5x6/keymaps/doge/keymap.c b/keyboards/handwired/wylderbuilds/5x6/keymaps/doge/keymap.c
new file mode 100644
index 00000000000..324f1f08d56
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6/keymaps/doge/keymap.c
@@ -0,0 +1,45 @@
+// Include external files
+#include QMK_KEYBOARD_H
+#include "sharedDefines.h"
+#include "tap-dance.c"
+
+// Keymappings
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [colemak] = LAYOUT_5x6(
+ KC_ESC, 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_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS,
+ KC_LSFT, KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
+ TD(ALT_OSL3), KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H,KC_COMM, KC_DOT, KC_SLSH, KC_INT3,
+ KC_LBRC,KC_RBRC, KC_MINS,KC_EQL,
+ MO(3),KC_SPC, KC_ENT,TG(1),
+ KC_LCTL, KC_LSFT, KC_RSFT,KC_RCTL,
+ KC_LALT, KC_LGUI, KC_RGUI,KC_RALT),
+ [hub] = LAYOUT_5x6(
+ TO(2), TO(3), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, QK_BOOT,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, DB_TOGG,
+ 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, EE_CLR,
+ KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_TRNS,
+ KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO),
+ [qwerty] = LAYOUT_5x6(
+ KC_ESC, 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_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ KC_LSFT,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_INT3,
+ KC_LBRC, KC_RBRC, KC_MINS, KC_EQL,
+ TO(0), KC_SPC, KC_ENT, KC_NO,
+ KC_LCTL,KC_LSFT, KC_RSFT,KC_RCTL,
+ KC_LALT,KC_LGUI, MO(3),KC_RALT),
+ [furo] = LAYOUT_5x6(
+ 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_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SCRL, KC_CAPS, KC_TRNS, KC_TRNS, KC_PGUP,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PAUS, KC_TRNS, KC_UP, KC_PGDN,
+ TD(ALT_OSL3),KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT,
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,
+ TO(0), KC_TRNS, KC_TRNS, TO(2),
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+
+};
diff --git a/keyboards/handwired/wylderbuilds/5x6/keymaps/doge/leader.c b/keyboards/handwired/wylderbuilds/5x6/keymaps/doge/leader.c
new file mode 100644
index 00000000000..20f20868a0e
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6/keymaps/doge/leader.c
@@ -0,0 +1,35 @@
+// Including external files
+#include "sharedDefines.h"
+
+bool leader_key_is_running = false;
+
+uint16_t scroll_delay_timer;
+
+LEADER_EXTERNS();
+
+void matrix_scan_user(void) {
+ LEADER_DICTIONARY() {
+ leading = false;
+
+ leader_end();
+}
+
+ uint16_t current_timer_value = timer_read();
+
+ if(scrollwheel_up_on || scrollwheel_down_on){
+ if(timer_elapsed(scroll_delay_timer) > 50){ //call this every 100ms(Default)
+ register_code16(scrollwheel_up_on ? KC_MS_WH_UP : KC_MS_WH_DOWN);
+ unregister_code16(scrollwheel_up_on ? KC_MS_WH_UP : KC_MS_WH_DOWN);
+ scroll_delay_timer = current_timer_value;
+ }
+ }
+
+}
+
+void leader_start(void) {
+ leader_key_is_running = true;
+}
+
+void leader_end(void) {
+ leader_key_is_running = false;
+}
diff --git a/keyboards/handwired/wylderbuilds/5x6/keymaps/doge/rules.mk b/keyboards/handwired/wylderbuilds/5x6/keymaps/doge/rules.mk
new file mode 100644
index 00000000000..874b01af346
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6/keymaps/doge/rules.mk
@@ -0,0 +1,28 @@
+#MCU = atmega32u4 # MCU name
+#BOOTLOADER = caterina # Bootloader selection
+
+#Build Options. change yes to no to disable
+VIA_ENABLE = no # Enable VIA support
+VIAL_ENABLE = no # Enable VIAL support
+BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+LTO_ENABLE = yes # Enables Link Time Optimization
+
+COMBO_ENABLE = yes # Enables combos
+LEADER_ENABLE = yes # Enable Leader
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+SPLIT_KEYBOARD = yes # Split keyboard
+TAP_DANCE_ENABLE = yes # Enable tap-dance
+AUDIO_ENABLE = no # Enable Audio
+# Extra Stuff
+UNICODE_ENABLE = no
+BLUETOOTH_ENABLE = no
+RAW_ENABLE = no
+MIDI_ENABLE = no
+CONSOLE_ENABLE = no
+
+SRC+= combos.c leader.c start.c
diff --git a/keyboards/handwired/wylderbuilds/5x6/keymaps/doge/sharedDefines.h b/keyboards/handwired/wylderbuilds/5x6/keymaps/doge/sharedDefines.h
new file mode 100644
index 00000000000..6729edc152c
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6/keymaps/doge/sharedDefines.h
@@ -0,0 +1,24 @@
+// Making sharedDefines defined
+#ifndef SHAREDDEFINES_H
+#define SHAREDDEFINES_H
+
+// Inlcuding external files
+#include QMK_KEYBOARD_H
+#include "version.h"
+
+// Defining some BOOLS
+#define bool _Bool
+#define true 1
+#define false 0
+
+// Defining keymappings
+#define colemak 0
+#define hub 1
+#define qwerty 2
+#define furo 3
+
+extern bool scrollwheel_up_on;
+extern bool scrollwheel_down_on;
+extern uint16_t scroll_delay_timer;
+
+#endif
diff --git a/keyboards/handwired/wylderbuilds/5x6/keymaps/doge/start.c b/keyboards/handwired/wylderbuilds/5x6/keymaps/doge/start.c
new file mode 100644
index 00000000000..9639f66f40d
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6/keymaps/doge/start.c
@@ -0,0 +1,7 @@
+// Including external files
+#include "sharedDefines.h"
+
+// starting scroll delay on keyboard post
+void keyboard_post_init_user(void) {
+ scroll_delay_timer = timer_read();
+}
diff --git a/keyboards/handwired/wylderbuilds/5x6/keymaps/doge/tap-dance.c b/keyboards/handwired/wylderbuilds/5x6/keymaps/doge/tap-dance.c
new file mode 100644
index 00000000000..826abde03af
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6/keymaps/doge/tap-dance.c
@@ -0,0 +1,91 @@
+#include QMK_KEYBOARD_H
+
+typedef struct {
+ bool is_press_action;
+ int state;
+} tap;
+
+enum {
+ SINGLE_TAP = 1,
+ SINGLE_HOLD = 2,
+ DOUBLE_TAP = 3,
+ DOUBLE_HOLD = 4,
+ TRIPLE_TAP = 5,
+ TRIPLE_HOLD = 6
+};
+
+// Tap dance enum
+enum {
+ ALT_OSL3 = 0
+};
+
+
+int cur_dance (qk_tap_dance_state_t *state);
+void alt_finished (qk_tap_dance_state_t *state, void *user_data);
+void alt_reset (qk_tap_dance_state_t *state, void *user_data);
+
+
+int cur_dance (qk_tap_dance_state_t *state) {
+ if (state->count == 1) {
+ if (state->pressed) return SINGLE_HOLD;
+ else return SINGLE_TAP;
+ }
+ else if (state->count == 2) {
+ if (state->pressed) return DOUBLE_HOLD;
+ else return DOUBLE_TAP;
+ }
+ else if (state->count == 3) {
+ if (state->interrupted || !state->pressed) return TRIPLE_TAP;
+ else return TRIPLE_HOLD;
+ }
+ else return 8;
+}
+
+static tap alttap_state = {
+ .is_press_action = true,
+ .state = 0
+};
+
+void alt_finished (qk_tap_dance_state_t *state, void *user_data) {
+ alttap_state.state = cur_dance(state);
+ switch (alttap_state.state) {
+ case SINGLE_TAP: set_oneshot_layer(3, ONESHOT_START); clear_oneshot_layer_state(ONESHOT_PRESSED); break;
+ case SINGLE_HOLD: register_code(KC_LALT); break;
+ case DOUBLE_TAP: set_oneshot_layer(3, ONESHOT_START); set_oneshot_layer(3, ONESHOT_PRESSED); break;
+ case DOUBLE_HOLD: register_code(KC_LALT); layer_on(3); break;
+ }
+}
+
+void alt_reset (qk_tap_dance_state_t *state, void *user_data) {
+ switch (alttap_state.state) {
+ case SINGLE_TAP: break;
+ case SINGLE_HOLD: unregister_code(KC_LALT); break;
+ case DOUBLE_TAP: break;
+ case DOUBLE_HOLD: layer_off(3); unregister_code(KC_LALT); break;
+ }
+ alttap_state.state = 0;
+}
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [ALT_OSL3] = ACTION_TAP_DANCE_FN_ADVANCED(NULL,alt_finished, alt_reset)
+};
+
+bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
+
+ switch (keycode) {
+ case KC_TRNS:
+ case KC_NO:
+ if (record->event.pressed && is_oneshot_layer_active())
+ clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
+ return true;
+ case QK_BOOTLOADER:
+ if (record->event.pressed && is_oneshot_layer_active()){
+ clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
+ return false;
+ }
+ return true;
+ default:
+ return true;
+ }
+ return true;
+}
diff --git a/keyboards/handwired/wylderbuilds/5x6/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/5x6/keymaps/vial/config.h
new file mode 100644
index 00000000000..4db68bed538
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xF1, 0x48, 0x6D, 0xE7, 0x48, 0xC2, 0xD2, 0x75}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 5 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 5 }
diff --git a/keyboards/handwired/wylderbuilds/5x6/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/5x6/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..8afc60d01db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6/keymaps/vial/keymap.c
@@ -0,0 +1,44 @@
+#include QMK_KEYBOARD_H
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_5x6(
+ KC_ESC , 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_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_MINS,
+ KC_LSFT, 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_BSLS,
+ KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL,
+ RAISE,KC_SPC, KC_ENT, LOWER,
+ KC_TAB,KC_HOME, KC_END, KC_DEL,
+ KC_BSPC, KC_GRV, KC_LGUI, KC_LALT
+ ),
+
+ [_LOWER] = LAYOUT_5x6(
+ KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,
+ _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,
+ _______,_______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS,
+ _______,KC_PSCR, _______, KC_P0,
+ _______,_______, _______,_______,
+ _______,_______, _______,_______,
+ _______,_______, _______,QK_BOOT
+
+ ),
+
+ [_RAISE] = LAYOUT_5x6(
+ KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,
+ _______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD,
+ _______,_______, KC_EQL ,_______,
+ _______,_______, _______,_______,
+ _______,_______, _______,_______,
+ QK_BOOT,_______, _______,_______
+ )
+};
diff --git a/keyboards/handwired/wylderbuilds/5x6/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/5x6/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/5x6/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/5x6/keymaps/vial/vial.json
new file mode 100644
index 00000000000..42c20e63eaa
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6/keymaps/vial/vial.json
@@ -0,0 +1,197 @@
+{
+ "matrix": {
+ "rows": 12,
+ "cols": 6
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 5x6 Standard Default"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5.75
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,2",
+ "4,3",
+ {
+ "x": 9.75
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -1.5,
+ "x": 6
+ },
+ "4,4",
+ "4,5"
+ ],
+ [
+ {
+ "x": 6.5
+ },
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "x": 7
+ },
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "r": -6.5,
+ "y": -0.75,
+ "x": 11.75
+ },
+ "10,0",
+ "10,1"
+ ],
+ [
+ {
+ "x": 11.25
+ },
+ "11,0",
+ "11,1"
+ ],
+ [
+ {
+ "x": 10.75
+ },
+ "11,2",
+ "11,3"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/5x6/rules.mk b/keyboards/handwired/wylderbuilds/5x6/rules.mk
new file mode 100644
index 00000000000..4f88b471fc7
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6/rules.mk
@@ -0,0 +1,18 @@
+# Board, Bootloader and MCU
+MCU = RP2040
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+F_CPU = 8000000
+SPLIT_KEYBOARD = yes
+
+# Drivers for components
+OLED_DRIVER = SSD1306
+OLED_DRIVER = no
+# Needed for OLED setup
+WPM_ENABLE = no
+# RGB Light
+RGBLIGHT_ENABLE = no
+
+# Opt defs, comment out you're if not using OLED screen for the dactyl_manuform.
+# OPT_DEFS += -DHAL_USE_I2C=TRUE
+
diff --git a/keyboards/handwired/wylderbuilds/5x6/wylderbuilds-5x6-standard-default.json b/keyboards/handwired/wylderbuilds/5x6/wylderbuilds-5x6-standard-default.json
new file mode 100644
index 00000000000..f8ae7d455f5
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6/wylderbuilds-5x6-standard-default.json
@@ -0,0 +1,189 @@
+[
+ {
+ "name": "Wylderbuilds 5x6 Standard Default"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5.75
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,2",
+ "4,3",
+ {
+ "x": 9.75
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -1.5,
+ "x": 6
+ },
+ "4,4",
+ "4,5"
+ ],
+ [
+ {
+ "x": 6.5
+ },
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "x": 7
+ },
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "r": -6.5,
+ "y": -0.75,
+ "x": 11.75
+ },
+ "10,0",
+ "10,1"
+ ],
+ [
+ {
+ "x": 11.25
+ },
+ "11,0",
+ "11,1"
+ ],
+ [
+ {
+ "x": 10.75
+ },
+ "11,2",
+ "11,3"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/5x6_3_full/5x6_3_full.c b/keyboards/handwired/wylderbuilds/5x6_3_full/5x6_3_full.c
new file mode 100644
index 00000000000..d2fb27e1847
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_3_full/5x6_3_full.c
@@ -0,0 +1 @@
+#include "5x6_3_full.h"
diff --git a/keyboards/handwired/wylderbuilds/5x6_3_full/5x6_3_full.h b/keyboards/handwired/wylderbuilds/5x6_3_full/5x6_3_full.h
new file mode 100644
index 00000000000..0c6faf8189b
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_3_full/5x6_3_full.h
@@ -0,0 +1,28 @@
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_5x6_3( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+ L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \
+ L40, L41, L42, L43, R42, R43, R44, R45, \
+ L53, L54, L55, R50, R51, R52 \
+) { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { L30, L31, L32, L33, L34, L35 }, \
+ { L40, L41, L42, L43, XXX, XXX }, \
+ { XXX, XXX, XXX, L53, L54, L55 }, \
+\
+ { R00, R01, R02, R03, R04, R05 }, \
+ { R10, R11, R12, R13, R14, R15 }, \
+ { R20, R21, R22, R23, R24, R25 }, \
+ { R30, R31, R32, R33, R34, R35 }, \
+ { XXX, XXX, R42, R43, R44, R45 }, \
+ { R50, R51, R52, XXX, XXX, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/5x6_3_full/config.h b/keyboards/handwired/wylderbuilds/5x6_3_full/config.h
new file mode 100644
index 00000000000..f34ff0ffed6
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_3_full/config.h
@@ -0,0 +1,65 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+#include "config_common.h"
+// Basic Config
+
+//#define PRODUCT_ID 0x0002
+
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP16
+#define SERIAL_USART_RX_PIN GP17
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+#define SERIAL_USART_PIN_SWAP
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 6
+
+#define MATRIX_COL_PINS { GP3, GP4, GP5, GP6, GP7, GP8 }
+#define MATRIX_ROW_PINS { GP10, GP11, GP12, GP13, GP14, GP15 }
+#define DIODE_DIRECTION COL2ROW
+
+// WS2812 RGB LED strip input and number of LEDs
+#ifdef RGBLIGHT_ENABLE
+#define RGB_DI_PIN GP17
+#define RGBLED_NUM 34
+//#define DRIVER_LED_TOTAL 34
+#define RGBLED_SPLIT { 17, 17 }
+#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+#define NOP_FUDGE 0.4
+#endif
+
+// OLED Pins and Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD1
+#define I2C1_SDA_PIN GP18
+#define I2C1_SCL_PIN GP19
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+// Misc settings
+// 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
+// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/5x6_3_full/info.json b/keyboards/handwired/wylderbuilds/5x6_3_full/info.json
new file mode 100644
index 00000000000..433c3678392
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_3_full/info.json
@@ -0,0 +1,335 @@
+{
+ "keyboard_name": "Dactyl-Manuform (5x6-3-Full)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "bootloader": "rp2040",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0031",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 12,
+ "cols": 6
+ },
+ "layouts": {
+ "LAYOUT_5x6_3": {
+ "layout": [
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "6,0",
+ "x": 12.75,
+ "y": 0
+ },
+ {
+ "label": "6,1",
+ "x": 13.75,
+ "y": 0
+ },
+ {
+ "label": "6,2",
+ "x": 14.75,
+ "y": 0
+ },
+ {
+ "label": "6,3",
+ "x": 15.75,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "6,4",
+ "x": 16.75,
+ "y": 0.5
+ },
+ {
+ "label": "6,5",
+ "x": 17.75,
+ "y": 0.5
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "7,0",
+ "x": 12.75,
+ "y": 1
+ },
+ {
+ "label": "7,1",
+ "x": 13.75,
+ "y": 1
+ },
+ {
+ "label": "7,2",
+ "x": 14.75,
+ "y": 1
+ },
+ {
+ "label": "7,3",
+ "x": 15.75,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "7,4",
+ "x": 16.75,
+ "y": 1.5
+ },
+ {
+ "label": "7,5",
+ "x": 17.75,
+ "y": 1.5
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "8,0",
+ "x": 12.75,
+ "y": 2
+ },
+ {
+ "label": "8,1",
+ "x": 13.75,
+ "y": 2
+ },
+ {
+ "label": "8,2",
+ "x": 14.75,
+ "y": 2
+ },
+ {
+ "label": "8,3",
+ "x": 15.75,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "8,4",
+ "x": 16.75,
+ "y": 2.5
+ },
+ {
+ "label": "8,5",
+ "x": 17.75,
+ "y": 2.5
+ },
+ {
+ "label": "3,2",
+ "x": 3,
+ "y": 3
+ },
+ {
+ "label": "3,3",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "3,4",
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "3,5",
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "9,0",
+ "x": 12.75,
+ "y": 3
+ },
+ {
+ "label": "9,1",
+ "x": 13.75,
+ "y": 3
+ },
+ {
+ "label": "9,2",
+ "x": 14.75,
+ "y": 3
+ },
+ {
+ "label": "9,3",
+ "x": 15.75,
+ "y": 3
+ },
+ {
+ "label": "3,0",
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "label": "3,1",
+ "x": 2,
+ "y": 3.5
+ },
+ {
+ "label": "9,4",
+ "x": 16.75,
+ "y": 3.5
+ },
+ {
+ "label": "9,5",
+ "x": 17.75,
+ "y": 3.5
+ },
+ {
+ "label": "4,2",
+ "x": 3,
+ "y": 4
+ },
+ {
+ "label": "4,3",
+ "x": 4,
+ "y": 4
+ },
+ {
+ "label": "10,2",
+ "x": 14.75,
+ "y": 4
+ },
+ {
+ "label": "10,3",
+ "x": 15.75,
+ "y": 4
+ },
+ {
+ "label": "4,0",
+ "x": 1,
+ "y": 4.5
+ },
+ {
+ "label": "4,1",
+ "x": 2,
+ "y": 4.5
+ },
+ {
+ "label": "10,4",
+ "x": 16.75,
+ "y": 4.5
+ },
+ {
+ "label": "10,5",
+ "x": 17.75,
+ "y": 4.5
+ },
+ {
+ "label": "5,3",
+ "x": 6,
+ "y": 4
+ },
+ {
+ "label": "5,4",
+ "x": 7,
+ "y": 4
+ },
+ {
+ "label": "5,5",
+ "x": 8,
+ "y": 4
+ },
+ {
+ "label": "11,0",
+ "x": 10.75,
+ "y": 6.25
+ },
+ {
+ "label": "11,1",
+ "x": 11.75,
+ "y": 6.25
+ },
+ {
+ "label": "11,2",
+ "x": 12.75,
+ "y": 6.25
+ }
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/wylderbuilds/5x6_3_full/keymaps/default/keymap.c b/keyboards/handwired/wylderbuilds/5x6_3_full/keymaps/default/keymap.c
new file mode 100644
index 00000000000..270e3ba94c2
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_3_full/keymaps/default/keymap.c
@@ -0,0 +1,44 @@
+#include QMK_KEYBOARD_H
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_5x6(
+ KC_ESC , 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_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_MINS,
+ KC_LSFT, 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_BSLS,
+ KC_GRV, KC_TILDE,KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL, KC_MINS, KC_RCTL,
+ RAISE,KC_SPC, KC_ENT, LOWER,
+ KC_TAB,KC_HOME, KC_END, KC_DEL,
+ KC_BSPC, KC_GRV, KC_LGUI, KC_LALT
+ ),
+
+ [_LOWER] = LAYOUT_5x6(
+ KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,
+ _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,
+ _______,_______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS,
+ _______,_______,_______,KC_PSCR, _______, KC_P0, _______, _______,
+ _______,_______, _______,_______,
+ _______,_______, _______,_______,
+ _______,_______, _______,QK_BOOT
+
+ ),
+
+ [_RAISE] = LAYOUT_5x6(
+ KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,
+ _______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD,
+ _______,_______,_______,_______, KC_EQL ,_______,_______,_______,
+ _______,_______, _______,_______,
+ _______,_______, _______,_______,
+ QK_BOOT,_______, _______,_______
+ )
+};
diff --git a/keyboards/handwired/wylderbuilds/5x6_3_full/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/5x6_3_full/keymaps/vial/config.h
new file mode 100644
index 00000000000..9cf0ac600a6
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_3_full/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xEA, 0x1F, 0xB2, 0x38, 0xA4, 0xE3, 0xD2, 0xC1}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 6 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 6 }
diff --git a/keyboards/handwired/wylderbuilds/5x6_3_full/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/5x6_3_full/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..73af23d45d9
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_3_full/keymaps/vial/keymap.c
@@ -0,0 +1,45 @@
+#include QMK_KEYBOARD_H
+#include "5x6_3_full.h"
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_5x6_3(
+ KC_ESC , 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_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_MINS,
+ KC_LSFT, 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_BSLS,
+ KC_GRV, KC_TILDE,KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL, KC_MINS, KC_RCTL,
+ RAISE,KC_SPC, KC_BSPC, KC_TAB, KC_ENT, LOWER
+ ),
+
+ [_LOWER] = LAYOUT_5x6_3(
+ KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,
+ _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,
+ _______,_______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS,
+ _______,_______,_______,KC_PSCR, _______, KC_P0, _______, QK_BOOT,
+ _______,_______,_______, _______,_______,_______
+ ),
+
+ [_RAISE] = LAYOUT_5x6_3(
+ KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,
+ _______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD,
+ QK_BOOT,_______,_______,_______, KC_EQL ,_______,_______,_______,
+ _______,_______,_______, _______,_______,_______
+ )
+};
+
+//void keyboard_post_init_user(void) {
+// // Customise these values to desired behaviour
+// debug_enable=true;
+// debug_matrix=true;
+// debug_keyboard=true;
+// debug_mouse=true;
+//}
diff --git a/keyboards/handwired/wylderbuilds/5x6_3_full/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/5x6_3_full/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_3_full/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/5x6_3_full/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/5x6_3_full/keymaps/vial/vial.json
new file mode 100644
index 00000000000..a298f11a481
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_3_full/keymaps/vial/vial.json
@@ -0,0 +1,184 @@
+{
+ "matrix": {
+ "rows": 12,
+ "cols": 6
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds Dactyl Manuform 5x5_3_full"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5.75
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,2",
+ "4,3",
+ {
+ "x": 9.75
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "4,0",
+ "4,1",
+ {
+ "x": 13.75
+ },
+ "10,4",
+ "10,5"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -1.5,
+ "x": 6
+ },
+ "5,3",
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "r": -6.5,
+ "y": 1.25,
+ "x": 10.75
+ },
+ "11,0",
+ "11,1",
+ "11,2"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/5x6_3_full/rules.mk b/keyboards/handwired/wylderbuilds/5x6_3_full/rules.mk
new file mode 100644
index 00000000000..9dc3499fef8
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_3_full/rules.mk
@@ -0,0 +1,19 @@
+# Board, Bootloader and MCU
+MCU = RP2040
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+F_CPU = 8000000
+SPLIT_KEYBOARD = yes
+
+# Drivers for components
+OLED_DRIVER = SSD1306
+OLED_DRIVER = no
+# Needed for OLED setup
+WPM_ENABLE = no
+# RGB Light
+RGBLIGHT_ENABLE = no
+CONSOLE_ENABLE = yes
+
+# Opt defs, comment out you're if not using OLED screen for the dactyl_manuform.
+OPT_DEFS += -DHAL_USE_I2C=TRUE
+
diff --git a/keyboards/handwired/wylderbuilds/5x6_5_full/5x6_5_full.c b/keyboards/handwired/wylderbuilds/5x6_5_full/5x6_5_full.c
new file mode 100644
index 00000000000..0bb96829e41
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_5_full/5x6_5_full.c
@@ -0,0 +1 @@
+#include "5x6_5_full.h"
diff --git a/keyboards/handwired/wylderbuilds/5x6_5_full/5x6_5_full.h b/keyboards/handwired/wylderbuilds/5x6_5_full/5x6_5_full.h
new file mode 100644
index 00000000000..9c9e9cefabb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_5_full/5x6_5_full.h
@@ -0,0 +1,29 @@
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_5x6_5( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+ L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \
+ L40, L41, L42, L43, R42, R43, R44, R45, \
+ L53, L54, L55, R50, R51, R52, \
+ L51, L52, R53, R54 \
+) { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { L30, L31, L32, L33, L34, L35 }, \
+ { L40, L41, L42, L43, XXX, XXX }, \
+ { XXX, L51, L52, L53, L54, L55 }, \
+\
+ { R00, R01, R02, R03, R04, R05 }, \
+ { R10, R11, R12, R13, R14, R15 }, \
+ { R20, R21, R22, R23, R24, R25 }, \
+ { R30, R31, R32, R33, R34, R35 }, \
+ { XXX, XXX, R42, R43, R44, R45 }, \
+ { R50, R51, R52, R53, R54, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/5x6_5_full/config.h b/keyboards/handwired/wylderbuilds/5x6_5_full/config.h
new file mode 100644
index 00000000000..38e57cfeb83
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_5_full/config.h
@@ -0,0 +1,65 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+//#include "config_common.h"
+// Basic Config
+
+//#define PRODUCT_ID 0x0002
+
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP16
+#define SERIAL_USART_RX_PIN GP17
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+//#define SERIAL_USART_PIN_SWAP
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 6
+
+#define MATRIX_COL_PINS { GP2, GP3, GP4, GP5, GP6, GP7 }
+#define MATRIX_ROW_PINS { GP13, GP12, GP11, GP10, GP9, GP14 }
+#define DIODE_DIRECTION COL2ROW
+
+// WS2812 RGB LED strip input and number of LEDs
+#ifdef RGBLIGHT_ENABLE
+#define RGB_DI_PIN GP17
+#define RGBLED_NUM 34
+//#define DRIVER_LED_TOTAL 34
+#define RGBLED_SPLIT { 17, 17 }
+#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+#define NOP_FUDGE 0.4
+#endif
+
+// OLED Pins and Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD1
+#define I2C1_SDA_PIN GP18
+#define I2C1_SCL_PIN GP19
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+// Misc settings
+// 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
+// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/5x6_5_full/info.json b/keyboards/handwired/wylderbuilds/5x6_5_full/info.json
new file mode 100644
index 00000000000..2800046977e
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_5_full/info.json
@@ -0,0 +1,355 @@
+{
+ "keyboard_name": "Dactyl-Manuform (5x6-Full)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "bootloader": "rp2040",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0042",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 12,
+ "cols": 6
+ },
+ "layouts": {
+ "LAYOUT_5x6_5": {
+ "layout": [
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "6,0",
+ "x": 12.75,
+ "y": 0
+ },
+ {
+ "label": "6,1",
+ "x": 13.75,
+ "y": 0
+ },
+ {
+ "label": "6,2",
+ "x": 14.75,
+ "y": 0
+ },
+ {
+ "label": "6,3",
+ "x": 15.75,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "6,4",
+ "x": 16.75,
+ "y": 0.5
+ },
+ {
+ "label": "6,5",
+ "x": 17.75,
+ "y": 0.5
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "7,0",
+ "x": 12.75,
+ "y": 1
+ },
+ {
+ "label": "7,1",
+ "x": 13.75,
+ "y": 1
+ },
+ {
+ "label": "7,2",
+ "x": 14.75,
+ "y": 1
+ },
+ {
+ "label": "7,3",
+ "x": 15.75,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "7,4",
+ "x": 16.75,
+ "y": 1.5
+ },
+ {
+ "label": "7,5",
+ "x": 17.75,
+ "y": 1.5
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "8,0",
+ "x": 12.75,
+ "y": 2
+ },
+ {
+ "label": "8,1",
+ "x": 13.75,
+ "y": 2
+ },
+ {
+ "label": "8,2",
+ "x": 14.75,
+ "y": 2
+ },
+ {
+ "label": "8,3",
+ "x": 15.75,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "8,4",
+ "x": 16.75,
+ "y": 2.5
+ },
+ {
+ "label": "8,5",
+ "x": 17.75,
+ "y": 2.5
+ },
+ {
+ "label": "3,2",
+ "x": 3,
+ "y": 3
+ },
+ {
+ "label": "3,3",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "3,4",
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "3,5",
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "9,0",
+ "x": 12.75,
+ "y": 3
+ },
+ {
+ "label": "9,1",
+ "x": 13.75,
+ "y": 3
+ },
+ {
+ "label": "9,2",
+ "x": 14.75,
+ "y": 3
+ },
+ {
+ "label": "9,3",
+ "x": 15.75,
+ "y": 3
+ },
+ {
+ "label": "3,0",
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "label": "3,1",
+ "x": 2,
+ "y": 3.5
+ },
+ {
+ "label": "9,4",
+ "x": 16.75,
+ "y": 3.5
+ },
+ {
+ "label": "9,5",
+ "x": 17.75,
+ "y": 3.5
+ },
+ {
+ "label": "4,2",
+ "x": 3,
+ "y": 4
+ },
+ {
+ "label": "4,3",
+ "x": 4,
+ "y": 4
+ },
+ {
+ "label": "10,2",
+ "x": 14.75,
+ "y": 4
+ },
+ {
+ "label": "10,3",
+ "x": 15.75,
+ "y": 4
+ },
+ {
+ "label": "4,0",
+ "x": 1,
+ "y": 4.5
+ },
+ {
+ "label": "4,1",
+ "x": 2,
+ "y": 4.5
+ },
+ {
+ "label": "10,4",
+ "x": 16.75,
+ "y": 4.5
+ },
+ {
+ "label": "10,5",
+ "x": 17.75,
+ "y": 4.5
+ },
+ {
+ "label": "5,3",
+ "x": 6,
+ "y": 3.5
+ },
+ {
+ "label": "5,4",
+ "x": 7,
+ "y": 3.5
+ },
+ {
+ "label": "5,5",
+ "x": 8,
+ "y": 3.5
+ },
+ {
+ "label": "5,1",
+ "x": 6.75,
+ "y": 4.5
+ },
+ {
+ "label": "5,2",
+ "x": 7.75,
+ "y": 4.5
+ },
+ {
+ "label": "11,0",
+ "x": 10.75,
+ "y": 5.75
+ },
+ {
+ "label": "11,1",
+ "x": 11.75,
+ "y": 5.75
+ },
+ {
+ "label": "11,2",
+ "x": 12.75,
+ "y": 5.75
+ },
+ {
+ "label": "11,3",
+ "x": 11,
+ "y": 6.75
+ },
+ {
+ "label": "11,4",
+ "x": 12,
+ "y": 6.75
+ }
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/wylderbuilds/5x6_5_full/keymaps/default/keymap.c b/keyboards/handwired/wylderbuilds/5x6_5_full/keymaps/default/keymap.c
new file mode 100644
index 00000000000..270e3ba94c2
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_5_full/keymaps/default/keymap.c
@@ -0,0 +1,44 @@
+#include QMK_KEYBOARD_H
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_5x6(
+ KC_ESC , 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_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_MINS,
+ KC_LSFT, 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_BSLS,
+ KC_GRV, KC_TILDE,KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL, KC_MINS, KC_RCTL,
+ RAISE,KC_SPC, KC_ENT, LOWER,
+ KC_TAB,KC_HOME, KC_END, KC_DEL,
+ KC_BSPC, KC_GRV, KC_LGUI, KC_LALT
+ ),
+
+ [_LOWER] = LAYOUT_5x6(
+ KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,
+ _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,
+ _______,_______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS,
+ _______,_______,_______,KC_PSCR, _______, KC_P0, _______, _______,
+ _______,_______, _______,_______,
+ _______,_______, _______,_______,
+ _______,_______, _______,QK_BOOT
+
+ ),
+
+ [_RAISE] = LAYOUT_5x6(
+ KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,
+ _______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD,
+ _______,_______,_______,_______, KC_EQL ,_______,_______,_______,
+ _______,_______, _______,_______,
+ _______,_______, _______,_______,
+ QK_BOOT,_______, _______,_______
+ )
+};
diff --git a/keyboards/handwired/wylderbuilds/5x6_5_full/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/5x6_5_full/keymaps/vial/config.h
new file mode 100644
index 00000000000..a11a5a85116
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_5_full/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xF4, 0xCB, 0xB8, 0x15, 0x71, 0x86, 0xF5, 0x27}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 0 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 0 }
diff --git a/keyboards/handwired/wylderbuilds/5x6_5_full/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/5x6_5_full/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..bcec072d2d3
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_5_full/keymaps/vial/keymap.c
@@ -0,0 +1,50 @@
+#include QMK_KEYBOARD_H
+#include "5x6_5_full.h"
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_5x6_5(
+ KC_ESC , 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_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_MINS,
+ KC_LSFT, 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_BSLS,
+ KC_GRV, KC_TILDE,KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL, KC_MINS, KC_RCTL,
+ RAISE, KC_SPC, KC_TAB, KC_ENT, KC_BSPC, LOWER,
+ KC_HOME,KC_GRV, KC_END, KC_DEL
+
+ ),
+
+ [_LOWER] = LAYOUT_5x6_5(
+ KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,
+ _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,
+ _______,_______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS,
+ _______,_______,_______,KC_PSCR, _______, KC_P0, _______, _______,
+ _______,_______,_______, _______,_______,_______,
+ _______,_______, QK_BOOT,_______
+ ),
+
+ [_RAISE] = LAYOUT_5x6_5(
+ KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,
+ _______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD,
+ _______,_______,_______,_______, KC_EQL ,_______,_______,_______,
+ _______,_______,_______, _______,_______,_______,
+ _______,QK_BOOT, _______,_______
+ )
+};
+
+//void keyboard_post_init_user(void) {
+// // Customise these values to desired behaviour
+// debug_enable=true;
+// debug_matrix=true;
+// debug_keyboard=true;
+// debug_mouse=true;
+//}
diff --git a/keyboards/handwired/wylderbuilds/5x6_5_full/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/5x6_5_full/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_5_full/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/5x6_5_full/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/5x6_5_full/keymaps/vial/vial.json
new file mode 100644
index 00000000000..4ea1846c741
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_5_full/keymaps/vial/vial.json
@@ -0,0 +1,199 @@
+{
+ "matrix": {
+ "rows": 12,
+ "cols": 6
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 5x6_5_Full",
+ "author": "https://wylderbuilds.com"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5.75
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,2",
+ "4,3",
+ {
+ "x": 9.75
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "4,0",
+ "4,1",
+ {
+ "x": 13.75
+ },
+ "10,4",
+ "10,5"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -2,
+ "x": 6
+ },
+ "5,3",
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "x": 6.75
+ },
+ "5,1",
+ "5,2"
+ ],
+ [
+ {
+ "r": -6.5,
+ "y": 0.25,
+ "x": 10.75
+ },
+ "11,0",
+ "11,1",
+ "11,2"
+ ],
+ [
+ {
+ "x": 11
+ },
+ "11,3",
+ "11,4"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/5x6_5_full/rules.mk b/keyboards/handwired/wylderbuilds/5x6_5_full/rules.mk
new file mode 100644
index 00000000000..6526088281d
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_5_full/rules.mk
@@ -0,0 +1,19 @@
+# Board, Bootloader and MCU
+MCU = RP2040
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+F_CPU = 8000000
+SPLIT_KEYBOARD = yes
+
+# Drivers for components
+OLED_DRIVER = SSD1306
+OLED_DRIVER = no
+# Needed for OLED setup
+WPM_ENABLE = no
+# RGB Light
+RGBLIGHT_ENABLE = no
+CONSOLE_ENABLE = no
+
+# Opt defs, comment out you're if not using OLED screen for the dactyl_manuform.
+#OPT_DEFS += -DHAL_USE_I2C=TRUE
+
diff --git a/keyboards/handwired/wylderbuilds/5x6_5_oled/5x6_5_oled.c b/keyboards/handwired/wylderbuilds/5x6_5_oled/5x6_5_oled.c
new file mode 100644
index 00000000000..b960d2e47f4
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_5_oled/5x6_5_oled.c
@@ -0,0 +1 @@
+#include "5x6_5_oled.h"
diff --git a/keyboards/handwired/wylderbuilds/5x6_5_oled/5x6_5_oled.h b/keyboards/handwired/wylderbuilds/5x6_5_oled/5x6_5_oled.h
new file mode 100644
index 00000000000..df7442978db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_5_oled/5x6_5_oled.h
@@ -0,0 +1,29 @@
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_5x6_5( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+ L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \
+ L42, L43, R42, R43, \
+ L53, L54, L55, R50, R51, R52, \
+ L51, L52, R53, R54 \
+) { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { L30, L31, L32, L33, L34, L35 }, \
+ { XXX, XXX, L42, L43, XXX, XXX }, \
+ { XXX, L51, L52, L53, L54, L55 }, \
+\
+ { R00, R01, R02, R03, R04, R05 }, \
+ { R10, R11, R12, R13, R14, R15 }, \
+ { R20, R21, R22, R23, R24, R25 }, \
+ { R30, R31, R32, R33, R34, R35 }, \
+ { XXX, XXX, R42, R43, XXX, XXX }, \
+ { R50, R51, R52, R53, R54, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/5x6_5_oled/config.h b/keyboards/handwired/wylderbuilds/5x6_5_oled/config.h
new file mode 100644
index 00000000000..deb50f0f8fd
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_5_oled/config.h
@@ -0,0 +1,79 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+// This has been depricated - #include "config_common.h"
+// Basic Config
+
+//#define PRODUCT_ID 0x0002
+
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+//#define SERIAL_USART_PIN_SWAP
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 6
+
+#define MATRIX_COL_PINS { GP2, GP3, GP4, GP5, GP6, GP7 }
+#define MATRIX_ROW_PINS { GP9, GP10, GP11, GP12, GP13, GP14 }
+#define DIODE_DIRECTION COL2ROW
+
+// WS2812 RGB LED strip input and number of LEDs
+#ifdef RGBLIGHT_ENABLE
+//#define WS2812_PIO_USE_PIO1
+//#define WS2812_PIO_USE_PIO1
+#define WS2812_DI_PIN GP21
+//#define WS2812_EXTERNAL_PULLUP
+#define RGBLED_NUM 36
+//#define DRIVER_LED_TOTAL 34
+#define RGBLED_SPLIT { 18, 18 }
+#define RGBLIGHT_SPLIT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 17
+#define RGBLIGHT_LIMIT_VAL 255
+//#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+#define NOP_FUDGE 0.4
+#endif
+
+// OLED Pins and Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD1
+#define I2C1_SDA_PIN GP16
+#define I2C1_SCL_PIN GP17
+#define RGBLIGHT_LAYERS
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+// Misc settings
+// 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
+// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/5x6_5_oled/info.json b/keyboards/handwired/wylderbuilds/5x6_5_oled/info.json
new file mode 100644
index 00000000000..2419b3df9c0
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_5_oled/info.json
@@ -0,0 +1,335 @@
+{
+ "keyboard_name": "Dactyl-Manuform (5x6-5)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "bootloader": "rp2040",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0049",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 12,
+ "cols": 6
+ },
+ "layouts": {
+ "LAYOUT_5x6_5": {
+ "layout": [
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "6,0",
+ "x": 12.75,
+ "y": 0
+ },
+ {
+ "label": "6,1",
+ "x": 13.75,
+ "y": 0
+ },
+ {
+ "label": "6,2",
+ "x": 14.75,
+ "y": 0
+ },
+ {
+ "label": "6,3",
+ "x": 15.75,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "6,4",
+ "x": 16.75,
+ "y": 0.5
+ },
+ {
+ "label": "6,5",
+ "x": 17.75,
+ "y": 0.5
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "7,0",
+ "x": 12.75,
+ "y": 1
+ },
+ {
+ "label": "7,1",
+ "x": 13.75,
+ "y": 1
+ },
+ {
+ "label": "7,2",
+ "x": 14.75,
+ "y": 1
+ },
+ {
+ "label": "7,3",
+ "x": 15.75,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "7,4",
+ "x": 16.75,
+ "y": 1.5
+ },
+ {
+ "label": "7,5",
+ "x": 17.75,
+ "y": 1.5
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "8,0",
+ "x": 12.75,
+ "y": 2
+ },
+ {
+ "label": "8,1",
+ "x": 13.75,
+ "y": 2
+ },
+ {
+ "label": "8,2",
+ "x": 14.75,
+ "y": 2
+ },
+ {
+ "label": "8,3",
+ "x": 15.75,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "8,4",
+ "x": 16.75,
+ "y": 2.5
+ },
+ {
+ "label": "8,5",
+ "x": 17.75,
+ "y": 2.5
+ },
+ {
+ "label": "3,2",
+ "x": 3,
+ "y": 3
+ },
+ {
+ "label": "3,3",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "3,4",
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "3,5",
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "9,0",
+ "x": 12.75,
+ "y": 3
+ },
+ {
+ "label": "9,1",
+ "x": 13.75,
+ "y": 3
+ },
+ {
+ "label": "9,2",
+ "x": 14.75,
+ "y": 3
+ },
+ {
+ "label": "9,3",
+ "x": 15.75,
+ "y": 3
+ },
+ {
+ "label": "3,0",
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "label": "3,1",
+ "x": 2,
+ "y": 3.5
+ },
+ {
+ "label": "9,4",
+ "x": 16.75,
+ "y": 3.5
+ },
+ {
+ "label": "9,5",
+ "x": 17.75,
+ "y": 3.5
+ },
+ {
+ "label": "4,2",
+ "x": 3,
+ "y": 4
+ },
+ {
+ "label": "4,3",
+ "x": 4,
+ "y": 4
+ },
+ {
+ "label": "10,2",
+ "x": 14.75,
+ "y": 4
+ },
+ {
+ "label": "10,3",
+ "x": 15.75,
+ "y": 4
+ },
+ {
+ "label": "5,3",
+ "x": 6,
+ "y": 3.5
+ },
+ {
+ "label": "5,4",
+ "x": 7,
+ "y": 3.5
+ },
+ {
+ "label": "5,5",
+ "x": 8,
+ "y": 3.5
+ },
+ {
+ "label": "5,1",
+ "x": 6.75,
+ "y": 4.5
+ },
+ {
+ "label": "5,2",
+ "x": 7.75,
+ "y": 4.5
+ },
+ {
+ "label": "11,0",
+ "x": 10.75,
+ "y": 5.75
+ },
+ {
+ "label": "11,1",
+ "x": 11.75,
+ "y": 5.75
+ },
+ {
+ "label": "11,2",
+ "x": 12.75,
+ "y": 5.75
+ },
+ {
+ "label": "11,3",
+ "x": 11,
+ "y": 6.75
+ },
+ {
+ "label": "11,4",
+ "x": 12,
+ "y": 6.75
+ }
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/wylderbuilds/5x6_5_oled/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/5x6_5_oled/keymaps/vial/config.h
new file mode 100644
index 00000000000..06963db4ca9
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_5_oled/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xCF, 0x48, 0x93, 0x00, 0x17, 0x97, 0x65, 0x01}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 0 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 0 }
diff --git a/keyboards/handwired/wylderbuilds/5x6_5_oled/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/5x6_5_oled/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..cb74e527c9d
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_5_oled/keymaps/vial/keymap.c
@@ -0,0 +1,188 @@
+#include QMK_KEYBOARD_H
+#include "5x6_5_oled.h"
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_5x6_5(
+ KC_ESC , 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_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_MINS,
+ KC_LSFT, 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_BSLS,
+ KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL,
+ RAISE, KC_SPC, KC_TAB, KC_BSPC, KC_ENT, LOWER,
+ KC_HOME,KC_GRV, KC_END, KC_DEL
+
+ ),
+
+ [_LOWER] = LAYOUT_5x6_5(
+ KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,
+ _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,
+ _______,_______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS,
+ _______,KC_PSCR, _______, KC_P0,
+ _______,_______,_______, _______,_______,_______,
+ _______,_______, QK_BOOT,_______
+ ),
+
+ [_RAISE] = LAYOUT_5x6_5(
+ KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,
+ _______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU,
+ _______,RGB_VAI,RGB_SAI,RGB_HUI,RGB_MOD,RGB_TOG, _______,_______,_______,_______,_______,KC_VOLD,
+ _______,_______, KC_EQL ,_______,
+ _______,_______,_______, _______,_______,_______,
+ _______,QK_BOOT, _______,_______
+ )
+};
+
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_master()) {
+ return OLED_ROTATION_270;
+ }
+ return OLED_ROTATION_180;
+}
+
+static void render_wylderbuilds(void) {
+ static const char PROGMEM wylderbuilds[] = {
+ // 'dark wylderbuilds_oled_name', 128x32px
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40,
+ 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x20, 0x60,
+ 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x60, 0x60,
+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0,
+ 0x00, 0x00, 0xc1, 0xc1, 0x01, 0x01, 0xf1, 0x11, 0x01, 0x01, 0x01, 0x31, 0x60, 0xc0, 0x80, 0xc0,
+ 0xf0, 0x10, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0,
+ 0x00, 0x01, 0x03, 0x9e, 0xf8, 0x00, 0x00, 0x20, 0xe0, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0xf0, 0x30, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x98, 0xf0, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x00, 0x70, 0xfe, 0x03, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00,
+ 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x11, 0xf1, 0x11, 0x33, 0x63, 0xc3,
+ 0x83, 0x01, 0x01, 0xc1, 0xe1, 0x31, 0x11, 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,
+ 0x1f, 0x7c, 0xff, 0x07, 0x7c, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7f, 0xff,
+ 0x60, 0x30, 0x18, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xf2, 0x82, 0x02, 0x80, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x7f, 0x0e, 0x1b, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0x81, 0xc1, 0x63,
+ 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00,
+ 0x00, 0x1f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x60, 0x30, 0x1f,
+ 0x07, 0x00, 0x00, 0x01, 0x43, 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+
+ oled_write_raw_P(wylderbuilds, sizeof(wylderbuilds));
+}
+
+bool oled_task_user(void) {
+ oled_set_cursor(0, 1);
+ if (is_keyboard_master()) {
+ oled_write_P(PSTR("Layer\n"), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ oled_write_P(PSTR("QWRTY\n"), false);
+ break;
+ case _LOWER:
+ oled_write_P(PSTR("LOWER\n"), false);
+ break;
+ case _RAISE:
+ oled_write_P(PSTR("RAISE\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+ oled_set_cursor(0, 5);
+ oled_write_P(PSTR("WPM: "), false);
+
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 8);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+ } else {
+ // write WPM to right OLED
+ render_wylderbuilds();
+
+
+ }
+
+ return false;
+}
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+// Light LEDs 6 to 9 and 12 to 15 red when caps lock is active. Hard to ignore!
+const rgblight_segment_t PROGMEM querty_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_RED}, // Light 4 LEDs, starting with LED 6
+ {33, 3, HSV_RED} // Light 4 LEDs, starting with LED 6
+);
+// Light LEDs 11 & 12 in purple when keyboard layer 2 is active
+const rgblight_segment_t PROGMEM lower_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_BLUE},
+ {33, 3, HSV_BLUE}
+);
+// Light LEDs 9 & 10 in cyan when keyboard layer 1 is active
+const rgblight_segment_t PROGMEM raise_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_YELLOW},
+ {33, 3, HSV_YELLOW}
+);
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ querty_layer, // Overrides caps lock layer
+ lower_layer, // Overrides other layers
+ raise_layer // Overrides other layers
+);
+
+//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(0, layer_state_cmp(state, _QWERTY));
+ return state;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(1, layer_state_cmp(state, _LOWER));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _RAISE));
+ return state;
+}
+
+
+#endif
+
+// rgblight_enable();
+#ifdef RGBLIGHT_ENABLE
+void keyboard_post_init_user(void) {
+ // Enable the LED layers
+ rgblight_layers = my_rgb_layers;
+}
+// rgblight_layers = my_rgb_layers;
+// rgblight_enable_noeeprom(); // Enables RGB, without saving settings
+// rgblight_sethsv_noeeprom_cyan();
+// rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
+#endif
diff --git a/keyboards/handwired/wylderbuilds/5x6_5_oled/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/5x6_5_oled/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_5_oled/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/5x6_5_oled/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/5x6_5_oled/keymaps/vial/vial.json
new file mode 100644
index 00000000000..306c4481d19
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_5_oled/keymaps/vial/vial.json
@@ -0,0 +1,185 @@
+{
+ "matrix": {
+ "rows": 12,
+ "cols": 6
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 5x6_5 Standard"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5.75
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,2",
+ "4,3",
+ {
+ "x": 9.75
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -1.5,
+ "x": 6
+ },
+ "5,3",
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "x": 6.75
+ },
+ "5,1",
+ "5,2"
+ ],
+ [
+ {
+ "r": -6.5,
+ "y": 0.25,
+ "x": 10.75
+ },
+ "11,0",
+ "11,1",
+ "11,2"
+ ],
+ [
+ {
+ "x": 11
+ },
+ "11,3",
+ "11,4"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/5x6_5_oled/mcuconf.h b/keyboards/handwired/wylderbuilds/5x6_5_oled/mcuconf.h
new file mode 100644
index 00000000000..0983842b182
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_5_oled/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 FALSE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 TRUE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/5x6_5_oled/rules.mk b/keyboards/handwired/wylderbuilds/5x6_5_oled/rules.mk
new file mode 100644
index 00000000000..2ae68884157
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_5_oled/rules.mk
@@ -0,0 +1,20 @@
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+RGBLIGHT_ENABLE = yes
+WS2812_DRIVER = vendor
+SLEEP_LED_ENABLE = no
+MOUSEKEY_ENABLE = yes
+CONSOLE_ENABLE = yes
+#COMMAND_ENABLE = yes
+BOOTMAGIC_ENABLE = yes
+OLED_ENABLE = yes
+OLED_DRIVER = ssd1306
+WPM_ENABLE = yes
+EXTRAKEY_ENABLE = yes # Audio control and System control
+NKRO_ENABLE = yes # Enable N-Key Rollover
+ENCODER_ENABLE = no
+#ENCODER_MAP_ENABLE = yes
+
+OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/5x6_5_oled/wylderbuilds-5x6_5-standard.json b/keyboards/handwired/wylderbuilds/5x6_5_oled/wylderbuilds-5x6_5-standard.json
new file mode 100644
index 00000000000..ef3367567b8
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_5_oled/wylderbuilds-5x6_5-standard.json
@@ -0,0 +1,177 @@
+[
+ {
+ "name": "Wylderbuilds 5x6_5 Standard"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5.75
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,2",
+ "4,3",
+ {
+ "x": 9.75
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -1.5,
+ "x": 6
+ },
+ "5,3",
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "x": 6.75
+ },
+ "5,1",
+ "5,2"
+ ],
+ [
+ {
+ "r": -6.5,
+ "y": 0.25,
+ "x": 10.75
+ },
+ "11,0",
+ "11,1",
+ "11,2"
+ ],
+ [
+ {
+ "x": 11
+ },
+ "11,3",
+ "11,4"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/5x6_5_oled_IV/5x6_5_oled.c b/keyboards/handwired/wylderbuilds/5x6_5_oled_IV/5x6_5_oled.c
new file mode 100644
index 00000000000..b960d2e47f4
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_5_oled_IV/5x6_5_oled.c
@@ -0,0 +1 @@
+#include "5x6_5_oled.h"
diff --git a/keyboards/handwired/wylderbuilds/5x6_5_oled_IV/5x6_5_oled.h b/keyboards/handwired/wylderbuilds/5x6_5_oled_IV/5x6_5_oled.h
new file mode 100644
index 00000000000..df7442978db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_5_oled_IV/5x6_5_oled.h
@@ -0,0 +1,29 @@
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_5x6_5( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+ L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \
+ L42, L43, R42, R43, \
+ L53, L54, L55, R50, R51, R52, \
+ L51, L52, R53, R54 \
+) { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { L30, L31, L32, L33, L34, L35 }, \
+ { XXX, XXX, L42, L43, XXX, XXX }, \
+ { XXX, L51, L52, L53, L54, L55 }, \
+\
+ { R00, R01, R02, R03, R04, R05 }, \
+ { R10, R11, R12, R13, R14, R15 }, \
+ { R20, R21, R22, R23, R24, R25 }, \
+ { R30, R31, R32, R33, R34, R35 }, \
+ { XXX, XXX, R42, R43, XXX, XXX }, \
+ { R50, R51, R52, R53, R54, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/5x6_5_oled_IV/config.h b/keyboards/handwired/wylderbuilds/5x6_5_oled_IV/config.h
new file mode 100644
index 00000000000..f483fec9f1d
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_5_oled_IV/config.h
@@ -0,0 +1,114 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+// Basic Config
+
+//#define PRODUCT_ID 0x0002
+
+#define USE_SERIAL
+#define SPLIT_HAND_PIN GP16 // high = left, low = right
+#define SPLIT_HAND_PIN_LOW_IS_LEFT
+//#define SPLIT_HAND_MATRIX_GRID GP9, GP8
+//#define MASTER_RIGHT
+//#define MASTER_LEFT
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+#define SERIAL_USART_PIN_SWAP
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 6
+
+#define MATRIX_COL_PINS { GP2, GP3, GP4, GP5, GP6, GP7 }
+#define MATRIX_ROW_PINS { GP8, GP9, GP29, GP28, GP27, GP26 }
+
+#define MATRIX_COL_PINS_RIGHT { GP3, GP4, GP5, GP6, GP7, GP8, GP9 }
+#define MATRIX_ROW_PINS_RIGHT { GP10, GP11, GP12, GP13, GP14, GP15 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define SPLIT_POINTING_ENABLE
+#define ROTATIONAL_TRANSFORM_ANGLE -25
+#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_RIGHT
+#define PMW33XX_CS_PIN GP17
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+
+//// Rotary Encoder ////
+// GP21
+// GP22
+
+//#define ENCODERS_PAD_A { GP20 }
+//#define ENCODERS_PAD_B { GP19 }
+//#define ENCODER_RESOLUTIONS { 2 }
+
+//#define ENCODERS_PAD_A_RIGHT { GP21 }
+//#define ENCODERS_PAD_B_RIGHT { GP22 }
+//#define ENCODER_RESOLUTIONS_RIGHT { 2 }
+
+
+// WS2812 RGB LED strip input and number of LEDs
+//#ifdef RGBLIGHT_ENABLE
+//#define WS2812_PIO_USE_PIO1
+//#define WS2812_PIO_USE_PIO1
+//#define WS2812_DI_PIN GP18
+//#define WS2812_EXTERNAL_PULLUP
+//#define RGBLED_NUM 52
+//#define DRIVER_LED_TOTAL 52
+//#define RGBLED_SPLIT { 26, 26 }
+//#define RGBLIGHT_SPLIT
+//#define RGBLIGHT_EFFECT_RGB_TEST
+//#define RGBLIGHT_EFFECT_BREATHING
+//#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+//#define RGBLIGHT_EFFECT_SNAKE
+//#define RGBLIGHT_EFFECT_TWINKLE
+//#define RGBLIGHT_HUE_STEP 8
+//#define RGBLIGHT_SAT_STEP 8
+//#define RGBLIGHT_VAL_STEP 17
+//#define RGBLIGHT_LIMIT_VAL 255
+//#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+//#define NOP_FUDGE 0.4
+/#endif
+
+#define SPLIT_OLED_ENABLE
+#define SPLIT_MODS_ENABLE
+
+// OLED Pins and Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD1
+#define I2C1_SDA_PIN GP12
+#define I2C1_SCL_PIN GP13
+#define RGBLIGHT_LAYERS
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+// Misc settings
+// 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
+// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/5x6_5_oled_IV/info.json b/keyboards/handwired/wylderbuilds/5x6_5_oled_IV/info.json
new file mode 100644
index 00000000000..2419b3df9c0
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_5_oled_IV/info.json
@@ -0,0 +1,335 @@
+{
+ "keyboard_name": "Dactyl-Manuform (5x6-5)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "bootloader": "rp2040",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0049",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 12,
+ "cols": 6
+ },
+ "layouts": {
+ "LAYOUT_5x6_5": {
+ "layout": [
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "6,0",
+ "x": 12.75,
+ "y": 0
+ },
+ {
+ "label": "6,1",
+ "x": 13.75,
+ "y": 0
+ },
+ {
+ "label": "6,2",
+ "x": 14.75,
+ "y": 0
+ },
+ {
+ "label": "6,3",
+ "x": 15.75,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "6,4",
+ "x": 16.75,
+ "y": 0.5
+ },
+ {
+ "label": "6,5",
+ "x": 17.75,
+ "y": 0.5
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "7,0",
+ "x": 12.75,
+ "y": 1
+ },
+ {
+ "label": "7,1",
+ "x": 13.75,
+ "y": 1
+ },
+ {
+ "label": "7,2",
+ "x": 14.75,
+ "y": 1
+ },
+ {
+ "label": "7,3",
+ "x": 15.75,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "7,4",
+ "x": 16.75,
+ "y": 1.5
+ },
+ {
+ "label": "7,5",
+ "x": 17.75,
+ "y": 1.5
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "8,0",
+ "x": 12.75,
+ "y": 2
+ },
+ {
+ "label": "8,1",
+ "x": 13.75,
+ "y": 2
+ },
+ {
+ "label": "8,2",
+ "x": 14.75,
+ "y": 2
+ },
+ {
+ "label": "8,3",
+ "x": 15.75,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "8,4",
+ "x": 16.75,
+ "y": 2.5
+ },
+ {
+ "label": "8,5",
+ "x": 17.75,
+ "y": 2.5
+ },
+ {
+ "label": "3,2",
+ "x": 3,
+ "y": 3
+ },
+ {
+ "label": "3,3",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "3,4",
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "3,5",
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "9,0",
+ "x": 12.75,
+ "y": 3
+ },
+ {
+ "label": "9,1",
+ "x": 13.75,
+ "y": 3
+ },
+ {
+ "label": "9,2",
+ "x": 14.75,
+ "y": 3
+ },
+ {
+ "label": "9,3",
+ "x": 15.75,
+ "y": 3
+ },
+ {
+ "label": "3,0",
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "label": "3,1",
+ "x": 2,
+ "y": 3.5
+ },
+ {
+ "label": "9,4",
+ "x": 16.75,
+ "y": 3.5
+ },
+ {
+ "label": "9,5",
+ "x": 17.75,
+ "y": 3.5
+ },
+ {
+ "label": "4,2",
+ "x": 3,
+ "y": 4
+ },
+ {
+ "label": "4,3",
+ "x": 4,
+ "y": 4
+ },
+ {
+ "label": "10,2",
+ "x": 14.75,
+ "y": 4
+ },
+ {
+ "label": "10,3",
+ "x": 15.75,
+ "y": 4
+ },
+ {
+ "label": "5,3",
+ "x": 6,
+ "y": 3.5
+ },
+ {
+ "label": "5,4",
+ "x": 7,
+ "y": 3.5
+ },
+ {
+ "label": "5,5",
+ "x": 8,
+ "y": 3.5
+ },
+ {
+ "label": "5,1",
+ "x": 6.75,
+ "y": 4.5
+ },
+ {
+ "label": "5,2",
+ "x": 7.75,
+ "y": 4.5
+ },
+ {
+ "label": "11,0",
+ "x": 10.75,
+ "y": 5.75
+ },
+ {
+ "label": "11,1",
+ "x": 11.75,
+ "y": 5.75
+ },
+ {
+ "label": "11,2",
+ "x": 12.75,
+ "y": 5.75
+ },
+ {
+ "label": "11,3",
+ "x": 11,
+ "y": 6.75
+ },
+ {
+ "label": "11,4",
+ "x": 12,
+ "y": 6.75
+ }
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/wylderbuilds/5x6_5_oled_IV/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/5x6_5_oled_IV/keymaps/vial/config.h
new file mode 100644
index 00000000000..183bc2d10c8
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_5_oled_IV/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x63, 0xA6, 0xCF, 0xBB, 0xC4, 0x84, 0x24, 0x23}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 5 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 5 }
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/5x6_5_oled_IV/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/5x6_5_oled_IV/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..54872d1c989
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_5_oled_IV/keymaps/vial/keymap.c
@@ -0,0 +1,191 @@
+#include QMK_KEYBOARD_H
+#include "5x6_5_oled.h"
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_5x6_5(
+ KC_ESC , 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_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_MINS,
+ KC_LSFT, 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_BSLS,
+ KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL,
+ RAISE, KC_SPC, KC_TAB, KC_BSPC, KC_ENT, LOWER,
+ KC_HOME,KC_GRV, KC_END, KC_DEL
+
+ ),
+
+ [_LOWER] = LAYOUT_5x6_5(
+ KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,
+ _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,
+ _______,_______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS,
+ _______,KC_PSCR, _______, KC_P0,
+ _______,_______,_______, _______,_______,_______,
+ _______,_______, QK_BOOT,_______
+ ),
+
+ [_RAISE] = LAYOUT_5x6_5(
+ KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,
+ _______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU,
+ _______,RGB_VAI,RGB_SAI,RGB_HUI,RGB_MOD,RGB_TOG, _______,_______,_______,_______,_______,KC_VOLD,
+ _______,_______, KC_EQL ,_______,
+ _______,_______,_______, _______,_______,_______,
+ _______,QK_BOOT, _______,_______
+ )
+};
+
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_master()) {
+ return OLED_ROTATION_270;
+ }
+ return OLED_ROTATION_180;
+}
+
+static void render_wylderbuilds(void) {
+ static const char PROGMEM wylderbuilds[] = {
+ // 'dark wylderbuilds_oled_name', 128x32px
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40,
+ 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x20, 0x60,
+ 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x60, 0x60,
+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0,
+ 0x00, 0x00, 0xc1, 0xc1, 0x01, 0x01, 0xf1, 0x11, 0x01, 0x01, 0x01, 0x31, 0x60, 0xc0, 0x80, 0xc0,
+ 0xf0, 0x10, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0,
+ 0x00, 0x01, 0x03, 0x9e, 0xf8, 0x00, 0x00, 0x20, 0xe0, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0xf0, 0x30, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x98, 0xf0, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x00, 0x70, 0xfe, 0x03, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00,
+ 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x11, 0xf1, 0x11, 0x33, 0x63, 0xc3,
+ 0x83, 0x01, 0x01, 0xc1, 0xe1, 0x31, 0x11, 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,
+ 0x1f, 0x7c, 0xff, 0x07, 0x7c, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7f, 0xff,
+ 0x60, 0x30, 0x18, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xf2, 0x82, 0x02, 0x80, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x7f, 0x0e, 0x1b, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0x81, 0xc1, 0x63,
+ 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00,
+ 0x00, 0x1f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x60, 0x30, 0x1f,
+ 0x07, 0x00, 0x00, 0x01, 0x43, 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+
+ oled_write_raw_P(wylderbuilds, sizeof(wylderbuilds));
+}
+
+bool oled_task_user(void) {
+ oled_set_cursor(0, 1);
+ if (is_keyboard_master()) {
+ oled_write_P(PSTR("Layer\n"), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ oled_write_P(PSTR("QWRTY\n"), false);
+ break;
+ case _LOWER:
+ oled_write_P(PSTR("LOWER\n"), false);
+ break;
+ case _RAISE:
+ oled_write_P(PSTR("RAISE\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+ oled_set_cursor(0, 5);
+ oled_write_P(PSTR("WPM: "), false);
+
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 8);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+ } else {
+ // write WPM to right OLED
+ render_wylderbuilds();
+
+
+ }
+
+ return false;
+}
+#endif
+
+#define imageWidth 128
+#define imageHeight 36
+
+#ifdef RGBLIGHT_ENABLE
+// Light LEDs 6 to 9 and 12 to 15 red when caps lock is active. Hard to ignore!
+const rgblight_segment_t PROGMEM querty_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_RED}, // Light 4 LEDs, starting with LED 6
+ {33, 3, HSV_RED} // Light 4 LEDs, starting with LED 6
+);
+// Light LEDs 11 & 12 in purple when keyboard layer 2 is active
+const rgblight_segment_t PROGMEM lower_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_BLUE},
+ {33, 3, HSV_BLUE}
+);
+// Light LEDs 9 & 10 in cyan when keyboard layer 1 is active
+const rgblight_segment_t PROGMEM raise_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_YELLOW},
+ {33, 3, HSV_YELLOW}
+);
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ querty_layer, // Overrides caps lock layer
+ lower_layer, // Overrides other layers
+ raise_layer // Overrides other layers
+);
+
+//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(0, layer_state_cmp(state, _QWERTY));
+ return state;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(1, layer_state_cmp(state, _LOWER));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _RAISE));
+ return state;
+}
+
+
+#endif
+
+// rgblight_enable();
+#ifdef RGBLIGHT_ENABLE
+void keyboard_post_init_user(void) {
+ // Enable the LED layers
+ rgblight_layers = my_rgb_layers;
+}
+// rgblight_layers = my_rgb_layers;
+// rgblight_enable_noeeprom(); // Enables RGB, without saving settings
+// rgblight_sethsv_noeeprom_cyan();
+// rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
+#endif
diff --git a/keyboards/handwired/wylderbuilds/5x6_5_oled_IV/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/5x6_5_oled_IV/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_5_oled_IV/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/5x6_5_oled_IV/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/5x6_5_oled_IV/keymaps/vial/vial.json
new file mode 100644
index 00000000000..306c4481d19
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_5_oled_IV/keymaps/vial/vial.json
@@ -0,0 +1,185 @@
+{
+ "matrix": {
+ "rows": 12,
+ "cols": 6
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 5x6_5 Standard"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5.75
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,2",
+ "4,3",
+ {
+ "x": 9.75
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -1.5,
+ "x": 6
+ },
+ "5,3",
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "x": 6.75
+ },
+ "5,1",
+ "5,2"
+ ],
+ [
+ {
+ "r": -6.5,
+ "y": 0.25,
+ "x": 10.75
+ },
+ "11,0",
+ "11,1",
+ "11,2"
+ ],
+ [
+ {
+ "x": 11
+ },
+ "11,3",
+ "11,4"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/5x6_5_oled_IV/mcuconf.h b/keyboards/handwired/wylderbuilds/5x6_5_oled_IV/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_5_oled_IV/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/5x6_5_oled_IV/rules.mk b/keyboards/handwired/wylderbuilds/5x6_5_oled_IV/rules.mk
new file mode 100644
index 00000000000..52bc5f5b05f
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_5_oled_IV/rules.mk
@@ -0,0 +1,29 @@
+# Board, Bootloader and MCU
+MCU = RP2040
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+F_CPU = 8000000
+SPLIT_KEYBOARD = yes
+
+# Drivers for components
+OLED_ENABLE = yes
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+NKRO_ENABLE = yes # Enable N-Key Rollover
+OLED_DRIVER = SSD1306
+#OLED_DRIVER = no
+# Needed for OLED setup
+WPM_ENABLE = yes
+# RGB Light
+RGBLIGHT_ENABLE = yes
+CONSOLE_ENABLE = no
+ENCODER_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+POINTING_DEVICE_ENABLE = yes
+POINTING_DEVICE_DRIVER = pmw3360
+MOUSE_SHARED_EP = yes
+
+VIA_ENABLE = yes
+
+# Opt defs, comment out you're if not using OLED screen for the dactyl_manuform.
+OPT_DEFS += -DHAL_USE_I2C=TRUE
diff --git a/keyboards/handwired/wylderbuilds/5x6_5_oled_IV/wylderbuilds-5x6_5-standard.json b/keyboards/handwired/wylderbuilds/5x6_5_oled_IV/wylderbuilds-5x6_5-standard.json
new file mode 100644
index 00000000000..ef3367567b8
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_5_oled_IV/wylderbuilds-5x6_5-standard.json
@@ -0,0 +1,177 @@
+[
+ {
+ "name": "Wylderbuilds 5x6_5 Standard"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5.75
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,2",
+ "4,3",
+ {
+ "x": 9.75
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -1.5,
+ "x": 6
+ },
+ "5,3",
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "x": 6.75
+ },
+ "5,1",
+ "5,2"
+ ],
+ [
+ {
+ "r": -6.5,
+ "y": 0.25,
+ "x": 10.75
+ },
+ "11,0",
+ "11,1",
+ "11,2"
+ ],
+ [
+ {
+ "x": 11
+ },
+ "11,3",
+ "11,4"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/5x6_full/5x6_full.c b/keyboards/handwired/wylderbuilds/5x6_full/5x6_full.c
new file mode 100644
index 00000000000..20fbab56d1a
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_full/5x6_full.c
@@ -0,0 +1 @@
+#include "5x6_full.h"
diff --git a/keyboards/handwired/wylderbuilds/5x6_full/5x6_full.h b/keyboards/handwired/wylderbuilds/5x6_full/5x6_full.h
new file mode 100644
index 00000000000..5e7a4cb2459
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_full/5x6_full.h
@@ -0,0 +1,29 @@
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_5x6( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+ L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \
+ L40, L41, L42, L43, R42, R43, R44, R45, \
+ L44, L45, L55, R50, R40, R41, \
+ L52, L53, L54, R51, R52, R53 \
+) { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { L30, L31, L32, L33, L34, L35 }, \
+ { L40, L41, L42, L43, L44, L45 }, \
+ { XXX, XXX, L52, L53, L54, L55 }, \
+\
+ { R00, R01, R02, R03, R04, R05 }, \
+ { R10, R11, R12, R13, R14, R15 }, \
+ { R20, R21, R22, R23, R24, R25 }, \
+ { R30, R31, R32, R33, R34, R35 }, \
+ { R40, R41, R42, R43, R44, R45 }, \
+ { R50, R51, R52, R53, XXX, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/5x6_full/config.h b/keyboards/handwired/wylderbuilds/5x6_full/config.h
new file mode 100644
index 00000000000..5e35188b90e
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_full/config.h
@@ -0,0 +1,65 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+#include "config_common.h"
+// Basic Config
+
+//#define PRODUCT_ID 0x0002
+
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+//#define SERIAL_USART_PIN_SWAP
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 6
+
+#define MATRIX_COL_PINS { GP2, GP3, GP4, GP5, GP6, GP7 }
+#define MATRIX_ROW_PINS { GP13, GP12, GP11, GP10, GP9, GP14 }
+#define DIODE_DIRECTION COL2ROW
+
+// WS2812 RGB LED strip input and number of LEDs
+#ifdef RGBLIGHT_ENABLE
+#define RGB_DI_PIN GP17
+#define RGBLED_NUM 34
+//#define DRIVER_LED_TOTAL 34
+#define RGBLED_SPLIT { 17, 17 }
+#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+#define NOP_FUDGE 0.4
+#endif
+
+// OLED Pins and Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD1
+#define I2C1_SDA_PIN GP18
+#define I2C1_SCL_PIN GP19
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+// Misc settings
+// 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
+// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/5x6_full/info.json b/keyboards/handwired/wylderbuilds/5x6_full/info.json
new file mode 100644
index 00000000000..9c5e7766d7f
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_full/info.json
@@ -0,0 +1,365 @@
+{
+ "keyboard_name": "Dactyl-Manuform (5x6-Full)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "bootloader": "rp2040",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0008",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 12,
+ "cols": 6
+ },
+ "layouts": {
+ "LAYOUT_5x6": {
+ "layout": [
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "6,0",
+ "x": 12.75,
+ "y": 0
+ },
+ {
+ "label": "6,1",
+ "x": 13.75,
+ "y": 0
+ },
+ {
+ "label": "6,2",
+ "x": 14.75,
+ "y": 0
+ },
+ {
+ "label": "6,3",
+ "x": 15.75,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "6,4",
+ "x": 16.75,
+ "y": 0.5
+ },
+ {
+ "label": "6,5",
+ "x": 17.75,
+ "y": 0.5
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "7,0",
+ "x": 12.75,
+ "y": 1
+ },
+ {
+ "label": "7,1",
+ "x": 13.75,
+ "y": 1
+ },
+ {
+ "label": "7,2",
+ "x": 14.75,
+ "y": 1
+ },
+ {
+ "label": "7,3",
+ "x": 15.75,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "7,4",
+ "x": 16.75,
+ "y": 1.5
+ },
+ {
+ "label": "7,5",
+ "x": 17.75,
+ "y": 1.5
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "8,0",
+ "x": 12.75,
+ "y": 2
+ },
+ {
+ "label": "8,1",
+ "x": 13.75,
+ "y": 2
+ },
+ {
+ "label": "8,2",
+ "x": 14.75,
+ "y": 2
+ },
+ {
+ "label": "8,3",
+ "x": 15.75,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "8,4",
+ "x": 16.75,
+ "y": 2.5
+ },
+ {
+ "label": "8,5",
+ "x": 17.75,
+ "y": 2.5
+ },
+ {
+ "label": "3,2",
+ "x": 3,
+ "y": 3
+ },
+ {
+ "label": "3,3",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "3,4",
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "3,5",
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "9,0",
+ "x": 12.75,
+ "y": 3
+ },
+ {
+ "label": "9,1",
+ "x": 13.75,
+ "y": 3
+ },
+ {
+ "label": "9,2",
+ "x": 14.75,
+ "y": 3
+ },
+ {
+ "label": "9,3",
+ "x": 15.75,
+ "y": 3
+ },
+ {
+ "label": "3,0",
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "label": "3,1",
+ "x": 2,
+ "y": 3.5
+ },
+ {
+ "label": "9,4",
+ "x": 16.75,
+ "y": 3.5
+ },
+ {
+ "label": "9,5",
+ "x": 17.75,
+ "y": 3.5
+ },
+ {
+ "label": "4,2",
+ "x": 3,
+ "y": 4
+ },
+ {
+ "label": "4,3",
+ "x": 4,
+ "y": 4
+ },
+ {
+ "label": "10,2",
+ "x": 14.75,
+ "y": 4
+ },
+ {
+ "label": "10,3",
+ "x": 15.75,
+ "y": 4
+ },
+ {
+ "label": "4,0",
+ "x": 1,
+ "y": 4.5
+ },
+ {
+ "label": "4,1",
+ "x": 2,
+ "y": 4.5
+ },
+ {
+ "label": "10,4",
+ "x": 16.75,
+ "y": 4.5
+ },
+ {
+ "label": "10,5",
+ "x": 17.75,
+ "y": 4.5
+ },
+ {
+ "label": "4,4",
+ "x": 6,
+ "y": 3.5
+ },
+ {
+ "label": "4,5",
+ "x": 7,
+ "y": 3.5
+ },
+ {
+ "label": "5,5",
+ "x": 8,
+ "y": 3.5
+ },
+ {
+ "label": "5,2",
+ "x": 6,
+ "y": 4.5
+ },
+ {
+ "label": "5,3",
+ "x": 7,
+ "y": 4.5
+ },
+ {
+ "label": "5,4",
+ "x": 8,
+ "y": 4.5
+ },
+ {
+ "label": "11,0",
+ "x": 10.75,
+ "y": 5.75
+ },
+ {
+ "label": "10,0",
+ "x": 11.75,
+ "y": 5.75
+ },
+ {
+ "label": "10,1",
+ "x": 12.75,
+ "y": 5.75
+ },
+ {
+ "label": "11,1",
+ "x": 10.75,
+ "y": 6.75
+ },
+ {
+ "label": "11,2",
+ "x": 11.75,
+ "y": 6.75
+ },
+ {
+ "label": "11,3",
+ "x": 12.75,
+ "y": 6.75
+ }
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/wylderbuilds/5x6_full/keymaps/default/keymap.c b/keyboards/handwired/wylderbuilds/5x6_full/keymaps/default/keymap.c
new file mode 100644
index 00000000000..270e3ba94c2
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_full/keymaps/default/keymap.c
@@ -0,0 +1,44 @@
+#include QMK_KEYBOARD_H
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_5x6(
+ KC_ESC , 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_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_MINS,
+ KC_LSFT, 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_BSLS,
+ KC_GRV, KC_TILDE,KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL, KC_MINS, KC_RCTL,
+ RAISE,KC_SPC, KC_ENT, LOWER,
+ KC_TAB,KC_HOME, KC_END, KC_DEL,
+ KC_BSPC, KC_GRV, KC_LGUI, KC_LALT
+ ),
+
+ [_LOWER] = LAYOUT_5x6(
+ KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,
+ _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,
+ _______,_______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS,
+ _______,_______,_______,KC_PSCR, _______, KC_P0, _______, _______,
+ _______,_______, _______,_______,
+ _______,_______, _______,_______,
+ _______,_______, _______,QK_BOOT
+
+ ),
+
+ [_RAISE] = LAYOUT_5x6(
+ KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,
+ _______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD,
+ _______,_______,_______,_______, KC_EQL ,_______,_______,_______,
+ _______,_______, _______,_______,
+ _______,_______, _______,_______,
+ QK_BOOT,_______, _______,_______
+ )
+};
diff --git a/keyboards/handwired/wylderbuilds/5x6_full/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/5x6_full/keymaps/vial/config.h
new file mode 100644
index 00000000000..9cf0ac600a6
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_full/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xEA, 0x1F, 0xB2, 0x38, 0xA4, 0xE3, 0xD2, 0xC1}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 6 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 6 }
diff --git a/keyboards/handwired/wylderbuilds/5x6_full/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/5x6_full/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..bb1160c766c
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_full/keymaps/vial/keymap.c
@@ -0,0 +1,48 @@
+-------------------------0.#include QMK_KEYBOARD_H
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_5x6(
+ KC_ESC , 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_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_MINS,
+ KC_LSFT, 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_BSLS,
+ KC_GRV, KC_TILDE,KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL, KC_MINS, KC_RCTL,
+ RAISE,KC_SPC, KC_BSPC, KC_DEL, KC_ENT, LOWER,
+ KC_TAB, KC_HOME, KC_GRV, KC_END, KC_LGUI, KC_LALT
+ ),
+
+ [_LOWER] = LAYOUT_5x6(
+ KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL,
+ _______,_______,___KC_DEL____,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,
+ _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,
+ _______,_______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS,
+ _______,_______,_______,KC_PSCR, _______, KC_P0, _______, _______,
+ _______,_______,_______, _______,_______,_______,
+ _______,_______,_______, _______,_______,QK_BOOT
+ ),
+
+ [_RAISE] = LAYOUT_5x6(
+ KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,
+ _______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD,
+ _______,_______,_______,_______, KC_EQL ,_______,_______,_______,
+ _______,_______,_______, _______,_______,_______,
+ QK_BOOT,_______,_______, _______,_______,_______
+ )
+};
+
+//void keyboard_post_init_user(void) {
+// // Customise these values to desired behaviour
+// debug_enable=true;
+// debug_matrix=true;
+// debug_keyboard=true;
+// debug_mouse=true;
+//}
diff --git a/keyboards/handwired/wylderbuilds/5x6_full/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/5x6_full/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_full/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/5x6_full/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/5x6_full/keymaps/vial/vial.json
new file mode 100644
index 00000000000..cede24095bb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_full/keymaps/vial/vial.json
@@ -0,0 +1,200 @@
+{
+ "matrix": {
+ "rows": 12,
+ "cols": 6
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 5x6 Full Carbonfet"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5.75
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,2",
+ "4,3",
+ {
+ "x": 9.75
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "4,0",
+ "4,1",
+ {
+ "x": 13.75
+ },
+ "10,4",
+ "10,5"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -2,
+ "x": 6
+ },
+ "4,4",
+ "4,5",
+ "5,5"
+ ],
+ [
+ {
+ "x": 6
+ },
+ "5,2",
+ "5,3",
+ "5,4"
+ ],
+ [
+ {
+ "r": -6.5,
+ "y": 0.25,
+ "x": 10.75
+ },
+ "11,0",
+ "10,0",
+ "10,1"
+ ],
+ [
+ {
+ "x": 10.75
+ },
+ "11,1",
+ "11,2",
+ "11,3"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/5x6_full/rules.mk b/keyboards/handwired/wylderbuilds/5x6_full/rules.mk
new file mode 100644
index 00000000000..9dc3499fef8
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_full/rules.mk
@@ -0,0 +1,19 @@
+# Board, Bootloader and MCU
+MCU = RP2040
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+F_CPU = 8000000
+SPLIT_KEYBOARD = yes
+
+# Drivers for components
+OLED_DRIVER = SSD1306
+OLED_DRIVER = no
+# Needed for OLED setup
+WPM_ENABLE = no
+# RGB Light
+RGBLIGHT_ENABLE = no
+CONSOLE_ENABLE = yes
+
+# Opt defs, comment out you're if not using OLED screen for the dactyl_manuform.
+OPT_DEFS += -DHAL_USE_I2C=TRUE
+
diff --git a/keyboards/handwired/wylderbuilds/5x6_full/wylderbuilds-5x6-full-carbonfet.json b/keyboards/handwired/wylderbuilds/5x6_full/wylderbuilds-5x6-full-carbonfet.json
new file mode 100644
index 00000000000..705f1966558
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_full/wylderbuilds-5x6-full-carbonfet.json
@@ -0,0 +1,192 @@
+[
+ {
+ "name": "Wylderbuilds 5x6 Full Carbonfet"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5.75
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,2",
+ "4,3",
+ {
+ "x": 9.75
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "4,0",
+ "4,1",
+ {
+ "x": 13.75
+ },
+ "10,4",
+ "10,5"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -2,
+ "x": 6
+ },
+ "4,4",
+ "4,5",
+ "5,5"
+ ],
+ [
+ {
+ "x": 6
+ },
+ "5,2",
+ "5,3",
+ "5,4"
+ ],
+ [
+ {
+ "r": -6.5,
+ "y": 0.25,
+ "x": 10.75
+ },
+ "11,0",
+ "10,0",
+ "10,1"
+ ],
+ [
+ {
+ "x": 10.75
+ },
+ "11,1",
+ "11,2",
+ "11,3"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/5x6_full/wylderbuilds-5x6-full-rows-carbonfet.json b/keyboards/handwired/wylderbuilds/5x6_full/wylderbuilds-5x6-full-rows-carbonfet.json
new file mode 100644
index 00000000000..0dba38d736c
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x6_full/wylderbuilds-5x6-full-rows-carbonfet.json
@@ -0,0 +1,219 @@
+[
+ {
+ "name": "Wylderbuilds 5x6 Full Rows Carbonfet"
+ },
+ [
+ {
+ "x": 4
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 4.75
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ "0,2",
+ {
+ "x": 12.75
+ },
+ "7,4",
+ "7,5",
+ "7,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ {
+ "x": 4.75
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ {
+ "x": 12.75
+ },
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ "2,6",
+ {
+ "x": 4.75
+ },
+ "9,0",
+ {
+ "n": true
+ },
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ {
+ "x": 12.75
+ },
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ {
+ "x": 4.75
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ {
+ "x": 12.75
+ },
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ {
+ "x": 4.75
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ {
+ "x": 12.75
+ },
+ "11,4",
+ "11,5",
+ "11,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "5,3",
+ "5,4",
+ {
+ "x": 8.75
+ },
+ "12,2",
+ "12,3"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -1.5,
+ "x": 6.75
+ },
+ "5,5",
+ "5,6",
+ "6,6"
+ ],
+ [
+ {
+ "x": 6.75
+ },
+ "6,3",
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "r": -7,
+ "y": 0.5,
+ "x": 10.75
+ },
+ "13,0",
+ "12,,0",
+ "12,1"
+ ],
+ [
+ {
+ "x": 10.75
+ },
+ "13,1",
+ "13,2",
+ "13,3"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/5x7_full/5x7_full.c b/keyboards/handwired/wylderbuilds/5x7_full/5x7_full.c
new file mode 100644
index 00000000000..c0954132ae3
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x7_full/5x7_full.c
@@ -0,0 +1 @@
+#include "5x7_full_in_progress.h"
diff --git a/keyboards/handwired/wylderbuilds/5x7_full/5x7_full_in_progress.h b/keyboards/handwired/wylderbuilds/5x7_full/5x7_full_in_progress.h
new file mode 100644
index 00000000000..7cd2597a1f5
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x7_full/5x7_full_in_progress.h
@@ -0,0 +1,37 @@
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_5x7( \
+ L11, L12, L13, L14, L15, L16, L17, \
+ L21, L22, L23, L24, L25, L26, L27, \
+ L31, L32, L33, L34, L35, L36, L37, \
+ L41, L42, L43, L44, L45, L46, \
+ L51, L52, L53, L54, \
+ L55, L56, \
+ L65, L66, \
+ L63, L64, \
+ R11, R12, R13, R14, R15, R16, R17, \
+ R21, R22, R23, R24, R25, R26, R27, \
+ R31, R32, R33, R34, R35, R36, R37, \
+ R42, R43, R44, R45, R46, R47, \
+ R54, R55, R56, R57, \
+ R52, R53, \
+ R62, R63, \
+ R64, R65 \
+) { \
+ { L11, L12, L13, L14, L15, L16, L17 }, \
+ { L21, L22, L23, L24, L25, L26, L27 }, \
+ { L31, L32, L33, L34, L35, L36, L37 }, \
+ { L41, L42, L43, L44, L45, L46, XXX }, \
+ { L51, L52, L53, L54, L55, L56, XXX }, \
+ { XXX, XXX, L63, L64, L65, L66, XXX }, \
+ { R11, R12, R13, R14, R15, R16, R17 }, \
+ { R21, R22, R23, R24, R25, R26, R27 }, \
+ { R31, R32, R33, R34, R35, R36, R37 }, \
+ { XXX, R42, R43, R44, R45, R46, R47 }, \
+ { XXX, R52, R53, R54, R55, R56, R57 }, \
+ { XXX, R62, R63, R64, R65, XXX, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/5x7_full/config.h b/keyboards/handwired/wylderbuilds/5x7_full/config.h
new file mode 100644
index 00000000000..b24d0020068
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x7_full/config.h
@@ -0,0 +1,36 @@
+/*
+Copyright 2012 Jun Wako
+Copyright 2015 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
+
+#include "config_common.h"
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 7
+
+// wiring of each half
+#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4, B5 }
+#define MATRIX_COL_PINS { F5, F6, F7, B1, B3, B2, B6 }
+
+#define DIODE_DIRECTION COL2ROW
+
+// WS2812 RGB LED strip input and number of LEDs
+#define RGB_DI_PIN D3
+#define RGBLED_NUM 12
diff --git a/keyboards/handwired/wylderbuilds/5x7_full/info.json b/keyboards/handwired/wylderbuilds/5x7_full/info.json
new file mode 100644
index 00000000000..6a0b8f21ae4
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x7_full/info.json
@@ -0,0 +1,106 @@
+{
+ "keyboard_name": "Dactyl-Manuform (5x7)",
+ "manufacturer": "tshort",
+ "url": "",
+ "maintainer": "qmk",
+ "usb": {
+ "vid": "0x444D",
+ "pid": "0x3537",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_5x7": {
+ "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": 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": 0, "y": 2},
+ {"x": 1, "y": 2},
+ {"x": 2, "y": 2},
+ {"x": 3, "y": 2},
+ {"x": 4, "y": 2},
+ {"x": 5, "y": 2},
+ {"x": 6, "y": 2},
+
+ {"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": 0, "y": 4},
+ {"x": 1, "y": 4},
+ {"x": 2, "y": 4},
+ {"x": 3, "y": 4},
+
+ {"x": 4, "y": 5},
+ {"x": 5, "y": 5},
+
+ {"x": 6, "y": 6},
+ {"x": 7, "y": 6},
+
+ {"x": 6, "y": 7},
+ {"x": 7, "y": 7},
+
+ {"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": 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},
+
+ {"x": 10, "y": 2},
+ {"x": 11, "y": 2},
+ {"x": 12, "y": 2},
+ {"x": 13, "y": 2},
+ {"x": 14, "y": 2},
+ {"x": 15, "y": 2},
+ {"x": 16, "y": 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": 13, "y": 4},
+ {"x": 14, "y": 4},
+ {"x": 15, "y": 4},
+ {"x": 16, "y": 4},
+
+ {"x": 11, "y": 5},
+ {"x": 12, "y": 5},
+
+ {"x": 9, "y": 6},
+ {"x": 10, "y": 6},
+
+ {"x":9, "y":7},
+ {"x":10, "y":7}
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/wylderbuilds/5x7_full/keymaps/default/config.h b/keyboards/handwired/wylderbuilds/5x7_full/keymaps/default/config.h
new file mode 100644
index 00000000000..5a20f9473fe
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x7_full/keymaps/default/config.h
@@ -0,0 +1,25 @@
+/*
+Copyright 2012 Jun Wako
+
+This 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 USE_SERIAL
+
+#define MASTER_LEFT
+//#define MASTER_RIGHT
+
+//#define EE_HANDS
diff --git a/keyboards/handwired/wylderbuilds/5x7_full/keymaps/default/keymap.c b/keyboards/handwired/wylderbuilds/5x7_full/keymaps/default/keymap.c
new file mode 100644
index 00000000000..41b224d5de0
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x7_full/keymaps/default/keymap.c
@@ -0,0 +1,80 @@
+#include QMK_KEYBOARD_H
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QWERTY 0
+#define _FN 1
+#define _NUMPAD 2
+
+// Some basic macros
+#define TASK LCTL(LSFT(KC_ESC))
+#define TAB_R LCTL(KC_TAB)
+#define TAB_L LCTL(LSFT(KC_TAB))
+#define TAB_RO LCTL(LSFT(KC_T))
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_5x7(
+ // left hand
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, TAB_RO,
+ OSM(MOD_LSFT), KC_Z, KC_X, KC_C, KC_V, KC_B,
+ KC_CAPS, KC_LGUI, TAB_L, TAB_R,
+ TT(_FN), KC_SPC,
+ KC_END, KC_HOME,
+ KC_PSCR, TASK,
+ // right hand
+ KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV,
+ KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ TG(_NUMPAD), KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, OSM(MOD_RSFT),
+ KC_LEFT, KC_UP, KC_DOWN, KC_RGHT,
+ KC_BSPC, KC_ENT,
+ KC_PGUP, KC_PGDN,
+ KC_LCTL, KC_LALT
+ ),
+
+ [_FN] = LAYOUT_5x7(
+ // left hand
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
+ _______, _______, _______, KC_UP, _______, _______, _______,
+ _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, QK_BOOT,
+ _______, _______, _______, _______, _______, _______,
+ KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT,
+ _______, _______,
+ _______, _______,
+ _______, _______,
+ // right hand
+ KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ KC_DEL, _______,
+ _______, _______,
+ _______, _______
+ ),
+
+ [_NUMPAD] = LAYOUT_5x7(
+ // left hand
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______,
+ _______, _______,
+ _______, _______,
+ // right hand
+ _______, _______, KC_NUM, _______, KC_PMNS, KC_PPLS, _______,
+ _______, _______, KC_P7, KC_P8, KC_P9, _______, _______,
+ _______, _______, KC_P4, KC_P5, KC_P6, KC_PAST, _______,
+ _______, KC_P1, KC_P2, KC_P3, KC_PSLS, _______,
+ KC_P0, KC_PDOT, _______, _______,
+ _______, KC_PENT,
+ _______, _______,
+ _______, _______
+ ),
+};
diff --git a/keyboards/handwired/wylderbuilds/5x7_full/keymaps/via/config.h b/keyboards/handwired/wylderbuilds/5x7_full/keymaps/via/config.h
new file mode 100644
index 00000000000..5a20f9473fe
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x7_full/keymaps/via/config.h
@@ -0,0 +1,25 @@
+/*
+Copyright 2012 Jun Wako
+
+This 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 USE_SERIAL
+
+#define MASTER_LEFT
+//#define MASTER_RIGHT
+
+//#define EE_HANDS
diff --git a/keyboards/handwired/wylderbuilds/5x7_full/keymaps/via/keymap.c b/keyboards/handwired/wylderbuilds/5x7_full/keymaps/via/keymap.c
new file mode 100644
index 00000000000..b460caf112a
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x7_full/keymaps/via/keymap.c
@@ -0,0 +1,123 @@
+#include QMK_KEYBOARD_H
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QWERTY 0
+#define _FN 1
+#define _NUMPAD 2
+#define _BLANK 3
+
+// Some basic macros
+#define TASK LCTL(LSFT(KC_ESC))
+#define TAB_R LCTL(KC_TAB)
+#define TAB_L LCTL(LSFT(KC_TAB))
+#define TAB_RO LCTL(LSFT(KC_T))
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_5x7(
+ // left hand
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, TAB_RO,
+ OSM(MOD_LSFT), KC_Z, KC_X, KC_C, KC_V, KC_B,
+ KC_CAPS, KC_LGUI, TAB_L, TAB_R,
+ TT(_FN), KC_SPC,
+ KC_END, KC_HOME,
+ KC_PSCR, TASK,
+ // right hand
+ KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV,
+ KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ TG(_NUMPAD), KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
+ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, OSM(MOD_RSFT),
+ KC_LEFT, KC_UP, KC_DOWN, KC_RGHT,
+ KC_BSPC, KC_ENT,
+ KC_PGUP, KC_PGDN,
+ KC_LCTL, KC_LALT
+ ),
+
+ [_FN] = LAYOUT_5x7(
+ // left hand
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
+ _______, _______, _______, KC_UP, _______, _______, _______,
+ _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, QK_BOOT,
+ _______, _______, _______, _______, _______, _______,
+ KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT,
+ _______, _______,
+ _______, _______,
+ _______, _______,
+ // right hand
+ KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ KC_DEL, _______,
+ _______, _______,
+ _______, _______
+ ),
+
+ [_NUMPAD] = LAYOUT_5x7(
+ // left hand
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______,
+ _______, _______,
+ _______, _______,
+ // right hand
+ _______, _______, KC_NUM, _______, KC_PMNS, KC_PPLS, _______,
+ _______, _______, KC_P7, KC_P8, KC_P9, _______, _______,
+ _______, _______, KC_P4, KC_P5, KC_P6, KC_PAST, _______,
+ _______, KC_P1, KC_P2, KC_P3, KC_PSLS, _______,
+ KC_P0, KC_PDOT, _______, _______,
+ _______, KC_PENT,
+ _______, _______,
+ _______, _______
+ ),
+
+ [_NUMPAD] = LAYOUT_5x7(
+ // left hand
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______,
+ _______, _______,
+ _______, _______,
+ // right hand
+ _______, _______, KC_NUM, _______, KC_PMNS, KC_PPLS, _______,
+ _______, _______, KC_P7, KC_P8, KC_P9, _______, _______,
+ _______, _______, KC_P4, KC_P5, KC_P6, KC_PAST, _______,
+ _______, KC_P1, KC_P2, KC_P3, KC_PSLS, _______,
+ KC_P0, KC_PDOT, _______, _______,
+ _______, KC_PENT,
+ _______, _______,
+ _______, _______
+ ),
+
+ [_BLANK] = LAYOUT_5x7(
+ // left hand
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______,
+ _______, _______,
+ _______, _______,
+ // right hand
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______,
+ _______, _______,
+ _______, _______
+ )
+};
diff --git a/keyboards/handwired/wylderbuilds/5x7_full/keymaps/via/rules.mk b/keyboards/handwired/wylderbuilds/5x7_full/keymaps/via/rules.mk
new file mode 100644
index 00000000000..1e5b99807cb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x7_full/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/handwired/wylderbuilds/5x7_full/rules.mk b/keyboards/handwired/wylderbuilds/5x7_full/rules.mk
new file mode 100644
index 00000000000..04153798278
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x7_full/rules.mk
@@ -0,0 +1,19 @@
+# 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 = yes # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+SPLIT_KEYBOARD = yes
diff --git a/keyboards/handwired/wylderbuilds/5x7_full_carbonfet/5x7_full_carbonfet.c b/keyboards/handwired/wylderbuilds/5x7_full_carbonfet/5x7_full_carbonfet.c
new file mode 100644
index 00000000000..228a0d3a22f
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x7_full_carbonfet/5x7_full_carbonfet.c
@@ -0,0 +1 @@
+#include "5x7_full_carbonfet.h"
diff --git a/keyboards/handwired/wylderbuilds/5x7_full_carbonfet/5x7_full_carbonfet.h b/keyboards/handwired/wylderbuilds/5x7_full_carbonfet/5x7_full_carbonfet.h
new file mode 100644
index 00000000000..e73a249ba0a
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x7_full_carbonfet/5x7_full_carbonfet.h
@@ -0,0 +1,28 @@
+#pragma once
+
+#define XXX KC_NO
+
+
+#define LAYOUT_5x7( \
+ 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, R31, R32, R33, R34, R35, R36, \
+ L40, L41, L42, L43, L44, R42, R43, R44, R45, R46, \
+ L45, L46, L56, R50, R40, R41, \
+ L53, L54, L55, R51, R52, R53 \
+) { \
+ { 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, XXX }, \
+ { L40, L41, L42, L43, L44, L45, L46 }, \
+ { XXX, XXX, XXX, L53, L54, L55, L56 }, \
+\
+ { R00, R01, R02, R03, R04, R05, R06 }, \
+ { R10, R11, R12, R13, R14, R15, R16 }, \
+ { R20, R21, R22, R23, R24, R25, R26 }, \
+ { XXX, R31, R32, R33, R34, R35, R36 }, \
+ { R40, R41, R42, R43, R44, R45, R46 }, \
+ { R50, R51, R52, R53, XXX, XXX, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/5x7_full_carbonfet/config.h b/keyboards/handwired/wylderbuilds/5x7_full_carbonfet/config.h
new file mode 100644
index 00000000000..dd4a62bd57c
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x7_full_carbonfet/config.h
@@ -0,0 +1,77 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+//#include "config_common.h/
+// Basic Confis
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+
+#define USE_SERIAL
+#define SPLIT_HAND_PIN GP29 // high = left, low = right
+#define SPLIT_LAYER_STATE_ENABLE
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+//#define SERIAL_USART_PIN_SWAP
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Columns are doubled-up
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 7
+
+#define MATRIX_COL_PINS { GP8, GP7, GP6, GP5, GP4, GP3, GP2 }
+#define MATRIX_ROW_PINS { GP9, GP10, GP19, GP20, GP18, GP26 }
+
+#define DIODE_DIRECTION COL2ROW
+
+
+//// Sensor Notes ////
+//// Pi Pico pins ////
+// 3V3 -- Power (not 3v3_EN)
+// GP17 -- CS pin
+// GP20 -- MISO pin
+// GP19 -- MOSI pin
+// GP18 -- SCK pin clock Driver
+
+// Misc settings
+// 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// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+
+#ifdef RGBLIGHT_ENABLE
+#define WS2812_PIO_USE_PIO1
+//#define WS2812_PIO_USE_PIO1
+//#define WS2812_PIO_USE_PIO1
+#define RGBLIGHT_LAYERS
+#define WS2812_DI_PIN GP12 // can use trackball jack if not used
+//#define WS2812_EXTERNAL_PULLUP
+#define RGBLED_NUM 36
+//#define DRIVER_LED_TOTAL 34
+#define RGBLED_SPLIT { 18, 18 }
+#define RGBLIGHT_SPLIT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 17
+#define RGBLIGHT_LIMIT_VAL 100
+//#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+#define NOP_FUDGE 0.4 // may not be needed if ws driver loaded
+#endif
diff --git a/keyboards/handwired/wylderbuilds/5x7_full_carbonfet/info.json b/keyboards/handwired/wylderbuilds/5x7_full_carbonfet/info.json
new file mode 100644
index 00000000000..c43d4ec04cb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x7_full_carbonfet/info.json
@@ -0,0 +1,405 @@
+{
+ "keyboard_name": "Dactyl-Manuform 5x7 Carbonfet (5x7_track_carbonfet)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0073",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 12,
+ "cols": 7
+ },
+ "layouts": {
+ "LAYOUT_5x7": {
+ "layout": [
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "0,6",
+ "x": 7,
+ "y": 0
+ },
+ {
+ "label": "6,0",
+ "x": 12,
+ "y": 0
+ },
+ {
+ "label": "6,1",
+ "x": 13,
+ "y": 0
+ },
+ {
+ "label": "6,2",
+ "x": 14,
+ "y": 0
+ },
+ {
+ "label": "6,3",
+ "x": 15,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0.5
+ },
+ {
+ "label": "6,4",
+ "x": 16,
+ "y": 0.5
+ },
+ {
+ "label": "6,5",
+ "x": 17,
+ "y": 0.5
+ },
+ {
+ "label": "6,6",
+ "x": 18,
+ "y": 0.5
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "1,6",
+ "x": 7,
+ "y": 1
+ },
+ {
+ "label": "7,0",
+ "x": 12,
+ "y": 1
+ },
+ {
+ "label": "7,1",
+ "x": 13,
+ "y": 1
+ },
+ {
+ "label": "7,2",
+ "x": 14,
+ "y": 1
+ },
+ {
+ "label": "7,3",
+ "x": 15,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1.5
+ },
+ {
+ "label": "7,4",
+ "x": 16,
+ "y": 1.5
+ },
+ {
+ "label": "7,5",
+ "x": 17,
+ "y": 1.5
+ },
+ {
+ "label": "7,6",
+ "x": 18,
+ "y": 1.5
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "2,6",
+ "x": 7,
+ "y": 2
+ },
+ {
+ "label": "8,0",
+ "x": 12,
+ "y": 2
+ },
+ {
+ "label": "8,1",
+ "x": 13,
+ "y": 2
+ },
+ {
+ "label": "8,2",
+ "x": 14,
+ "y": 2
+ },
+ {
+ "label": "8,3",
+ "x": 15,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2.5
+ },
+ {
+ "label": "8,4",
+ "x": 16,
+ "y": 2.5
+ },
+ {
+ "label": "8,5",
+ "x": 17,
+ "y": 2.5
+ },
+ {
+ "label": "8,6",
+ "x": 18,
+ "y": 2.5
+ },
+ {
+ "label": "3,3",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "3,4",
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "3,5",
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "9,1",
+ "x": 13,
+ "y": 3
+ },
+ {
+ "label": "9,2",
+ "x": 14,
+ "y": 3
+ },
+ {
+ "label": "9,3",
+ "x": 15,
+ "y": 3
+ },
+ {
+ "label": "3,0",
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "label": "3,1",
+ "x": 2,
+ "y": 3.5
+ },
+ {
+ "label": "3,2",
+ "x": 3,
+ "y": 3.5
+ },
+ {
+ "label": "9,4",
+ "x": 16,
+ "y": 3.5
+ },
+ {
+ "label": "9,5",
+ "x": 17,
+ "y": 3.5
+ },
+ {
+ "label": "9,6",
+ "x": 18,
+ "y": 3.5
+ },
+ {
+ "label": "4,3",
+ "x": 4,
+ "y": 4
+ },
+ {
+ "label": "4,4",
+ "x": 5,
+ "y": 4
+ },
+ {
+ "label": "10,2",
+ "x": 14,
+ "y": 4
+ },
+ {
+ "label": "10,3",
+ "x": 15,
+ "y": 4
+ },
+ {
+ "label": "4,0",
+ "x": 1,
+ "y": 4.5
+ },
+ {
+ "label": "4,1",
+ "x": 2,
+ "y": 4.5
+ },
+ {
+ "label": "4,2",
+ "x": 3,
+ "y": 4.5
+ },
+ {
+ "label": "10,4",
+ "x": 16,
+ "y": 4.5
+ },
+ {
+ "label": "10,5",
+ "x": 17,
+ "y": 4.5
+ },
+ {
+ "label": "10,6",
+ "x": 18,
+ "y": 4.5
+ },
+ {
+ "label": "4,5",
+ "x": 6.75,
+ "y": 3.5
+ },
+ {
+ "label": "4,6",
+ "x": 7.75,
+ "y": 3.5
+ },
+ {
+ "label": "5,6",
+ "x": 8.75,
+ "y": 3.5
+ },
+ {
+ "label": "5,3",
+ "x": 6.75,
+ "y": 4.75
+ },
+ {
+ "label": "5,4",
+ "x": 7.75,
+ "y": 4.75
+ },
+ {
+ "label": "5,5",
+ "x": 8.75,
+ "y": 4.75
+ },
+ {
+ "label": "11,0",
+ "x": 10,
+ "y": 6
+ },
+ {
+ "label": "10,0",
+ "x": 11,
+ "y": 6
+ },
+ {
+ "label": "10,1",
+ "x": 12,
+ "y": 6
+ },
+ {
+ "label": "11,1",
+ "x": 10,
+ "y": 7.25
+ },
+ {
+ "label": "11,2",
+ "x": 11,
+ "y": 7.25
+ },
+ {
+ "label": "11,3",
+ "x": 12,
+ "y": 7.25
+ }
+ ]
+ }
+ }
+}
+
diff --git a/keyboards/handwired/wylderbuilds/5x7_full_carbonfet/keymaps/default/keymap.c b/keyboards/handwired/wylderbuilds/5x7_full_carbonfet/keymaps/default/keymap.c
new file mode 100644
index 00000000000..50288c38948
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x7_full_carbonfet/keymaps/default/keymap.c
@@ -0,0 +1,118 @@
+#include QMK_KEYBOARD_H
+
+#define _BASE 0
+#define _NAV 1
+#define _SYST 2
+#define _MOUSE 3 //layer for mouse functions
+
+// Macros
+#define TASK LCTL(LSFT(KC_ESC))
+#define TAB_R LCTL(KC_TAB)
+#define TAB_L LCTL(LSFT(KC_TAB))
+#define TAB_RO LCTL(LSFT(KC_T))
+#define CAD LCTL(LALT(KC_DEL))
+#define IAD LCTL(LALT(KC_INS))
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_BASE] = LAYOUT_5x7(
+ // left hand // right hand
+ LT(_SYST, 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, 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_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(_SYST),
+ KC_APP, KC_LGUI, MO(_NAV), TG(_MOUSE),
+ KC_LALT, LT(_NAV, KC_SPC), KC_SPC,
+ KC_BTN3, KC_BTN1, KC_WFWD,
+ _______, _______, _______, KC_WBAK),
+
+ [_NAV] = LAYOUT_5x7(
+ // left hand // right hand
+ KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC,
+ _______, _______, _______, LCTL(LSFT(KC_E)), _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______, _______,
+ _______, LCTL(KC_A), LCTL(KC_S), _______, _______, _______, KC_PGUP, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______,
+ _______, KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, _______, KC_PGDN, TAB_L, TAB_R, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+ [_SYST] = LAYOUT_5x7(
+ // left hand // right hand
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______,
+ _______, KC_INS, KC_PAUS, _______, IAD, CAD, _______, _______, _______, _______, _______, _______, _______,
+ KC_CAPS, KC_NUM, KC_SCRL, _______, _______, _______, _______, _______, _______, KC_MSTP, KC_VOLD, KC_VOLU, KC_MUTE,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, QK_BOOT, EE_CLR,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+
+ [_MOUSE] = LAYOUT_5x7(
+ // left hand // right hand
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+};
+
+
+//void keyboard_post_init_user(void) {
+// // Customise these values to desired behaviour
+// debug_enable=true;
+// debug_matrix=true;
+// debug_keyboard=true;
+// debug_mouse=true;
+//}
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_NAV] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_SYST] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_MOUSE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+};
+#endif
+
+#ifdef OLED_ENABLE
+bool oled_task_user(void) {
+ // Host Keyboard Layer Status
+ oled_write_P(PSTR("Layer: "), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _BASE:
+ oled_write_P(PSTR("Base\n"), false);
+ break;
+ case _NAV:
+ oled_write_P(PSTR("Nav\n"), false);
+ break;
+ case _SYST:
+ oled_write_P(PSTR("System\n"), false);
+ break;
+ case _MOUSE:
+ oled_write_P(PSTR("Mouse\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+
+ // Host Keyboard LED Status
+ led_t led_state = host_keyboard_led_state();
+ oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
+
+ return false;
+}
+#endif
+
+#define imageWidth 128
+#define imageHeight 36
+
diff --git a/keyboards/handwired/wylderbuilds/5x7_full_carbonfet/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/5x7_full_carbonfet/keymaps/vial/config.h
new file mode 100644
index 00000000000..b00c4ed33e7
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x7_full_carbonfet/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x53, 0x72, 0x63, 0xE1, 0xCE, 0x53, 0x8D, 0x43}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 5 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 5 }
diff --git a/keyboards/handwired/wylderbuilds/5x7_full_carbonfet/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/5x7_full_carbonfet/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..40be7668b88
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x7_full_carbonfet/keymaps/vial/keymap.c
@@ -0,0 +1,95 @@
+#include QMK_KEYBOARD_H
+#include "5x7_full_carbonfet.h"
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_5x7(
+ KC_ESC , KC_1, KC_2, KC_3, KC_4, KC_5, KC_LBRC, KC_RBRC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LPRN, KC_RPRN, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_PLUS, KC_EQL, 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_LCTL, KC_LALT, KC_LGUI, KC_LBRC,KC_RBRC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, KC_RCTL,
+ RAISE, KC_SPC, KC_HOME, KC_END, KC_ENT, LOWER,
+ KC_TAB, KC_BSPC,KC_GRV, KC_RALT, KC_RGUI, KC_DEL
+ ),
+
+ [_LOWER] = LAYOUT_5x7(
+ _______,KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL,_______,
+ _______,_______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,_______,
+ _______,_______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,_______,
+ _______,RGB_VAI,RGB_SAI,RGB_HUI,RGB_MOD,RGB_TOG, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS,_______,
+ _______,_______,_______,_______,KC_PSCR, _______, KC_P0,_______,_______,_______,
+ _______,_______,_______, _______,_______,_______,
+ _______,_______,_______, QK_BOOT,_______,_______
+ ),
+
+ [_RAISE] = LAYOUT_5x7(
+ _______,KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_LBRC, KC_RBRC, KC_F6, KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,
+ _______,_______,_______,_______,_______,_______,KC_LPRN, KC_RPRN,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,KC_F12,
+ _______,KC_LEFT,KC_UP,KC_DOWN,KC_RGHT, _______,_______, _______,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU,_______,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,KC_VOLD,_______,
+ _______,_______,_______,_______,_______, KC_EQL ,_______,_______,_______,_______,
+ _______,_______,_______, _______,_______,_______,
+ _______,_______,QK_BOOT, _______,_______,_______
+ )
+};
+
+#ifdef RGBLIGHT_ENABLE
+const rgblight_segment_t PROGMEM querty_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_RED}, // Light 4 LEDs, starting with LED 6
+ {33, 3, HSV_RED} // Light 4 LEDs, starting with LED 6
+);
+const rgblight_segment_t PROGMEM lower_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_BLUE},
+ {33, 3, HSV_BLUE}
+);
+const rgblight_segment_t PROGMEM raise_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_YELLOW},
+ {33, 3, HSV_YELLOW}
+);
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ querty_layer, // Overrides caps lock layer
+ lower_layer, // Overrides other layers
+ raise_layer // Overrides other layers
+);
+
+//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(0, layer_state_cmp(state, _QWERTY));
+ return state;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(1, layer_state_cmp(state, _LOWER));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _RAISE));
+ return state;
+}
+#endif
+
+void keyboard_post_init_user(void) {
+#ifdef RGBLIGHT_ENABLE
+ rgblight_layers = my_rgb_layers;
+#endif
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+ debug_keyboard=true;
+ debug_mouse=true;
+#else
+ debug_enable=false;
+ debug_matrix=false;
+ debug_keyboard=false;
+ debug_mouse=false;
+#endif
+}
diff --git a/keyboards/handwired/wylderbuilds/5x7_full_carbonfet/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/5x7_full_carbonfet/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..3121f7af3f8
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x7_full_carbonfet/keymaps/vial/rules.mk
@@ -0,0 +1,7 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/5x7_full_carbonfet/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/5x7_full_carbonfet/keymaps/vial/vial.json
new file mode 100644
index 00000000000..325ed2e3afb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x7_full_carbonfet/keymaps/vial/vial.json
@@ -0,0 +1,210 @@
+{
+ "matrix": {
+ "rows": 12,
+ "cols": 7
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 5x7 Full Carbonfet"
+ },
+ [
+ {
+ "x": 4
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 4
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ "0,2",
+ {
+ "x": 12
+ },
+ "6,4",
+ "6,5",
+ "6,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ {
+ "x": 4
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ {
+ "x": 12
+ },
+ "7,4",
+ "7,5",
+ "7,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ "2,6",
+ {
+ "x": 4
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ {
+ "x": 12
+ },
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 6
+ },
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ {
+ "x": 12
+ },
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "4,3",
+ "4,4",
+ {
+ "x": 8
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ {
+ "x": 12
+ },
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -2,
+ "x": 6.75
+ },
+ "4,5",
+ "4,6",
+ "5,6"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 6.75
+ },
+ "5,3",
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "r": -7,
+ "y": 0.25,
+ "x": 10
+ },
+ "11,0",
+ "10,0",
+ "10,1"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 10
+ },
+ "11,1",
+ "11,2",
+ "11,3"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/5x7_full_carbonfet/rules.mk b/keyboards/handwired/wylderbuilds/5x7_full_carbonfet/rules.mk
new file mode 100644
index 00000000000..91fb6de66ab
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x7_full_carbonfet/rules.mk
@@ -0,0 +1,11 @@
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+#MOUSEKEY_ENABLE = yes
+CONSOLE_ENABLE = no
+BOOTMAGIC_ENABLE = yes
+
+RGBLIGHT_ENABLE = yes
+WS2812_DRIVER = vendor
+SLEEP_LED_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/5x7_full_carbonfet/wylderbuilds-5x7-full-carbonfet.json b/keyboards/handwired/wylderbuilds/5x7_full_carbonfet/wylderbuilds-5x7-full-carbonfet.json
new file mode 100644
index 00000000000..b10517cf60c
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x7_full_carbonfet/wylderbuilds-5x7-full-carbonfet.json
@@ -0,0 +1,202 @@
+[
+ {
+ "name": "Wylderbuilds 5x7 Full Carbonfet"
+ },
+ [
+ {
+ "x": 4
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 4
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ "0,2",
+ {
+ "x": 12
+ },
+ "6,4",
+ "6,5",
+ "6,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ {
+ "x": 4
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ {
+ "x": 12
+ },
+ "7,4",
+ "7,5",
+ "7,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ "2,6",
+ {
+ "x": 4
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ {
+ "x": 12
+ },
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 6
+ },
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ {
+ "x": 12
+ },
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "4,3",
+ "4,4",
+ {
+ "x": 8
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ {
+ "x": 12
+ },
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -2,
+ "x": 6.75
+ },
+ "4,5",
+ "4,6",
+ "5,6"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 6.75
+ },
+ "5,3",
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "r": -7,
+ "y": 0.25,
+ "x": 10
+ },
+ "11,0",
+ "10,0",
+ "10,1"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 10
+ },
+ "11,1",
+ "11,2",
+ "11,3"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/5x7_full_ug/5x7_full_ug.c b/keyboards/handwired/wylderbuilds/5x7_full_ug/5x7_full_ug.c
new file mode 100644
index 00000000000..9faadf325c5
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x7_full_ug/5x7_full_ug.c
@@ -0,0 +1 @@
+#include "5x7_full_ug.h"
diff --git a/keyboards/handwired/wylderbuilds/5x7_full_ug/5x7_full_ug.h b/keyboards/handwired/wylderbuilds/5x7_full_ug/5x7_full_ug.h
new file mode 100644
index 00000000000..30fe14368cd
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x7_full_ug/5x7_full_ug.h
@@ -0,0 +1,29 @@
+#pragma once
+
+#define XXX KC_NO
+
+
+#define LAYOUT_5x7( \
+ 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, R30, R31, R32, R33, R34, R35, R36, \
+ L40, L41, L42, L43, L44, R42, R43, R44, R45, R46, \
+ L45, L46, R40, R41, \
+ L55, L56, R50, R51, \
+ L53, L54, R52, R53 \
+) { \
+ { 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 }, \
+ { L40, L41, L42, L43, L44, L45, L46 }, \
+ { XXX, XXX, XXX, L53, L54, L55, L56 }, \
+\
+ { R00, R01, R02, R03, R04, R05, R06 }, \
+ { R10, R11, R12, R13, R14, R15, R16 }, \
+ { R20, R21, R22, R23, R24, R25, R26 }, \
+ { R30, R31, R32, R33, R34, R35, R36 }, \
+ { R40, R41, R42, R43, R44, R45, R46 }, \
+ { R50, R51, R52, R53, XXX, XXX, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/5x7_full_ug/config.h b/keyboards/handwired/wylderbuilds/5x7_full_ug/config.h
new file mode 100644
index 00000000000..bcf7ef783a1
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x7_full_ug/config.h
@@ -0,0 +1,96 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+//#include "config_common.h"
+// Basic Config
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+
+#define USE_SERIAL
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+#define SERIAL_USART_PIN_SWAP
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Columns are doubled-up
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 7
+
+#define MATRIX_COL_PINS_RIGHT { GP8, GP7, GP6, GP5, GP4, GP3, GP2 }
+#define MATRIX_COL_PINS { GP2, GP3, GP4, GP5, GP6, GP7, GP8 }
+#define MATRIX_ROW_PINS { GP9, GP10, GP11, GP12, GP13, GP14 }
+
+#define DIODE_DIRECTION COL2ROW
+
+//#define SPLIT_POINTING_ENABLE
+//#define ROTATIONAL_TRANSFORM_ANGLE -25
+//#define POINTING_DEVICE_INVERT_Y
+//#define POINTING_DEVICE_RIGHT
+//#define PMW33XX_CS_PIN GP21
+//#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+//#define PMW33XX_LIFTOFF_DISTANCE 0x02
+//
+//#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+//
+//#define POINTING_DEVICE_AUTO_MOUSE_ENABLE
+//// only required if not setting mouse layer elsewhere
+//#define AUTO_MOUSE_DEFAULT_LAYER 3
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
+//// Sensor Notes ////
+//// Pi Pico pins ////
+// 3V3 -- Power (not 3v3_EN)
+// GP17 -- CS pin
+// GP20 -- MISO pin
+// GP19 -- MOSI pin
+// GP18 -- SCK pin clock Driver
+
+#ifdef ENCODER_ENABLE
+#define ENCODERS_PAD_A { GP22 }
+#define ENCODERS_PAD_B { GP27 }
+#define ENCODER_RESOLUTIONS { 2 }
+#define ENCODERS_PAD_A_RIGHT { GP22 }
+#define ENCODERS_PAD_B_RIGHT { GP27 }
+#define ENCODER_RESOLUTIONS_RIGHT { 2 }
+#endif
+
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD1
+#define I2C1_SDA_PIN GP18
+#define I2C1_SCL_PIN GP19
+#define RGBLIGHT_LAYERS
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+// Misc settings
+// 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// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/5x7_full_ug/info.json b/keyboards/handwired/wylderbuilds/5x7_full_ug/info.json
new file mode 100644
index 00000000000..71de841495d
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x7_full_ug/info.json
@@ -0,0 +1,561 @@
+{
+ "keyboard_name": "Dactyl-Manuform Wyld Trackball (5x7_full_track)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "bootloader": "rp2040",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0103",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 12,
+ "cols": 7
+ },
+ "ws2812": {
+ "pin": "GP28",
+ "driver": "vendor"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
+ "matrix_size": {
+ "cols": 7,
+ "rows": 12
+ },
+ "rgb_matrix": {
+ "driver": "ws2812",
+ "max_brightness": 120,
+ "animations": {
+ "alpha_mods": true,
+ "breathing": true,
+ "colorband_pinwheel_sat": true,
+ "colorband_pinwheel_val": true,
+ "colorband_sat": true,
+ "colorband_spiral_sat": true,
+ "colorband_spiral_val": true,
+ "colorband_val": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_out_in": true,
+ "cycle_out_in_dual": true,
+ "cycle_pinwheel": true,
+ "cycle_spiral": true,
+ "cycle_up_down": true,
+ "digital_rain": true,
+ "dual_beacon": true,
+ "gradient_left_right": true,
+ "gradient_up_down": true,
+ "hue_breathing": true,
+ "hue_pendulum": true,
+ "hue_wave": true,
+ "jellybean_raindrops": true,
+ "pixel_flow": true,
+ "pixel_fractal": true,
+ "pixel_rain": true,
+ "rainbow_beacon": true,
+ "rainbow_moving_chevron": true,
+ "rainbow_pinwheels": true,
+ "raindrops": true,
+ "solid_color": true,
+ "solid_reactive": true,
+ "solid_reactive_cross": true,
+ "solid_reactive_nexus": true,
+ "solid_reactive_simple": true,
+ "solid_reactive_wide": true,
+ "solid_splash": true,
+ "splash": true,
+ "typing_heatmap": true
+ },
+ "split_count": [
+ 39,
+ 39
+ ],
+ "layout": [
+{"flags": 4, "matrix": [0, 6], "x": 83, "y": 0},
+{"flags": 4, "matrix": [1, 6], "x": 83, "y": 7},
+{"flags": 4, "matrix": [2, 6], "x": 94, "y": 16},
+{"flags": 4, "matrix": [3, 6], "x": 83, "y": 25},
+{"flags": 4, "matrix": [0, 5], "x": 71, "y": 0},
+{"flags": 4, "matrix": [1, 5], "x": 71, "y": 7},
+{"flags": 4, "matrix": [2, 5], "x": 83, "y": 16},
+{"flags": 4, "matrix": [3, 5], "x": 71, "y": 25},
+{"flags": 4, "matrix": [0, 4], "x": 59, "y": 0},
+{"flags": 4, "matrix": [1, 4], "x": 59, "y": 7},
+{"flags": 4, "matrix": [2, 4], "x": 71, "y": 16},
+{"flags": 4, "matrix": [3, 4], "x": 59, "y": 25},
+{"flags": 4, "matrix": [4, 4], "x": 35, "y": 34},
+{"flags": 4, "matrix": [0, 3], "x": 47, "y": 0},
+{"flags": 4, "matrix": [1, 3], "x": 47, "y": 7},
+{"flags": 4, "matrix": [2, 3], "x": 47, "y": 16},
+{"flags": 4, "matrix": [3, 3], "x": 47, "y": 25},
+{"flags": 4, "matrix": [4, 3], "x": 35, "y": 34},
+{"flags": 4, "matrix": [0, 2], "x": 35, "y": 2},
+{"flags": 4, "matrix": [1, 2], "x": 35, "y": 11},
+{"flags": 4, "matrix": [2, 2], "x": 35, "y": 21},
+{"flags": 4, "matrix": [3, 2], "x": 0, "y": 30},
+{"flags": 4, "matrix": [4, 2], "x": 0, "y": 39},
+{"flags": 4, "matrix": [0, 1], "x": 24, "y": 2},
+{"flags": 4, "matrix": [1, 1], "x": 24, "y": 11},
+{"flags": 4, "matrix": [2, 1], "x": 24, "y": 21},
+{"flags": 4, "matrix": [3, 1], "x": 0, "y": 30},
+{"flags": 4, "matrix": [4, 1], "x": 0, "y": 39},
+{"flags": 4, "matrix": [0, 0], "x": 12, "y": 2},
+{"flags": 4, "matrix": [1, 0], "x": 12, "y": 11},
+{"flags": 4, "matrix": [2, 0], "x": 12, "y": 21},
+{"flags": 4, "matrix": [3, 0], "x": 0, "y": 30},
+{"flags": 4, "matrix": [4, 0], "x": 0, "y": 39},
+{"flags": 4, "matrix": [4, 5], "x": 71, "y": 37},
+{"flags": 4, "matrix": [4, 6], "x": 71, "y": 37},
+{"flags": 4, "matrix": [5, 6], "x": 77, "y": 50},
+{"flags": 4, "matrix": [5, 4], "x": 83, "y": 55},
+{"flags": 4, "matrix": [5, 3], "x": 83, "y": 55},
+{"flags": 4, "matrix": [5, 5], "x": 77, "y": 50},
+{"flags": 4, "matrix": [6, 0], "x": 153, "y": 0},
+{"flags": 4, "matrix": [7, 0], "x": 153, "y": 7},
+{"flags": 4, "matrix": [8, 0], "x": 165, "y": 16},
+{"flags": 4, "matrix": [9, 0], "x": 153, "y": 25},
+{"flags": 4, "matrix": [6, 1], "x": 165, "y": 0},
+{"flags": 4, "matrix": [7, 1], "x": 165, "y": 7},
+{"flags": 4, "matrix": [8, 1], "x": 189, "y": 16},
+{"flags": 4, "matrix": [9, 1], "x": 165, "y": 25},
+{"flags": 4, "matrix": [6, 2], "x": 177, "y": 0},
+{"flags": 4, "matrix": [7, 2], "x": 177, "y": 7},
+{"flags": 4, "matrix": [8, 2], "x": 200, "y": 16},
+{"flags": 4, "matrix": [9, 2], "x": 177, "y": 25},
+{"flags": 4, "matrix": [10, 2], "x": 130, "y": 34},
+{"flags": 4, "matrix": [6, 3], "x": 189, "y": 0},
+{"flags": 4, "matrix": [7, 3], "x": 189, "y": 7},
+{"flags": 4, "matrix": [8, 3], "x": 212, "y": 16},
+{"flags": 4, "matrix": [9, 3], "x": 189, "y": 25},
+{"flags": 4, "matrix": [10, 3], "x": 130, "y": 34},
+{"flags": 4, "matrix": [6, 4], "x": 200, "y": 2},
+{"flags": 4, "matrix": [7, 4], "x": 200, "y": 11},
+{"flags": 4, "matrix": [8, 4], "x": 200, "y": 21},
+{"flags": 4, "matrix": [9, 4], "x": 141, "y": 30},
+{"flags": 4, "matrix": [10, 4], "x": 141, "y": 39},
+{"flags": 4, "matrix": [6, 5], "x": 212, "y": 2},
+{"flags": 4, "matrix": [7, 5], "x": 212, "y": 11},
+{"flags": 4, "matrix": [8, 5], "x": 212, "y": 21},
+{"flags": 4, "matrix": [9, 5], "x": 141, "y": 30},
+{"flags": 4, "matrix": [10, 5], "x": 141, "y": 39},
+{"flags": 4, "matrix": [6, 6], "x": 224, "y": 2},
+{"flags": 4, "matrix": [7, 6], "x": 224, "y": 11},
+{"flags": 4, "matrix": [8, 6], "x": 224, "y": 21},
+{"flags": 4, "matrix": [9, 6], "x": 141, "y": 30},
+{"flags": 4, "matrix": [10, 6], "x": 141, "y": 39},
+{"flags": 4, "matrix": [10, 1], "x": 112, "y": 55},
+{"flags": 4, "matrix": [10, 0], "x": 112, "y": 55},
+{"flags": 4, "matrix": [11, 0], "x": 106, "y": 64},
+{"flags": 4, "matrix": [11, 2], "x": 100, "y": 69},
+{"flags": 4, "matrix": [11, 3], "x": 100, "y": 69},
+{"flags": 4, "matrix": [11, 1], "x": 106, "y": 64}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_5x7": {
+ "layout": [
+ {
+ "label": "0,3",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,6",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "6,0",
+ "x": 11,
+ "y": 0
+ },
+ {
+ "label": "6,1",
+ "x": 12,
+ "y": 0
+ },
+ {
+ "label": "6,2",
+ "x": 13,
+ "y": 0
+ },
+ {
+ "label": "6,3",
+ "x": 14,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 0,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,2",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "6,4",
+ "x": 15,
+ "y": 0.5
+ },
+ {
+ "label": "6,5",
+ "x": 16,
+ "y": 0.5
+ },
+ {
+ "label": "6,6",
+ "x": 17,
+ "y": 0.5
+ },
+ {
+ "label": "1,3",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,6",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "7,0",
+ "x": 11,
+ "y": 1
+ },
+ {
+ "label": "7,1",
+ "x": 12,
+ "y": 1
+ },
+ {
+ "label": "7,2",
+ "x": 13,
+ "y": 1
+ },
+ {
+ "label": "7,3",
+ "x": 14,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 0,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,2",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "7,4",
+ "x": 15,
+ "y": 1.5
+ },
+ {
+ "label": "7,5",
+ "x": 16,
+ "y": 1.5
+ },
+ {
+ "label": "7,6",
+ "x": 17,
+ "y": 1.5
+ },
+ {
+ "label": "2,3",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,6",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "8,0",
+ "x": 11,
+ "y": 2
+ },
+ {
+ "label": "8,1",
+ "x": 12,
+ "y": 2
+ },
+ {
+ "label": "8,2",
+ "x": 13,
+ "y": 2
+ },
+ {
+ "label": "8,3",
+ "x": 14,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 0,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,2",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "8,4",
+ "x": 15,
+ "y": 2.5
+ },
+ {
+ "label": "8,5",
+ "x": 16,
+ "y": 2.5
+ },
+ {
+ "label": "8,6",
+ "x": 17,
+ "y": 2.5
+ },
+ {
+ "label": "3,3",
+ "x": 3,
+ "y": 3
+ },
+ {
+ "label": "3,4",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "3,5",
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "3,6",
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "9,0",
+ "x": 11,
+ "y": 3
+ },
+ {
+ "label": "9,1",
+ "x": 12,
+ "y": 3
+ },
+ {
+ "label": "9,2",
+ "x": 13,
+ "y": 3
+ },
+ {
+ "label": "9,3",
+ "x": 14,
+ "y": 3
+ },
+ {
+ "label": "3,0",
+ "x": 0,
+ "y": 3.5
+ },
+ {
+ "label": "3,1",
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "label": "3,2",
+ "x": 2,
+ "y": 3.5
+ },
+ {
+ "label": "9,4",
+ "x": 15,
+ "y": 3.5
+ },
+ {
+ "label": "9,5",
+ "x": 16,
+ "y": 3.5
+ },
+ {
+ "label": "9,6",
+ "x": 17,
+ "y": 3.5
+ },
+ {
+ "label": "4,3",
+ "x": 3,
+ "y": 4
+ },
+ {
+ "label": "4,4",
+ "x": 4,
+ "y": 4
+ },
+ {
+ "label": "10,2",
+ "x": 13,
+ "y": 4
+ },
+ {
+ "label": "10,3",
+ "x": 14,
+ "y": 4
+ },
+ {
+ "label": "4,0",
+ "x": 0,
+ "y": 4.5
+ },
+ {
+ "label": "4,1",
+ "x": 1,
+ "y": 4.5
+ },
+ {
+ "label": "4,2",
+ "x": 2,
+ "y": 4.5
+ },
+ {
+ "label": "10,4",
+ "x": 15,
+ "y": 4.5
+ },
+ {
+ "label": "10,5",
+ "x": 16,
+ "y": 4.5
+ },
+ {
+ "label": "10,6",
+ "x": 17,
+ "y": 4.5
+ },
+ {
+ "label": "4,5",
+ "x": 6,
+ "y": 3.5
+ },
+ {
+ "label": "4,6",
+ "x": 7,
+ "y": 3.5
+ },
+ {
+ "label": "5,5",
+ "x": 6.5,
+ "y": 4.5
+ },
+ {
+ "label": "5,6",
+ "x": 7.5,
+ "y": 4.5
+ },
+ {
+ "label": "5,3",
+ "x": 7,
+ "y": 5.5
+ },
+ {
+ "label": "5,4",
+ "x": 8,
+ "y": 5.5
+ },
+ {
+ "label": "10,0",
+ "x": 9.5,
+ "y": 5.5
+ },
+ {
+ "label": "10,1",
+ "x": 10.5,
+ "y": 5.5
+ },
+ {
+ "label": "11,0",
+ "x": 9,
+ "y": 6.5
+ },
+ {
+ "label": "11,1",
+ "x": 10,
+ "y": 6.5
+ },
+ {
+ "label": "11,2",
+ "x": 8.5,
+ "y": 7.5
+ },
+ {
+ "label": "11,3",
+ "x": 9.5,
+ "y": 7.5
+ }
+ ]
+ }
+ }
+}
+
diff --git a/keyboards/handwired/wylderbuilds/5x7_full_ug/keymaps/default/keymap.c b/keyboards/handwired/wylderbuilds/5x7_full_ug/keymaps/default/keymap.c
new file mode 100644
index 00000000000..50288c38948
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x7_full_ug/keymaps/default/keymap.c
@@ -0,0 +1,118 @@
+#include QMK_KEYBOARD_H
+
+#define _BASE 0
+#define _NAV 1
+#define _SYST 2
+#define _MOUSE 3 //layer for mouse functions
+
+// Macros
+#define TASK LCTL(LSFT(KC_ESC))
+#define TAB_R LCTL(KC_TAB)
+#define TAB_L LCTL(LSFT(KC_TAB))
+#define TAB_RO LCTL(LSFT(KC_T))
+#define CAD LCTL(LALT(KC_DEL))
+#define IAD LCTL(LALT(KC_INS))
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_BASE] = LAYOUT_5x7(
+ // left hand // right hand
+ LT(_SYST, 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, 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_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(_SYST),
+ KC_APP, KC_LGUI, MO(_NAV), TG(_MOUSE),
+ KC_LALT, LT(_NAV, KC_SPC), KC_SPC,
+ KC_BTN3, KC_BTN1, KC_WFWD,
+ _______, _______, _______, KC_WBAK),
+
+ [_NAV] = LAYOUT_5x7(
+ // left hand // right hand
+ KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC,
+ _______, _______, _______, LCTL(LSFT(KC_E)), _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______, _______,
+ _______, LCTL(KC_A), LCTL(KC_S), _______, _______, _______, KC_PGUP, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______,
+ _______, KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, _______, KC_PGDN, TAB_L, TAB_R, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+ [_SYST] = LAYOUT_5x7(
+ // left hand // right hand
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______,
+ _______, KC_INS, KC_PAUS, _______, IAD, CAD, _______, _______, _______, _______, _______, _______, _______,
+ KC_CAPS, KC_NUM, KC_SCRL, _______, _______, _______, _______, _______, _______, KC_MSTP, KC_VOLD, KC_VOLU, KC_MUTE,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, QK_BOOT, EE_CLR,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+
+ [_MOUSE] = LAYOUT_5x7(
+ // left hand // right hand
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+};
+
+
+//void keyboard_post_init_user(void) {
+// // Customise these values to desired behaviour
+// debug_enable=true;
+// debug_matrix=true;
+// debug_keyboard=true;
+// debug_mouse=true;
+//}
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_NAV] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_SYST] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_MOUSE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+};
+#endif
+
+#ifdef OLED_ENABLE
+bool oled_task_user(void) {
+ // Host Keyboard Layer Status
+ oled_write_P(PSTR("Layer: "), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _BASE:
+ oled_write_P(PSTR("Base\n"), false);
+ break;
+ case _NAV:
+ oled_write_P(PSTR("Nav\n"), false);
+ break;
+ case _SYST:
+ oled_write_P(PSTR("System\n"), false);
+ break;
+ case _MOUSE:
+ oled_write_P(PSTR("Mouse\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+
+ // Host Keyboard LED Status
+ led_t led_state = host_keyboard_led_state();
+ oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
+
+ return false;
+}
+#endif
+
+#define imageWidth 128
+#define imageHeight 36
+
diff --git a/keyboards/handwired/wylderbuilds/5x7_full_ug/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/5x7_full_ug/keymaps/vial/config.h
new file mode 100644
index 00000000000..07965945fd2
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x7_full_ug/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xA7, 0x50, 0xDA, 0x3E, 0x6C, 0x63, 0x01, 0x38}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 5 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 5 }
diff --git a/keyboards/handwired/wylderbuilds/5x7_full_ug/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/5x7_full_ug/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..424c8d60da2
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x7_full_ug/keymaps/vial/keymap.c
@@ -0,0 +1,281 @@
+#include QMK_KEYBOARD_H
+#include "5x7_full_ug.h"
+
+#define _QWERTY 0
+//#define _DVORAK 1
+#define _LOWER 1
+#define _RAISE 2
+#define _MOUSE 3
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+//#define TO_QWERTY TO(_QWERTY)
+//#define TO_DVORAK TO(_DVORAK)
+
+//enum wyld_keycodes {
+// WYLD_AUTO_MS_TOG = SAFE_RANGE
+//};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_5x7(
+ _______, KC_ESC , KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC,
+ _______, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, KC_EQL,
+ _______, 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_BTN3,
+ _______, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT ,KC_SLSH, KC_BSLS, KC_BTN1,
+ _______, KC_LALT,KC_LGUI,KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL, KC_RGUI, KC_RALT, KC_RCTL,
+ RAISE,KC_SPC, KC_ENT, LOWER,
+ KC_TAB,KC_HOME, KC_END, KC_DEL,
+ KC_BSPC, KC_GRV, KC_LGUI, KC_LALT
+ ),
+
+ [_LOWER] = LAYOUT_5x7(
+ _______,KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL,QK_BOOT,
+ _______,_______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,_______,
+ _______,_______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS,_______,
+ _______,_______,_______,_______,KC_PSCR, _______, KC_P0,_______,_______,_______,
+ _______,_______, _______,_______,
+ _______,_______, _______,_______,
+ _______,_______, _______,QK_BOOT
+ ),
+
+ [_RAISE] = LAYOUT_5x7(
+ QK_BOOT,KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6, KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,_______,
+ _______,_______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,_______,
+ _______,_______,KC_LEFT,KC_UP,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD,_______,
+ RGB_VAI,RGB_SAI,RGB_HUI,RGB_MOD,RGB_TOG, KC_EQL ,_______,_______,_______,_______,
+ _______,_______, _______,_______,
+ _______,_______, _______,_______,
+ QK_BOOT,_______, _______,_______
+ ),
+ [_MOUSE] = LAYOUT_5x7(
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______, _______,_______,_______,_______,_______,
+ _______,_______, _______,_______,
+ _______,_______, _______,_______,
+ _______,_______, _______,_______
+ )
+};
+
+#ifdef POINTING_DEVICE_AUTO_MOUSE_ENABLE
+void pointing_device_init_user(void) {
+ set_auto_mouse_enable(true);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case WYLD_AUTO_MS_TOG:
+ if (record->event.pressed) {
+ set_auto_mouse_enable(!get_auto_mouse_enable());
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+#endif
+
+void keyboard_post_init_user(void) {
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+ debug_keyboard=true;
+ debug_mouse=true;
+#else
+ debug_enable=false;
+ debug_matrix=false;
+ debug_keyboard=false;
+ debug_mouse=false;
+#endif
+}
+
+#if defined(ENCODER_MAP_ENABLE)
+// TWO ENCODERS
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_QWERTY] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_LOWER] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_RAISE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_MOUSE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) }
+};
+#endif
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_left()) {
+ return OLED_ROTATION_270;
+ }
+ return OLED_ROTATION_0;
+}
+
+static const char PROGMEM wylderbuilds[] = {
+ // 'dark wylderbuilds_oled_name', 128x32
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40,
+ 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x20, 0x60,
+ 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x60, 0x60,
+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0,
+ 0x00, 0x00, 0xc1, 0xc1, 0x01, 0x01, 0xf1, 0x11, 0x01, 0x01, 0x01, 0x31, 0x60, 0xc0, 0x80, 0xc0,
+ 0xf0, 0x10, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0,
+ 0x00, 0x01, 0x03, 0x9e, 0xf8, 0x00, 0x00, 0x20, 0xe0, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0xf0, 0x30, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x98, 0xf0, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x00, 0x70, 0xfe, 0x03, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00,
+ 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x11, 0xf1, 0x11, 0x33, 0x63, 0xc3,
+ 0x83, 0x01, 0x01, 0xc1, 0xe1, 0x31, 0x11, 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,
+ 0x1f, 0x7c, 0xff, 0x07, 0x7c, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7f, 0xff,
+ 0x60, 0x30, 0x18, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xf2, 0x82, 0x02, 0x80, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x7f, 0x0e, 0x1b, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0x81, 0xc1, 0x63,
+ 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00,
+ 0x00, 0x1f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x60, 0x30, 0x1f,
+ 0x07, 0x00, 0x00, 0x01, 0x43, 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static void render_wylderbuilds(void) {
+ oled_write_raw_P(wylderbuilds, sizeof(wylderbuilds));
+}
+
+bool oled_task_user(void) {
+ oled_set_cursor(0, 3);
+ if (is_keyboard_left()) {
+ // oled_write_P(PSTR("Layer\n"), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ oled_write_P(PSTR("QWRTY\n"), false);
+ break;
+// case _DVORAK:
+// oled_write_P(PSTR(" DVRK\n"), false);
+// break;
+ case _LOWER:
+ oled_write_P(PSTR("LOWER\n"), false);
+ break;
+ case _RAISE:
+ oled_write_P(PSTR("RAISE\n"), false);
+ break;
+ case _MOUSE:
+ oled_write_P(PSTR("MOUSE\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+ oled_set_cursor(2, 7);
+ oled_write_P(PSTR("WPM "), false);
+ oled_set_cursor(1, 8);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 9);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+ } else {
+ // write WPM to right OLED
+ oled_set_cursor(0, 0);
+ render_wylderbuilds();
+ oled_scroll_left();
+ }
+
+ return false;
+}
+#endif
+
+
+/*
+
+
+!!! Keycap layout and colors
+----------------------------
+
+(keycap
+ numbers _ symbols
+ _ defsrc _
+ nav _ functions
+ mouse _ media
+)
+
+(colors
+ #3498DB #000000 #D68910
+ #000000 #000000 #000000
+ #7D3C98 #0000ff #ff0000
+ #239B56 #000000 #5D6D7E
+)
+
+
+!!! Custom options per key (Optional)
+!!! Options are based on row column and kle syntax
+!!! (options row col data)
+-------------------------------------------------------
+
+(options key custom_layout)
+
+
+!!! Override or assign labels
+-----------------------------
+!!! (label code text)
+
+(label A_GUI A)
+(label R_ALT R)
+(label S_CTL S)
+(label T_SFT T)
+
+(label O_GUI O)
+(label I_ALT I)
+(label E_CTL E)
+(label N_SFT N)
+
+(label L_NUM Num)
+(label L_FUN Fn)
+(label L_MED Media)
+(label L_MOU 🖱)
+(label L_NAV Nav)
+(label L_SYM Sym)
+
+(label U_REDO ↷)
+(label U_UNDO ↶)
+(label XKC_N ñ)
+(label U_CPY copy)
+(label U_PST paste)
+(label U_CUT cut)
+(label OS_LSFT ⇮)
+(label OS_RSFT ⇮)
+(label BTN1 LB)
+(label BTN2 RB)
+(label BTN3 MB)
+
+!!! Add some notes
+------------------
+
+
+(label alias text)
+
+
+!!! Add some notes (Optional)
+-----------------------------
+
+(description
+ Wylderbuilds 5x7 Superfragelistico
+)
+
+
+*/
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/5x7_full_ug/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/5x7_full_ug/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..9ab57695a65
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x7_full_ug/keymaps/vial/rules.mk
@@ -0,0 +1,9 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/handwired/wylderbuilds/5x7_full_ug/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/5x7_full_ug/keymaps/vial/vial.json
new file mode 100644
index 00000000000..ea88c6ef770
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x7_full_ug/keymaps/vial/vial.json
@@ -0,0 +1,216 @@
+{
+ "matrix": {
+ "rows": 12,
+ "cols": 7
+ },
+ "lighting": "vialrgb",
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 5x7 Full Default"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 4
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "0,0",
+ "0,1",
+ "0,2",
+ {
+ "x": 12
+ },
+ "6,4",
+ "6,5",
+ "6,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ {
+ "x": 4
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ {
+ "x": 12
+ },
+ "7,4",
+ "7,5",
+ "7,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ "2,6",
+ {
+ "x": 4
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ {
+ "x": 12
+ },
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ {
+ "x": 4
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ {
+ "x": 12
+ },
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,3",
+ "4,4",
+ {
+ "x": 8
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ {
+ "x": 12
+ },
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -2,
+ "x": 6
+ },
+ "4,5",
+ "4,6"
+ ],
+ [
+ {
+ "x": 6.5
+ },
+ "5,5",
+ "5,6"
+ ],
+ [
+ {
+ "x": 7
+ },
+ "5,3",
+ "5,4"
+ ],
+ [
+ {
+ "r": -7,
+ "y": -1,
+ "x": 9.5
+ },
+ "10,0",
+ "10,1"
+ ],
+ [
+ {
+ "x": 9
+ },
+ "11,0",
+ "11,1"
+ ],
+ [
+ {
+ "x": 8.5
+ },
+ "11,2",
+ "11,3"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/5x7_full_ug/mcuconf.h b/keyboards/handwired/wylderbuilds/5x7_full_ug/mcuconf.h
new file mode 100644
index 00000000000..68827db71b9
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x7_full_ug/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 TRUE
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/5x7_full_ug/rules.mk b/keyboards/handwired/wylderbuilds/5x7_full_ug/rules.mk
new file mode 100644
index 00000000000..81953bfbbdd
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x7_full_ug/rules.mk
@@ -0,0 +1,21 @@
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+#POINTING_DEVICE_DRIVER = adns9800
+#RGBLIGHT_ENABLE = no
+#MOUSEKEY_ENABLE = yes
+#CONSOLE_ENABLE = yes
+##COMMAND_ENABLE = yes
+#BOOTMAGIC_ENABLE = yes
+#NKRO_ENABLE = yes # Enable N-Key Rollover
+#RGB_MATRIX_ENABLE = yes
+OLED_ENABLE = yes
+##OLED_DRIVER = SSD1306
+WPM_ENABLE = yes
+#EXTRAKEY_ENABLE = yes # Audio control and System control
+#
+#ENCODER_ENABLE = yes
+#ENCODER_MAP_ENABLE = yes # Enable N-Key Rollover
+#
+OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/5x7_full_ug/wylderbuilds-5x7-full-default.json b/keyboards/handwired/wylderbuilds/5x7_full_ug/wylderbuilds-5x7-full-default.json
new file mode 100644
index 00000000000..797b446e72c
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x7_full_ug/wylderbuilds-5x7-full-default.json
@@ -0,0 +1,207 @@
+[
+ {
+ "name": "Wylderbuilds 5x7 Full Default"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 4
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "0,0",
+ "0,1",
+ "0,2",
+ {
+ "x": 12
+ },
+ "6,4",
+ "6,5",
+ "6,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ {
+ "x": 4
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ {
+ "x": 12
+ },
+ "7,4",
+ "7,5",
+ "7,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ "2,6",
+ {
+ "x": 4
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ {
+ "x": 12
+ },
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ {
+ "x": 4
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ {
+ "x": 12
+ },
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,3",
+ "4,4",
+ {
+ "x": 8
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ {
+ "x": 12
+ },
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -2,
+ "x": 6
+ },
+ "4,5",
+ "4,6"
+ ],
+ [
+ {
+ "x": 6.5
+ },
+ "5,5",
+ "5,6"
+ ],
+ [
+ {
+ "x": 7
+ },
+ "5,3",
+ "5,4"
+ ],
+ [
+ {
+ "r": -7,
+ "y": -1,
+ "x": 9.5
+ },
+ "10,0",
+ "10,1"
+ ],
+ [
+ {
+ "x": 9
+ },
+ "11,0",
+ "11,1"
+ ],
+ [
+ {
+ "x": 8.5
+ },
+ "11,2",
+ "11,3"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/5x7_full_ug/wylderbuilds-5x7-full-track.json b/keyboards/handwired/wylderbuilds/5x7_full_ug/wylderbuilds-5x7-full-track.json
new file mode 100644
index 00000000000..202dea83dc5
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x7_full_ug/wylderbuilds-5x7-full-track.json
@@ -0,0 +1,211 @@
+[
+ {
+ "name": "Wylderbuilds 5x7 Full Default"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 4
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "0,0",
+ "0,1",
+ "0,2",
+ {
+ "x": 12
+ },
+ "6,4",
+ "6,5",
+ "6,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ {
+ "x": 4
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ {
+ "x": 12
+ },
+ "7,4",
+ "7,5",
+ "7,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ "2,6",
+ {
+ "x": 4
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ {
+ "x": 12
+ },
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ {
+ "x": 4
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ {
+ "x": 12
+ },
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,3",
+ "4,4",
+ {
+ "x": 8
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ {
+ "x": 12
+ },
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -2,
+ "x": 6
+ },
+ "4,5",
+ "4,6"
+ ],
+ [
+ {
+ "r": 15,
+ "y": -1,
+ "x": 7.25
+ },
+ "5,5",
+ "5,6"
+ ],
+ [
+ {
+ "x": 7.75
+ },
+ "5,3",
+ "5,4"
+ ],
+ [
+ {
+ "r": -15,
+ "y": 2.75,
+ "x": 8.25
+ },
+ "11,0",
+ "11,1"
+ ],
+ [
+ {
+ "x": 7.75
+ },
+ "11,2",
+ "11,3"
+ ],
+ [
+ {
+ "r": -7,
+ "y": -4.5,
+ "x": 10
+ },
+ "10,0",
+ "10,1"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/5x7_full_ug/wylderbuilds-5x7-full-wyld-track-mini.json b/keyboards/handwired/wylderbuilds/5x7_full_ug/wylderbuilds-5x7-full-wyld-track-mini.json
new file mode 100644
index 00000000000..0aadc2586db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/5x7_full_ug/wylderbuilds-5x7-full-wyld-track-mini.json
@@ -0,0 +1,198 @@
+[
+ {
+ "name": "Wylderbuilds 5x7 Full Wyld Track Mini",
+ "author": "Andy @ Wylderbuilds"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 4
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "0,0",
+ "0,1",
+ "0,2",
+ {
+ "x": 12
+ },
+ "6,4",
+ "6,5",
+ "6,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne",
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ {
+ "x": 12
+ },
+ "7,4",
+ "7,5",
+ "7,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ "2,6",
+ {
+ "x": 0.5
+ },
+ "5,1",
+ {
+ "x": 1
+ },
+ "11,3",
+ {
+ "x": 0.5
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ {
+ "x": 12
+ },
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ {
+ "x": 4
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ {
+ "x": 12
+ },
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,3",
+ "4,4",
+ {
+ "x": 8
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ {
+ "x": 12
+ },
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -2,
+ "x": 6
+ },
+ "5,4",
+ "5,5",
+ "5,6"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 7
+ },
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "r": -7,
+ "x": 9
+ },
+ "11,0",
+ "11,1",
+ "11,2"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/6x6/6x6.c b/keyboards/handwired/wylderbuilds/6x6/6x6.c
new file mode 100644
index 00000000000..bd51c220eba
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/6x6/6x6.c
@@ -0,0 +1,5 @@
+//
+// Created by nethe on 11/9/2022.
+//
+
+#include "6x6.h"
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/6x6/6x6.h b/keyboards/handwired/wylderbuilds/6x6/6x6.h
new file mode 100644
index 00000000000..e7b37a906d2
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/6x6/6x6.h
@@ -0,0 +1,41 @@
+//
+// Created by nethe on 11/9/2022.
+//
+
+#ifndef WYLD_QMK_FIRMWARE_6X6_H
+#define WYLD_QMK_FIRMWARE_6X6_H
+
+#endif // WYLD_QMK_FIRMWARE_6X6_H
+
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_6x6_4_rp2040( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+ L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \
+ L40, L41, L42, L43, L44, L45, R40, R41, R42, R43, R44, R45, \
+ L50, L51, L52, L53, R52, R53, R54, R55, \
+ L54, L55, L65, R60, R50, R51, \
+ L62, L63, L64, R61, R62, R63 \
+) { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { L30, L31, L32, L33, L34, L35 }, \
+ { L40, L41, L42, L43, L44, L45 }, \
+ { L50, L51, L52, L53, L54, L55 }, \
+ { XXX, XXX, L62, L63, L64, L65 }, \
+\
+ { R00, R01, R02, R03, R04, R05 }, \
+ { R10, R11, R12, R13, R14, R15 }, \
+ { R20, R21, R22, R23, R24, R25 }, \
+ { R30, R31, R32, R33, R34, R35 }, \
+ { R40, R41, R42, R43, R44, R45 }, \
+ { R50, R51, R52, R53, R54, R55 }, \
+ { R60, R61, R62, R63, XXX, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/6x6/config.h b/keyboards/handwired/wylderbuilds/6x6/config.h
new file mode 100644
index 00000000000..a013aca39ab
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/6x6/config.h
@@ -0,0 +1,51 @@
+//
+// Created by nethe on 11/9/2022.
+//
+//#define PRODUCT_ID 0x0001
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+
+// Dactyl Manuform Hotswap
+#pragma once
+
+#include "config_common.h"
+// Basic Config
+
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+
+//#define VENDOR_ID 0x444d
+//#define PRODUCT_ID 0x3536
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+#define SERIAL_USART_PIN_SWAP
+
+// RP2040 Settings
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+// More RP2040 Settings
+#define RP2040_FLASH_AT25SF128A
+#define RP2040_FLASH_GD25Q64CS
+#define RP2040_FLASH_W25X10CL
+#define RP2040_FLASH_IS25LP080
+#define RP2040_FLASH_GENERIC_03H
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 14
+#define MATRIX_COLS 6
+
+#define MATRIX_COL_PINS { GP3, GP4, GP5, GP6, GP7, GP8 }
+#define MATRIX_ROW_PINS { GP9, GP10, GP11, GP12, GP13, GP14, GP15 }
+#define DIODE_DIRECTION COL2ROW
+
+// End of Basic Config
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/6x6/info.json b/keyboards/handwired/wylderbuilds/6x6/info.json
new file mode 100644
index 00000000000..b90ccaad882
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/6x6/info.json
@@ -0,0 +1,9 @@
+{
+ "keyboard_name": "Dactyl-Manuform (6x6_4)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "bootloader": "rp2040",
+ "processor": "RP2040",
+ "usb": { "vid": "0x9953", "pid": "0x0001", "device_version": "0.0.1" },
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/6x6/keymaps/sqwrly/keymap.c b/keyboards/handwired/wylderbuilds/6x6/keymaps/sqwrly/keymap.c
new file mode 100644
index 00000000000..bd159a276c3
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/6x6/keymaps/sqwrly/keymap.c
@@ -0,0 +1,48 @@
+//
+// Created by nethe on 11/9/2022.
+//
+#include QMK_KEYBOARD_H
+
+enum custom_layers {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+};
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_6x6_4_rp2040(
+ 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_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 ,KC_MINS,
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , 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_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_PLUS, KC_EQL, KC_LBRC,KC_RBRC, KC_LEFT,KC_DOWN,KC_UP ,KC_RGHT,
+ KC_DEL,KC_SPC,KC_ENT, KC_RSFT,KC_BSPC,KC_ENT,
+ KC_TAB,KC_LALT,KC_BSPC, KC_DEL,KC_HOME,KC_END
+ ),
+
+ [_LOWER] = LAYOUT_6x6_4_rp2040(
+ 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_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,
+ _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,
+ _______,_______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS,
+ _______,_______,_______,KC_PSCR, _______, KC_P0,_______,_______,
+ _______,_______,_______, _______,_______,_______,
+ _______,_______,_______, _______,_______,_______
+ ),
+
+ [_RAISE] = LAYOUT_6x6_4_rp2040(
+ KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,
+ _______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______, KC_EQL ,_______,_______,_______,
+ _______,_______,_______, _______,_______,_______,
+ _______,_______,_______, _______,_______,_______
+ )
+};
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/6x6/rules.mk b/keyboards/handwired/wylderbuilds/6x6/rules.mk
new file mode 100644
index 00000000000..4fafe348d2a
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/6x6/rules.mk
@@ -0,0 +1,9 @@
+# Board, Bootloader and MCU
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+RGBLIGHT_ENABLE = no
+MOUSEKEY_ENABLE = no
+#CONSOLE_ENABLE = yes
+#COMMAND_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/6x7_full/6x7_full.c b/keyboards/handwired/wylderbuilds/6x7_full/6x7_full.c
new file mode 100644
index 00000000000..c7a7d0dd6a3
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/6x7_full/6x7_full.c
@@ -0,0 +1,5 @@
+//
+// Created by nethe on 11/9/2022.
+//
+
+#include "6x7_full.h"
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/6x7_full/6x7_full.h b/keyboards/handwired/wylderbuilds/6x7_full/6x7_full.h
new file mode 100644
index 00000000000..4f4637568e8
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/6x7_full/6x7_full.h
@@ -0,0 +1,42 @@
+//
+// Created by nethe on 11/9/2022.
+//
+
+#ifndef WYLD_QMK_FIRMWARE_6X7_H
+#define WYLD_QMK_FIRMWARE_6X7_H
+
+#endif // WYLD_QMK_FIRMWARE_6X6_H
+
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_6x7( \
+ 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, R30, R31, R32, R33, R34, R35, R36, \
+ L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46, \
+ L50, L51, L52, L53, L54, R52, R53, R54, R55, R56, \
+ L55, L56, R50, R51, \
+ L65, L66, R60, R61, \
+ L63, L64, R62, R63 \
+) { \
+ { 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 }, \
+ { L40, L41, L42, L43, L44, L45, L46 }, \
+ { L50, L51, L52, L53, L54, L55, L56 }, \
+ { XXX, XXX, XXX, L63, L64, L65, L66 }, \
+\
+ { R00, R01, R02, R03, R04, R05, R06 }, \
+ { R10, R11, R12, R13, R14, R15, R16 }, \
+ { R20, R21, R22, R23, R24, R25, R26 }, \
+ { R30, R31, R32, R33, R34, R35, R36 }, \
+ { R40, R41, R42, R43, R44, R45, R46 }, \
+ { R50, R51, R52, R53, R54, R55, R56 }, \
+ { R60, R61, R62, R63, XXX, XXX, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/6x7_full/config.h b/keyboards/handwired/wylderbuilds/6x7_full/config.h
new file mode 100644
index 00000000000..0a992bd00c2
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/6x7_full/config.h
@@ -0,0 +1,117 @@
+//
+// Created by nethe on 11/9/2022.
+//
+//#define PRODUCT_ID 0x0001
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+
+// Dactyl Manuform Hotswap
+#pragma once
+
+//#include "config_common.h"
+// Basic Config
+
+
+//#define SPLIT_POINTING_ENABLE
+//#define POINTING_DEVICE_INVERT_Y
+//#define ROTATIONAL_TRANSFORM_ANGLE -25
+//#define POINTING_DEVICE_RIGHT
+//#define PMW33XX_CS_PIN GP21
+//#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+//#define PMW33XX_LIFTOFF_DISTANCE 0x02
+
+//#define POINTING_DEVICE_AUTO_MOUSE_ENABLE
+//// only required if not setting mouse layer elsewhere
+//#define AUTO_MOUSE_DEFAULT_LAYER 3
+//
+//#define DYNAMIC_KEYMAP_LAYER_COUNT 4
+
+// Using Serial instead of I2C
+//#define SERIAL_USART_FULL_DUPLEX
+//#define SERIAL_USART_TX_PIN GP0
+//#define SERIAL_USART_RX_PIN GP1
+//
+//#define SERIAL_PIO_USE_PIO0
+//#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+//#define SERIAL_USART_SPEED 921600
+//#define SERIAL_USART_PIN_SWAP
+
+// RP2040 Settings
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 14
+#define MATRIX_COLS 7
+#define MATRIX_ROW_PINS { GP2, GP3, GP8, GP4, GP13, GP9, GP14 }
+#define MATRIX_COL_PINS { GP1, GP10, GP11, GP12, GP7, GP6, GP5 }
+#define DIODE_DIRECTION ROW2COL
+
+/* Split keyboard settings */
+#define SOFT_SERIAL_PIN GP28
+#define SPLIT_HAND_PIN GP0
+
+//# define MASTER_RIGHT
+# define SPLIT_MODS_ENABLE
+# define SPLIT_WPM_ENABLE
+# define SPLIT_LAYER_STATE_ENABLE
+# define SPLIT_OLED_ENABLE
+# define SPLIT_LED_STATE_ENABLE
+// End of Basic Config
+
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD0
+#define I2C1_SDA_PIN GP16
+#define I2C1_SCL_PIN GP18
+#define RGBLIGHT_LAYERS
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+#ifdef ENCODER_ENABLE
+#define ENCODERS_PAD_A { }
+#define ENCODERS_PAD_B { }
+#define ENCODER_RESOLUTIONS { 2 }
+#define ENCODERS_PAD_A_RIGHT { GP27 }
+#define ENCODERS_PAD_B_RIGHT { GP28 }
+#define ENCODER_RESOLUTIONS_RIGHT { 2 }
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+#define WS2812_PIO_USE_PIO1
+//#define WS2812_PIO_USE_PIO1
+//#define WS2812_PIO_USE_PIO1
+#define RGBLIGHT_LAYERS
+#define WS2812_DI_PIN GP22 // can use trackball jack if not used
+//#define WS2812_EXTERNAL_PULLUP
+#define RGBLED_NUM 36
+//#define DRIVER_LED_TOTAL 34
+#define RGBLED_SPLIT { 18, 18 }
+#define RGBLIGHT_SPLIT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 17
+#define RGBLIGHT_LIMIT_VAL 100
+//#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+#define NOP_FUDGE 0.4 // may not be needed if ws driver loaded
+#endif
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/6x7_full/info.json b/keyboards/handwired/wylderbuilds/6x7_full/info.json
new file mode 100644
index 00000000000..1ba108660dd
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/6x7_full/info.json
@@ -0,0 +1,485 @@
+{
+ "keyboard_name": "Dactyl-Manuform (6x7_full_track)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "bootloader": "rp2040",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x004B",
+ "device_version": "0.0.1"
+ },
+ "width": 22,
+ "height": 10,
+ "matrix": {
+ "rows": 14,
+ "cols": 7
+ },
+ "layouts": {
+ "LAYOUT_6x7": {
+ "layout": [
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "0,6",
+ "x": 7,
+ "y": 0
+ },
+ {
+ "label": "7,0",
+ "x": 12,
+ "y": 0
+ },
+ {
+ "label": "7,1",
+ "x": 13,
+ "y": 0
+ },
+ {
+ "label": "7,2",
+ "x": 14,
+ "y": 0
+ },
+ {
+ "label": "7,3",
+ "x": 15,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0.5
+ },
+ {
+ "label": "7,4",
+ "x": 16,
+ "y": 0.5
+ },
+ {
+ "label": "7,5",
+ "x": 17,
+ "y": 0.5
+ },
+ {
+ "label": "7,6",
+ "x": 18,
+ "y": 0.5
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "1,6",
+ "x": 7,
+ "y": 1
+ },
+ {
+ "label": "8,0",
+ "x": 12,
+ "y": 1
+ },
+ {
+ "label": "8,1",
+ "x": 13,
+ "y": 1
+ },
+ {
+ "label": "8,2",
+ "x": 14,
+ "y": 1
+ },
+ {
+ "label": "8,3",
+ "x": 15,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1.5
+ },
+ {
+ "label": "8,4",
+ "x": 16,
+ "y": 1.5
+ },
+ {
+ "label": "8,5",
+ "x": 17,
+ "y": 1.5
+ },
+ {
+ "label": "8,6",
+ "x": 18,
+ "y": 1.5
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "2,6",
+ "x": 7,
+ "y": 2
+ },
+ {
+ "label": "9,0",
+ "x": 12,
+ "y": 2
+ },
+ {
+ "label": "9,1",
+ "x": 13,
+ "y": 2
+ },
+ {
+ "label": "9,2",
+ "x": 14,
+ "y": 2
+ },
+ {
+ "label": "9,3",
+ "x": 15,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2.5
+ },
+ {
+ "label": "9,4",
+ "x": 16,
+ "y": 2.5
+ },
+ {
+ "label": "9,5",
+ "x": 17,
+ "y": 2.5
+ },
+ {
+ "label": "9,6",
+ "x": 18,
+ "y": 2.5
+ },
+ {
+ "label": "3,3",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "3,4",
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "3,5",
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "3,6",
+ "x": 7,
+ "y": 3
+ },
+ {
+ "label": "10,0",
+ "x": 12,
+ "y": 3
+ },
+ {
+ "label": "10,1",
+ "x": 13,
+ "y": 3
+ },
+ {
+ "label": "10,2",
+ "x": 14,
+ "y": 3
+ },
+ {
+ "label": "10,3",
+ "x": 15,
+ "y": 3
+ },
+ {
+ "label": "3,0",
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "label": "3,1",
+ "x": 2,
+ "y": 3.5
+ },
+ {
+ "label": "3,2",
+ "x": 3,
+ "y": 3.5
+ },
+ {
+ "label": "10,4",
+ "x": 16,
+ "y": 3.5
+ },
+ {
+ "label": "10,5",
+ "x": 17,
+ "y": 3.5
+ },
+ {
+ "label": "10,6",
+ "x": 18,
+ "y": 3.5
+ },
+ {
+ "label": "4,3",
+ "x": 4,
+ "y": 4
+ },
+ {
+ "label": "4,4",
+ "x": 5,
+ "y": 4
+ },
+ {
+ "label": "4,5",
+ "x": 6,
+ "y": 4
+ },
+ {
+ "label": "4,6",
+ "x": 7,
+ "y": 4
+ },
+ {
+ "label": "11,0",
+ "x": 12,
+ "y": 4
+ },
+ {
+ "label": "11,1",
+ "x": 13,
+ "y": 4
+ },
+ {
+ "label": "11,2",
+ "x": 14,
+ "y": 4
+ },
+ {
+ "label": "11,3",
+ "x": 15,
+ "y": 4
+ },
+ {
+ "label": "4,0",
+ "x": 1,
+ "y": 4.5
+ },
+ {
+ "label": "4,1",
+ "x": 2,
+ "y": 4.5
+ },
+ {
+ "label": "4,2",
+ "x": 3,
+ "y": 4.5
+ },
+ {
+ "label": "11,4",
+ "x": 16,
+ "y": 4.5
+ },
+ {
+ "label": "11,5",
+ "x": 17,
+ "y": 4.5
+ },
+ {
+ "label": "11,6",
+ "x": 18,
+ "y": 4.5
+ },
+ {
+ "label": "5,3",
+ "x": 4,
+ "y": 5
+ },
+ {
+ "label": "5,4",
+ "x": 5,
+ "y": 5
+ },
+ {
+ "label": "12,2",
+ "x": 14,
+ "y": 5
+ },
+ {
+ "label": "12,3",
+ "x": 15,
+ "y": 5
+ },
+ {
+ "label": "5,0",
+ "x": 1,
+ "y": 5.5
+ },
+ {
+ "label": "5,1",
+ "x": 2,
+ "y": 5.5
+ },
+ {
+ "label": "5,2",
+ "x": 3,
+ "y": 5.5
+ },
+ {
+ "label": "12,4",
+ "x": 16,
+ "y": 5.5
+ },
+ {
+ "label": "12,5",
+ "x": 17,
+ "y": 5.5
+ },
+ {
+ "label": "12,6",
+ "x": 18,
+ "y": 5.5
+ },
+ {
+ "label": "5,5",
+ "x": 6.75,
+ "y": 4.5
+ },
+ {
+ "label": "5,6",
+ "x": 7.75,
+ "y": 4.5
+ },
+ {
+ "label": "13,0",
+ "x": 12.75,
+ "y": 3.25
+ },
+ {
+ "label": "13,1",
+ "x": 13.75,
+ "y": 3.25
+ },
+ {
+ "label": "13,2",
+ "x": 12.5,
+ "y": 4.5
+ },
+ {
+ "label": "13,3",
+ "x": 13.5,
+ "y": 4.5
+ },
+ {
+ "label": "6,5",
+ "x": 4.5,
+ "y": 8.5
+ },
+ {
+ "label": "6,6",
+ "x": 5.5,
+ "y": 8.5
+ },
+ {
+ "label": "6,3",
+ "x": 5.25,
+ "y": 9.5
+ },
+ {
+ "label": "6,4",
+ "x": 6.25,
+ "y": 9.5
+ },
+ {
+ "label": "12,0",
+ "x": 11,
+ "y": 6.75
+ },
+ {
+ "label": "12,1",
+ "x": 12,
+ "y": 6.75
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/6x7_full/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/6x7_full/keymaps/vial/config.h
new file mode 100644
index 00000000000..10f083df01e
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/6x7_full/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x55, 0xAE, 0xD2, 0x26, 0xB9, 0xFF, 0x00, 0x13}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 6 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 6 }
diff --git a/keyboards/handwired/wylderbuilds/6x7_full/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/6x7_full/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..353c95e30ac
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/6x7_full/keymaps/vial/keymap.c
@@ -0,0 +1,242 @@
+// Copyright 2022 Matthew Dews (@matthew-dews)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include QMK_KEYBOARD_H
+#include "6x7_full.h"
+enum custom_layer {
+ _QWERTY,
+ _LOWER,
+ _RAISE
+};
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_6x7(
+ 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_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_LBRC , KC_RBRC,
+ _______, KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_QUOT, KC_BACKSLASH,
+ _______, KC_CAPS , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L ,KC_SCLN, KC_RCTL, _______,
+ _______, 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_LCTL, KC_LGUI, KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL,KC_RGUI, KC_RALT, KC_RCTL,
+ RAISE, KC_SPC, KC_LCTL, LOWER,
+ KC_TAB, KC_HOME, KC_PGUP, KC_ENT,
+ KC_BSPC, KC_DEL, KC_PGDN, KC_LALT
+ ),
+
+ [_LOWER] = LAYOUT_6x7(
+ 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_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL , _______,
+ _______, _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS, _______,
+ _______, _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE, _______,
+ _______, _______,_______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS, _______,
+ _______, _______,_______,_______,KC_PSCR, _______, KC_P0, _______,_______, QK_BOOT,
+ _______, KC_SPC, _______, _______,
+ KC_TAB, KC_HOME, _______, _______,
+ KC_BSPC, KC_DEL, _______, _______
+ ),
+
+ [_RAISE] = LAYOUT_6x7(
+ _______,KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 , _______,
+ _______,_______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE, _______,
+ _______,_______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU, _______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD, _______,
+ _______,_______,RGB_VAI,RGB_SAI,RGB_HUI,RGB_MOD,RGB_TOG, _______,_______,_______,_______,_______,_______, _______,
+ QK_BOOT, _______,_______, _______,_______, KC_EQL ,_______,_______,_______,_______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______,_______, _______, _______
+ ),
+ [3] = LAYOUT_6x7(
+ _______,_______,_______,_______,_______,_______, _______, _______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______, _______, _______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______, _______, _______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______, _______, _______,_______,_______,_______,_______,_______, _______,
+ _______, _______,_______, _______,_______, _______ ,_______,_______,_______,_______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______,_______, _______, _______
+ )
+
+};
+
+
+
+// AUTOMOUSE LAYERS
+#ifdef POINTING_DEVICE_AUTO_MOUSE_ENABLE
+void pointing_device_init_user(void) {
+ set_auto_mouse_enable(true);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case WYLD_AUTO_MS_TOG:
+ if (record->event.pressed) {
+ set_auto_mouse_enable(!get_auto_mouse_enable());
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+#endif
+
+// ENCODERS
+#ifdef ENCODER_MAP_ENABLE
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_QWERTY] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_LOWER] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD) },
+ [_RAISE] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD) },
+ [3] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD) },
+};
+//#endif
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+const rgblight_segment_t PROGMEM querty_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_RED}, // Light 4 LEDs, starting with LED 6
+ {33, 3, HSV_RED} // Light 4 LEDs, starting with LED 6
+);
+const rgblight_segment_t PROGMEM lower_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_BLUE},
+ {33, 3, HSV_BLUE}
+);
+const rgblight_segment_t PROGMEM raise_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_YELLOW},
+ {33, 3, HSV_YELLOW}
+);
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ querty_layer, // Overrides caps lock layer
+ lower_layer, // Overrides other layers
+ raise_layer // Overrides other layers
+);
+
+//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(0, layer_state_cmp(state, _QWERTY));
+ return state;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(1, layer_state_cmp(state, _LOWER));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _RAISE));
+ return state;
+}
+
+
+#endif
+
+// rgblight_enable();
+#ifdef RGBLIGHT_ENABLE
+void keyboard_post_init_user(void) {
+ // Enable the LED layers
+ rgblight_layers = my_rgb_layers;
+}
+// rgblight_layers = my_rgb_layers;
+// rgblight_enable_noeeprom(); // Enables RGB, without saving settings
+// rgblight_sethsv_noeeprom_cyan();
+// rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
+#endif
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_left()) {
+ return OLED_ROTATION_270;
+ }
+ return OLED_ROTATION_0;
+}
+
+static const char PROGMEM wylderbuilds[] = {
+ // 'dark wylderbuilds_oled_name', 128x32
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40,
+ 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x20, 0x60,
+ 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x60, 0x60,
+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0,
+ 0x00, 0x00, 0xc1, 0xc1, 0x01, 0x01, 0xf1, 0x11, 0x01, 0x01, 0x01, 0x31, 0x60, 0xc0, 0x80, 0xc0,
+ 0xf0, 0x10, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0,
+ 0x00, 0x01, 0x03, 0x9e, 0xf8, 0x00, 0x00, 0x20, 0xe0, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0xf0, 0x30, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x98, 0xf0, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x00, 0x70, 0xfe, 0x03, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00,
+ 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x11, 0xf1, 0x11, 0x33, 0x63, 0xc3,
+ 0x83, 0x01, 0x01, 0xc1, 0xe1, 0x31, 0x11, 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,
+ 0x1f, 0x7c, 0xff, 0x07, 0x7c, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7f, 0xff,
+ 0x60, 0x30, 0x18, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xf2, 0x82, 0x02, 0x80, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x7f, 0x0e, 0x1b, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0x81, 0xc1, 0x63,
+ 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00,
+ 0x00, 0x1f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x60, 0x30, 0x1f,
+ 0x07, 0x00, 0x00, 0x01, 0x43, 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static void render_wylderbuilds(void) {
+ oled_write_raw_P(wylderbuilds, sizeof(wylderbuilds));
+}
+
+bool oled_task_user(void) {
+ oled_set_cursor(0, 3);
+ if (is_keyboard_left()) {
+ // oled_write_P(PSTR("Layer\n"), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ oled_write_P(PSTR(" BASE\n"), false);
+ break;
+ case _LOWER:
+ oled_write_P(PSTR("LOWER\n"), false);
+ break;
+ case _RAISE:
+ oled_write_P(PSTR("RAISE\n"), false);
+ break;
+// case _MOUSE:
+// oled_write_P(PSTR("MOUSE\n"), false);
+// break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+ oled_set_cursor(2, 7);
+ oled_write_P(PSTR("WPM "), false);
+ oled_set_cursor(1, 8);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 9);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+ } else {
+ // write WPM to right OLED
+ oled_set_cursor(0, 0);
+ render_wylderbuilds();
+ oled_scroll_left();
+ }
+
+ return false;
+}
+#endif
+
+
diff --git a/keyboards/handwired/wylderbuilds/6x7_full/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/6x7_full/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/6x7_full/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/6x7_full/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/6x7_full/keymaps/vial/vial.json
new file mode 100644
index 00000000000..7f5df9f2e8d
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/6x7_full/keymaps/vial/vial.json
@@ -0,0 +1,258 @@
+{
+ "matrix": {
+ "rows": 14,
+ "cols": 7
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuidls 6x7 Full Default"
+ },
+ [
+ {
+ "x": 4
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 4
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ "0,2",
+ {
+ "x": 12
+ },
+ "7,4",
+ "7,5",
+ "7,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ {
+ "x": 4
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ {
+ "x": 12
+ },
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ "2,6",
+ {
+ "x": 4
+ },
+ "9,0",
+ {
+ "n": true
+ },
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ {
+ "x": 12
+ },
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ {
+ "x": 4
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ {
+ "x": 12
+ },
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ {
+ "x": 4
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ {
+ "x": 12
+ },
+ "11,4",
+ "11,5",
+ "11,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "5,3",
+ "5,4",
+ {
+ "x": 8
+ },
+ "12,2",
+ "12,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ {
+ "x": 12
+ },
+ "12,4",
+ "12,5",
+ "12,6"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -2,
+ "x": 6.75
+ },
+ "5,5",
+ "5,6"
+ ],
+ [
+ {
+ "r": 15,
+ "y": -2.25,
+ "x": 12.75
+ },
+ "13,0",
+ "13,1"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 12.5
+ },
+ "13,2",
+ "13,3"
+ ],
+ [
+ {
+ "r": -15,
+ "y": 3,
+ "x": 4.5
+ },
+ "6,5",
+ "6,6"
+ ],
+ [
+ {
+ "r": -13,
+ "x": 5.25
+ },
+ "6,3",
+ "6,4"
+ ],
+ [
+ {
+ "r": -7,
+ "y": -3.75,
+ "x": 11
+ },
+ "12,0",
+ "12,1"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/6x7_full/mcuconf.h b/keyboards/handwired/wylderbuilds/6x7_full/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/6x7_full/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/6x7_full/rules.mk b/keyboards/handwired/wylderbuilds/6x7_full/rules.mk
new file mode 100644
index 00000000000..867b6ded239
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/6x7_full/rules.mk
@@ -0,0 +1,22 @@
+# Board, Bootloader and MCU
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+MOUSEKEY_ENABLE = yes
+#CONSOLE_ENABLE = yes
+#COMMAND_ENABLE = yes
+
+RGBLIGHT_ENABLE = no
+WS2812_DRIVER = vendor
+SLEEP_LED_ENABLE = no
+
+ENCODER_ENABLE = no
+ENCODER_MAP_ENABLE = no
+
+OLED_ENABLE = yes
+OLED_DRIVER = ssd1306
+WPM_ENABLE = yes
+EXTRAKEY_ENABLE = yes # Audio control and System control
+
+OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/config.h b/keyboards/handwired/wylderbuilds/config.h
new file mode 100644
index 00000000000..0907e0ecb16
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/config.h
@@ -0,0 +1,38 @@
+#pragma once
+
+//#include QMK_KEYBOARD_H
+
+
+//#define VENDOR_ID 0x9953 // keypad WYLD
+
+/* mouse config */
+
+//#define SPLIT_POINTING_ENABLE
+////#define ROTATIONAL_TRANSFORM_ANGLE -25
+//#define ADNS9800_CS_PIN GP21
+//#define POINTING_DEVICE_CS_PIN GP21
+
+/* Set 0 if debouncing isn't needed */
+//#define DYNAMIC_KEYMAP_LAYER_COUNT 5
+
+/* serial.c configuration for split keyboard */
+
+// PINS ARE DEFINED IN SUBDIRECTORIES.
+//#define SOFT_SERIAL_PIN
+//#define SERIAL_USART_TX_PIN GP0
+//#define SERIAL_USART_RX_PIN GP1
+
+//#define SERIAL_USART_FULL_DUPLEX
+//#define HAL_USE_SIO TRUE
+
+//#define split_usb_detect
+//#define split_layer_state_enable
+
+/* 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
+
+/* Enables This makes it easier for fast typists to use dual-function keys */
+#define PERMISSIVE_HOLD
+
diff --git a/keyboards/handwired/wylderbuilds/reference/encoder/config.h b/keyboards/handwired/wylderbuilds/reference/encoder/config.h
new file mode 100644
index 00000000000..7825abd54e7
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/reference/encoder/config.h
@@ -0,0 +1,9 @@
+// USE PINS 16 AND 17 TO USE 4 PIN JST, IF AVAILABLE
+#ifdef ENCODER_ENABLE
+#define ENCODERS_PAD_A { GP27 }
+#define ENCODERS_PAD_B { GP28 }
+#define ENCODER_RESOLUTIONS { 2 }
+#define ENCODERS_PAD_A_RIGHT { GP27 }
+#define ENCODERS_PAD_B_RIGHT { GP28 }
+#define ENCODER_RESOLUTIONS_RIGHT { 2 }
+#endif
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/reference/encoder/keymap.c b/keyboards/handwired/wylderbuilds/reference/encoder/keymap.c
new file mode 100644
index 00000000000..2718a739ed6
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/reference/encoder/keymap.c
@@ -0,0 +1,35 @@
+#if defined(ENCODER_ENABLE) && !defined(ENCODER_MAP_ENABLE)
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_VOLD);
+ } else {
+ tap_code(KC_VOLU);
+ }
+ } else if (index == 1) {
+ if (clockwise) {
+ tap_code(KC_PGUP);
+ } else {
+ tap_code(KC_PGDN);
+ }
+ }
+ return false;
+}
+#endif
+
+// ONE ENCODER
+#if defined(ENCODER_MAP_ENABLE)
+#if NUM_ENCODERS == 1
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_QWERTY] = { ENCODER_CCW_CW(KC_MS_WH_DOWN, KC_MS_WH_UP) },
+ [_LOWER] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_RAISE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }
+};
+#elif NUM_ENCODERS == 2
+// TWO ENCODERS
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_QWERTY] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_LOWER] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_RAISE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+};
+#endif
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/reference/encoder/rules.mk b/keyboards/handwired/wylderbuilds/reference/encoder/rules.mk
new file mode 100644
index 00000000000..2f4f54e74b0
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/reference/encoder/rules.mk
@@ -0,0 +1,2 @@
+ENCODER_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/reference/oled/config.h b/keyboards/handwired/wylderbuilds/reference/oled/config.h
new file mode 100644
index 00000000000..6781fe04074
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/reference/oled/config.h
@@ -0,0 +1,18 @@
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD0
+#define I2C1_SDA_PIN GP16
+#define I2C1_SCL_PIN GP17
+//#define RGBLIGHT_LAYERS
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/reference/oled/keymap.c b/keyboards/handwired/wylderbuilds/reference/oled/keymap.c
new file mode 100644
index 00000000000..9e9bbe71cbb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/reference/oled/keymap.c
@@ -0,0 +1,216 @@
+/// NEW SETUP, TRACKBALL CODE
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_left()) {
+ return OLED_ROTATION_270;
+ }
+#ifdef POINTING_DEVICE_ENABLE
+ return OLED_ROTATION_270;
+#else
+ return OLED_ROTATION_0;
+#endif
+}
+
+#ifndef POINTING_DEVICE_ENABLE
+static const char PROGMEM wylderbuilds[] = {
+ // 'dark wylderbuilds_oled_name', 128x32
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40,
+ 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x20, 0x60,
+ 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x60, 0x60,
+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0,
+ 0x00, 0x00, 0xc1, 0xc1, 0x01, 0x01, 0xf1, 0x11, 0x01, 0x01, 0x01, 0x31, 0x60, 0xc0, 0x80, 0xc0,
+ 0xf0, 0x10, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0,
+ 0x00, 0x01, 0x03, 0x9e, 0xf8, 0x00, 0x00, 0x20, 0xe0, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0xf0, 0x30, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x98, 0xf0, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x00, 0x70, 0xfe, 0x03, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00,
+ 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x11, 0xf1, 0x11, 0x33, 0x63, 0xc3,
+ 0x83, 0x01, 0x01, 0xc1, 0xe1, 0x31, 0x11, 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,
+ 0x1f, 0x7c, 0xff, 0x07, 0x7c, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7f, 0xff,
+ 0x60, 0x30, 0x18, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xf2, 0x82, 0x02, 0x80, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x7f, 0x0e, 0x1b, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0x81, 0xc1, 0x63,
+ 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00,
+ 0x00, 0x1f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x60, 0x30, 0x1f,
+ 0x07, 0x00, 0x00, 0x01, 0x43, 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static void render_wylderbuilds(void) {
+ oled_write_raw_P(wylderbuilds, sizeof(wylderbuilds));
+}
+
+#endif
+
+static char layer_names[5][8] = {
+ " BASE\n",
+ "LOWER\n",
+ "RAISE\n",
+ "MOUSE\n",
+ " XTRA\n"
+ };
+
+bool oled_task_user(void) {
+ char* layer_name = layer_names[get_highest_layer(layer_state)];
+
+ if (is_keyboard_left()) {
+ // oled_write_P(PSTR("Layer\n"), false);
+ oled_set_cursor(0, 3);
+ oled_write_P(PSTR(layer_name), false);
+
+ oled_set_cursor(2, 6);
+ oled_write_P(PSTR("WPM "), false);
+ oled_set_cursor(2, 7);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 9);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+ } else {
+ // write WPM to right OLED
+#ifdef POINTING_DEVICE_ENABLE
+ char* mode = get_mouse_mode_string();
+ uint16_t dpi = get_current_dpi();
+ oled_set_cursor(2, 3);
+ oled_write_P(PSTR("DPI "), false);
+ oled_set_cursor(0, 5);
+ oled_write_P(PSTR(get_u16_str(dpi, ' ')), false);
+ oled_set_cursor(0, 9);
+ oled_write(PSTR(mode), false);
+#else
+ oled_set_cursor(0, 0);
+ render_wylderbuilds();
+ oled_scroll_left();
+#endif
+ }
+
+ return false;
+}
+#endif
+
+/// NEW SETUP, SINGLE OLED
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ return OLED_ROTATION_270;
+}
+
+
+static char layer_names[5][8] = {
+ " BASE\n",
+ "LOWER\n",
+ "RAISE\n",
+ "MOUSE\n",
+ " XTRA\n"
+ };
+
+bool oled_task_user(void) {
+ char* layer_name = layer_names[get_highest_layer(layer_state)];
+ char* mode = get_mouse_mode_string();
+
+ if (is_keyboard_left()) {
+ // oled_write_P(PSTR("Layer\n"), false);
+ oled_set_cursor(0, 3);
+ oled_write_P(PSTR(layer_name), false);
+
+ // Host Keyboard LED Status
+
+// oled_set_cursor(0, 9);
+// led_t led_state = host_keyboard_led_state();
+
+// oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+// oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+// oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+
+ // write WPM to right OLED
+
+ uint16_t dpi = get_current_dpi();
+ oled_set_cursor(2, 3);
+ oled_write_P(PSTR("DPI "), false);
+ oled_set_cursor(0, 5);
+ oled_write_P(PSTR(get_u16_str(dpi, ' ')), false);
+ oled_set_cursor(0, 8);
+ oled_write(PSTR(mode), false);
+ oled_set_cursor(2, 10);
+ oled_write_P(PSTR("WPM "), false);
+ oled_set_cursor(2, 12);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ }
+
+ return false;
+}
+#endif
+
+///// OLD SETUP ////
+
+bool oled_task_user(void) {
+ char* layer_name = layer_names[get_highest_layer(layer_state)];
+
+ if (is_keyboard_left()) {
+ // oled_write_P(PSTR("Layer\n"), false);
+ oled_set_cursor(0, 2);
+ oled_write_P(PSTR(layer_name), false);
+
+ oled_set_cursor(2, 4);
+ oled_write_P(PSTR("WPM "), false);
+ oled_set_cursor(2, 6);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 8);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+ } else {
+ // write WPM to right OLED
+#ifdef POINTING_DEVICE_ENABLE
+ char* mode = get_mouse_mode_string();
+ uint16_t dpi = get_current_dpi();
+ oled_set_cursor(2, 2);
+ oled_write_P(PSTR("DPI "), false);
+ oled_set_cursor(0, 4);
+ oled_write_P(PSTR(get_u16_str(dpi, ' ')), false);
+ oled_set_cursor(0, 7);
+ oled_write(PSTR(mode), false);
+#ifdef POINTING_DEVICE_AUTO_MOUSE_ENABLE
+ oled_set_cursor(0, 9);
+ if (get_auto_mouse_enable()) {
+ oled_write(PSTR("Auto"), false);
+ } else {
+ oled_write(PSTR(" "), false);
+ }
+
+#endif // POINTING_DEVICE_AUTO_MOUSE_ENABLE
+#else
+ oled_set_cursor(0, 0);
+ render_wylderbuilds();
+ oled_scroll_left();
+#endif // POINTING_DEVICE_ENABLE
+ }
+
+ return false;
+}
+#endif
+
+
diff --git a/keyboards/handwired/wylderbuilds/reference/oled/mcuconf.h b/keyboards/handwired/wylderbuilds/reference/oled/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/reference/oled/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/reference/oled/rules.mk b/keyboards/handwired/wylderbuilds/reference/oled/rules.mk
new file mode 100644
index 00000000000..9d692dca9a8
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/reference/oled/rules.mk
@@ -0,0 +1,6 @@
+OLED_ENABLE = yes
+OLED_DRIVER = ssd1306
+WPM_ENABLE = yes
+EXTRAKEY_ENABLE = yes # Audio control and System control
+
+OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/reference/rgb_underglow/config.h b/keyboards/handwired/wylderbuilds/reference/rgb_underglow/config.h
new file mode 100644
index 00000000000..76cd0215199
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/reference/rgb_underglow/config.h
@@ -0,0 +1,23 @@
+#ifdef RGBLIGHT_ENABLE
+#define WS2812_PIO_USE_PIO1
+//#define WS2812_PIO_USE_PIO1
+//#define WS2812_PIO_USE_PIO1
+#define RGBLIGHT_LAYERS
+#define WS2812_DI_PIN GP22 // can use trackball jack if not used
+//#define WS2812_EXTERNAL_PULLUP
+#define RGBLED_NUM 36
+//#define DRIVER_LED_TOTAL 34
+#define RGBLED_SPLIT { 18, 18 }
+#define RGBLIGHT_SPLIT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 17
+#define RGBLIGHT_LIMIT_VAL 100
+//#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+#define NOP_FUDGE 0.4 // may not be needed if ws driver loaded
+#endif
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/reference/rgb_underglow/keymap.c b/keyboards/handwired/wylderbuilds/reference/rgb_underglow/keymap.c
new file mode 100644
index 00000000000..8ecb615a135
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/reference/rgb_underglow/keymap.c
@@ -0,0 +1,54 @@
+
+// DEFINE THESE KEYS SOMEWHERE ON THE KEYMAP, USUALLY LEFT BOTTOM ROW
+// _______,RGB_VAI,RGB_SAI,RGB_HUI,RGB_MOD,RGB_TOG,
+
+#ifdef RGBLIGHT_ENABLE
+const rgblight_segment_t PROGMEM querty_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_RED}, // Light 4 LEDs, starting with LED 6
+ {33, 3, HSV_RED} // Light 4 LEDs, starting with LED 6
+);
+const rgblight_segment_t PROGMEM lower_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_BLUE},
+ {33, 3, HSV_BLUE}
+);
+const rgblight_segment_t PROGMEM raise_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_YELLOW},
+ {33, 3, HSV_YELLOW}
+);
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ querty_layer, // Overrides caps lock layer
+ lower_layer, // Overrides other layers
+ raise_layer // Overrides other layers
+);
+
+//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(0, layer_state_cmp(state, _QWERTY));
+ return state;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(1, layer_state_cmp(state, _LOWER));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _RAISE));
+ return state;
+}
+
+
+#endif
+
+// rgblight_enable();
+#ifdef RGBLIGHT_ENABLE
+void keyboard_post_init_user(void) {
+ // Enable the LED layers
+ rgblight_layers = my_rgb_layers;
+}
+// rgblight_layers = my_rgb_layers;
+// rgblight_enable_noeeprom(); // Enables RGB, without saving settings
+// rgblight_sethsv_noeeprom_cyan();
+// rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
+#endif
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/reference/rgb_underglow/rules.mk b/keyboards/handwired/wylderbuilds/reference/rgb_underglow/rules.mk
new file mode 100644
index 00000000000..8bfd31a0368
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/reference/rgb_underglow/rules.mk
@@ -0,0 +1,3 @@
+RGBLIGHT_ENABLE = yes
+WS2812_DRIVER = vendor
+SLEEP_LED_ENABLE = no
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/reference/sizes/3x5.h b/keyboards/handwired/wylderbuilds/reference/sizes/3x5.h
new file mode 100644
index 00000000000..414218de0d4
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/reference/sizes/3x5.h
@@ -0,0 +1,29 @@
+//
+// Created by Andrew Langton on 2/19/24.
+//
+#import "layers.h"
+
+#ifndef VIAL_QMK_3X5_H
+#define VIAL_QMK_3X5_H
+#endif //VIAL_QMK_3X5_H
+
+
+const uint16_t PROGMEM QWERTY_WHOLE[] = {
+ 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_N, KC_M, KC_COMM, KC_DOT, KC_SLSH
+};
+
+const uint16_t PROGMEM LOWER_WHOLE[] = {
+ _______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,KC_PLUS,
+ KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,
+ _______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL
+};
+
+const uint16_t PROGMEM RAISE_WHOLE[] = {
+ KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,
+ _______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,
+ KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,KC_VOLD
+};
+
+
diff --git a/keyboards/handwired/wylderbuilds/reference/sizes/default_cluster.h b/keyboards/handwired/wylderbuilds/reference/sizes/default_cluster.h
new file mode 100644
index 00000000000..67e24e8fb99
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/reference/sizes/default_cluster.h
@@ -0,0 +1,25 @@
+#import "layers.h"
+
+const uint16_t PROGMEM QWERTY_RIGHT[3][] = {
+ {
+ RAISE, KC_SPC
+ },
+ {
+ KC_TAB, KC_HOME
+ },
+ {
+ KC_BSPC, KC_GRV
+ }
+};
+
+const uint16_t PROGMEM QWERTY_LEFT[3][] = {
+ {
+ KC_ENT, LOWER
+ },
+ {
+ KC_DEL, KC_HOME
+ },
+ {
+ KC_LGUI, KC_LALT
+ }
+};
diff --git a/keyboards/handwired/wylderbuilds/reference/sizes/layers.h b/keyboards/handwired/wylderbuilds/reference/sizes/layers.h
new file mode 100644
index 00000000000..c80a0f5e794
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/reference/sizes/layers.h
@@ -0,0 +1,18 @@
+#include QMK_KEYBOARD_H
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+enum custom_layer {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+ _MOUSE
+};
+
+enum wyld_keycodes {
+ WYLD_AUTO_MS_TOG = SAFE_RANGE,
+ WYLD_DPI_UP,
+ WYLD_DPI_DOWN,
+ WYLD_DPI_RESET
+};
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/reference/trackball/config.h b/keyboards/handwired/wylderbuilds/reference/trackball/config.h
new file mode 100644
index 00000000000..8fe357d62ad
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/reference/trackball/config.h
@@ -0,0 +1,25 @@
+
+#define SPLIT_POINTING_ENABLE
+#define POINTING_DEVICE_INVERT_Y
+#define ROTATIONAL_TRANSFORM_ANGLE -25
+#define POINTING_DEVICE_RIGHT
+// #define POINTING_DEVICE_COMBINED
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x03
+
+#define POINTING_DEVICE_AUTO_MOUSE_ENABLE
+// only required if not setting mouse layer elsewhere
+#define AUTO_MOUSE_DEFAULT_LAYER 3
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
+
+
+/* ADNS 9800 SETTINGS */
+
+// #define ADNS9800_CS_PIN GP21
+// #define POINTING_DEVICE_DEBUG
+// #define ADNS9800_CPI 8200
+
+// #define POINTING_DEVICE_INVERT_Y
+// #define POINTING_DEVICE_INVERT_Y_RIGHT // FOR DUAL
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/reference/trackball/keymap.c b/keyboards/handwired/wylderbuilds/reference/trackball/keymap.c
new file mode 100644
index 00000000000..c67912b89cb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/reference/trackball/keymap.c
@@ -0,0 +1,110 @@
+
+enum wyld_keycodes {
+ WYLD_AUTO_MS_TOG = SAFE_RANGE
+};
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [3] = LAYOUT_6x7_shift(
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______, _______,_______,_______,_______,
+ _______, KC_BTN1, _______,
+ KC_BTN3, KC_BTN2, _______,
+ SNIPING, DRGSCRL, KC_MUTE, _______
+ ),
+ [4] = LAYOUT_6x7_shift(
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______, _______,_______,_______,_______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, KC_MUTE, _______
+ )
+};
+
+void keyboard_post_init_user(void) {
+ // Enable the LED layers
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+ debug_keyboard=true;
+ debug_mouse=true;
+#else
+ debug_enable=false;
+ debug_matrix=false;
+ debug_keyboard=false;
+ debug_mouse=false;
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+ rgblight_layers = my_rgb_layers;
+#endif
+
+#ifdef POINTING_DEVICE_COMBINED
+ pointing_device_set_cpi_on_side(true, CHARYBDIS_DRAGSCROLL_DPI); // LEFT
+ pointing_device_set_cpi_on_side(false, 2000); // RIGHT
+#endif
+}
+
+#ifdef POINTING_DEVICE_COMBINED
+static void check_drag(report_mouse_t* mouse_report) {
+ static int16_t scroll_buffer_x = 0;
+ static int16_t scroll_buffer_y = 0;
+
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_X
+ scroll_buffer_x -= mouse_report->x;
+# else
+ scroll_buffer_x += mouse_report->x;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_X
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ scroll_buffer_y -= mouse_report->y;
+# else
+ scroll_buffer_y += mouse_report->y;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ mouse_report->x = 0;
+ mouse_report->y = 0;
+ if (abs(scroll_buffer_x) > 6) {
+ mouse_report->h = scroll_buffer_x > 0 ? 1 : -1;
+ scroll_buffer_x = 0;
+ }
+ if (abs(scroll_buffer_y) > 6) {
+ mouse_report->v = scroll_buffer_y > 0 ? 1 : -1;
+ scroll_buffer_y = 0;
+ }
+}
+
+report_mouse_t pointing_device_task_combined_user(report_mouse_t left_report, report_mouse_t right_report) {
+ check_drag_scroll(&left_report); // updated in trackball.c
+ return pointing_device_combine_reports(left_report, right_report);
+}
+#endif
+
+#ifdef POINTING_DEVICE_AUTO_MOUSE_ENABLE
+void pointing_device_init_user(void) {
+ set_auto_mouse_enable(true);
+}
+
+// Ensures only the pointing device activates mouse layer on dual track builds
+// And also prevents dragscroll from activating it
+bool auto_mouse_activation(report_mouse_t mouse_report) {
+ return mouse_report.x != 0 || mouse_report.y != 0 || mouse_report.buttons;
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case WYLD_AUTO_MS_TOG:
+ if (record->event.pressed) {
+ set_auto_mouse_enable(!get_auto_mouse_enable());
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+#endif
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/reference/trackball/rules.mk b/keyboards/handwired/wylderbuilds/reference/trackball/rules.mk
new file mode 100644
index 00000000000..3e50bf795c5
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/reference/trackball/rules.mk
@@ -0,0 +1,5 @@
+POINTING_DEVICE_ENABLE = yes
+POINTING_DEVICE_DRIVER = pmw3360
+#POINTING_DEVICE_DRIVER = pmw3389
+#POINTING_DEVICE_DRIVER = adns5800
+MOUSE_SHARED_EP = yes
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/reference/wyld_common.c b/keyboards/handwired/wylderbuilds/reference/wyld_common.c
new file mode 100644
index 00000000000..bbdbc278c07
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/reference/wyld_common.c
@@ -0,0 +1,246 @@
+//
+// Created by Andrew Langton on 9/16/23.
+//
+
+#include "wyld_common.h"
+
+void keyboard_post_init_user(void) {
+ // Enable the LED layers
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+ debug_keyboard=true;
+ debug_mouse=true;
+#else
+ debug_enable=false;
+ debug_matrix=false;
+ debug_keyboard=false;
+ debug_mouse=false;
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+ rgblight_layers = my_rgb_layers;
+#endif
+
+#ifdef #define POINTING_DEVICE_COMBINED
+ pointing_device_set_cpi_on_side(true, CHARYBDIS_DRAGSCROLL_DPI); // LEFT
+ pointing_device_set_cpi_on_side(false, 2000); // RIGHT
+#endif
+}
+
+//// TRACKBALL ////
+#ifdef #define POINTING_DEVICE_COMBINED
+static void check_drag(report_mouse_t* mouse_report) {
+ static int16_t scroll_buffer_x = 0;
+ static int16_t scroll_buffer_y = 0;
+
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_X
+ scroll_buffer_x -= mouse_report->x;
+# else
+ scroll_buffer_x += mouse_report->x;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_X
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ scroll_buffer_y -= mouse_report->y;
+# else
+ scroll_buffer_y += mouse_report->y;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ mouse_report->x = 0;
+ mouse_report->y = 0;
+ if (abs(scroll_buffer_x) > 6) {
+ mouse_report->h = scroll_buffer_x > 0 ? 1 : -1;
+ scroll_buffer_x = 0;
+ }
+ if (abs(scroll_buffer_y) > 6) {
+ mouse_report->v = scroll_buffer_y > 0 ? 1 : -1;
+ scroll_buffer_y = 0;
+ }
+}
+
+report_mouse_t pointing_device_task_combined_user(report_mouse_t left_report, report_mouse_t right_report) {
+ check_drag_scroll(&left_report); // updated in trackball.c
+ return pointing_device_combine_reports(left_report, right_report);
+}
+#endif
+
+#ifdef #define POINTING_DEVICE_AUTO_MOUSE_ENABLE
+void pointing_device_init_user(void) {
+ set_auto_mouse_enable(true);
+}
+
+// Ensures only the pointing device activates mouse layer on dual track builds
+// And also prevents dragscroll from activating it
+bool auto_mouse_activation(report_mouse_t mouse_report) {
+ return mouse_report.x != 0 || mouse_report.y != 0 || mouse_report.buttons;
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case WYLD_AUTO_MS_TOG:
+ if (record->event.pressed) {
+ set_auto_mouse_enable(!get_auto_mouse_enable());
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+#endif
+
+// ENCODERS
+#ifdef ENCODER_MAP_ENABLE
+//#if NUM_ENCODERS == 1
+//const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+// [_QWERTY] = { ENCODER_CCW_CW(KC_MS_WH_DOWN, KC_MS_WH_UP) },
+// [_LOWER] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+// [_RAISE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+// [3] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+// [4] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }
+//};
+//#elif NUM_ENCODERS == 2
+// TWO ENCODERS
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_QWERTY] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_LOWER] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_RAISE] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [3] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [4] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) }
+};
+//#endif
+#endif
+
+// OLED
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_left()) {
+ return OLED_ROTATION_270;
+ }
+ return OLED_ROTATION_0;
+}
+
+static const char PROGMEM wylderbuilds[] = {
+ // 'dark wylderbuilds_oled_name', 128x32
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40,
+ 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x20, 0x60,
+ 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x60, 0x60,
+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0,
+ 0x00, 0x00, 0xc1, 0xc1, 0x01, 0x01, 0xf1, 0x11, 0x01, 0x01, 0x01, 0x31, 0x60, 0xc0, 0x80, 0xc0,
+ 0xf0, 0x10, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0,
+ 0x00, 0x01, 0x03, 0x9e, 0xf8, 0x00, 0x00, 0x20, 0xe0, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0xf0, 0x30, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x98, 0xf0, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x00, 0x70, 0xfe, 0x03, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00,
+ 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x11, 0xf1, 0x11, 0x33, 0x63, 0xc3,
+ 0x83, 0x01, 0x01, 0xc1, 0xe1, 0x31, 0x11, 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,
+ 0x1f, 0x7c, 0xff, 0x07, 0x7c, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7f, 0xff,
+ 0x60, 0x30, 0x18, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xf2, 0x82, 0x02, 0x80, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x7f, 0x0e, 0x1b, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0x81, 0xc1, 0x63,
+ 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00,
+ 0x00, 0x1f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x60, 0x30, 0x1f,
+ 0x07, 0x00, 0x00, 0x01, 0x43, 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static void render_wylderbuilds(void) {
+ oled_write_raw_P(wylderbuilds, sizeof(wylderbuilds));
+}
+
+bool oled_task_user(void) {
+ oled_set_cursor(0, 3);
+ if (is_keyboard_left()) {
+ // oled_write_P(PSTR("Layer\n"), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ oled_write_P(PSTR(" BASE\n"), false);
+ break;
+ case _LOWER:
+ oled_write_P(PSTR("LOWER\n"), false);
+ break;
+ case _RAISE:
+ oled_write_P(PSTR("RAISE\n"), false);
+ break;
+ case _MOUSE:
+ oled_write_P(PSTR("MOUSE\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+ oled_set_cursor(2, 7);
+ oled_write_P(PSTR("WPM "), false);
+ oled_set_cursor(1, 8);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 9);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+ } else {
+ // write WPM to right OLED
+ oled_set_cursor(0, 0);
+ render_wylderbuilds();
+ oled_scroll_left();
+ }
+
+ return false;
+}
+#endif
+
+// RGB UNDERGLOW
+
+#ifdef RGBLIGHT_ENABLE
+const rgblight_segment_t PROGMEM querty_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_RED}, // Light 4 LEDs, starting with LED 6
+ {33, 3, HSV_RED} // Light 4 LEDs, starting with LED 6
+);
+const rgblight_segment_t PROGMEM lower_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_BLUE},
+ {33, 3, HSV_BLUE}
+);
+const rgblight_segment_t PROGMEM raise_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_YELLOW},
+ {33, 3, HSV_YELLOW}
+);
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ querty_layer, // Overrides caps lock layer
+ lower_layer, // Overrides other layers
+ raise_layer // Overrides other layers
+);
+
+//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(0, layer_state_cmp(state, _QWERTY));
+ return state;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(1, layer_state_cmp(state, _LOWER));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _RAISE));
+ return state;
+}
+
+
+#endif
diff --git a/keyboards/handwired/wylderbuilds/reference/wyld_common.h b/keyboards/handwired/wylderbuilds/reference/wyld_common.h
new file mode 100644
index 00000000000..509801d01a3
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/reference/wyld_common.h
@@ -0,0 +1,11 @@
+//
+// Created by Andrew Langton on 9/16/23.
+//
+
+#ifdef OLED_ENABLE
+enum oled_side {
+ BOTH_OLED = "BOTH_OLED",
+ LEFT_OLED = "LEFT_OLED",
+ RIGHT_OLED = "RIGHT_OLED"
+};
+#endif
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/3x5_3_track.c b/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/3x5_3_track.c
new file mode 100644
index 00000000000..d0ca9372c62
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/3x5_3_track.c
@@ -0,0 +1,18 @@
+/*
+Copyright 2021 @dlford
+
+This 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 "3x5_3_track.h"
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/3x5_3_track.h b/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/3x5_3_track.h
new file mode 100644
index 00000000000..256ef61362c
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/3x5_3_track.h
@@ -0,0 +1,78 @@
+/*
+Copyright 2021 @dlford
+
+This 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
+
+// STANDARD TRACKBALL 3-KEY SOCKET ON RIGHT
+/* #define LAYOUT_split_3x5_3( \
+// L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \
+// L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \
+// L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \
+// L32, L33, L34, R30, \
+// R31, \
+// R32 \
+//) { \
+// { L00, L01, L02, L03, L04 }, \
+// { L10, L11, L12, L13, L14 }, \
+// { L20, L21, L22, L23, L24 }, \
+// { XXX, XXX, L32, L33, L34 }, \
+// { R00, R01, R02, R03, R04 }, \
+// { R10, R11, R12, R13, R14 }, \
+// { R20, R21, R22, R23, R24 }, \
+// { R30, R31, R32, XXX, XXX } \
+//}
+ */
+
+// TRACKBALL IN WALL SETUP
+#define LAYOUT_split_3x5_3( \
+ L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \
+ L10, L11, L12, L13, L14, L31, R10, R11, R12, R13, R14, \
+ L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \
+ L32, L33, L34, R30, R31, R32 \
+) { \
+ { L00, L01, L02, L03, L04 }, \
+ { L10, L11, L12, L13, L14 }, \
+ { L20, L21, L22, L23, L24 }, \
+ { XXX, L31, L32, L33, L34 }, \
+ { R00, R01, R02, R03, R04 }, \
+ { R10, R11, R12, R13, R14 }, \
+ { R20, R21, R22, R23, R24 }, \
+ { R30, R31, R32, XXX, XXX } \
+}
+
+// TRACKBALL IN WALL SETUP WITH MINI LEFT SETUP
+//#define LAYOUT_split_3x5_3( \
+// L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \
+// L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \
+// L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \
+// L32, L33, L34, R30, R31, R32, \
+// L30, L31 \
+//) { \
+// { L00, L01, L02, L03, L04 }, \
+// { L10, L11, L12, L13, L14 }, \
+// { L20, L21, L22, L23, L24 }, \
+// { L30, L31, L32, L33, L34 }, \
+// { R00, R01, R02, R03, R04 }, \
+// { R10, R11, R12, R13, R14 }, \
+// { R20, R21, R22, R23, R24 }, \
+// { R30, R31, R32, XXX, XXX } \
+//}
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/config.h b/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/config.h
new file mode 100644
index 00000000000..fb7db86678c
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/config.h
@@ -0,0 +1,143 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+//#include "config_common.h"
+// Basic Config
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+//#define BOOTMAGIC_LITE_ROW 0 // TOP RIGHT KEY ON RIGHT SIDE, TOP LEFT KEY ON LEFT SIDE
+//#define BOOTMAGIC_LITE_COLUMN 4
+
+//#define PRODUCT_ID 0x0002
+
+#define USE_SERIAL
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+
+#define SPLIT_LAYER_STATE_ENABLE
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+#define SERIAL_USART_PIN_SWAP
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Columns are doubled-up
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 5
+
+//#define MATRIX_COL_PINS_RIGHT { GP6, GP5, GP4, GP3, GP2 }
+#define MATRIX_COL_PINS { GP6, GP5, GP4, GP3, GP2 }
+#define MATRIX_ROW_PINS { GP9, GP10, GP11, GP12 }
+//#define MATRIX_COL_PINS_RIGHT { GP6, GP5, GP4, GP3, GP2, GP8 } // Added GP7 so each has 6 columns
+//#define MATRIX_ROW_PINS_RIGHT { GP9, GP10, GP11, GP12, GP13 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define SPLIT_LAYER_STATE_ENABLE
+#define POINTING_DEVICE_COMBINED
+#define POINTING_DEVICE_ROTATION_90
+#define ROTATIONAL_TRANSFORM_ANGLE -45 // TESTING RIGHT SHIFTED FROM -35 TO -45 TO TEST LEFT
+#define POINTING_DEVICE_INVERT_Y_RIGHT
+#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_INVERT_X
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x02
+
+#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+#define POINTING_DEVICE_AUTO_MOUSE_ENABLE
+// only required if not setting mouse layer elsewhere
+#define AUTO_MOUSE_DEFAULT_LAYER 3
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 4
+
+#ifdef ENCODER_ENABLE
+#define ENCODERS_PAD_A { GP27 }
+#define ENCODERS_PAD_B { GP28 }
+#define ENCODER_RESOLUTIONS { 2 }
+//#define ENCODERS_PAD_A_RIGHT { GP16 }
+//#define ENCODERS_PAD_B_RIGHT { GP17 }
+//#define ENCODER_RESOLUTIONS_RIGHT { 2 }
+#endif
+
+//#define CHARYBDIS_MINIMUM_DEFAULT_DPI 1200
+//#define CHARYBDIS_DEFAULT_DPI_CONFIG_STEP 200
+//#define CHARYBDIS_MINIMUM_SNIPING_DPI 400
+//#define CHARYBDIS_SNIPING_DPI_CONFIG_STEP 200
+
+//// Rotary Encoder ////
+// GP21
+// GP22
+
+//// Sensor Notes ////
+//// Pi Pico pins ////
+// 3V3 -- Power (not 3v3_EN!)
+// GP21 -- CS pin
+// GP20 -- MISO pin
+// GP19 -- MOSI pin
+// GP18 -- SCK pin clock
+// GND -- GND
+
+#ifdef RGBLIGHT_ENABLE
+#define WS2812_PIO_USE_PIO1
+//#define WS2812_PIO_USE_PIO1
+//#define WS2812_PIO_USE_PIO1
+#define RGBLIGHT_LAYERS
+#define WS2812_DI_PIN GP22 // can use trackball jack if not used
+//#define WS2812_EXTERNAL_PULLUP
+#define RGBLED_NUM 24
+//#define DRIVER_LED_TOTAL 34
+#define RGBLED_SPLIT { 12, 12 }
+#define RGBLIGHT_SPLIT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 17
+#define RGBLIGHT_LIMIT_VAL 100
+//#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+#define NOP_FUDGE 0.4 // may not be needed if ws driver loaded
+#endif
+
+//// OLED Pins and Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD0
+#define I2C1_SDA_PIN GP16
+#define I2C1_SCL_PIN GP17
+// OLED Options
+#define SPLIT_OLED_ENABLE
+//#define SPLIT_MODS_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+// Misc settings
+// 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
+// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/info.json b/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/info.json
new file mode 100644
index 00000000000..5257f76041b
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/info.json
@@ -0,0 +1,324 @@
+{
+ "keyboard_name": "Dactyl-Manuform Wyld Trackball (3x5_3_track)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0112",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 8,
+ "cols": 5
+ },
+ "ws2812": {
+ "pin": "GP28",
+ "driver": "vendor"
+ },
+ "split": {
+ "enabled": true
+ },
+ "features": {
+ "bootmagic": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
+ "matrix_size": {
+ "cols": 5,
+ "rows": 8
+ },
+ "rgb_matrix": {
+ "driver": "ws2812",
+ "max_brightness": 120,
+ "animations": {
+ "alpha_mods": true,
+ "breathing": true,
+ "colorband_pinwheel_sat": true,
+ "colorband_pinwheel_val": true,
+ "colorband_sat": true,
+ "colorband_spiral_sat": true,
+ "colorband_spiral_val": true,
+ "colorband_val": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_out_in": true,
+ "cycle_out_in_dual": true,
+ "cycle_pinwheel": true,
+ "cycle_spiral": true,
+ "cycle_up_down": true,
+ "digital_rain": true,
+ "dual_beacon": true,
+ "gradient_left_right": true,
+ "gradient_up_down": true,
+ "hue_breathing": true,
+ "hue_pendulum": true,
+ "hue_wave": true,
+ "jellybean_raindrops": true,
+ "pixel_flow": true,
+ "pixel_fractal": true,
+ "pixel_rain": true,
+ "rainbow_beacon": true,
+ "rainbow_moving_chevron": true,
+ "rainbow_pinwheels": true,
+ "raindrops": true,
+ "solid_color": true,
+ "solid_reactive": true,
+ "solid_reactive_cross": true,
+ "solid_reactive_nexus": true,
+ "solid_reactive_simple": true,
+ "solid_reactive_wide": true,
+ "solid_splash": true,
+ "splash": true,
+ "typing_heatmap": true
+ },
+ "split_count": [
+ 18,
+ 18
+ ],
+ "layout": [
+ {"flags": 4, "matrix": [0, 4], "x": 78, "y": 0},
+ {"flags": 4, "matrix": [1, 4], "x": 78, "y": 20},
+ {"flags": 4, "matrix": [2, 4], "x": 91, "y": 47},
+ {"flags": 4, "matrix": [0, 3], "x": 65, "y": 0},
+ {"flags": 4, "matrix": [1, 3], "x": 65, "y": 20},
+ {"flags": 4, "matrix": [2, 3], "x": 65, "y": 47},
+ {"flags": 4, "matrix": [0, 2], "x": 52, "y": 0},
+ {"flags": 4, "matrix": [1, 2], "x": 52, "y": 20},
+ {"flags": 4, "matrix": [2, 2], "x": 52, "y": 47},
+ {"flags": 4, "matrix": [0, 1], "x": 39, "y": 0},
+ {"flags": 4, "matrix": [1, 1], "x": 39, "y": 20},
+ {"flags": 4, "matrix": [2, 1], "x": 39, "y": 47},
+ {"flags": 4, "matrix": [0, 0], "x": 26, "y": 7},
+ {"flags": 4, "matrix": [1, 0], "x": 13, "y": 34},
+ {"flags": 4, "matrix": [2, 0], "x": 13, "y": 61},
+ {"flags": 4, "matrix": [3, 2], "x": 71, "y": 77},
+ {"flags": 4, "matrix": [3, 3], "x": 84, "y": 77},
+ {"flags": 4, "matrix": [3, 4], "x": 97, "y": 77},
+ {"flags": 4, "matrix": [4, 0], "x": 172, "y": 0},
+ {"flags": 4, "matrix": [5, 0], "x": 172, "y": 20},
+ {"flags": 4, "matrix": [6, 0], "x": 172, "y": 47},
+ {"flags": 4, "matrix": [4, 1], "x": 185, "y": 0},
+ {"flags": 4, "matrix": [5, 1], "x": 185, "y": 20},
+ {"flags": 4, "matrix": [6, 1], "x": 198, "y": 47},
+ {"flags": 4, "matrix": [4, 2], "x": 198, "y": 0},
+ {"flags": 4, "matrix": [5, 2], "x": 198, "y": 20},
+ {"flags": 4, "matrix": [6, 2], "x": 211, "y": 47},
+ {"flags": 4, "matrix": [4, 3], "x": 211, "y": 0},
+ {"flags": 4, "matrix": [5, 3], "x": 211, "y": 20},
+ {"flags": 4, "matrix": [6, 3], "x": 224, "y": 47},
+ {"flags": 4, "matrix": [4, 4], "x": 224, "y": 7},
+ {"flags": 4, "matrix": [5, 4], "x": 185, "y": 34},
+ {"flags": 4, "matrix": [6, 4], "x": 185, "y": 61},
+ {"flags": 4, "matrix": [7, 2], "x": 175, "y": 77},
+ {"flags": 4, "matrix": [7, 1], "x": 162, "y": 77},
+ {"flags": 4, "matrix": [7, 0], "x": 149, "y": 77}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_split_3x5_3": {
+ "layout": [
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0
+ },
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "4,0",
+ "x": 11.25,
+ "y": 0
+ },
+ {
+ "label": "4,1",
+ "x": 12.25,
+ "y": 0
+ },
+ {
+ "label": "4,2",
+ "x": 13.25,
+ "y": 0
+ },
+ {
+ "label": "4,3",
+ "x": 14.25,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "4,4",
+ "x": 15.25,
+ "y": 0.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "0,0",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "0,1",
+ "x": 7,
+ "y": 1
+ },
+ {
+ "label": "5,0",
+ "x": 11.25,
+ "y": 1
+ },
+ {
+ "label": "5,1",
+ "x": 12.25,
+ "y": 1
+ },
+ {
+ "label": "5,2",
+ "x": 13.25,
+ "y": 1
+ },
+ {
+ "label": "5,3",
+ "x": 14.25,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "5,4",
+ "x": 15.25,
+ "y": 1.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "3,1",
+ "x": 6.5,
+ "y": 2
+ },
+ {
+ "label": "6,0",
+ "x": 11.25,
+ "y": 2
+ },
+ {
+ "label": "6,1",
+ "x": 12.25,
+ "y": 2
+ },
+ {
+ "label": "6,2",
+ "x": 13.25,
+ "y": 2
+ },
+ {
+ "label": "6,3",
+ "x": 14.25,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "6,4",
+ "x": 15.25,
+ "y": 2.5
+ },
+ {
+ "label": "3,2",
+ "x": 4.5,
+ "y": 3.25
+ },
+ {
+ "label": "3,3",
+ "x": 5.5,
+ "y": 3.25
+ },
+ {
+ "label": "3,4",
+ "x": 6.5,
+ "y": 3.25
+ },
+ {
+ "label": "7,0",
+ "x": 9.5,
+ "y": 3.25
+ },
+ {
+ "label": "7,1",
+ "x": 10.5,
+ "y": 3.25
+ },
+ {
+ "label": "7,2",
+ "x": 11.5,
+ "y": 3.25
+ }
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/keymaps/vial/config.h
new file mode 100644
index 00000000000..9cdd51f92e7
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x66, 0x83, 0x08, 0x46, 0xDB, 0x21, 0xDC, 0x9E}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 3 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 3 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..1f18e7e363f
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/keymaps/vial/keymap.c
@@ -0,0 +1,288 @@
+#include QMK_KEYBOARD_H
+#include "3x5_3_track.h"
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+#define _MOUSE 3
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+enum wyld_keycodes {
+ WYLD_AUTO_MS_TOG = SAFE_RANGE
+};
+
+// TRACKBALL IN WALL LAYOUT (STANDARD 3X5_3)
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_split_3x5_3(
+ 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_MUTE, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ RAISE, KC_SPC, KC_TAB, KC_HOME, KC_ENT, LOWER,
+ KC_LALT, KC_GRV
+ ),
+
+ [_LOWER] = LAYOUT_split_3x5_3(
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
+ DPI_RMOD,DPI_MOD,DPI_RST, _______, _______, KC_MUTE, WYLD_AUTO_MS_TOG, KC_MINS, KC_EQL, KC_PIPE, QK_BOOT ,
+ KC_LPRN, KC_RPRN, _______, SNIPING, DRGSCRL, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
+ _______, KC_BTN1, KC_BTN3, _______, _______, _______,
+ _______, KC_BTN2
+ ),
+
+ [_RAISE] = LAYOUT_split_3x5_3(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ QK_BOOT, S(KC_0), KC_LCBR, KC_RCBR, KC_EQL, KC_HOME, KC_MINS, KC_4, KC_5, KC_6, KC_QUOT,
+ KC_LPRN, KC_RPRN, KC_LBRC, KC_RBRC,_______, _______, KC_1, KC_2, KC_3, _______,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______
+ ),
+
+ [_MOUSE] = LAYOUT_split_3x5_3(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, KC_BTN1, KC_BTN2, KC_MUTE, _______, KC_BTN1, KC_BTN2, _______, _______,
+ _______, _______, _______, SNIPING, DRGSCRL, _______, _______, _______, _______, _______,
+ _______, KC_BTN1, KC_BTN3, _______, _______, _______,
+ _______, KC_BTN2
+ )
+};
+
+#ifdef POINTING_DEVICE_COMBINED
+
+static void check_drag(report_mouse_t* mouse_report) {
+ static int16_t scroll_buffer_x = 0;
+ static int16_t scroll_buffer_y = 0;
+
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_X
+ scroll_buffer_x -= mouse_report->x;
+# else
+ scroll_buffer_x += mouse_report->x;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_X
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ scroll_buffer_y -= mouse_report->y;
+# else
+ scroll_buffer_y += mouse_report->y;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ mouse_report->x = 0;
+ mouse_report->y = 0;
+ if (abs(scroll_buffer_x) > 6) {
+ mouse_report->h = scroll_buffer_x > 0 ? 1 : -1;
+ scroll_buffer_x = 0;
+ }
+ if (abs(scroll_buffer_y) > 6) {
+ mouse_report->v = scroll_buffer_y > 0 ? 1 : -1;
+ scroll_buffer_y = 0;
+ }
+}
+
+report_mouse_t pointing_device_task_combined_user(report_mouse_t left_report, report_mouse_t right_report) {
+ check_drag(&left_report); // updated in trackball.c
+ return pointing_device_combine_reports(left_report, right_report);
+}
+#endif
+
+
+
+
+void pointing_device_init_user(void) {
+#ifdef POINTING_DEVICE_AUTO_MOUSE_ENABLE
+ set_auto_mouse_enable(true);
+ set_auto_mouse_enable(false);
+#endif
+#ifdef POINTING_DEVICE_COMBINED
+ pointing_device_set_cpi_on_side(true, CHARYBDIS_DRAGSCROLL_DPI); // LEFT
+ pointing_device_set_cpi_on_side(false, 2000); // RIGHT
+#endif// always required before the auto mouse feature will work
+}
+
+#ifdef POINTING_DEVICE_AUTO_MOUSE_ENABLE
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case WYLD_AUTO_MS_TOG:
+ if (record->event.pressed) {
+ set_auto_mouse_enable(!get_auto_mouse_enable());
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+#endif
+
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_left()) {
+ return OLED_ROTATION_270;
+ }
+ return OLED_ROTATION_0;
+}
+
+static const char PROGMEM wylderbuilds[] = {
+ // 'dark wylderbuilds_oled_name', 128x32
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40,
+ 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x20, 0x60,
+ 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x60, 0x60,
+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0,
+ 0x00, 0x00, 0xc1, 0xc1, 0x01, 0x01, 0xf1, 0x11, 0x01, 0x01, 0x01, 0x31, 0x60, 0xc0, 0x80, 0xc0,
+ 0xf0, 0x10, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0,
+ 0x00, 0x01, 0x03, 0x9e, 0xf8, 0x00, 0x00, 0x20, 0xe0, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0xf0, 0x30, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x98, 0xf0, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x00, 0x70, 0xfe, 0x03, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00,
+ 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x11, 0xf1, 0x11, 0x33, 0x63, 0xc3,
+ 0x83, 0x01, 0x01, 0xc1, 0xe1, 0x31, 0x11, 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,
+ 0x1f, 0x7c, 0xff, 0x07, 0x7c, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7f, 0xff,
+ 0x60, 0x30, 0x18, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xf2, 0x82, 0x02, 0x80, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x7f, 0x0e, 0x1b, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0x81, 0xc1, 0x63,
+ 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00,
+ 0x00, 0x1f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x60, 0x30, 0x1f,
+ 0x07, 0x00, 0x00, 0x01, 0x43, 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static void render_wylderbuilds(void) {
+ oled_write_raw_P(wylderbuilds, sizeof(wylderbuilds));
+}
+
+bool oled_task_user(void) {
+ oled_set_cursor(0, 3);
+ if (is_keyboard_left()) {
+// oled_write_P(PSTR("Layer\n"), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ oled_write_P(PSTR(" BASE\n"), false);
+ break;
+ case _LOWER:
+ oled_write_P(PSTR("LOWER\n"), false);
+ break;
+ case _RAISE:
+ oled_write_P(PSTR("RAISE\n"), false);
+ break;
+ case _MOUSE:
+ oled_write_P(PSTR("MOUSE\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+ oled_set_cursor(2, 7);
+ oled_write_P(PSTR("WPM "), false);
+ oled_set_cursor(1, 8);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 9);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+ } else {
+ // write WPM to right OLED
+ oled_set_cursor(0, 0);
+ render_wylderbuilds();
+ oled_scroll_left();
+ }
+
+ return false;
+}
+#endif
+
+#if defined(ENCODER_MAP_ENABLE)
+// TWO ENCODERS
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_QWERTY] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_LOWER] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_RAISE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }
+ [_MOUSE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }
+};
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+const rgblight_segment_t PROGMEM querty_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {12, 3, HSV_RED}, // Light 4 LEDs, starting with LED 6
+ {21, 3, HSV_RED} // Light 4 LEDs, starting with LED 6
+);
+const rgblight_segment_t PROGMEM lower_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {12, 3, HSV_BLUE},
+ {21, 3, HSV_BLUE}
+);
+const rgblight_segment_t PROGMEM raise_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {12, 3, HSV_YELLOW},
+ {21, 3, HSV_YELLOW}
+);
+
+const rgblight_segment_t PROGMEM mouse_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {12, 3, HSV_GREEN},
+ {21, 3, HSV_GREEN}
+);
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ querty_layer, // Overrides caps lock layer
+ lower_layer, // Overrides other layers
+ raise_layer, // Overrides other layers
+ mouse_layer // Overrides other layers
+);
+
+//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(0, layer_state_cmp(state, _QWERTY));
+ return state;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(1, layer_state_cmp(state, _LOWER));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _RAISE));
+ return state;
+}
+
+
+#endif
+
+// rgblight_enable();
+
+
+void keyboard_post_init_user(void) {
+#ifdef RGBLIGHT_ENABLE
+ rgblight_layers = my_rgb_layers;
+// rgblight_layers = my_rgb_layers;
+// rgblight_enable_noeeprom(); // Enables RGB, without saving settings
+// rgblight_sethsv_noeeprom_cyan();
+// rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
+#endif
+
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+ debug_keyboard=true;
+ debug_mouse=true;
+#else
+ debug_enable=false;
+ debug_matrix=false;
+ debug_keyboard=false;
+ debug_mouse=false;
+#endif
+}
+
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..d1c35cfd60d
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/keymaps/vial/rules.mk
@@ -0,0 +1,9 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/keymaps/vial/vial.json
new file mode 100644
index 00000000000..0e9791687fc
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/keymaps/vial/vial.json
@@ -0,0 +1,123 @@
+{
+ "matrix": {
+ "rows": 8,
+ "cols": 5
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 3x5 Dactyl Manuform Wyld Track Encoder"
+ },
+ [
+ {
+ "x": 2
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 5.25
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ "4,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ {
+ "x": 13.25
+ },
+ "4,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 3.25
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ {
+ "x": 13.25
+ },
+ "5,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ {
+ "x": 0.5
+ },
+ "3,1",
+ {
+ "x": 3.75
+ },
+ "6,0",
+ {
+ "n": true
+ },
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ {
+ "x": 13.25
+ },
+ "6,4"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 4.5
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ {
+ "x": 2
+ },
+ "7,0",
+ "7,1",
+ "7,2"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/mcuconf.h b/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/rules.mk b/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/rules.mk
new file mode 100644
index 00000000000..7868e7e38a3
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/rules.mk
@@ -0,0 +1,9 @@
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+
+ENCODER_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+
+#OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/wylderbuilds-3x5-dactyl-manuform-wyld-track-encoder.json b/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/wylderbuilds-3x5-dactyl-manuform-wyld-track-encoder.json
new file mode 100644
index 00000000000..d87d6eb9163
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/wylderbuilds-3x5-dactyl-manuform-wyld-track-encoder.json
@@ -0,0 +1,115 @@
+[
+ {
+ "name": "Wylderbuilds 3x5 Dactyl Manuform Wyld Track Encoder"
+ },
+ [
+ {
+ "x": 2
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 5.25
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ "4,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ {
+ "x": 13.25
+ },
+ "4,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 3.25
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ {
+ "x": 13.25
+ },
+ "5,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ {
+ "x": 0.5
+ },
+ "3,1",
+ {
+ "x": 3.75
+ },
+ "6,0",
+ {
+ "n": true
+ },
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ {
+ "x": 13.25
+ },
+ "6,4"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 4.5
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ {
+ "x": 2
+ },
+ "7,0",
+ "7,1",
+ "7,2"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/wylderbuilds-3x5_3_track.json b/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/wylderbuilds-3x5_3_track.json
new file mode 100644
index 00000000000..865ca723ba2
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/wylderbuilds-3x5_3_track.json
@@ -0,0 +1,123 @@
+[
+ {
+ "name": "Wylderbuilds 3x5_3_track"
+ },
+ [
+ {
+ "x": 2
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 5.25
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ "4,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ {
+ "x": 13.25
+ },
+ "4,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ {
+ "x": 5.25
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ {
+ "x": 13.25
+ },
+ "5,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ {
+ "x": 5.25
+ },
+ "6,0",
+ {
+ "n": true
+ },
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ {
+ "x": 13.25
+ },
+ "6,4"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -0.75,
+ "x": 4.5
+ },
+ "3,2",
+ "3,3",
+ "3,4"
+ ],
+ [
+ {
+ "r": -7,
+ "x": 8.75
+ },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne"
+ ],
+ [
+ {
+ "x": 9.25
+ },
+ "7,0",
+ {
+ "x": 0.25
+ },
+ "7,1",
+ "7,2"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/wylderbuilds-3x5_3_track_no_encoder.json b/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/wylderbuilds-3x5_3_track_no_encoder.json
new file mode 100644
index 00000000000..bb790d05fb2
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/wylderbuilds-3x5_3_track_no_encoder.json
@@ -0,0 +1,114 @@
+[
+ {
+ "name": "Wylderbuilds 3x5_3_track"
+ },
+ [
+ {
+ "x": 2
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 5.25
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ "4,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ {
+ "x": 13.25
+ },
+ "4,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ {
+ "x": 5.25
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ {
+ "x": 13.25
+ },
+ "5,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ {
+ "x": 5.25
+ },
+ "6,0",
+ {
+ "n": true
+ },
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ {
+ "x": 13.25
+ },
+ "6,4"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -0.75,
+ "x": 4.5
+ },
+ "3,2",
+ "3,3",
+ "3,4"
+ ],
+ [
+ {
+ "r": -7,
+ "y": 1,
+ "x": 9.5
+ },
+ "7,0",
+ "7,1",
+ "7,2"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/wylderbuilds-3x5_wyld_mini_track.json b/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/wylderbuilds-3x5_wyld_mini_track.json
new file mode 100644
index 00000000000..751c8898e0f
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_3_track/wylderbuilds-3x5_wyld_mini_track.json
@@ -0,0 +1,116 @@
+[
+ {
+ "name": "Wylderbuilds 3x5_wyld_mini_track"
+ },
+ [
+ {
+ "x": 2
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 5.25
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ "4,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ {
+ "x": 13.25
+ },
+ "4,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ {
+ "x": 5.25
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ {
+ "x": 13.25
+ },
+ "5,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ {
+ "x": 5.25
+ },
+ "6,0",
+ {
+ "n": true
+ },
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ {
+ "x": 13.25
+ },
+ "6,4"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 4.5
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ {
+ "x": 2
+ },
+ "7,0",
+ "7,1",
+ "7,2"
+ ],
+ [
+ {
+ "x": 5.5
+ },
+ "3,0",
+ "3,1"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_dual_wyld_track/3x5_dual_wyld_track.c b/keyboards/handwired/wylderbuilds/trackball/3x5_dual_wyld_track/3x5_dual_wyld_track.c
new file mode 100644
index 00000000000..da010811009
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_dual_wyld_track/3x5_dual_wyld_track.c
@@ -0,0 +1 @@
+#include "3x5_dual_wyld_track.h"
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_dual_wyld_track/3x5_dual_wyld_track.h b/keyboards/handwired/wylderbuilds/trackball/3x5_dual_wyld_track/3x5_dual_wyld_track.h
new file mode 100644
index 00000000000..f0003f80e2c
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_dual_wyld_track/3x5_dual_wyld_track.h
@@ -0,0 +1,49 @@
+#pragma once
+
+#include "trackball.h"
+
+#define XXX KC_NO
+
+// MINI AND THREE KEY
+#define LAYOUT_split_3x5_3( \
+ L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \
+ L10, L11, L12, L13, L14, L31, R10, R11, R12, R13, R14, \
+ L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \
+ L32, L33, L34, R30, R31, R32 \
+) { \
+ { L00, L01, L02, L03, L04 }, \
+ { L10, L11, L12, L13, L14 }, \
+ { L20, L21, L22, L23, L24 }, \
+ { XXX, L31, L32, L33, L34 }, \
+ { R00, R01, R02, R03, R04 }, \
+ { R10, R11, R12, R13, R14 }, \
+ { R20, R21, R22, R23, R24 }, \
+ { R30, R31, R32, XXX, XXX } \
+}
+
+/* STANDARD LAYOUT WITH SKREE CLAW CONFIG
+#define LAYOUT_5x6( \
+ L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, \
+ L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, \
+ L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, \
+ L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, \
+ L43, L44, R42, R43, \
+ L53, L52, R56, \
+ L55, L51, R55, \
+ L54, L50, R53, R54 \
+) { \
+ { XXX, L01, L02, L03, L04, L05, L06 }, \
+ { XXX, L11, L12, L13, L14, L15, L16 }, \
+ { XXX, L21, L22, L23, L24, L25, L26 }, \
+ { XXX, L31, L32, L33, L34, L35, L36 }, \
+ { XXX, XXX, L43, L44, XXX, XXX, XXX }, \
+ { L50, L51, L52, L53, L54, L55, XXX }, \
+\
+ { R00, R01, R02, R03, R04, R05, XXX }, \
+ { R10, R11, R12, R13, R14, R15, XXX }, \
+ { R20, R21, R22, R23, R24, R25, XXX }, \
+ { R30, R31, R32, R33, R34, R35, XXX }, \
+ { XXX, XXX, R42, R43, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, R53, R54, R55, R56 } \
+}
+*/
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_dual_wyld_track/config.h b/keyboards/handwired/wylderbuilds/trackball/3x5_dual_wyld_track/config.h
new file mode 100644
index 00000000000..bc8d6e612a0
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_dual_wyld_track/config.h
@@ -0,0 +1,147 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+//#include "config_common.h"
+// Basic Config
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+
+
+#define USE_SERIAL
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+#define SPLIT_LAYER_STATE_ENABLE
+
+
+#define USE_SERIAL
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+#define SERIAL_USART_PIN_SWAP
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Columns are doubled-up
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 5
+
+#define MATRIX_COL_PINS { GP7, GP6, GP5, GP4, GP3 }
+//#define MATRIX_COL_PINS_RIGHT { GP8, GP7, GP6, GP5, GP4, GP3, GP2 }
+#define MATRIX_ROW_PINS { GP12, GP11, GP10, GP9 }
+// #define MATRIX_ROW_PINS_RIGHT { GP12, GP11, GP13, GP9 }
+
+#define DIODE_DIRECTION COL2ROW
+
+
+#define POINTING_DEVICE_COMBINED
+#define POINTING_DEVICE_ROTATION_90
+#define ROTATIONAL_TRANSFORM_ANGLE -45 // TESTING RIGHT SHIFTED FROM -35 TO -45 TO TEST LEFT
+#define POINTING_DEVICE_INVERT_Y_RIGHT
+#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_INVERT_X
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x02
+
+#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+#define POINTING_DEVICE_AUTO_MOUSE_ENABLE
+// only required if not setting mouse layer elsewhere
+#define AUTO_MOUSE_DEFAULT_LAYER 3
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 4
+
+//#define CHARYBDIS_MINIMUM_DEFAULT_DPI 1200
+//#define CHARYBDIS_DEFAULT_DPI_CONFIG_STEP 400
+//#define CHARYBDIS_MINIMUM_SNIPING_DPI 400
+//#define CHARYBDIS_SNIPING_DPI_CONFIG_STEP 200
+
+//// Rotary Encoder ////
+//#define ENCODERS_PAD_A { }
+//#define ENCODERS_PAD_B { }
+//#define ENCODER_RESOLUTIONS { }
+
+#ifdef ENCODER_ENABLE
+#define ENCODERS_PAD_A { GP27 }
+#define ENCODERS_PAD_B { GP22 }
+#define ENCODER_RESOLUTIONS { 2 }
+#define ENCODERS_PAD_A_RIGHT { }
+#define ENCODERS_PAD_B_RIGHT { }
+#define ENCODER_RESOLUTIONS_RIGHT { }
+#endif
+
+//// Sensor Notes ////
+//// Pi Pico pins ////
+// 3V3 -- Power (not 3v3_EN!)
+// GP21 -- CS pin
+// GP20 -- MISO pin
+// GP19 -- MOSI pin
+// GP18 -- SCK pin clock
+// GND -- GND
+
+// WS2812 RGB LED strip input and number of LEDs
+//#ifdef RGBLIGHT_ENABLE
+//#define RGB_DI_PIN GP17
+//#define RGBLED_NUM 34
+////#define DRIVER_LED_TOTAL 34
+//#define RGBLED_SPLIT { 17, 17 }
+//#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+//#define NOP_FUDGE 0.4
+//#endif
+
+//// OLED Pins and Driver
+// #define SPLIT_LED_ENABLE
+
+//// OLED Pins and Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD0
+#define I2C1_SDA_PIN GP16
+#define I2C1_SCL_PIN GP17
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_MODS_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+#ifdef RGB_MATRIX_ENABLE
+
+# define RGB_MATRIX_LED_COUNT 36
+# define WS2812_PIO_USE_PIO1 // Force the usage of PIO1 peripheral, by default the WS2812 implementation uses the PIO0 peripheral
+# define SPLIT_TRANSPORT_MIRROR
+# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_REACTIVE // Sets the default mode, if none has been set
+# define RGB_MATRIX_DEFAULT_HUE 33 // Sets the default hue value, if none has been set
+# define RGB_MATRIX_DEFAULT_SAT 255 // Sets the default saturation value, if none has been set
+# define RGB_MATRIX_DEFAULT_SPD 50
+# define WS2812_DI_PIN GP28 // can use trackball jack if not used
+# define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
+# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# define RGB_MATRIX_KEYPRESSES
+# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define NOP_FUDGE 0.4 // may not be needed if ws driver loaded
+#endif
+
+// Misc settings
+// 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
+// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_dual_wyld_track/info.json b/keyboards/handwired/wylderbuilds/trackball/3x5_dual_wyld_track/info.json
new file mode 100644
index 00000000000..cc3070100bb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_dual_wyld_track/info.json
@@ -0,0 +1,603 @@
+{
+ "keyboard_name": "Dactyl-Manuform 5x6 Track (5x6_track)",
+ "manufacturer": "Wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "bootloader": "rp2040",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0212",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 8,
+ "cols": 5
+ },
+ "ws2812": {
+ "pin": "GP28",
+ "driver": "vendor"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true,
+ "encoder": true
+ },
+ "matrix_size": {
+ "cols": 5,
+ "rows": 8
+ },
+ "rgb_matrix": {
+ "driver": "ws2812",
+ "max_brightness": 120,
+ "animations": {
+ "alpha_mods": true,
+ "breathing": true,
+ "colorband_pinwheel_sat": true,
+ "colorband_pinwheel_val": true,
+ "colorband_sat": true,
+ "colorband_spiral_sat": true,
+ "colorband_spiral_val": true,
+ "colorband_val": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_out_in": true,
+ "cycle_out_in_dual": true,
+ "cycle_pinwheel": true,
+ "cycle_spiral": true,
+ "cycle_up_down": true,
+ "digital_rain": true,
+ "dual_beacon": true,
+ "gradient_left_right": true,
+ "gradient_up_down": true,
+ "hue_breathing": true,
+ "hue_pendulum": true,
+ "hue_wave": true,
+ "jellybean_raindrops": true,
+ "pixel_flow": true,
+ "pixel_fractal": true,
+ "pixel_rain": true,
+ "rainbow_beacon": true,
+ "rainbow_moving_chevron": true,
+ "rainbow_pinwheels": true,
+ "raindrops": true,
+ "solid_color": true,
+ "solid_reactive": true,
+ "solid_reactive_cross": true,
+ "solid_reactive_nexus": true,
+ "solid_reactive_simple": true,
+ "solid_reactive_wide": true,
+ "solid_splash": true,
+ "splash": true,
+ "typing_heatmap": true
+ },
+ "split_count": [
+ 18,
+ 18
+ ],
+ "layout": [
+ {
+ "flags": 4,
+ "matrix": [
+ 0,
+ 4
+ ],
+ "x": 78,
+ "y": 0
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 1,
+ 4
+ ],
+ "x": 78,
+ "y": 20
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 2,
+ 4
+ ],
+ "x": 91,
+ "y": 47
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 0,
+ 3
+ ],
+ "x": 65,
+ "y": 0
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 1,
+ 3
+ ],
+ "x": 65,
+ "y": 20
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 2,
+ 3
+ ],
+ "x": 65,
+ "y": 47
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 0,
+ 2
+ ],
+ "x": 52,
+ "y": 0
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 1,
+ 2
+ ],
+ "x": 52,
+ "y": 20
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 2,
+ 2
+ ],
+ "x": 52,
+ "y": 47
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 0,
+ 1
+ ],
+ "x": 39,
+ "y": 0
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 1,
+ 1
+ ],
+ "x": 39,
+ "y": 20
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 2,
+ 1
+ ],
+ "x": 39,
+ "y": 47
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 0,
+ 0
+ ],
+ "x": 26,
+ "y": 7
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 1,
+ 0
+ ],
+ "x": 13,
+ "y": 34
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 2,
+ 0
+ ],
+ "x": 13,
+ "y": 61
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 3,
+ 2
+ ],
+ "x": 71,
+ "y": 77
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 3,
+ 3
+ ],
+ "x": 84,
+ "y": 77
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 3,
+ 4
+ ],
+ "x": 97,
+ "y": 77
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 4,
+ 0
+ ],
+ "x": 172,
+ "y": 0
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 5,
+ 0
+ ],
+ "x": 172,
+ "y": 20
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 6,
+ 0
+ ],
+ "x": 172,
+ "y": 47
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 4,
+ 1
+ ],
+ "x": 185,
+ "y": 0
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 5,
+ 1
+ ],
+ "x": 185,
+ "y": 20
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 6,
+ 1
+ ],
+ "x": 198,
+ "y": 47
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 4,
+ 2
+ ],
+ "x": 198,
+ "y": 0
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 5,
+ 2
+ ],
+ "x": 198,
+ "y": 20
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 6,
+ 2
+ ],
+ "x": 211,
+ "y": 47
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 4,
+ 3
+ ],
+ "x": 211,
+ "y": 0
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 5,
+ 3
+ ],
+ "x": 211,
+ "y": 20
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 6,
+ 3
+ ],
+ "x": 224,
+ "y": 47
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 4,
+ 4
+ ],
+ "x": 224,
+ "y": 7
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 5,
+ 4
+ ],
+ "x": 185,
+ "y": 34
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 6,
+ 4
+ ],
+ "x": 185,
+ "y": 61
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 7,
+ 2
+ ],
+ "x": 175,
+ "y": 77
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 7,
+ 1
+ ],
+ "x": 162,
+ "y": 77
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 7,
+ 0
+ ],
+ "x": 149,
+ "y": 77
+ }
+ ]
+ },
+ "layouts": {
+ "LAYOUT_split_3x5_3": {
+ "layout": [
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0
+ },
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "4,0",
+ "x": 11.25,
+ "y": 0
+ },
+ {
+ "label": "4,1",
+ "x": 12.25,
+ "y": 0
+ },
+ {
+ "label": "4,2",
+ "x": 13.25,
+ "y": 0
+ },
+ {
+ "label": "4,3",
+ "x": 14.25,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "4,4",
+ "x": 15.25,
+ "y": 0.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "5,0",
+ "x": 11.25,
+ "y": 1
+ },
+ {
+ "label": "5,1",
+ "x": 12.25,
+ "y": 1
+ },
+ {
+ "label": "5,2",
+ "x": 13.25,
+ "y": 1
+ },
+ {
+ "label": "5,3",
+ "x": 14.25,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "5,4",
+ "x": 15.25,
+ "y": 1.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "3,1",
+ "x": 6.5,
+ "y": 2
+ },
+ {
+ "label": "6,0",
+ "x": 11.25,
+ "y": 2
+ },
+ {
+ "label": "6,1",
+ "x": 12.25,
+ "y": 2
+ },
+ {
+ "label": "6,2",
+ "x": 13.25,
+ "y": 2
+ },
+ {
+ "label": "6,3",
+ "x": 14.25,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "6,4",
+ "x": 15.25,
+ "y": 2.5
+ },
+ {
+ "label": "3,2",
+ "x": 4.5,
+ "y": 3.25
+ },
+ {
+ "label": "3,3",
+ "x": 5.5,
+ "y": 3.25
+ },
+ {
+ "label": "3,4",
+ "x": 6.5,
+ "y": 3.25
+ },
+ {
+ "label": "7,0",
+ "x": 9.5,
+ "y": 3.25
+ },
+ {
+ "label": "7,1",
+ "x": 10.5,
+ "y": 3.25
+ },
+ {
+ "label": "7,2",
+ "x": 11.5,
+ "y": 3.25
+ }
+ ]
+ }
+ }
+}
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_dual_wyld_track/keymaps/default/keymap.c b/keyboards/handwired/wylderbuilds/trackball/3x5_dual_wyld_track/keymaps/default/keymap.c
new file mode 100644
index 00000000000..50288c38948
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_dual_wyld_track/keymaps/default/keymap.c
@@ -0,0 +1,118 @@
+#include QMK_KEYBOARD_H
+
+#define _BASE 0
+#define _NAV 1
+#define _SYST 2
+#define _MOUSE 3 //layer for mouse functions
+
+// Macros
+#define TASK LCTL(LSFT(KC_ESC))
+#define TAB_R LCTL(KC_TAB)
+#define TAB_L LCTL(LSFT(KC_TAB))
+#define TAB_RO LCTL(LSFT(KC_T))
+#define CAD LCTL(LALT(KC_DEL))
+#define IAD LCTL(LALT(KC_INS))
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_BASE] = LAYOUT_5x7(
+ // left hand // right hand
+ LT(_SYST, 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, 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_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(_SYST),
+ KC_APP, KC_LGUI, MO(_NAV), TG(_MOUSE),
+ KC_LALT, LT(_NAV, KC_SPC), KC_SPC,
+ KC_BTN3, KC_BTN1, KC_WFWD,
+ _______, _______, _______, KC_WBAK),
+
+ [_NAV] = LAYOUT_5x7(
+ // left hand // right hand
+ KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC,
+ _______, _______, _______, LCTL(LSFT(KC_E)), _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______, _______,
+ _______, LCTL(KC_A), LCTL(KC_S), _______, _______, _______, KC_PGUP, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______,
+ _______, KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, _______, KC_PGDN, TAB_L, TAB_R, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+ [_SYST] = LAYOUT_5x7(
+ // left hand // right hand
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______,
+ _______, KC_INS, KC_PAUS, _______, IAD, CAD, _______, _______, _______, _______, _______, _______, _______,
+ KC_CAPS, KC_NUM, KC_SCRL, _______, _______, _______, _______, _______, _______, KC_MSTP, KC_VOLD, KC_VOLU, KC_MUTE,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, QK_BOOT, EE_CLR,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+
+ [_MOUSE] = LAYOUT_5x7(
+ // left hand // right hand
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+};
+
+
+//void keyboard_post_init_user(void) {
+// // Customise these values to desired behaviour
+// debug_enable=true;
+// debug_matrix=true;
+// debug_keyboard=true;
+// debug_mouse=true;
+//}
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_NAV] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_SYST] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_MOUSE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+};
+#endif
+
+#ifdef OLED_ENABLE
+bool oled_task_user(void) {
+ // Host Keyboard Layer Status
+ oled_write_P(PSTR("Layer: "), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _BASE:
+ oled_write_P(PSTR("Base\n"), false);
+ break;
+ case _NAV:
+ oled_write_P(PSTR("Nav\n"), false);
+ break;
+ case _SYST:
+ oled_write_P(PSTR("System\n"), false);
+ break;
+ case _MOUSE:
+ oled_write_P(PSTR("Mouse\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+
+ // Host Keyboard LED Status
+ led_t led_state = host_keyboard_led_state();
+ oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
+
+ return false;
+}
+#endif
+
+#define imageWidth 128
+#define imageHeight 36
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_dual_wyld_track/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/3x5_dual_wyld_track/keymaps/vial/config.h
new file mode 100644
index 00000000000..b069940e73a
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_dual_wyld_track/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x5A, 0xD7, 0xFC, 0x1B, 0x2E, 0xD2, 0x63, 0x01}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 5 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 5 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_dual_wyld_track/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/3x5_dual_wyld_track/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..85f55f1d939
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_dual_wyld_track/keymaps/vial/keymap.c
@@ -0,0 +1,303 @@
+#include QMK_KEYBOARD_H
+#include "3x5_dual_wyld_track.h"
+
+//#define _WORKMAN 0
+#define _QWERTY 0
+//#define _COLEMAK 1
+#define _LOWER 1
+#define _RAISE 2
+#define _MOUSE 3
+
+#define QWERTY MO(_QWERTY)
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+//#define TO_COLEMAK TO(_COLEMAK)
+//#define TO_QWERTY TO(_QWERTY)
+
+enum wyld_keycodes {
+ WYLD_AUTO_MS_TOG = SAFE_RANGE
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_split_3x5_3(
+ 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_MUTE, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ RAISE, KC_SPC, KC_TAB, KC_HOME, KC_ENT, LOWER
+ ),
+
+ [_LOWER] = LAYOUT_split_3x5_3(
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
+ DPI_RMOD,DPI_MOD,DPI_RST, _______, _______, KC_HOME, WYLD_AUTO_MS_TOG, KC_MINS, KC_EQL, KC_PIPE, QK_BOOT ,
+ KC_LPRN, KC_RPRN, _______, SNIPING, DRGSCRL, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
+ _______, KC_BTN1, KC_BTN3, _______, _______, _______
+ ),
+
+ [_RAISE] = LAYOUT_split_3x5_3(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ QK_BOOT, S(KC_0), KC_LCBR, KC_RCBR, KC_EQL, KC_MUTE, KC_MINS, KC_4, KC_5, KC_6, KC_QUOT,
+ KC_LPRN, KC_RPRN, KC_LBRC, KC_RBRC,_______, _______, KC_1, KC_2, KC_3, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [_MOUSE] = LAYOUT_split_3x5_3(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, KC_BTN1, KC_BTN2, KC_MUTE, _______, KC_BTN1, KC_BTN2, _______, _______,
+ _______, _______, _______, SNIPING, DRGSCRL, _______, _______, _______, _______, _______,
+ _______, KC_BTN1, KC_BTN3, _______, _______, _______
+ )
+};
+
+#ifdef POINTING_DEVICE_COMBINED
+static void check_drag(report_mouse_t* mouse_report) {
+ static int16_t scroll_buffer_x = 0;
+ static int16_t scroll_buffer_y = 0;
+
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_X
+ scroll_buffer_x -= mouse_report->x;
+# else
+ scroll_buffer_x += mouse_report->x;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_X
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ scroll_buffer_y -= mouse_report->y;
+# else
+ scroll_buffer_y += mouse_report->y;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ mouse_report->x = 0;
+ mouse_report->y = 0;
+ if (abs(scroll_buffer_x) > 6) {
+ mouse_report->h = scroll_buffer_x > 0 ? 1 : -1;
+ scroll_buffer_x = 0;
+ }
+ if (abs(scroll_buffer_y) > 6) {
+ mouse_report->v = scroll_buffer_y > 0 ? 1 : -1;
+ scroll_buffer_y = 0;
+ }
+}
+
+report_mouse_t pointing_device_task_combined_user(report_mouse_t left_report, report_mouse_t right_report) {
+ check_drag(&left_report); // updated in trackball.c
+ return pointing_device_combine_reports(left_report, right_report);
+}
+#endif
+
+#ifdef POINTING_DEVICE_AUTO_MOUSE_ENABLE
+void pointing_device_init_user(void) {
+ set_auto_mouse_enable(true);
+ set_auto_mouse_enable(false);
+}
+
+// Ensures only the pointing device activates mouse layer on dual track builds
+// And also prevents dragscroll from activating it
+bool auto_mouse_activation(report_mouse_t mouse_report) {
+ return mouse_report.x != 0 || mouse_report.y != 0 || mouse_report.buttons;
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case WYLD_AUTO_MS_TOG:
+ if (record->event.pressed) {
+ set_auto_mouse_enable(!get_auto_mouse_enable());
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+#endif
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_QWERTY] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD) },
+ [_LOWER] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_RAISE] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD) },
+ [_MOUSE] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD) }
+//};
+// [_QWERTY] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+// [_LOWER] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+// [_RAISE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+// [_MOUSE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+};
+#endif
+
+//#ifdef ENCODER_ENABLE
+//bool encoder_update_user(uint8_t index, bool clockwise) {
+//===
+// if (clockwise) {
+// tap_code(KC_VOLD);
+// } else {
+// tap_code(KC_VOLU);
+// }
+//
+// return false;
+//}
+//#endif
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_left()) {
+ return OLED_ROTATION_270;
+ }
+#ifdef POINTING_DEVICE_ENABLE
+ return OLED_ROTATION_270;
+#else
+ return OLED_ROTATION_0;
+#endif
+}
+
+#ifndef POINTING_DEVICE_ENABLE
+static const char PROGMEM wylderbuilds[] = {
+ // 'dark wylderbuilds_oled_name', 128x32
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40,
+ 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x20, 0x60,
+ 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x60, 0x60,
+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0,
+ 0x00, 0x00, 0xc1, 0xc1, 0x01, 0x01, 0xf1, 0x11, 0x01, 0x01, 0x01, 0x31, 0x60, 0xc0, 0x80, 0xc0,
+ 0xf0, 0x10, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0,
+ 0x00, 0x01, 0x03, 0x9e, 0xf8, 0x00, 0x00, 0x20, 0xe0, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0xf0, 0x30, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x98, 0xf0, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x00, 0x70, 0xfe, 0x03, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00,
+ 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x11, 0xf1, 0x11, 0x33, 0x63, 0xc3,
+ 0x83, 0x01, 0x01, 0xc1, 0xe1, 0x31, 0x11, 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,
+ 0x1f, 0x7c, 0xff, 0x07, 0x7c, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7f, 0xff,
+ 0x60, 0x30, 0x18, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xf2, 0x82, 0x02, 0x80, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x7f, 0x0e, 0x1b, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0x81, 0xc1, 0x63,
+ 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00,
+ 0x00, 0x1f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x60, 0x30, 0x1f,
+ 0x07, 0x00, 0x00, 0x01, 0x43, 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static void render_wylderbuilds(void) {
+ oled_write_raw_P(wylderbuilds, sizeof(wylderbuilds));
+}
+
+#endif
+
+static char layer_names[5][8] = {
+ " BASE\n",
+ "LOWER\n",
+ "RAISE\n",
+ "MOUSE\n",
+ " XTRA\n"
+ };
+
+bool oled_task_user(void) {
+ char* layer_name = layer_names[get_highest_layer(layer_state)];
+
+ if (is_keyboard_left()) {
+ // oled_write_P(PSTR("Layer\n"), false);
+ oled_set_cursor(0, 3);
+ oled_write_P(PSTR(layer_name), false);
+
+ oled_set_cursor(2, 6);
+ oled_write_P(PSTR("WPM "), false);
+ oled_set_cursor(2, 7);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 9);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+ } else {
+ // write WPM to right OLED
+#ifdef POINTING_DEVICE_ENABLE
+ char* mode = get_mouse_mode_string();
+ uint16_t dpi = get_current_dpi();
+ oled_set_cursor(2, 3);
+ oled_write_P(PSTR("DPI "), false);
+ oled_set_cursor(0, 5);
+ oled_write_P(PSTR(get_u16_str(dpi, ' ')), false);
+ oled_set_cursor(0, 9);
+ oled_write(PSTR(mode), false);
+#else
+ oled_set_cursor(0, 0);
+ render_wylderbuilds();
+ oled_scroll_left();
+#endif
+ }
+
+ return false;
+}
+#endif
+
+
+#ifdef RGBLIGHT_ENABLE
+const rgblight_segment_t PROGMEM querty_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {12, 3, HSV_RED}, // Light 4 LEDs, starting with LED 6
+ {21, 3, HSV_RED} // Light 4 LEDs, starting with LED 6
+);
+//const rgblight_segment_t PROGMEM colemak_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+// {15, 3, HSV_PURPLE}, // Light 4 LEDs, starting with LED 6
+// {33, 3, HSV_PURPLE} // Light 4 LEDs, starting with LED 6
+//);
+const rgblight_segment_t PROGMEM lower_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {12, 3, HSV_BLUE},
+ {21, 3, HSV_BLUE}
+);
+const rgblight_segment_t PROGMEM raise_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {12, 3, HSV_YELLOW},
+ {21, 3, HSV_YELLOW}
+);
+const rgblight_segment_t PROGMEM mouse_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {12, 3, HSV_GREEN},
+ {21, 3, HSV_GREEN}
+);
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ querty_layer, // Overrides caps lock layer
+// colemak_layer,
+ lower_layer, // Overrides other layers
+ raise_layer, // Overrides other layers
+ mouse_layer
+);
+
+layer_state_t default_layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(0, layer_state_cmp(state, _QWERTY));
+ return state;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+// rgblight_set_layer_state(1, layer_state_cmp(state, _COLEMAK));
+ 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, _MOUSE));
+ return state;
+}
+#endif
+
+
+void keyboard_post_init_user(void) {
+#ifdef RGBLIGHT_ENABLE
+ rgblight_layers = my_rgb_layers;
+#endif
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+ debug_keyboard=true;
+ debug_mouse=true;
+#else
+ debug_enable=false;
+ debug_matrix=false;
+ debug_keyboard=false;
+ debug_mouse=false;
+#endif
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_dual_wyld_track/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/3x5_dual_wyld_track/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..d1c35cfd60d
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_dual_wyld_track/keymaps/vial/rules.mk
@@ -0,0 +1,9 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_dual_wyld_track/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/3x5_dual_wyld_track/keymaps/vial/vial.json
new file mode 100644
index 00000000000..53e402216d8
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_dual_wyld_track/keymaps/vial/vial.json
@@ -0,0 +1,126 @@
+{
+ "vendorId": "0x9953",
+ "productId": "0x0155",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 8,
+ "cols": 5
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 3x5 Dactyl Manuform Wyld Track Encoder"
+ },
+ [
+ {
+ "x": 2
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 5.25
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ "4,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ {
+ "x": 13.25
+ },
+ "4,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 3.25
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ {
+ "x": 13.25
+ },
+ "5,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ {
+ "x": 0.5
+ },
+ "3,1",
+ {
+ "x": 3.75
+ },
+ "6,0",
+ {
+ "n": true
+ },
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ {
+ "x": 13.25
+ },
+ "6,4"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 4.5
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ {
+ "x": 2
+ },
+ "7,0",
+ "7,1",
+ "7,2"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_dual_wyld_track/mcuconf.h b/keyboards/handwired/wylderbuilds/trackball/3x5_dual_wyld_track/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_dual_wyld_track/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_dual_wyld_track/rules.mk b/keyboards/handwired/wylderbuilds/trackball/3x5_dual_wyld_track/rules.mk
new file mode 100644
index 00000000000..34a3553a88f
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_dual_wyld_track/rules.mk
@@ -0,0 +1,24 @@
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+#RGBLIGHT_ENABLE = no
+#MOUSEKEY_ENABLE = yes
+CONSOLE_ENABLE = no
+#COMMAND_ENABLE = yes
+#BOOTMAGIC_ENABLE = yes
+#NKRO_ENABLE = yes # Enable N-Key Rollover
+
+RGBLIGHT_ENABLE = no
+#WS2812_DRIVER = vendor
+#SLEEP_LED_ENABLE = no
+
+OLED_ENABLE = no
+#OLED_DRIVER = SSD1306
+WPM_ENABLE = no
+#EXTRAKEY_ENABLE = yes # Audio control and System control
+
+#ENCODER_ENABLE = no
+ENCODER_MAP_ENABLE = yes
+
+#OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_mini_3_track/3x5_mini_3_track.c b/keyboards/handwired/wylderbuilds/trackball/3x5_mini_3_track/3x5_mini_3_track.c
new file mode 100644
index 00000000000..2464185269e
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_mini_3_track/3x5_mini_3_track.c
@@ -0,0 +1,18 @@
+/*
+Copyright 2021 @dlford
+
+This 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 "3x5_mini_3_track.h"
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_mini_3_track/3x5_mini_3_track.h b/keyboards/handwired/wylderbuilds/trackball/3x5_mini_3_track/3x5_mini_3_track.h
new file mode 100644
index 00000000000..f15e7477704
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_mini_3_track/3x5_mini_3_track.h
@@ -0,0 +1,62 @@
+/*
+Copyright 2021 @dlford
+
+This 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
+
+// STANDARD TRACKBALL 3-KEY SOCKET ON RIGHT
+/* #define LAYOUT_split_3x5_3( \
+// L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \
+// L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \
+// L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \
+// L32, L33, L34, R30, \
+// R31, \
+// R32 \
+//) { \
+// { L00, L01, L02, L03, L04 }, \
+// { L10, L11, L12, L13, L14 }, \
+// { L20, L21, L22, L23, L24 }, \
+// { XXX, XXX, L32, L33, L34 }, \
+// { R00, R01, R02, R03, R04 }, \
+// { R10, R11, R12, R13, R14 }, \
+// { R20, R21, R22, R23, R24 }, \
+// { R30, R31, R32, XXX, XXX } \
+//}
+ */
+
+// TRACKBALL IN WALL SETUP
+#define LAYOUT_split_3x5_3( \
+ L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \
+ L10, L11, L12, L13, L14, L35, R35, R10, R11, R12, R13, R14, \
+ L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \
+ L32, L33, L34, R30, R31, R32, \
+ L30, L31 \
+) { \
+ { L00, L01, L02, L03, L04, XXX }, \
+ { L10, L11, L12, L13, L14, XXX }, \
+ { L20, L21, L22, L23, L24, XXX }, \
+ { L30, L31, L32, L33, L34, L35 }, \
+ { R00, R01, R02, R03, R04, XXX }, \
+ { R10, R11, R12, R13, R14, XXX }, \
+ { R20, R21, R22, R23, R24, XXX }, \
+ { R30, R31, R32, XXX, XXX, R35 } \
+}
+
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_mini_3_track/config.h b/keyboards/handwired/wylderbuilds/trackball/3x5_mini_3_track/config.h
new file mode 100644
index 00000000000..537cfd1d6fb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_mini_3_track/config.h
@@ -0,0 +1,142 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+//#include "config_common.h"
+// Basic Config
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+//#define BOOTMAGIC_LITE_ROW 0 // TOP RIGHT KEY ON RIGHT SIDE, TOP LEFT KEY ON LEFT SIDE
+//#define BOOTMAGIC_LITE_COLUMN 4
+
+//#define PRODUCT_ID 0x0002
+
+#define USE_SERIAL
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+
+#define SPLIT_LAYER_STATE_ENABLE
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+#define SERIAL_USART_PIN_SWAP
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Columns are doubled-up
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 6
+
+//#define MATRIX_COL_PINS_RIGHT { GP6, GP5, GP4, GP3, GP2 }
+#define MATRIX_COL_PINS { GP6, GP5, GP4, GP3, GP2, GP7 }
+#define MATRIX_ROW_PINS { GP9, GP10, GP11, GP12 }
+//#define MATRIX_COL_PINS_RIGHT { GP6, GP5, GP4, GP3, GP2, GP8 } // Added GP7 so each has 6 columns
+//#define MATRIX_ROW_PINS_RIGHT { GP9, GP10, GP11, GP12, GP13 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define SPLIT_LAYER_STATE_ENABLE
+#define SPLIT_POINTING_ENABLE
+#define POINTING_DEVICE_INVERT_Y
+#define ROTATIONAL_TRANSFORM_ANGLE -25
+#define POINTING_DEVICE_RIGHT
+// #define POINTING_DEVICE_COMBINED
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x03
+
+#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+#define POINTING_DEVICE_AUTO_MOUSE_ENABLE
+// only required if not setting mouse layer elsewhere
+#define AUTO_MOUSE_DEFAULT_LAYER 3
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 4
+
+#ifdef ENCODER_ENABLE
+#define ENCODERS_PAD_A { GP27 }
+#define ENCODERS_PAD_B { GP28 }
+#define ENCODER_RESOLUTIONS { 2 }
+//#define ENCODERS_PAD_A_RIGHT { GP16 }
+//#define ENCODERS_PAD_B_RIGHT { GP17 }
+//#define ENCODER_RESOLUTIONS_RIGHT { 2 }
+#endif
+
+//#define CHARYBDIS_MINIMUM_DEFAULT_DPI 1200
+//#define CHARYBDIS_DEFAULT_DPI_CONFIG_STEP 200
+//#define CHARYBDIS_MINIMUM_SNIPING_DPI 400
+//#define CHARYBDIS_SNIPING_DPI_CONFIG_STEP 200
+
+//// Rotary Encoder ////
+// GP21
+// GP22
+
+//// Sensor Notes ////
+//// Pi Pico pins ////
+// 3V3 -- Power (not 3v3_EN!)
+// GP21 -- CS pin
+// GP20 -- MISO pin
+// GP19 -- MOSI pin
+// GP18 -- SCK pin clock
+// GND -- GND
+
+#ifdef RGBLIGHT_ENABLE
+#define WS2812_PIO_USE_PIO1
+//#define WS2812_PIO_USE_PIO1
+//#define WS2812_PIO_USE_PIO1
+#define RGBLIGHT_LAYERS
+#define WS2812_DI_PIN GP22 // can use trackball jack if not used
+//#define WS2812_EXTERNAL_PULLUP
+#define RGBLED_NUM 24
+//#define DRIVER_LED_TOTAL 34
+#define RGBLED_SPLIT { 12, 12 }
+#define RGBLIGHT_SPLIT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 17
+#define RGBLIGHT_LIMIT_VAL 100
+//#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+#define NOP_FUDGE 0.4 // may not be needed if ws driver loaded
+#endif
+
+//// OLED Pins and Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD0
+#define I2C1_SDA_PIN GP16
+#define I2C1_SCL_PIN GP17
+// OLED Options
+#define SPLIT_OLED_ENABLE
+//#define SPLIT_MODS_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+// Misc settings
+// 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
+// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_mini_3_track/info.json b/keyboards/handwired/wylderbuilds/trackball/3x5_mini_3_track/info.json
new file mode 100644
index 00000000000..ce371e6469b
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_mini_3_track/info.json
@@ -0,0 +1,238 @@
+{
+ "keyboard_name": "Dactyl-Manuform Wyld Trackball (3x5_mini_3_track)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0212",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 8,
+ "cols": 6
+ },
+ "split": {
+ "enabled": true
+ },
+ "features": {
+ "bootmagic": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": false
+ },
+ "matrix_size": {
+ "cols": 6,
+ "rows": 8
+ },
+ "layouts": {
+ "LAYOUT_split_3x5_3": {
+ "layout": [
+ {
+ "label": "0,1",
+ "x": 1,
+ "y": 0
+ },
+ {
+ "label": "0,2",
+ "x": 2,
+ "y": 0
+ },
+ {
+ "label": "0,3",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "4,0",
+ "x": 10.25,
+ "y": 0
+ },
+ {
+ "label": "4,1",
+ "x": 11.25,
+ "y": 0
+ },
+ {
+ "label": "4,2",
+ "x": 12.25,
+ "y": 0
+ },
+ {
+ "label": "4,3",
+ "x": 13.25,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 0,
+ "y": 0.5
+ },
+ {
+ "label": "4,4",
+ "x": 14.25,
+ "y": 0.5
+ },
+ {
+ "label": "1,1",
+ "x": 1,
+ "y": 1
+ },
+ {
+ "label": "1,2",
+ "x": 2,
+ "y": 1
+ },
+ {
+ "label": "1,3",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "5,0",
+ "x": 10.25,
+ "y": 1
+ },
+ {
+ "label": "5,1",
+ "x": 11.25,
+ "y": 1
+ },
+ {
+ "label": "5,2",
+ "x": 12.25,
+ "y": 1
+ },
+ {
+ "label": "5,3",
+ "x": 13.25,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 0,
+ "y": 1.5
+ },
+ {
+ "label": "5,4",
+ "x": 14.25,
+ "y": 1.5
+ },
+ {
+ "label": "2,1",
+ "x": 1,
+ "y": 2
+ },
+ {
+ "label": "2,2",
+ "x": 2,
+ "y": 2
+ },
+ {
+ "label": "2,3",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "3,5",
+ "x": 5.5,
+ "y": 2
+ },
+ {
+ "label": "7,5",
+ "x": 8.75,
+ "y": 2
+ },
+ {
+ "label": "6,0",
+ "x": 10.25,
+ "y": 2
+ },
+ {
+ "label": "6,1",
+ "x": 11.25,
+ "y": 2
+ },
+ {
+ "label": "6,2",
+ "x": 12.25,
+ "y": 2
+ },
+ {
+ "label": "6,3",
+ "x": 13.25,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 0,
+ "y": 2.5
+ },
+ {
+ "label": "6,4",
+ "x": 14.25,
+ "y": 2.5
+ },
+ {
+ "label": "3,2",
+ "x": 3.5,
+ "y": 3.25
+ },
+ {
+ "label": "3,3",
+ "x": 4.5,
+ "y": 3.25
+ },
+ {
+ "label": "3,4",
+ "x": 5.5,
+ "y": 3.25
+ },
+ {
+ "label": "7,0",
+ "x": 8.5,
+ "y": 3.25
+ },
+ {
+ "label": "7,1",
+ "x": 9.5,
+ "y": 3.25
+ },
+ {
+ "label": "7,2",
+ "x": 10.5,
+ "y": 3.25
+ },
+ {
+ "label": "3,0",
+ "x": 4.5,
+ "y": 4.25
+ },
+ {
+ "label": "3,1",
+ "x": 5.5,
+ "y": 4.25
+ }
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_mini_3_track/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/3x5_mini_3_track/keymaps/vial/config.h
new file mode 100644
index 00000000000..9cdd51f92e7
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_mini_3_track/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x66, 0x83, 0x08, 0x46, 0xDB, 0x21, 0xDC, 0x9E}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 3 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 3 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_mini_3_track/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/3x5_mini_3_track/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..e8756446be8
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_mini_3_track/keymaps/vial/keymap.c
@@ -0,0 +1,299 @@
+#include QMK_KEYBOARD_H
+#include "3x5_mini_3_track.h"
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+#define _MOUSE 3
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+enum wyld_keycodes {
+ WYLD_AUTO_MS_TOG = SAFE_RANGE
+};
+
+// TRACKBALL IN WALL LAYOUT (STANDARD 3X5_3)
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_split_3x5_3(
+ 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_MUTE, KC_HOME, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ RAISE, KC_SPC, KC_BSPC, KC_LCTL, KC_ENT, LOWER,
+ KC_LALT, KC_TAB
+ ),
+
+ [_LOWER] = LAYOUT_split_3x5_3(
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
+ DPI_RMOD,DPI_MOD,DPI_RST, _______, _______, QK_BOOT, _______, WYLD_AUTO_MS_TOG, KC_MINS, KC_EQL, KC_PIPE, QK_BOOT ,
+ KC_LPRN, KC_RPRN, _______, SNIPING, DRGSCRL, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
+ _______, KC_BTN1, KC_BTN3, _______, _______, _______,
+ _______, KC_BTN2
+ ),
+
+ [_RAISE] = LAYOUT_split_3x5_3(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ QK_BOOT, S(KC_0), KC_LCBR, KC_RCBR, KC_EQL, KC_HOME, QK_BOOT, KC_MINS, KC_4, KC_5, KC_6, KC_QUOT,
+ DPI_RMOD,DPI_MOD, DPI_RST,_______,_______, _______, KC_1, KC_2, KC_3, _______,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______
+ ),
+
+ [_MOUSE] = LAYOUT_split_3x5_3(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_BTN2, KC_BTN3, KC_BTN1, KC_BTN2, KC_MUTE, _______,_______, KC_BTN1, KC_BTN3, KC_BTN2, _______,
+ _______, _______, _______, SNIPING, DRGSCRL, _______, _______, _______, _______, _______,
+ _______, KC_BTN1, KC_BTN3, _______, _______, _______,
+ _______, KC_BTN2
+ )
+};
+
+#ifdef POINTING_DEVICE_COMBINED
+
+static void check_drag(report_mouse_t* mouse_report) {
+ static int16_t scroll_buffer_x = 0;
+ static int16_t scroll_buffer_y = 0;
+
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_X
+ scroll_buffer_x -= mouse_report->x;
+# else
+ scroll_buffer_x += mouse_report->x;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_X
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ scroll_buffer_y -= mouse_report->y;
+# else
+ scroll_buffer_y += mouse_report->y;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ mouse_report->x = 0;
+ mouse_report->y = 0;
+ if (abs(scroll_buffer_x) > 6) {
+ mouse_report->h = scroll_buffer_x > 0 ? 1 : -1;
+ scroll_buffer_x = 0;
+ }
+ if (abs(scroll_buffer_y) > 6) {
+ mouse_report->v = scroll_buffer_y > 0 ? 1 : -1;
+ scroll_buffer_y = 0;
+ }
+}
+
+report_mouse_t pointing_device_task_combined_user(report_mouse_t left_report, report_mouse_t right_report) {
+ check_drag(&left_report); // updated in trackball.c
+ return pointing_device_combine_reports(left_report, right_report);
+}
+#endif
+
+
+
+
+void pointing_device_init_user(void) {
+#ifdef POINTING_DEVICE_AUTO_MOUSE_ENABLE
+ set_auto_mouse_enable(true);
+ set_auto_mouse_enable(false);
+#endif
+#ifdef POINTING_DEVICE_COMBINED
+ pointing_device_set_cpi_on_side(true, CHARYBDIS_DRAGSCROLL_DPI); // LEFT
+ pointing_device_set_cpi_on_side(false, 2000); // RIGHT
+#endif// always required before the auto mouse feature will work
+}
+
+#ifdef POINTING_DEVICE_AUTO_MOUSE_ENABLE
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case WYLD_AUTO_MS_TOG:
+ if (record->event.pressed) {
+ set_auto_mouse_enable(!get_auto_mouse_enable());
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+#endif
+
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_left()) {
+ return OLED_ROTATION_270;
+ }
+#ifdef POINTING_DEVICE_ENABLE
+ return OLED_ROTATION_270;
+#else
+ return OLED_ROTATION_0;
+#endif
+}
+
+#ifndef POINTING_DEVICE_ENABLE
+static const char PROGMEM wylderbuilds[] = {
+ // 'dark wylderbuilds_oled_name', 128x32
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40,
+ 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x20, 0x60,
+ 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x60, 0x60,
+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0,
+ 0x00, 0x00, 0xc1, 0xc1, 0x01, 0x01, 0xf1, 0x11, 0x01, 0x01, 0x01, 0x31, 0x60, 0xc0, 0x80, 0xc0,
+ 0xf0, 0x10, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0,
+ 0x00, 0x01, 0x03, 0x9e, 0xf8, 0x00, 0x00, 0x20, 0xe0, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0xf0, 0x30, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x98, 0xf0, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x00, 0x70, 0xfe, 0x03, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00,
+ 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x11, 0xf1, 0x11, 0x33, 0x63, 0xc3,
+ 0x83, 0x01, 0x01, 0xc1, 0xe1, 0x31, 0x11, 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,
+ 0x1f, 0x7c, 0xff, 0x07, 0x7c, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7f, 0xff,
+ 0x60, 0x30, 0x18, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xf2, 0x82, 0x02, 0x80, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x7f, 0x0e, 0x1b, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0x81, 0xc1, 0x63,
+ 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00,
+ 0x00, 0x1f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x60, 0x30, 0x1f,
+ 0x07, 0x00, 0x00, 0x01, 0x43, 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static void render_wylderbuilds(void) {
+ oled_write_raw_P(wylderbuilds, sizeof(wylderbuilds));
+}
+
+#endif
+
+static char layer_names[5][8] = {
+ " BASE\n",
+ "LOWER\n",
+ "RAISE\n",
+ "MOUSE\n",
+ " XTRA\n"
+ };
+
+bool oled_task_user(void) {
+ char* layer_name = layer_names[get_highest_layer(layer_state)];
+
+ if (is_keyboard_left()) {
+ // oled_write_P(PSTR("Layer\n"), false);
+ oled_set_cursor(0, 3);
+ oled_write_P(PSTR(layer_name), false);
+
+ oled_set_cursor(2, 6);
+ oled_write_P(PSTR("WPM "), false);
+ oled_set_cursor(2, 7);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 9);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+ } else {
+ // write WPM to right OLED
+#ifdef POINTING_DEVICE_ENABLE
+ char* mode = get_mouse_mode_string();
+ uint16_t dpi = get_current_dpi();
+ oled_set_cursor(2, 3);
+ oled_write_P(PSTR("DPI "), false);
+ oled_set_cursor(0, 5);
+ oled_write_P(PSTR(get_u16_str(dpi, ' ')), false);
+ oled_set_cursor(0, 9);
+ oled_write(PSTR(mode), false);
+#else
+ oled_set_cursor(0, 0);
+ render_wylderbuilds();
+ oled_scroll_left();
+#endif
+ }
+
+ return false;
+}
+#endif
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_QWERTY] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_LOWER] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_RAISE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_MOUSE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+};
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+const rgblight_segment_t PROGMEM querty_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {12, 3, HSV_RED}, // Light 4 LEDs, starting with LED 6
+ {21, 3, HSV_RED} // Light 4 LEDs, starting with LED 6
+);
+const rgblight_segment_t PROGMEM lower_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {12, 3, HSV_BLUE},
+ {21, 3, HSV_BLUE}
+);
+const rgblight_segment_t PROGMEM raise_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {12, 3, HSV_YELLOW},
+ {21, 3, HSV_YELLOW}
+);
+
+const rgblight_segment_t PROGMEM mouse_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {12, 3, HSV_GREEN},
+ {21, 3, HSV_GREEN}
+);
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ querty_layer, // Overrides caps lock layer
+ lower_layer, // Overrides other layers
+ raise_layer, // Overrides other layers
+ mouse_layer // Overrides other layers
+);
+
+//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(0, layer_state_cmp(state, _QWERTY));
+ return state;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(1, layer_state_cmp(state, _LOWER));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _RAISE));
+ return state;
+}
+
+
+#endif
+
+// rgblight_enable();
+
+
+void keyboard_post_init_user(void) {
+#ifdef RGBLIGHT_ENABLE
+ rgblight_layers = my_rgb_layers;
+// rgblight_layers = my_rgb_layers;
+// rgblight_enable_noeeprom(); // Enables RGB, without saving settings
+// rgblight_sethsv_noeeprom_cyan();
+// rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
+#endif
+
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+ debug_keyboard=true;
+ debug_mouse=true;
+#else
+ debug_enable=false;
+ debug_matrix=false;
+ debug_keyboard=false;
+ debug_mouse=false;
+#endif
+}
+
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_mini_3_track/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/3x5_mini_3_track/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..0068b0a5eeb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_mini_3_track/keymaps/vial/rules.mk
@@ -0,0 +1,9 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = no
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_mini_3_track/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/3x5_mini_3_track/keymaps/vial/vial.json
new file mode 100644
index 00000000000..a2c1e287dd4
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_mini_3_track/keymaps/vial/vial.json
@@ -0,0 +1,133 @@
+{
+ "matrix": {
+ "rows": 8,
+ "cols": 6
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 3x5 Mini 3 Track"
+ },
+ [
+ {
+ "x": 1
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 5.25
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ "4,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "0,0",
+ {
+ "x": 13.25
+ },
+ "4,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 1.25
+ },
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne",
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "1,0",
+ {
+ "x": 13.25
+ },
+ "5,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ {
+ "x": 0.5
+ },
+ "3,5",
+ {
+ "x": 2.25
+ },
+ "7,5",
+ {
+ "x": 0.5
+ },
+ "6,0",
+ {
+ "n": true
+ },
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "2,0",
+ {
+ "x": 13.25
+ },
+ "6,4"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 3.5
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ {
+ "x": 2
+ },
+ "7,0",
+ "7,1",
+ "7,2"
+ ],
+ [
+ {
+ "x": 4.5
+ },
+ "3,0",
+ "3,1"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_mini_3_track/mcuconf.h b/keyboards/handwired/wylderbuilds/trackball/3x5_mini_3_track/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_mini_3_track/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_mini_3_track/rules.mk b/keyboards/handwired/wylderbuilds/trackball/3x5_mini_3_track/rules.mk
new file mode 100644
index 00000000000..651ddd6c070
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_mini_3_track/rules.mk
@@ -0,0 +1,23 @@
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+
+MOUSEKEY_ENABLE = yes
+CONSOLE_ENABLE = no
+#COMMAND_ENABLE = yes
+BOOTMAGIC_ENABLE = yes
+OLED_ENABLE = yes #OLED_DRIVER = SSD1306
+WPM_ENABLE = yes
+EXTRAKEY_ENABLE = yes # Audio control and System control
+NKRO_ENABLE = yes # Enable N-Key Rollover
+ENCODER_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+
+RGBLIGHT_ENABLE = no
+WS2812_DRIVER = vendor
+SLEEP_LED_ENABLE = no
+
+OPT_DEFS += -DHAL_USE_I2C=TRUE
+
+#OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_mini_3_track/wylderbuilds-3x5-mini-3-track.json b/keyboards/handwired/wylderbuilds/trackball/3x5_mini_3_track/wylderbuilds-3x5-mini-3-track.json
new file mode 100644
index 00000000000..992083e4c15
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_mini_3_track/wylderbuilds-3x5-mini-3-track.json
@@ -0,0 +1,125 @@
+[
+ {
+ "name": "Wylderbuilds 3x5 Mini 3 Track"
+ },
+ [
+ {
+ "x": 1
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 5.25
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ "4,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "0,0",
+ {
+ "x": 13.25
+ },
+ "4,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 1.25
+ },
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne",
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "1,0",
+ {
+ "x": 13.25
+ },
+ "5,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ {
+ "x": 0.5
+ },
+ "3,5",
+ {
+ "x": 2.25
+ },
+ "7,5",
+ {
+ "x": 0.5
+ },
+ "6,0",
+ {
+ "n": true
+ },
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "2,0",
+ {
+ "x": 13.25
+ },
+ "6,4"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 3.5
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ {
+ "x": 2
+ },
+ "7,0",
+ "7,1",
+ "7,2"
+ ],
+ [
+ {
+ "x": 4.5
+ },
+ "3,0",
+ "3,1"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_track/3x5_track.c b/keyboards/handwired/wylderbuilds/trackball/3x5_track/3x5_track.c
new file mode 100644
index 00000000000..777948fefae
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_track/3x5_track.c
@@ -0,0 +1,18 @@
+/*
+Copyright 2021 @dlford
+
+This 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 "3x5_track.h"
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_track/3x5_track.h b/keyboards/handwired/wylderbuilds/trackball/3x5_track/3x5_track.h
new file mode 100644
index 00000000000..1320047e4c5
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_track/3x5_track.h
@@ -0,0 +1,42 @@
+/*
+Copyright 2021 @dlford
+
+This 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_3x5( \
+ L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \
+ L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \
+ L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \
+ L33, L34, R30, \
+ L43, L44, R31, \
+ L41, L42, R40, R41 \
+) { \
+ { L00, L01, L02, L03, L04 }, \
+ { L10, L11, L12, L13, L14 }, \
+ { L20, L21, L22, L23, L24 }, \
+ { XXX, XXX, XXX, L33, L34 }, \
+ { XXX, L41, L42, L43, L44 }, \
+ { R00, R01, R02, R03, R04 }, \
+ { R10, R11, R12, R13, R14 }, \
+ { R20, R21, R22, R23, R24 }, \
+ { R30, R31, XXX, XXX, XXX }, \
+ { R40, R41, XXX, XXX, XXX }, \
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_track/config.h b/keyboards/handwired/wylderbuilds/trackball/3x5_track/config.h
new file mode 100644
index 00000000000..4220b353cd6
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_track/config.h
@@ -0,0 +1,111 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+#include "config_common.h"
+// Basic Config
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+#define BOOTMAGIC_LITE_ROW 0 // TOP RIGHT KEY ON RIGHT SIDE, TOP LEFT KEY ON LEFT SIDE
+#define BOOTMAGIC_LITE_COLUMN 4
+
+//#define PRODUCT_ID 0x0002
+
+#define USE_SERIAL
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+//#define SPLIT_HAND_PIN_LOW_IS_LEFT
+//#define SPLIT_HAND_MATRIX_GRID GP9, GP8
+//#define MASTER_RIGHT
+//#define MASTER_LEFT
+
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+//#define SERIAL_USART_PIN_SWAP
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Columns are doubled-up
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 5
+
+#define MATRIX_COL_PINS { GP2, GP3, GP4, GP5, GP6 }
+#define MATRIX_ROW_PINS { GP9, GP10, GP11, GP12, GP13 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define SPLIT_POINTING_ENABLE
+#define ROTATIONAL_TRANSFORM_ANGLE -25
+#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_RIGHT
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x05
+
+#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+//#define CHARYBDIS_MINIMUM_DEFAULT_DPI 1200
+//#define CHARYBDIS_DEFAULT_DPI_CONFIG_STEP 200
+//#define CHARYBDIS_MINIMUM_SNIPING_DPI 400
+//#define CHARYBDIS_SNIPING_DPI_CONFIG_STEP 200
+
+//// Rotary Encoder ////
+// GP21
+// GP22
+
+//// Sensor Notes ////
+//// Pi Pico pins ////
+// 3V3 -- Power (not 3v3_EN!)
+// GP21 -- CS pin
+// GP20 -- MISO pin
+// GP19 -- MOSI pin
+// GP18 -- SCK pin clock
+// GND -- GND
+
+// WS2812 RGB LED strip input and number of LEDs
+//#ifdef RGBLIGHT_ENABLE
+//#define RGB_DI_PIN GP17
+//#define RGBLED_NUM 34
+////#define DRIVER_LED_TOTAL 34
+//#define RGBLED_SPLIT { 17, 17 }
+//#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+//#define NOP_FUDGE 0.4
+//#endif
+
+//// OLED Pins and Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD1
+#define I2C1_SDA_PIN GP12
+#define I2C1_SCL_PIN GP13
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+// Misc settings
+// 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
+// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_track/info.json b/keyboards/handwired/wylderbuilds/trackball/3x5_track/info.json
new file mode 100644
index 00000000000..eb0caf9c09c
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_track/info.json
@@ -0,0 +1,224 @@
+{
+ "keyboard_name": "Dactyl-Manuform Wyld Trackball (3x5_track)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0032",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 10,
+ "cols": 5
+ },
+ "layouts": {
+ "LAYOUT_3x5": {
+ "layout": [
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "5,0",
+ "x": 11.25,
+ "y": 0
+ },
+ {
+ "label": "5,1",
+ "x": 12.25,
+ "y": 0
+ },
+ {
+ "label": "5,2",
+ "x": 13.25,
+ "y": 0
+ },
+ {
+ "label": "5,3",
+ "x": 14.25,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "5,4",
+ "x": 15.25,
+ "y": 0.5
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "6,0",
+ "x": 11.25,
+ "y": 1
+ },
+ {
+ "label": "6,1",
+ "x": 12.25,
+ "y": 1
+ },
+ {
+ "label": "6,2",
+ "x": 13.25,
+ "y": 1
+ },
+ {
+ "label": "6,3",
+ "x": 14.25,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "6,4",
+ "x": 15.25,
+ "y": 1.5
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "7,0",
+ "x": 11.25,
+ "y": 2
+ },
+ {
+ "label": "7,1",
+ "x": 12.25,
+ "y": 2
+ },
+ {
+ "label": "7,2",
+ "x": 13.25,
+ "y": 2
+ },
+ {
+ "label": "7,3",
+ "x": 14.25,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "7,4",
+ "x": 15.25,
+ "y": 2.5
+ },
+ {
+ "label": "8,0",
+ "x": 11.5,
+ "y": 3.25
+ },
+ {
+ "label": "8,1",
+ "x": 11.5,
+ "y": 4.5
+ },
+ {
+ "label": "9,0",
+ "x": 10.25,
+ "y": 5.75
+ },
+ {
+ "label": "9,1",
+ "x": 11.5,
+ "y": 5.75
+ },
+ {
+ "label": "3,3",
+ "x": 5.5,
+ "y": 2.75
+ },
+ {
+ "label": "3,4",
+ "x": 6.5,
+ "y": 2.75
+ },
+ {
+ "label": "4,3",
+ "x": 4,
+ "y": 6.5
+ },
+ {
+ "label": "4,4",
+ "x": 5,
+ "y": 6.5
+ },
+ {
+ "label": "4,1",
+ "x": 4.5,
+ "y": 7.5
+ },
+ {
+ "label": "4,2",
+ "x": 5.5,
+ "y": 7.5
+ }
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_track/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/3x5_track/keymaps/vial/config.h
new file mode 100644
index 00000000000..29fc77442e6
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_track/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xF6, 0x24, 0xF4, 0x83, 0xB1, 0x4B, 0xE2, 0xB4}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 3 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 3 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_track/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/3x5_track/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..c2681d38cec
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_track/keymaps/vial/keymap.c
@@ -0,0 +1,53 @@
+#include QMK_KEYBOARD_H
+#include "3x5_track.h"
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_3x5(
+ 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_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ RAISE, KC_SPC, LOWER,
+ KC_TAB, KC_HOME, KC_ENT,
+ KC_BSPC, KC_GRV, KC_DEL, KC_LALT
+ ),
+
+ [_LOWER] = LAYOUT_3x5(
+ _______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,KC_PLUS,
+ KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,
+ _______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL,
+ _______,_______, _______,
+ KC_BTN3,KC_BTN1, _______,
+ SNIPING,DRGSCRL, _______,QK_BOOT
+
+ ),
+
+ [_RAISE] = LAYOUT_3x5(
+ KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,
+ _______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,
+ KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,KC_VOLD,
+ _______,_______, _______,
+ _______,_______, _______,
+ QK_BOOT,_______, _______,_______
+ )
+};
+
+void keyboard_post_init_user(void) {
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+ debug_keyboard=true;
+ debug_mouse=true;
+#else
+ debug_enable=false;
+ debug_matrix=false;
+ debug_keyboard=false;
+ debug_mouse=false;
+#endif
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_track/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/3x5_track/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_track/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_track/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/3x5_track/keymaps/vial/vial.json
new file mode 100644
index 00000000000..80f86d67545
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_track/keymaps/vial/vial.json
@@ -0,0 +1,153 @@
+{
+ "matrix": {
+ "rows": 10,
+ "cols": 5
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 3x5 Track"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 5.25
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 12.25
+ },
+ "5,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ {
+ "x": 5.25
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 12.25
+ },
+ "6,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ {
+ "x": 5.25
+ },
+ "7,0",
+ {
+ "n": true
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 12.25
+ },
+ "7,4"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 11.5
+ },
+ "8,0"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 11.5
+ },
+ "8,1"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 10.25
+ },
+ "9,0",
+ {
+ "x": 0.25
+ },
+ "9,1"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -4,
+ "x": 5.5
+ },
+ "3,3",
+ "3,4"
+ ],
+ [
+ {
+ "r": -15,
+ "y": 2.75,
+ "x": 4
+ },
+ "4,3",
+ "4,4"
+ ],
+ [
+ {
+ "r": -13,
+ "x": 4.5
+ },
+ "4,1",
+ "4,2"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_track/rules.mk b/keyboards/handwired/wylderbuilds/trackball/3x5_track/rules.mk
new file mode 100644
index 00000000000..0826b5eaf6b
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_track/rules.mk
@@ -0,0 +1,17 @@
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+RGBLIGHT_ENABLE = no
+MOUSEKEY_ENABLE = yes
+CONSOLE_ENABLE = no
+#COMMAND_ENABLE = yes
+BOOTMAGIC_ENABLE = yes
+EXTRAKEY_ENABLE = yes # Audio control and System control
+NKRO_ENABLE = yes # Enable N-Key Rollover
+OLED_ENABLE = NO
+WPM_ENABLE = NO
+ENCODER_ENABLE = NO
+ENCODER_MAP_ENABLE = no
+
+#OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x5_track/wylderbuilds-3x5-dactyl-manuform-wyld-track-encoder.json b/keyboards/handwired/wylderbuilds/trackball/3x5_track/wylderbuilds-3x5-dactyl-manuform-wyld-track-encoder.json
new file mode 100644
index 00000000000..d87d6eb9163
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x5_track/wylderbuilds-3x5-dactyl-manuform-wyld-track-encoder.json
@@ -0,0 +1,115 @@
+[
+ {
+ "name": "Wylderbuilds 3x5 Dactyl Manuform Wyld Track Encoder"
+ },
+ [
+ {
+ "x": 2
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 5.25
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ "4,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ {
+ "x": 13.25
+ },
+ "4,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 3.25
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ {
+ "x": 13.25
+ },
+ "5,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ {
+ "x": 0.5
+ },
+ "3,1",
+ {
+ "x": 3.75
+ },
+ "6,0",
+ {
+ "n": true
+ },
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ {
+ "x": 13.25
+ },
+ "6,4"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 4.5
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ {
+ "x": 2
+ },
+ "7,0",
+ "7,1",
+ "7,2"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_3_track/3x6_3_track.c b/keyboards/handwired/wylderbuilds/trackball/3x6_3_track/3x6_3_track.c
new file mode 100644
index 00000000000..6fa4990d854
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_3_track/3x6_3_track.c
@@ -0,0 +1,17 @@
+/*
+Copyright 2021 @dlford
+
+This 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 "3x6_3_track.h"
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_3_track/3x6_3_track.h b/keyboards/handwired/wylderbuilds/trackball/3x6_3_track/3x6_3_track.h
new file mode 100644
index 00000000000..82741daec2e
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_3_track/3x6_3_track.h
@@ -0,0 +1,40 @@
+/*
+Copyright 2021 @dlford
+
+This 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
+
+// TRACKBALL IN WALL SETUP
+#define LAYOUT_split_3x6_3( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+ L33, L34, L35, R30, R31, R32 \
+) { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { XXX, XXX, XXX, L33, L34, L35 }, \
+ { R00, R01, R02, R03, R04, R05 }, \
+ { R10, R11, R12, R13, R14, R15 }, \
+ { R20, R21, R22, R23, R24, R25 }, \
+ { R30, R31, R32, XXX, XXX, XXX } \
+}
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_3_track/config.h b/keyboards/handwired/wylderbuilds/trackball/3x6_3_track/config.h
new file mode 100644
index 00000000000..877627ec198
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_3_track/config.h
@@ -0,0 +1,134 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+//#include "config_common.h"
+// Basic Config
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+#define BOOTMAGIC_LITE_ROW 0 // TOP RIGHT KEY ON RIGHT SIDE, TOP LEFT KEY ON LEFT SIDE
+#define BOOTMAGIC_LITE_COLUMN 4
+
+//#define PRODUCT_ID 0x0002
+
+#define USE_SERIAL
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+//#define SPLIT_HAND_PIN_LOW_IS_LEFT
+//#define SPLIT_HAND_MATRIX_GRID GP9, GP8
+//#define MASTER_RIGHT
+//#define MASTER_LEFT
+
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+//#define SERIAL_USART_PIN_SWAP
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Columns are doubled-up
+
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 6
+
+#define MATRIX_COL_PINS { GP2, GP3, GP4, GP5, GP6, GP7 }
+#define MATRIX_ROW_PINS { GP9, GP10, GP11, GP12 }
+
+#define DIODE_DIRECTION COL2ROW
+#define SPLIT_POINTING_ENABLE
+#define ROTATIONAL_TRANSFORM_ANGLE -25
+#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_RIGHT
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x02
+
+#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+//#define CHARYBDIS_MINIMUM_DEFAULT_DPI 1200
+//#define CHARYBDIS_DEFAULT_DPI_CONFIG_STEP 200
+//#define CHARYBDIS_MINIMUM_SNIPING_DPI 400
+//#define CHARYBDIS_SNIPING_DPI_CONFIG_STEP 200
+
+//// Rotary Encoder ////
+// GP21
+// GP22
+
+//// Sensor Notes ////
+//// Pi Pico pins ////
+// 3V3 -- Power (not 3v3_EN!)
+// GP21 -- CS pin
+// GP20 -- MISO pin
+// GP19 -- MOSI pin
+// GP18 -- SCK pin clock
+// GND -- GND
+
+// WS2812 RGB LED strip input and number of LEDs
+//#ifdef RGBLIGHT_ENABLE
+//#define RGB_DI_PIN GP17
+//#define RGBLED_NUM 34
+////#define DRIVER_LED_TOTAL 34
+//#define RGBLED_SPLIT { 17, 17 }
+//#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+//#define NOP_FUDGE 0.4
+//#endif
+
+#ifdef RGBLIGHT_ENABLE
+#define RGBLIGHT_LAYERS
+//#define WS2812_PIO_USE_PIO1
+//#define WS2812_PIO_USE_PIO1
+#define RGB_DI_PIN GP27 // can use trackball jack if not used
+//#define WS2812_EXTERNAL_PULLUP
+#define RGBLED_NUM 24
+//#define DRIVER_LED_TOTAL 34
+#define RGBLED_SPLIT { 12, 12 }
+#define RGBLIGHT_SPLIT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 17
+#define RGBLIGHT_LIMIT_VAL 255
+//#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+#define NOP_FUDGE 0.4 // may not be needed if ws driver loaded
+#endif
+
+//// OLED Pins and Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD1
+#define I2C1_SDA_PIN GP16
+#define I2C1_SCL_PIN GP17
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+// Misc settings
+// 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
+// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_3_track/info.json b/keyboards/handwired/wylderbuilds/trackball/3x6_3_track/info.json
new file mode 100644
index 00000000000..7d13f704e51
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_3_track/info.json
@@ -0,0 +1,234 @@
+{
+ "keyboard_name": "Dactyl-Manuform Wyld Trackball (3x5_3_track)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0047",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 8,
+ "cols": 6
+ },
+ "layouts": {
+ "LAYOUT_split_3x6_3": {
+ "layout": [
+ {
+ "label": "0,2",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,3",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 7,
+ "y": 0
+ },
+ {
+ "label": "4,0",
+ "x": 11,
+ "y": 0
+ },
+ {
+ "label": "4,1",
+ "x": 12,
+ "y": 0
+ },
+ {
+ "label": "4,2",
+ "x": 13,
+ "y": 0
+ },
+ {
+ "label": "4,3",
+ "x": 14,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 3,
+ "y": 0.5
+ },
+ {
+ "label": "4,4",
+ "x": 15,
+ "y": 0.5
+ },
+ {
+ "label": "4,5",
+ "x": 16,
+ "y": 0.5
+ },
+ {
+ "label": "1,2",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,3",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 7,
+ "y": 1
+ },
+ {
+ "label": "5,0",
+ "x": 11,
+ "y": 1
+ },
+ {
+ "label": "5,1",
+ "x": 12,
+ "y": 1
+ },
+ {
+ "label": "5,2",
+ "x": 13,
+ "y": 1
+ },
+ {
+ "label": "5,3",
+ "x": 14,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 3,
+ "y": 1.5
+ },
+ {
+ "label": "5,4",
+ "x": 15,
+ "y": 1.5
+ },
+ {
+ "label": "5,5",
+ "x": 16,
+ "y": 1.5
+ },
+ {
+ "label": "2,2",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,3",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 7,
+ "y": 2
+ },
+ {
+ "label": "6,0",
+ "x": 11,
+ "y": 2
+ },
+ {
+ "label": "6,1",
+ "x": 12,
+ "y": 2
+ },
+ {
+ "label": "6,2",
+ "x": 13,
+ "y": 2
+ },
+ {
+ "label": "6,3",
+ "x": 14,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 3,
+ "y": 2.5
+ },
+ {
+ "label": "6,4",
+ "x": 15,
+ "y": 2.5
+ },
+ {
+ "label": "6,5",
+ "x": 16,
+ "y": 2.5
+ },
+ {
+ "label": "3,3",
+ "x": 7,
+ "y": 1.25
+ },
+ {
+ "label": "3,4",
+ "x": 8,
+ "y": 1.25
+ },
+ {
+ "label": "3,5",
+ "x": 9,
+ "y": 1.25
+ },
+ {
+ "label": "7,0",
+ "x": 8.5,
+ "y": 6.25
+ },
+ {
+ "label": "7,1",
+ "x": 9.5,
+ "y": 6.25
+ },
+ {
+ "label": "7,2",
+ "x": 10.5,
+ "y": 6.25
+ }
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_3_track/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/3x6_3_track/keymaps/vial/config.h
new file mode 100644
index 00000000000..4099ec0f035
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_3_track/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x51, 0x69, 0x1F, 0x6E, 0x6D, 0x8A, 0xD4, 0x57}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 3 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 3 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_3_track/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/3x6_3_track/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..fa8ddcc2c95
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_3_track/keymaps/vial/keymap.c
@@ -0,0 +1,144 @@
+#include QMK_KEYBOARD_H
+#include "3x6_mini_track.h"
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+// TRACKBALL IN WALL LAYOUT (STANDARD 3X5_3)
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_split_3x6_3(
+ KC_ESC , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_MINS,
+ 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_BSLS,
+ RAISE, KC_SPC, KC_TAB, KC_LCTL, KC_ENT, LOWER
+ ),
+ [_RAISE] = LAYOUT_split_3x6_3(
+ RGB_VAI,RGB_SAI,RGB_HUI,RGB_MOD,RGB_TOG,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,
+ QK_BOOT,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,
+ _______,DRGSCRL,SNIPING,KC_BTN3,KC_BTN2,KC_BTN1, KC_EQL, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS,
+ _______, _______, _______, _______, _______, _______
+ ),
+
+ [_LOWER] = LAYOUT_split_3x6_3(
+ KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,QK_BOOT,
+ _______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,KC_VOLD,KC_VOLU,
+ _______, _______, _______, _______, _______, _______
+ )
+};
+
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_master()) {
+ return OLED_ROTATION_270;
+ }
+ return OLED_ROTATION_180;
+}
+
+bool oled_task_user(void) {
+ oled_set_cursor(0, 1);
+ oled_write_P(PSTR("Layer\n"), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ oled_write_P(PSTR("QWRTY\n"), false);
+ break;
+ case _LOWER:
+ oled_write_P(PSTR("LOWER\n"), false);
+ break;
+ case _RAISE:
+ oled_write_P(PSTR("RAISE\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+ oled_set_cursor(0, 5);
+ oled_write_P(PSTR("WPM: "), false);
+
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 8);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+
+ return false;
+}
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+const rgblight_segment_t PROGMEM querty_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {9, 3, HSV_RED}, // Light 4 LEDs, starting with LED 6
+ {21, 3, HSV_RED} // Light 4 LEDs, starting with LED 6
+);
+const rgblight_segment_t PROGMEM lower_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {9, 3, HSV_BLUE},
+ {21, 3, HSV_BLUE}
+);
+const rgblight_segment_t PROGMEM raise_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {9, 3, HSV_YELLOW},
+ {21, 3, HSV_YELLOW}
+);
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ querty_layer, // Overrides caps lock layer
+ lower_layer, // Overrides other layers
+ raise_layer // Overrides other layers
+);
+
+//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(0, layer_state_cmp(state, _QWERTY));
+ return state;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(1, layer_state_cmp(state, _LOWER));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _RAISE));
+ return state;
+}
+
+
+#endif
+
+
+void keyboard_post_init_user(void) {
+#ifdef RGBLIGHT_ENABLE
+ // Enable the LED layers
+ rgblight_layers = my_rgb_layers;
+
+// rgblight_layers = my_rgb_layers;
+// rgblight_enable_noeeprom(); // Enables RGB, without saving settings
+// rgblight_sethsv_noeeprom_cyan();
+// rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
+#endif
+
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+ debug_keyboard=true;
+ debug_mouse=true;
+#else
+ debug_enable=false;
+ debug_matrix=false;
+ debug_keyboard=false;
+ debug_mouse=false;
+#endif
+}
+
+
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_3_track/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/3x6_3_track/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_3_track/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_3_track/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/3x6_3_track/keymaps/vial/vial.json
new file mode 100644
index 00000000000..5b410c6f690
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_3_track/keymaps/vial/vial.json
@@ -0,0 +1,128 @@
+{
+ "matrix": {
+ "rows": 8,
+ "cols": 6
+ },
+ "layouts": {
+ "keymap":[
+ {
+ "name": "Wylderbuilds 3x6_3 Wyld Track Dactyl Manuform"
+ },
+ [
+ {
+ "x": 4
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 3
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ "4,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 11
+ },
+ "4,4",
+ "4,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 3
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 11
+ },
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "2,2",
+ {
+ "n": true
+ },
+ "2,3",
+ "2,4",
+ "2,5",
+ {
+ "x": 3
+ },
+ "6,0",
+ {
+ "n": true
+ },
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 11
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "r": 15,
+ "y": -2.25,
+ "x": 7
+ },
+ "3,3",
+ "3,4",
+ "3,5"
+ ],
+ [
+ {
+ "r": -15,
+ "y": 4,
+ "x": 8.5
+ },
+ "7,0",
+ "7,1",
+ "7,2"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_3_track/mcuconf.h b/keyboards/handwired/wylderbuilds/trackball/3x6_3_track/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_3_track/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_3_track/rules.mk b/keyboards/handwired/wylderbuilds/trackball/3x6_3_track/rules.mk
new file mode 100644
index 00000000000..313dc47c4b4
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_3_track/rules.mk
@@ -0,0 +1,20 @@
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+RGBLIGHT_ENABLE = yes
+WS2812_DRIVER = vendor
+SLEEP_LED_ENABLE = no
+MOUSEKEY_ENABLE = yes
+CONSOLE_ENABLE = no
+#COMMAND_ENABLE = yes
+BOOTMAGIC_ENABLE = yes
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
+WPM_ENABLE = yes
+EXTRAKEY_ENABLE = yes # Audio control and System control
+NKRO_ENABLE = yes # Enable N-Key Rollover
+ENCODER_ENABLE = no
+ENCODER_MAP_ENABLE = no
+
+OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_dual_track/3x6_dual_track.c b/keyboards/handwired/wylderbuilds/trackball/3x6_dual_track/3x6_dual_track.c
new file mode 100644
index 00000000000..4c71268167f
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_dual_track/3x6_dual_track.c
@@ -0,0 +1,17 @@
+/*
+Copyright 2021 @dlford
+
+This 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 "3x6_dual_track.h"
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_dual_track/3x6_dual_track.h b/keyboards/handwired/wylderbuilds/trackball/3x6_dual_track/3x6_dual_track.h
new file mode 100644
index 00000000000..374d459ca1d
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_dual_track/3x6_dual_track.h
@@ -0,0 +1,40 @@
+/*
+Copyright 2021 @dlford
+
+This 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_3x6( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+ L35, R30, \
+ L34, R31, \
+ L32, L33, R32, R33 \
+) { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { XXX, XXX, L32, L33, L34, L35 }, \
+ { R00, R01, R02, R03, R04, R05 }, \
+ { R10, R11, R12, R13, R14, R15 }, \
+ { R20, R21, R22, R23, R24, R25 }, \
+ { R30, R31, R32, R33, XXX, XXX }, \
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_dual_track/config.h b/keyboards/handwired/wylderbuilds/trackball/3x6_dual_track/config.h
new file mode 100644
index 00000000000..a0571cd3f95
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_dual_track/config.h
@@ -0,0 +1,121 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+// Basic Config
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+
+#define USE_SERIAL
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+//#define SPLIT_HAND_PIN_LOW_IS_LEFT
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+#define SERIAL_USART_PIN_SWAP
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Columns are doubled-up
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 6
+
+#define MATRIX_COL_PINS { GP3, GP4, GP5, GP6, GP7, GP8 }
+#define MATRIX_ROW_PINS { GP10, GP11, GP12, GP13 }
+#define DIODE_DIRECTION COL2ROW
+
+#define SPLIT_LAYER_STATE_ENABLE
+#define POINTING_DEVICE_COMBINED
+#define POINTING_DEVICE_ROTATION_90
+#define ROTATIONAL_TRANSFORM_ANGLE -45 // TESTING RIGHT SHIFTED FROM -35 TO -45 TO TEST LEFT
+#define POINTING_DEVICE_INVERT_Y_RIGHT
+#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_INVERT_X
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x02
+
+#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+//#define POINTING_DEVICE_AUTO_MOUSE_ENABLE
+//// only required if not setting mouse layer elsewhere
+//#define AUTO_MOUSE_DEFAULT_LAYER 3
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 4
+
+#define ENCODERS_PAD_A { GP16 }
+#define ENCODERS_PAD_B { GP17 }
+#define ENCODER_RESOLUTIONS { }
+#define ENCODERS_PAD_A_RIGHT { GP16}
+#define ENCODERS_PAD_B_RIGHT { GP17 }
+#define ENCODER_RESOLUTIONS_RIGHT { 2 }
+
+
+//// Sensor Notes ////
+//// Pi Pico pins ////
+// 3V3 -- Power (not 3v3_EN)
+// GP17 -- CS pin
+// GP20 -- MISO pin
+// GP19 -- MOSI pin
+// GP18 -- SCK pin clock Driver
+#ifdef RGBLIGHT_ENABLE
+#define WS2812_PIO_USE_PIO1
+//#define WS2812_PIO_USE_PIO1
+//#define WS2812_PIO_USE_PIO1
+#define RGBLIGHT_LAYERS
+#define WS2812_DI_PIN GP22 // can use trackball jack if not used
+//#define WS2812_EXTERNAL_PULLUP
+#define RGBLED_NUM 24
+//#define DRIVER_LED_TOTAL 34
+#define RGBLED_SPLIT { 12, 12 }
+#define RGBLIGHT_SPLIT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 17
+#define RGBLIGHT_LIMIT_VAL 100
+//#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+#define NOP_FUDGE 0.4 // may not be needed if ws driver loaded
+#endif
+
+//// OLED Pins and Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD0
+#define I2C1_SDA_PIN GP16
+#define I2C1_SCL_PIN GP17
+// OLED Options
+#define SPLIT_OLED_ENABLE
+//#define SPLIT_MODS_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+// Misc settings
+// 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// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_dual_track/info.json b/keyboards/handwired/wylderbuilds/trackball/3x6_dual_track/info.json
new file mode 100644
index 00000000000..ce33c4623d5
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_dual_track/info.json
@@ -0,0 +1,245 @@
+{
+ "keyboard_name": "Dactyl-Manuform Wyld Whole Dual Trackball (4x6_3_dual_track)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0121",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 8,
+ "cols": 6
+ },
+ "layouts": {
+ "LAYOUT_3x6": {
+ "layout": [
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "4,0",
+ "x": 11.25,
+ "y": 0
+ },
+ {
+ "label": "4,1",
+ "x": 12.25,
+ "y": 0
+ },
+ {
+ "label": "4,2",
+ "x": 13.25,
+ "y": 0
+ },
+ {
+ "label": "4,3",
+ "x": 14.25,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "4,4",
+ "x": 15.25,
+ "y": 0.5
+ },
+ {
+ "label": "4,5",
+ "x": 16.25,
+ "y": 0.5
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "5,0",
+ "x": 11.25,
+ "y": 1
+ },
+ {
+ "label": "5,1",
+ "x": 12.25,
+ "y": 1
+ },
+ {
+ "label": "5,2",
+ "x": 13.25,
+ "y": 1
+ },
+ {
+ "label": "5,3",
+ "x": 14.25,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "5,4",
+ "x": 15.25,
+ "y": 1.5
+ },
+ {
+ "label": "5,5",
+ "x": 16.25,
+ "y": 1.5
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "6,0",
+ "x": 11.25,
+ "y": 2
+ },
+ {
+ "label": "6,1",
+ "x": 12.25,
+ "y": 2
+ },
+ {
+ "label": "6,2",
+ "x": 13.25,
+ "y": 2
+ },
+ {
+ "label": "6,3",
+ "x": 14.25,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "6,4",
+ "x": 15.25,
+ "y": 2.5
+ },
+ {
+ "label": "6,5",
+ "x": 16.25,
+ "y": 2.5
+ },
+ {
+ "label": "3,5",
+ "x": 5.75,
+ "y": 3.25
+ },
+ {
+ "label": "7,0",
+ "x": 11.5,
+ "y": 3.25
+ },
+ {
+ "label": "3,4",
+ "x": 5.75,
+ "y": 4.5
+ },
+ {
+ "label": "7,1",
+ "x": 11.5,
+ "y": 4.5
+ },
+ {
+ "label": "3,2",
+ "x": 5.75,
+ "y": 5.75
+ },
+ {
+ "label": "3,3",
+ "x": 7.5,
+ "y": 5.75
+ },
+ {
+ "label": "7,2",
+ "x": 9.75,
+ "y": 5.75
+ },
+ {
+ "label": "7,3",
+ "x": 11.5,
+ "y": 5.75
+ }
+ ]
+ }
+ }
+}
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_dual_track/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/3x6_dual_track/keymaps/vial/config.h
new file mode 100644
index 00000000000..b52ded503c6
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_dual_track/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x32, 0xE6, 0x5D, 0x31, 0xCA, 0x5E, 0x93, 0x32}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 4 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 4 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_dual_track/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/3x6_dual_track/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..d8e1f9fcc96
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_dual_track/keymaps/vial/keymap.c
@@ -0,0 +1,289 @@
+#include QMK_KEYBOARD_H
+#include "3x6_dual_track.h"
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+#define _MOUSE 3
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+enum wyld_keycodes {
+ WYLD_AUTO_MS_TOG = SAFE_RANGE
+};
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_3x6(
+ KC_ESC , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_MINS,
+ 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_BSLS,
+ RAISE, LOWER,
+ KC_SPC, KC_ENT,
+ KC_BSPC, KC_HOME, KC_MUTE,KC_LALT
+ ),
+
+ [_LOWER] = LAYOUT_3x6(
+ WYLD_AUTO_MS_TOG,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,
+ _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,
+ KC_LCTL,_______,_______,SNIPING, DRGSCRL,KC_BTN3, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS,
+ _______, _______,
+ KC_BTN2, _______,
+ KC_BTN1,KC_HOME, KC_MUTE,QK_BOOT
+
+ ),
+
+ [_RAISE] = LAYOUT_3x6(
+ KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,
+ KC_LCTL,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,KC_VOLD,KC_VOLU,
+ _______, _______,
+ _______, _______,
+ QK_BOOT,KC_HOME, KC_MUTE,_______
+ ),
+
+ [_MOUSE] = LAYOUT_3x6(
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______,KC_BTN1,KC_BTN2,KC_BTN3,_______,_______,
+ _______,_______,_______,SNIPING, DRGSCRL,KC_BTN3, _______,_______,_______,_______,_______,_______,
+ _______, _______,
+ KC_BTN2, _______,
+ KC_BTN1,KC_HOME, KC_MUTE,_______
+ )
+};
+
+#ifdef POINTING_DEVICE_COMBINED
+static void check_drag(report_mouse_t* mouse_report) {
+ static int16_t scroll_buffer_x = 0;
+ static int16_t scroll_buffer_y = 0;
+
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_X
+ scroll_buffer_x -= mouse_report->x;
+# else
+ scroll_buffer_x += mouse_report->x;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_X
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ scroll_buffer_y -= mouse_report->y;
+# else
+ scroll_buffer_y += mouse_report->y;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ mouse_report->x = 0;
+ mouse_report->y = 0;
+ if (abs(scroll_buffer_x) > 6) {
+ mouse_report->h = scroll_buffer_x > 0 ? 1 : -1;
+ scroll_buffer_x = 0;
+ }
+ if (abs(scroll_buffer_y) > 6) {
+ mouse_report->v = scroll_buffer_y > 0 ? 1 : -1;
+ scroll_buffer_y = 0;
+ }
+}
+
+report_mouse_t pointing_device_task_combined_user(report_mouse_t left_report, report_mouse_t right_report) {
+ check_drag(&left_report); // updated in trackball.c
+ return pointing_device_combine_reports(left_report, right_report);
+}
+#endif
+
+
+void pointing_device_init_user(void) {
+#ifdef POINTING_DEVICE_AUTO_MOUSE_ENABLE
+ set_auto_mouse_enable(true);
+#endif
+#ifdef POINTING_DEVICE_COMBINED
+ pointing_device_set_cpi_on_side(true, CHARYBDIS_DRAGSCROLL_DPI); // LEFT
+ pointing_device_set_cpi_on_side(false, 2000); // RIGHT
+#endif// always required before the auto mouse feature will work
+}
+
+#ifdef POINTING_DEVICE_AUTO_MOUSE_ENABLE
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case WYLD_AUTO_MS_TOG:
+ if (record->event.pressed) {
+ set_auto_mouse_enable(!get_auto_mouse_enable());
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+#endif
+
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_left()) {
+ return OLED_ROTATION_270;
+ }
+ return OLED_ROTATION_0;
+}
+
+static const char PROGMEM wylderbuilds[] = {
+ // 'dark wylderbuilds_oled_name', 128x32
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40,
+ 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x20, 0x60,
+ 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x60, 0x60,
+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0,
+ 0x00, 0x00, 0xc1, 0xc1, 0x01, 0x01, 0xf1, 0x11, 0x01, 0x01, 0x01, 0x31, 0x60, 0xc0, 0x80, 0xc0,
+ 0xf0, 0x10, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0,
+ 0x00, 0x01, 0x03, 0x9e, 0xf8, 0x00, 0x00, 0x20, 0xe0, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0xf0, 0x30, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x98, 0xf0, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x00, 0x70, 0xfe, 0x03, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00,
+ 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x11, 0xf1, 0x11, 0x33, 0x63, 0xc3,
+ 0x83, 0x01, 0x01, 0xc1, 0xe1, 0x31, 0x11, 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,
+ 0x1f, 0x7c, 0xff, 0x07, 0x7c, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7f, 0xff,
+ 0x60, 0x30, 0x18, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xf2, 0x82, 0x02, 0x80, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x7f, 0x0e, 0x1b, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0x81, 0xc1, 0x63,
+ 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00,
+ 0x00, 0x1f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x60, 0x30, 0x1f,
+ 0x07, 0x00, 0x00, 0x01, 0x43, 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static void render_wylderbuilds(void) {
+ oled_write_raw_P(wylderbuilds, sizeof(wylderbuilds));
+}
+
+bool oled_task_user(void) {
+ oled_set_cursor(0, 3);
+ if (is_keyboard_left()) {
+// oled_write_P(PSTR("Layer\n"), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ oled_write_P(PSTR(" BASE\n"), false);
+ break;
+ case _LOWER:
+ oled_write_P(PSTR("LOWER\n"), false);
+ break;
+ case _RAISE:
+ oled_write_P(PSTR("RAISE\n"), false);
+ break;
+ case _MOUSE:
+ oled_write_P(PSTR("MOUSE\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+ oled_set_cursor(2, 7);
+ oled_write_P(PSTR("WPM "), false);
+ oled_set_cursor(1, 8);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 9);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+ } else {
+ // write WPM to right OLED
+ oled_set_cursor(0, 0);
+ render_wylderbuilds();
+ oled_scroll_left();
+ }
+
+ return false;
+}
+#endif
+
+#if defined(ENCODER_MAP_ENABLE)
+// TWO ENCODERS
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_QWERTY] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_LOWER] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_RAISE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_MOUSE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+};
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+const rgblight_segment_t PROGMEM querty_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {9, 3, HSV_RED}, // Light 4 LEDs, starting with LED 6
+ {21, 3, HSV_RED} // Light 4 LEDs, starting with LED 6
+);
+const rgblight_segment_t PROGMEM lower_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {9, 3, HSV_BLUE},
+ {21, 3, HSV_BLUE}
+);
+const rgblight_segment_t PROGMEM raise_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {9, 3, HSV_YELLOW},
+ {21, 3, HSV_YELLOW}
+);
+
+const rgblight_segment_t PROGMEM mouse_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {9, 3, HSV_GREEN},
+ {21, 3, HSV_GREEN}
+);
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ querty_layer, // Overrides caps lock layer
+ lower_layer, // Overrides other layers
+ raise_layer, // Overrides other layers
+ mouse_layer // Overrides other layers
+);
+
+//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(0, layer_state_cmp(state, _QWERTY));
+ return state;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(1, layer_state_cmp(state, _LOWER));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _RAISE));
+ return state;
+}
+
+
+#endif
+
+// rgblight_enable();
+
+
+void keyboard_post_init_user(void) {
+#ifdef RGBLIGHT_ENABLE
+ rgblight_layers = my_rgb_layers;
+// rgblight_layers = my_rgb_layers;
+// rgblight_enable_noeeprom(); // Enables RGB, without saving settings
+// rgblight_sethsv_noeeprom_cyan();
+// rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
+#endif
+
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+ debug_keyboard=true;
+ debug_mouse=true;
+#else
+ debug_enable=false;
+ debug_matrix=false;
+ debug_keyboard=false;
+ debug_mouse=false;
+#endif
+}
+
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_dual_track/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/3x6_dual_track/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_dual_track/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_dual_track/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/3x6_dual_track/keymaps/vial/vial.json
new file mode 100644
index 00000000000..10c3619d0e8
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_dual_track/keymaps/vial/vial.json
@@ -0,0 +1,160 @@
+{
+ "matrix": {
+ "rows": 8,
+ "cols": 6
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 3x6 Dual Trackball"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 4.25
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ "4,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1", {
+ "x": 12.25
+ },
+ "4,4",
+ "4,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 4.25
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 12.25
+ },
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 4.25
+ },
+ "6,0",
+ {
+ "n": true
+ },
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 12.25
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 5.75
+ },
+ "3,5",
+ {
+ "x": 4.75
+ },
+ "7,0"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 5.75
+ },
+ "3,4",
+ {
+ "x": 4.75
+ },
+ "7,1"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 7
+ },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 0.25
+ },
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne"
+ ],
+ [
+ {
+ "x": 5.75
+ },
+ "3,2",
+ {
+ "x": 0.75
+ },
+ "3,3",
+ {
+ "x": 1.25
+ },
+ "7,2",
+ {
+ "x": 0.75
+ },
+ "7,3"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_dual_track/mcuconf.h b/keyboards/handwired/wylderbuilds/trackball/3x6_dual_track/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_dual_track/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_dual_track/rules.mk b/keyboards/handwired/wylderbuilds/trackball/3x6_dual_track/rules.mk
new file mode 100644
index 00000000000..52d0b9abccc
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_dual_track/rules.mk
@@ -0,0 +1,22 @@
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+RGBLIGHT_ENABLE = no
+MOUSEKEY_ENABLE = yes
+CONSOLE_ENABLE = no
+#COMMAND_ENABLE = yes
+BOOTMAGIC_ENABLE = yes
+OLED_ENABLE = no
+#OLED_DRIVER = SSD1306
+WPM_ENABLE = yes
+EXTRAKEY_ENABLE = yes # Audio control and System control
+NKRO_ENABLE = yes # Enable N-Key Rollover
+ENCODER_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+
+RGBLIGHT_ENABLE = no
+WS2812_DRIVER = vendor
+SLEEP_LED_ENABLE = no
+
+#OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_dual_track/wylderbuilds-3x6-dual-trackball.json b/keyboards/handwired/wylderbuilds/trackball/3x6_dual_track/wylderbuilds-3x6-dual-trackball.json
new file mode 100644
index 00000000000..638f787bb8d
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_dual_track/wylderbuilds-3x6-dual-trackball.json
@@ -0,0 +1,141 @@
+[
+ {
+ "name": "Wylderbuilds 3x6 Dual Trackball"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 4.25
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ "4,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 12.25
+ },
+ "4,4",
+ "4,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 4.25
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 12.25
+ },
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 4.25
+ },
+ "6,0",
+ {
+ "n": true
+ },
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 12.25
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 5.75
+ },
+ "3,5",
+ {
+ "x": 4.75
+ },
+ "7,0"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 5.75
+ },
+ "3,4",
+ {
+ "x": 4.75
+ },
+ "7,1"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 5.75
+ },
+ "3,2",
+ {
+ "x": 0.25
+ },
+ "3,3",
+ {
+ "x": 2.25
+ },
+ "7,2",
+ {
+ "x": 0.25
+ },
+ "7,3"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_dual_track/wylderbuilds-3x6-dual-trackball_encoders.json b/keyboards/handwired/wylderbuilds/trackball/3x6_dual_track/wylderbuilds-3x6-dual-trackball_encoders.json
new file mode 100644
index 00000000000..f92ed9e876c
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_dual_track/wylderbuilds-3x6-dual-trackball_encoders.json
@@ -0,0 +1,153 @@
+[
+ {
+ "name": "Wylderbuilds 3x6 Dual Trackball"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 4.25
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ "4,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 12.25
+ },
+ "4,4",
+ "4,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 4.25
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 12.25
+ },
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 4.25
+ },
+ "6,0",
+ {
+ "n": true
+ },
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 12.25
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 5.75
+ },
+ "3,5",
+ {
+ "x": 4.75
+ },
+ "7,0"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 5.75
+ },
+ "3,4",
+ {
+ "x": 4.75
+ },
+ "7,1"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 7
+ },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 0.25
+ },
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne"
+ ],
+ [
+ {
+ "x": 5.75
+ },
+ "3,2",
+ {
+ "x": 0.75
+ },
+ "3,3",
+ {
+ "x": 1.25
+ },
+ "7,2",
+ {
+ "x": 0.75
+ },
+ "7,3"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_mini_track/3x6_mini_track.c b/keyboards/handwired/wylderbuilds/trackball/3x6_mini_track/3x6_mini_track.c
new file mode 100644
index 00000000000..50b01017bf0
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_mini_track/3x6_mini_track.c
@@ -0,0 +1,17 @@
+/*
+Copyright 2021 @dlford
+
+This 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 "3x6_mini_track.h"
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_mini_track/3x6_mini_track.h b/keyboards/handwired/wylderbuilds/trackball/3x6_mini_track/3x6_mini_track.h
new file mode 100644
index 00000000000..66c398fd4b4
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_mini_track/3x6_mini_track.h
@@ -0,0 +1,42 @@
+/*
+Copyright 2021 @dlford
+
+This 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
+
+// TRACKBALL IN WALL SETUP
+#define LAYOUT_split_3x6_mini( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+ L33, L34, L35, R30, \
+ L31, L32, R31, \
+ R32, R33 \
+) { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { XXX, L31, L32, L33, L34, L35 }, \
+ { R00, R01, R02, R03, R04, R05 }, \
+ { R10, R11, R12, R13, R14, R15 }, \
+ { R20, R21, R22, R23, R24, R25 }, \
+ { R30, R31, R32, R33, XXX, XXX } \
+}
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_mini_track/config.h b/keyboards/handwired/wylderbuilds/trackball/3x6_mini_track/config.h
new file mode 100644
index 00000000000..0da8673a173
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_mini_track/config.h
@@ -0,0 +1,136 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+//#include "config_common.h"
+// Basic Config
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+#define BOOTMAGIC_LITE_ROW 0 // TOP RIGHT KEY ON RIGHT SIDE, TOP LEFT KEY ON LEFT SIDE
+#define BOOTMAGIC_LITE_COLUMN 4
+
+//#define PRODUCT_ID 0x0002
+
+#define USE_SERIAL
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+//#define SPLIT_HAND_PIN_LOW_IS_LEFT
+//#define SPLIT_HAND_MATRIX_GRID GP9, GP8
+//#define MASTER_RIGHT
+//#define MASTER_LEFT
+
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+//#define SERIAL_USART_PIN_SWAP
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Columns are doubled-up
+
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 6
+
+#define MATRIX_COL_PINS { GP2, GP3, GP4, GP5, GP6, GP7 }
+#define MATRIX_ROW_PINS { GP9, GP10, GP11, GP12 }
+
+#define DIODE_DIRECTION COL2ROW
+#define SPLIT_POINTING_ENABLE
+#define ROTATIONAL_TRANSFORM_ANGLE -25
+#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_RIGHT
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x02
+
+#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+#define POINTING_DEVICE_AUTO_MOUSE_ENABLE
+// only required if not setting mouse layer elsewhere
+#define AUTO_MOUSE_DEFAULT_LAYER 3
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
+
+//// Rotary Encoder ////
+// GP21
+// GP22
+
+//// Sensor Notes ////
+//// Pi Pico pins ////
+// 3V3 -- Power (not 3v3_EN!)
+// GP21 -- CS pin
+// GP20 -- MISO pin
+// GP19 -- MOSI pin
+// GP18 -- SCK pin clock
+// GND -- GND
+
+// WS2812 RGB LED strip input and number of LEDs
+//#ifdef RGBLIGHT_ENABLE
+//#define RGB_DI_PIN GP17
+//#define RGBLED_NUM 34
+////#define DRIVER_LED_TOTAL 34
+//#define RGBLED_SPLIT { 17, 17 }
+//#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+//#define NOP_FUDGE 0.4
+//#endif
+
+#ifdef RGBLIGHT_ENABLE
+#define RGBLIGHT_LAYERS
+//#define WS2812_PIO_USE_PIO1
+//#define WS2812_PIO_USE_PIO1
+#define RGB_DI_PIN GP27 // can use trackball jack if not used
+//#define WS2812_EXTERNAL_PULLUP
+#define RGBLED_NUM 24
+//#define DRIVER_LED_TOTAL 34
+#define RGBLED_SPLIT { 12, 12 }
+#define RGBLIGHT_SPLIT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 17
+#define RGBLIGHT_LIMIT_VAL 255
+//#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+#define NOP_FUDGE 0.4 // may not be needed if ws driver loaded
+#endif
+
+//// OLED Pins and Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD0
+#define I2C1_SDA_PIN GP16
+#define I2C1_SCL_PIN GP17
+//#define RGBLIGHT_LAYERS
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+// Misc settings
+// 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
+// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_mini_track/info.json b/keyboards/handwired/wylderbuilds/trackball/3x6_mini_track/info.json
new file mode 100644
index 00000000000..7dd7ca54622
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_mini_track/info.json
@@ -0,0 +1,249 @@
+{
+ "keyboard_name": "Dactyl-Manuform Wyld Trackball (3x5_3_track)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0047",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 8,
+ "cols": 6
+ },
+ "layouts": {
+ "LAYOUT_split_3x6_mini": {
+ "layout": [
+ {
+ "label": "0,2",
+ "x": 2,
+ "y": 0
+ },
+ {
+ "label": "0,3",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "4,0",
+ "x": 11.75,
+ "y": 0
+ },
+ {
+ "label": "4,1",
+ "x": 12.75,
+ "y": 0
+ },
+ {
+ "label": "4,2",
+ "x": 13.75,
+ "y": 0
+ },
+ {
+ "label": "4,3",
+ "x": 14.75,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 0,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "4,4",
+ "x": 15.75,
+ "y": 0.5
+ },
+ {
+ "label": "4,5",
+ "x": 16.75,
+ "y": 0.5
+ },
+ {
+ "label": "1,2",
+ "x": 2,
+ "y": 1
+ },
+ {
+ "label": "1,3",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "5,0",
+ "x": 11.75,
+ "y": 1
+ },
+ {
+ "label": "5,1",
+ "x": 12.75,
+ "y": 1
+ },
+ {
+ "label": "5,2",
+ "x": 13.75,
+ "y": 1
+ },
+ {
+ "label": "5,3",
+ "x": 14.75,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 0,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "5,4",
+ "x": 15.75,
+ "y": 1.5
+ },
+ {
+ "label": "5,5",
+ "x": 16.75,
+ "y": 1.5
+ },
+ {
+ "label": "2,2",
+ "x": 2,
+ "y": 2
+ },
+ {
+ "label": "2,3",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "6,0",
+ "x": 11.75,
+ "y": 2
+ },
+ {
+ "label": "6,1",
+ "x": 12.75,
+ "y": 2
+ },
+ {
+ "label": "6,2",
+ "x": 13.75,
+ "y": 2
+ },
+ {
+ "label": "6,3",
+ "x": 14.75,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 0,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "6,4",
+ "x": 15.75,
+ "y": 2.5
+ },
+ {
+ "label": "6,5",
+ "x": 16.75,
+ "y": 2.5
+ },
+ {
+ "label": "3,3",
+ "x": 4.25,
+ "y": 3.5
+ },
+ {
+ "label": "3,4",
+ "x": 5.25,
+ "y": 3.5
+ },
+ {
+ "label": "3,5",
+ "x": 6.25,
+ "y": 3.5
+ },
+ {
+ "label": "7,0",
+ "x": 11.5,
+ "y": 3.5
+ },
+ {
+ "label": "3,1",
+ "x": 5.25,
+ "y": 4.5
+ },
+ {
+ "label": "3,2",
+ "x": 6.25,
+ "y": 4.5
+ },
+ {
+ "label": "7,1",
+ "x": 11.5,
+ "y": 4.5
+ },
+ {
+ "label": "7,2",
+ "x": 10.5,
+ "y": 5.5
+ },
+ {
+ "label": "7,3",
+ "x": 11.5,
+ "y": 5.5
+ }
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_mini_track/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/3x6_mini_track/keymaps/vial/config.h
new file mode 100644
index 00000000000..4099ec0f035
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_mini_track/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x51, 0x69, 0x1F, 0x6E, 0x6D, 0x8A, 0xD4, 0x57}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 3 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 3 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_mini_track/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/3x6_mini_track/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..c2791ac0679
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_mini_track/keymaps/vial/keymap.c
@@ -0,0 +1,245 @@
+#include QMK_KEYBOARD_H
+#include "3x6_mini_track.h"
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+#define _MOUSE 3
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+enum wyld_keycodes {
+ WYLD_AUTO_MS_TOG = SAFE_RANGE
+};
+
+// TRACKBALL IN WALL LAYOUT (STANDARD 3X5_3)
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_split_3x6_mini(
+ KC_ESC , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_MINS,
+ 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_BSLS,
+ RAISE, KC_SPC, KC_TAB, LOWER,
+ KC_LALT, KC_LGUI, KC_ENT,
+ KC_RCTL, KC_BSPC
+ ),
+ [_RAISE] = LAYOUT_split_3x6_mini(
+ _______, _______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,
+ QK_BOOT, KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,
+ WYLD_AUTO_MS_TOG,DRGSCRL,SNIPING,KC_BTN3,KC_BTN2,KC_BTN1, KC_EQL, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS,
+ _______, KC_BTN1, KC_BTN2, _______,
+ SNIPING, DRGSCRL, _______,
+ _______, _______
+ ),
+
+ [_LOWER] = LAYOUT_split_3x6_mini(
+ KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,
+ DPI_RMOD,DPI_MOD,DPI_RST,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,QK_BOOT,
+ _______, KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,KC_VOLD,KC_VOLU,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______
+ ),
+
+ [_MOUSE] = LAYOUT_split_3x6_mini(
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,KC_BTN2,KC_BTN3,KC_BTN1,_______, _______,KC_BTN1,KC_BTN3,KC_BTN2,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______, KC_BTN1, KC_BTN2, _______,
+ SNIPING, DRGSCRL, _______,
+ _______, _______
+ ),
+};
+
+#ifdef POINTING_DEVICE_AUTO_MOUSE_ENABLE
+void pointing_device_init_user(void) {
+ // This activates automouse layers but sets it as turned off by default
+ set_auto_mouse_enable(true);
+ set_auto_mouse_enable(false);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case WYLD_AUTO_MS_TOG:
+ if (record->event.pressed) {
+ set_auto_mouse_enable(!get_auto_mouse_enable());
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+#endif
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_left()) {
+ return OLED_ROTATION_270;
+ }
+#ifdef POINTING_DEVICE_ENABLE
+ return OLED_ROTATION_270;
+#else
+ return OLED_ROTATION_0;
+#endif
+}
+
+#ifndef POINTING_DEVICE_ENABLE
+static const char PROGMEM wylderbuilds[] = {
+ // 'dark wylderbuilds_oled_name', 128x32
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40,
+ 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x20, 0x60,
+ 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x60, 0x60,
+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0,
+ 0x00, 0x00, 0xc1, 0xc1, 0x01, 0x01, 0xf1, 0x11, 0x01, 0x01, 0x01, 0x31, 0x60, 0xc0, 0x80, 0xc0,
+ 0xf0, 0x10, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0,
+ 0x00, 0x01, 0x03, 0x9e, 0xf8, 0x00, 0x00, 0x20, 0xe0, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0xf0, 0x30, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x98, 0xf0, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x00, 0x70, 0xfe, 0x03, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00,
+ 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x11, 0xf1, 0x11, 0x33, 0x63, 0xc3,
+ 0x83, 0x01, 0x01, 0xc1, 0xe1, 0x31, 0x11, 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,
+ 0x1f, 0x7c, 0xff, 0x07, 0x7c, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7f, 0xff,
+ 0x60, 0x30, 0x18, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xf2, 0x82, 0x02, 0x80, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x7f, 0x0e, 0x1b, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0x81, 0xc1, 0x63,
+ 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00,
+ 0x00, 0x1f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x60, 0x30, 0x1f,
+ 0x07, 0x00, 0x00, 0x01, 0x43, 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static void render_wylderbuilds(void) {
+ oled_write_raw_P(wylderbuilds, sizeof(wylderbuilds));
+}
+
+#endif
+
+static char layer_names[5][8] = {
+ " BASE\n",
+ "LOWER\n",
+ "RAISE\n",
+ "MOUSE\n",
+ " XTRA\n"
+ };
+
+bool oled_task_user(void) {
+ char* layer_name = layer_names[get_highest_layer(layer_state)];
+
+ if (is_keyboard_left()) {
+ // oled_write_P(PSTR("Layer\n"), false);
+ oled_set_cursor(0, 3);
+ oled_write_P(PSTR(layer_name), false);
+
+ oled_set_cursor(2, 6);
+ oled_write_P(PSTR("WPM "), false);
+ oled_set_cursor(2, 7);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 9);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+ } else {
+ // write WPM to right OLED
+#ifdef POINTING_DEVICE_ENABLE
+ char* mode = get_mouse_mode_string();
+ uint16_t dpi = get_current_dpi();
+ oled_set_cursor(2, 3);
+ oled_write_P(PSTR("DPI "), false);
+ oled_set_cursor(0, 5);
+ oled_write_P(PSTR(get_u16_str(dpi, ' ')), false);
+ oled_set_cursor(0, 9);
+ oled_write(PSTR(mode), false);
+#else
+ oled_set_cursor(0, 0);
+ render_wylderbuilds();
+ oled_scroll_left();
+#endif
+ }
+
+ return false;
+}
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+const rgblight_segment_t PROGMEM querty_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {9, 3, HSV_RED}, // Light 4 LEDs, starting with LED 6
+ {21, 3, HSV_RED} // Light 4 LEDs, starting with LED 6
+);
+const rgblight_segment_t PROGMEM lower_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {9, 3, HSV_BLUE},
+ {21, 3, HSV_BLUE}
+);
+const rgblight_segment_t PROGMEM raise_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {9, 3, HSV_YELLOW},
+ {21, 3, HSV_YELLOW}
+);
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ querty_layer, // Overrides caps lock layer
+ lower_layer, // Overrides other layers
+ raise_layer // Overrides other layers
+);
+
+//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(0, layer_state_cmp(state, _QWERTY));
+ return state;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(1, layer_state_cmp(state, _LOWER));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _RAISE));
+ return state;
+}
+
+
+#endif
+
+
+void keyboard_post_init_user(void) {
+#ifdef RGBLIGHT_ENABLE
+ // Enable the LED layers
+ rgblight_layers = my_rgb_layers;
+
+// rgblight_layers = my_rgb_layers;
+// rgblight_enable_noeeprom(); // Enables RGB, without saving settings
+// rgblight_sethsv_noeeprom_cyan();
+// rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
+#endif
+
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+ debug_keyboard=true;
+ debug_mouse=true;
+#else
+ debug_enable=false;
+ debug_matrix=false;
+ debug_keyboard=false;
+ debug_mouse=false;
+#endif
+}
+
+
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_mini_track/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/3x6_mini_track/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..531b731a5a9
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_mini_track/keymaps/vial/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_mini_track/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/3x6_mini_track/keymaps/vial/vial.json
new file mode 100644
index 00000000000..9bc5516d8fb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_mini_track/keymaps/vial/vial.json
@@ -0,0 +1,135 @@
+{
+ "matrix": {
+ "rows": 8,
+ "cols": 6
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 3x6 Mini Track"
+ },
+ [
+ {
+ "x": 2
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ "4,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "4,4",
+ "4,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ {
+ "n": true
+ },
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "x": 4.25
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 4.25
+ },
+ "7,0"
+ ],
+ [
+ {
+ "x": 5.25
+ },
+ "3,1",
+ "3,2",
+ {
+ "x": 4.25
+ },
+ "7,1"
+ ],
+ [
+ {
+ "x": 10.5
+ },
+ "7,2",
+ "7,3"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_mini_track/mcuconf.h b/keyboards/handwired/wylderbuilds/trackball/3x6_mini_track/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_mini_track/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_mini_track/rules.mk b/keyboards/handwired/wylderbuilds/trackball/3x6_mini_track/rules.mk
new file mode 100644
index 00000000000..e2a7caeaf26
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_mini_track/rules.mk
@@ -0,0 +1,20 @@
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+RGBLIGHT_ENABLE = no
+#WS2812_DRIVER = vendor
+#SLEEP_LED_ENABLE = no
+MOUSEKEY_ENABLE = yes
+CONSOLE_ENABLE = no
+#COMMAND_ENABLE = yes
+BOOTMAGIC_ENABLE = yes
+OLED_ENABLE = yes
+OLED_DRIVER = ssd1306
+WPM_ENABLE = yes
+EXTRAKEY_ENABLE = yes # Audio control and System control
+NKRO_ENABLE = yes # Enable N-Key Rollover
+ENCODER_ENABLE = no
+ENCODER_MAP_ENABLE = no
+
+OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_track/3x6_track.c b/keyboards/handwired/wylderbuilds/trackball/3x6_track/3x6_track.c
new file mode 100644
index 00000000000..2bf1effada4
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_track/3x6_track.c
@@ -0,0 +1,17 @@
+/*
+Copyright 2021 @dlford
+
+This 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 "3x6_track.h"
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_track/3x6_track.h b/keyboards/handwired/wylderbuilds/trackball/3x6_track/3x6_track.h
new file mode 100644
index 00000000000..3f4e6c40dc1
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_track/3x6_track.h
@@ -0,0 +1,40 @@
+/*
+Copyright 2021 @dlford
+
+This 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_3x6( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+ L34, L35, R30, \
+ L32, L33, R31, \
+ L30, L31, R32, R33 \
+) { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { L30, L31, L32, L33, L34, L35 }, \
+ { R00, R01, R02, R03, R04, R05 }, \
+ { R10, R11, R12, R13, R14, R15 }, \
+ { R20, R21, R22, R23, R24, R25 }, \
+ { R30, R31, R32, R33, XXX, XXX }, \
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_track/config.h b/keyboards/handwired/wylderbuilds/trackball/3x6_track/config.h
new file mode 100644
index 00000000000..c0d94c1b7c4
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_track/config.h
@@ -0,0 +1,107 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+#include "config_common.h"
+// Basic Config
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+#define BOOTMAGIC_LITE_ROW 0 // TOP RIGHT KEY ON RIGHT SIDE, TOP LEFT KEY ON LEFT SIDE
+#define BOOTMAGIC_LITE_COLUMN 3
+
+//#define PRODUCT_ID 0x0002
+
+#define USE_SERIAL
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+//#define SPLIT_HAND_PIN_LOW_IS_LEFT
+//#define SPLIT_HAND_MATRIX_GRID GP9, GP8
+//#define MASTER_RIGHT
+//#define MASTER_LEFT
+
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+#define SERIAL_USART_PIN_SWAP
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Columns are doubled-up
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 6
+
+#define MATRIX_COL_PINS { GP3, GP4, GP5, GP6, GP7, GP8 }
+#define MATRIX_ROW_PINS { GP10, GP11, GP12, GP13 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define SPLIT_POINTING_ENABLE
+#define ROTATIONAL_TRANSFORM_ANGLE -25
+#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_RIGHT
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x02
+
+#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+
+//// Rotary Encoder ////
+// GP21
+// GP22
+
+//// Sensor Notes ////
+//// Pi Pico pins ////
+// 3V3 -- Power (not 3v3_EN!)
+// GP21 -- CS pin
+// GP20 -- MISO pin
+// GP19 -- MOSI pin
+// GP18 -- SCK pin clock
+// GND -- GND
+
+// WS2812 RGB LED strip input and number of LEDs
+//#ifdef RGBLIGHT_ENABLE
+//#define RGB_DI_PIN GP17
+//#define RGBLED_NUM 34
+////#define DRIVER_LED_TOTAL 34
+//#define RGBLED_SPLIT { 17, 17 }
+//#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+//#define NOP_FUDGE 0.4
+//#endif
+
+//// OLED Pins and Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD1
+#define I2C1_SDA_PIN GP12
+#define I2C1_SCL_PIN GP13
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+// Misc settings
+// 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
+// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_track/info.json b/keyboards/handwired/wylderbuilds/trackball/3x6_track/info.json
new file mode 100644
index 00000000000..c28ad6ae45a
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_track/info.json
@@ -0,0 +1,254 @@
+{
+ "keyboard_name": "Dactyl-Manuform Wyld Trackball (3x6_track)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0038",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 8,
+ "cols": 6
+ },
+ "layouts": {
+ "LAYOUT_3x6": {
+ "layout": [
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "4,0",
+ "x": 11.25,
+ "y": 0
+ },
+ {
+ "label": "4,1",
+ "x": 12.25,
+ "y": 0
+ },
+ {
+ "label": "4,2",
+ "x": 13.25,
+ "y": 0
+ },
+ {
+ "label": "4,3",
+ "x": 14.25,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "4,4",
+ "x": 15.25,
+ "y": 0.5
+ },
+ {
+ "label": "4,5",
+ "x": 16.25,
+ "y": 0.5
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "5,0",
+ "x": 11.25,
+ "y": 1
+ },
+ {
+ "label": "5,1",
+ "x": 12.25,
+ "y": 1
+ },
+ {
+ "label": "5,2",
+ "x": 13.25,
+ "y": 1
+ },
+ {
+ "label": "5,3",
+ "x": 14.25,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "5,4",
+ "x": 15.25,
+ "y": 1.5
+ },
+ {
+ "label": "5,5",
+ "x": 16.25,
+ "y": 1.5
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "6,0",
+ "x": 11.25,
+ "y": 2
+ },
+ {
+ "label": "6,1",
+ "x": 12.25,
+ "y": 2
+ },
+ {
+ "label": "6,2",
+ "x": 13.25,
+ "y": 2
+ },
+ {
+ "label": "6,3",
+ "x": 14.25,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "6,4",
+ "x": 15.25,
+ "y": 2.5
+ },
+ {
+ "label": "6,5",
+ "x": 16.25,
+ "y": 2.5
+ },
+ {
+ "label": "7,0",
+ "x": 11.5,
+ "y": 3.25
+ },
+ {
+ "label": "7,1",
+ "x": 11.5,
+ "y": 4.5
+ },
+ {
+ "label": "7,2",
+ "x": 10.25,
+ "y": 5.75
+ },
+ {
+ "label": "7,3",
+ "x": 11.5,
+ "y": 5.75
+ },
+ {
+ "label": "3,4",
+ "x": 5.5,
+ "y": 2.75
+ },
+ {
+ "label": "3,5",
+ "x": 6.5,
+ "y": 2.75
+ },
+ {
+ "label": "3,2",
+ "x": 4,
+ "y": 6.5
+ },
+ {
+ "label": "3,3",
+ "x": 5,
+ "y": 6.5
+ },
+ {
+ "label": "3,0",
+ "x": 4.5,
+ "y": 7.5
+ },
+ {
+ "label": "3,1",
+ "x": 5.5,
+ "y": 7.5
+ }
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_track/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/3x6_track/keymaps/vial/config.h
new file mode 100644
index 00000000000..7f80045d2b8
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_track/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x4F, 0xBE, 0xBE, 0xE2, 0xF2, 0xF0, 0x27, 0xB0}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 2 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_track/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/3x6_track/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..d91472e14b4
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_track/keymaps/vial/keymap.c
@@ -0,0 +1,53 @@
+#include QMK_KEYBOARD_H
+#include "3x6_track.h"
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_3x6(
+ KC_ESC , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_MINS,
+ 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_BSLS,
+ RAISE, KC_SPC, LOWER,
+ KC_TAB, KC_HOME, KC_ENT,
+ KC_BSPC, KC_GRV, KC_DEL, KC_LALT
+ ),
+
+ [_LOWER] = LAYOUT_3x6(
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,
+ _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,
+ _______,_______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS,
+ _______,_______, _______,
+ KC_BTN3,KC_BTN1, _______,
+ SNIPING,DRGSCRL, _______,QK_BOOT
+
+ ),
+
+ [_RAISE] = LAYOUT_3x6(
+ KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,
+ _______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,KC_VOLD,KC_VOLU,
+ _______,_______, _______,
+ _______,_______, _______,
+ QK_BOOT,_______, _______,_______
+ )
+};
+
+void keyboard_post_init_user(void) {
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+ debug_keyboard=true;
+ debug_mouse=true;
+#else
+ debug_enable=false;
+ debug_matrix=false;
+ debug_keyboard=false;
+ debug_mouse=false;
+#endif
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_track/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/3x6_track/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_track/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_track/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/3x6_track/keymaps/vial/vial.json
new file mode 100644
index 00000000000..c7711d60d9c
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_track/keymaps/vial/vial.json
@@ -0,0 +1,159 @@
+{
+ "matrix": {
+ "rows": 8,
+ "cols": 6
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 3x6 Trackball"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 4.25
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ "4,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 12.25
+ },
+ "4,4",
+ "4,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 4.25
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 12.25
+ },
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 4.25
+ },
+ "6,0",
+ {
+ "n": true
+ },
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 12.25
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 11.5
+ },
+ "7,0"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 11.5
+ },
+ "7,1"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 10.25
+ },
+ "7,2",
+ {
+ "x": 0.25
+ },
+ "7,3"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -4,
+ "x": 5.5
+ },
+ "3,4",
+ "3,5"
+ ],
+ [
+ {
+ "r": -15,
+ "y": 2.75,
+ "x": 4
+ },
+ "3,2",
+ "3,3"
+ ],
+ [
+ {
+ "r": -13,
+ "x": 4.5
+ },
+ "3,0",
+ "3,1"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/3x6_track/rules.mk b/keyboards/handwired/wylderbuilds/trackball/3x6_track/rules.mk
new file mode 100644
index 00000000000..9f3f1162616
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/3x6_track/rules.mk
@@ -0,0 +1,10 @@
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+RGBLIGHT_ENABLE = no
+MOUSEKEY_ENABLE = yes
+CONSOLE_ENABLE = no
+#COMMAND_ENABLE = yes
+BOOTMAGIC_ENABLE = yes
+NKRO_ENABLE = yes # Enable N-Key Rollover
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x5_3_dual_track/4x5_3_all_track.c b/keyboards/handwired/wylderbuilds/trackball/4x5_3_dual_track/4x5_3_all_track.c
new file mode 100644
index 00000000000..ffe4aaccf0f
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x5_3_dual_track/4x5_3_all_track.c
@@ -0,0 +1 @@
+#include "4x5_3_all_track.h"
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x5_3_dual_track/4x5_3_all_track.h b/keyboards/handwired/wylderbuilds/trackball/4x5_3_dual_track/4x5_3_all_track.h
new file mode 100644
index 00000000000..bb677bc7aaa
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x5_3_dual_track/4x5_3_all_track.h
@@ -0,0 +1,28 @@
+#pragma once
+
+#include "trackball.h"
+
+#define XXX KC_NO
+
+
+#define LAYOUT_4x5( \
+ L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \
+ L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \
+ L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \
+ L30, L31, L32, L33, L34, R30, R31, R32, R33, R34, \
+ L42, R42, \
+ L43, R41, \
+ L44, R40 \
+) { \
+ { L00, L01, L02, L03, L04 }, \
+ { L10, L11, L12, L13, L14 }, \
+ { L20, L21, L22, L23, L24 }, \
+ { L30, L31, L32, L33, L34 }, \
+ { XXX, XXX, L42, L43, L44 }, \
+\
+ { R00, R01, R02, R03, R04 }, \
+ { R10, R11, R12, R13, R14 }, \
+ { R20, R21, R22, R23, R24 }, \
+ { R30, R31, R32, R33, R34 }, \
+ { R40, R41, R42, XXX, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x5_3_dual_track/config.h b/keyboards/handwired/wylderbuilds/trackball/4x5_3_dual_track/config.h
new file mode 100644
index 00000000000..6291bb07d9b
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x5_3_dual_track/config.h
@@ -0,0 +1,120 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+// Basic Config
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+
+#define USE_SERIAL
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+//#define SERIAL_USART_PIN_SWAP
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Columns are doubled-up
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 5
+
+#define MATRIX_COL_PINS { GP6, GP5, GP4, GP3, GP2 }
+#define MATRIX_ROW_PINS { GP9, GP10, GP11, GP12, GP13 }
+#define DIODE_DIRECTION COL2ROW
+
+#define SPLIT_LAYER_STATE_ENABLE
+#define POINTING_DEVICE_COMBINED
+#define POINTING_DEVICE_ROTATION_90
+#define ROTATIONAL_TRANSFORM_ANGLE -45 // TESTING RIGHT SHIFTED FROM -35 TO -45 TO TEST LEFT
+#define POINTING_DEVICE_INVERT_Y_RIGHT
+#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_INVERT_X
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x03
+
+#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+#define POINTING_DEVICE_AUTO_MOUSE_ENABLE
+// only required if not setting mouse layer elsewhere
+#define AUTO_MOUSE_DEFAULT_LAYER 3
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 4
+
+//#define ENCODERS_PAD_A { }
+//#define ENCODERS_PAD_B { }
+//#define ENCODER_RESOLUTIONS { }
+//#define ENCODERS_PAD_A_RIGHT { GP17, GP15 }
+//#define ENCODERS_PAD_B_RIGHT { GP16, GP14 }
+//#define ENCODER_RESOLUTIONS_RIGHT { 2 }
+
+
+//// Sensor Notes ////
+//// Pi Pico pins ////
+// 3V3 -- Power (not 3v3_EN)
+// GP17 -- CS pin
+// GP20 -- MISO pin
+// GP19 -- MOSI pin
+// GP18 -- SCK pin clock Driver
+#ifdef RGBLIGHT_ENABLE
+#define WS2812_PIO_USE_PIO1
+//#define WS2812_PIO_USE_PIO1
+//#define WS2812_PIO_USE_PIO1
+#define RGBLIGHT_LAYERS
+#define WS2812_DI_PIN GP22 // can use trackball jack if not used
+//#define WS2812_EXTERNAL_PULLUP
+#define RGBLED_NUM 24
+//#define DRIVER_LED_TOTAL 34
+#define RGBLED_SPLIT { 12, 12 }
+#define RGBLIGHT_SPLIT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 17
+#define RGBLIGHT_LIMIT_VAL 100
+//#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+#define NOP_FUDGE 0.4 // may not be needed if ws driver loaded
+#endif
+
+//// OLED Pins and Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD0
+#define I2C1_SDA_PIN GP16
+#define I2C1_SCL_PIN GP17
+// OLED Options
+#define SPLIT_OLED_ENABLE
+//#define SPLIT_MODS_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+// Misc settings
+// 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// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x5_3_dual_track/info.json b/keyboards/handwired/wylderbuilds/trackball/4x5_3_dual_track/info.json
new file mode 100644
index 00000000000..4786461fbff
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x5_3_dual_track/info.json
@@ -0,0 +1,255 @@
+{
+ "keyboard_name": "Dactyl-Manuform Wyld Whole Dual Trackball (4x6_3_dual_track)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0118",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 10,
+ "cols": 5
+ },
+ "layouts": {
+ "LAYOUT_4x5": {
+ "layout": [
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "5,0",
+ "x": 12.75,
+ "y": 0
+ },
+ {
+ "label": "5,1",
+ "x": 13.75,
+ "y": 0
+ },
+ {
+ "label": "5,2",
+ "x": 14.75,
+ "y": 0
+ },
+ {
+ "label": "5,3",
+ "x": 15.75,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "5,4",
+ "x": 16.75,
+ "y": 0.5
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "6,0",
+ "x": 12.75,
+ "y": 1
+ },
+ {
+ "label": "6,1",
+ "x": 13.75,
+ "y": 1
+ },
+ {
+ "label": "6,2",
+ "x": 14.75,
+ "y": 1
+ },
+ {
+ "label": "6,3",
+ "x": 15.75,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "6,4",
+ "x": 16.75,
+ "y": 1.5
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "7,0",
+ "x": 12.75,
+ "y": 2
+ },
+ {
+ "label": "7,1",
+ "x": 13.75,
+ "y": 2
+ },
+ {
+ "label": "7,2",
+ "x": 14.75,
+ "y": 2
+ },
+ {
+ "label": "7,3",
+ "x": 15.75,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "7,4",
+ "x": 16.75,
+ "y": 2.5
+ },
+ {
+ "label": "3,2",
+ "x": 3,
+ "y": 3
+ },
+ {
+ "label": "3,3",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "3,4",
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "8,0",
+ "x": 12.75,
+ "y": 3
+ },
+ {
+ "label": "8,1",
+ "x": 13.75,
+ "y": 3
+ },
+ {
+ "label": "8,2",
+ "x": 14.75,
+ "y": 3
+ },
+ {
+ "label": "8,3",
+ "x": 15.75,
+ "y": 3
+ },
+ {
+ "label": "3,0",
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "label": "3,1",
+ "x": 2,
+ "y": 3.5
+ },
+ {
+ "label": "8,4",
+ "x": 16.75,
+ "y": 3.5
+ },
+ {
+ "label": "4,2",
+ "x": 5,
+ "y": 3.5
+ },
+ {
+ "label": "4,3",
+ "x": 6,
+ "y": 3.5
+ },
+ {
+ "label": "4,4",
+ "x": 7,
+ "y": 3.5
+ },
+ {
+ "label": "9,0",
+ "x": 11.5,
+ "y": 6
+ },
+ {
+ "label": "9,1",
+ "x": 12.5,
+ "y": 6
+ },
+ {
+ "label": "9,2",
+ "x": 13.5,
+ "y": 6
+ }
+ ]
+ }
+ }
+}
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x5_3_dual_track/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/4x5_3_dual_track/keymaps/vial/config.h
new file mode 100644
index 00000000000..b18c517c8dc
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x5_3_dual_track/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xE0, 0x3C, 0x12, 0xFF, 0xC2, 0x2C, 0x1C, 0xA4}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 4 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 4 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x5_3_dual_track/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/4x5_3_dual_track/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..8d7ed2602b5
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x5_3_dual_track/keymaps/vial/keymap.c
@@ -0,0 +1,291 @@
+#include QMK_KEYBOARD_H
+#include "4x5_3_all_track.h"
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+#define _MOUSE 3
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+enum wyld_keycodes {
+ WYLD_AUTO_MS_TOG = SAFE_RANGE
+};
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_4x5(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ 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_N, KC_M, KC_COMM,KC_DOT ,KC_SLSH,
+ RAISE, LOWER,
+ KC_SPC, KC_ENT,
+ KC_BSPC, KC_DEL
+ ),
+
+ [_LOWER] = LAYOUT_4x5(
+ QK_BOOT,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,KC_PLUS,
+ KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,
+ RGB_VAI, RGB_SAI,RGB_HUI, RGB_MOD, RGB_TOG, KC_P0, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,
+ KC_LPRN, KC_RPRN,_______,SNIPING, DRGSCRL, _______, KC_LEFT, KC_DOWN, KC_UP,KC_RGHT,
+ _______, _______,
+ KC_BTN1, _______,
+ KC_BTN3, _______
+ ),
+
+ [_RAISE] = LAYOUT_4x5(
+ KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6, KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,
+ _______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,
+ KC_LEFT,KC_UP,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_VOLU,KC_VOLD,
+ WYLD_AUTO_MS_TOG,_______,_______,_______,_______, _______,_______,_______,_______,QK_BOOT,
+ _______, _______,
+ _______, _______,
+ _______, _______
+ ),
+ [_MOUSE] = LAYOUT_4x5(
+ _______,_______,_______,_______,_______, _______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______, _______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______, _______,_______,_______,_______,_______,
+ _______,_______,_______,SNIPING, DRGSCRL, _______,_______,_______,_______,_______,
+ _______, _______,
+ KC_BTN1, _______,
+ KC_BTN3, _______
+ )
+};
+
+#ifdef POINTING_DEVICE_COMBINED
+static void check_drag(report_mouse_t* mouse_report) {
+ static int16_t scroll_buffer_x = 0;
+ static int16_t scroll_buffer_y = 0;
+
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_X
+ scroll_buffer_x -= mouse_report->x;
+# else
+ scroll_buffer_x += mouse_report->x;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_X
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ scroll_buffer_y -= mouse_report->y;
+# else
+ scroll_buffer_y += mouse_report->y;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ mouse_report->x = 0;
+ mouse_report->y = 0;
+ if (abs(scroll_buffer_x) > 6) {
+ mouse_report->h = scroll_buffer_x > 0 ? 1 : -1;
+ scroll_buffer_x = 0;
+ }
+ if (abs(scroll_buffer_y) > 6) {
+ mouse_report->v = scroll_buffer_y > 0 ? 1 : -1;
+ scroll_buffer_y = 0;
+ }
+}
+
+report_mouse_t pointing_device_task_combined_user(report_mouse_t left_report, report_mouse_t right_report) {
+ check_drag(&left_report); // updated in trackball.c
+ return pointing_device_combine_reports(left_report, right_report);
+}
+#endif
+
+
+void pointing_device_init_user(void) {
+#ifdef POINTING_DEVICE_AUTO_MOUSE_ENABLE
+ set_auto_mouse_enable(true);
+#endif
+#ifdef POINTING_DEVICE_COMBINED
+ pointing_device_set_cpi_on_side(true, CHARYBDIS_DRAGSCROLL_DPI); // LEFT
+ pointing_device_set_cpi_on_side(false, 2000); // RIGHT
+#endif// always required before the auto mouse feature will work
+}
+
+#ifdef POINTING_DEVICE_AUTO_MOUSE_ENABLE
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case WYLD_AUTO_MS_TOG:
+ if (record->event.pressed) {
+ set_auto_mouse_enable(!get_auto_mouse_enable());
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+#endif
+
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_left()) {
+ return OLED_ROTATION_270;
+ }
+ return OLED_ROTATION_0;
+}
+
+static const char PROGMEM wylderbuilds[] = {
+ // 'dark wylderbuilds_oled_name', 128x32
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40,
+ 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x20, 0x60,
+ 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x60, 0x60,
+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0,
+ 0x00, 0x00, 0xc1, 0xc1, 0x01, 0x01, 0xf1, 0x11, 0x01, 0x01, 0x01, 0x31, 0x60, 0xc0, 0x80, 0xc0,
+ 0xf0, 0x10, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0,
+ 0x00, 0x01, 0x03, 0x9e, 0xf8, 0x00, 0x00, 0x20, 0xe0, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0xf0, 0x30, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x98, 0xf0, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x00, 0x70, 0xfe, 0x03, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00,
+ 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x11, 0xf1, 0x11, 0x33, 0x63, 0xc3,
+ 0x83, 0x01, 0x01, 0xc1, 0xe1, 0x31, 0x11, 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,
+ 0x1f, 0x7c, 0xff, 0x07, 0x7c, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7f, 0xff,
+ 0x60, 0x30, 0x18, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xf2, 0x82, 0x02, 0x80, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x7f, 0x0e, 0x1b, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0x81, 0xc1, 0x63,
+ 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00,
+ 0x00, 0x1f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x60, 0x30, 0x1f,
+ 0x07, 0x00, 0x00, 0x01, 0x43, 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static void render_wylderbuilds(void) {
+ oled_write_raw_P(wylderbuilds, sizeof(wylderbuilds));
+}
+
+bool oled_task_user(void) {
+ oled_set_cursor(0, 3);
+ if (is_keyboard_left()) {
+// oled_write_P(PSTR("Layer\n"), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ oled_write_P(PSTR(" BASE\n"), false);
+ break;
+ case _LOWER:
+ oled_write_P(PSTR("LOWER\n"), false);
+ break;
+ case _RAISE:
+ oled_write_P(PSTR("RAISE\n"), false);
+ break;
+ case _MOUSE:
+ oled_write_P(PSTR("MOUSE\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+ oled_set_cursor(2, 7);
+ oled_write_P(PSTR("WPM "), false);
+ oled_set_cursor(1, 8);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 9);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+ } else {
+ // write WPM to right OLED
+ oled_set_cursor(0, 0);
+ render_wylderbuilds();
+ oled_scroll_left();
+ }
+
+ return false;
+}
+#endif
+
+#if defined(ENCODER_MAP_ENABLE)
+// TWO ENCODERS
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_QWERTY] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_LOWER] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_RAISE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_MOUSE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }
+};
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+const rgblight_segment_t PROGMEM querty_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {9, 3, HSV_RED}, // Light 4 LEDs, starting with LED 6
+ {21, 3, HSV_RED} // Light 4 LEDs, starting with LED 6
+);
+const rgblight_segment_t PROGMEM lower_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {9, 3, HSV_BLUE},
+ {21, 3, HSV_BLUE}
+);
+const rgblight_segment_t PROGMEM raise_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {9, 3, HSV_YELLOW},
+ {21, 3, HSV_YELLOW}
+);
+
+const rgblight_segment_t PROGMEM mouse_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {9, 3, HSV_GREEN},
+ {21, 3, HSV_GREEN}
+);
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ querty_layer, // Overrides caps lock layer
+ lower_layer, // Overrides other layers
+ raise_layer, // Overrides other layers
+ mouse_layer // Overrides other layers
+);
+
+//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(0, layer_state_cmp(state, _QWERTY));
+ return state;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(1, layer_state_cmp(state, _LOWER));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _RAISE));
+ return state;
+}
+
+
+#endif
+
+// rgblight_enable();
+
+
+void keyboard_post_init_user(void) {
+#ifdef RGBLIGHT_ENABLE
+ rgblight_layers = my_rgb_layers;
+// rgblight_layers = my_rgb_layers;
+// rgblight_enable_noeeprom(); // Enables RGB, without saving settings
+// rgblight_sethsv_noeeprom_cyan();
+// rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
+#endif
+
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+ debug_keyboard=true;
+ debug_mouse=true;
+#else
+ debug_enable=false;
+ debug_matrix=false;
+ debug_keyboard=false;
+ debug_mouse=false;
+#endif
+}
+
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x5_3_dual_track/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/4x5_3_dual_track/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x5_3_dual_track/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x5_3_dual_track/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/4x5_3_dual_track/keymaps/vial/vial.json
new file mode 100644
index 00000000000..0321554b892
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x5_3_dual_track/keymaps/vial/vial.json
@@ -0,0 +1,150 @@
+{
+ "matrix": {
+ "rows": 10,
+ "cols": 5
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 4x5 Whole Matrix Dual Track"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 6.75
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "5,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ {
+ "x": 6.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "6,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ {
+ "x": 6.75
+ },
+ "7,0",
+ {
+ "n": true
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "7,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ {
+ "x": 6.75
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "8,4"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -1,
+ "x": 5
+ },
+ "4,2",
+ "4,3",
+ "4,4"
+ ],
+ [
+ {
+ "r": -7,
+ "y": 1.5,
+ "x": 11.5
+ },
+ "9,0",
+ "9,1",
+ "9,2"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x5_3_dual_track/mcuconf.h b/keyboards/handwired/wylderbuilds/trackball/4x5_3_dual_track/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x5_3_dual_track/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x5_3_dual_track/rules.mk b/keyboards/handwired/wylderbuilds/trackball/4x5_3_dual_track/rules.mk
new file mode 100644
index 00000000000..f1c9b5e808d
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x5_3_dual_track/rules.mk
@@ -0,0 +1,22 @@
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+RGBLIGHT_ENABLE = no
+MOUSEKEY_ENABLE = yes
+CONSOLE_ENABLE = no
+#COMMAND_ENABLE = yes
+BOOTMAGIC_ENABLE = yes
+OLED_ENABLE = yes
+#OLED_DRIVER = SSD1306
+WPM_ENABLE = yes
+EXTRAKEY_ENABLE = yes # Audio control and System control
+NKRO_ENABLE = yes # Enable N-Key Rollover
+ENCODER_ENABLE = no
+ENCODER_MAP_ENABLE = no
+
+RGBLIGHT_ENABLE = yes
+WS2812_DRIVER = vendor
+SLEEP_LED_ENABLE = no
+
+OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x5_3_dual_track/wylderbuilds-4x5-whole-matrix-dual-track.json b/keyboards/handwired/wylderbuilds/trackball/4x5_3_dual_track/wylderbuilds-4x5-whole-matrix-dual-track.json
new file mode 100644
index 00000000000..160095f85b9
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x5_3_dual_track/wylderbuilds-4x5-whole-matrix-dual-track.json
@@ -0,0 +1,142 @@
+[
+ {
+ "name": "Wylderbuilds 4x5 Whole Matrix Dual Track"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 6.75
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "5,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ {
+ "x": 6.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "6,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ {
+ "x": 6.75
+ },
+ "7,0",
+ {
+ "n": true
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "7,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ {
+ "x": 6.75
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "8,4"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -1,
+ "x": 5
+ },
+ "4,2",
+ "4,3",
+ "4,4"
+ ],
+ [
+ {
+ "r": -7,
+ "y": 1.5,
+ "x": 11.5
+ },
+ "9,0",
+ "9,1",
+ "9,2"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x5_3_dual_track/wylderbuilds-4x6-whole-dual-trackball-in-wall.json b/keyboards/handwired/wylderbuilds/trackball/4x5_3_dual_track/wylderbuilds-4x6-whole-dual-trackball-in-wall.json
new file mode 100644
index 00000000000..0a8d2d30072
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x5_3_dual_track/wylderbuilds-4x6-whole-dual-trackball-in-wall.json
@@ -0,0 +1,169 @@
+[
+ {
+ "name": "Wylderbuilds 4x6 Whole Dual Trackball In Wall"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3",
+ {
+ "x": 2
+ },
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "5,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3",
+ {
+ "x": 2.5
+ },
+ "5,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ {
+ "n": true
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5.75
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3",
+ {
+ "x": 2
+ },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "8,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 19.25
+ },
+ "8,5"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -1.5,
+ "x": 5
+ },
+ "4,3",
+ "4,4",
+ "4,5"
+ ],
+ [
+ {
+ "r": -7,
+ "y": 1.5,
+ "x": 11.5
+ },
+ "9,0",
+ "9,1",
+ "9,2"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x5_3_track/4x5_3_track.c b/keyboards/handwired/wylderbuilds/trackball/4x5_3_track/4x5_3_track.c
new file mode 100644
index 00000000000..7f947013bf4
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x5_3_track/4x5_3_track.c
@@ -0,0 +1 @@
+#include "4x5_3_track.h"
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x5_3_track/4x5_3_track.h b/keyboards/handwired/wylderbuilds/trackball/4x5_3_track/4x5_3_track.h
new file mode 100644
index 00000000000..bca1037b3f9
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x5_3_track/4x5_3_track.h
@@ -0,0 +1,26 @@
+#pragma once
+
+#include "trackball.h"
+
+#define XXX KC_NO
+
+
+#define LAYOUT_4x5( \
+ L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \
+ L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \
+ L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \
+ L31, L32, R32, R33,\
+ L42, L43, L44, R40, R41, R42 \
+) { \
+ { L00, L01, L02, L03, L04 }, \
+ { L10, L11, L12, L13, L14 }, \
+ { L20, L21, L22, L23, L24 }, \
+ { XXX, L31, L32, XXX, XXX }, \
+ { XXX, XXX, L42, L43, L44 }, \
+\
+ { R00, R01, R02, R03, R04 }, \
+ { R10, R11, R12, R13, R14 }, \
+ { R20, R21, R22, R23, R24 }, \
+ { XXX, XXX, R32, R33, XXX }, \
+ { R40, R41, R42, XXX, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x5_3_track/config.h b/keyboards/handwired/wylderbuilds/trackball/4x5_3_track/config.h
new file mode 100644
index 00000000000..0fb7b3d5f0f
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x5_3_track/config.h
@@ -0,0 +1,92 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+//#include "config_common.h"
+// Basic Config
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+
+#define USE_SERIAL
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+#define SPLIT_LAYER_STATE_ENABLE
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+//#define SERIAL_USART_PIN_SWAP
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Columns are doubled-up
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 5
+
+#define MATRIX_COL_PINS { GP2, GP3, GP4, GP5, GP6 }
+#define MATRIX_ROW_PINS { GP9, GP10, GP11, GP12, GP13 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define SPLIT_POINTING_ENABLE
+#define ROTATIONAL_TRANSFORM_ANGLE -25
+#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_RIGHT
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x02
+
+#define POINTING_DEVICE_AUTO_MOUSE_ENABLE
+// only required if not setting mouse layer elsewhere
+#define AUTO_MOUSE_DEFAULT_LAYER 3
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 4
+
+#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+//#define CHARYBDIS_MINIMUM_DEFAULT_DPI 1200
+//#define CHARYBDIS_DEFAULT_DPI_CONFIG_STEP 200
+//#define CHARYBDIS_MINIMUM_SNIPING_DPI 400
+//#define CHARYBDIS_SNIPING_DPI_CONFIG_STEP 200
+
+
+//// Sensor Notes ////
+//// Pi Pico pins ////
+// 3V3 -- Power (not 3v3_EN)
+// GP17 -- CS pin
+// GP20 -- MISO pin
+// GP19 -- MOSI pin
+// GP18 -- SCK pin clock Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD1
+#define I2C1_SDA_PIN GP12
+#define I2C1_SCL_PIN GP13
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+// Misc settings
+// 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// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x5_3_track/info.json b/keyboards/handwired/wylderbuilds/trackball/4x5_3_track/info.json
new file mode 100644
index 00000000000..d976f70ad96
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x5_3_track/info.json
@@ -0,0 +1,225 @@
+{
+ "keyboard_name": "Dactyl-Manuform Wyld Trackball (4x5_3_track)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0040",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 10,
+ "cols": 5
+ },
+ "layouts": {
+ "LAYOUT_4x5": {
+ "layout": [
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0
+ },
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "5,0",
+ "x": 12.75,
+ "y": 0
+ },
+ {
+ "label": "5,1",
+ "x": 13.75,
+ "y": 0
+ },
+ {
+ "label": "5,2",
+ "x": 14.75,
+ "y": 0
+ },
+ {
+ "label": "5,3",
+ "x": 15.75,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "5,4",
+ "x": 16.75,
+ "y": 0.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "6,0",
+ "x": 12.75,
+ "y": 1
+ },
+ {
+ "label": "6,1",
+ "x": 13.75,
+ "y": 1
+ },
+ {
+ "label": "6,2",
+ "x": 14.75,
+ "y": 1
+ },
+ {
+ "label": "6,3",
+ "x": 15.75,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "6,4",
+ "x": 16.75,
+ "y": 1.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "7,0",
+ "x": 12.75,
+ "y": 2
+ },
+ {
+ "label": "7,1",
+ "x": 13.75,
+ "y": 2
+ },
+ {
+ "label": "7,2",
+ "x": 14.75,
+ "y": 2
+ },
+ {
+ "label": "7,3",
+ "x": 15.75,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "7,4",
+ "x": 16.75,
+ "y": 2.5
+ },
+ {
+ "label": "3,1",
+ "x": 2,
+ "y": 3
+ },
+ {
+ "label": "3,2",
+ "x": 3,
+ "y": 3
+ },
+ {
+ "label": "8,2",
+ "x": 14.75,
+ "y": 3
+ },
+ {
+ "label": "8,3",
+ "x": 15.75,
+ "y": 3
+ },
+ {
+ "label": "4,2",
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "4,3",
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "4,4",
+ "x": 7,
+ "y": 3
+ },
+ {
+ "label": "9,0",
+ "x": 10.75,
+ "y": 5
+ },
+ {
+ "label": "9,1",
+ "x": 11.75,
+ "y": 5
+ },
+ {
+ "label": "9,2",
+ "x": 12.75,
+ "y": 5
+ }
+ ]
+ }
+ }
+}
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x5_3_track/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/4x5_3_track/keymaps/vial/config.h
new file mode 100644
index 00000000000..459ec209a47
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x5_3_track/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x9A, 0xD1, 0x75, 0x49, 0x73, 0x7B, 0x76, 0x13}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 3 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 3 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x5_3_track/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/4x5_3_track/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..d69ee66f6e9
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x5_3_track/keymaps/vial/keymap.c
@@ -0,0 +1,85 @@
+#include QMK_KEYBOARD_H
+#include "4x5_3_track.h"
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+#define _MOUSE 3
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+enum wyld_keycodes {
+ WYLD_AUTO_MS_TOG = SAFE_RANGE
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_4x5(
+ 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_N, KC_M, KC_COMM,KC_DOT ,KC_SLSH,
+ KC_LBRC, KC_RBRC, KC_EQL, KC_BSLS,
+ RAISE, KC_SPC, KC_BSPC, KC_DEL, KC_ENT, LOWER
+ ),
+
+ [_LOWER] = LAYOUT_4x5(
+ QK_BOOT,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,WYLD_AUTO_MS_TOG,
+ KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,
+ _______,_______,_______,SNIPING,DRGSCRL, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,
+ KC_LBRC, KC_RBRC, KC_EQL, KC_BSLS,
+ _______, KC_BTN1, KC_BTN3, _______, _______, _______
+ ),
+
+ [_RAISE] = LAYOUT_4x5(
+ KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6, KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,
+ _______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,
+ KC_LEFT,KC_UP,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_VOLU,KC_VOLD,
+ KC_LBRC, KC_RBRC, KC_EQL, KC_BSLS,
+ _______, _______,_______,q _______,_______,_______
+ ),
+ [_MOUSE] = LAYOUT_4x5(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, SNIPING, DRGSCRL, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, KC_BTN1, KC_BTN3, _______, _______, _______
+ )
+};
+
+void pointing_device_init_user(void) {
+#ifdef POINTING_DEVICE_AUTO_MOUSE_ENABLE
+ set_auto_mouse_enable(true);
+#endif
+#ifdef POINTING_DEVICE_COMBINED
+ pointing_device_set_cpi_on_side(true, CHARYBDIS_DRAGSCROLL_DPI); // LEFT
+ pointing_device_set_cpi_on_side(false, 2000); // RIGHT
+#endif// always required before the auto mouse feature will work
+}
+
+#ifdef POINTING_DEVICE_AUTO_MOUSE_ENABLE
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case WYLD_AUTO_MS_TOG:
+ if (record->event.pressed) {
+ set_auto_mouse_enable(!get_auto_mouse_enable());
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+#endif
+
+void keyboard_post_init_user(void) {
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+ debug_keyboard=true;
+ debug_mouse=true;
+#else
+ debug_enable=false;
+ debug_matrix=false;
+ debug_keyboard=false;
+ debug_mouse=false;
+#endif
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x5_3_track/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/4x5_3_track/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x5_3_track/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x5_3_track/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/4x5_3_track/keymaps/vial/vial.json
new file mode 100644
index 00000000000..756b35928d7
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x5_3_track/keymaps/vial/vial.json
@@ -0,0 +1,135 @@
+{
+ "matrix": {
+ "rows": 10,
+ "cols": 5
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "author": "Wylderbuilds 4x5_3_track"
+ },
+ [
+ {
+ "x": 2
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 6.75
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ {
+ "x": 14.75
+ },
+ "5,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ {
+ "x": 6.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ {
+ "x": 14.75
+ },
+ "6,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ {
+ "x": 6.75
+ },
+ "7,0",
+ {
+ "n": true
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ {
+ "x": 14.75
+ },
+ "7,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "3,1",
+ "3,2",
+ {
+ "x": 10.75
+ },
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -1,
+ "x": 5
+ },
+ "4,2",
+ "4,3",
+ "4,4"
+ ],
+ [
+ {
+ "r": -6.5,
+ "y": 1,
+ "x": 10.75
+ },
+ "9,0",
+ "9,1",
+ "9,2"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x5_3_track/rules.mk b/keyboards/handwired/wylderbuilds/trackball/4x5_3_track/rules.mk
new file mode 100644
index 00000000000..2aefbdc8b39
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x5_3_track/rules.mk
@@ -0,0 +1,10 @@
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+RGBLIGHT_ENABLE = no
+MOUSEKEY_ENABLE = yes
+CONSOLE_ENABLE = no
+MOUSEKEY_ENABLE = yes
+EXTRAKEY_ENABLE = yes # Audio control and System control
+NKRO_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/4x5_all_track.c b/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/4x5_all_track.c
new file mode 100644
index 00000000000..433f3392106
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/4x5_all_track.c
@@ -0,0 +1 @@
+#include "4x5_all_track.h"
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/4x5_all_track.h b/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/4x5_all_track.h
new file mode 100644
index 00000000000..0ef1ec51563
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/4x5_all_track.h
@@ -0,0 +1,28 @@
+#pragma once
+
+#include "trackball.h"
+
+#define XXX KC_NO
+
+
+#define LAYOUT_4x5( \
+ L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \
+ L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \
+ L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \
+ L31, L32, R32, R33, \
+ L33, L34, R40, \
+ L43, L44, R41, \
+ L41, L42, R42, R43 \
+) { \
+ { L00, L01, L02, L03, L04 }, \
+ { L10, L11, L12, L13, L14 }, \
+ { L20, L21, L22, L23, L24 }, \
+ { XXX, L31, L32, L33, L34 }, \
+ { XXX, L41, L42, L43, L44 }, \
+ \
+ { R00, R01, R02, R03, R04 }, \
+ { R10, R11, R12, R13, R14 }, \
+ { R20, R21, R22, R23, R24 }, \
+ { XXX, XXX, R32, R33, XXX }, \
+ { R40, R41, R42, R43, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/config.h b/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/config.h
new file mode 100644
index 00000000000..4ad4dfb5f4f
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/config.h
@@ -0,0 +1,118 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+// Basic Config
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+
+#define USE_SERIAL
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+//#define SERIAL_USART_PIN_SWAP
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Columns are doubled-up
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 5
+
+#define MATRIX_COL_PINS { GP2, GP3, GP4, GP5, GP6 }
+#define MATRIX_ROW_PINS { GP9, GP10, GP11, GP12, GP13 }
+#define DIODE_DIRECTION COL2ROW
+
+#define SPLIT_POINTING_ENABLE
+#define ROTATIONAL_TRANSFORM_ANGLE -25
+#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_RIGHT
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x04
+
+#define CHARYBDIS_DRAGSCROLL_BUFFER_SIZE 10
+
+#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+#define POINTING_DEVICE_AUTO_MOUSE_ENABLE
+// only required if not setting mouse layer elsewhere
+#define AUTO_MOUSE_DEFAULT_LAYER 3
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 4
+
+#define ENCODERS_PAD_A { }
+#define ENCODERS_PAD_B { }
+#define ENCODER_RESOLUTIONS { }
+#define ENCODERS_PAD_A_RIGHT { }
+#define ENCODERS_PAD_B_RIGHT { }
+#define ENCODER_RESOLUTIONS_RIGHT { }
+
+//// Sensor Notes ////
+//// Pi Pico pins ////
+// 3V3 -- Power (not 3v3_EN)
+// GP17 -- CS pin
+// GP20 -- MISO pin
+// GP19 -- MOSI pin
+// GP18 -- SCK pin clock Driver
+#ifdef RGBLIGHT_ENABLE
+#define WS2812_PIO_USE_PIO1
+//#define WS2812_PIO_USE_PIO1
+//#define WS2812_PIO_USE_PIO1
+#define RGBLIGHT_LAYERS
+#define WS2812_DI_PIN GP16 // can use trackball jack if not used
+//#define WS2812_EXTERNAL_PULLUP
+#define RGBLED_NUM 16
+//#define DRIVER_LED_TOTAL 34
+#define RGBLED_SPLIT { 8, 8 }
+#define RGBLIGHT_SPLIT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 17
+#define RGBLIGHT_LIMIT_VAL 100
+//#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+#define NOP_FUDGE 0.4 // may not be needed if ws driver loaded
+#endif
+
+//// OLED Pins and Driver
+//#ifdef OLED_ENABLE
+//#define I2C_DRIVER I2CD0
+//#define I2C1_SDA_PIN GP16
+//#define I2C1_SCL_PIN GP17
+//// OLED Options
+//#define SPLIT_OLED_ENABLE
+////#define SPLIT_MODS_ENABLE
+//#define SPLIT_WPM_ENABLE
+//#define OLED_DISPLAY_WIDTH 128
+//#define OLED_DISPLAY_HEIGHT 32
+//#define OLED_MATRIX_SIZE 512
+//#define OLED_RESET -1
+//#define OLED_DISPLAY_ADDRESS 0x3C
+//#define OLED_BRIGHTNESS 255
+//#define OLED_TIMEOUT 32000
+//#define OLED_FADE_OUT
+//#define OLED_FADE_OUT_INTERVAL 0
+//#endif
+
+// Misc settings
+// 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// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/info.json b/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/info.json
new file mode 100644
index 00000000000..b193b8c8194
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/info.json
@@ -0,0 +1,245 @@
+{
+ "keyboard_name": "Dactyl-Manuform 4x5 Trackball",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0233",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 10,
+ "cols": 5
+ },
+ "layouts": {
+ "LAYOUT_4x5": {
+ "layout": [
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0
+ },
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "5,0",
+ "x": 12.75,
+ "y": 0
+ },
+ {
+ "label": "5,1",
+ "x": 13.75,
+ "y": 0
+ },
+ {
+ "label": "5,2",
+ "x": 14.75,
+ "y": 0
+ },
+ {
+ "label": "5,3",
+ "x": 15.75,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "5,4",
+ "x": 16.75,
+ "y": 0.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "6,0",
+ "x": 12.75,
+ "y": 1
+ },
+ {
+ "label": "6,1",
+ "x": 13.75,
+ "y": 1
+ },
+ {
+ "label": "6,2",
+ "x": 14.75,
+ "y": 1
+ },
+ {
+ "label": "6,3",
+ "x": 15.75,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "6,4",
+ "x": 16.75,
+ "y": 1.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "7,0",
+ "x": 12.75,
+ "y": 2
+ },
+ {
+ "label": "7,1",
+ "x": 13.75,
+ "y": 2
+ },
+ {
+ "label": "7,2",
+ "x": 14.75,
+ "y": 2
+ },
+ {
+ "label": "7,3",
+ "x": 15.75,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "7,4",
+ "x": 16.75,
+ "y": 2.5
+ },
+ {
+ "label": "3,1",
+ "x": 2,
+ "y": 3
+ },
+ {
+ "label": "3,2",
+ "x": 3,
+ "y": 3
+ },
+ {
+ "label": "8,1",
+ "x": 13.75,
+ "y": 3
+ },
+ {
+ "label": "8,2",
+ "x": 14.75,
+ "y": 3
+ },
+ {
+ "label": "3,3",
+ "x": 4.25,
+ "y": 4
+ },
+ {
+ "label": "3,4",
+ "x": 5.25,
+ "y": 4
+ },
+ {
+ "label": "9,0",
+ "x": 12.5,
+ "y": 4
+ },
+ {
+ "label": "4,3",
+ "x": 4.75,
+ "y": 5
+ },
+ {
+ "label": "4,4",
+ "x": 5.75,
+ "y": 5
+ },
+ {
+ "label": "9,1",
+ "x": 12.5,
+ "y": 5
+ },
+ {
+ "label": "4,1",
+ "x": 5.25,
+ "y": 6
+ },
+ {
+ "label": "4,2",
+ "x": 6.25,
+ "y": 6
+ },
+ {
+ "label": "9,2",
+ "x": 11.5,
+ "y": 6
+ },
+ {
+ "label": "9,3",
+ "x": 12.5,
+ "y": 6
+ }
+ ]
+ }
+ }
+}
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/keymaps/vial/config.h
new file mode 100644
index 00000000000..b18c517c8dc
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xE0, 0x3C, 0x12, 0xFF, 0xC2, 0x2C, 0x1C, 0xA4}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 4 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 4 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..c7ead0f0d8f
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/keymaps/vial/keymap.c
@@ -0,0 +1,197 @@
+#include QMK_KEYBOARD_H
+#include "4x5_all_track.h"
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+#define _MOUSE 3
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+enum wyld_keycodes {
+ WYLD_AUTO_MS_TOG = SAFE_RANGE
+};
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_4x5(
+ 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_N, KC_M, KC_COMM,KC_DOT ,KC_SLSH,
+ KC_LBRC, KC_RBRC, KC_PLUS, KC_EQL,
+ RAISE, KC_SPC, LOWER,
+ KC_TAB, KC_BSPC, KC_ENT,
+ KC_DEL, KC_RSFT, KC_LSFT, KC_LALT
+ ),
+
+ [_LOWER] = LAYOUT_4x5(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_HOME,KC_PGUP,_______, KC_LPRN ,KC_RPRN, KC_KP_SLASH, KC_P4 , KC_P5 , KC_P6 ,KC_PLUS,
+ KC_END, KC_PGDN,_______, KC_LBRC, KC_RBRC, KC_KP_ENTER, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,
+ KC_GRV, _______, KC_P0, KC_KP_DOT,
+ _______,_______, _______,
+ KC_BTN3,KC_BTN1, _______,
+ SNP_TOG,DRG_TOG, _______,QK_BOOT
+ ),
+
+ [_RAISE] = LAYOUT_4x5(
+ KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6, KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,
+ DPI_RMOD,DPI_MOD,DPI_RST,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,
+ RGB_VAI, RGB_HUI, RGB_MOD, RGB_TOG, KC_LPRN, KC_RPRN,KC_LEFT,KC_UP,KC_DOWN,KC_RGHT,
+ WYLD_AUTO_MS_TOG,_______, _______,_______,
+ _______,KC_ESC, _______,
+ _______,_______, KC_ESC,
+ QK_BOOT,_______, _______,_______
+ ),
+ [_MOUSE] = LAYOUT_4x5(
+ _______,_______,_______,_______,_______, _______,_______,_______,_______,_______,
+ _______,KC_BTN2,KC_BTN3,KC_BTN1,_______, _______,KC_BTN1,KC_BTN3,KC_BTN2,_______,
+ _______,_______,_______,_______,_______, _______,_______,_______,_______,_______,
+ SNIPING, DRGSCRL, _______,_______,
+ _______,_______, _______,
+ KC_BTN3,KC_BTN1, _______,
+ SNP_TOG,DRG_TOG, _______,_______
+ )
+};
+
+#ifdef POINTING_DEVICE_COMBINED
+static void check_drag(report_mouse_t* mouse_report) {
+ static int16_t scroll_buffer_x = 0;
+ static int16_t scroll_buffer_y = 0;
+
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_X
+ scroll_buffer_x -= mouse_report->x;
+# else
+ scroll_buffer_x += mouse_report->x;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_X
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ scroll_buffer_y -= mouse_report->y;
+# else
+ scroll_buffer_y += mouse_report->y;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ mouse_report->x = 0;
+ mouse_report->y = 0;
+ if (abs(scroll_buffer_x) > 6) {
+ mouse_report->h = scroll_buffer_x > 0 ? 1 : -1;
+ scroll_buffer_x = 0;
+ }
+ if (abs(scroll_buffer_y) > 6) {
+ mouse_report->v = scroll_buffer_y > 0 ? 1 : -1;
+ scroll_buffer_y = 0;
+ }
+}
+
+report_mouse_t pointing_device_task_combined_user(report_mouse_t left_report, report_mouse_t right_report) {
+ check_drag(&left_report); // updated in trackball.c
+ return pointing_device_combine_reports(left_report, right_report);
+}
+#endif
+
+
+void pointing_device_init_user(void) {
+#ifdef POINTING_DEVICE_AUTO_MOUSE_ENABLE
+ set_auto_mouse_enable(true);
+ set_auto_mouse_enable(false);
+#endif
+#ifdef POINTING_DEVICE_COMBINED
+ pointing_device_set_cpi_on_side(true, CHARYBDIS_DRAGSCROLL_DPI); // LEFT
+ pointing_device_set_cpi_on_side(false, 2000); // RIGHT
+#endif// always required before the auto mouse feature will work
+}
+
+#ifdef POINTING_DEVICE_AUTO_MOUSE_ENABLE
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case WYLD_AUTO_MS_TOG:
+ if (record->event.pressed) {
+ set_auto_mouse_enable(!get_auto_mouse_enable());
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+#endif
+
+#if defined(ENCODER_MAP_ENABLE)
+// TWO ENCODERS
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_QWERTY] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_LOWER] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_RAISE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_MOUSE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }
+};
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+const rgblight_segment_t PROGMEM querty_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {6, 2, HSV_RED},
+ {14, 2, HSV_RED}
+);
+const rgblight_segment_t PROGMEM lower_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {6, 2, HSV_BLUE},
+ {14, 2, HSV_BLUE}
+);
+const rgblight_segment_t PROGMEM raise_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {6, 2, HSV_YELLOW},
+ {14, 2, HSV_YELLOW}
+);
+
+const rgblight_segment_t PROGMEM mouse_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {6, 2, HSV_PURPLE},
+ {14, 2, HSV_PURPLE}
+);
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ querty_layer, // Overrides caps lock layer
+ lower_layer, // Overrides other layers
+ raise_layer, // Overrides other layers
+ mouse_layer // Overrides other layers
+);
+
+//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(0, layer_state_cmp(state, _QWERTY));
+ return state;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(1, layer_state_cmp(state, _LOWER));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _RAISE));
+ rgblight_set_layer_state(3, layer_state_cmp(state, _MOUSE));
+ return state;
+}
+
+#endif
+
+// rgblight_enable();
+
+
+void keyboard_post_init_user(void) {
+#ifdef RGBLIGHT_ENABLE
+ rgblight_layers = my_rgb_layers;
+// rgblight_layers = my_rgb_layers;
+// rgblight_enable_noeeprom(); // Enables RGB, without saving settings
+// rgblight_sethsv_noeeprom_cyan();
+// rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
+#endif
+
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+ debug_keyboard=true;
+ debug_mouse=true;
+#else
+ debug_enable=false;
+ debug_matrix=false;
+ debug_keyboard=false;
+ debug_mouse=false;
+#endif
+}
+
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/keymaps/vial/vial.json
new file mode 100644
index 00000000000..05c10783188
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/keymaps/vial/vial.json
@@ -0,0 +1,149 @@
+{
+ "matrix": {
+ "rows": 10,
+ "cols": 5
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 4x5 Standard Track"
+ },
+ [
+ {
+ "x": 2
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 6.75
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ {
+ "x": 14.75
+ },
+ "5,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ {
+ "x": 6.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ {
+ "x": 14.75
+ },
+ "6,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ {
+ "x": 6.75
+ },
+ "7,0",
+ {
+ "n": true
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ {
+ "x": 14.75
+ },
+ "7,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "3,1",
+ "3,2",
+ {
+ "x": 10.75
+ },
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "x": 4.25
+ },
+ "3,3",
+ "3,4",
+ {
+ "x": 6.25
+ },
+ "9,0"
+ ],
+ [
+ {
+ "x": 4.75
+ },
+ "4,3",
+ "4,4",
+ {
+ "x": 5.75
+ },
+ "9,1"
+ ],
+ [
+ {
+ "x": 5.25
+ },
+ "4,1",
+ "4,2",
+ {
+ "x": 4.25
+ },
+ "9,2",
+ "9,3"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/mcuconf.h b/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/rules.mk b/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/rules.mk
new file mode 100644
index 00000000000..6075fda80d8
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/rules.mk
@@ -0,0 +1,22 @@
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+RGBLIGHT_ENABLE = no
+MOUSEKEY_ENABLE = yes
+CONSOLE_ENABLE = no
+#COMMAND_ENABLE = yes
+BOOTMAGIC_ENABLE = yes
+OLED_ENABLE = no
+#OLED_DRIVER = SSD1306
+WPM_ENABLE = no
+EXTRAKEY_ENABLE = yes # Audio control and System control
+NKRO_ENABLE = yes # Enable N-Key Rollover
+ENCODER_ENABLE = no
+ENCODER_MAP_ENABLE = no
+
+RGBLIGHT_ENABLE = yes
+WS2812_DRIVER = vendor
+SLEEP_LED_ENABLE = yes
+
+#OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/wylderbuilds-4x5-standard-track.json b/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/wylderbuilds-4x5-standard-track.json
new file mode 100644
index 00000000000..7a21c380af2
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/wylderbuilds-4x5-standard-track.json
@@ -0,0 +1,141 @@
+[
+ {
+ "name": "Wylderbuilds 4x5 Standard Track"
+ },
+ [
+ {
+ "x": 2
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 6.75
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ {
+ "x": 14.75
+ },
+ "5,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ {
+ "x": 6.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ {
+ "x": 14.75
+ },
+ "6,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ {
+ "x": 6.75
+ },
+ "7,0",
+ {
+ "n": true
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ {
+ "x": 14.75
+ },
+ "7,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "3,1",
+ "3,2",
+ {
+ "x": 10.75
+ },
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "x": 4.25
+ },
+ "3,3",
+ "3,4",
+ {
+ "x": 6.25
+ },
+ "9,0"
+ ],
+ [
+ {
+ "x": 4.75
+ },
+ "4,3",
+ "4,4",
+ {
+ "x": 5.75
+ },
+ "9,1"
+ ],
+ [
+ {
+ "x": 5.25
+ },
+ "4,1",
+ "4,2",
+ {
+ "x": 4.25
+ },
+ "9,2",
+ "9,3"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/wylderbuilds-4x5-whole-matrix-dual-track.json b/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/wylderbuilds-4x5-whole-matrix-dual-track.json
new file mode 100644
index 00000000000..160095f85b9
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/wylderbuilds-4x5-whole-matrix-dual-track.json
@@ -0,0 +1,142 @@
+[
+ {
+ "name": "Wylderbuilds 4x5 Whole Matrix Dual Track"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 6.75
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "5,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ {
+ "x": 6.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "6,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ {
+ "x": 6.75
+ },
+ "7,0",
+ {
+ "n": true
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "7,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ {
+ "x": 6.75
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "8,4"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -1,
+ "x": 5
+ },
+ "4,2",
+ "4,3",
+ "4,4"
+ ],
+ [
+ {
+ "r": -7,
+ "y": 1.5,
+ "x": 11.5
+ },
+ "9,0",
+ "9,1",
+ "9,2"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/wylderbuilds-4x5-whole-track (1).json b/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/wylderbuilds-4x5-whole-track (1).json
new file mode 100644
index 00000000000..4c659954708
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/wylderbuilds-4x5-whole-track (1).json
@@ -0,0 +1,172 @@
+[
+ {
+ "name": "Wylderbuilds 4x5 Whole Track"
+ },
+ [
+ {
+ "x": 2
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 6.75
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ {
+ "x": 14.75
+ },
+ "5,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ {
+ "x": 6.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ {
+ "x": 14.75
+ },
+ "6,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ {
+ "x": 6.75
+ },
+ "7,0",
+ {
+ "n": true
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ {
+ "x": 14.75
+ },
+ "7,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ {
+ "x": 6.75
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ {
+ "x": 14.75
+ },
+ "8,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4.25
+ },
+ "4,3",
+ "4,4",
+ {
+ "x": 6.25
+ },
+ "9,0"
+ ],
+ [
+ {
+ "x": 4.75
+ },
+ "4,5",
+ "4,2",
+ {
+ "x": 5.75
+ },
+ "9,1"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 10.25
+ },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 5.25
+ },
+ "4,0",
+ "4,1",
+ {
+ "x": 5.25
+ },
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 10.75
+ },
+ "9,2"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/wylderbuilds-4x5-whole-track.json b/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/wylderbuilds-4x5-whole-track.json
new file mode 100644
index 00000000000..d6e16275f92
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/wylderbuilds-4x5-whole-track.json
@@ -0,0 +1,157 @@
+[
+ {
+ "name": "Wylderbuilds 4x5 Whole Track"
+ },
+ [
+ {
+ "x": 2
+ },
+ "0,1",
+ "0,2",
+ "0,3",
+ "0,4",
+ {
+ "x": 6.75
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ {
+ "x": 14.75
+ },
+ "5,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "1,1",
+ "1,2",
+ "1,3",
+ "1,4",
+ {
+ "x": 6.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ {
+ "x": 14.75
+ },
+ "6,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "2,1",
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ {
+ "x": 6.75
+ },
+ "7,0",
+ {
+ "n": true
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ {
+ "x": 14.75
+ },
+ "7,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "3,1",
+ "3,2",
+ "3,3",
+ "3,4",
+ {
+ "x": 6.75
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ {
+ "x": 14.75
+ },
+ "8,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4.25
+ },
+ "4,3",
+ "4,4",
+ {
+ "x": 6.25
+ },
+ "9,0"
+ ],
+ [
+ {
+ "x": 4.75
+ },
+ "4,5",
+ "4,2",
+ {
+ "x": 5.75
+ },
+ "9,1"
+ ],
+ [
+ {
+ "x": 5.25
+ },
+ "4,0",
+ "4,1",
+ {
+ "x": 4.25
+ },
+ "9,2",
+ "9,3"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/wylderbuilds-4x6-whole-dual-trackball-in-wall.json b/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/wylderbuilds-4x6-whole-dual-trackball-in-wall.json
new file mode 100644
index 00000000000..0a8d2d30072
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x5_all_track/wylderbuilds-4x6-whole-dual-trackball-in-wall.json
@@ -0,0 +1,169 @@
+[
+ {
+ "name": "Wylderbuilds 4x6 Whole Dual Trackball In Wall"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3",
+ {
+ "x": 2
+ },
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "5,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3",
+ {
+ "x": 2.5
+ },
+ "5,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ {
+ "n": true
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5.75
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3",
+ {
+ "x": 2
+ },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "8,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 19.25
+ },
+ "8,5"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -1.5,
+ "x": 5
+ },
+ "4,3",
+ "4,4",
+ "4,5"
+ ],
+ [
+ {
+ "r": -7,
+ "y": 1.5,
+ "x": 11.5
+ },
+ "9,0",
+ "9,1",
+ "9,2"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_dual_track/4x6_3_all_track.c b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_dual_track/4x6_3_all_track.c
new file mode 100644
index 00000000000..716f3769143
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_dual_track/4x6_3_all_track.c
@@ -0,0 +1 @@
+#include "4x6_3_all_track.h"
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_dual_track/4x6_3_all_track.h b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_dual_track/4x6_3_all_track.h
new file mode 100644
index 00000000000..eb3cc266c6e
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_dual_track/4x6_3_all_track.h
@@ -0,0 +1,28 @@
+#pragma once
+
+#include "trackball.h"
+
+#define XXX KC_NO
+
+
+#define LAYOUT_4x6( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+ L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \
+ L43, R42, \
+ L44, R41, \
+ L45, R40 \
+) { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { L30, L31, L32, L33, L34, L35 }, \
+ { XXX, XXX, XXX, L43, L44, L45 }, \
+\
+ { R00, R01, R02, R03, R04, R05 }, \
+ { R10, R11, R12, R13, R14, R15 }, \
+ { R20, R21, R22, R23, R24, R25 }, \
+ { R30, R31, R32, R33, R34, R35 }, \
+ { R40, R41, R42, XXX, XXX, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_dual_track/config.h b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_dual_track/config.h
new file mode 100644
index 00000000000..7c6e9caa9d3
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_dual_track/config.h
@@ -0,0 +1,87 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+// Basic Config
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+
+#define USE_SERIAL
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+//#define SERIAL_USART_PIN_SWAP
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Columns are doubled-up
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 6
+
+#define MATRIX_COL_PINS { GP2, GP3, GP4, GP5, GP6, GP7 }
+#define MATRIX_ROW_PINS { GP13, GP12, GP11, GP10, GP9 }
+#define DIODE_DIRECTION COL2ROW
+
+#define POINTING_DEVICE_COMBINED
+#define POINTING_DEVICE_ROTATION_90
+#define ROTATIONAL_TRANSFORM_ANGLE -45 // TESTING RIGHT SHIFTED FROM -35 TO -45 TO TEST LEFT
+#define POINTING_DEVICE_INVERT_Y_RIGHT
+#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_INVERT_X
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x03
+
+#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+#define ENCODERS_PAD_A { }
+#define ENCODERS_PAD_B { }
+#define ENCODER_RESOLUTIONS { }
+#define ENCODERS_PAD_A_RIGHT { GP17, GP15 }
+#define ENCODERS_PAD_B_RIGHT { GP16, GP14 }
+#define ENCODER_RESOLUTIONS_RIGHT { 2 }
+
+
+//// Sensor Notes ////
+//// Pi Pico pins ////
+// 3V3 -- Power (not 3v3_EN)
+// GP17 -- CS pin
+// GP20 -- MISO pin
+// GP19 -- MOSI pin
+// GP18 -- SCK pin clock Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD0
+#define I2C1_SDA_PIN GP16
+#define I2C1_SCL_PIN GP17
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+// Misc settings
+// 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// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_dual_track/info.json b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_dual_track/info.json
new file mode 100644
index 00000000000..d6c0e5791fe
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_dual_track/info.json
@@ -0,0 +1,295 @@
+{
+ "keyboard_name": "Dactyl-Manuform Wyld Whole Dual Trackball (4x6_3_all_dual_track)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0058",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 10,
+ "cols": 6
+ },
+ "layouts": {
+ "LAYOUT_4x6": {
+ "layout": [
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "5,0",
+ "x": 12.75,
+ "y": 0
+ },
+ {
+ "label": "5,1",
+ "x": 13.75,
+ "y": 0
+ },
+ {
+ "label": "5,2",
+ "x": 14.75,
+ "y": 0
+ },
+ {
+ "label": "5,3",
+ "x": 15.75,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "5,4",
+ "x": 16.75,
+ "y": 0.5
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "6,0",
+ "x": 12.75,
+ "y": 1
+ },
+ {
+ "label": "6,1",
+ "x": 13.75,
+ "y": 1
+ },
+ {
+ "label": "6,2",
+ "x": 14.75,
+ "y": 1
+ },
+ {
+ "label": "6,3",
+ "x": 15.75,
+ "y": 1
+ },
+ {
+ "label": "5,5",
+ "x": 19.25,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "6,4",
+ "x": 16.75,
+ "y": 1.5
+ },
+ {
+ "label": "6,5",
+ "x": 17.75,
+ "y": 1.5
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "7,0",
+ "x": 12.75,
+ "y": 2
+ },
+ {
+ "label": "7,1",
+ "x": 13.75,
+ "y": 2
+ },
+ {
+ "label": "7,2",
+ "x": 14.75,
+ "y": 2
+ },
+ {
+ "label": "7,3",
+ "x": 15.75,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "7,4",
+ "x": 16.75,
+ "y": 2.5
+ },
+ {
+ "label": "7,5",
+ "x": 17.75,
+ "y": 2.5
+ },
+ {
+ "label": "3,2",
+ "x": 3,
+ "y": 3
+ },
+ {
+ "label": "3,3",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "3,4",
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "3,5",
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "8,0",
+ "x": 12.75,
+ "y": 3
+ },
+ {
+ "label": "8,1",
+ "x": 13.75,
+ "y": 3
+ },
+ {
+ "label": "8,2",
+ "x": 14.75,
+ "y": 3
+ },
+ {
+ "label": "8,3",
+ "x": 15.75,
+ "y": 3
+ },
+ {
+ "label": "3,0",
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "label": "3,1",
+ "x": 2,
+ "y": 3.5
+ },
+ {
+ "label": "8,4",
+ "x": 16.75,
+ "y": 3.5
+ },
+ {
+ "label": "8,5",
+ "x": 19.25,
+ "y": 4
+ },
+ {
+ "label": "4,3",
+ "x": 5,
+ "y": 3.5
+ },
+ {
+ "label": "4,4",
+ "x": 6,
+ "y": 3.5
+ },
+ {
+ "label": "4,5",
+ "x": 7,
+ "y": 3.5
+ },
+ {
+ "label": "9,0",
+ "x": 11.5,
+ "y": 6
+ },
+ {
+ "label": "9,1",
+ "x": 12.5,
+ "y": 6
+ },
+ {
+ "label": "9,2",
+ "x": 13.5,
+ "y": 6
+ }
+ ]
+ }
+ }
+}
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_dual_track/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_dual_track/keymaps/vial/config.h
new file mode 100644
index 00000000000..de3287bf8a8
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_dual_track/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x3A, 0x72, 0x3A, 0x2B, 0x93, 0x77, 0x5E, 0xD7}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 4 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 4 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_dual_track/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_dual_track/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..de704245df9
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_dual_track/keymaps/vial/keymap.c
@@ -0,0 +1,251 @@
+#include QMK_KEYBOARD_H
+#include "4x6_3_all_track.h"
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_4x6(
+ KC_ESC , KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, 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_MINS,
+ KC_LSFT, 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, DRGSCRL,
+ RAISE , LOWER,
+ KC_SPC, KC_ENT,
+ KC_BSPC, KC_DEL
+ ),
+
+ [_LOWER] = LAYOUT_4x6(
+ KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_MUTE,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,
+ _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,
+ _______,_______,_______,KC_BTN3,KC_BTN2,KC_BTN1, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,DRGSCRL,
+ _______, _______,
+ KC_BTN1, _______,
+ KC_BTN3, QK_BOOT
+
+ ),
+
+ [_RAISE] = LAYOUT_4x6(
+ KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6, KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_MUTE ,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,
+ _______,KC_LEFT,KC_UP,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,KC_VOLD,KC_VOLU,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,DRGSCRL,
+ _______, _______,
+ _______, _______,
+ QK_BOOT, _______
+ ),
+ [3] = LAYOUT_4x6(
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______, _______,
+ _______, _______,
+ _______, _______
+ ),
+ [4] = LAYOUT_4x6(
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______, _______,
+ _______, _______,
+ _______, _______
+ )
+};
+
+// GENERAL
+
+// DUAL TRACKBALL
+
+#ifdef POINTING_DEVICE_COMBINED
+report_mouse_t pointing_device_task_combined_user(report_mouse_t left_report, report_mouse_t right_report) {
+ check_drag_scroll(&left_report); // updated in trackball.c
+ return pointing_device_combine_reports(left_report, right_report);
+}
+#endif
+
+
+// AUTOMOUSE LAYERS
+#ifdef POINTING_DEVICE_AUTO_MOUSE_ENABLE
+void pointing_device_init_user(void) {
+ set_auto_mouse_enable(true);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case WYLD_AUTO_MS_TOG:
+ if (record->event.pressed) {
+ set_auto_mouse_enable(!get_auto_mouse_enable());
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+#endif
+
+// ENCODERS
+#ifdef ENCODER_MAP_ENABLE
+//#if NUM_ENCODERS == 1
+//const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+// [_QWERTY] = { ENCODER_CCW_CW(KC_MS_WH_DOWN, KC_MS_WH_UP) },
+// [_LOWER] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+// [_RAISE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+// [3] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+// [4] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }
+//};
+//#elif NUM_ENCODERS == 2
+// TWO ENCODERS
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_QWERTY] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_LOWER] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_RAISE] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [3] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [4] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) }
+};
+//#endif
+#endif
+
+// OLED
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_left()) {
+ return OLED_ROTATION_270;
+ }
+ return OLED_ROTATION_0;
+}
+
+static const char PROGMEM wylderbuilds[] = {
+ // 'dark wylderbuilds_oled_name', 128x32
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40,
+ 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x20, 0x60,
+ 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x60, 0x60,
+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0,
+ 0x00, 0x00, 0xc1, 0xc1, 0x01, 0x01, 0xf1, 0x11, 0x01, 0x01, 0x01, 0x31, 0x60, 0xc0, 0x80, 0xc0,
+ 0xf0, 0x10, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0,
+ 0x00, 0x01, 0x03, 0x9e, 0xf8, 0x00, 0x00, 0x20, 0xe0, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0xf0, 0x30, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x98, 0xf0, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x00, 0x70, 0xfe, 0x03, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00,
+ 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x11, 0xf1, 0x11, 0x33, 0x63, 0xc3,
+ 0x83, 0x01, 0x01, 0xc1, 0xe1, 0x31, 0x11, 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,
+ 0x1f, 0x7c, 0xff, 0x07, 0x7c, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7f, 0xff,
+ 0x60, 0x30, 0x18, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xf2, 0x82, 0x02, 0x80, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x7f, 0x0e, 0x1b, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0x81, 0xc1, 0x63,
+ 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00,
+ 0x00, 0x1f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x60, 0x30, 0x1f,
+ 0x07, 0x00, 0x00, 0x01, 0x43, 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static void render_wylderbuilds(void) {
+ oled_write_raw_P(wylderbuilds, sizeof(wylderbuilds));
+}
+
+bool oled_task_user(void) {
+ oled_set_cursor(0, 3);
+ if (is_keyboard_left()) {
+ // oled_write_P(PSTR("Layer\n"), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ oled_write_P(PSTR(" BASE\n"), false);
+ break;
+ case _LOWER:
+ oled_write_P(PSTR("LOWER\n"), false);
+ break;
+ case _RAISE:
+ oled_write_P(PSTR("RAISE\n"), false);
+ break;
+ case _MOUSE:
+ oled_write_P(PSTR("MOUSE\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+ oled_set_cursor(2, 7);
+ oled_write_P(PSTR("WPM "), false);
+ oled_set_cursor(1, 8);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 9);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+ } else {
+ // write WPM to right OLED
+ oled_set_cursor(0, 0);
+ render_wylderbuilds();
+ oled_scroll_left();
+ }
+
+ return false;
+}
+#endif
+
+// RGB UNDERGLOW
+
+#ifdef RGBLIGHT_ENABLE
+const rgblight_segment_t PROGMEM querty_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_RED}, // Light 4 LEDs, starting with LED 6
+ {33, 3, HSV_RED} // Light 4 LEDs, starting with LED 6
+);
+const rgblight_segment_t PROGMEM lower_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_BLUE},
+ {33, 3, HSV_BLUE}
+);
+const rgblight_segment_t PROGMEM raise_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_YELLOW},
+ {33, 3, HSV_YELLOW}
+);
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ querty_layer, // Overrides caps lock layer
+ lower_layer, // Overrides other layers
+ raise_layer // Overrides other layers
+);
+
+//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(0, layer_state_cmp(state, _QWERTY));
+ return state;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(1, layer_state_cmp(state, _LOWER));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _RAISE));
+ return state;
+}
+
+
+#endif
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_dual_track/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_dual_track/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_dual_track/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_dual_track/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_dual_track/keymaps/vial/vial.json
new file mode 100644
index 00000000000..1f4df2e321f
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_dual_track/keymaps/vial/vial.json
@@ -0,0 +1,141 @@
+{
+ "matrix": {
+ "rows": 10,
+ "cols": 6
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Big Skree 4x6 3-key Arc"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ {
+ "n": true
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ {
+ "x": 9.75
+ },
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -0.5,
+ "x": 5
+ },
+ "4,3",
+ "4,4",
+ "4,5"
+ ],
+ [
+ {
+ "r": -7,
+ "y": 1.5,
+ "x": 11.5
+ },
+ "9,0",
+ "9,1",
+ "9,2"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_dual_track/mcuconf.h b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_dual_track/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_dual_track/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_dual_track/rules.mk b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_dual_track/rules.mk
new file mode 100644
index 00000000000..450bdd52587
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_dual_track/rules.mk
@@ -0,0 +1,18 @@
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+RGBLIGHT_ENABLE = no
+MOUSEKEY_ENABLE = yes
+CONSOLE_ENABLE = no
+#COMMAND_ENABLE = yes
+BOOTMAGIC_ENABLE = yes
+OLED_ENABLE = no
+OLED_DRIVER = SSD1306
+WPM_ENABLE = yes
+EXTRAKEY_ENABLE = yes # Audio control and System control
+NKRO_ENABLE = yes # Enable N-Key Rollover
+ENCODER_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+
+OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_dual_track/wylderbuilds-4x6-whole-dual-trackball-in-wall.json b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_dual_track/wylderbuilds-4x6-whole-dual-trackball-in-wall.json
new file mode 100644
index 00000000000..0a8d2d30072
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_dual_track/wylderbuilds-4x6-whole-dual-trackball-in-wall.json
@@ -0,0 +1,169 @@
+[
+ {
+ "name": "Wylderbuilds 4x6 Whole Dual Trackball In Wall"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3",
+ {
+ "x": 2
+ },
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "5,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3",
+ {
+ "x": 2.5
+ },
+ "5,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ {
+ "n": true
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5.75
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3",
+ {
+ "x": 2
+ },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "8,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 19.25
+ },
+ "8,5"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -1.5,
+ "x": 5
+ },
+ "4,3",
+ "4,4",
+ "4,5"
+ ],
+ [
+ {
+ "r": -7,
+ "y": 1.5,
+ "x": 11.5
+ },
+ "9,0",
+ "9,1",
+ "9,2"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_track/4x6_3_all_track.c b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_track/4x6_3_all_track.c
new file mode 100644
index 00000000000..716f3769143
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_track/4x6_3_all_track.c
@@ -0,0 +1 @@
+#include "4x6_3_all_track.h"
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_track/4x6_3_all_track.h b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_track/4x6_3_all_track.h
new file mode 100644
index 00000000000..35555e2976d
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_track/4x6_3_all_track.h
@@ -0,0 +1,28 @@
+#pragma once
+
+#include "trackball.h"
+
+#define XXX KC_NO
+
+
+#define LAYOUT_4x6( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, L42, R43, R20, R21, R22, R23, R24, R25, \
+ L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \
+ L43, R40, \
+ L44, R41, \
+ L45, R42 \
+) { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { L30, L31, L32, L33, L34, L35 }, \
+ { XXX, XXX, L42, L43, L44, L45 }, \
+\
+ { R00, R01, R02, R03, R04, R05 }, \
+ { R10, R11, R12, R13, R14, R15 }, \
+ { R20, R21, R22, R23, R24, R25 }, \
+ { R30, R31, R32, R33, R34, R35 }, \
+ { R40, R41, R42, R43, XXX, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_track/config.h b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_track/config.h
new file mode 100644
index 00000000000..a88a52d7181
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_track/config.h
@@ -0,0 +1,100 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+//#include "config_common.h"
+// Basic Config
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+
+#define USE_SERIAL
+#define SPLIT_HAND_PIN GP22 // high = left, low = right
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+#define SERIAL_USART_PIN_SWAP
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Columns are doubled-up
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 6
+
+#define MATRIX_COL_PINS { GP3, GP4, GP5, GP6, GP7, GP8 }
+#define MATRIX_ROW_PINS { GP10, GP11, GP12, GP13, GP14 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define SPLIT_POINTING_ENABLE
+#define ROTATIONAL_TRANSFORM_ANGLE -25
+#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_RIGHT
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x0C
+
+#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+#define POINTING_DEVICE_AUTO_MOUSE_ENABLE
+// only required if not setting mouse layer elsewhere
+#define AUTO_MOUSE_DEFAULT_LAYER 3
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 4
+
+//#define CHARYBDIS_MINIMUM_DEFAULT_DPI 1200
+//#define CHARYBDIS_DEFAULT_DPI_CONFIG_STEP 200
+//#define CHARYBDIS_MINIMUM_SNIPING_DPI 400
+//#define CHARYBDIS_SNIPING_DPI_CONFIG_STEP 200
+
+#define ENCODERS_PAD_A { GP26 }
+#define ENCODERS_PAD_B { GP27 }
+#define ENCODER_RESOLUTIONS { 2 }
+//#define ENCODERS_PAD_A_RIGHT { GP26 }
+//#define ENCODERS_PAD_B_RIGHT { GP27 }
+//#define ENCODER_RESOLUTIONS_RIGHT { 2 }
+
+//// Sensor Notes ////
+//// Pi Pico pins ////
+// 3V3 -- Power (not 3v3_EN)
+// GP17 -- CS pin
+// GP20 -- MISO pin
+// GP19 -- MOSI pin
+// GP18 -- SCK pin clock Driver
+#ifdef OLED_ENABLE
+#define SPLIT_MODS_ENABLE
+#define I2C_DRIVER I2CD0
+#define I2C1_SDA_PIN GP16
+#define I2C1_SCL_PIN GP17
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+// Misc settings
+// 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// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_track/info.json b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_track/info.json
new file mode 100644
index 00000000000..f17f0676274
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_track/info.json
@@ -0,0 +1,325 @@
+{
+ "keyboard_name": "Dactyl-Manuform Wyld Trackball (4x6_3_track)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0023",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 10,
+ "cols": 6
+ },
+ "layouts": {
+ "LAYOUT_4x6": {
+ "layout": [
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "5,0",
+ "x": 12.75,
+ "y": 0
+ },
+ {
+ "label": "5,1",
+ "x": 13.75,
+ "y": 0
+ },
+ {
+ "label": "5,2",
+ "x": 14.75,
+ "y": 0
+ },
+ {
+ "label": "5,3",
+ "x": 15.75,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "0,0",
+ "x": 7.25,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 8.25,
+ "y": 0.5
+ },
+ {
+ "label": "1,0",
+ "x": 10.5,
+ "y": 0.5
+ },
+ {
+ "label": "1,1",
+ "x": 11.5,
+ "y": 0.5
+ },
+ {
+ "label": "5,4",
+ "x": 16.75,
+ "y": 0.5
+ },
+ {
+ "label": "5,5",
+ "x": 17.75,
+ "y": 0.5
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "6,0",
+ "x": 12.75,
+ "y": 1
+ },
+ {
+ "label": "6,1",
+ "x": 13.75,
+ "y": 1
+ },
+ {
+ "label": "6,2",
+ "x": 14.75,
+ "y": 1
+ },
+ {
+ "label": "6,3",
+ "x": 15.75,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "4,2",
+ "x": 7.75,
+ "y": 1.5
+ },
+ {
+ "label": "9,3",
+ "x": 11,
+ "y": 1.5
+ },
+ {
+ "label": "6,4",
+ "x": 16.75,
+ "y": 1.5
+ },
+ {
+ "label": "6,5",
+ "x": 17.75,
+ "y": 1.5
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "7,0",
+ "x": 12.75,
+ "y": 2
+ },
+ {
+ "label": "7,1",
+ "x": 13.75,
+ "y": 2
+ },
+ {
+ "label": "7,2",
+ "x": 14.75,
+ "y": 2
+ },
+ {
+ "label": "7,3",
+ "x": 15.75,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "7,4",
+ "x": 16.75,
+ "y": 2.5
+ },
+ {
+ "label": "7,5",
+ "x": 17.75,
+ "y": 2.5
+ },
+ {
+ "label": "3,2",
+ "x": 3,
+ "y": 3
+ },
+ {
+ "label": "3,3",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "3,4",
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "3,5",
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "8,0",
+ "x": 12.75,
+ "y": 3
+ },
+ {
+ "label": "8,1",
+ "x": 13.75,
+ "y": 3
+ },
+ {
+ "label": "8,2",
+ "x": 14.75,
+ "y": 3
+ },
+ {
+ "label": "8,3",
+ "x": 15.75,
+ "y": 3
+ },
+ {
+ "label": "3,0",
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "label": "3,1",
+ "x": 2,
+ "y": 3.5
+ },
+ {
+ "label": "8,4",
+ "x": 16.75,
+ "y": 3.5
+ },
+ {
+ "label": "8,5",
+ "x": 17.75,
+ "y": 3.5
+ },
+ {
+ "label": "4,3",
+ "x": 5,
+ "y": 3.5
+ },
+ {
+ "label": "4,4",
+ "x": 6,
+ "y": 3.5
+ },
+ {
+ "label": "4,5",
+ "x": 7,
+ "y": 3.5
+ },
+ {
+ "label": "9,2",
+ "x": 11.5,
+ "y": 6
+ },
+ {
+ "label": "9,1",
+ "x": 12.5,
+ "y": 6
+ },
+ {
+ "label": "9,0",
+ "x": 13.5,
+ "y": 6
+ }
+ ]
+ }
+ }
+}
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_track/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_track/keymaps/vial/config.h
new file mode 100644
index 00000000000..98af8c5358f
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_track/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x9C, 0xF0, 0x7A, 0x94, 0xB9, 0xDB, 0x8B, 0x52}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 4 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 4 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_track/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_track/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..f5a22c6a435
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_track/keymaps/vial/keymap.c
@@ -0,0 +1,213 @@
+#include QMK_KEYBOARD_H
+#include "4x6_3_all_track.h"
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+#define _MOUSE 3
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+enum wyld_keycodes {
+ WYLD_AUTO_MS_TOG = SAFE_RANGE
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_4x6(
+ KC_ESC , KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS,
+ KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, DRGSCRL, KC_MUTE, 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_BSLS,
+ RAISE , LOWER,
+ KC_SPC, KC_ENT,
+ KC_BSPC, KC_DEL
+ ),
+
+ [_LOWER] = LAYOUT_4x6(
+ KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,
+ _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, DRGSCRL, KC_MUTE, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,
+ WYLD_AUTO_MS_TOG,_______,_______,DPI_RMOD,DPI_MOD,DPI_RST, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS,
+ _______, _______,
+ KC_BTN1, _______,
+ KC_BTN3, QK_BOOT
+
+ ),
+
+ [_RAISE] = LAYOUT_4x6(
+ KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6, KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,
+ _______,KC_LEFT,KC_UP,KC_DOWN,KC_RGHT,KC_LPRN, DRGSCRL, KC_MUTE, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD,
+ _______, _______,
+ _______, _______,
+ QK_BOOT, _______
+ ),
+
+ [_MOUSE] = LAYOUT_4x6(
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______ ,_______, DRGSCRL, KC_MUTE, _______,KC_BTN1,KC_BTN3,KC_BTN2,_______,_______,
+ WYLD_AUTO_MS_TOG,_______,_______,DPI_RMOD,DPI_MOD,DPI_RST, _______,_______,_______,_______,_______,_______,
+ _______, _______,
+ KC_BTN1, _______,
+ KC_BTN3, _______
+
+ ),
+};
+
+#ifdef POINTING_DEVICE_AUTO_MOUSE_ENABLE
+void pointing_device_init_user(void) {
+ set_auto_mouse_enable(true);
+ set_auto_mouse_enable(false); // default is off, must be explicitly enabled
+}
+
+// Ensures only the pointing device activates mouse layer on dual track builds
+// And also prevents dragscroll from activating it
+bool auto_mouse_activation(report_mouse_t mouse_report) {
+ return mouse_report.x != 0 || mouse_report.y != 0 || mouse_report.buttons;
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case WYLD_AUTO_MS_TOG:
+ if (record->event.pressed) {
+ set_auto_mouse_enable(!get_auto_mouse_enable());
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+#endif
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_QWERTY] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_LOWER] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_RAISE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_MOUSE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+};
+#endif
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_left()) {
+ return OLED_ROTATION_270;
+ }
+#ifdef POINTING_DEVICE_ENABLE
+ return OLED_ROTATION_270;
+#else
+ return OLED_ROTATION_0;
+#endif
+}
+
+#ifndef POINTING_DEVICE_ENABLE
+static const char PROGMEM wylderbuilds[] = {
+ // 'dark wylderbuilds_oled_name', 128x32
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40,
+ 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x20, 0x60,
+ 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x60, 0x60,
+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0,
+ 0x00, 0x00, 0xc1, 0xc1, 0x01, 0x01, 0xf1, 0x11, 0x01, 0x01, 0x01, 0x31, 0x60, 0xc0, 0x80, 0xc0,
+ 0xf0, 0x10, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0,
+ 0x00, 0x01, 0x03, 0x9e, 0xf8, 0x00, 0x00, 0x20, 0xe0, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0xf0, 0x30, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x98, 0xf0, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x00, 0x70, 0xfe, 0x03, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00,
+ 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x11, 0xf1, 0x11, 0x33, 0x63, 0xc3,
+ 0x83, 0x01, 0x01, 0xc1, 0xe1, 0x31, 0x11, 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,
+ 0x1f, 0x7c, 0xff, 0x07, 0x7c, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7f, 0xff,
+ 0x60, 0x30, 0x18, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xf2, 0x82, 0x02, 0x80, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x7f, 0x0e, 0x1b, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0x81, 0xc1, 0x63,
+ 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00,
+ 0x00, 0x1f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x60, 0x30, 0x1f,
+ 0x07, 0x00, 0x00, 0x01, 0x43, 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static void render_wylderbuilds(void) {
+ oled_write_raw_P(wylderbuilds, sizeof(wylderbuilds));
+}
+
+#endif
+
+static char layer_names[5][8] = {
+ " BASE\n",
+ "LOWER\n",
+ "RAISE\n",
+ "MOUSE\n",
+ " XTRA\n"
+ };
+
+bool oled_task_user(void) {
+ char* layer_name = layer_names[get_highest_layer(layer_state)];
+
+ if (is_keyboard_left()) {
+ // oled_write_P(PSTR("Layer\n"), false);
+ oled_set_cursor(0, 3);
+ oled_write_P(PSTR(layer_name), false);
+
+ oled_set_cursor(2, 6);
+ oled_write_P(PSTR("WPM "), false);
+ oled_set_cursor(2, 7);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 9);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+ } else {
+ // write WPM to right OLED
+#ifdef POINTING_DEVICE_ENABLE
+ char* mode = get_mouse_mode_string();
+ uint16_t dpi = get_current_dpi();
+ oled_set_cursor(2, 3);
+ oled_write_P(PSTR("DPI "), false);
+ oled_set_cursor(0, 5);
+ oled_write_P(PSTR(get_u16_str(dpi, ' ')), false);
+ oled_set_cursor(0, 9);
+ oled_write(PSTR(mode), false);
+#else
+ oled_set_cursor(0, 0);
+ render_wylderbuilds();
+ oled_scroll_left();
+#endif
+ }
+
+ return false;
+}
+#endif
+
+
+void keyboard_post_init_user(void) {
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+ debug_keyboard=true;
+ debug_mouse=true;
+#else
+ debug_enable=false;
+ debug_matrix=false;
+ debug_keyboard=false;
+ debug_mouse=false;
+#endif
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_track/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_track/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_track/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_track/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_track/keymaps/vial/vial.json
new file mode 100644
index 00000000000..cb545f41672
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_track/keymaps/vial/vial.json
@@ -0,0 +1,176 @@
+{
+ "matrix": {
+ "rows": 10,
+ "cols": 6
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 4x6_3_track_in_wall_whole_matrix_encoders"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 4.25
+ },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 1.25
+ },
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 4.25
+ },
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 4.75
+ },
+ "4,2",
+ {
+ "x": 2.25
+ },
+ "9,3",
+ {
+ "x": 4.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ {
+ "n": true
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5.75
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -1,
+ "x": 5
+ },
+ "4,3",
+ "4,4",
+ "4,5"
+ ],
+ [
+ {
+ "r": -7,
+ "y": 1.5,
+ "x": 11.5
+ },
+ "9,2",
+ "9,1",
+ "9,0"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_track/mcuconf.h b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_track/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_track/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_track/rules.mk b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_track/rules.mk
new file mode 100644
index 00000000000..94d3e362262
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_3_all_track/rules.mk
@@ -0,0 +1,18 @@
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+RGBLIGHT_ENABLE = no
+MOUSEKEY_ENABLE = yes
+CONSOLE_ENABLE = no
+#COMMAND_ENABLE = yes
+BOOTMAGIC_ENABLE = yes
+OLED_ENABLE = yes
+#OLED_DRIVER = SSD1306
+WPM_ENABLE = yes
+EXTRAKEY_ENABLE = yes # Audio control and System control
+NKRO_ENABLE = yes # Enable N-Key Rollover
+ENCODER_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+
+OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/4x6_3_wyld_track.c b/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/4x6_3_wyld_track.c
new file mode 100644
index 00000000000..9685aa5721f
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/4x6_3_wyld_track.c
@@ -0,0 +1 @@
+#include "4x6_3_wyld_track.h"
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/4x6_3_wyld_track.h b/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/4x6_3_wyld_track.h
new file mode 100644
index 00000000000..22bae47d307
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/4x6_3_wyld_track.h
@@ -0,0 +1,24 @@
+#pragma once
+
+#include "trackball.h"
+
+#define XXX KC_NO
+
+
+#define LAYOUT_4x6( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, L30, R35, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+ L32, L33, R32, R33, \
+ L31, L34, L35, R30, R31, R34 \
+) { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { L30, L31, L32, L33, L34, L35 }, \
+\
+ { R00, R01, R02, R03, R04, R05 }, \
+ { R10, R11, R12, R13, R14, R15 }, \
+ { R20, R21, R22, R23, R24, R25 }, \
+ { R30, R31, R32, R33, R34, R35 } \
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/config.h b/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/config.h
new file mode 100644
index 00000000000..dde9e36821d
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/config.h
@@ -0,0 +1,94 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+// Basic Config
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+
+#define USE_SERIAL
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+//#define SERIAL_USART_PIN_SWAP
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Columns are doubled-up
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 6
+
+#define MATRIX_COL_PINS { GP2, GP3, GP4, GP5, GP6, GP7 }
+#define MATRIX_ROW_PINS { GP9, GP10, GP11, GP12 }
+#define DIODE_DIRECTION COL2ROW
+
+#define SPLIT_POINTING_ENABLE
+#define ROTATIONAL_TRANSFORM_ANGLE -25
+#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_RIGHT
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x02
+//#define PMW33XX_LIFTOFF_DISTANCE 0x03
+
+#define POINTING_DEVICE_AUTO_MOUSE_ENABLE
+// only required if not setting mouse layer elsewhere
+#define AUTO_MOUSE_DEFAULT_LAYER 3
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
+
+#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+#ifdef ENCODER_ENABLE
+#define ENCODERS_PAD_A { GP17 }
+#define ENCODERS_PAD_B { GP16 }
+#define ENCODER_RESOLUTIONS { 2 }
+#define ENCODERS_PAD_A_RIGHT { GP17 }
+#define ENCODERS_PAD_B_RIGHT { GP16 }
+#define ENCODER_RESOLUTIONS_RIGHT { 2 }
+#endif
+
+
+//// Sensor Notes ////
+//// Pi Pico pins ////
+// 3V3 -- Power (not 3v3_EN)
+// GP17 -- CS pin
+// GP20 -- MISO pin
+// GP19 -- MOSI pin
+// GP18 -- SCK pin clock Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD0
+#define I2C1_SDA_PIN GP16
+#define I2C1_SCL_PIN GP17
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+// Misc settings
+// 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// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/info.json b/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/info.json
new file mode 100644
index 00000000000..f8f9eef8587
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/info.json
@@ -0,0 +1,295 @@
+{
+ "keyboard_name": "Dactyl-Manuform Wyld Trackball (5x6_track)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x006F",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 8,
+ "cols": 6
+ },
+ "split": {
+ "enabled": true
+ },
+ "features": {
+ "bootmagic": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": false
+ },
+ "layouts": {
+ "LAYOUT_4x6": {
+ "layout": [
+ {
+ "label": "0,2",
+ "x": 2,
+ "y": 0
+ },
+ {
+ "label": "0,3",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "4,0",
+ "x": 11.75,
+ "y": 0
+ },
+ {
+ "label": "4,1",
+ "x": 12.75,
+ "y": 0
+ },
+ {
+ "label": "4,2",
+ "x": 13.75,
+ "y": 0
+ },
+ {
+ "label": "4,3",
+ "x": 14.75,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 0,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "4,4",
+ "x": 15.75,
+ "y": 0.5
+ },
+ {
+ "label": "4,5",
+ "x": 16.75,
+ "y": 0.5
+ },
+ {
+ "label": "1,2",
+ "x": 2,
+ "y": 1
+ },
+ {
+ "label": "1,3",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "0,0",
+ "x": 6.25,
+ "y": 1
+ },
+ {
+ "label": "0,1",
+ "x": 7.25,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 9.5,
+ "y": 1
+ },
+ {
+ "label": "1,1",
+ "x": 10.5,
+ "y": 1
+ },
+ {
+ "label": "5,0",
+ "x": 11.75,
+ "y": 1
+ },
+ {
+ "label": "5,1",
+ "x": 12.75,
+ "y": 1
+ },
+ {
+ "label": "5,2",
+ "x": 13.75,
+ "y": 1
+ },
+ {
+ "label": "5,3",
+ "x": 14.75,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 0,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "5,4",
+ "x": 15.75,
+ "y": 1.5
+ },
+ {
+ "label": "5,5",
+ "x": 16.75,
+ "y": 1.5
+ },
+ {
+ "label": "2,2",
+ "x": 2,
+ "y": 2
+ },
+ {
+ "label": "2,3",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "3,0",
+ "x": 6.75,
+ "y": 2
+ },
+ {
+ "label": "7,5",
+ "x": 10,
+ "y": 2
+ },
+ {
+ "label": "6,0",
+ "x": 11.75,
+ "y": 2
+ },
+ {
+ "label": "6,1",
+ "x": 12.75,
+ "y": 2
+ },
+ {
+ "label": "6,2",
+ "x": 13.75,
+ "y": 2
+ },
+ {
+ "label": "6,3",
+ "x": 14.75,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 0,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "6,4",
+ "x": 15.75,
+ "y": 2.5
+ },
+ {
+ "label": "6,5",
+ "x": 16.75,
+ "y": 2.5
+ },
+ {
+ "label": "3,2",
+ "x": 2,
+ "y": 3
+ },
+ {
+ "label": "3,3",
+ "x": 3,
+ "y": 3
+ },
+ {
+ "label": "7,2",
+ "x": 13.75,
+ "y": 3
+ },
+ {
+ "label": "7,3",
+ "x": 14.75,
+ "y": 3
+ },
+ {
+ "label": "3,1",
+ "x": 4.25,
+ "y": 3.5
+ },
+ {
+ "label": "3,4",
+ "x": 5.25,
+ "y": 3.5
+ },
+ {
+ "label": "3,5",
+ "x": 6.25,
+ "y": 3.5
+ },
+ {
+ "label": "7,0",
+ "x": 10.5,
+ "y": 3.5
+ },
+ {
+ "label": "7,1",
+ "x": 11.5,
+ "y": 3.5
+ },
+ {
+ "label": "7,4",
+ "x": 12.5,
+ "y": 3.5
+ }
+ ]
+ }
+ }
+}
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/keymaps/vial/config.h
new file mode 100644
index 00000000000..de3287bf8a8
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x3A, 0x72, 0x3A, 0x2B, 0x93, 0x77, 0x5E, 0xD7}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 4 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 4 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..e6d361b782f
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/keymaps/vial/keymap.c
@@ -0,0 +1,247 @@
+#include QMK_KEYBOARD_H
+#include "4x6_3_wyld_track.h"
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+#define _MOUSE 3
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+enum wyld_keycodes {
+ WYLD_AUTO_MS_TOG = SAFE_RANGE
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_4x6(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS,
+ KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_MUTE, KC_HOME, 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, DRGSCRL,
+ KC_LBRC, KC_RBRC, KC_EQL, KC_RCTL,
+ RAIS]]E , KC_SPC, KC_BSPC, KC_TAB, KC_ENT, LOWER
+ ),
+
+ [_LOWER] = LAYOUT_4x6(
+ KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_MUTE,
+ DPI_RMOD,DPI_MOD,DPI_RST,_______,_______,KC_LBRC, _______, _______, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,KC_PLUS,QK_BOOT,
+ _______,KC_HOME,KC_PGUP,KC_PGDN,KC_EN1D ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,
+ DRGSCRL,SNIPING, KC_P2 , KC_P3,
+ _______, KC_BTN1, KC_BTN3, _______,_______,_______
+ ),
+
+ [_RAISE] = LAYOUT_4x6(
+ KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6, KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_MUTE ,
+ QK_BOOT,_______,_______,_______,_______,KC_LBRC, _______, _______, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,
+ WYLD_AUTO_MS_TOG,KC_LEFT,KC_UP,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,KC_VOLD,KC_VOLU,
+ _______,_______, _______,_______,
+ _______,_______,_______, _______,_______,_______
+ ),
+ [_MOUSE] = LAYOUT_4x6(
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,KC_BTN2,KC_BTN3,KC_BTN1,_______, _______, _______, _______,KC_BTN1,KC_BTN3,KC_BTN2,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ DRGSCRL,SNIPING, _______, _______,
+ _______, KC_BTN1, KC_BTN3, _______,_______,_______
+ ),
+ [4] = LAYOUT_4x6(
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______, _______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______, _______,_______,
+ _______,_______,_______, _______,_______,_______
+ )
+};
+
+// GENERAL
+
+// DUAL TRACKBALL
+
+#ifdef POINTING_DEVICE_COMBINED
+report_mouse_t pointing_device_task_combined_user(report_mouse_t left_report, report_mouse_t right_report) {
+ check_drag_scroll(&left_report); // updated in trackball.c
+ return pointing_device_combine_reports(left_report, right_report);
+}
+#endif
+
+
+// AUTOMOUSE LAYERS
+#ifdef POINTING_DEVICE_AUTO_MOUSE_ENABLE
+void pointing_device_init_user(void) {
+ // This activates automouse layers but sets it as turned off by default
+ set_auto_mouse_enable(true);
+ set_auto_mouse_enable(false);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case WYLD_AUTO_MS_TOG:
+ if (record->event.pressed) {
+ set_auto_mouse_enable(!get_auto_mouse_enable());
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+#endif
+
+// ENCODERS
+#ifdef ENCODER_MAP_ENABLE
+//#if NUM_ENCODERS == 1
+//const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+// [_QWERTY] = { ENCODER_CCW_CW(KC_MS_WH_DOWN, KC_MS_WH_UP) },
+// [_LOWER] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+// [_RAISE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+// [3] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+// [4] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }
+//};
+//#elif NUM_ENCODERS == 2
+// TWO ENCODERS
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_QWERTY] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_LOWER] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_RAISE] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_MOUSE] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [4] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) }
+};
+//#endif
+#endif
+
+// OLED
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_left()) {
+ return OLED_ROTATION_270;
+ }
+ return OLED_ROTATION_0;
+}
+
+static const char PROGMEM wylderbuilds[] = {
+ // 'dark wylderbuilds_oled_name', 128x32
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40,
+ 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x20, 0x60,
+ 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x60, 0x60,
+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0,
+ 0x00, 0x00, 0xc1, 0xc1, 0x01, 0x01, 0xf1, 0x11, 0x01, 0x01, 0x01, 0x31, 0x60, 0xc0, 0x80, 0xc0,
+ 0xf0, 0x10, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0,
+ 0x00, 0x01, 0x03, 0x9e, 0xf8, 0x00, 0x00, 0x20, 0xe0, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0xf0, 0x30, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x98, 0xf0, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x00, 0x70, 0xfe, 0x03, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00,
+ 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x11, 0xf1, 0x11, 0x33, 0x63, 0xc3,
+ 0x83, 0x01, 0x01, 0xc1, 0xe1, 0x31, 0x11, 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,
+ 0x1f, 0x7c, 0xff, 0x07, 0x7c, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7f, 0xff,
+ 0x60, 0x30, 0x18, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xf2, 0x82, 0x02, 0x80, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x7f, 0x0e, 0x1b, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0x81, 0xc1, 0x63,
+ 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00,
+ 0x00, 0x1f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x60, 0x30, 0x1f,
+ 0x07, 0x00, 0x00, 0x01, 0x43, 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static void render_wylderbuilds(void) {
+ oled_write_raw_P(wylderbuilds, sizeof(wylderbuilds));
+}
+
+bool oled_task_user(void) {
+ oled_set_cursor(0, 3);
+ if (is_keyboard_left()) {
+ // oled_write_P(PSTR("Layer\n"), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ oled_write_P(PSTR(" BASE\n"), false);
+ break;
+ case _LOWER:
+ oled_write_P(PSTR("LOWER\n"), false);
+ break;
+ case _RAISE:
+ oled_write_P(PSTR("RAISE\n"), false);
+ break;
+ case _MOUSE:
+ oled_write_P(PSTR("MOUSE\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+ oled_set_cursor(2, 7);
+ oled_write_P(PSTR("WPM "), false);
+ oled_set_cursor(1, 8);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 9);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+ } else {
+ // write WPM to right OLED
+ oled_set_cursor(0, 0);
+ render_wylderbuilds();
+ oled_scroll_left();
+ }
+
+ return false;
+}
+#endif
+
+// RGB UNDERGLOW
+
+#ifdef RGBLIGHT_ENABLE
+const rgblight_segment_t PROGMEM querty_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_RED}, // Light 4 LEDs, starting with LED 6
+ {33, 3, HSV_RED} // Light 4 LEDs, starting with LED 6
+);
+const rgblight_segment_t PROGMEM lower_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_BLUE},
+ {33, 3, HSV_BLUE}
+);
+const rgblight_segment_t PROGMEM raise_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_YELLOW},
+ {33, 3, HSV_YELLOW}
+);
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ querty_layer, // Overrides caps lock layer
+ lower_layer, // Overrides other layers
+ raise_layer // Overrides other layers
+);
+
+//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(0, layer_state_cmp(state, _QWERTY));
+ return state;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(1, layer_state_cmp(state, _LOWER));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _RAISE));
+ return state;
+}
+
+
+#endif
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..531b731a5a9
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/keymaps/vial/rules.mk
@@ -0,0 +1,8 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/keymaps/vial/vial.json
new file mode 100644
index 00000000000..5c04dbf0a95
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/keymaps/vial/vial.json
@@ -0,0 +1,151 @@
+{
+ "matrix": {
+ "rows": 8,
+ "cols": 6
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 4x6 Wyld Track Encoders"
+ },
+ [
+ {
+ "x": 2
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ "4,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "4,4",
+ "4,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 0.25
+ },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 1.25
+ },
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 0.25
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 0.75
+ },
+ "3,0",
+ {
+ "x": 2.25
+ },
+ "7,5",
+ {
+ "x": 0.75
+ },
+ "6,0",
+ {
+ "n": true
+ },
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 2
+ },
+ "3,2",
+ "3,3",
+ {
+ "x": 9.75
+ },
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4.25
+ },
+ "3,1",
+ "3,4",
+ "3,5",
+ {
+ "x": 3.25
+ },
+ "7,0",
+ "7,1",
+ "7,4"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/mcuconf.h b/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/rgb_matrix.json b/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/rgb_matrix.json
new file mode 100644
index 00000000000..0c939ffd538
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/rgb_matrix.json
@@ -0,0 +1,48 @@
+[
+{"flags": 4, "matrix": [0, 0], "x": 23, "y": 4},
+{"flags": 4, "matrix": [1, 0], "x": 23, "y": 19},
+{"flags": 4, "matrix": [2, 0], "x": 11, "y": 34},
+{"flags": 4, "matrix": [0, 1], "x": 34, "y": 4},
+{"flags": 4, "matrix": [1, 1], "x": 34, "y": 19},
+{"flags": 4, "matrix": [2, 1], "x": 11, "y": 34},
+{"flags": 4, "matrix": [0, 2], "x": 45, "y": 0},
+{"flags": 4, "matrix": [1, 2], "x": 45, "y": 11},
+{"flags": 4, "matrix": [2, 2], "x": 45, "y": 26},
+{"flags": 4, "matrix": [3, 2], "x": 34, "y": 41},
+{"flags": 4, "matrix": [0, 3], "x": 57, "y": 0},
+{"flags": 4, "matrix": [1, 3], "x": 57, "y": 11},
+{"flags": 4, "matrix": [2, 3], "x": 57, "y": 26},
+{"flags": 4, "matrix": [3, 3], "x": 34, "y": 41},
+{"flags": 4, "matrix": [0, 4], "x": 68, "y": 0},
+{"flags": 4, "matrix": [1, 4], "x": 68, "y": 11},
+{"flags": 4, "matrix": [2, 4], "x": 79, "y": 26},
+{"flags": 4, "matrix": [0, 5], "x": 79, "y": 0},
+{"flags": 4, "matrix": [1, 5], "x": 79, "y": 11},
+{"flags": 4, "matrix": [2, 5], "x": 91, "y": 26},
+{"flags": 4, "matrix": [4, 0], "x": 57, "y": 49},
+{"flags": 4, "matrix": [4, 1], "x": 57, "y": 49},
+{"flags": 4, "matrix": [4, 2], "x": 57, "y": 49},
+{"flags": 4, "matrix": [5, 0], "x": 167, "y": 0},
+{"flags": 4, "matrix": [6, 0], "x": 167, "y": 11},
+{"flags": 4, "matrix": [7, 0], "x": 179, "y": 26},
+{"flags": 4, "matrix": [5, 1], "x": 179, "y": 0},
+{"flags": 4, "matrix": [6, 1], "x": 179, "y": 11},
+{"flags": 4, "matrix": [7, 1], "x": 201, "y": 26},
+{"flags": 4, "matrix": [5, 2], "x": 190, "y": 0},
+{"flags": 4, "matrix": [6, 2], "x": 190, "y": 11},
+{"flags": 4, "matrix": [7, 2], "x": 213, "y": 26},
+{"flags": 4, "matrix": [8, 2], "x": 145, "y": 41},
+{"flags": 4, "matrix": [5, 3], "x": 201, "y": 0},
+{"flags": 4, "matrix": [6, 3], "x": 201, "y": 11},
+{"flags": 4, "matrix": [7, 3], "x": 224, "y": 26},
+{"flags": 4, "matrix": [8, 3], "x": 145, "y": 41},
+{"flags": 4, "matrix": [5, 4], "x": 213, "y": 4},
+{"flags": 4, "matrix": [6, 4], "x": 213, "y": 19},
+{"flags": 4, "matrix": [7, 4], "x": 167, "y": 34},
+{"flags": 4, "matrix": [5, 5], "x": 224, "y": 4},
+{"flags": 4, "matrix": [6, 5], "x": 224, "y": 19},
+{"flags": 4, "matrix": [7, 5], "x": 167, "y": 34},
+{"flags": 4, "matrix": [9, 0], "x": 130, "y": 72},
+{"flags": 4, "matrix": [9, 1], "x": 130, "y": 72},
+{"flags": 4, "matrix": [9, 2], "x": 130, "y": 72}
+ ]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/rules.mk b/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/rules.mk
new file mode 100644
index 00000000000..a261708ad93
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/rules.mk
@@ -0,0 +1,20 @@
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+#RGBLIGHT_ENABLE = yes
+#RGB_MATRIX_ENABLE = WS2812
+#CONSOLE_ENABLE = no
+##COMMAND_ENABLE = yes
+#BOOTMAGIC_ENABLE = yes
+#NKRO_ENABLE = yes # Enable N-Key Rollover
+#
+#OLED_ENABLE = no
+##OLED_DRIVER = SSD1306
+#WPM_ENABLE = yes
+#EXTRAKEY_ENABLE = yes # Audio control and System control
+#
+ENCODER_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+
+#OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/skree-4x6-kle.json b/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/skree-4x6-kle.json
new file mode 100644
index 00000000000..b791f7aadf2
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/skree-4x6-kle.json
@@ -0,0 +1,133 @@
+[
+ {
+ "name": "Skree 4x6"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ {
+ "n": true
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ {
+ "x": 9.75
+ },
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -0.5,
+ "x": 5
+ },
+ "4,0",
+ "4,1",
+ "4,2"
+ ],
+ [
+ {
+ "r": -7,
+ "y": 1.5,
+ "x": 11.5
+ },
+ "9,0",
+ "9,1",
+ "9,2"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/skree-4x6_2.json b/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/skree-4x6_2.json
new file mode 100644
index 00000000000..677a55c3024
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/skree-4x6_2.json
@@ -0,0 +1,133 @@
+[
+ {
+ "name": "Skree 4x6"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ {
+ "n": true
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ {
+ "x": 9.75
+ },
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -0.5,
+ "x": 5
+ },
+ "4,6",
+ "4,5",
+ "4,4"
+ ],
+ [
+ {
+ "r": -7,
+ "y": 1.5,
+ "x": 11.5
+ },
+ "9,4",
+ "9,5",
+ "9,6"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/wylderbuilds-4x6-whole-dual-trackball-in-wall.json b/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/wylderbuilds-4x6-whole-dual-trackball-in-wall.json
new file mode 100644
index 00000000000..0a8d2d30072
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_3_wyld_track/wylderbuilds-4x6-whole-dual-trackball-in-wall.json
@@ -0,0 +1,169 @@
+[
+ {
+ "name": "Wylderbuilds 4x6 Whole Dual Trackball In Wall"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3",
+ {
+ "x": 2
+ },
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "5,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3",
+ {
+ "x": 2.5
+ },
+ "5,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ {
+ "n": true
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5.75
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3",
+ {
+ "x": 2
+ },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "8,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 19.25
+ },
+ "8,5"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -1.5,
+ "x": 5
+ },
+ "4,3",
+ "4,4",
+ "4,5"
+ ],
+ [
+ {
+ "r": -7,
+ "y": 1.5,
+ "x": 11.5
+ },
+ "9,0",
+ "9,1",
+ "9,2"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_mini_track/4x6_mini_track.c b/keyboards/handwired/wylderbuilds/trackball/4x6_mini_track/4x6_mini_track.c
new file mode 100644
index 00000000000..5396916576c
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_mini_track/4x6_mini_track.c
@@ -0,0 +1 @@
+#include "4x6_mini_track.h"
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_mini_track/4x6_mini_track.h b/keyboards/handwired/wylderbuilds/trackball/4x6_mini_track/4x6_mini_track.h
new file mode 100644
index 00000000000..446ae196caf
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_mini_track/4x6_mini_track.h
@@ -0,0 +1,27 @@
+#pragma once
+
+#include "trackball.h"
+
+#define XXX KC_NO
+
+
+#define LAYOUT_4x6( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+ L32, L33, R32, R33, \
+ L43, L44, L45, R40, R41, R42, \
+ L41, L42, R43, R44 \
+) { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { XXX, XXX, L32, L33, XXX, XXX }, \
+ { XXX, L41, L42, L43, L44, L45 }, \
+\
+ { R00, R01, R02, R03, R04, R05 }, \
+ { R10, R11, R12, R13, R14, R15 }, \
+ { R20, R21, R22, R23, R24, R25 }, \
+ { XXX, XXX, R32, R33, XXX, XXX }, \
+ { R40, R41, R42, R43, R44, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_mini_track/config.h b/keyboards/handwired/wylderbuilds/trackball/4x6_mini_track/config.h
new file mode 100644
index 00000000000..f915e30cc98
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_mini_track/config.h
@@ -0,0 +1,127 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+//#include "config_common.h"
+// Basic Config
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+
+#define USE_SERIAL
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+
+// Using Serial instead of I2C
+#define SPLIT_LAYER_STATE_ENABLE
+
+#define USE_SERIAL
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+#define SERIAL_USART_PIN_SWAP
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Columns are doubled-up
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 6
+
+#define MATRIX_COL_PINS { GP7, GP6, GP5, GP4, GP3, GP2 }
+#define MATRIX_ROW_PINS { GP14, GP13, GP12, GP11, GP10 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define SPLIT_POINTING_ENABLE
+#define POINTING_DEVICE_INVERT_Y
+#define ROTATIONAL_TRANSFORM_ANGLE -25
+#define POINTING_DEVICE_RIGHT
+// #define POINTING_DEVICE_COMBINED
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x03
+
+#define POINTING_DEVICE_AUTO_MOUSE_ENABLE
+// only required if not setting mouse layer elsewhere
+#define AUTO_MOUSE_DEFAULT_LAYER 3
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
+
+#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+
+//#define CHARYBDIS_MINIMUM_DEFAULT_DPI 1200
+//#define CHARYBDIS_DEFAULT_DPI_CONFIG_STEP 200
+//#define CHARYBDIS_MINIMUM_SNIPING_DPI 400
+//#define CHARYBDIS_SNIPING_DPI_CONFIG_STEP 200
+
+//#define ENCODERS_PAD_A { GP26 }
+//#define ENCODERS_PAD_B { GP27 }
+//#define ENCODER_RESOLUTIONS { 2 }
+//#define ENCODERS_PAD_A_RIGHT { GP26 }
+//#define ENCODERS_PAD_B_RIGHT { GP27 }
+//#define ENCODER_RESOLUTIONS_RIGHT { 2 }
+
+//// Sensor Notes ////
+//// Pi Pico pins ////
+// 3V3 -- Power (not 3v3_EN)
+// GP17 -- CS pin
+// GP20 -- MISO pin
+// GP19 -- MOSI pin
+// GP18 -- SCK pin clock Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD0
+#define I2C1_SDA_PIN GP16
+#define I2C1_SCL_PIN GP17
+//#define RGBLIGHT_LAYERS
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+#define WS2812_PIO_USE_PIO1
+//#define WS2812_PIO_USE_PIO1
+//#define WS2812_PIO_USE_PIO1
+#define RGBLIGHT_LAYERS
+#define WS2812_DI_PIN GP22 // can use trackball jack if not used
+//#define WS2812_EXTERNAL_PULLUP
+#define RGBLED_NUM 24
+//#define DRIVER_LED_TOTAL 34
+#define RGBLED_SPLIT { 12, 12 }
+#define RGBLIGHT_SPLIT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 17
+#define RGBLIGHT_LIMIT_VAL 100
+//#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+#define NOP_FUDGE 0.4 // may not be needed if ws driver loaded
+#endif
+
+// Misc settings
+// 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// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_mini_track/info.json b/keyboards/handwired/wylderbuilds/trackball/4x6_mini_track/info.json
new file mode 100644
index 00000000000..af787b3e834
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_mini_track/info.json
@@ -0,0 +1,275 @@
+{
+ "keyboard_name": "Dactyl-Manuform Wyld Trackball (4x6_mini_track)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0170",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 10,
+ "cols": 6
+ },
+ "layouts": {
+ "LAYOUT_4x6": {
+ "layout": [
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "5,0",
+ "x": 12.75,
+ "y": 0
+ },
+ {
+ "label": "5,1",
+ "x": 13.75,
+ "y": 0
+ },
+ {
+ "label": "5,2",
+ "x": 14.75,
+ "y": 0
+ },
+ {
+ "label": "5,3",
+ "x": 15.75,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "5,4",
+ "x": 16.75,
+ "y": 0.5
+ },
+ {
+ "label": "5,5",
+ "x": 17.75,
+ "y": 0.5
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "6,0",
+ "x": 12.75,
+ "y": 1
+ },
+ {
+ "label": "6,1",
+ "x": 13.75,
+ "y": 1
+ },
+ {
+ "label": "6,2",
+ "x": 14.75,
+ "y": 1
+ },
+ {
+ "label": "6,3",
+ "x": 15.75,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "6,4",
+ "x": 16.75,
+ "y": 1.5
+ },
+ {
+ "label": "6,5",
+ "x": 17.75,
+ "y": 1.5
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "7,0",
+ "x": 12.75,
+ "y": 2
+ },
+ {
+ "label": "7,1",
+ "x": 13.75,
+ "y": 2
+ },
+ {
+ "label": "7,2",
+ "x": 14.75,
+ "y": 2
+ },
+ {
+ "label": "7,3",
+ "x": 15.75,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "7,4",
+ "x": 16.75,
+ "y": 2.5
+ },
+ {
+ "label": "7,5",
+ "x": 17.75,
+ "y": 2.5
+ },
+ {
+ "label": "3,2",
+ "x": 3,
+ "y": 3
+ },
+ {
+ "label": "3,3",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "8,2",
+ "x": 14.75,
+ "y": 3
+ },
+ {
+ "label": "8,3",
+ "x": 15.75,
+ "y": 3
+ },
+ {
+ "label": "4,3",
+ "x": 5.25,
+ "y": 3.5
+ },
+ {
+ "label": "4,4",
+ "x": 6.25,
+ "y": 3.5
+ },
+ {
+ "label": "4,5",
+ "x": 7.25,
+ "y": 3.5
+ },
+ {
+ "label": "9,0",
+ "x": 11.5,
+ "y": 3.5
+ },
+ {
+ "label": "9,1",
+ "x": 12.5,
+ "y": 3.5
+ },
+ {
+ "label": "9,2",
+ "x": 13.5,
+ "y": 3.5
+ },
+ {
+ "label": "4,1",
+ "x": 6.25,
+ "y": 4.5
+ },
+ {
+ "label": "4,2",
+ "x": 7.25,
+ "y": 4.5
+ },
+ {
+ "label": "9,3",
+ "x": 11.5,
+ "y": 4.5
+ },
+ {
+ "label": "9,4",
+ "x": 12.5,
+ "y": 4.5
+ }
+ ]
+ }
+ }
+}
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_mini_track/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/4x6_mini_track/keymaps/vial/config.h
new file mode 100644
index 00000000000..55553df75b3
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_mini_track/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xAA, 0x21, 0x4D, 0x7B, 0x43, 0x1C, 0x57, 0x81}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 4 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 4 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_mini_track/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/4x6_mini_track/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..2315422aa88
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_mini_track/keymaps/vial/keymap.c
@@ -0,0 +1,188 @@
+#include QMK_KEYBOARD_H
+#include "4x6_mini_track.h"
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+#define _MOUSE 3
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+enum wyld_keycodes {
+ WYLD_AUTO_MS_TOG = SAFE_RANGE
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_4x6(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS,
+ 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_BSLS,
+ KC_LCTL, KC_LALT, KC_RCTL,KC_RALT,
+ RAISE, KC_SPC, KC_BSPC, KC_DEL, KC_ENT, LOWER,
+ KC_TAB, KC_HOME, KC_RGUI, KC_RALT
+
+ ),
+
+ [_LOWER] = LAYOUT_4x6(
+ KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_P7,KC_P8,KC_P9 ,KC_RPRN,KC_DEL,
+ DPI_RMOD,DPI_MOD,DPI_RST,_______,_______,KC_LBRC, KC_RBRC, KC_P4 , KC_P5 , KC_P6 ,KC_PLUS, KC_ASTR,
+ _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P1 , KC_P2 , KC_P3 ,KC_MINS,KC_EQL,
+ _______,_______, KC_P0 , KC_DOT,
+ _______,KC_BTN1,KC_BTN3, _______,_______,_______,
+ SNIPING,DRGSCRL, _______, QK_BOOT
+ ),
+
+ [_RAISE] = LAYOUT_4x6(
+ KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6, KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,
+ _______,KC_LEFT,KC_UP,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,KC_VOLD,KC_VOLU,
+ _______,_______, WYLD_AUTO_MS_TOG,_______,
+ _______,_______,_______, _______,_______,_______,
+ QK_BOOT,_______, _______,_______
+ ),
+ [_MOUSE] = LAYOUT_4x6(
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,KC_BTN2,KC_BTN3,KC_BTN1,_______, _______,KC_BTN1,KC_BTN3,KC_BTN2,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______,SNIPING,DRGSCRL,_______,_______,_______,
+ _______,_______, _______,_______,
+ _______,KC_BTN1,KC_BTN3, _______,_______,_______,
+ SNIPING,DRGSCRL, _______, _______
+ )
+};
+
+void pointing_device_init_user(void) {
+ // set_auto_mouse_layer(); // only required if AUTO_MOUSE_DEFAULT_LAYER is not set to index of
+ set_auto_mouse_enable(true); // always required before the auto mouse feature will work
+ set_auto_mouse_enable(false); // disabled by default
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case WYLD_AUTO_MS_TOG:
+ if (record->event.pressed) {
+ set_auto_mouse_enable(!get_auto_mouse_enable());
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+
+
+// rgblight_enable();
+
+void keyboard_post_init_user(void) {
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+ debug_keyboard=true;
+ debug_mouse=true;
+#else
+ debug_enable=false;
+ debug_matrix=false;
+ debug_keyboard=false;
+ debug_mouse=false;
+#endif
+#ifdef RGBLIGHT_ENABLE
+ rgblight_layers = my_rgb_layers;
+#endif
+}
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_left()) {
+ return OLED_ROTATION_270;
+ }
+ return OLED_ROTATION_0;
+}
+
+static const char PROGMEM wylderbuilds[] = {
+ // 'dark wylderbuilds_oled_name', 128x32
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40,
+ 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x20, 0x60,
+ 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x60, 0x60,
+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0,
+ 0x00, 0x00, 0xc1, 0xc1, 0x01, 0x01, 0xf1, 0x11, 0x01, 0x01, 0x01, 0x31, 0x60, 0xc0, 0x80, 0xc0,
+ 0xf0, 0x10, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0,
+ 0x00, 0x01, 0x03, 0x9e, 0xf8, 0x00, 0x00, 0x20, 0xe0, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0xf0, 0x30, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x98, 0xf0, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x00, 0x70, 0xfe, 0x03, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00,
+ 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x11, 0xf1, 0x11, 0x33, 0x63, 0xc3,
+ 0x83, 0x01, 0x01, 0xc1, 0xe1, 0x31, 0x11, 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,
+ 0x1f, 0x7c, 0xff, 0x07, 0x7c, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7f, 0xff,
+ 0x60, 0x30, 0x18, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xf2, 0x82, 0x02, 0x80, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x7f, 0x0e, 0x1b, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0x81, 0xc1, 0x63,
+ 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00,
+ 0x00, 0x1f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x60, 0x30, 0x1f,
+ 0x07, 0x00, 0x00, 0x01, 0x43, 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static void render_wylderbuilds(void) {
+ oled_write_raw_P(wylderbuilds, sizeof(wylderbuilds));
+}
+
+bool oled_task_user(void) {
+ oled_set_cursor(0, 3);
+ if (is_keyboard_left()) {
+ // oled_write_P(PSTR("Layer\n"), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ oled_write_P(PSTR(" BASE\n"), false);
+ break;
+ case _LOWER:
+ oled_write_P(PSTR("LOWER\n"), false);
+ break;
+ case _RAISE:
+ oled_write_P(PSTR("RAISE\n"), false);
+ break;
+ case _MOUSE:
+ oled_write_P(PSTR("MOUSE\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+ oled_set_cursor(2, 7);
+ oled_write_P(PSTR("WPM "), false);
+ oled_set_cursor(1, 8);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 9);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+ } else {
+ // write WPM to right OLED
+ oled_set_cursor(0, 0);
+ render_wylderbuilds();
+ oled_scroll_left();
+ }
+
+ return false;
+}
+#endif
+
+
+
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_mini_track/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/4x6_mini_track/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_mini_track/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_mini_track/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/4x6_mini_track/keymaps/vial/vial.json
new file mode 100644
index 00000000000..e99a486c96a
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_mini_track/keymaps/vial/vial.json
@@ -0,0 +1,148 @@
+{
+ "matrix": {
+ "rows": 10,
+ "cols": 6
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 4x6 Standard Mini Track"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ {
+ "n": true
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ {
+ "x": 9.75
+ },
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 5.25
+ },
+ "4,3",
+ "4,4",
+ "4,5",
+ {
+ "x": 3.25
+ },
+ "9,0",
+ "9,1",
+ "9,2"
+ ],
+ [
+ {
+ "x": 6.25
+ },
+ "4,1",
+ "4,2",
+ {
+ "x": 3.25
+ },
+ "9,3",
+ "9,4"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_mini_track/mcuconf.h b/keyboards/handwired/wylderbuilds/trackball/4x6_mini_track/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_mini_track/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_mini_track/rules.mk b/keyboards/handwired/wylderbuilds/trackball/4x6_mini_track/rules.mk
new file mode 100644
index 00000000000..aaba24afa4b
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_mini_track/rules.mk
@@ -0,0 +1,22 @@
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+#POINTING_DEVICE_DRIVER = pmw3389
+
+SERIAL_DRIVER = vendor
+MOUSEKEY_ENABLE = yes
+CONSOLE_ENABLE = yes
+#COMMAND_ENABLE = yes
+BOOTMAGIC_ENABLE = yes
+OLED_ENABLE = no
+#OLED_DRIVER = SSD1306
+WPM_ENABLE = no
+EXTRAKEY_ENABLE = yes # Audio control and System control
+NKRO_ENABLE = yes # Enable N-Key Rollover
+ENCODER_ENABLE = no
+
+RGBLIGHT_ENABLE = no
+#WS2812_DRIVER = vendor
+SLEEP_LED_ENABLE = no
+
+# OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_mini_track/wylderbuilds-4x6-standard-mini-track-3.json b/keyboards/handwired/wylderbuilds/trackball/4x6_mini_track/wylderbuilds-4x6-standard-mini-track-3.json
new file mode 100644
index 00000000000..0aaab8db38c
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_mini_track/wylderbuilds-4x6-standard-mini-track-3.json
@@ -0,0 +1,152 @@
+[
+ {
+ "name": "Wylderbuilds 4x6 Standard Mini Track 3"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ {
+ "n": true
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ {
+ "x": 9.75
+ },
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 13
+ },
+ "9,0"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 13
+ },
+ "9,1"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 11.75
+ },
+ "9,2"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -4.25,
+ "x": 5
+ },
+ "4,4",
+ "4,5",
+ "4,3"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 5
+ },
+ "4,1",
+ "4,2"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_mini_track/wylderbuilds-4x6-standard-mini-track-3_2.json b/keyboards/handwired/wylderbuilds/trackball/4x6_mini_track/wylderbuilds-4x6-standard-mini-track-3_2.json
new file mode 100644
index 00000000000..a41989e6ec6
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_mini_track/wylderbuilds-4x6-standard-mini-track-3_2.json
@@ -0,0 +1,166 @@
+[
+ {
+ "name": "Wylderbuilds 4x6 Standard Mini Track 3"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ {
+ "n": true
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ {
+ "x": 9.75
+ },
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 13
+ },
+ "9,2"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 5.25
+ },
+ "4,4"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 6.25
+ },
+ "4,5",
+ {
+ "x": 4.75
+ },
+ "9,1"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 7.25
+ },
+ "4,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 11
+ },
+ "9,0"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 6
+ },
+ "4,1"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 7
+ },
+ "4,2"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_whole_track/4x6_whole_track.c b/keyboards/handwired/wylderbuilds/trackball/4x6_whole_track/4x6_whole_track.c
new file mode 100644
index 00000000000..39c0e4a9ae4
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_whole_track/4x6_whole_track.c
@@ -0,0 +1 @@
+#include "4x6_whole_track.h"
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_whole_track/4x6_whole_track.h b/keyboards/handwired/wylderbuilds/trackball/4x6_whole_track/4x6_whole_track.h
new file mode 100644
index 00000000000..62e33e135d7
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_whole_track/4x6_whole_track.h
@@ -0,0 +1,51 @@
+#pragma once
+
+#include "trackball.h"
+
+#define XXX KC_NO
+
+/*
+//#define LAYOUT_4x6( \
+// L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+// L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+// L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+// L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \
+// L43, L44, L45, R40, \
+// L41, L42, R41, \
+// R42, R43 \
+//) { \
+// { L00, L01, L02, L03, L04, L05 }, \
+// { L10, L11, L12, L13, L14, L15 }, \
+// { L20, L21, L22, L23, L24, L25 }, \
+// { L30, L31, L32, L33, L34, L35 }, \
+// { XXX, L41, L42, L43, L44, L45 }, \
+//\
+// { R00, R01, R02, R03, R04, R05 }, \
+// { R10, R11, R12, R13, R14, R15 }, \
+// { R20, R21, R22, R23, R24, R25 }, \
+// { R30, R31, R32, R33, R34, R35 }, \
+// { R40, R41, R42, R43, XXX, XXX } \
+//}
+*/
+
+#define LAYOUT_4x6( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+ L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \
+ L44, L45, R42, \
+ L40, L43, R41, \
+ L41, L42, R40 \
+) { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { L30, L31, L32, L33, L34, L35 }, \
+ { L40, L41, L42, L43, L44, L45 }, \
+\
+ { R00, R01, R02, R03, R04, R05 }, \
+ { R10, R11, R12, R13, R14, R15 }, \
+ { R20, R21, R22, R23, R24, R25 }, \
+ { R30, R31, R32, R33, R34, R35 }, \
+ { R40, R41, R42, XXX, XXX, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_whole_track/config.h b/keyboards/handwired/wylderbuilds/trackball/4x6_whole_track/config.h
new file mode 100644
index 00000000000..e227285c5c4
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_whole_track/config.h
@@ -0,0 +1,132 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+//#include "config_common.h"
+// Basic Config
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+
+#define USE_SERIAL
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+
+// Using Serial instead of I2C
+#define SPLIT_LAYER_STATE_ENABLE
+
+#define USE_SERIAL
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Columns are doubled-up
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 6
+
+#define MATRIX_COL_PINS_RIGHT { GP7, GP6, GP5, GP4, GP3, GP2 }
+#define MATRIX_COL_PINS { GP2, GP3, GP4, GP5, GP6, GP7 }
+#define MATRIX_ROW_PINS { GP9, GP10, GP11, GP12, GP13 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define SPLIT_POINTING_ENABLE
+#define POINTING_DEVICE_INVERT_Y
+#define ROTATIONAL_TRANSFORM_ANGLE -25
+#define POINTING_DEVICE_RIGHT
+// #define POINTING_DEVICE_COMBINED
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x02
+
+#define POINTING_DEVICE_AUTO_MOUSE_ENABLE
+// only required if not setting mouse layer elsewhere
+#define AUTO_MOUSE_DEFAULT_LAYER 3
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
+
+#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+#define POINTING_DEVICE_AUTO_MOUSE_ENABLE
+// only required if not setting mouse layer elsewhere
+#define AUTO_MOUSE_DEFAULT_LAYER 3
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
+
+//#define CHARYBDIS_MINIMUM_DEFAULT_DPI 1200
+//#define CHARYBDIS_DEFAULT_DPI_CONFIG_STEP 200
+//#define CHARYBDIS_MINIMUM_SNIPING_DPI 400
+//#define CHARYBDIS_SNIPING_DPI_CONFIG_STEP 200
+
+//#define ENCODERS_PAD_A { GP26 }
+//#define ENCODERS_PAD_B { GP27 }
+//#define ENCODER_RESOLUTIONS { 2 }
+//#define ENCODERS_PAD_A_RIGHT { GP26 }
+//#define ENCODERS_PAD_B_RIGHT { GP27 }
+//#define ENCODER_RESOLUTIONS_RIGHT { 2 }
+
+//// Sensor Notes ////
+//// Pi Pico pins ////
+// 3V3 -- Power (not 3v3_EN)
+// GP17 -- CS pin
+// GP20 -- MISO pin
+// GP19 -- MOSI pin
+// GP18 -- SCK pin clock Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD0
+#define I2C1_SDA_PIN GP16
+#define I2C1_SCL_PIN GP17
+//#define RGBLIGHT_LAYERS
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+#define WS2812_PIO_USE_PIO1
+//#define WS2812_PIO_USE_PIO1
+//#define WS2812_PIO_USE_PIO1
+#define RGBLIGHT_LAYERS
+#define WS2812_DI_PIN GP22 // can use trackball jack if not used
+//#define WS2812_EXTERNAL_PULLUP
+#define RGBLED_NUM 24
+//#define DRIVER_LED_TOTAL 34
+#define RGBLED_SPLIT { 12, 12 }
+#define RGBLIGHT_SPLIT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 17
+#define RGBLIGHT_LIMIT_VAL 100
+//#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+#define NOP_FUDGE 0.4 // may not be needed if ws driver loaded
+#endif
+
+// Misc settings
+// 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// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_whole_track/info.json b/keyboards/handwired/wylderbuilds/trackball/4x6_whole_track/info.json
new file mode 100644
index 00000000000..e974ea7d481
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_whole_track/info.json
@@ -0,0 +1,310 @@
+{
+ "keyboard_name": "Dactyl-Manuform Wyld Trackball (4x6_whole_track)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0055",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 10,
+ "cols": 6
+ },
+ "layouts": {
+ "LAYOUT_4x6": {
+ "layout": [
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "5,0",
+ "x": 12.75,
+ "y": 0
+ },
+ {
+ "label": "5,1",
+ "x": 13.75,
+ "y": 0
+ },
+ {
+ "label": "5,2",
+ "x": 14.75,
+ "y": 0
+ },
+ {
+ "label": "5,3",
+ "x": 15.75,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "5,4",
+ "x": 16.75,
+ "y": 0.5
+ },
+ {
+ "label": "5,5",
+ "x": 17.75,
+ "y": 0.5
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "6,0",
+ "x": 12.75,
+ "y": 1
+ },
+ {
+ "label": "6,1",
+ "x": 13.75,
+ "y": 1
+ },
+ {
+ "label": "6,2",
+ "x": 14.75,
+ "y": 1
+ },
+ {
+ "label": "6,3",
+ "x": 15.75,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "6,4",
+ "x": 16.75,
+ "y": 1.5
+ },
+ {
+ "label": "6,5",
+ "x": 17.75,
+ "y": 1.5
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "7,0",
+ "x": 12.75,
+ "y": 2
+ },
+ {
+ "label": "7,1",
+ "x": 13.75,
+ "y": 2
+ },
+ {
+ "label": "7,2",
+ "x": 14.75,
+ "y": 2
+ },
+ {
+ "label": "7,3",
+ "x": 15.75,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "7,4",
+ "x": 16.75,
+ "y": 2.5
+ },
+ {
+ "label": "7,5",
+ "x": 17.75,
+ "y": 2.5
+ },
+ {
+ "label": "3,2",
+ "x": 3,
+ "y": 3
+ },
+ {
+ "label": "3,3",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "3,4",
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "3,5",
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "8,0",
+ "x": 12.75,
+ "y": 3
+ },
+ {
+ "label": "8,1",
+ "x": 13.75,
+ "y": 3
+ },
+ {
+ "label": "8,2",
+ "x": 14.75,
+ "y": 3
+ },
+ {
+ "label": "8,3",
+ "x": 15.75,
+ "y": 3
+ },
+ {
+ "label": "3,0",
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "label": "3,1",
+ "x": 2,
+ "y": 3.5
+ },
+ {
+ "label": "8,4",
+ "x": 16.75,
+ "y": 3.5
+ },
+ {
+ "label": "8,5",
+ "x": 17.75,
+ "y": 3.5
+ },
+ {
+ "label": "9,2",
+ "x": 12.75,
+ "y": 4.25
+ },
+ {
+ "label": "9,1",
+ "x": 11.5,
+ "y": 4.5
+ },
+ {
+ "label": "9,0",
+ "x": 10.25,
+ "y": 4.75
+ },
+ {
+ "label": "4,4",
+ "x": 6,
+ "y": 3.5
+ },
+ {
+ "label": "4,5",
+ "x": 7,
+ "y": 3.5
+ },
+ {
+ "label": "4,0",
+ "x": 4.5,
+ "y": 7.25
+ },
+ {
+ "label": "4,3",
+ "x": 5.5,
+ "y": 7.25
+ },
+ {
+ "label": "4,1",
+ "x": 5.25,
+ "y": 8.25
+ },
+ {
+ "label": "4,2",
+ "x": 6.25,
+ "y": 8.25
+ }
+ ]
+ }
+ }
+}
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_whole_track/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/4x6_whole_track/keymaps/vial/config.h
new file mode 100644
index 00000000000..b007ef525d4
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_whole_track/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x22, 0x5F, 0xEC, 0xF6, 0xFE, 0xA1, 0x08, 0x97}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 4 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 4 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_whole_track/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/4x6_whole_track/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..d73361d09f3
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_whole_track/keymaps/vial/keymap.c
@@ -0,0 +1,264 @@
+#include QMK_KEYBOARD_H
+#include "4x6_whole_track.h"
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+#define _MOUSE 3
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+enum wyld_keycodes {
+ WYLD_AUTO_MS_TOG = SAFE_RANGE
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_4x6(
+ KC_ESC , KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS,
+ KC_LSFT, 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_BSLS,
+ RAISE, KC_SPC, LOWER,
+ KC_BSPC, KC_TAB, KC_ENT,
+ KC_GRV, KC_HOME, KC_DEL
+// RAISE, KC_SPC, KC_BSPC, LOWER,
+// KC_TAB, KC_HOME, KC_ENT,
+// KC_DEL, KC_LALT
+ ),
+
+ [_LOWER] = LAYOUT_4x6(
+ KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,
+ _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,
+ _______,RGB_VAI,RGB_SAI,RGB_HUI,RGB_MOD,RGB_TOG, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,QK_BOOT,
+ _______, KC_BTN1, _______,
+ KC_BTN3, KC_BTN2, _______,
+ SNIPING, DRGSCRL, _______
+// _______,KC_BTN1,KC_BTN3, _______,
+// SNIPING,DRGSCRL, _______,
+// _______,QK_BOOT
+ ),
+
+ [_RAISE] = LAYOUT_4x6(
+ KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6, KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,
+ _______,KC_LEFT,KC_UP,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_BTN1,KC_BTN3,KC_BTN2,_______,KC_VOLU,
+ QK_BOOT,_______,_______,_______,_______,_______, _______,_______,_______,_______,WYLD_AUTO_MS_TOG,KC_VOLD,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______
+ ),
+ [_MOUSE] = LAYOUT_4x6(
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______,KC_BTN1,KC_BTN3,KC_BTN2,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______, KC_BTN1, _______,
+ KC_BTN3, KC_BTN2, _______,
+ SNIPING, DRGSCRL, _______
+// _______,KC_BTN1,KC_BTN3, _______,
+// SNIPING,DRGSCRL, _______,
+// _______,_______
+ ),
+ [4] = LAYOUT_4x6(
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______, _______,
+ _______,_______, _______,
+ _______,_______
+ )
+};
+
+void keyboard_post_init_user(void) {
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+ debug_keyboard=true;
+ debug_mouse=true;
+#else
+ debug_enable=false;
+ debug_matrix=false;
+ debug_keyboard=false;
+ debug_mouse=false;
+#endif
+#ifdef RGBLIGHT_ENABLE
+ rgblight_layers = my_rgb_layers;
+
+// rgblight_layers = my_rgb_layers;
+// rgblight_enable_noeeprom(); // Enables RGB, without saving settings
+// rgblight_sethsv_noeeprom_cyan();
+// rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
+#endif
+}
+
+void pointing_device_init_user(void) {
+ // set_auto_mouse_layer(); // only required if AUTO_MOUSE_DEFAULT_LAYER is not set to index of
+ set_auto_mouse_enable(true); // always required before the auto mouse feature will work
+ set_auto_mouse_enable(false); // but then disable so it's off by default
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case WYLD_AUTO_MS_TOG:
+ if (record->event.pressed) {
+ set_auto_mouse_enable(!get_auto_mouse_enable());
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_left()) {
+ return OLED_ROTATION_270;
+ }
+ return OLED_ROTATION_0;
+}
+
+static const char PROGMEM wylderbuilds[] = {
+ // 'dark wylderbuilds_oled_name', 128x32
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40,
+ 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x20, 0x60,
+ 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x60, 0x60,
+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0,
+ 0x00, 0x00, 0xc1, 0xc1, 0x01, 0x01, 0xf1, 0x11, 0x01, 0x01, 0x01, 0x31, 0x60, 0xc0, 0x80, 0xc0,
+ 0xf0, 0x10, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0,
+ 0x00, 0x01, 0x03, 0x9e, 0xf8, 0x00, 0x00, 0x20, 0xe0, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0xf0, 0x30, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x98, 0xf0, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x00, 0x70, 0xfe, 0x03, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00,
+ 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x11, 0xf1, 0x11, 0x33, 0x63, 0xc3,
+ 0x83, 0x01, 0x01, 0xc1, 0xe1, 0x31, 0x11, 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,
+ 0x1f, 0x7c, 0xff, 0x07, 0x7c, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7f, 0xff,
+ 0x60, 0x30, 0x18, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xf2, 0x82, 0x02, 0x80, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x7f, 0x0e, 0x1b, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0x81, 0xc1, 0x63,
+ 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00,
+ 0x00, 0x1f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x60, 0x30, 0x1f,
+ 0x07, 0x00, 0x00, 0x01, 0x43, 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static void render_wylderbuilds(void) {
+ oled_write_raw_P(wylderbuilds, sizeof(wylderbuilds));
+}
+
+bool oled_task_user(void) {
+ oled_set_cursor(0, 3);
+ if (is_keyboard_left()) {
+ // oled_write_P(PSTR("Layer\n"), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ oled_write_P(PSTR(" BASE\n"), false);
+ break;
+ case _LOWER:
+ oled_write_P(PSTR("LOWER\n"), false);
+ break;
+ case _RAISE:
+ oled_write_P(PSTR("RAISE\n"), false);
+ break;
+ case _MOUSE:
+ oled_write_P(PSTR("MOUSE\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+ oled_set_cursor(2, 7);
+ oled_write_P(PSTR("WPM "), false);
+ oled_set_cursor(1, 8);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 9);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+ } else {
+ // write WPM to right OLED
+ oled_set_cursor(0, 0);
+ render_wylderbuilds();
+ oled_scroll_left();
+ }
+
+ return false;
+}
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+const rgblight_segment_t PROGMEM querty_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {9, 3, HSV_RED}, // Light 4 LEDs, starting with LED 6
+ {21, 3, HSV_RED} // Light 4 LEDs, starting with LED 6
+);
+const rgblight_segment_t PROGMEM lower_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {9, 3, HSV_BLUE},
+ {21, 3, HSV_BLUE}
+);
+const rgblight_segment_t PROGMEM raise_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {9, 3, HSV_YELLOW},
+ {21, 3, HSV_YELLOW}
+);
+const rgblight_segment_t PROGMEM mouse_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {9, 3, HSV_GREEN},
+ {21, 3, HSV_GREEN}
+);
+const rgblight_segment_t PROGMEM play_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {9, 3, HSV_PURPLE},
+ {21, 3, HSV_PURPLE}
+);
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ querty_layer, // Overrides caps lock layer
+ lower_layer, // Overrides other layers
+ raise_layer,
+ mouse_layer,
+ play_layer
+ // Overrides other layers
+);
+
+//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(0, layer_state_cmp(state, _QWERTY));
+ return state;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(1, layer_state_cmp(state, _LOWER));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _RAISE));
+ rgblight_set_layer_state(3, layer_state_cmp(state, _MOUSE));
+ rgblight_set_layer_state(4, layer_state_cmp(state, 4));
+ return state;
+}
+
+
+#endif
+
+// rgblight_enable();
+
+
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_whole_track/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/4x6_whole_track/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_whole_track/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_whole_track/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/4x6_whole_track/keymaps/vial/vial.json
new file mode 100644
index 00000000000..fcfa0a7e8dc
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_whole_track/keymaps/vial/vial.json
@@ -0,0 +1,185 @@
+{
+ "matrix": {
+ "rows": 10,
+ "cols": 6
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 4x6 Whole Matrix Track"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ {
+ "n": true
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5.75
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 12.75
+ },
+ "9,2"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 11.5
+ },
+ "9,1"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 10.25
+ },
+ "9,0"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -2.25,
+ "x": 6
+ },
+ "4,4",
+ "4,5"
+ ],
+ [
+ {
+ "r": -15,
+ "y": 2.75,
+ "x": 4.5
+ },
+ "4,0",
+ "4,3"
+ ],
+ [
+ {
+ "r": -13,
+ "x": 5.25
+ },
+ "4,1",
+ "4,2"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_whole_track/mcuconf.h b/keyboards/handwired/wylderbuilds/trackball/4x6_whole_track/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_whole_track/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_whole_track/rules.mk b/keyboards/handwired/wylderbuilds/trackball/4x6_whole_track/rules.mk
new file mode 100644
index 00000000000..c0eca830ba3
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_whole_track/rules.mk
@@ -0,0 +1,21 @@
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+#POINTING_DEVICE_DRIVER = pmw3389
+
+SERIAL_DRIVER = vendor
+MOUSEKEY_ENABLE = yes
+CONSOLE_ENABLE = no
+#COMMAND_ENABLE = yes
+BOOTMAGIC_ENABLE = yes
+OLED_ENABLE = no #OLED_DRIVER = SSD1306
+WPM_ENABLE = no
+EXTRAKEY_ENABLE = yes # Audio control and System control
+NKRO_ENABLE = yes # Enable N-Key Rollover
+ENCODER_ENABLE = no
+
+RGBLIGHT_ENABLE = no
+WS2812_DRIVER = vendor
+SLEEP_LED_ENABLE = no
+
+# OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_whole_track/wylderbuilds-4x6-whole-matrix-track.json b/keyboards/handwired/wylderbuilds/trackball/4x6_whole_track/wylderbuilds-4x6-whole-matrix-track.json
new file mode 100644
index 00000000000..a6496157ecb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_whole_track/wylderbuilds-4x6-whole-matrix-track.json
@@ -0,0 +1,177 @@
+[
+ {
+ "name": "Wylderbuilds 4x6 Whole Matrix Track"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ {
+ "n": true
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5.75
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 12.75
+ },
+ "9,2"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 11.5
+ },
+ "9,1"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 10.25
+ },
+ "9,0"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -2.25,
+ "x": 6
+ },
+ "4,4",
+ "4,5"
+ ],
+ [
+ {
+ "r": -15,
+ "y": 2.75,
+ "x": 4.5
+ },
+ "4,0",
+ "4,3"
+ ],
+ [
+ {
+ "r": -13,
+ "x": 5.25
+ },
+ "4,1",
+ "4,2"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x6_whole_track/wylderbuilds-4x6-whole-track-mini.json b/keyboards/handwired/wylderbuilds/trackball/4x6_whole_track/wylderbuilds-4x6-whole-track-mini.json
new file mode 100644
index 00000000000..633963eb7f1
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x6_whole_track/wylderbuilds-4x6-whole-track-mini.json
@@ -0,0 +1,173 @@
+[
+ {
+ "name": "Wylderbuilds 4x6 Whole Track Mini"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ {
+ "n": true
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5.75
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 13
+ },
+ "9,0"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 13
+ },
+ "9,1"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 11.75
+ },
+ "9,2",
+ {
+ "x": 0.25
+ },
+ "9,3"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -4.25,
+ "x": 5
+ },
+ "4,3",
+ "4,4",
+ "4,5"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 5
+ },
+ "4,1",
+ "4,2"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x7_whole_track/4x7_whole_track.c b/keyboards/handwired/wylderbuilds/trackball/4x7_whole_track/4x7_whole_track.c
new file mode 100644
index 00000000000..641be6cee83
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x7_whole_track/4x7_whole_track.c
@@ -0,0 +1 @@
+#include "4x7_whole_track.h"
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x7_whole_track/4x7_whole_track.h b/keyboards/handwired/wylderbuilds/trackball/4x7_whole_track/4x7_whole_track.h
new file mode 100644
index 00000000000..5c69bea7434
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x7_whole_track/4x7_whole_track.h
@@ -0,0 +1,51 @@
+#pragma once
+
+#include "trackball.h"
+
+#define XXX KC_NO
+
+/*
+//#define LAYOUT_4x6( \
+// L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+// L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+// L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+// L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \
+// L43, L44, L45, R40, \
+// L41, L42, R41, \
+// R42, R43 \
+//) { \
+// { L00, L01, L02, L03, L04, L05 }, \
+// { L10, L11, L12, L13, L14, L15 }, \
+// { L20, L21, L22, L23, L24, L25 }, \
+// { L30, L31, L32, L33, L34, L35 }, \
+// { XXX, L41, L42, L43, L44, L45 }, \
+//\
+// { R00, R01, R02, R03, R04, R05 }, \
+// { R10, R11, R12, R13, R14, R15 }, \
+// { R20, R21, R22, R23, R24, R25 }, \
+// { R30, R31, R32, R33, R34, R35 }, \
+// { R40, R41, R42, R43, XXX, XXX } \
+//}
+*/
+
+#define LAYOUT_4x7( \
+ 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, L40, R46, R20, R21, R22, R23, R24, R25, R26, \
+ L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, \
+ L43, L44, R40, \
+ L41, L45, R41, \
+ L42, L46, R42, R43 \
+) { \
+ { 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 }, \
+ { L40, L41, L42, L43, L44, L45, L46 }, \
+\
+ { R00, R01, R02, R03, R04, R05, R06 }, \
+ { R10, R11, R12, R13, R14, R15, R16 }, \
+ { R20, R21, R22, R23, R24, R25, R26 }, \
+ { R30, R31, R32, R33, R34, R35, R36 }, \
+ { R40, R41, R42, R43, XXX, XXX, R46 } \
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x7_whole_track/config.h b/keyboards/handwired/wylderbuilds/trackball/4x7_whole_track/config.h
new file mode 100644
index 00000000000..1b618925fde
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x7_whole_track/config.h
@@ -0,0 +1,144 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+//#include "config_common.h"
+// Basic Config
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+
+#define USE_SERIAL
+
+// Using Serial instead of I2C
+#define SPLIT_LAYER_STATE_ENABLE
+
+#define USE_SERIAL
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+#define SERIAL_USART_PIN_SWAP
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Columns are doubled-up
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 7
+
+//#define MATRIX_COL_PINS_RIGHT { GP7, GP6, GP5, GP4, GP3, GP2 }
+#define MATRIX_COL_PINS { GP8, GP7, GP6, GP5, GP4, GP3, GP2 }
+#define MATRIX_ROW_PINS { GP9, GP10, GP11, GP12, GP13 }
+
+
+#define SPLIT_POINTING_ENABLE
+#define POINTING_DEVICE_INVERT_Y
+#define ROTATIONAL_TRANSFORM_ANGLE -25
+#define POINTING_DEVICE_RIGHT
+// #define POINTING_DEVICE_COMBINED
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x04
+
+#define POINTING_DEVICE_AUTO_MOUSE_ENABLE
+// only required if not setting mouse layer elsewhere
+#define AUTO_MOUSE_DEFAULT_LAYER 3
+
+
+#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+#define POINTING_DEVICE_AUTO_MOUSE_ENABLE
+// only required if not setting mouse layer elsewhere
+#define AUTO_MOUSE_DEFAULT_LAYER 3
+
+
+//#define CHARYBDIS_MINIMUM_DEFAULT_DPI 1200
+//#define CHARYBDIS_DEFAULT_DPI_CONFIG_STEP 200
+//#define CHARYBDIS_MINIMUM_SNIPING_DPI 400
+//#define CHARYBDIS_SNIPING_DPI_CONFIG_STEP 200
+
+#ifdef ENCODER_ENABLE
+#define ENCODERS_PAD_A { GP27 }
+#define ENCODERS_PAD_B { GP28 }
+#define ENCODER_RESOLUTIONS { 2 }
+#define ENCODERS_PAD_A_RIGHT { GP27 }
+#define ENCODERS_PAD_B_RIGHT { GP28 }
+#define ENCODER_RESOLUTIONS_RIGHT { 2 }
+#endif
+
+//// Sensor Notes ////
+//// Pi Pico pins ////
+// 3V3 -- Power (not 3v3_EN)
+// GP17 -- CS pin
+// GP20 -- MISO pin
+// GP19 -- MOSI pin
+// GP18 -- SCK pin clock Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD0
+#define I2C1_SDA_PIN GP16
+#define I2C1_SCL_PIN GP17
+//#define RGBLIGHT_LAYERS
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+#define WS2812_PIO_USE_PIO1
+//#define WS2812_PIO_USE_PIO1
+//#define WS2812_PIO_USE_PIO1
+#define RGBLIGHT_LAYERS
+//#define WS2812_EXTERNAL_PULLUP
+//#define DRIVER_LED_TOTAL 34
+#define RGBLIGHT_SPLIT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_TWINKLE
+//#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+#define NOP_FUDGE 0.4 // may not be needed if ws driver loaded
+#endif
+
+#define SPLIT_TRANSPORT_MIRROR
+
+#ifdef RGB_MATRIX_ENABLE
+
+#define RGBLIGHT_SPLIT
+# define RGB_MATRIX_LED_COUNT 66
+# define WS2812_PIO_USE_PIO1 // Force the usage of PIO1 peripheral, by default the WS2812 implementation uses the PIO0 peripheral
+
+# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_REACTIVE // Sets the default mode, if none has been set
+# define RGB_MATRIX_DEFAULT_HUE 33 // Sets the default hue value, if none has been set
+# define RGB_MATRIX_DEFAULT_SAT 255 // Sets the default saturation value, if none has been set
+# define RGB_MATRIX_DEFAULT_SPD 50
+# define WS2812_DI_PIN GP22 // can use trackball jack if not used
+# define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
+# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# define RGB_MATRIX_KEYPRESSES
+# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define NOP_FUDGE 0.4 // may not be needed if ws driver loaded
+#endif
+
+// Misc settings
+// 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// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x7_whole_track/info.json b/keyboards/handwired/wylderbuilds/trackball/4x7_whole_track/info.json
new file mode 100644
index 00000000000..e346ea4e48b
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x7_whole_track/info.json
@@ -0,0 +1,253 @@
+{
+ "manufacturer": "wylderbuilds",
+ "keyboard_name": "Dactyl-Manuform Wyld Trackball (4x7_whole_track)",
+ "maintainer": "qmk",
+ "bootloader": "rp2040",
+ "debounce": 5,
+ "diode_direction": "COL2ROW",
+ "dynamic_keymap": {
+ "layer_count": 5
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "encoder": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
+ "height": 8,
+ "matrix": {
+ "cols": 7,
+ "rows": 10
+ },
+ "matrix_size": {
+ "cols": 7,
+ "rows": 10
+ },
+ "mousekey": {
+ "delay": 0,
+ "interval": 20,
+ "max_speed": 7,
+ "time_to_max": 60,
+ "wheel_delay": 0
+ },
+ "processor": "RP2040",
+ "rgb_matrix": {
+ "animations": {
+ "alpha_mods": true,
+ "breathing": true,
+ "colorband_pinwheel_sat": true,
+ "colorband_pinwheel_val": true,
+ "colorband_sat": true,
+ "colorband_spiral_sat": true,
+ "colorband_spiral_val": true,
+ "colorband_val": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_out_in": true,
+ "cycle_out_in_dual": true,
+ "cycle_pinwheel": true,
+ "cycle_spiral": true,
+ "cycle_up_down": true,
+ "digital_rain": true,
+ "dual_beacon": true,
+ "gradient_left_right": true,
+ "gradient_up_down": true,
+ "hue_breathing": true,
+ "hue_pendulum": true,
+ "hue_wave": true,
+ "jellybean_raindrops": true,
+ "pixel_flow": true,
+ "pixel_fractal": true,
+ "pixel_rain": true,
+ "rainbow_beacon": true,
+ "rainbow_moving_chevron": true,
+ "rainbow_pinwheels": true,
+ "raindrops": true,
+ "solid_color": true,
+ "solid_reactive": true,
+ "solid_reactive_cross": true,
+ "solid_reactive_nexus": true,
+ "solid_reactive_simple": true,
+ "solid_reactive_wide": true,
+ "solid_splash": true,
+ "splash": true,
+ "typing_heatmap": true
+ },
+ "driver": "ws2812",
+ "layout": [
+ {"matrix": [0, 6], "x": 79, "y": 0, "flags": 4},
+ {"matrix": [1, 6], "x": 79, "y": 11, "flags": 4},
+ {"matrix": [2, 6], "x": 91, "y": 25, "flags": 4},
+ {"matrix": [3, 6], "x": 79, "y": 39, "flags": 4},
+ {"matrix": [0, 5], "x": 68, "y": 0, "flags": 4},
+ {"matrix": [1, 5], "x": 68, "y": 11, "flags": 4},
+ {"matrix": [2, 5], "x": 79, "y": 25, "flags": 4},
+ {"matrix": [3, 5], "x": 68, "y": 39, "flags": 4},
+ {"matrix": [0, 4], "x": 57, "y": 0, "flags": 4},
+ {"matrix": [1, 4], "x": 57, "y": 11, "flags": 4},
+ {"matrix": [2, 4], "x": 68, "y": 25, "flags": 4},
+ {"matrix": [3, 4], "x": 57, "y": 39, "flags": 4},
+ {"matrix": [0, 3], "x": 45, "y": 0, "flags": 4},
+ {"matrix": [1, 3], "x": 45, "y": 11, "flags": 4},
+ {"matrix": [2, 3], "x": 45, "y": 25, "flags": 4},
+ {"matrix": [3, 3], "x": 45, "y": 39, "flags": 4},
+ {"matrix": [0, 2], "x": 34, "y": 4, "flags": 4},
+ {"matrix": [1, 2], "x": 34, "y": 18, "flags": 4},
+ {"matrix": [2, 2], "x": 34, "y": 32, "flags": 4},
+ {"matrix": [3, 2], "x": 0, "y": 46, "flags": 4},
+ {"matrix": [0, 1], "x": 23, "y": 4, "flags": 4},
+ {"matrix": [1, 1], "x": 23, "y": 18, "flags": 4},
+ {"matrix": [2, 1], "x": 23, "y": 32, "flags": 4},
+ {"matrix": [3, 1], "x": 0, "y": 46, "flags": 4},
+ {"matrix": [0, 0], "x": 11, "y": 4, "flags": 4},
+ {"matrix": [1, 0], "x": 11, "y": 18, "flags": 4},
+ {"matrix": [2, 0], "x": 11, "y": 32, "flags": 4},
+ {"matrix": [3, 0], "x": 0, "y": 46, "flags": 4},
+ {"matrix": [4, 3], "x": 60, "y": 55, "flags": 4},
+ {"matrix": [4, 4], "x": 60, "y": 55, "flags": 4},
+ {"matrix": [4, 5], "x": 65, "y": 64, "flags": 4},
+ {"matrix": [4, 6], "x": 71, "y": 71, "flags": 4},
+ {"matrix": [4, 2], "x": 71, "y": 71, "flags": 4},
+ {"matrix": [4, 1], "x": 65, "y": 64, "flags": 4},
+ {"matrix": [5, 0], "x": 156, "y": 0, "flags": 4},
+ {"matrix": [6, 0], "x": 156, "y": 11, "flags": 4},
+ {"matrix": [7, 0], "x": 167, "y": 25, "flags": 4},
+ {"matrix": [8, 0], "x": 156, "y": 39, "flags": 4},
+ {"matrix": [5, 1], "x": 167, "y": 0, "flags": 4},
+ {"matrix": [6, 1], "x": 167, "y": 11, "flags": 4},
+ {"matrix": [7, 1], "x": 190, "y": 25, "flags": 4},
+ {"matrix": [8, 1], "x": 167, "y": 39, "flags": 4},
+ {"matrix": [5, 2], "x": 179, "y": 0, "flags": 4},
+ {"matrix": [6, 2], "x": 179, "y": 11, "flags": 4},
+ {"matrix": [7, 2], "x": 201, "y": 25, "flags": 4},
+ {"matrix": [8, 2], "x": 179, "y": 39, "flags": 4},
+ {"matrix": [5, 3], "x": 190, "y": 0, "flags": 4},
+ {"matrix": [6, 3], "x": 190, "y": 11, "flags": 4},
+ {"matrix": [7, 3], "x": 213, "y": 25, "flags": 4},
+ {"matrix": [8, 3], "x": 190, "y": 39, "flags": 4},
+ {"matrix": [5, 4], "x": 201, "y": 4, "flags": 4},
+ {"matrix": [6, 4], "x": 201, "y": 18, "flags": 4},
+ {"matrix": [7, 4], "x": 201, "y": 32, "flags": 4},
+ {"matrix": [8, 4], "x": 145, "y": 46, "flags": 4},
+ {"matrix": [5, 5], "x": 213, "y": 4, "flags": 4},
+ {"matrix": [6, 5], "x": 213, "y": 18, "flags": 4},
+ {"matrix": [7, 5], "x": 213, "y": 32, "flags": 4},
+ {"matrix": [8, 5], "x": 145, "y": 46, "flags": 4},
+ {"matrix": [5, 6], "x": 224, "y": 4, "flags": 4},
+ {"matrix": [6, 6], "x": 224, "y": 18, "flags": 4},
+ {"matrix": [7, 6], "x": 224, "y": 32, "flags": 4},
+ {"matrix": [8, 6], "x": 145, "y": 46, "flags": 4},
+ {"matrix": [9, 0], "x": 111, "y": 55, "flags": 4},
+ {"matrix": [9, 1], "x": 111, "y": 64, "flags": 4},
+ {"matrix": [9, 3], "x": 99, "y": 71, "flags": 4},
+ {"matrix": [9, 2], "x": 99, "y": 71, "flags": 4}
+ ],
+ "max_brightness": 120,
+ "split_count": [34, 32]
+ },
+ "rgblight": {
+ "brightness_steps": 17,
+ "hue_steps": 8,
+ "led_count": 24,
+ "max_brightness": 100,
+ "saturation_steps": 8,
+ "split_count": [12, 12]
+ },
+ "split": {
+ "enabled": true,
+ "handedness": {
+ "pin": "GP26"
+ }
+ },
+ "url": "https://wylderbuilds.com",
+ "usb": {
+ "device_version": "0.0.1",
+ "pid": "0x0248",
+ "shared_endpoint": {
+ "mouse": true
+ },
+ "vid": "0x9953"
+ },
+ "width": 18,
+ "ws2812": {
+ "driver": "vendor",
+ "pin": "GP22"
+ },
+ "layouts": {
+ "LAYOUT_4x7": {
+ "layout": [
+ {"label": "0,3", "x": 3, "y": 0},
+ {"label": "0,4", "x": 4, "y": 0},
+ {"label": "0,5", "x": 5, "y": 0},
+ {"label": "0,6", "x": 6, "y": 0},
+ {"label": "5,0", "x": 11.75, "y": 0},
+ {"label": "5,1", "x": 12.75, "y": 0},
+ {"label": "5,2", "x": 13.75, "y": 0},
+ {"label": "5,3", "x": 14.75, "y": 0},
+ {"label": "0,0", "x": 0, "y": 0.5},
+ {"label": "0,1", "x": 1, "y": 0.5},
+ {"label": "0,2", "x": 2, "y": 0.5},
+ {"label": "5,4", "x": 15.75, "y": 0.5},
+ {"label": "5,5", "x": 16.75, "y": 0.5},
+ {"label": "5,6", "x": 17.75, "y": 0.5},
+ {"label": "1,3", "x": 3, "y": 1},
+ {"label": "1,4", "x": 4, "y": 1},
+ {"label": "1,5", "x": 5, "y": 1},
+ {"label": "1,6", "x": 6, "y": 1},
+ {"label": "6,0", "x": 11.75, "y": 1},
+ {"label": "6,1", "x": 12.75, "y": 1},
+ {"label": "6,2", "x": 13.75, "y": 1},
+ {"label": "6,3", "x": 14.75, "y": 1},
+ {"label": "1,0", "x": 0, "y": 1.5},
+ {"label": "1,1", "x": 1, "y": 1.5},
+ {"label": "1,2", "x": 2, "y": 1.5},
+ {"label": "6,4", "x": 15.75, "y": 1.5},
+ {"label": "6,5", "x": 16.75, "y": 1.5},
+ {"label": "6,6", "x": 17.75, "y": 1.5},
+ {"label": "2,3", "x": 3, "y": 2},
+ {"label": "2,4", "x": 4, "y": 2},
+ {"label": "2,5", "x": 5, "y": 2},
+ {"label": "2,6", "x": 6, "y": 2},
+ {"label": "4,0", "x": 7.75, "y": 2},
+ {"label": "9,6", "x": 10, "y": 2},
+ {"label": "7,0", "x": 11.75, "y": 2},
+ {"label": "7,1", "x": 12.75, "y": 2},
+ {"label": "7,2", "x": 13.75, "y": 2},
+ {"label": "7,3", "x": 14.75, "y": 2},
+ {"label": "2,0", "x": 0, "y": 2.5},
+ {"label": "2,1", "x": 1, "y": 2.5},
+ {"label": "2,2", "x": 2, "y": 2.5},
+ {"label": "7,4", "x": 15.75, "y": 2.5},
+ {"label": "7,5", "x": 16.75, "y": 2.5},
+ {"label": "7,6", "x": 17.75, "y": 2.5},
+ {"label": "3,3", "x": 3, "y": 3},
+ {"label": "3,4", "x": 4, "y": 3},
+ {"label": "3,5", "x": 5, "y": 3},
+ {"label": "3,6", "x": 6, "y": 3},
+ {"label": "8,0", "x": 11.75, "y": 3},
+ {"label": "8,1", "x": 12.75, "y": 3},
+ {"label": "8,2", "x": 13.75, "y": 3},
+ {"label": "8,3", "x": 14.75, "y": 3},
+ {"label": "3,0", "x": 0, "y": 3.5},
+ {"label": "3,1", "x": 1, "y": 3.5},
+ {"label": "3,2", "x": 2, "y": 3.5},
+ {"label": "8,4", "x": 15.75, "y": 3.5},
+ {"label": "8,5", "x": 16.75, "y": 3.5},
+ {"label": "8,6", "x": 17.75, "y": 3.5},
+ {"label": "4,3", "x": 5.25, "y": 4.25},
+ {"label": "4,4", "x": 6.25, "y": 4.25},
+ {"label": "9,0", "x": 11.75, "y": 4.25},
+ {"label": "4,1", "x": 5.75, "y": 5.25},
+ {"label": "4,5", "x": 6.75, "y": 5.25},
+ {"label": "9,1", "x": 11.75, "y": 5.25},
+ {"label": "4,2", "x": 6.25, "y": 6.25},
+ {"label": "4,6", "x": 7.25, "y": 6.25},
+ {"label": "9,2", "x": 10.75, "y": 6.25},
+ {"label": "9,3", "x": 11.75, "y": 6.25}
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x7_whole_track/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/4x7_whole_track/keymaps/vial/config.h
new file mode 100644
index 00000000000..b007ef525d4
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x7_whole_track/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x22, 0x5F, 0xEC, 0xF6, 0xFE, 0xA1, 0x08, 0x97}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 4 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 4 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x7_whole_track/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/4x7_whole_track/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..8314de10676
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x7_whole_track/keymaps/vial/keymap.c
@@ -0,0 +1,263 @@
+#include QMK_KEYBOARD_H
+#include "4x7_whole_track.h"
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+#define _MOUSE 3
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+enum wyld_keycodes {
+ WYLD_AUTO_MS_TOG = SAFE_RANGE
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_4x7(
+ DRGSCRL, KC_ESC , KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC,
+ SNIPING, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, KC_EQL,
+ KC_BTN3, KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_MUTE, KC_HOME, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BTN3,
+ KC_BTN1, KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT ,KC_SLSH, KC_BSLS, KC_BTN1,
+ RAISE, KC_SPC, LOWER,
+ KC_BSPC, KC_TAB, KC_ENT,
+ KC_GRV, KC_HOME, KC_DEL, KC_LALT
+ ),
+
+ [_LOWER] = LAYOUT_4x7(
+ _______,KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL, _______,
+ _______,_______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,_______,
+ _______,_______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, _______,_______, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,_______,
+ _______, _______,RGB_VAI,RGB_SAI,RGB_HUI,RGB_MOD,RGB_TOG, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,_______,QK_BOOT,
+ _______, KC_BTN1, _______,
+ KC_BTN3, KC_BTN2, _______,
+ SNIPING, DRGSCRL, _______,_______
+ ),
+
+ [_RAISE] = LAYOUT_4x7(
+ _______,KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6, KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,_______,
+ _______,_______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,_______,
+ _______,_______,KC_LEFT,KC_UP,KC_DOWN,KC_RGHT,KC_LPRN, _______,_______, KC_RPRN,KC_BTN1,KC_BTN3,KC_BTN2,_______,KC_VOLU,_______,
+ QK_BOOT,DPI_RMOD,DPI_MOD,DPI_RST,_______,_______,_______, _______,_______,_______,_______,_______,WYLD_AUTO_MS_TOG,KC_VOLD,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,_______
+ ),
+ [_MOUSE] = LAYOUT_4x7(
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,KC_BTN2,KC_BTN3,KC_BTN1,_______, _______,_______, _______,KC_BTN1,KC_BTN3,KC_BTN2,_______,_______,_______,
+ _______,_______,_______,_______,_______,SNP_TOG,DRG_TOG, _______,_______,_______,_______,_______,_______,_______,
+ _______, KC_BTN1, _______,
+ KC_BTN3, KC_BTN2, _______,
+ SNIPING, DRGSCRL, _______,_______
+ )
+};
+
+void keyboard_post_init_user(void) {
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+ debug_keyboard=true;
+ debug_mouse=true;
+#else
+ debug_enable=false;
+ debug_matrix=false;
+ debug_keyboard=false;
+ debug_mouse=false;
+#endif
+#ifdef RGBLIGHT_ENABLE
+ rgblight_layers = my_rgb_layers;
+#endif
+}
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_QWERTY] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_LOWER] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_RAISE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_MOUSE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+};
+#endif
+
+
+void pointing_device_init_user(void) {
+ // set_auto_mouse_layer(); // only required if AUTO_MOUSE_DEFAULT_LAYER is not set to index of
+ set_auto_mouse_enable(true); // always required before the auto mouse feature will work
+ set_auto_mouse_enable(false); // but then disable so it's off by default
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case WYLD_AUTO_MS_TOG:
+ if (record->event.pressed) {
+ set_auto_mouse_enable(!get_auto_mouse_enable());
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_left()) {
+ return OLED_ROTATION_270;
+ }
+#ifdef POINTING_DEVICE_ENABLE
+ return OLED_ROTATION_270;
+#else
+ return OLED_ROTATION_0;
+#endif
+}
+
+#ifndef POINTING_DEVICE_ENABLE
+static const char PROGMEM wylderbuilds[] = {
+ // 'dark wylderbuilds_oled_name', 128x32
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40,
+ 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x20, 0x60,
+ 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x60, 0x60,
+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0,
+ 0x00, 0x00, 0xc1, 0xc1, 0x01, 0x01, 0xf1, 0x11, 0x01, 0x01, 0x01, 0x31, 0x60, 0xc0, 0x80, 0xc0,
+ 0xf0, 0x10, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0,
+ 0x00, 0x01, 0x03, 0x9e, 0xf8, 0x00, 0x00, 0x20, 0xe0, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0xf0, 0x30, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x98, 0xf0, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x00, 0x70, 0xfe, 0x03, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00,
+ 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x11, 0xf1, 0x11, 0x33, 0x63, 0xc3,
+ 0x83, 0x01, 0x01, 0xc1, 0xe1, 0x31, 0x11, 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,
+ 0x1f, 0x7c, 0xff, 0x07, 0x7c, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7f, 0xff,
+ 0x60, 0x30, 0x18, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xf2, 0x82, 0x02, 0x80, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x7f, 0x0e, 0x1b, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0x81, 0xc1, 0x63,
+ 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00,
+ 0x00, 0x1f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x60, 0x30, 0x1f,
+ 0x07, 0x00, 0x00, 0x01, 0x43, 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static void render_wylderbuilds(void) {
+ oled_write_raw_P(wylderbuilds, sizeof(wylderbuilds));
+}
+
+#endif
+
+static char layer_names[5][8] = {
+ " BASE\n",
+ "LOWER\n",
+ "RAISE\n",
+ "MOUSE\n",
+ " XTRA\n"
+ };
+
+bool oled_task_user(void) {
+ char* layer_name = layer_names[get_highest_layer(layer_state)];
+
+ if (is_keyboard_left()) {
+ // oled_write_P(PSTR("Layer\n"), false);
+ oled_set_cursor(0, 3);
+ oled_write_P(PSTR(layer_name), false);
+
+ oled_set_cursor(2, 6);
+ oled_write_P(PSTR("WPM "), false);
+ oled_set_cursor(2, 7);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 9);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+ } else {
+ // write WPM to right OLED
+#ifdef POINTING_DEVICE_ENABLE
+ char* mode = get_mouse_mode_string();
+ uint16_t dpi = get_current_dpi();
+ oled_set_cursor(2, 3);
+ oled_write_P(PSTR("DPI "), false);
+ oled_set_cursor(0, 5);
+ oled_write_P(PSTR(get_u16_str(dpi, ' ')), false);
+ oled_set_cursor(0, 9);
+ oled_write(PSTR(mode), false);
+#else
+ oled_set_cursor(0, 0);
+ render_wylderbuilds();
+ oled_scroll_left();
+#endif
+ }
+
+ return false;
+}
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+const rgblight_segment_t PROGMEM querty_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {9, 3, HSV_RED}, // Light 4 LEDs, starting with LED 6
+ {21, 3, HSV_RED} // Light 4 LEDs, starting with LED 6
+);
+const rgblight_segment_t PROGMEM lower_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {9, 3, HSV_BLUE},
+ {21, 3, HSV_BLUE}
+);
+const rgblight_segment_t PROGMEM raise_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {9, 3, HSV_YELLOW},
+ {21, 3, HSV_YELLOW}
+);
+const rgblight_segment_t PROGMEM mouse_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {9, 3, HSV_GREEN},
+ {21, 3, HSV_GREEN}
+);
+const rgblight_segment_t PROGMEM play_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {9, 3, HSV_PURPLE},
+ {21, 3, HSV_PURPLE}
+);
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ querty_layer, // Overrides caps lock layer
+ lower_layer, // Overrides other layers
+ raise_layer,
+ mouse_layer,
+ play_layer
+ // Overrides other layers
+);
+
+//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(0, layer_state_cmp(state, _QWERTY));
+ return state;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(1, layer_state_cmp(state, _LOWER));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _RAISE));
+ rgblight_set_layer_state(3, layer_state_cmp(state, _MOUSE));
+ rgblight_set_layer_state(4, layer_state_cmp(state, 4));
+ return state;
+}
+
+
+#endif
+
+// rgblight_enable();
+
+
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x7_whole_track/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/4x7_whole_track/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..d1c35cfd60d
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x7_whole_track/keymaps/vial/rules.mk
@@ -0,0 +1,9 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x7_whole_track/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/4x7_whole_track/keymaps/vial/vial.json
new file mode 100644
index 00000000000..1976645892d
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x7_whole_track/keymaps/vial/vial.json
@@ -0,0 +1,198 @@
+{
+ "vendorId": "0x9953",
+ "productId": "0x0248",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 10,
+ "cols": 7
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 4x7 Track Encoders"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 4.75
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "0,0",
+ "0,1",
+ "0,2",
+ {
+ "x": 12.75
+ },
+ "5,4",
+ "5,5",
+ "5,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ {
+ "x": 0.25
+ },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 0.25
+ },
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 0.25
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ {
+ "x": 12.75
+ },
+ "6,4",
+ "6,5",
+ "6,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ "2,6",
+ {
+ "x": 0.75
+ },
+ "4,0",
+ {
+ "x": 1.25
+ },
+ "9,6",
+ {
+ "x": 0.75
+ },
+ "7,0",
+ {
+ "n": true
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ {
+ "x": 12.75
+ },
+ "7,4",
+ "7,5",
+ "7,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ {
+ "x": 4.75
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ {
+ "x": 12.75
+ },
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 5.25
+ },
+ "4,3",
+ "4,4",
+ {
+ "x": 4.5
+ },
+ "9,0"
+ ],
+ [
+ {
+ "x": 5.75
+ },
+ "4,1",
+ "4,5",
+ {
+ "x": 4
+ },
+ "9,1"
+ ],
+ [
+ {
+ "x": 6.25
+ },
+ "4,2",
+ "4,6",
+ {
+ "x": 2.5
+ },
+ "9,2",
+ "9,3"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x7_whole_track/mcuconf.h b/keyboards/handwired/wylderbuilds/trackball/4x7_whole_track/mcuconf.h
new file mode 100644
index 00000000000..8a8e3d6b937
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x7_whole_track/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x7_whole_track/rules.mk b/keyboards/handwired/wylderbuilds/trackball/4x7_whole_track/rules.mk
new file mode 100644
index 00000000000..60ed0be06ab
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x7_whole_track/rules.mk
@@ -0,0 +1,17 @@
+SERIAL_DRIVER = vendor
+#MOUSEKEY_ENABLE = yes
+#CONSOLE_ENABLE = no
+#COMMAND_ENABLE = yes
+#BOOTMAGIC_ENABLE = yes
+OLED_ENABLE = yes
+WPM_ENABLE = yes
+EXTRAKEY_ENABLE = yes # Audio control and System control
+#NKRO_ENABLE = yes # Enable N-Key Rollover
+#ENCODER_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+
+#RGBLIGHT_ENABLE = no23
+#WS2812_DRIVER = vendor
+#SLEEP_LED_ENABLE = no
+
+OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/4x7_whole_track/wylderbuilds-4x7-track-encoders.json b/keyboards/handwired/wylderbuilds/trackball/4x7_whole_track/wylderbuilds-4x7-track-encoders.json
new file mode 100644
index 00000000000..ca80bd7af66
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/4x7_whole_track/wylderbuilds-4x7-track-encoders.json
@@ -0,0 +1,187 @@
+[
+ {
+ "name": "Wylderbuilds 4x7 Track Encoders"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 4.75
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "0,0",
+ "0,1",
+ "0,2",
+ {
+ "x": 12.75
+ },
+ "5,4",
+ "5,5",
+ "5,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ {
+ "x": 0.25
+ },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 0.25
+ },
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 0.25
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ {
+ "x": 12.75
+ },
+ "6,4",
+ "6,5",
+ "6,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ "2,6",
+ {
+ "x": 0.75
+ },
+ "4,0",
+ {
+ "x": 1.25
+ },
+ "9,6",
+ {
+ "x": 0.75
+ },
+ "7,0",
+ {
+ "n": true
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ {
+ "x": 12.75
+ },
+ "7,4",
+ "7,5",
+ "7,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ {
+ "x": 4.75
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ {
+ "x": 12.75
+ },
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 5.25
+ },
+ "4,5",
+ "4,6",
+ {
+ "x": 4.5
+ },
+ "9,0"
+ ],
+ [
+ {
+ "x": 5.75
+ },
+ "4,3",
+ "4,4",
+ {
+ "x": 4
+ },
+ "9,1"
+ ],
+ [
+ {
+ "x": 6.25
+ },
+ "4,1",
+ "4,2",
+ {
+ "x": 2.5
+ },
+ "9,2",
+ "9,3"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_3_track/5x6_3_track.c b/keyboards/handwired/wylderbuilds/trackball/5x6_3_track/5x6_3_track.c
new file mode 100644
index 00000000000..d596853eb5f
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_3_track/5x6_3_track.c
@@ -0,0 +1 @@
+#include "5x6_3_track.h"
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_3_track/5x6_3_track.h b/keyboards/handwired/wylderbuilds/trackball/5x6_3_track/5x6_3_track.h
new file mode 100644
index 00000000000..5d6ea92a059
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_3_track/5x6_3_track.h
@@ -0,0 +1,27 @@
+#pragma once
+
+#include "trackball.h"
+
+#define XXX KC_NO
+
+
+#define LAYOUT_5x6( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+ L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \
+ L42, L43, R42, R43, \
+ L41, L44, L45, R40, R41, R44 \
+) { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { L30, L31, L32, L33, L34, L35 }, \
+ { XXX, L41, L42, L43, L44, L45 }, \
+\
+ { R00, R01, R02, R03, R04, R05 }, \
+ { R10, R11, R12, R13, R14, R15 }, \
+ { R20, R21, R22, R23, R24, R25 }, \
+ { R30, R31, R32, R33, R34, R35 }, \
+ { R40, R41, R42, R43, R44, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_3_track/config.h b/keyboards/handwired/wylderbuilds/trackball/5x6_3_track/config.h
new file mode 100644
index 00000000000..798e09a75e8
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_3_track/config.h
@@ -0,0 +1,91 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+//#include "config_common.h"
+// Basic Config
+
+//#define PRODUCT_ID 0x0002
+#define BOOTMAGIC_LITE_ROW 0 // TOP RIGHT KEY ON RIGHT SIDE, TOP LEFT KEY ON LEFT SIDE
+#define BOOTMAGIC_LITE_COLUMN 5
+
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+#define SPLIT_LAYER_STATE_ENABLE
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+#define SERIAL_USART_PIN_SWAP
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 6
+
+#define MATRIX_COL_PINS { GP3, GP4, GP5, GP6, GP7, GP8 }
+#define MATRIX_COL_PINS_RIGHT { GP8, GP7, GP6, GP5, GP4, GP3 }
+#define MATRIX_ROW_PINS { GP9, GP10, GP11, GP12, GP13 }
+#define DIODE_DIRECTION COL2ROW
+
+#define SPLIT_POINTING_ENABLE
+//#define ROTATIONAL_TRANSFORM_ANGLE -25
+//#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_ROTATION_90
+//#define POINTING_DEVICE_ROTATION_90_RIGHT // TESTING RIGHT COMMENTED OUT
+#define ROTATIONAL_TRANSFORM_ANGLE -45 // TESTING RIGHT SHIFTED FROM -35 TO -45 TO TEST LEFT
+#define POINTING_DEVICE_INVERT_Y_RIGHT
+#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_INVERT_X
+#define POINTING_DEVICE_COMBINED
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x02
+
+#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+#define POINTING_DEVICE_AUTO_MOUSE_ENABLE
+// only required if not setting mouse layer elsewhere
+#define AUTO_MOUSE_DEFAULT_LAYER 3
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
+//// Sensor Notes ////
+//// Pi Pico pins ////
+// 3V3 -- Power (not 3v3_EN)
+// GP17 -- CS pin
+// GP20 -- MISO pin
+// GP19 -- MOSI pin
+// GP18 -- SCK pin clock
+// GND -- GND
+
+// WS2812 RGB LED strip input and number of LEDs
+
+// OLED Pins and Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD0
+#define I2C1_SDA_PIN GP16
+#define I2C1_SCL_PIN GP17
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+// Misc settings
+// 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
+// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_3_track/info.json b/keyboards/handwired/wylderbuilds/trackball/5x6_3_track/info.json
new file mode 100644
index 00000000000..9a29bed40eb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_3_track/info.json
@@ -0,0 +1,316 @@
+{
+ "keyboard_name": "Dactyl-Manuform Wyld Trackball (5x6_3)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "bootloader": "rp2040",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0021",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 10,
+ "cols": 6
+ },
+ "layouts": {
+ "LAYOUT_5x6": {
+ "layout": [
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "5,0",
+ "x": 12.75,
+ "y": 0
+ },
+ {
+ "label": "5,1",
+ "x": 13.75,
+ "y": 0
+ },
+ {
+ "label": "5,2",
+ "x": 14.75,
+ "y": 0
+ },
+ {
+ "label": "5,3",
+ "x": 15.75,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "5,4",
+ "x": 16.75,
+ "y": 0.5
+ },
+ {
+ "label": "5,5",
+ "x": 17.75,
+ "y": 0.5
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "6,0",
+ "x": 12.75,
+ "y": 1
+ },
+ {
+ "label": "6,1",
+ "x": 13.75,
+ "y": 1
+ },
+ {
+ "label": "6,2",
+ "x": 14.75,
+ "y": 1
+ },
+ {
+ "label": "6,3",
+ "x": 15.75,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "6,4",
+ "x": 16.75,
+ "y": 1.5
+ },
+ {
+ "label": "6,5",
+ "x": 17.75,
+ "y": 1.5
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "7,0",
+ "x": 12.75,
+ "y": 2
+ },
+ {
+ "label": "7,1",
+ "x": 13.75,
+ "y": 2
+ },
+ {
+ "label": "7,2",
+ "x": 14.75,
+ "y": 2
+ },
+ {
+ "label": "7,3",
+ "x": 15.75,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "7,4",
+ "x": 16.75,
+ "y": 2.5
+ },
+ {
+ "label": "7,5",
+ "x": 17.75,
+ "y": 2.5
+ },
+ {
+ "label": "3,2",
+ "x": 3,
+ "y": 3
+ },
+ {
+ "label": "3,3",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "3,4",
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "3,5",
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "8,0",
+ "x": 12.75,
+ "y": 3
+ },
+ {
+ "label": "8,1",
+ "x": 13.75,
+ "y": 3
+ },
+ {
+ "label": "8,2",
+ "x": 14.75,
+ "y": 3
+ },
+ {
+ "label": "8,3",
+ "x": 15.75,
+ "y": 3
+ },
+ {
+ "label": "3,0",
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "label": "3,1",
+ "x": 2,
+ "y": 3.5
+ },
+ {
+ "label": "8,4",
+ "x": 16.75,
+ "y": 3.5
+ },
+ {
+ "label": "8,5",
+ "x": 17.75,
+ "y": 3.5
+ },
+ {
+ "label": "4,2",
+ "x": 3,
+ "y": 4
+ },
+ {
+ "label": "4,3",
+ "x": 4,
+ "y": 4
+ },
+ {
+ "label": "9,2",
+ "x": 14.75,
+ "y": 4
+ },
+ {
+ "label": "9,3",
+ "x": 15.75,
+ "y": 4
+ },
+ {
+ "label": "4,1",
+ "x": 5.25,
+ "y": 4.75
+ },
+ {
+ "label": "4,4",
+ "x": 6.25,
+ "y": 4.75
+ },
+ {
+ "label": "4,5",
+ "x": 7.25,
+ "y": 4.75
+ },
+ {
+ "label": "9,0",
+ "x": 11.5,
+ "y": 4.75
+ },
+ {
+ "label": "9,1",
+ "x": 12.5,
+ "y": 4.75
+ },
+ {
+ "label": "9,4",
+ "x": 13.5,
+ "y": 4.75
+ }
+ ]
+ }
+ }
+}
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_3_track/keymaps/default/keymap.c b/keyboards/handwired/wylderbuilds/trackball/5x6_3_track/keymaps/default/keymap.c
new file mode 100644
index 00000000000..071dcc54477
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_3_track/keymaps/default/keymap.c
@@ -0,0 +1,56 @@
+#include QMK_KEYBOARD_H
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+/***************************************************************
+ * LEFT SIDE WITH THREE-KEY CLUSTER
+ * RIGHT WITH FOUR-KEY TRACKBALL CLUSTER
+*/
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_5x6(
+ KC_ESC , 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_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_MINS,
+ KC_LSFT, 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_BSLS,
+ KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL,
+ RAISE,KC_SPC,KC_BSPC, LOWER,
+ KC_ENT,
+ KC_LGUI, KC_LALT
+ ),
+
+ [_LOWER] = LAYOUT_5x6(
+ KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,
+ _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,
+ _______,_______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS,
+ _______,KC_PSCR, _______, KC_P0,
+ _______,_______,_______, _______,
+ _______,
+ QK_BOOT,_______
+
+ ),
+
+ [_RAISE] = LAYOUT_5x6(
+ KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,
+ _______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD,
+ _______,_______, KC_EQL ,_______,
+ _______,_______,QK_BOOT, _______,
+ _______,
+ _______,_______
+ )
+};
+
+//void keyboard_post_init_user(void) {
+// // Customise these values to desired behaviour
+// debug_enable=true;
+// debug_matrix=true;
+// debug_keyboard=true;
+// debug_mouse=true;
+//}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_3_track/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/5x6_3_track/keymaps/vial/config.h
new file mode 100644
index 00000000000..a8fcf4f7f5b
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_3_track/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xB8, 0x5A, 0xC9, 0x52, 0xFD, 0x17, 0x96, 0x5C }
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 5 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 5 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_3_track/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/5x6_3_track/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..30f5f3cc130
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_3_track/keymaps/vial/keymap.c
@@ -0,0 +1,224 @@
+#include QMK_KEYBOARD_H
+#include "5x6_3_track.h"
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+#define _MOUSE 3
+
+#define QWERTY MO(_QWERTY)
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+//#define TO_COLEMAK TO(_COLEMAK)
+//#define TO_QWERTY TO(_QWERTY)
+
+enum wyld_keycodes {
+ WYLD_AUTO_MS_TOG = SAFE_RANGE
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_5x6(
+ KC_ESC , 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_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_MINS,
+ KC_LSFT, 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_BSLS,
+ KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL,
+ RAISE,KC_SPC,KC_BSPC, KC_LALT,KC_ENT,LOWER
+ ),
+
+ [_LOWER] = LAYOUT_5x6(
+ KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,
+ _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,
+ _______,_______,_______,SNIPING,DRGSCRL,KC_BTN1, KC_UNDS, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,QK_BOOT,
+ _______,KC_PSCR, _______, KC_P0,
+ _______,KC_BTN1,KC_BTN3, _______,_______,_______
+ ),
+
+ [_RAISE] = LAYOUT_5x6(
+ KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,
+ _______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU,
+ QK_BOOT,_______,_______,SNIPING,DRGSCRL,KC_BTN1, _______,_______,_______,_______,_______,KC_VOLD,
+ _______,_______, KC_EQL ,WYLD_AUTO_MS_TOG,
+ _______,_______,_______, _______,_______,_______
+ ),
+ [_MOUSE] = LAYOUT_5x6(
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______,KC_BTN1,KC_BTN3,KC_BTN2,_______,_______,
+ _______,_______,_______,SNIPING,DRGSCRL,KC_BTN1, _______,_______,_______,_______,_______,_______,
+ _______,_______, _______,_______,
+ _______,KC_BTN1,KC_BTN3, _______,_______,_______
+ )
+};
+
+#ifdef POINTING_DEVICE_AUTO_MOUSE_ENABLE
+
+// Ensures only the pointing device activates mouse layer on dual track builds
+// And also prevents dragscroll from activating it
+bool auto_mouse_activation(report_mouse_t mouse_report) {
+ return mouse_report.x != 0 || mouse_report.y != 0 || mouse_report.buttons;
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case WYLD_AUTO_MS_TOG:
+ if (record->event.pressed) {
+ set_auto_mouse_enable(!get_auto_mouse_enable());
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+#endif
+
+#ifdef POINTING_DEVICE_COMBINED
+static void check_drag(report_mouse_t* mouse_report) {
+ static int16_t scroll_buffer_x = 0;
+ static int16_t scroll_buffer_y = 0;
+
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_X
+ scroll_buffer_x -= mouse_report->x;
+# else
+ scroll_buffer_x += mouse_report->x;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_X
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ scroll_buffer_y -= mouse_report->y;
+# else
+ scroll_buffer_y += mouse_report->y;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ mouse_report->x = 0;
+ mouse_report->y = 0;
+ if (abs(scroll_buffer_x) > 6) {
+ mouse_report->h = scroll_buffer_x > 0 ? 1 : -1;
+ scroll_buffer_x = 0;
+ }
+ if (abs(scroll_buffer_y) > 6) {
+ mouse_report->v = scroll_buffer_y > 0 ? 1 : -1;
+ scroll_buffer_y = 0;
+ }
+}
+
+report_mouse_t pointing_device_task_combined_user(report_mouse_t left_report, report_mouse_t right_report) {
+ check_drag(&left_report); // updated in trackball.c
+ return pointing_device_combine_reports(left_report, right_report);
+}
+#endif
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_left()) {
+ return OLED_ROTATION_270;
+ }
+ return OLED_ROTATION_0;
+}
+
+static const char PROGMEM wylderbuilds[] = {
+ // 'dark wylderbuilds_oled_name', 128x32
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40,
+ 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x20, 0x60,
+ 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x60, 0x60,
+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0,
+ 0x00, 0x00, 0xc1, 0xc1, 0x01, 0x01, 0xf1, 0x11, 0x01, 0x01, 0x01, 0x31, 0x60, 0xc0, 0x80, 0xc0,
+ 0xf0, 0x10, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0,
+ 0x00, 0x01, 0x03, 0x9e, 0xf8, 0x00, 0x00, 0x20, 0xe0, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0xf0, 0x30, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x98, 0xf0, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x00, 0x70, 0xfe, 0x03, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00,
+ 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x11, 0xf1, 0x11, 0x33, 0x63, 0xc3,
+ 0x83, 0x01, 0x01, 0xc1, 0xe1, 0x31, 0x11, 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,
+ 0x1f, 0x7c, 0xff, 0x07, 0x7c, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7f, 0xff,
+ 0x60, 0x30, 0x18, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xf2, 0x82, 0x02, 0x80, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x7f, 0x0e, 0x1b, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0x81, 0xc1, 0x63,
+ 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00,
+ 0x00, 0x1f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x60, 0x30, 0x1f,
+ 0x07, 0x00, 0x00, 0x01, 0x43, 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+
+static void render_wylderbuilds(void) {
+ oled_write_raw_P(wylderbuilds, sizeof(wylderbuilds));
+}
+
+bool oled_task_user(void) {
+ oled_set_cursor(0, 3);
+ if (is_keyboard_left()) {
+ // oled_write_P(PSTR("Layer\n"), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ oled_write_P(PSTR("QWRTY\n"), false);
+ break;
+// case _COLEMAK:
+// oled_write_P(PSTR("COLMK\n"), false);
+// break;
+ case _LOWER:
+ oled_write_P(PSTR("LOWER\n"), false);
+ break;
+ case _RAISE:
+ oled_write_P(PSTR("RAISE\n"), false);
+ break;
+ case _MOUSE:
+ oled_write_P(PSTR("MOUSE\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+ oled_set_cursor(2, 7);
+ oled_write_P(PSTR("WPM "), false);
+ oled_set_cursor(1, 8);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 9);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+ } else {
+ // write WPM to right OLED
+ oled_set_cursor(0, 0);
+ render_wylderbuilds();
+ oled_scroll_left();
+ }
+
+ return false;
+}
+#endif
+
+void keyboard_post_init_user(void) {
+#ifdef POINTING_DEVICE_COMBINED
+ pointing_device_set_cpi_on_side(true, 100); // LEFT
+ pointing_device_set_cpi_on_side(false, 1200); // RIGHT
+#endif
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+ debug_keyboard=true;
+ debug_mouse=true;
+#else
+ debug_enable=false;
+ debug_matrix=false;
+ debug_keyboard=false;
+ debug_mouse=false;
+#endif
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_3_track/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/5x6_3_track/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_3_track/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_3_track/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/5x6_3_track/keymaps/vial/vial.json
new file mode 100644
index 00000000000..bec9606dbec
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_3_track/keymaps/vial/vial.json
@@ -0,0 +1,166 @@
+{
+ "matrix": {
+ "rows": 12,
+ "cols": 6
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 5x6_3_track"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ {
+ "n": true
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5.75
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,2",
+ "4,3",
+ {
+ "x": 9.75
+ },
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 5.25
+ },
+ "4,1",
+ "4,4",
+ "4,5",
+ {
+ "x": 3.25
+ },
+ "9,0",
+ "9,1",
+ "9,4"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_3_track/mcuconf.h b/keyboards/handwired/wylderbuilds/trackball/5x6_3_track/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_3_track/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_3_track/rules.mk b/keyboards/handwired/wylderbuilds/trackball/5x6_3_track/rules.mk
new file mode 100644
index 00000000000..91d70b07208
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_3_track/rules.mk
@@ -0,0 +1,24 @@
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+RGBLIGHT_ENABLE = no
+MOUSEKEY_ENABLE = yes
+CONSOLE_ENABLE = no
+#COMMAND_ENABLE = yes
+BOOTMAGIC_ENABLE = yes
+NKRO_ENABLE = yes # Enable N-Key Rollover
+
+RGBLIGHT_ENABLE = no
+WS2812_DRIVER = vendor
+SLEEP_LED_ENABLE = no
+
+OLED_ENABLE = yes
+#OLED_DRIVER = SSD1306
+WPM_ENABLE = yes
+EXTRAKEY_ENABLE = yes # Audio control and System control
+
+ENCODER_ENABLE = no
+ENCODER_MAP_ENABLE = no
+
+OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_3_track/wylderbuilds-5x6_3_track.json b/keyboards/handwired/wylderbuilds/trackball/5x6_3_track/wylderbuilds-5x6_3_track.json
new file mode 100644
index 00000000000..bd53d065f41
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_3_track/wylderbuilds-5x6_3_track.json
@@ -0,0 +1,158 @@
+[
+ {
+ "name": "Wylderbuilds 5x6_3_track"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ {
+ "n": true
+ },
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5.75
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,2",
+ "4,3",
+ {
+ "x": 9.75
+ },
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 5.25
+ },
+ "4,1",
+ "4,4",
+ "4,5",
+ {
+ "x": 3.25
+ },
+ "9,0",
+ "9,1",
+ "9,4"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_full_dual_track/5x6_full_dual_track.c b/keyboards/handwired/wylderbuilds/trackball/5x6_full_dual_track/5x6_full_dual_track.c
new file mode 100644
index 00000000000..dbb6e8db2cc
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_full_dual_track/5x6_full_dual_track.c
@@ -0,0 +1 @@
+#include "5x6_full_dual_track.h"
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_full_dual_track/5x6_full_dual_track.h b/keyboards/handwired/wylderbuilds/trackball/5x6_full_dual_track/5x6_full_dual_track.h
new file mode 100644
index 00000000000..136b80c6530
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_full_dual_track/5x6_full_dual_track.h
@@ -0,0 +1,31 @@
+#pragma once
+
+#include "trackball.h"
+
+#define XXX KC_NO
+
+
+#define LAYOUT_5x6( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+ L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \
+ L40, L41, L42, L43, R42, R43, R44, R45, \
+ L55, R50, \
+ L54, R51, \
+ L52, L53, R52, R53 \
+) { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { L30, L31, L32, L33, L34, L35 }, \
+ { L40, L41, L42, L43, XXX, XXX }, \
+ { XXX, XXX, L52, L53, L54, L55 }, \
+\
+ { R00, R01, R02, R03, R04, R05 }, \
+ { R10, R11, R12, R13, R14, R15 }, \
+ { R20, R21, R22, R23, R24, R25 }, \
+ { R30, R31, R32, R33, R34, R35 }, \
+ { XXX, XXX, R42, R43, R44, R45 }, \
+ { R50, R51, R52, R53, XXX, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_full_dual_track/config.h b/keyboards/handwired/wylderbuilds/trackball/5x6_full_dual_track/config.h
new file mode 100644
index 00000000000..417ed1deb16
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_full_dual_track/config.h
@@ -0,0 +1,129 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+//#include "config_common.h"
+// Basic Config
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+
+
+#define USE_SERIAL
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+#define SPLIT_LAYER_STATE_ENABLE
+
+
+#define USE_SERIAL
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+//#define SERIAL_USART_PIN_SWAP
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Columns are doubled-up
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 6
+
+#define MATRIX_COL_PINS { GP7, GP6, GP5, GP4, GP3, GP2 }
+#define MATRIX_ROW_PINS { GP9, GP10, GP11, GP12, GP13, GP14 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define SPLIT_POINTING_ENABLE
+#define POINTING_DEVICE_COMBINED
+#define POINTING_DEVICE_ROTATION_90
+//#define POINTING_DEVICE_ROTATION_90_RIGHT // TESTING RIGHT COMMENTED OUT
+#define ROTATIONAL_TRANSFORM_ANGLE -45 // TESTING RIGHT SHIFTED FROM -35 TO -45 TO TEST LEFT
+#define POINTING_DEVICE_INVERT_Y_RIGHT
+#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_INVERT_X
+//#define POINTING_DEVICE_INVERT_X_RIGHT
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x02
+
+#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+#define POINTING_DEVICE_AUTO_MOUSE_ENABLE
+// only required if not setting mouse layer elsewhere
+#define AUTO_MOUSE_DEFAULT_LAYER 3
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 4
+
+#define CHARYBDIS_MINIMUM_DEFAULT_DPI 1200
+#define CHARYBDIS_DEFAULT_DPI_CONFIG_STEP 400
+#define CHARYBDIS_MINIMUM_SNIPING_DPI 400
+#define CHARYBDIS_SNIPING_DPI_CONFIG_STEP 200
+
+//// Rotary Encoder ////
+//#define ENCODERS_PAD_A { }
+//#define ENCODERS_PAD_B { }
+//#define ENCODER_RESOLUTIONS { }
+
+#ifdef ENCODER_ENABLE
+#define ENCODERS_PAD_A { GP15, GP22 }
+#define ENCODERS_PAD_B { GP14, GP28 }
+#define ENCODER_RESOLUTIONS { 2 }
+//#define ENCODERS_PAD_A_RIGHT { GP26 }
+//#define ENCODERS_PAD_B_RIGHT { GP27 }
+//#define ENCODER_RESOLUTIONS_RIGHT { 2 }
+#endif
+
+//// Sensor Notes ////
+//// Pi Pico pins ////
+// 3V3 -- Power (not 3v3_EN!)
+// GP21 -- CS pin
+// GP20 -- MISO pin
+// GP19 -- MOSI pin
+// GP18 -- SCK pin clock
+// GND -- GND
+
+// WS2812 RGB LED strip input and number of LEDs
+//#ifdef RGBLIGHT_ENABLE
+//#define RGB_DI_PIN GP17
+//#define RGBLED_NUM 34
+////#define DRIVER_LED_TOTAL 34
+//#define RGBLED_SPLIT { 17, 17 }
+//#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+//#define NOP_FUDGE 0.4
+//#endif
+
+//// OLED Pins and Driver
+#define SPLIT_OLED_ENABLE
+#define SPLIT_MODS_ENABLE
+//// OLED Pins and Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD0
+#define I2C1_SDA_PIN GP16
+#define I2C1_SCL_PIN GP17
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+// Misc settings
+// 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
+// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_full_dual_track/info.json b/keyboards/handwired/wylderbuilds/trackball/5x6_full_dual_track/info.json
new file mode 100644
index 00000000000..41a133fc815
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_full_dual_track/info.json
@@ -0,0 +1,345 @@
+{
+ "keyboard_name": "Dactyl-Manuform 5x6 Full Dual Track (5x6_full_dual_track)",
+ "manufacturer": "Wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0115",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 12,
+ "cols": 6
+ },
+ "layouts": {
+ "LAYOUT_5x6": {
+ "layout": [
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "6,0",
+ "x": 12.75,
+ "y": 0
+ },
+ {
+ "label": "6,1",
+ "x": 13.75,
+ "y": 0
+ },
+ {
+ "label": "6,2",
+ "x": 14.75,
+ "y": 0
+ },
+ {
+ "label": "6,3",
+ "x": 15.75,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "6,4",
+ "x": 16.75,
+ "y": 0.5
+ },
+ {
+ "label": "6,5",
+ "x": 17.75,
+ "y": 0.5
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "7,0",
+ "x": 12.75,
+ "y": 1
+ },
+ {
+ "label": "7,1",
+ "x": 13.75,
+ "y": 1
+ },
+ {
+ "label": "7,2",
+ "x": 14.75,
+ "y": 1
+ },
+ {
+ "label": "7,3",
+ "x": 15.75,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "7,4",
+ "x": 16.75,
+ "y": 1.5
+ },
+ {
+ "label": "7,5",
+ "x": 17.75,
+ "y": 1.5
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "8,0",
+ "x": 12.75,
+ "y": 2
+ },
+ {
+ "label": "8,1",
+ "x": 13.75,
+ "y": 2
+ },
+ {
+ "label": "8,2",
+ "x": 14.75,
+ "y": 2
+ },
+ {
+ "label": "8,3",
+ "x": 15.75,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "8,4",
+ "x": 16.75,
+ "y": 2.5
+ },
+ {
+ "label": "8,5",
+ "x": 17.75,
+ "y": 2.5
+ },
+ {
+ "label": "3,2",
+ "x": 3,
+ "y": 3
+ },
+ {
+ "label": "3,3",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "3,4",
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "3,5",
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "9,0",
+ "x": 12.75,
+ "y": 3
+ },
+ {
+ "label": "9,1",
+ "x": 13.75,
+ "y": 3
+ },
+ {
+ "label": "9,2",
+ "x": 14.75,
+ "y": 3
+ },
+ {
+ "label": "9,3",
+ "x": 15.75,
+ "y": 3
+ },
+ {
+ "label": "3,0",
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "label": "3,1",
+ "x": 2,
+ "y": 3.5
+ },
+ {
+ "label": "9,4",
+ "x": 16.75,
+ "y": 3.5
+ },
+ {
+ "label": "9,5",
+ "x": 17.75,
+ "y": 3.5
+ },
+ {
+ "label": "4,2",
+ "x": 3,
+ "y": 4
+ },
+ {
+ "label": "4,3",
+ "x": 4,
+ "y": 4
+ },
+ {
+ "label": "10,2",
+ "x": 14.75,
+ "y": 4
+ },
+ {
+ "label": "10,3",
+ "x": 15.75,
+ "y": 4
+ },
+ {
+ "label": "5,5",
+ "x": 6.5,
+ "y": 4.25
+ },
+ {
+ "label": "11,0",
+ "x": 12.25,
+ "y": 4.25
+ },
+ {
+ "label": "4,0",
+ "x": 1,
+ "y": 4.5
+ },
+ {
+ "label": "4,1",
+ "x": 2,
+ "y": 4.5
+ },
+ {
+ "label": "10,4",
+ "x": 16.75,
+ "y": 4.5
+ },
+ {
+ "label": "10,5",
+ "x": 17.75,
+ "y": 4.5
+ },
+ {
+ "label": "5,4",
+ "x": 6.5,
+ "y": 5.25
+ },
+ {
+ "label": "11,1",
+ "x": 12.25,
+ "y": 5.25
+ },
+ {
+ "label": "5,2",
+ "x": 6.5,
+ "y": 6.25
+ },
+ {
+ "label": "5,3",
+ "x": 7.5,
+ "y": 6.25
+ },
+ {
+ "label": "11,2",
+ "x": 11.25,
+ "y": 6.25
+ },
+ {
+ "label": "11,3",
+ "x": 12.25,
+ "y": 6.25
+ }
+ ]
+ }
+ }
+}
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_full_dual_track/keymaps/default/keymap.c b/keyboards/handwired/wylderbuilds/trackball/5x6_full_dual_track/keymaps/default/keymap.c
new file mode 100644
index 00000000000..50288c38948
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_full_dual_track/keymaps/default/keymap.c
@@ -0,0 +1,118 @@
+#include QMK_KEYBOARD_H
+
+#define _BASE 0
+#define _NAV 1
+#define _SYST 2
+#define _MOUSE 3 //layer for mouse functions
+
+// Macros
+#define TASK LCTL(LSFT(KC_ESC))
+#define TAB_R LCTL(KC_TAB)
+#define TAB_L LCTL(LSFT(KC_TAB))
+#define TAB_RO LCTL(LSFT(KC_T))
+#define CAD LCTL(LALT(KC_DEL))
+#define IAD LCTL(LALT(KC_INS))
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_BASE] = LAYOUT_5x7(
+ // left hand // right hand
+ LT(_SYST, 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, 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_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(_SYST),
+ KC_APP, KC_LGUI, MO(_NAV), TG(_MOUSE),
+ KC_LALT, LT(_NAV, KC_SPC), KC_SPC,
+ KC_BTN3, KC_BTN1, KC_WFWD,
+ _______, _______, _______, KC_WBAK),
+
+ [_NAV] = LAYOUT_5x7(
+ // left hand // right hand
+ KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC,
+ _______, _______, _______, LCTL(LSFT(KC_E)), _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______, _______,
+ _______, LCTL(KC_A), LCTL(KC_S), _______, _______, _______, KC_PGUP, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______,
+ _______, KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, _______, KC_PGDN, TAB_L, TAB_R, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+ [_SYST] = LAYOUT_5x7(
+ // left hand // right hand
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______,
+ _______, KC_INS, KC_PAUS, _______, IAD, CAD, _______, _______, _______, _______, _______, _______, _______,
+ KC_CAPS, KC_NUM, KC_SCRL, _______, _______, _______, _______, _______, _______, KC_MSTP, KC_VOLD, KC_VOLU, KC_MUTE,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, QK_BOOT, EE_CLR,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+
+ [_MOUSE] = LAYOUT_5x7(
+ // left hand // right hand
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+};
+
+
+//void keyboard_post_init_user(void) {
+// // Customise these values to desired behaviour
+// debug_enable=true;
+// debug_matrix=true;
+// debug_keyboard=true;
+// debug_mouse=true;
+//}
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_NAV] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_SYST] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_MOUSE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+};
+#endif
+
+#ifdef OLED_ENABLE
+bool oled_task_user(void) {
+ // Host Keyboard Layer Status
+ oled_write_P(PSTR("Layer: "), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _BASE:
+ oled_write_P(PSTR("Base\n"), false);
+ break;
+ case _NAV:
+ oled_write_P(PSTR("Nav\n"), false);
+ break;
+ case _SYST:
+ oled_write_P(PSTR("System\n"), false);
+ break;
+ case _MOUSE:
+ oled_write_P(PSTR("Mouse\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+
+ // Host Keyboard LED Status
+ led_t led_state = host_keyboard_led_state();
+ oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
+
+ return false;
+}
+#endif
+
+#define imageWidth 128
+#define imageHeight 36
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_full_dual_track/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/5x6_full_dual_track/keymaps/vial/config.h
new file mode 100644
index 00000000000..e22056aa9b6
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_full_dual_track/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x4F, 0xBF, 0x8E, 0x84, 0xE5, 0xD1, 0x37, 0x55}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 5 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 5 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_full_dual_track/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/5x6_full_dual_track/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..4c57bc7b5c3
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_full_dual_track/keymaps/vial/keymap.c
@@ -0,0 +1,256 @@
+#include QMK_KEYBOARD_H
+#include "5x6_full_dual_track.h"
+
+//#define _WORKMAN 0
+#define _QWERTY 0
+//#define _COLEMAK 1
+#define _LOWER 1
+#define _RAISE 2
+#define _MOUSE 3
+
+#define QWERTY MO(_QWERTY)
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+enum wyld_keycodes {
+ WYLD_AUTO_MS_TOG = SAFE_RANGE
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_QWERTY] = LAYOUT_5x6(
+ KC_ESC , 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_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_MINS,
+ KC_LSFT, 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_BSLS,
+ KC_LCTL, KC_LALT, KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL, KC_RALT, KC_RCTL,
+ RAISE, LOWER,
+ KC_SPC, KC_ENT,
+ KC_TAB, KC_HOME, KC_LGUI, KC_LALT
+ ),
+
+
+ [_LOWER] = LAYOUT_5x6(
+ KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,QK_BOOT,KC_PLUS,
+ _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,
+ _______,_______,_______,_______,SNIPING,DRGSCRL, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS,
+ _______,_______, _______,KC_PSCR, _______, KC_P0,_______,WYLD_AUTO_MS_TOG,
+ _______, _______,
+ KC_BTN1, _______,
+ KC_BTN2, KC_BTN3, _______,QK_BOOT
+
+ ),
+
+ [_RAISE] = LAYOUT_5x6(
+ KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,
+ _______,QK_BOOT,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,
+ _______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD,
+ _______,_______,_______,_______, KC_EQL ,_______,_______,_______,
+ _______, _______,
+ _______, _______,
+ QK_BOOT,_______, _______,_______
+ ),
+ [_MOUSE] = LAYOUT_5x6(
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,SNIPING,DRGSCRL, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______, _______ ,_______,_______,_______,
+ _______, _______,
+ KC_BTN1, _______,
+ KC_BTN2, KC_BTN3, _______,QK_BOOT
+ )
+};
+
+
+#ifdef POINTING_DEVICE_COMBINED
+pointing_device_set_cpi_on_side(true, CHARYBDIS_DRAGSCROLL_DPI); // LEFT
+ pointing_device_set_cpi_on_side(false, 2000); // RIGHT
+
+}
+
+static void check_drag(report_mouse_t* mouse_report) {
+ static int16_t scroll_buffer_x = 0;
+ static int16_t scroll_buffer_y = 0;
+
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_X
+ scroll_buffer_x -= mouse_report->x;
+# else
+ scroll_buffer_x += mouse_report->x;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_X
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ scroll_buffer_y -= mouse_report->y;
+# else
+ scroll_buffer_y += mouse_report->y;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ mouse_report->x = 0;
+ mouse_report->y = 0;
+ if (abs(scroll_buffer_x) > 6) {
+ mouse_report->h = scroll_buffer_x > 0 ? 1 : -1;
+ scroll_buffer_x = 0;
+ }
+ if (abs(scroll_buffer_y) > 6) {
+ mouse_report->v = scroll_buffer_y > 0 ? 1 : -1;
+ scroll_buffer_y = 0;
+ }
+}
+
+report_mouse_t pointing_device_task_combined_user(report_mouse_t left_report, report_mouse_t right_report) {
+ check_drag_scroll(&left_report); // updated in trackball.c
+ return pointing_device_combine_reports(left_report, right_report);
+}
+#endif
+
+#ifdef POINTING_DEVICE_AUTO_MOUSE_ENABLE
+void pointing_device_init_user(void) {
+ set_auto_mouse_enable(true);
+}
+
+// Ensures only the pointing device activates mouse layer on dual track builds
+// And also prevents dragscroll from activating it
+bool auto_mouse_activation(report_mouse_t mouse_report) {
+ return mouse_report.x != 0 || mouse_report.y != 0 || mouse_report.buttons;
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case WYLD_AUTO_MS_TOG:
+ if (record->event.pressed) {
+ set_auto_mouse_enable(!get_auto_mouse_enable());
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+#endif
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_QWERTY] = { ENCODER_CCW_CW(KC_MS_WH_DOWN, KC_MS_WH_UP) },
+ [_LOWER] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_RAISE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }
+};
+#endif
+
+//#ifdef ENCODER_ENABLE
+//bool encoder_update_user(uint8_t index, bool clockwise) {
+//===
+// if (clockwise) {
+// tap_code(KC_VOLD);
+// } else {
+// tap_code(KC_VOLU);
+// }
+//
+// return false;
+//}
+//#endif
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+// if (is_keyboard_left()) {
+// return OLED_ROTATION_270;
+// }
+ return OLED_ROTATION_270;
+}
+
+//static const char PROGMEM wylderbuilds[] = {
+// // 'dark wylderbuilds_oled_name', 128x32
+// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+// 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40,
+// 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x20, 0x60,
+// 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x60, 0x60,
+// 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00,
+// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0,
+// 0x00, 0x00, 0xc1, 0xc1, 0x01, 0x01, 0xf1, 0x11, 0x01, 0x01, 0x01, 0x31, 0x60, 0xc0, 0x80, 0xc0,
+// 0xf0, 0x10, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0,
+// 0x00, 0x01, 0x03, 0x9e, 0xf8, 0x00, 0x00, 0x20, 0xe0, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00,
+// 0x00, 0x00, 0x20, 0xf0, 0x30, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x98, 0xf0, 0x70,
+// 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x00, 0x70, 0xfe, 0x03, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00,
+// 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x11, 0xf1, 0x11, 0x33, 0x63, 0xc3,
+// 0x83, 0x01, 0x01, 0xc1, 0xe1, 0x31, 0x11, 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,
+// 0x1f, 0x7c, 0xff, 0x07, 0x7c, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
+// 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7f, 0xff,
+// 0x60, 0x30, 0x18, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xf2, 0x82, 0x02, 0x80, 0x80, 0x00,
+// 0x00, 0x00, 0x00, 0x7f, 0x0e, 0x1b, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0x81, 0xc1, 0x63,
+// 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00,
+// 0x00, 0x1f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x60, 0x30, 0x1f,
+// 0x07, 0x00, 0x00, 0x01, 0x43, 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00,
+// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+// 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+//};
+
+//static void render_wylderbuilds(void) {
+// oled_write_raw_P(wylderbuilds, sizeof(wylderbuilds));
+//}
+
+bool oled_task_user(void) {
+ oled_set_cursor(0, 3);
+
+ // oled_write_P(PSTR("Layer\n"), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ oled_write_P(PSTR("QWRTY\n"), false);
+ break;
+// case _COLEMAK:
+// oled_write_P(PSTR("COLMK\n"), false);
+// break;
+ case _LOWER:
+ oled_write_P(PSTR("LOWER\n"), false);
+ break;
+ case _RAISE:
+ oled_write_P(PSTR("RAISE\n"), false);
+ break;
+ case _MOUSE:
+ oled_write_P(PSTR("MOUSE\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+ oled_set_cursor(2, 7);
+ oled_write_P(PSTR("WPM "), false);
+ oled_set_cursor(1, 8);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 9);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+
+ return false;
+}
+#endif
+
+
+
+void keyboard_post_init_user(void) {
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+ debug_keyboard=true;
+ debug_mouse=true;
+#else
+ debug_enable=false;
+ debug_matrix=false;
+ debug_keyboard=false;
+ debug_mouse=false;
+#endif
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_full_dual_track/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/5x6_full_dual_track/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_full_dual_track/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_full_dual_track/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/5x6_full_dual_track/keymaps/vial/vial.json
new file mode 100644
index 00000000000..c09a1e07d35
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_full_dual_track/keymaps/vial/vial.json
@@ -0,0 +1,198 @@
+{
+ "matrix": {
+ "rows": 12,
+ "cols": 6
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 5x6 Full Dual Track"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5.75
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,2",
+ "4,3",
+ {
+ "x": 9.75
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 6.5
+ },
+ "5,5",
+ {
+ "x": 4.75
+ },
+ "11,0"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 1
+ },
+ "4,0",
+ "4,1",
+ {
+ "x": 13.75
+ },
+ "10,4",
+ "10,5"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 6.5
+ },
+ "5,4",
+ {
+ "x": 4.75
+ },
+ "11,1"
+ ],
+ [
+ {
+ "x": 6.5
+ },
+ "5,2",
+ "5,3",
+ {
+ "x": 2.75
+ },
+ "11,2",
+ "11,3"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_full_dual_track/mcuconf.h b/keyboards/handwired/wylderbuilds/trackball/5x6_full_dual_track/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_full_dual_track/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_full_dual_track/rules.mk b/keyboards/handwired/wylderbuilds/trackball/5x6_full_dual_track/rules.mk
new file mode 100644
index 00000000000..ace13f2a9c0
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_full_dual_track/rules.mk
@@ -0,0 +1,20 @@
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+RGBLIGHT_ENABLE = no
+MOUSEKEY_ENABLE = yes
+CONSOLE_ENABLE = no
+#COMMAND_ENABLE = yes
+BOOTMAGIC_ENABLE = yes
+NKRO_ENABLE = yes # Enable N-Key Rollover
+
+OLED_ENABLE = no
+#OLED_DRIVER = SSD1306
+#WPM_ENABLE = yes
+EXTRAKEY_ENABLE = yes # Audio control and System control
+
+ENCODER_ENABLE = no
+ENCODER_MAP_ENABLE = no
+
+#OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_full_dual_track/wylderbuilds-5x6-full-dual-track.json b/keyboards/handwired/wylderbuilds/trackball/5x6_full_dual_track/wylderbuilds-5x6-full-dual-track.json
new file mode 100644
index 00000000000..38658bff078
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_full_dual_track/wylderbuilds-5x6-full-dual-track.json
@@ -0,0 +1,190 @@
+[
+ {
+ "name": "Wylderbuilds 5x6 Full Dual Track"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5.75
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,2",
+ "4,3",
+ {
+ "x": 9.75
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 6.5
+ },
+ "5,5",
+ {
+ "x": 4.75
+ },
+ "11,0"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 1
+ },
+ "4,0",
+ "4,1",
+ {
+ "x": 13.75
+ },
+ "10,4",
+ "10,5"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 6.5
+ },
+ "5,4",
+ {
+ "x": 4.75
+ },
+ "11,1"
+ ],
+ [
+ {
+ "x": 6.5
+ },
+ "5,2",
+ "5,3",
+ {
+ "x": 2.75
+ },
+ "11,2",
+ "11,3"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/5x6_full_track.c b/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/5x6_full_track.c
new file mode 100644
index 00000000000..c2889f2cc40
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/5x6_full_track.c
@@ -0,0 +1 @@
+#include "5x6_full_track.h"
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/5x6_full_track.h b/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/5x6_full_track.h
new file mode 100644
index 00000000000..baa35004976
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/5x6_full_track.h
@@ -0,0 +1,30 @@
+#pragma once
+
+#include "trackball.h"
+
+#define XXX KC_NO
+
+
+#define LAYOUT_5x6( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, L45, R40, R20, R21, R22, R23, R24, R25, \
+ L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \
+ L40, L41, L42, L43, R42, R43, R44, R45, \
+ L53, L54, L55, R50, R51, R52, \
+ L51, L52 \
+) { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { L30, L31, L32, L33, L34, L35 }, \
+ { L40, L41, L42, L43, XXX, L45 }, \
+ { XXX, L51, L52, L53, L54, L55 }, \
+\
+ { R00, R01, R02, R03, R04, R05 }, \
+ { R10, R11, R12, R13, R14, R15 }, \
+ { R20, R21, R22, R23, R24, R25 }, \
+ { R30, R31, R32, R33, R34, R35 }, \
+ { R40, XXX, R42, R43, R44, R45 }, \
+ { R50, R51, R52, XXX, XXX, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/config.h b/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/config.h
new file mode 100644
index 00000000000..e3d48c73148
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/config.h
@@ -0,0 +1,122 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+//#include "config_common.h"
+// Basic Config
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+
+#define USE_SERIAL
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+#define SPLIT_LAYER_STATE_ENABLE
+
+#define USE_SERIAL
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+#define SERIAL_USART_PIN_SWAP
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Columns are doubled-up
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 6
+
+#define MATRIX_COL_PINS { GP2, GP3, GP4, GP5, GP6, GP7 }
+#define MATRIX_ROW_PINS { GP9, GP10, GP11, GP12, GP13, GP14 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define SPLIT_POINTING_ENABLE
+#define ROTATIONAL_TRANSFORM_ANGLE -25
+#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_RIGHT
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x02
+
+#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+#define POINTING_DEVICE_AUTO_MOUSE_ENABLE
+// only required if not setting mouse layer elsewhere
+#define AUTO_MOUSE_DEFAULT_LAYER 3
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 4
+
+//#define CHARYBDIS_MINIMUM_DEFAULT_DPI 1200
+//#define CHARYBDIS_DEFAULT_DPI_CONFIG_STEP 400
+//#define CHARYBDIS_MINIMUM_SNIPING_DPI 400
+//#define CHARYBDIS_SNIPING_DPI_CONFIG_STEP 200
+
+//// Rotary Encoder ////
+//#define ENCODERS_PAD_A { }
+//#define ENCODERS_PAD_B { }
+//#define ENCODER_RESOLUTIONS { }
+
+#ifdef ENCODER_ENABLE
+#define ENCODERS_PAD_A { GP27 }
+#define ENCODERS_PAD_B { GP28 }
+#define ENCODER_RESOLUTIONS { 2 }
+#define ENCODERS_PAD_A_RIGHT { GP27 }
+#define ENCODERS_PAD_B_RIGHT { GP28 }
+#define ENCODER_RESOLUTIONS_RIGHT { 2 }
+#endif
+
+//// Sensor Notes ////
+//// Pi Pico pins ////
+// 3V3 -- Power (not 3v3_EN!)
+// GP21 -- CS pin
+// GP20 -- MISO pin
+// GP19 -- MOSI pin
+// GP18 -- SCK pin clock
+// GND -- GND
+
+// WS2812 RGB LED strip input and number of LEDs
+//#ifdef RGBLIGHT_ENABLE
+//#define RGB_DI_PIN GP17
+//#define RGBLED_NUM 34
+////#define DRIVER_LED_TOTAL 34
+//#define RGBLED_SPLIT { 17, 17 }
+//#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+//#define NOP_FUDGE 0.4
+//#endif
+
+//// OLED Pins and Driver
+#define SPLIT_OLED_ENABLE
+#define SPLIT_MODS_ENABLE
+//// OLED Pins and Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD0
+#define I2C1_SDA_PIN GP16
+#define I2C1_SCL_PIN GP17
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+// Misc settings
+// 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
+// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/info.json b/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/info.json
new file mode 100644
index 00000000000..1d65cb08098
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/info.json
@@ -0,0 +1,486 @@
+{
+ "keyboard_name": "Dactyl-Manuform 5x6 Full Track (5x6_tull_track)",
+ "manufacturer": "Wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0111",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 12,
+ "cols": 6
+ },
+ "ws2812": {
+ "pin": "GP22",
+ "driver": "vendor"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
+ "matrix_size": {
+ "cols": 6,
+ "rows": 12
+ },
+ "rgb_matrix": {
+ "driver": "ws2812",
+ "max_brightness": 120,
+ "animations": {
+ "alpha_mods": true,
+ "breathing": true,
+ "colorband_pinwheel_sat": true,
+ "colorband_pinwheel_val": true,
+ "colorband_sat": true,
+ "colorband_spiral_sat": true,
+ "colorband_spiral_val": true,
+ "colorband_val": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_out_in": true,
+ "cycle_out_in_dual": true,
+ "cycle_pinwheel": true,
+ "cycle_spiral": true,
+ "cycle_up_down": true,
+ "digital_rain": true,
+ "dual_beacon": true,
+ "gradient_left_right": true,
+ "gradient_up_down": true,
+ "hue_breathing": true,
+ "hue_pendulum": true,
+ "hue_wave": true,
+ "jellybean_raindrops": true,
+ "pixel_flow": true,
+ "pixel_fractal": true,
+ "pixel_rain": true,
+ "rainbow_beacon": true,
+ "rainbow_moving_chevron": true,
+ "rainbow_pinwheels": true,
+ "raindrops": true,
+ "solid_color": true,
+ "solid_reactive": true,
+ "solid_reactive_cross": true,
+ "solid_reactive_nexus": true,
+ "solid_reactive_simple": true,
+ "solid_reactive_wide": true,
+ "solid_splash": true,
+ "splash": true,
+ "typing_heatmap": true
+ },
+ "split_count": [
+ 33,
+ 31
+ ],
+ "layout": [
+ {"flags": 4, "matrix": [0, 5], "x": 79, "y": 0},
+{"flags": 4, "matrix": [1, 5], "x": 79, "y": 10},
+{"flags": 4, "matrix": [2, 5], "x": 91, "y": 23},
+{"flags": 4, "matrix": [3, 5], "x": 79, "y": 36},
+{"flags": 4, "matrix": [0, 4], "x": 68, "y": 0},
+{"flags": 4, "matrix": [1, 4], "x": 68, "y": 10},
+{"flags": 4, "matrix": [2, 4], "x": 79, "y": 23},
+{"flags": 4, "matrix": [3, 4], "x": 68, "y": 36},
+{"flags": 4, "matrix": [0, 3], "x": 57, "y": 0},
+{"flags": 4, "matrix": [1, 3], "x": 57, "y": 10},
+{"flags": 4, "matrix": [2, 3], "x": 57, "y": 23},
+{"flags": 4, "matrix": [3, 3], "x": 57, "y": 36},
+{"flags": 4, "matrix": [4, 3], "x": 34, "y": 49},
+{"flags": 4, "matrix": [0, 2], "x": 45, "y": 0},
+{"flags": 4, "matrix": [1, 2], "x": 45, "y": 10},
+{"flags": 4, "matrix": [2, 2], "x": 45, "y": 23},
+{"flags": 4, "matrix": [3, 2], "x": 45, "y": 36},
+{"flags": 4, "matrix": [4, 2], "x": 34, "y": 49},
+{"flags": 4, "matrix": [0, 1], "x": 34, "y": 3},
+{"flags": 4, "matrix": [1, 1], "x": 34, "y": 16},
+{"flags": 4, "matrix": [2, 1], "x": 11, "y": 30},
+{"flags": 4, "matrix": [3, 1], "x": 11, "y": 43},
+{"flags": 4, "matrix": [4, 1], "x": 11, "y": 61},
+{"flags": 4, "matrix": [0, 0], "x": 23, "y": 3},
+{"flags": 4, "matrix": [1, 0], "x": 23, "y": 16},
+{"flags": 4, "matrix": [2, 0], "x": 11, "y": 30},
+{"flags": 4, "matrix": [3, 0], "x": 11, "y": 43},
+{"flags": 4, "matrix": [4, 0], "x": 11, "y": 61},
+{"flags": 4, "matrix": [5, 3], "x": 68, "y": 54},
+{"flags": 4, "matrix": [5, 4], "x": 68, "y": 54},
+{"flags": 4, "matrix": [5, 5], "x": 68, "y": 54},
+{"flags": 4, "matrix": [5, 2], "x": 79, "y": 71},
+{"flags": 4, "matrix": [5, 1], "x": 79, "y": 71},
+{"flags": 4, "matrix": [6, 0], "x": 167, "y": 0},
+{"flags": 4, "matrix": [7, 0], "x": 167, "y": 10},
+{"flags": 4, "matrix": [8, 0], "x": 179, "y": 23},
+{"flags": 4, "matrix": [9, 0], "x": 167, "y": 36},
+{"flags": 4, "matrix": [6, 1], "x": 179, "y": 0},
+{"flags": 4, "matrix": [7, 1], "x": 179, "y": 10},
+{"flags": 4, "matrix": [8, 1], "x": 201, "y": 23},
+{"flags": 4, "matrix": [9, 1], "x": 179, "y": 36},
+{"flags": 4, "matrix": [11, 1], "x": 88, "y": 54},
+{"flags": 4, "matrix": [6, 2], "x": 190, "y": 0},
+{"flags": 4, "matrix": [7, 2], "x": 190, "y": 10},
+{"flags": 4, "matrix": [8, 2], "x": 213, "y": 23},
+{"flags": 4, "matrix": [9, 2], "x": 190, "y": 36},
+{"flags": 4, "matrix": [10, 2], "x": 145, "y": 49},
+{"flags": 4, "matrix": [6, 3], "x": 201, "y": 0},
+{"flags": 4, "matrix": [7, 3], "x": 201, "y": 10},
+{"flags": 4, "matrix": [8, 3], "x": 224, "y": 23},
+{"flags": 4, "matrix": [9, 3], "x": 201, "y": 36},
+{"flags": 4, "matrix": [10, 3], "x": 145, "y": 49},
+{"flags": 4, "matrix": [6, 4], "x": 213, "y": 3},
+{"flags": 4, "matrix": [7, 4], "x": 213, "y": 16},
+{"flags": 4, "matrix": [8, 4], "x": 167, "y": 30},
+{"flags": 4, "matrix": [9, 4], "x": 167, "y": 43},
+{"flags": 4, "matrix": [10, 4], "x": 167, "y": 61},
+{"flags": 4, "matrix": [6, 5], "x": 224, "y": 3},
+{"flags": 4, "matrix": [7, 5], "x": 224, "y": 16},
+{"flags": 4, "matrix": [8, 5], "x": 167, "y": 30},
+{"flags": 4, "matrix": [9, 5], "x": 167, "y": 43},
+{"flags": 4, "matrix": [10, 5], "x": 167, "y": 61},
+{"flags": 4, "matrix": [11, 0], "x": 88, "y": 54},
+{"flags": 4, "matrix": [11, 2], "x": 88, "y": 54}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_5x6": {
+ "layout": [
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "6,0",
+ "x": 12.75,
+ "y": 0
+ },
+ {
+ "label": "6,1",
+ "x": 13.75,
+ "y": 0
+ },
+ {
+ "label": "6,2",
+ "x": 14.75,
+ "y": 0
+ },
+ {
+ "label": "6,3",
+ "x": 15.75,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "6,4",
+ "x": 16.75,
+ "y": 0.5
+ },
+ {
+ "label": "6,5",
+ "x": 17.75,
+ "y": 0.5
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "7,0",
+ "x": 12.75,
+ "y": 1
+ },
+ {
+ "label": "7,1",
+ "x": 13.75,
+ "y": 1
+ },
+ {
+ "label": "7,2",
+ "x": 14.75,
+ "y": 1
+ },
+ {
+ "label": "7,3",
+ "x": 15.75,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "7,4",
+ "x": 16.75,
+ "y": 1.5
+ },
+ {
+ "label": "7,5",
+ "x": 17.75,
+ "y": 1.5
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "4,5",
+ "x": 7.5,
+ "y": 2
+ },
+ {
+ "label": "10,0",
+ "x": 11.25,
+ "y": 2
+ },
+ {
+ "label": "8,0",
+ "x": 12.75,
+ "y": 2
+ },
+ {
+ "label": "8,1",
+ "x": 13.75,
+ "y": 2
+ },
+ {
+ "label": "8,2",
+ "x": 14.75,
+ "y": 2
+ },
+ {
+ "label": "8,3",
+ "x": 15.75,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "8,4",
+ "x": 16.75,
+ "y": 2.5
+ },
+ {
+ "label": "8,5",
+ "x": 17.75,
+ "y": 2.5
+ },
+ {
+ "label": "3,2",
+ "x": 3,
+ "y": 3
+ },
+ {
+ "label": "3,3",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "3,4",
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "3,5",
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "9,0",
+ "x": 12.75,
+ "y": 3
+ },
+ {
+ "label": "9,1",
+ "x": 13.75,
+ "y": 3
+ },
+ {
+ "label": "9,2",
+ "x": 14.75,
+ "y": 3
+ },
+ {
+ "label": "9,3",
+ "x": 15.75,
+ "y": 3
+ },
+ {
+ "label": "3,0",
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "label": "3,1",
+ "x": 2,
+ "y": 3.5
+ },
+ {
+ "label": "9,4",
+ "x": 16.75,
+ "y": 3.5
+ },
+ {
+ "label": "9,5",
+ "x": 17.75,
+ "y": 3.5
+ },
+ {
+ "label": "4,2",
+ "x": 3,
+ "y": 4
+ },
+ {
+ "label": "4,3",
+ "x": 4,
+ "y": 4
+ },
+ {
+ "label": "10,2",
+ "x": 14.75,
+ "y": 4
+ },
+ {
+ "label": "10,3",
+ "x": 15.75,
+ "y": 4
+ },
+ {
+ "label": "5,3",
+ "x": 6,
+ "y": 4.25
+ },
+ {
+ "label": "5,4",
+ "x": 7,
+ "y": 4.25
+ },
+ {
+ "label": "5,5",
+ "x": 8,
+ "y": 4.25
+ },
+ {
+ "label": "11,0",
+ "x": 10.75,
+ "y": 4.25
+ },
+ {
+ "label": "11,1",
+ "x": 11.75,
+ "y": 4.25
+ },
+ {
+ "label": "11,2",
+ "x": 12.75,
+ "y": 4.25
+ },
+ {
+ "label": "4,0",
+ "x": 1,
+ "y": 4.5
+ },
+ {
+ "label": "4,1",
+ "x": 2,
+ "y": 4.5
+ },
+ {
+ "label": "10,4",
+ "x": 16.75,
+ "y": 4.5
+ },
+ {
+ "label": "10,5",
+ "x": 17.75,
+ "y": 4.5
+ },
+ {
+ "label": "5,1",
+ "x": 7,
+ "y": 5.25
+ },
+ {
+ "label": "5,2",
+ "x": 8,
+ "y": 5.25
+ }
+ ]
+ }
+ }
+}
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/keymaps/default/keymap.c b/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/keymaps/default/keymap.c
new file mode 100644
index 00000000000..50288c38948
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/keymaps/default/keymap.c
@@ -0,0 +1,118 @@
+#include QMK_KEYBOARD_H
+
+#define _BASE 0
+#define _NAV 1
+#define _SYST 2
+#define _MOUSE 3 //layer for mouse functions
+
+// Macros
+#define TASK LCTL(LSFT(KC_ESC))
+#define TAB_R LCTL(KC_TAB)
+#define TAB_L LCTL(LSFT(KC_TAB))
+#define TAB_RO LCTL(LSFT(KC_T))
+#define CAD LCTL(LALT(KC_DEL))
+#define IAD LCTL(LALT(KC_INS))
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_BASE] = LAYOUT_5x7(
+ // left hand // right hand
+ LT(_SYST, 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, 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_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(_SYST),
+ KC_APP, KC_LGUI, MO(_NAV), TG(_MOUSE),
+ KC_LALT, LT(_NAV, KC_SPC), KC_SPC,
+ KC_BTN3, KC_BTN1, KC_WFWD,
+ _______, _______, _______, KC_WBAK),
+
+ [_NAV] = LAYOUT_5x7(
+ // left hand // right hand
+ KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC,
+ _______, _______, _______, LCTL(LSFT(KC_E)), _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______, _______,
+ _______, LCTL(KC_A), LCTL(KC_S), _______, _______, _______, KC_PGUP, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______,
+ _______, KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, _______, KC_PGDN, TAB_L, TAB_R, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+ [_SYST] = LAYOUT_5x7(
+ // left hand // right hand
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______,
+ _______, KC_INS, KC_PAUS, _______, IAD, CAD, _______, _______, _______, _______, _______, _______, _______,
+ KC_CAPS, KC_NUM, KC_SCRL, _______, _______, _______, _______, _______, _______, KC_MSTP, KC_VOLD, KC_VOLU, KC_MUTE,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, QK_BOOT, EE_CLR,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+
+ [_MOUSE] = LAYOUT_5x7(
+ // left hand // right hand
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+};
+
+
+//void keyboard_post_init_user(void) {
+// // Customise these values to desired behaviour
+// debug_enable=true;
+// debug_matrix=true;
+// debug_keyboard=true;
+// debug_mouse=true;
+//}
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_NAV] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_SYST] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_MOUSE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+};
+#endif
+
+#ifdef OLED_ENABLE
+bool oled_task_user(void) {
+ // Host Keyboard Layer Status
+ oled_write_P(PSTR("Layer: "), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _BASE:
+ oled_write_P(PSTR("Base\n"), false);
+ break;
+ case _NAV:
+ oled_write_P(PSTR("Nav\n"), false);
+ break;
+ case _SYST:
+ oled_write_P(PSTR("System\n"), false);
+ break;
+ case _MOUSE:
+ oled_write_P(PSTR("Mouse\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+
+ // Host Keyboard LED Status
+ led_t led_state = host_keyboard_led_state();
+ oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
+
+ return false;
+}
+#endif
+
+#define imageWidth 128
+#define imageHeight 36
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/keymaps/vial/config.h
new file mode 100644
index 00000000000..e22056aa9b6
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x4F, 0xBF, 0x8E, 0x84, 0xE5, 0xD1, 0x37, 0x55}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 5 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 5 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..a9cccd20aac
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/keymaps/vial/keymap.c
@@ -0,0 +1,261 @@
+#include QMK_KEYBOARD_H
+#include "5x6_full_track.h"
+
+//#define _WORKMAN 0
+#define _QWERTY 0
+//#define _COLEMAK 1
+#define _LOWER 1
+#define _RAISE 2
+#define _MOUSE 3
+
+#define QWERTY MO(_QWERTY)
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+enum wyld_keycodes {
+ WYLD_AUTO_MS_TOG = SAFE_RANGE
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_QWERTY] = LAYOUT_5x6(
+ KC_ESC , 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_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_MINS,
+ KC_LSFT, KC_A , KC_S , KC_D , KC_F , KC_G , KC_MUTE, KC_HOME, 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_BSLS,
+ KC_LCTL, KC_LALT, KC_LBRC,KC_RBRC, KC_PLUS,KC_EQL, KC_RALT,KC_RCTL,
+ RAISE, KC_SPC, KC_TAB, KC_LALT, KC_ENT, LOWER,
+ KC_BSPC, KC_LGUI
+ ),
+
+ [_LOWER] = LAYOUT_5x6(
+ KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL,
+ WYLD_AUTO_MS_TOG,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,QK_BOOT,KC_PLUS,
+ _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_MUTE, KC_HOME, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,
+ _______,_______,_______,DPI_RMOD,DPI_MOD,DPI_RST, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS,
+ _______,_______, SNIPING,DRGSCRL, _______, KC_P0,_______,QK_BOOT,
+ _______, KC_BTN1, KC_BTN2, _______,_______,_______,
+ KC_BTN3, KC_BTN3
+ ),
+
+ [_RAISE] = LAYOUT_5x6(
+ KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,
+ _______,QK_BOOT,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,
+ _______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_MUTE, KC_HOME, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD,
+ QK_BOOT,_______,_______,_______, KC_EQL ,_______,_______,_______,
+ _______,_______,_______, _______,_______,_______,
+ _______,_______
+ ),
+ [_MOUSE] = LAYOUT_5x6(
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______, KC_MUTE, KC_HOME, _______,KC_BTN1,KC_BTN3,KC_BTN2,_______,_______,
+ _______,_______,_______,DPI_RMOD,DPI_MOD,DPI_RST, _______,_______,_______,_______,_______,_______,
+ _______,_______,SNIPING,DRGSCRL, _______ ,_______,_______,_______,
+ _______, KC_BTN1, KC_BTN2, _______,_______,_______,
+ KC_BTN3, KC_BTN3
+ )
+};
+
+#ifdef POINTING_DEVICE_COMBINED
+static void check_drag(report_mouse_t* mouse_report) {
+ static int16_t scroll_buffer_x = 0;
+ static int16_t scroll_buffer_y = 0;
+
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_X
+ scroll_buffer_x -= mouse_report->x;
+# else
+ scroll_buffer_x += mouse_report->x;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_X
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ scroll_buffer_y -= mouse_report->y;
+# else
+ scroll_buffer_y += mouse_report->y;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ mouse_report->x = 0;
+ mouse_report->y = 0;
+ if (abs(scroll_buffer_x) > 6) {
+ mouse_report->h = scroll_buffer_x > 0 ? 1 : -1;
+ scroll_buffer_x = 0;
+ }
+ if (abs(scroll_buffer_y) > 6) {
+ mouse_report->v = scroll_buffer_y > 0 ? 1 : -1;
+ scroll_buffer_y = 0;
+ }
+}
+
+report_mouse_t pointing_device_task_combined_user(report_mouse_t left_report, report_mouse_t right_report) {
+ check_drag_scroll(&left_report); // updated in trackball.c
+ return pointing_device_combine_reports(left_report, right_report);
+}
+#endif
+
+#ifdef POINTING_DEVICE_AUTO_MOUSE_ENABLE
+void pointing_device_init_user(void) {
+ set_auto_mouse_enable(true);
+ set_auto_mouse_enable(false); // default is off, must be explicitly enabled
+}
+
+// Ensures only the pointing device activates mouse layer on dual track builds
+// And also prevents dragscroll from activating it
+bool auto_mouse_activation(report_mouse_t mouse_report) {
+ return mouse_report.x != 0 || mouse_report.y != 0 || mouse_report.buttons;
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case WYLD_AUTO_MS_TOG:
+ if (record->event.pressed) {
+ set_auto_mouse_enable(!get_auto_mouse_enable());
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+#endif
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_QWERTY] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_LOWER] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_RAISE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_MOUSE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+};
+#endif
+
+//#ifdef ENCODER_ENABLE
+//bool encoder_update_user(uint8_t index, bool clockwise) {
+//===
+// if (clockwise) {
+// tap_code(KC_VOLD);
+// } else {
+// tap_code(KC_VOLU);
+// }
+//
+// return false;
+//}
+//#endif
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_left()) {
+ return OLED_ROTATION_270;
+ }
+#ifdef POINTING_DEVICE_ENABLE
+ return OLED_ROTATION_270;
+#else
+ return OLED_ROTATION_0;
+#endif
+}
+
+#ifndef POINTING_DEVICE_ENABLE
+static const char PROGMEM wylderbuilds[] = {
+ // 'dark wylderbuilds_oled_name', 128x32
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40,
+ 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x20, 0x60,
+ 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x60, 0x60,
+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0,
+ 0x00, 0x00, 0xc1, 0xc1, 0x01, 0x01, 0xf1, 0x11, 0x01, 0x01, 0x01, 0x31, 0x60, 0xc0, 0x80, 0xc0,
+ 0xf0, 0x10, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0,
+ 0x00, 0x01, 0x03, 0x9e, 0xf8, 0x00, 0x00, 0x20, 0xe0, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0xf0, 0x30, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x98, 0xf0, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x00, 0x70, 0xfe, 0x03, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00,
+ 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x11, 0xf1, 0x11, 0x33, 0x63, 0xc3,
+ 0x83, 0x01, 0x01, 0xc1, 0xe1, 0x31, 0x11, 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,
+ 0x1f, 0x7c, 0xff, 0x07, 0x7c, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7f, 0xff,
+ 0x60, 0x30, 0x18, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xf2, 0x82, 0x02, 0x80, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x7f, 0x0e, 0x1b, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0x81, 0xc1, 0x63,
+ 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00,
+ 0x00, 0x1f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x60, 0x30, 0x1f,
+ 0x07, 0x00, 0x00, 0x01, 0x43, 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static void render_wylderbuilds(void) {
+ oled_write_raw_P(wylderbuilds, sizeof(wylderbuilds));
+}
+
+#endif
+
+static char layer_names[5][8] = {
+ " BASE\n",
+ "LOWER\n",
+ "RAISE\n",
+ "MOUSE\n",
+ " XTRA\n"
+ };
+
+bool oled_task_user(void) {
+ char* layer_name = layer_names[get_highest_layer(layer_state)];
+
+ if (is_keyboard_left()) {
+ // oled_write_P(PSTR("Layer\n"), false);
+ oled_set_cursor(0, 3);
+ oled_write_P(PSTR(layer_name), false);
+
+ oled_set_cursor(2, 6);
+ oled_write_P(PSTR("WPM "), false);
+ oled_set_cursor(2, 7);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 9);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+ } else {
+ // write WPM to right OLED
+#ifdef POINTING_DEVICE_ENABLE
+ char* mode = get_mouse_mode_string();
+ uint16_t dpi = get_current_dpi();
+ oled_set_cursor(2, 3);
+ oled_write_P(PSTR("DPI "), false);
+ oled_set_cursor(0, 5);
+ oled_write_P(PSTR(get_u16_str(dpi, ' ')), false);
+ oled_set_cursor(0, 9);
+ oled_write(PSTR(mode), false);
+#else
+ oled_set_cursor(0, 0);
+ render_wylderbuilds();
+ oled_scroll_left();
+#endif
+ }
+
+ return false;
+}
+#endif
+
+
+
+void keyboard_post_init_user(void) {
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+ debug_keyboard=true;
+ debug_mouse=true;
+#else
+ debug_enable=false;
+ debug_matrix=false;
+ debug_keyboard=false;
+ debug_mouse=false;
+#endif
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..d1c35cfd60d
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/keymaps/vial/rules.mk
@@ -0,0 +1,9 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/keymaps/vial/vial.json
new file mode 100644
index 00000000000..d796a29c071
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/keymaps/vial/vial.json
@@ -0,0 +1,200 @@
+{
+ "matrix": {
+ "rows": 12,
+ "cols": 6
+ },
+ "lighting": "vialrgb",
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 5x6 Full Wyld Track Mini Encoders"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 1.75
+ },
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne",
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 0.5
+ },
+ "4,5",
+ {
+ "x": 2.75
+ },
+ "10,0",
+ {
+ "x": 0.5
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5.75
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,2",
+ "4,3",
+ {
+ "x": 9.75
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 6
+ },
+ "5,3",
+ "5,4",
+ "5,5",
+ {
+ "x": 1.75
+ },
+ "11,0",
+ "11,1",
+ "11,2"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 1
+ },
+ "4,0",
+ "4,1",
+ {
+ "x": 13.75
+ },
+ "10,4",
+ "10,5"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 7
+ },
+ "5,1",
+ "5,2"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/mcuconf.h b/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/rules.mk b/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/rules.mk
new file mode 100644
index 00000000000..94e1bf0bba9
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/rules.mk
@@ -0,0 +1,20 @@
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+#RGBLIGHT_ENABLE = no
+#MOUSEKEY_ENABLE = yes
+CONSOLE_ENABLE = no
+#COMMAND_ENABLE = yes
+#BOOTMAGIC_ENABLE = yes
+#NKRO_ENABLE = yes # Enable N-Key Rollover
+
+OLED_ENABLE = yes
+#OLED_DRIVER = SSD1306
+WPM_ENABLE = yes
+EXTRAKEY_ENABLE = yes # Audio control and System control
+
+ENCODER_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+
+OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/wylderbuilds-5x6-full-track.json b/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/wylderbuilds-5x6-full-track.json
new file mode 100644
index 00000000000..3399b15b6a4
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/wylderbuilds-5x6-full-track.json
@@ -0,0 +1,200 @@
+[
+ {
+ "name": "Wylderbuilds 5x6 Full Track"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5.75
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,2",
+ "4,3",
+ {
+ "x": 9.75
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 12.25
+ },
+ "11,0"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 1
+ },
+ "4,0",
+ "4,1",
+ {
+ "x": 13.75
+ },
+ "10,4",
+ "10,5"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 12.25
+ },
+ "11,1"
+ ],
+ [
+ {
+ "x": 11.25
+ },
+ "11,2",
+ "11,3"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -3.75,
+ "x": 6
+ },
+ "4,4",
+ "4,5"
+ ],
+ [
+ {
+ "x": 6.25
+ },
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "x": 6.75
+ },
+ "5,2",
+ "5,3"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/wylderbuilds-5x6-full-wyld-track-mini-encoders.json b/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/wylderbuilds-5x6-full-wyld-track-mini-encoders.json
new file mode 100644
index 00000000000..c1f861dd303
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_full_track/wylderbuilds-5x6-full-wyld-track-mini-encoders.json
@@ -0,0 +1,191 @@
+[
+ {
+ "name": "Wylderbuilds 5x6 Full Wyld Track Mini Encoders"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 1.75
+ },
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne",
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 0.5
+ },
+ "4,5",
+ {
+ "x": 2.75
+ },
+ "10,0",
+ {
+ "x": 0.5
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5.75
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,2",
+ "4,3",
+ {
+ "x": 9.75
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 6
+ },
+ "5,3",
+ "5,4",
+ "5,5",
+ {
+ "x": 1.75
+ },
+ "11,0",
+ "11,1",
+ "11,2"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 1
+ },
+ "4,0",
+ "4,1",
+ {
+ "x": 13.75
+ },
+ "10,4",
+ "10,5"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 7
+ },
+ "5,1",
+ "5,2"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_full_wyld_track/5x6_full_wyld_track.c b/keyboards/handwired/wylderbuilds/trackball/5x6_full_wyld_track/5x6_full_wyld_track.c
new file mode 100644
index 00000000000..9466ac50dd7
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_full_wyld_track/5x6_full_wyld_track.c
@@ -0,0 +1 @@
+#include "5x6_full_wyld_track.h"
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_full_wyld_track/5x6_full_wyld_track.h b/keyboards/handwired/wylderbuilds/trackball/5x6_full_wyld_track/5x6_full_wyld_track.h
new file mode 100644
index 00000000000..ed0a77d97a3
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_full_wyld_track/5x6_full_wyld_track.h
@@ -0,0 +1,30 @@
+#pragma once
+
+#include "trackball.h"
+
+#define XXX KC_NO
+
+
+#define LAYOUT_5x6_whole( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+ L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \
+ L40, L41, L42, L43, R42, R43, R44, R45, \
+ L53, L54, L55, R50, R51, R52, \
+ L51, L52 \
+) { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { L30, L31, L32, L33, L34, L35 }, \
+ { L40, L41, L42, L43, XXX, XXX }, \
+ { XXX, XXX, XXX, L53, L54, L55 }, \
+\
+ { R00, R01, R02, R03, R04, R05 }, \
+ { R10, R11, R12, R13, R14, R15 }, \
+ { R20, R21, R22, R23, R24, R25 }, \
+ { R30, R31, R32, R33, R34, R35 }, \
+ { XXX, XXX, R42, R43, R44, R45 }, \
+ { R50, R51, R52, XXX, XXX, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_full_wyld_track/config.h b/keyboards/handwired/wylderbuilds/trackball/5x6_full_wyld_track/config.h
new file mode 100644
index 00000000000..4fc46d9b984
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_full_wyld_track/config.h
@@ -0,0 +1,94 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+//#include "config_common.h"
+// Basic Config
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+
+#define USE_SERIAL
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Columns are doubled-up
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 6
+
+//#define MATRIX_COL_PINS_RIGHT { GP8, GP2, GP3, GP4, GP5, GP6, GP7 }
+#define MATRIX_COL_PINS { GP2, GP3, GP4, GP5, GP6, GP7 }
+#define MATRIX_ROW_PINS { GP9, GP10, GP11, GP12, GP13, GP14 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define SPLIT_POINTING_ENABLE
+#define ROTATIONAL_TRANSFORM_ANGLE -25
+#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_RIGHT
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x02
+
+#define POINTING_DEVICE_AUTO_MOUSE_ENABLE
+// only required if not setting mouse layer elsewhere
+#define AUTO_MOUSE_DEFAULT_LAYER 3
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 4
+
+#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+//#define ENCODERS_PAD_A { GP26 }
+//#define ENCODERS_PAD_B { GP27 }
+//#define ENCODER_RESOLUTIONS { 2 }
+//// Sensor Notes ////
+//// Pi Pico pins ////
+// 3V3 -- Power (not 3v3_EN)
+// GP17 -- CS pin
+// GP20 -- MISO pin
+// GP19 -- MOSI pin
+// GP18 -- SCK pin clock Driver
+#ifdef RGBLIGHT_ENABLE
+#define WS2812_PIO_USE_PIO1
+//#define WS2812_PIO_USE_PIO1
+//#define WS2812_PIO_USE_PIO1
+#define RGBLIGHT_LAYERS
+#define WS2812_DI_PIN GP22 // can use trackball jack if not used
+//#define WS2812_EXTERNAL_PULLUP
+#define RGBLED_NUM 24
+//#define DRIVER_LED_TOTAL 34
+#define RGBLED_SPLIT { 12, 12 }
+#define RGBLIGHT_SPLIT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 17
+#define RGBLIGHT_LIMIT_VAL 100
+//#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+#define NOP_FUDGE 0.4 // may not be needed if ws driver loaded
+#endif
+
+// Misc settings
+// 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// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_full_wyld_track/info.json b/keyboards/handwired/wylderbuilds/trackball/5x6_full_wyld_track/info.json
new file mode 100644
index 00000000000..2e922a003b7
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_full_wyld_track/info.json
@@ -0,0 +1,345 @@
+{
+ "keyboard_name": "Dactyl-Manuform Wyld Trackball (5x6_whole_track)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0048",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 12,
+ "cols": 6
+ },
+ "layouts": {
+ "LAYOUT_5x6_full_wyld": {
+ "layout": [
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "6,0",
+ "x": 12.75,
+ "y": 0
+ },
+ {
+ "label": "6,1",
+ "x": 13.75,
+ "y": 0
+ },
+ {
+ "label": "6,2",
+ "x": 14.75,
+ "y": 0
+ },
+ {
+ "label": "6,3",
+ "x": 15.75,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "6,4",
+ "x": 16.75,
+ "y": 0.5
+ },
+ {
+ "label": "6,5",
+ "x": 17.75,
+ "y": 0.5
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "7,0",
+ "x": 12.75,
+ "y": 1
+ },
+ {
+ "label": "7,1",
+ "x": 13.75,
+ "y": 1
+ },
+ {
+ "label": "7,2",
+ "x": 14.75,
+ "y": 1
+ },
+ {
+ "label": "7,3",
+ "x": 15.75,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "7,4",
+ "x": 16.75,
+ "y": 1.5
+ },
+ {
+ "label": "7,5",
+ "x": 17.75,
+ "y": 1.5
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "8,0",
+ "x": 12.75,
+ "y": 2
+ },
+ {
+ "label": "8,1",
+ "x": 13.75,
+ "y": 2
+ },
+ {
+ "label": "8,2",
+ "x": 14.75,
+ "y": 2
+ },
+ {
+ "label": "8,3",
+ "x": 15.75,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "8,4",
+ "x": 16.75,
+ "y": 2.5
+ },
+ {
+ "label": "8,5",
+ "x": 17.75,
+ "y": 2.5
+ },
+ {
+ "label": "3,2",
+ "x": 3,
+ "y": 3
+ },
+ {
+ "label": "3,3",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "3,4",
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "3,5",
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "9,0",
+ "x": 12.75,
+ "y": 3
+ },
+ {
+ "label": "9,1",
+ "x": 13.75,
+ "y": 3
+ },
+ {
+ "label": "9,2",
+ "x": 14.75,
+ "y": 3
+ },
+ {
+ "label": "9,3",
+ "x": 15.75,
+ "y": 3
+ },
+ {
+ "label": "3,0",
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "label": "3,1",
+ "x": 2,
+ "y": 3.5
+ },
+ {
+ "label": "9,4",
+ "x": 16.75,
+ "y": 3.5
+ },
+ {
+ "label": "9,5",
+ "x": 17.75,
+ "y": 3.5
+ },
+ {
+ "label": "4,2",
+ "x": 3,
+ "y": 4
+ },
+ {
+ "label": "4,3",
+ "x": 4,
+ "y": 4
+ },
+ {
+ "label": "10,2",
+ "x": 14.75,
+ "y": 4
+ },
+ {
+ "label": "10,3",
+ "x": 15.75,
+ "y": 4
+ },
+ {
+ "label": "4,0",
+ "x": 1,
+ "y": 4.5
+ },
+ {
+ "label": "4,1",
+ "x": 2,
+ "y": 4.5
+ },
+ {
+ "label": "10,4",
+ "x": 16.75,
+ "y": 4.5
+ },
+ {
+ "label": "10,5",
+ "x": 17.75,
+ "y": 4.5
+ },
+ {
+ "label": "5,3",
+ "x": 6,
+ "y": 3.5
+ },
+ {
+ "label": "5,4",
+ "x": 7,
+ "y": 3.5
+ },
+ {
+ "label": "5,5",
+ "x": 8,
+ "y": 3.5
+ },
+ {
+ "label": "5,1",
+ "x": 6.75,
+ "y": 4.5
+ },
+ {
+ "label": "5,2",
+ "x": 7.75,
+ "y": 4.5
+ },
+ {
+ "label": "11,0",
+ "x": 10.75,
+ "y": 5.75
+ },
+ {
+ "label": "11,1",
+ "x": 11.75,
+ "y": 5.75
+ },
+ {
+ "label": "11,2",
+ "x": 12.75,
+ "y": 5.75
+ }
+ ]
+ }
+ }
+}
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_full_wyld_track/keymaps/default/keymap.c b/keyboards/handwired/wylderbuilds/trackball/5x6_full_wyld_track/keymaps/default/keymap.c
new file mode 100644
index 00000000000..50288c38948
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_full_wyld_track/keymaps/default/keymap.c
@@ -0,0 +1,118 @@
+#include QMK_KEYBOARD_H
+
+#define _BASE 0
+#define _NAV 1
+#define _SYST 2
+#define _MOUSE 3 //layer for mouse functions
+
+// Macros
+#define TASK LCTL(LSFT(KC_ESC))
+#define TAB_R LCTL(KC_TAB)
+#define TAB_L LCTL(LSFT(KC_TAB))
+#define TAB_RO LCTL(LSFT(KC_T))
+#define CAD LCTL(LALT(KC_DEL))
+#define IAD LCTL(LALT(KC_INS))
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_BASE] = LAYOUT_5x7(
+ // left hand // right hand
+ LT(_SYST, 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, 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_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(_SYST),
+ KC_APP, KC_LGUI, MO(_NAV), TG(_MOUSE),
+ KC_LALT, LT(_NAV, KC_SPC), KC_SPC,
+ KC_BTN3, KC_BTN1, KC_WFWD,
+ _______, _______, _______, KC_WBAK),
+
+ [_NAV] = LAYOUT_5x7(
+ // left hand // right hand
+ KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC,
+ _______, _______, _______, LCTL(LSFT(KC_E)), _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______, _______,
+ _______, LCTL(KC_A), LCTL(KC_S), _______, _______, _______, KC_PGUP, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______,
+ _______, KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, _______, KC_PGDN, TAB_L, TAB_R, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+ [_SYST] = LAYOUT_5x7(
+ // left hand // right hand
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______,
+ _______, KC_INS, KC_PAUS, _______, IAD, CAD, _______, _______, _______, _______, _______, _______, _______,
+ KC_CAPS, KC_NUM, KC_SCRL, _______, _______, _______, _______, _______, _______, KC_MSTP, KC_VOLD, KC_VOLU, KC_MUTE,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, QK_BOOT, EE_CLR,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+
+ [_MOUSE] = LAYOUT_5x7(
+ // left hand // right hand
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+};
+
+
+//void keyboard_post_init_user(void) {
+// // Customise these values to desired behaviour
+// debug_enable=true;
+// debug_matrix=true;
+// debug_keyboard=true;
+// debug_mouse=true;
+//}
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_NAV] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_SYST] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_MOUSE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+};
+#endif
+
+#ifdef OLED_ENABLE
+bool oled_task_user(void) {
+ // Host Keyboard Layer Status
+ oled_write_P(PSTR("Layer: "), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _BASE:
+ oled_write_P(PSTR("Base\n"), false);
+ break;
+ case _NAV:
+ oled_write_P(PSTR("Nav\n"), false);
+ break;
+ case _SYST:
+ oled_write_P(PSTR("System\n"), false);
+ break;
+ case _MOUSE:
+ oled_write_P(PSTR("Mouse\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+
+ // Host Keyboard LED Status
+ led_t led_state = host_keyboard_led_state();
+ oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
+
+ return false;
+}
+#endif
+
+#define imageWidth 128
+#define imageHeight 36
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_full_wyld_track/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/5x6_full_wyld_track/keymaps/vial/config.h
new file mode 100644
index 00000000000..dee5c588f6f
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_full_wyld_track/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xAD, 0x0B, 0x8B, 0xB5, 0x65, 0x12, 0xAD, 0x0E}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 5 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 5 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_full_wyld_track/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/5x6_full_wyld_track/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..fbd7770ff95
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_full_wyld_track/keymaps/vial/keymap.c
@@ -0,0 +1,134 @@
+#include QMK_KEYBOARD_H
+#include "5x6_full_wyld_track.h"
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+#define _MOUSE 3
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+enum wyld_keycodes {
+ WYLD_AUTO_MS_TOG = SAFE_RANGE
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_5x6_whole(
+ KC_ESC , KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS,
+ 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_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_LALT,KC_LWIN,KC_LBRC, KC_BSLS,KC_RWIN,KC_RALT,KC_RCTL,
+ RAISE, KC_SPC, KC_BSPC, KC_DEL, KC_ENT, LOWER,
+ KC_LALT, KC_GRV
+ ),
+
+ [_LOWER] = LAYOUT_5x6_whole(
+ KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,
+ _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,
+ _______,RGB_VAI,RGB_SAI,RGB_HUI,RGB_MOD,RGB_TOG, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS,
+ WYLD_AUTO_MS_TOG,_______,_______,_______, KC_P0,_______,_______,QK_BOOT,
+ _______,KC_BTN3,KC_BTN1, _______,_______,_______,
+ SNIPING,DRGSCRL
+ ),
+
+ [_RAISE] = LAYOUT_5x6_whole(
+ KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6, KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,
+ _______,KC_LEFT,KC_UP,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,KC_VOLD,KC_VOLU,_______,
+ QK_BOOT,_______,_______,_______, SNIPING,DRGSCRL,KC_EQL,_______,
+ _______,_______,_______, KC_BTN1,KC_BTN3,KC_BTN2,
+ _______,_______
+ ),
+ [_MOUSE] = LAYOUT_5x6_whole(
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______, _______,_______,_______,_______,
+ _______,KC_BTN3,KC_BTN1, _______,_______,_______,
+ SNIPING,DRGSCRL
+ )
+};
+
+#ifdef POINTING_DEVICE_AUTO_MOUSE_ENABLE
+void pointing_device_init_user(void) {
+ set_auto_mouse_enable(true);
+}
+
+// Ensures only the pointing device activates mouse layer on dual track builds
+// And also prevents dragscroll from activating it
+bool auto_mouse_activation(report_mouse_t mouse_report) {
+ return mouse_report.x != 0 || mouse_report.y != 0 || mouse_report.buttons;
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case WYLD_AUTO_MS_TOG:
+ if (record->event.pressed) {
+ set_auto_mouse_enable(!get_auto_mouse_enable());
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+const rgblight_segment_t PROGMEM querty_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {9, 3, HSV_RED}, // Light 4 LEDs, starting with LED 6
+ {21, 3, HSV_RED} // Light 4 LEDs, starting with LED 6
+);
+const rgblight_segment_t PROGMEM lower_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {9, 3, HSV_BLUE},
+ {21, 3, HSV_BLUE}
+);
+const rgblight_segment_t PROGMEM raise_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {9, 3, HSV_YELLOW},
+ {21, 3, HSV_YELLOW}
+);
+const rgblight_segment_t PROGMEM mouse_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {9, 3, HSV_GREEN},
+ {21, 3, HSV_GREEN}
+);
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ querty_layer, // Overrides caps lock layer
+ lower_layer, // Overrides other layers
+ raise_layer, // Overrides other layers
+ mouse_layer
+);
+
+layer_state_t default_layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(0, layer_state_cmp(state, _QWERTY));
+ return state;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(1, layer_state_cmp(state, _LOWER));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _RAISE));
+ rgblight_set_layer_state(3, layer_state_cmp(state, _MOUSE));
+ return state;
+}
+#endif
+
+void keyboard_post_init_user(void) {
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+ debug_keyboard=true;
+ debug_mouse=true;
+#else
+ debug_enable=false;
+ debug_matrix=false;
+ debug_keyboard=false;
+ debug_mouse=false;
+#endif
+ rgblight_layers = my_rgb_layers;
+}
+
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_full_wyld_track/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/5x6_full_wyld_track/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_full_wyld_track/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_full_wyld_track/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/5x6_full_wyld_track/keymaps/vial/vial.json
new file mode 100644
index 00000000000..930ecb7af14
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_full_wyld_track/keymaps/vial/vial.json
@@ -0,0 +1,192 @@
+{
+ "matrix": {
+ "rows": 12,
+ "cols": 6
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 5x6 Full Wyld Trackball",
+ "author": "Andy @ Wylderbuilds"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5.75
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,2",
+ "4,3",
+ {
+ "x": 9.75
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "4,0",
+ "4,1",
+ {
+ "x": 13.75
+ },
+ "10,4",
+ "10,5"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -2,
+ "x": 6
+ },
+ "5,3",
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "x": 6.75
+ },
+ "5,1",
+ "5,2"
+ ],
+ [
+ {
+ "r": -6.5,
+ "y": 0.25,
+ "x": 10.75
+ },
+ "11,0",
+ "11,1",
+ "11,2"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_full_wyld_track/mcuconf.h b/keyboards/handwired/wylderbuilds/trackball/5x6_full_wyld_track/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_full_wyld_track/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_full_wyld_track/rules.mk b/keyboards/handwired/wylderbuilds/trackball/5x6_full_wyld_track/rules.mk
new file mode 100644
index 00000000000..500e27b751c
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_full_wyld_track/rules.mk
@@ -0,0 +1,16 @@
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+RGBLIGHT_ENABLE = no
+MOUSEKEY_ENABLE = yes
+CONSOLE_ENABLE = no
+#COMMAND_ENABLE = yes
+BOOTMAGIC_ENABLE = yes
+
+EXTRAKEY_ENABLE = yes # Audio control and System control
+NKRO_ENABLE = yes # Enable N-Key Rollover
+
+RGBLIGHT_ENABLE = yes
+WS2812_DRIVER = vendor
+SLEEP_LED_ENABLE = no
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_full_wyld_track/wylderbuilds-5x6-full-wyld-trackball.json b/keyboards/handwired/wylderbuilds/trackball/5x6_full_wyld_track/wylderbuilds-5x6-full-wyld-trackball.json
new file mode 100644
index 00000000000..c1bfb6ba787
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_full_wyld_track/wylderbuilds-5x6-full-wyld-trackball.json
@@ -0,0 +1,184 @@
+[
+ {
+ "name": "Wylderbuilds 5x6 Full Wyld Trackball",
+ "author": "Andy @ Wylderbuilds"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5.75
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,2",
+ "4,3",
+ {
+ "x": 9.75
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "4,0",
+ "4,1",
+ {
+ "x": 13.75
+ },
+ "10,4",
+ "10,5"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -2,
+ "x": 6
+ },
+ "5,3",
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "x": 6.75
+ },
+ "5,1",
+ "5,2"
+ ],
+ [
+ {
+ "r": -6.5,
+ "y": 0.25,
+ "x": 10.75
+ },
+ "11,0",
+ "11,1",
+ "11,2"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_l_oled_r_tb/5x6_l_oled_r_tb.c b/keyboards/handwired/wylderbuilds/trackball/5x6_l_oled_r_tb/5x6_l_oled_r_tb.c
new file mode 100644
index 00000000000..1bad8d4e0f5
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_l_oled_r_tb/5x6_l_oled_r_tb.c
@@ -0,0 +1 @@
+#include "5x6_l_oled_r_tb.h"
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_l_oled_r_tb/5x6_l_oled_r_tb.h b/keyboards/handwired/wylderbuilds/trackball/5x6_l_oled_r_tb/5x6_l_oled_r_tb.h
new file mode 100644
index 00000000000..10d7eaff452
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_l_oled_r_tb/5x6_l_oled_r_tb.h
@@ -0,0 +1,31 @@
+#pragma once
+
+#include "trackball.h"
+
+#define XXX KC_NO
+
+
+#define LAYOUT_5x6( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+ L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \
+ L42, L43, R42, R43, \
+ L44, L45, R50, \
+ L54, L55, R51, \
+ L52, L53, R52, R53 \
+) { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { L30, L31, L32, L33, L34, L35 }, \
+ { XXX, XXX, L42, L43, L44, L45 }, \
+ { XXX, XXX, L52, L53, L54, L55 }, \
+\
+ { R00, R01, R02, R03, R04, R05 }, \
+ { R10, R11, R12, R13, R14, R15 }, \
+ { R20, R21, R22, R23, R24, R25 }, \
+ { R30, R31, R32, R33, R34, R35 }, \
+ { XXX, XXX, R42, R43, XXX, XXX }, \
+ { R50, R51, R52, R53, XXX, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_l_oled_r_tb/config.h b/keyboards/handwired/wylderbuilds/trackball/5x6_l_oled_r_tb/config.h
new file mode 100644
index 00000000000..1770c5dc089
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_l_oled_r_tb/config.h
@@ -0,0 +1,148 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+#include "config_common.h"
+// Basic Config
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+#define BOOTMAGIC_LITE_ROW 0 // TOP RIGHT KEY ON RIGHT SIDE, TOP LEFT KEY ON LEFT SIDE
+#define BOOTMAGIC_LITE_COLUMN 4
+
+//#define PRODUCT_ID 0x0002
+
+#define USE_SERIAL
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+//#define SPLIT_HAND_PIN_LOW_IS_LEFT
+//#define SPLIT_HAND_MATRIX_GRID GP9, GP8
+//#define MASTER_RIGHT
+//#define MASTER_LEFT
+
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+//#define SERIAL_DEBUG
+//#define SERIAL_USART_PIN_SWAP
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Columns are doubled-up
+/* key matrix size */
+// Columns are doubled-up
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 6
+
+// TEMP TRY THIS
+#define MATRIX_COL_PINS { GP7, GP6, GP5, GP4, GP3, GP2 }
+#define MATRIX_ROW_PINS { GP9, GP10, GP11, GP12, GP13, GP14 }
+
+//// Rotary Encoder ////
+// GP21
+// GP22
+#define ENCODERS_PAD_A { }
+#define ENCODERS_PAD_B { }
+#define ENCODER_RESOLUTIONS { }
+
+#define ENCODERS_PAD_A_RIGHT { GP27 }
+#define ENCODERS_PAD_B_RIGHT { GP28 }
+#define ENCODER_RESOLUTIONS_RIGHT { 2 }
+
+#define DIODE_DIRECTION COL2ROW
+#define SPLIT_POINTING_ENABLE
+#define ROTATIONAL_TRANSFORM_ANGLE -25
+#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_RIGHT
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x02
+
+#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+//#define CHARYBDIS_MINIMUM_DEFAULT_DPI 1200
+//#define CHARYBDIS_DEFAULT_DPI_CONFIG_STEP 200
+//#define CHARYBDIS_MINIMUM_SNIPING_DPI 400
+//#define CHARYBDIS_SNIPING_DPI_CONFIG_STEP 200
+
+//// Rotary Encoder ////
+// GP21
+// GP22
+
+//// Sensor Notes ////
+//// Pi Pico pins ////
+// 3V3 -- Power (not 3v3_EN!)
+// GP21 -- CS pin
+// GP20 -- MISO pin
+// GP19 -- MOSI pin
+// GP18 -- SCK pin clock
+// GND -- GND
+
+// WS2812 RGB LED strip input and number of LEDs
+//#ifdef RGBLIGHT_ENABLE
+//#define RGB_DI_PIN GP17
+//#define RGBLED_NUM 34
+////#define DRIVER_LED_TOTAL 34
+//#define RGBLED_SPLIT { 17, 17 }
+//#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+//#define NOP_FUDGE 0.4
+//#endif
+
+#ifdef RGBLIGHT_ENABLE
+#define RGBLIGHT_LAYERS
+//#define WS2812_PIO_USE_PIO1
+//#define WS2812_PIO_USE_PIO1
+#define RGB_DI_PIN GP27 // can use trackball jack if not used
+//#define WS2812_EXTERNAL_PULLUP
+#define RGBLED_NUM 24
+//#define DRIVER_LED_TOTAL 34
+#define RGBLED_SPLIT { 12, 12 }
+#define RGBLIGHT_SPLIT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 17
+#define RGBLIGHT_LIMIT_VAL 255
+//#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+#define NOP_FUDGE 0.4 // may not be needed if ws driver loaded
+#endif
+
+//// OLED Pins and Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD1
+#define I2C1_SDA_PIN GP16
+#define I2C1_SCL_PIN GP17
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+// Misc settings
+// 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
+// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_l_oled_r_tb/info.json b/keyboards/handwired/wylderbuilds/trackball/5x6_l_oled_r_tb/info.json
new file mode 100644
index 00000000000..a81d69bf7fe
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_l_oled_r_tb/info.json
@@ -0,0 +1,335 @@
+{
+ "keyboard_name": "Dactyl-Manuform Wyld Trackball (5x6_l_oled_r_tb)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0013",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 12,
+ "cols": 6
+ },
+ "layouts": {
+ "LAYOUT_5x6": {
+ "layout": [
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "6,0",
+ "x": 12.75,
+ "y": 0
+ },
+ {
+ "label": "6,1",
+ "x": 13.75,
+ "y": 0
+ },
+ {
+ "label": "6,2",
+ "x": 14.75,
+ "y": 0
+ },
+ {
+ "label": "6,3",
+ "x": 15.75,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "6,4",
+ "x": 16.75,
+ "y": 0.5
+ },
+ {
+ "label": "6,5",
+ "x": 17.75,
+ "y": 0.5
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "7,0",
+ "x": 12.75,
+ "y": 1
+ },
+ {
+ "label": "7,1",
+ "x": 13.75,
+ "y": 1
+ },
+ {
+ "label": "7,2",
+ "x": 14.75,
+ "y": 1
+ },
+ {
+ "label": "7,3",
+ "x": 15.75,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "7,4",
+ "x": 16.75,
+ "y": 1.5
+ },
+ {
+ "label": "7,5",
+ "x": 17.75,
+ "y": 1.5
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "8,0",
+ "x": 12.75,
+ "y": 2
+ },
+ {
+ "label": "8,1",
+ "x": 13.75,
+ "y": 2
+ },
+ {
+ "label": "8,2",
+ "x": 14.75,
+ "y": 2
+ },
+ {
+ "label": "8,3",
+ "x": 15.75,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "8,4",
+ "x": 16.75,
+ "y": 2.5
+ },
+ {
+ "label": "8,5",
+ "x": 17.75,
+ "y": 2.5
+ },
+ {
+ "label": "3,2",
+ "x": 3,
+ "y": 3
+ },
+ {
+ "label": "3,3",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "3,4",
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "3,5",
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "9,0",
+ "x": 12.75,
+ "y": 3
+ },
+ {
+ "label": "9,1",
+ "x": 13.75,
+ "y": 3
+ },
+ {
+ "label": "9,2",
+ "x": 14.75,
+ "y": 3
+ },
+ {
+ "label": "9,3",
+ "x": 15.75,
+ "y": 3
+ },
+ {
+ "label": "3,0",
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "label": "3,1",
+ "x": 2,
+ "y": 3.5
+ },
+ {
+ "label": "9,4",
+ "x": 16.75,
+ "y": 3.5
+ },
+ {
+ "label": "9,5",
+ "x": 17.75,
+ "y": 3.5
+ },
+ {
+ "label": "4,2",
+ "x": 3,
+ "y": 4
+ },
+ {
+ "label": "4,3",
+ "x": 4,
+ "y": 4
+ },
+ {
+ "label": "10,2",
+ "x": 14.75,
+ "y": 4
+ },
+ {
+ "label": "10,3",
+ "x": 15.75,
+ "y": 4
+ },
+ {
+ "label": "11,0",
+ "x": 13,
+ "y": 4.25
+ },
+ {
+ "label": "11,1",
+ "x": 13,
+ "y": 5.5
+ },
+ {
+ "label": "11,3",
+ "x": 13,
+ "y": 6.75
+ },
+ {
+ "label": "11,2",
+ "x": 11.25,
+ "y": 7.75
+ },
+ {
+ "label": "4,4",
+ "x": 6,
+ "y": 3.5
+ },
+ {
+ "label": "4,5",
+ "x": 7,
+ "y": 3.5
+ },
+ {
+ "label": "5,4",
+ "x": 4.5,
+ "y": 7.25
+ },
+ {
+ "label": "5,5",
+ "x": 5.5,
+ "y": 7.25
+ },
+ {
+ "label": "5,2",
+ "x": 5.25,
+ "y": 8.25
+ },
+ {
+ "label": "5,3",
+ "x": 6.25,
+ "y": 8.25
+ }
+ ]
+ }
+ }
+}
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_l_oled_r_tb/keymaps/default/keymap.c b/keyboards/handwired/wylderbuilds/trackball/5x6_l_oled_r_tb/keymaps/default/keymap.c
new file mode 100644
index 00000000000..50288c38948
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_l_oled_r_tb/keymaps/default/keymap.c
@@ -0,0 +1,118 @@
+#include QMK_KEYBOARD_H
+
+#define _BASE 0
+#define _NAV 1
+#define _SYST 2
+#define _MOUSE 3 //layer for mouse functions
+
+// Macros
+#define TASK LCTL(LSFT(KC_ESC))
+#define TAB_R LCTL(KC_TAB)
+#define TAB_L LCTL(LSFT(KC_TAB))
+#define TAB_RO LCTL(LSFT(KC_T))
+#define CAD LCTL(LALT(KC_DEL))
+#define IAD LCTL(LALT(KC_INS))
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_BASE] = LAYOUT_5x7(
+ // left hand // right hand
+ LT(_SYST, 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, 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_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(_SYST),
+ KC_APP, KC_LGUI, MO(_NAV), TG(_MOUSE),
+ KC_LALT, LT(_NAV, KC_SPC), KC_SPC,
+ KC_BTN3, KC_BTN1, KC_WFWD,
+ _______, _______, _______, KC_WBAK),
+
+ [_NAV] = LAYOUT_5x7(
+ // left hand // right hand
+ KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC,
+ _______, _______, _______, LCTL(LSFT(KC_E)), _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______, _______,
+ _______, LCTL(KC_A), LCTL(KC_S), _______, _______, _______, KC_PGUP, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______,
+ _______, KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, _______, KC_PGDN, TAB_L, TAB_R, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+ [_SYST] = LAYOUT_5x7(
+ // left hand // right hand
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______,
+ _______, KC_INS, KC_PAUS, _______, IAD, CAD, _______, _______, _______, _______, _______, _______, _______,
+ KC_CAPS, KC_NUM, KC_SCRL, _______, _______, _______, _______, _______, _______, KC_MSTP, KC_VOLD, KC_VOLU, KC_MUTE,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, QK_BOOT, EE_CLR,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+
+ [_MOUSE] = LAYOUT_5x7(
+ // left hand // right hand
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+};
+
+
+//void keyboard_post_init_user(void) {
+// // Customise these values to desired behaviour
+// debug_enable=true;
+// debug_matrix=true;
+// debug_keyboard=true;
+// debug_mouse=true;
+//}
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_NAV] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_SYST] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_MOUSE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+};
+#endif
+
+#ifdef OLED_ENABLE
+bool oled_task_user(void) {
+ // Host Keyboard Layer Status
+ oled_write_P(PSTR("Layer: "), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _BASE:
+ oled_write_P(PSTR("Base\n"), false);
+ break;
+ case _NAV:
+ oled_write_P(PSTR("Nav\n"), false);
+ break;
+ case _SYST:
+ oled_write_P(PSTR("System\n"), false);
+ break;
+ case _MOUSE:
+ oled_write_P(PSTR("Mouse\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+
+ // Host Keyboard LED Status
+ led_t led_state = host_keyboard_led_state();
+ oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
+
+ return false;
+}
+#endif
+
+#define imageWidth 128
+#define imageHeight 36
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_l_oled_r_tb/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/5x6_l_oled_r_tb/keymaps/vial/config.h
new file mode 100644
index 00000000000..3e26f11fe50
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_l_oled_r_tb/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x63, 0xA6, 0xCF, 0xBB, 0xC4, 0x84, 0x24, 0x23}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 5 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 5 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_l_oled_r_tb/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/5x6_l_oled_r_tb/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..f299edbacf4
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_l_oled_r_tb/keymaps/vial/keymap.c
@@ -0,0 +1,134 @@
+#include QMK_KEYBOARD_H
+#include "5x6_l_oled_r_tb.h"
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+
+#define QWERTY MO(_QWERTY)
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_QWERTY] = LAYOUT_5x6(
+ KC_ESC , 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_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_MINS,
+ KC_LSFT, 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_BSLS,
+ KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL,
+ RAISE, KC_SPC, LOWER,
+ KC_TAB, KC_BSPC, KC_ENT,
+ KC_HOME, KC_GRV, KC_MUTE, KC_LALT
+ ),
+
+ [_LOWER] = LAYOUT_5x6(
+ KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,
+ _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,
+ _______,_______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS,
+ _______,KC_PSCR, _______, KC_P0,
+ _______,_______, _______,
+ KC_BTN3,KC_BTN1, _______,
+ SNIPING,DRGSCRL, _______,QK_BOOT
+
+ ),
+
+ [_RAISE] = LAYOUT_5x6(
+ KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,
+ _______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD,
+ _______,_______, KC_EQL ,_______,
+ _______,_______, _______,
+ _______,_______, _______,
+ QK_BOOT,_______, _______,_______
+ )
+};
+
+
+
+void keyboard_post_init_user(void) {
+#ifdef RGBLIGHT_ENABLE
+ // Enable the LED layers
+ rgblight_layers = my_rgb_layers;
+
+// rgblight_layers = my_rgb_layers;
+// rgblight_enable_noeeprom(); // Enables RGB, without saving settings
+// rgblight_sethsv_noeeprom_cyan();
+// rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
+#endif
+
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+ debug_keyboard=true;
+ debug_mouse=true;
+#else
+ debug_enable=false;
+ debug_matrix=false;
+ debug_keyboard=false;
+ debug_mouse=false;
+#endif
+}
+
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_user(uint8_t index, bool clockwise) {
+
+ if (clockwise) {
+ tap_code(KC_VOLD);
+ } else {
+ tap_code(KC_VOLU);
+ }
+
+ return false;
+}
+#endif
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_master()) {
+ return OLED_ROTATION_270;
+ }
+ return OLED_ROTATION_180;
+}
+
+bool oled_task_user(void) {
+ oled_set_cursor(0, 1);
+
+ oled_write_P(PSTR("Layer\n"), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ oled_write_P(PSTR("QWRTY\n"), false);
+ break;
+ case _LOWER:
+ oled_write_P(PSTR("LOWER\n"), false);
+ break;
+ case _RAISE:
+ oled_write_P(PSTR("RAISE\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+ oled_set_cursor(0, 5);
+ oled_write_P(PSTR("WPM: "), false);
+
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 8);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+
+
+ return false;
+}
+#endif
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_l_oled_r_tb/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/5x6_l_oled_r_tb/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_l_oled_r_tb/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_l_oled_r_tb/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/5x6_l_oled_r_tb/keymaps/vial/vial.json
new file mode 100644
index 00000000000..483691f9e02
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_l_oled_r_tb/keymaps/vial/vial.json
@@ -0,0 +1,210 @@
+{
+ "matrix": {
+ "rows": 12,
+ "cols": 6
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 5x6_l_oled_r_tb",
+ "author": "https://wylderbuilds.com"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5.75
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,2",
+ "4,3",
+ {
+ "x": 9.75
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 13
+ },
+ "11,0"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 13
+ },
+ "11,1"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 10.75
+ },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 0.25
+ },
+ "11,3"
+ ],
+ [
+ {
+ "x": 11.25
+ },
+ "11,2"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -5.25,
+ "x": 6
+ },
+ "4,4",
+ "4,5"
+ ],
+ [
+ {
+ "r": -15,
+ "y": 2.75,
+ "x": 4.5
+ },
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "r": -13,
+ "x": 5.25
+ },
+ "5,2",
+ "5,3"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_l_oled_r_tb/mcuconf.h b/keyboards/handwired/wylderbuilds/trackball/5x6_l_oled_r_tb/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_l_oled_r_tb/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_l_oled_r_tb/rules.mk b/keyboards/handwired/wylderbuilds/trackball/5x6_l_oled_r_tb/rules.mk
new file mode 100644
index 00000000000..878c2285c99
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_l_oled_r_tb/rules.mk
@@ -0,0 +1,20 @@
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+#RGBLIGHT_ENABLE = yes
+#WS2812_DRIVER = vendor
+#SLEEP_LED_ENABLE = no
+MOUSEKEY_ENABLE = yes
+CONSOLE_ENABLE = no
+#COMMAND_ENABLE = yes
+BOOTMAGIC_ENABLE = yes
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
+WPM_ENABLE = yes
+EXTRAKEY_ENABLE = yes # Audio control and System control
+NKRO_ENABLE = yes # Enable N-Key Rollover
+ENCODER_ENABLE = yes
+ENCODER_MAP_ENABLE = no
+
+OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_l_oled_r_tb/wylderbuilds-5x6_l_oled_r_tb.json b/keyboards/handwired/wylderbuilds/trackball/5x6_l_oled_r_tb/wylderbuilds-5x6_l_oled_r_tb.json
new file mode 100644
index 00000000000..1c674f5e988
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_l_oled_r_tb/wylderbuilds-5x6_l_oled_r_tb.json
@@ -0,0 +1,202 @@
+[
+ {
+ "name": "Wylderbuilds 5x6_l_oled_r_tb",
+ "author": "https://wylderbuilds.com"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5.75
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,2",
+ "4,3",
+ {
+ "x": 9.75
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 13
+ },
+ "11,0"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 13
+ },
+ "11,1"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 10.75
+ },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 0.25
+ },
+ "11,3"
+ ],
+ [
+ {
+ "x": 11.25
+ },
+ "11,2"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -5.25,
+ "x": 6
+ },
+ "4,4",
+ "4,5"
+ ],
+ [
+ {
+ "r": -15,
+ "y": 2.75,
+ "x": 4.5
+ },
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "r": -13,
+ "x": 5.25
+ },
+ "5,2",
+ "5,3"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_oled_5x7_tb/5x6_oled_5x7_tb.c b/keyboards/handwired/wylderbuilds/trackball/5x6_oled_5x7_tb/5x6_oled_5x7_tb.c
new file mode 100644
index 00000000000..6ade096bb85
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_oled_5x7_tb/5x6_oled_5x7_tb.c
@@ -0,0 +1 @@
+#include "5x6_oled_5x7_tb.h"
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_oled_5x7_tb/5x6_oled_5x7_tb.h b/keyboards/handwired/wylderbuilds/trackball/5x6_oled_5x7_tb/5x6_oled_5x7_tb.h
new file mode 100644
index 00000000000..4a38c5be6ac
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_oled_5x7_tb/5x6_oled_5x7_tb.h
@@ -0,0 +1,31 @@
+#pragma once
+
+#include "trackball.h"
+
+#define XXX KC_NO
+
+
+#define LAYOUT_5x7( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, R06, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, R16, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, R26, \
+ L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, R36, \
+ L42, L43, R42, R43, \
+ L44, L45, R50, \
+ L54, L55, R51, \
+ L52, L53, R53, R52 \
+) { \
+ { L00, L01, L02, L03, L04, L05, XXX }, \
+ { L10, L11, L12, L13, L14, L15, XXX }, \
+ { L20, L21, L22, L23, L24, L25, XXX }, \
+ { L30, L31, L32, L33, L34, L35, XXX }, \
+ { XXX, XXX, L42, L43, L44, L45, XXX }, \
+ { XXX, XXX, L52, L53, L54, L55, XXX }, \
+\
+ { R00, R01, R02, R03, R04, R05, R06 }, \
+ { R10, R11, R12, R13, R14, R15, R16 }, \
+ { R20, R21, R22, R23, R24, R25, R26 }, \
+ { R30, R31, R32, R33, R34, R35, R36 }, \
+ { XXX, XXX, R42, R43, XXX, XXX, XXX }, \
+ { R50, R51, R52, R53, XXX, XXX, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_oled_5x7_tb/config.h b/keyboards/handwired/wylderbuilds/trackball/5x6_oled_5x7_tb/config.h
new file mode 100644
index 00000000000..53663936083
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_oled_5x7_tb/config.h
@@ -0,0 +1,123 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+#include "config_common.h"
+// Basic Config
+
+//#define PRODUCT_ID 0x0002
+
+#define USE_SERIAL
+#define SPLIT_HAND_PIN GP16 // high = left, low = right
+#define SPLIT_HAND_PIN_LOW_IS_LEFT
+//#define SPLIT_HAND_MATRIX_GRID GP9, GP8
+//#define MASTER_RIGHT
+//#define MASTER_LEFT
+
+#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_RIGHT
+#define PMW33XX_CS_PIN GP17
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+#define SERIAL_USART_PIN_SWAP
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Columns are doubled-up
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 7
+
+// TEMP TRY THIS
+#define MATRIX_COL_PINS { GP2, GP3, GP4, GP5, GP6, GP7, GP8 }
+#define MATRIX_ROW_PINS { GP9, GP29, GP28, GP27, GP26, GP10 }
+
+//#define MATRIX_COL_PINS { GP2, GP3, GP4, GP5, GP6, GP7 }
+//#define MATRIX_ROW_PINS { GP9, GP29, GP28, GP27, GP26, GP10 }
+#define MATRIX_COL_PINS_RIGHT { GP3, GP4, GP5, GP6, GP7, GP8, GP9 }
+#define MATRIX_ROW_PINS_RIGHT { GP10, GP11, GP12, GP13, GP14, GP15 }
+
+#define DIODE_DIRECTION ROW2COL
+
+#define SPLIT_POINTING_ENABLE
+#define ROTATIONAL_TRANSFORM_ANGLE -25
+#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_RIGHT
+#define PMW33XX_CS_PIN GP17
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+
+#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+#define CHARYBDIS_MINIMUM_DEFAULT_DPI 1200
+#define CHARYBDIS_DEFAULT_DPI_CONFIG_STEP 200
+#define CHARYBDIS_MINIMUM_SNIPING_DPI 400
+#define CHARYBDIS_SNIPING_DPI_CONFIG_STEP 200
+
+//// Rotary Encoder ////
+// GP21
+// GP22
+
+#define ENCODERS_PAD_A { }
+#define ENCODERS_PAD_B { }
+#define ENCODER_RESOLUTIONS { }
+
+#define ENCODERS_PAD_A_RIGHT { GP21 }
+#define ENCODERS_PAD_B_RIGHT { GP22 }
+#define ENCODER_RESOLUTIONS_RIGHT { 2 }
+
+//// Sensor Notes ////
+//// Pi Pico pins ////
+// 3V3 -- Power (not 3v3_EN)
+// GP17 -- CS pin
+// GP20 -- MISO pin
+// GP19 -- MOSI pin
+// GP18 -- SCK pin clock
+// GND -- GND
+
+// WS2812 RGB LED strip input and number of LEDs
+//#ifdef RGBLIGHT_ENABLE
+//#define RGB_DI_PIN GP17
+//#define RGBLED_NUM 34
+////#define DRIVER_LED_TOTAL 34
+//#define RGBLED_SPLIT { 17, 17 }
+//#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+//#define NOP_FUDGE 0.4
+//#endif
+
+#define SPLIT_OLED_ENABLE
+#define SPLIT_MODS_ENABLE
+//// OLED Pins and Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD1
+#define I2C1_SDA_PIN GP12
+#define I2C1_SCL_PIN GP13
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+// Misc settings
+// 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
+// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_oled_5x7_tb/info.json b/keyboards/handwired/wylderbuilds/trackball/5x6_oled_5x7_tb/info.json
new file mode 100644
index 00000000000..43dc4fb40f2
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_oled_5x7_tb/info.json
@@ -0,0 +1,365 @@
+{
+ "keyboard_name": "Dactyl-Manuform Wyld Trackball (5x7)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0013",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 12,
+ "cols": 7
+ },
+ "layouts": {
+ "LAYOUT_5x7": {
+ "layout": [
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "6,0",
+ "x": 12.75,
+ "y": 0
+ },
+ {
+ "label": "6,1",
+ "x": 13.75,
+ "y": 0
+ },
+ {
+ "label": "6,2",
+ "x": 14.75,
+ "y": 0
+ },
+ {
+ "label": "6,3",
+ "x": 15.75,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "6,4",
+ "x": 16.75,
+ "y": 0.5
+ },
+ {
+ "label": "6,5",
+ "x": 17.75,
+ "y": 0.5
+ },
+ {
+ "label": "6,6",
+ "x": 18.75,
+ "y": 0.5
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "7,0",
+ "x": 12.75,
+ "y": 1
+ },
+ {
+ "label": "7,1",
+ "x": 13.75,
+ "y": 1
+ },
+ {
+ "label": "7,2",
+ "x": 14.75,
+ "y": 1
+ },
+ {
+ "label": "7,3",
+ "x": 15.75,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "7,4",
+ "x": 16.75,
+ "y": 1.5
+ },
+ {
+ "label": "7,5",
+ "x": 17.75,
+ "y": 1.5
+ },
+ {
+ "label": "7,6",
+ "x": 18.75,
+ "y": 1.5
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "8,0",
+ "x": 12.75,
+ "y": 2
+ },
+ {
+ "label": "8,1",
+ "x": 13.75,
+ "y": 2
+ },
+ {
+ "label": "8,2",
+ "x": 14.75,
+ "y": 2
+ },
+ {
+ "label": "8,3",
+ "x": 15.75,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "8,4",
+ "x": 16.75,
+ "y": 2.5
+ },
+ {
+ "label": "8,5",
+ "x": 17.75,
+ "y": 2.5
+ },
+ {
+ "label": "8,6",
+ "x": 18.75,
+ "y": 2.5
+ },
+ {
+ "label": "3,2",
+ "x": 3,
+ "y": 3
+ },
+ {
+ "label": "3,3",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "3,4",
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "3,5",
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "9,0",
+ "x": 12.75,
+ "y": 3
+ },
+ {
+ "label": "9,1",
+ "x": 13.75,
+ "y": 3
+ },
+ {
+ "label": "9,2",
+ "x": 14.75,
+ "y": 3
+ },
+ {
+ "label": "9,3",
+ "x": 15.75,
+ "y": 3
+ },
+ {
+ "label": "3,0",
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "label": "3,1",
+ "x": 2,
+ "y": 3.5
+ },
+ {
+ "label": "9,4",
+ "x": 16.75,
+ "y": 3.5
+ },
+ {
+ "label": "9,5",
+ "x": 17.75,
+ "y": 3.5
+ },
+ {
+ "label": "9,6",
+ "x": 18.75,
+ "y": 3.5
+ },
+ {
+ "label": "4,2",
+ "x": 3,
+ "y": 4
+ },
+ {
+ "label": "4,3",
+ "x": 4,
+ "y": 4
+ },
+ {
+ "label": "10,2",
+ "x": 14.75,
+ "y": 4
+ },
+ {
+ "label": "10,3",
+ "x": 15.75,
+ "y": 4
+ },
+ {
+ "label": "11,0",
+ "x": 13,
+ "y": 4.25
+ },
+ {
+ "label": "11,1",
+ "x": 13,
+ "y": 5.5
+ },
+ {
+ "label": "0,0",
+ "x": 10.75,
+ "y": 6.75
+ },
+ {
+ "label": "0,1",
+ "x": 11.75,
+ "y": 6.75
+ },
+ {
+ "label": "11,2",
+ "x": 13,
+ "y": 6.75
+ },
+ {
+ "label": "11,3",
+ "x": 11.25,
+ "y": 7.75
+ },
+ {
+ "label": "4,4",
+ "x": 6,
+ "y": 3.5
+ },
+ {
+ "label": "4,5",
+ "x": 7,
+ "y": 3.5
+ },
+ {
+ "label": "5,4",
+ "x": 4.5,
+ "y": 7.25
+ },
+ {
+ "label": "5,5",
+ "x": 5.5,
+ "y": 7.25
+ },
+ {
+ "label": "5,2",
+ "x": 5.25,
+ "y": 8.25
+ },
+ {
+ "label": "5,3",
+ "x": 6.25,
+ "y": 8.25
+ }
+ ]
+ }
+ }
+}
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_oled_5x7_tb/keymaps/default/keymap.c b/keyboards/handwired/wylderbuilds/trackball/5x6_oled_5x7_tb/keymaps/default/keymap.c
new file mode 100644
index 00000000000..50288c38948
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_oled_5x7_tb/keymaps/default/keymap.c
@@ -0,0 +1,118 @@
+#include QMK_KEYBOARD_H
+
+#define _BASE 0
+#define _NAV 1
+#define _SYST 2
+#define _MOUSE 3 //layer for mouse functions
+
+// Macros
+#define TASK LCTL(LSFT(KC_ESC))
+#define TAB_R LCTL(KC_TAB)
+#define TAB_L LCTL(LSFT(KC_TAB))
+#define TAB_RO LCTL(LSFT(KC_T))
+#define CAD LCTL(LALT(KC_DEL))
+#define IAD LCTL(LALT(KC_INS))
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_BASE] = LAYOUT_5x7(
+ // left hand // right hand
+ LT(_SYST, 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, 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_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(_SYST),
+ KC_APP, KC_LGUI, MO(_NAV), TG(_MOUSE),
+ KC_LALT, LT(_NAV, KC_SPC), KC_SPC,
+ KC_BTN3, KC_BTN1, KC_WFWD,
+ _______, _______, _______, KC_WBAK),
+
+ [_NAV] = LAYOUT_5x7(
+ // left hand // right hand
+ KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC,
+ _______, _______, _______, LCTL(LSFT(KC_E)), _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______, _______,
+ _______, LCTL(KC_A), LCTL(KC_S), _______, _______, _______, KC_PGUP, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______,
+ _______, KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, _______, KC_PGDN, TAB_L, TAB_R, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+ [_SYST] = LAYOUT_5x7(
+ // left hand // right hand
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______,
+ _______, KC_INS, KC_PAUS, _______, IAD, CAD, _______, _______, _______, _______, _______, _______, _______,
+ KC_CAPS, KC_NUM, KC_SCRL, _______, _______, _______, _______, _______, _______, KC_MSTP, KC_VOLD, KC_VOLU, KC_MUTE,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, QK_BOOT, EE_CLR,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+
+ [_MOUSE] = LAYOUT_5x7(
+ // left hand // right hand
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+};
+
+
+//void keyboard_post_init_user(void) {
+// // Customise these values to desired behaviour
+// debug_enable=true;
+// debug_matrix=true;
+// debug_keyboard=true;
+// debug_mouse=true;
+//}
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_NAV] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_SYST] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_MOUSE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+};
+#endif
+
+#ifdef OLED_ENABLE
+bool oled_task_user(void) {
+ // Host Keyboard Layer Status
+ oled_write_P(PSTR("Layer: "), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _BASE:
+ oled_write_P(PSTR("Base\n"), false);
+ break;
+ case _NAV:
+ oled_write_P(PSTR("Nav\n"), false);
+ break;
+ case _SYST:
+ oled_write_P(PSTR("System\n"), false);
+ break;
+ case _MOUSE:
+ oled_write_P(PSTR("Mouse\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+
+ // Host Keyboard LED Status
+ led_t led_state = host_keyboard_led_state();
+ oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
+
+ return false;
+}
+#endif
+
+#define imageWidth 128
+#define imageHeight 36
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_oled_5x7_tb/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/5x6_oled_5x7_tb/keymaps/vial/config.h
new file mode 100644
index 00000000000..3e26f11fe50
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_oled_5x7_tb/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x63, 0xA6, 0xCF, 0xBB, 0xC4, 0x84, 0x24, 0x23}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 5 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 5 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_oled_5x7_tb/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/5x6_oled_5x7_tb/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..f783d6f6047
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_oled_5x7_tb/keymaps/vial/keymap.c
@@ -0,0 +1,145 @@
+#include QMK_KEYBOARD_H
+#include "5x6_oled_5x7_tb.h"
+#define _BASE 0
+#define _NAV 1
+#define _SYST 2
+#define _MOUSE 3 //layer for mouse functions
+
+// Macros
+#define TASK LCTL(LSFT(KC_ESC))
+#define TAB_R LCTL(KC_TAB)
+#define TAB_L LCTL(LSFT(KC_TAB))
+#define TAB_RO LCTL(LSFT(KC_T))
+#define CAD LCTL(LALT(KC_DEL))
+#define IAD LCTL(LALT(KC_INS))
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_BASE] = LAYOUT_5x7(
+ // left hand // right hand
+ LT(_SYST, 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, 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_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(_SYST),
+ KC_APP, KC_LGUI, MO(_NAV), TG(_MOUSE),
+ KC_LALT, LT(_NAV, KC_SPC), KC_SPC,
+ KC_BTN3, KC_BTN1, KC_WFWD,
+ SNIPING, DRGSCRL, KC_BTN1, KC_WBAK),
+
+ [_NAV] = LAYOUT_5x7(
+ // left hand // right hand
+ KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC,
+ _______, _______, _______, LCTL(LSFT(KC_E)), _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______, _______,
+ _______, LCTL(KC_A), LCTL(KC_S), _______, _______, _______, KC_PGUP, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______,
+ _______, KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, _______, KC_PGDN, TAB_L, TAB_R, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+ [_SYST] = LAYOUT_5x7(
+ // left hand // right hand
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______,
+ _______, KC_INS, KC_PAUS, _______, IAD, CAD, _______, _______, _______, _______, _______, _______, _______,
+ KC_CAPS, KC_NUM, KC_SCRL, _______, _______, _______, _______, _______, _______, KC_MSTP, KC_VOLD, KC_VOLU, KC_MUTE,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, QK_BOOT, EE_CLR,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+
+ [_MOUSE] = LAYOUT_5x7(
+ // left hand // right hand
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+};
+
+
+//void keyboard_post_init_user(void) {
+// // Customise these values to desired behaviour
+// debug_enable=true;
+// debug_matrix=true;
+// debug_keyboard=true;
+// debug_mouse=true;
+//}
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_NAV] = { ENCODER_CCW_CW(RGB_HUD, RGB_HUI) },
+ [_SYST] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [_MOUSE] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD) },
+};
+#endif
+
+//#ifdef ENCODER_ENABLE
+//bool encoder_update_user(uint8_t index, bool clockwise) {
+// switch(get_highest_layer(layer_state|default_layer_state)) {
+// case _BASE:
+// case _SYST:
+// case _MOUSE:
+// if (index == 0) {
+// if (clockwise) {
+// tap_code(KC_VOLD);
+// } else {
+// tap_code(KC_VOLU);
+// }
+// }
+// break;
+// case _NAV:
+// if (index == 0) {
+// if (clockwise) {
+// tap_code(KC_PGUP);
+// } else {
+// tap_code(KC_PGDN);
+// }
+// }
+// break;
+// }
+// return false;
+//}
+//#endif
+
+#ifdef OLED_ENABLE
+bool oled_task_user(void) {
+ // Host Keyboard Layer Status
+ oled_write_P(PSTR("Layer: "), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _BASE:
+ oled_write_P(PSTR("Base\n"), false);
+ break;
+ case _NAV:
+ oled_write_P(PSTR("Nav\n"), false);
+ break;
+ case _SYST:
+ oled_write_P(PSTR("System\n"), false);
+ break;
+ case _MOUSE:
+ oled_write_P(PSTR("Mouse\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+
+ // Host Keyboard LED Status
+ led_t led_state = host_keyboard_led_state();
+ oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
+
+ return false;
+}
+#endif
+
+#define imageWidth 128
+#define imageHeight 36
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_oled_5x7_tb/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/5x6_oled_5x7_tb/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_oled_5x7_tb/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_oled_5x7_tb/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/5x6_oled_5x7_tb/keymaps/vial/vial.json
new file mode 100644
index 00000000000..9bde640a21f
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_oled_5x7_tb/keymaps/vial/vial.json
@@ -0,0 +1,214 @@
+{
+ "matrix": {
+ "rows": 12,
+ "cols": 7
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds Asymmetric 5x6_5x7",
+ "author": "https://wylderbuilds.com"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5",
+ "6,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5",
+ "7,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5.75
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,2",
+ "4,3",
+ {
+ "x": 9.75
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 13
+ },
+ "11,0"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 13
+ },
+ "11,1"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 10.75
+ },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 0.25
+ },
+ "11,2"
+ ],
+ [
+ {
+ "x": 11.25
+ },
+ "11,3"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -5.25,
+ "x": 6
+ },
+ "4,4",
+ "4,5"
+ ],
+ [
+ {
+ "r": -15,
+ "y": 2.75,
+ "x": 4.5
+ },
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "r": -13,
+ "x": 5.25
+ },
+ "5,2",
+ "5,3"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_oled_5x7_tb/mcuconf.h b/keyboards/handwired/wylderbuilds/trackball/5x6_oled_5x7_tb/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_oled_5x7_tb/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_oled_5x7_tb/rules.mk b/keyboards/handwired/wylderbuilds/trackball/5x6_oled_5x7_tb/rules.mk
new file mode 100644
index 00000000000..a529ef1dda5
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_oled_5x7_tb/rules.mk
@@ -0,0 +1,27 @@
+# Board, Bootloader and MCU
+MCU = RP2040
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+F_CPU = 8000000
+SPLIT_KEYBOARD = yes
+
+# Drivers for components
+OLED_ENABLE = yes
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+NKRO_ENABLE = yes # Enable N-Key Rollover
+OLED_DRIVER = SSD1306
+#OLED_DRIVER = no
+# Needed for OLED setup
+WPM_ENABLE = yes
+# RGB Light
+RGBLIGHT_ENABLE = no
+CONSOLE_ENABLE = no
+ENCODER_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+
+VIA_ENABLE = yes
+
+# Opt defs, comment out you're if not using OLED screen for the dactyl_manuform.
+OPT_DEFS += -DHAL_USE_I2C=TRUE
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_track/5x6_track.c b/keyboards/handwired/wylderbuilds/trackball/5x6_track/5x6_track.c
new file mode 100644
index 00000000000..d879acda036
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_track/5x6_track.c
@@ -0,0 +1 @@
+#include "5x6_track.h"
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_track/5x6_track.h b/keyboards/handwired/wylderbuilds/trackball/5x6_track/5x6_track.h
new file mode 100644
index 00000000000..49cf443a61a
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_track/5x6_track.h
@@ -0,0 +1,57 @@
+#pragma once
+
+#include "trackball.h"
+
+#define XXX KC_NO
+
+// MINI AND THREE KEY
+#define LAYOUT_5x6( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, L45, R40, R20, R21, R22, R23, R24, R25, \
+ L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \
+ L42, L43, R42, R43, \
+ L53, L54, L55, R50, R51, R52, \
+ L51, L52 \
+) { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { L30, L31, L32, L33, L34, L35 }, \
+ { XXX, XXX, L42, L43, XXX, L45 }, \
+ { XXX, L51, L52, L53, L54, L55 }, \
+\
+ { R00, R01, R02, R03, R04, R05 }, \
+ { R10, R11, R12, R13, R14, R15 }, \
+ { R20, R21, R22, R23, R24, R25 }, \
+ { R30, R31, R32, R33, R34, R35 }, \
+ { R40, XXX, R42, R43, XXX, XXX }, \
+ { R50, R51, R52, XXX, XXX, XXX } \
+}
+
+/* STANDARD LAYOUT WITH SKREE CLAW CONFIG
+#define LAYOUT_5x6( \
+ L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, \
+ L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, \
+ L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, \
+ L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, \
+ L43, L44, R42, R43, \
+ L53, L52, R56, \
+ L55, L51, R55, \
+ L54, L50, R53, R54 \
+) { \
+ { XXX, L01, L02, L03, L04, L05, L06 }, \
+ { XXX, L11, L12, L13, L14, L15, L16 }, \
+ { XXX, L21, L22, L23, L24, L25, L26 }, \
+ { XXX, L31, L32, L33, L34, L35, L36 }, \
+ { XXX, XXX, L43, L44, XXX, XXX, XXX }, \
+ { L50, L51, L52, L53, L54, L55, XXX }, \
+\
+ { R00, R01, R02, R03, R04, R05, XXX }, \
+ { R10, R11, R12, R13, R14, R15, XXX }, \
+ { R20, R21, R22, R23, R24, R25, XXX }, \
+ { R30, R31, R32, R33, R34, R35, XXX }, \
+ { XXX, XXX, R42, R43, XXX, XXX, XXX }, \
+ { XXX, XXX, XXX, R53, R54, R55, R56 } \
+}
+*/
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_track/config.h b/keyboards/handwired/wylderbuilds/trackball/5x6_track/config.h
new file mode 100644
index 00000000000..825cda17d66
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_track/config.h
@@ -0,0 +1,144 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+//#include "config_common.h"
+// Basic Config
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+
+
+#define USE_SERIAL
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+#define SPLIT_LAYER_STATE_ENABLE
+
+
+#define USE_SERIAL
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+#define SERIAL_USART_PIN_SWAP
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Columns are doubled-up
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 6
+
+#define MATRIX_COL_PINS { GP7, GP6, GP5, GP4, GP3, GP2 }
+//#define MATRIX_COL_PINS_RIGHT { GP8, GP7, GP6, GP5, GP4, GP3, GP2 }
+#define MATRIX_ROW_PINS { GP14, GP13, GP12, GP11, GP10, GP9 }
+//#define MATRIX_ROW_PINS { GP9, GP1, GP12, GP11, GP10, GP9 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define SPLIT_POINTING_ENABLE
+#define ROTATIONAL_TRANSFORM_ANGLE -25
+#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_RIGHT
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x02
+
+#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+#define POINTING_DEVICE_AUTO_MOUSE_ENABLE
+// only required if not setting mouse layer elsewhere
+#define AUTO_MOUSE_DEFAULT_LAYER 3
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 4
+
+//#define CHARYBDIS_MINIMUM_DEFAULT_DPI 1200
+//#define CHARYBDIS_DEFAULT_DPI_CONFIG_STEP 400
+//#define CHARYBDIS_MINIMUM_SNIPING_DPI 400
+//#define CHARYBDIS_SNIPING_DPI_CONFIG_STEP 200
+
+//// Rotary Encoder ////
+//#define ENCODERS_PAD_A { }
+//#define ENCODERS_PAD_B { }
+//#define ENCODER_RESOLUTIONS { }
+
+#ifdef ENCODER_ENABLE
+#define ENCODERS_PAD_A { GP27 }
+#define ENCODERS_PAD_B { GP22 }
+#define ENCODER_RESOLUTIONS { 2 }
+#define ENCODERS_PAD_A_RIGHT { GP27 }
+#define ENCODERS_PAD_B_RIGHT { GP22 }
+#define ENCODER_RESOLUTIONS_RIGHT { 2 }
+#endif
+
+//// Sensor Notes ////
+//// Pi Pico pins ////
+// 3V3 -- Power (not 3v3_EN!)
+// GP21 -- CS pin
+// GP20 -- MISO pin
+// GP19 -- MOSI pin
+// GP18 -- SCK pin clock
+// GND -- GND
+
+// WS2812 RGB LED strip input and number of LEDs
+//#ifdef RGBLIGHT_ENABLE
+//#define RGB_DI_PIN GP17
+//#define RGBLED_NUM 34
+////#define DRIVER_LED_TOTAL 34
+//#define RGBLED_SPLIT { 17, 17 }
+//#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+//#define NOP_FUDGE 0.4
+//#endif
+
+//// OLED Pins and Driver
+// #define SPLIT_LED_ENABLE
+
+//// OLED Pins and Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD0
+#define I2C1_SDA_PIN GP16
+#define I2C1_SCL_PIN GP17
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_MODS_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+#ifdef RGB_MATRIX_ENABLE
+
+# define RGB_MATRIX_LED_COUNT 60
+# define WS2812_PIO_USE_PIO1 // Force the usage of PIO1 peripheral, by default the WS2812 implementation uses the PIO0 peripheral
+# define SPLIT_TRANSPORT_MIRROR
+# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_REACTIVE // Sets the default mode, if none has been set
+# define RGB_MATRIX_DEFAULT_HUE 33 // Sets the default hue value, if none has been set
+# define RGB_MATRIX_DEFAULT_SAT 255 // Sets the default saturation value, if none has been set
+# define RGB_MATRIX_DEFAULT_SPD 50
+# define WS2812_DI_PIN GP28 // can use trackball jack if not used
+# define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
+# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# define RGB_MATRIX_KEYPRESSES
+# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define NOP_FUDGE 0.4 // may not be needed if ws driver loaded
+#endif
+
+// Misc settings
+// 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
+// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_track/info.json b/keyboards/handwired/wylderbuilds/trackball/5x6_track/info.json
new file mode 100644
index 00000000000..ef65bfe38af
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_track/info.json
@@ -0,0 +1,464 @@
+{
+ "keyboard_name": "Dactyl-Manuform 5x6 Track (5x6_track)",
+ "manufacturer": "Wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "bootloader": "rp2040",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0155",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 12,
+ "cols": 6
+ },
+ "ws2812": {
+ "pin": "GP28",
+ "driver": "vendor"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true,
+ "encoder": true
+ },
+ "matrix_size": {
+ "cols": 6,
+ "rows": 12
+ },
+ "rgb_matrix": {
+ "driver": "ws2812",
+ "max_brightness": 120,
+ "animations": {
+ "alpha_mods": true,
+ "breathing": true,
+ "colorband_pinwheel_sat": true,
+ "colorband_pinwheel_val": true,
+ "colorband_sat": true,
+ "colorband_spiral_sat": true,
+ "colorband_spiral_val": true,
+ "colorband_val": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_out_in": true,
+ "cycle_out_in_dual": true,
+ "cycle_pinwheel": true,
+ "cycle_spiral": true,
+ "cycle_up_down": true,
+ "digital_rain": true,
+ "dual_beacon": true,
+ "gradient_left_right": true,
+ "gradient_up_down": true,
+ "hue_breathing": true,
+ "hue_pendulum": true,
+ "hue_wave": true,
+ "jellybean_raindrops": true,
+ "pixel_flow": true,
+ "pixel_fractal": true,
+ "pixel_rain": true,
+ "rainbow_beacon": true,
+ "rainbow_moving_chevron": true,
+ "rainbow_pinwheels": true,
+ "raindrops": true,
+ "solid_color": true,
+ "solid_reactive": true,
+ "solid_reactive_cross": true,
+ "solid_reactive_nexus": true,
+ "solid_reactive_simple": true,
+ "solid_reactive_wide": true,
+ "solid_splash": true,
+ "splash": true,
+ "typing_heatmap": true
+ },
+ "split_count": [
+ 31,
+ 29
+ ],
+ "layout": [
+ {"flags": 4, "matrix": [0, 5], "x": 79, "y": 0},
+ {"flags": 4, "matrix": [1, 5], "x": 79, "y": 11},
+ {"flags": 4, "matrix": [2, 5], "x": 91, "y": 25},
+ {"flags": 4, "matrix": [3, 5], "x": 79, "y": 39},
+ {"flags": 4, "matrix": [0, 4], "x": 68, "y": 0},
+ {"flags": 4, "matrix": [1, 4], "x": 68, "y": 11},
+ {"flags": 4, "matrix": [2, 4], "x": 79, "y": 25},
+ {"flags": 4, "matrix": [3, 4], "x": 68, "y": 39},
+ {"flags": 4, "matrix": [0, 3], "x": 57, "y": 0},
+ {"flags": 4, "matrix": [1, 3], "x": 57, "y": 11},
+ {"flags": 4, "matrix": [2, 3], "x": 57, "y": 25},
+ {"flags": 4, "matrix": [3, 3], "x": 57, "y": 39},
+ {"flags": 4, "matrix": [4, 3], "x": 34, "y": 53},
+ {"flags": 4, "matrix": [0, 2], "x": 45, "y": 0},
+ {"flags": 4, "matrix": [1, 2], "x": 45, "y": 11},
+ {"flags": 4, "matrix": [2, 2], "x": 45, "y": 25},
+ {"flags": 4, "matrix": [3, 2], "x": 45, "y": 39},
+ {"flags": 4, "matrix": [4, 2], "x": 34, "y": 53},
+ {"flags": 4, "matrix": [0, 1], "x": 34, "y": 4},
+ {"flags": 4, "matrix": [1, 1], "x": 34, "y": 18},
+ {"flags": 4, "matrix": [2, 1], "x": 11, "y": 32},
+ {"flags": 4, "matrix": [3, 1], "x": 11, "y": 46},
+ {"flags": 4, "matrix": [0, 0], "x": 23, "y": 4},
+ {"flags": 4, "matrix": [1, 0], "x": 23, "y": 18},
+ {"flags": 4, "matrix": [2, 0], "x": 11, "y": 32},
+ {"flags": 4, "matrix": [3, 0], "x": 11, "y": 46},
+ {"flags": 4, "matrix": [5, 3], "x": 71, "y": 59},
+ {"flags": 4, "matrix": [5, 4], "x": 71, "y": 59},
+ {"flags": 4, "matrix": [5, 5], "x": 71, "y": 59},
+ {"flags": 4, "matrix": [5, 2], "x": 82, "y": 71},
+ {"flags": 4, "matrix": [5, 1], "x": 82, "y": 71},
+ {"flags": 4, "matrix": [6, 0], "x": 167, "y": 0},
+ {"flags": 4, "matrix": [7, 0], "x": 167, "y": 11},
+ {"flags": 4, "matrix": [8, 0], "x": 122, "y": 25},
+ {"flags": 4, "matrix": [9, 0], "x": 167, "y": 39},
+ {"flags": 4, "matrix": [6, 1], "x": 179, "y": 0},
+ {"flags": 4, "matrix": [7, 1], "x": 179, "y": 11},
+ {"flags": 4, "matrix": [8, 1], "x": 145, "y": 25},
+ {"flags": 4, "matrix": [9, 1], "x": 179, "y": 39},
+ {"flags": 4, "matrix": [6, 2], "x": 190, "y": 0},
+ {"flags": 4, "matrix": [7, 2], "x": 190, "y": 11},
+ {"flags": 4, "matrix": [8, 2], "x": 156, "y": 25},
+ {"flags": 4, "matrix": [9, 2], "x": 190, "y": 39},
+ {"flags": 4, "matrix": [10, 2], "x": 145, "y": 53},
+ {"flags": 4, "matrix": [6, 3], "x": 201, "y": 0},
+ {"flags": 4, "matrix": [7, 3], "x": 201, "y": 11},
+ {"flags": 4, "matrix": [8, 3], "x": 167, "y": 25},
+ {"flags": 4, "matrix": [9, 3], "x": 201, "y": 39},
+ {"flags": 4, "matrix": [10, 3], "x": 145, "y": 53},
+ {"flags": 4, "matrix": [6, 4], "x": 213, "y": 4},
+ {"flags": 4, "matrix": [7, 4], "x": 213, "y": 18},
+ {"flags": 4, "matrix": [8, 4], "x": 167, "y": 32},
+ {"flags": 4, "matrix": [9, 4], "x": 167, "y": 46},
+ {"flags": 4, "matrix": [6, 5], "x": 224, "y": 4},
+ {"flags": 4, "matrix": [7, 5], "x": 224, "y": 18},
+ {"flags": 4, "matrix": [8, 5], "x": 167, "y": 32},
+ {"flags": 4, "matrix": [9, 5], "x": 167, "y": 46},
+ {"flags": 4, "matrix": [11, 2], "x": 85, "y": 59},
+ {"flags": 4, "matrix": [11, 1], "x": 85, "y": 59},
+ {"flags": 4, "matrix": [11, 0], "x": 85, "y": 59}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_5x6": {
+ "layout": [
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "6,0",
+ "x": 12.75,
+ "y": 0
+ },
+ {
+ "label": "6,1",
+ "x": 13.75,
+ "y": 0
+ },
+ {
+ "label": "6,2",
+ "x": 14.75,
+ "y": 0
+ },
+ {
+ "label": "6,3",
+ "x": 15.75,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "6,4",
+ "x": 16.75,
+ "y": 0.5
+ },
+ {
+ "label": "6,5",
+ "x": 17.75,
+ "y": 0.5
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "7,0",
+ "x": 12.75,
+ "y": 1
+ },
+ {
+ "label": "7,1",
+ "x": 13.75,
+ "y": 1
+ },
+ {
+ "label": "7,2",
+ "x": 14.75,
+ "y": 1
+ },
+ {
+ "label": "7,3",
+ "x": 15.75,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "7,4",
+ "x": 16.75,
+ "y": 1.5
+ },
+ {
+ "label": "7,5",
+ "x": 17.75,
+ "y": 1.5
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "4,5",
+ "x": 7.75,
+ "y": 2
+ },
+ {
+ "label": "10,0",
+ "x": 11,
+ "y": 2
+ },
+ {
+ "label": "8,0",
+ "x": 12.75,
+ "y": 2
+ },
+ {
+ "label": "8,1",
+ "x": 13.75,
+ "y": 2
+ },
+ {
+ "label": "8,2",
+ "x": 14.75,
+ "y": 2
+ },
+ {
+ "label": "8,3",
+ "x": 15.75,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "8,4",
+ "x": 16.75,
+ "y": 2.5
+ },
+ {
+ "label": "8,5",
+ "x": 17.75,
+ "y": 2.5
+ },
+ {
+ "label": "3,2",
+ "x": 3,
+ "y": 3
+ },
+ {
+ "label": "3,3",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "3,4",
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "3,5",
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "9,0",
+ "x": 12.75,
+ "y": 3
+ },
+ {
+ "label": "9,1",
+ "x": 13.75,
+ "y": 3
+ },
+ {
+ "label": "9,2",
+ "x": 14.75,
+ "y": 3
+ },
+ {
+ "label": "9,3",
+ "x": 15.75,
+ "y": 3
+ },
+ {
+ "label": "3,0",
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "label": "3,1",
+ "x": 2,
+ "y": 3.5
+ },
+ {
+ "label": "9,4",
+ "x": 16.75,
+ "y": 3.5
+ },
+ {
+ "label": "9,5",
+ "x": 17.75,
+ "y": 3.5
+ },
+ {
+ "label": "4,2",
+ "x": 3,
+ "y": 4
+ },
+ {
+ "label": "4,3",
+ "x": 4,
+ "y": 4
+ },
+ {
+ "label": "10,2",
+ "x": 14.75,
+ "y": 4
+ },
+ {
+ "label": "10,3",
+ "x": 15.75,
+ "y": 4
+ },
+ {
+ "label": "5,3",
+ "x": 6.25,
+ "y": 4.25
+ },
+ {
+ "label": "5,4",
+ "x": 7.25,
+ "y": 4.25
+ },
+ {
+ "label": "5,5",
+ "x": 8.25,
+ "y": 4.25
+ },
+ {
+ "label": "11,0",
+ "x": 10.5,
+ "y": 4.25
+ },
+ {
+ "label": "11,1",
+ "x": 11.5,
+ "y": 4.25
+ },
+ {
+ "label": "11,2",
+ "x": 12.5,
+ "y": 4.25
+ },
+ {
+ "label": "5,1",
+ "x": 7.25,
+ "y": 5.25
+ },
+ {
+ "label": "5,2",
+ "x": 8.25,
+ "y": 5.25
+ }
+ ]
+ }
+ }
+}
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_track/keymaps/default/keymap.c b/keyboards/handwired/wylderbuilds/trackball/5x6_track/keymaps/default/keymap.c
new file mode 100644
index 00000000000..50288c38948
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_track/keymaps/default/keymap.c
@@ -0,0 +1,118 @@
+#include QMK_KEYBOARD_H
+
+#define _BASE 0
+#define _NAV 1
+#define _SYST 2
+#define _MOUSE 3 //layer for mouse functions
+
+// Macros
+#define TASK LCTL(LSFT(KC_ESC))
+#define TAB_R LCTL(KC_TAB)
+#define TAB_L LCTL(LSFT(KC_TAB))
+#define TAB_RO LCTL(LSFT(KC_T))
+#define CAD LCTL(LALT(KC_DEL))
+#define IAD LCTL(LALT(KC_INS))
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_BASE] = LAYOUT_5x7(
+ // left hand // right hand
+ LT(_SYST, 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, 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_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(_SYST),
+ KC_APP, KC_LGUI, MO(_NAV), TG(_MOUSE),
+ KC_LALT, LT(_NAV, KC_SPC), KC_SPC,
+ KC_BTN3, KC_BTN1, KC_WFWD,
+ _______, _______, _______, KC_WBAK),
+
+ [_NAV] = LAYOUT_5x7(
+ // left hand // right hand
+ KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC,
+ _______, _______, _______, LCTL(LSFT(KC_E)), _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______, _______,
+ _______, LCTL(KC_A), LCTL(KC_S), _______, _______, _______, KC_PGUP, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______,
+ _______, KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, _______, KC_PGDN, TAB_L, TAB_R, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+ [_SYST] = LAYOUT_5x7(
+ // left hand // right hand
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______,
+ _______, KC_INS, KC_PAUS, _______, IAD, CAD, _______, _______, _______, _______, _______, _______, _______,
+ KC_CAPS, KC_NUM, KC_SCRL, _______, _______, _______, _______, _______, _______, KC_MSTP, KC_VOLD, KC_VOLU, KC_MUTE,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, QK_BOOT, EE_CLR,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+
+ [_MOUSE] = LAYOUT_5x7(
+ // left hand // right hand
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+};
+
+
+//void keyboard_post_init_user(void) {
+// // Customise these values to desired behaviour
+// debug_enable=true;
+// debug_matrix=true;
+// debug_keyboard=true;
+// debug_mouse=true;
+//}
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_NAV] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_SYST] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_MOUSE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+};
+#endif
+
+#ifdef OLED_ENABLE
+bool oled_task_user(void) {
+ // Host Keyboard Layer Status
+ oled_write_P(PSTR("Layer: "), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _BASE:
+ oled_write_P(PSTR("Base\n"), false);
+ break;
+ case _NAV:
+ oled_write_P(PSTR("Nav\n"), false);
+ break;
+ case _SYST:
+ oled_write_P(PSTR("System\n"), false);
+ break;
+ case _MOUSE:
+ oled_write_P(PSTR("Mouse\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+
+ // Host Keyboard LED Status
+ led_t led_state = host_keyboard_led_state();
+ oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
+
+ return false;
+}
+#endif
+
+#define imageWidth 128
+#define imageHeight 36
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_track/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/5x6_track/keymaps/vial/config.h
new file mode 100644
index 00000000000..b069940e73a
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_track/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x5A, 0xD7, 0xFC, 0x1B, 0x2E, 0xD2, 0x63, 0x01}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 5 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 5 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_track/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/5x6_track/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..2c80a03a015
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_track/keymaps/vial/keymap.c
@@ -0,0 +1,315 @@
+#include QMK_KEYBOARD_H
+#include "5x6_track.h"
+
+//#define _WORKMAN 0
+#define _QWERTY 0
+//#define _COLEMAK 1
+#define _LOWER 1
+#define _RAISE 2
+#define _MOUSE 3
+
+#define QWERTY MO(_QWERTY)
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+//#define TO_COLEMAK TO(_COLEMAK)
+//#define TO_QWERTY TO(_QWERTY)
+
+enum wyld_keycodes {
+ WYLD_AUTO_MS_TOG = SAFE_RANGE
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_QWERTY] = LAYOUT_5x6(
+ KC_ESC , 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_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_MINS,
+ KC_LSFT, KC_A , KC_S , KC_D , KC_F , KC_G , KC_MUTE, KC_HOME, 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_BSLS,
+ KC_LBRC,KC_RBRC, KC_PLUS,KC_EQL,
+ RAISE, KC_SPC, KC_BSPC, KC_LALT, KC_ENT, LOWER,
+ KC_TAB, KC_HOME
+ ),
+
+ [_LOWER] = LAYOUT_5x6(
+ KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,
+ _______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, _______, _______, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,KC_VOLD,KC_VOLU,
+ _______,RGB_VAI,RGB_SAI,RGB_HUI,RGB_MOD,RGB_TOG, _______,_______,_______,_______,_______,QK_BOOT,
+ _______,_______, KC_RALT ,KC_RCTL,
+ _______,_______,_______, _______,_______,_______,
+ _______,_______
+ ),
+ [_RAISE] = LAYOUT_5x6(
+ KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL,
+ WYLD_AUTO_MS_TOG,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,QK_BOOT,KC_PLUS,
+ _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, _______, _______, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,
+ QK_BOOT,DPI_RMOD,DPI_MOD,DPI_RST,SNIPING,DRGSCRL, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS,
+ _______,_______, KC_INS, KC_P0,
+ _______,KC_BTN1,KC_BTN2, _______,_______,_______,
+ KC_BTN3,_______
+ ),
+
+ [_MOUSE] = LAYOUT_5x6(
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______, _______, _______,KC_BTN1,KC_BTN3,KC_BTN2,_______,_______,
+ _______,_______,_______,_______,SNIPING,DRGSCRL, _______,_______,_______,_______,_______,_______,
+ _______,_______, _______ ,_______,
+ _______,KC_BTN1,KC_BTN2, _______,_______,_______,
+ KC_BTN3,_______
+ )
+};
+
+#ifdef POINTING_DEVICE_COMBINED
+static void check_drag(report_mouse_t* mouse_report) {
+ static int16_t scroll_buffer_x = 0;
+ static int16_t scroll_buffer_y = 0;
+
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_X
+ scroll_buffer_x -= mouse_report->x;
+# else
+ scroll_buffer_x += mouse_report->x;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_X
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ scroll_buffer_y -= mouse_report->y;
+# else
+ scroll_buffer_y += mouse_report->y;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ mouse_report->x = 0;
+ mouse_report->y = 0;
+ if (abs(scroll_buffer_x) > 6) {
+ mouse_report->h = scroll_buffer_x > 0 ? 1 : -1;
+ scroll_buffer_x = 0;
+ }
+ if (abs(scroll_buffer_y) > 6) {
+ mouse_report->v = scroll_buffer_y > 0 ? 1 : -1;
+ scroll_buffer_y = 0;
+ }
+}
+
+report_mouse_t pointing_device_task_combined_user(report_mouse_t left_report, report_mouse_t right_report) {
+ check_drag_scroll(&left_report); // updated in trackball.c
+ return pointing_device_combine_reports(left_report, right_report);
+}
+#endif
+
+#ifdef POINTING_DEVICE_AUTO_MOUSE_ENABLE
+void pointing_device_init_user(void) {
+ set_auto_mouse_enable(true);
+ set_auto_mouse_enable(false);
+}
+
+// Ensures only the pointing device activates mouse layer on dual track builds
+// And also prevents dragscroll from activating it
+bool auto_mouse_activation(report_mouse_t mouse_report) {
+ return mouse_report.x != 0 || mouse_report.y != 0 || mouse_report.buttons;
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case WYLD_AUTO_MS_TOG:
+ if (record->event.pressed) {
+ set_auto_mouse_enable(!get_auto_mouse_enable());
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+#endif
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_QWERTY] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_LOWER] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_RAISE] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_MOUSE] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+//};
+// [_QWERTY] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+// [_LOWER] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+// [_RAISE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+// [_MOUSE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+};
+#endif
+
+//#ifdef ENCODER_ENABLE
+//bool encoder_update_user(uint8_t index, bool clockwise) {
+//===
+// if (clockwise) {
+// tap_code(KC_VOLD);
+// } else {
+// tap_code(KC_VOLU);
+// }
+//
+// return false;
+//}
+//#endif
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_left()) {
+ return OLED_ROTATION_270;
+ }
+#ifdef POINTING_DEVICE_ENABLE
+ return OLED_ROTATION_270;
+#else
+ return OLED_ROTATION_0;
+#endif
+}
+
+#ifndef POINTING_DEVICE_ENABLE
+static const char PROGMEM wylderbuilds[] = {
+ // 'dark wylderbuilds_oled_name', 128x32
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40,
+ 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x20, 0x60,
+ 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x60, 0x60,
+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0,
+ 0x00, 0x00, 0xc1, 0xc1, 0x01, 0x01, 0xf1, 0x11, 0x01, 0x01, 0x01, 0x31, 0x60, 0xc0, 0x80, 0xc0,
+ 0xf0, 0x10, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0,
+ 0x00, 0x01, 0x03, 0x9e, 0xf8, 0x00, 0x00, 0x20, 0xe0, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0xf0, 0x30, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x98, 0xf0, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x00, 0x70, 0xfe, 0x03, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00,
+ 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x11, 0xf1, 0x11, 0x33, 0x63, 0xc3,
+ 0x83, 0x01, 0x01, 0xc1, 0xe1, 0x31, 0x11, 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,
+ 0x1f, 0x7c, 0xff, 0x07, 0x7c, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7f, 0xff,
+ 0x60, 0x30, 0x18, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xf2, 0x82, 0x02, 0x80, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x7f, 0x0e, 0x1b, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0x81, 0xc1, 0x63,
+ 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00,
+ 0x00, 0x1f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x60, 0x30, 0x1f,
+ 0x07, 0x00, 0x00, 0x01, 0x43, 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static void render_wylderbuilds(void) {
+ oled_write_raw_P(wylderbuilds, sizeof(wylderbuilds));
+}
+
+#endif
+
+static char layer_names[5][8] = {
+ " BASE\n",
+ "LOWER\n",
+ "RAISE\n",
+ "MOUSE\n",
+ " XTRA\n"
+ };
+
+bool oled_task_user(void) {
+ char* layer_name = layer_names[get_highest_layer(layer_state)];
+
+ if (is_keyboard_left()) {
+ // oled_write_P(PSTR("Layer\n"), false);
+ oled_set_cursor(0, 3);
+ oled_write_P(PSTR(layer_name), false);
+
+ oled_set_cursor(2, 6);
+ oled_write_P(PSTR("WPM "), false);
+ oled_set_cursor(2, 7);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 9);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+ } else {
+ // write WPM to right OLED
+#ifdef POINTING_DEVICE_ENABLE
+ char* mode = get_mouse_mode_string();
+ uint16_t dpi = get_current_dpi();
+ oled_set_cursor(2, 3);
+ oled_write_P(PSTR("DPI "), false);
+ oled_set_cursor(0, 5);
+ oled_write_P(PSTR(get_u16_str(dpi, ' ')), false);
+ oled_set_cursor(0, 9);
+ oled_write(PSTR(mode), false);
+#else
+ oled_set_cursor(0, 0);
+ render_wylderbuilds();
+ oled_scroll_left();
+#endif
+ }
+
+ return false;
+}
+#endif
+
+
+#ifdef RGBLIGHT_ENABLE
+const rgblight_segment_t PROGMEM querty_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {12, 3, HSV_RED}, // Light 4 LEDs, starting with LED 6
+ {21, 3, HSV_RED} // Light 4 LEDs, starting with LED 6
+);
+//const rgblight_segment_t PROGMEM colemak_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+// {15, 3, HSV_PURPLE}, // Light 4 LEDs, starting with LED 6
+// {33, 3, HSV_PURPLE} // Light 4 LEDs, starting with LED 6
+//);
+const rgblight_segment_t PROGMEM lower_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {12, 3, HSV_BLUE},
+ {21, 3, HSV_BLUE}
+);
+const rgblight_segment_t PROGMEM raise_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {12, 3, HSV_YELLOW},
+ {21, 3, HSV_YELLOW}
+);
+const rgblight_segment_t PROGMEM mouse_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {12, 3, HSV_GREEN},
+ {21, 3, HSV_GREEN}
+);
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ querty_layer, // Overrides caps lock layer
+// colemak_layer,
+ lower_layer, // Overrides other layers
+ raise_layer, // Overrides other layers
+ mouse_layer
+);
+
+layer_state_t default_layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(0, layer_state_cmp(state, _QWERTY));
+ return state;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+// rgblight_set_layer_state(1, layer_state_cmp(state, _COLEMAK));
+ 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, _MOUSE));
+ return state;
+}
+#endif
+
+
+void keyboard_post_init_user(void) {
+#ifdef RGBLIGHT_ENABLE
+ rgblight_layers = my_rgb_layers;
+#endif
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+ debug_keyboard=true;
+ debug_mouse=true;
+#else
+ debug_enable=false;
+ debug_matrix=false;
+ debug_keyboard=false;
+ debug_mouse=false;
+#endif
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_track/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/5x6_track/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..d1c35cfd60d
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_track/keymaps/vial/rules.mk
@@ -0,0 +1,9 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_track/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/5x6_track/keymaps/vial/vial.json
new file mode 100644
index 00000000000..dcfe0ea1044
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_track/keymaps/vial/vial.json
@@ -0,0 +1,194 @@
+{
+ "vendorId": "0x9953",
+ "productId": "0x0155",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 12,
+ "cols": 6
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 5x6 Wyld Track Mini"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 0.25
+ },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 1.25
+ },
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 0.25
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 0.75
+ },
+ "4,5",
+ {
+ "x": 2.25
+ },
+ "10,0",
+ {
+ "x": 0.75
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5.75
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,2",
+ "4,3",
+ {
+ "x": 9.75
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 6.25
+ },
+ "5,3",
+ "5,4",
+ "5,5",
+ {
+ "x": 1.25
+ },
+ "11,0",
+ "11,1",
+ "11,2"
+ ],
+ [
+ {
+ "x": 7.25
+ },
+ "5,1",
+ "5,2"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_track/mcuconf.h b/keyboards/handwired/wylderbuilds/trackball/5x6_track/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_track/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_track/rules.mk b/keyboards/handwired/wylderbuilds/trackball/5x6_track/rules.mk
new file mode 100644
index 00000000000..c05992e7719
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_track/rules.mk
@@ -0,0 +1,24 @@
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+#RGBLIGHT_ENABLE = no
+#MOUSEKEY_ENABLE = yes
+CONSOLE_ENABLE = no
+#COMMAND_ENABLE = yes
+#BOOTMAGIC_ENABLE = yes
+#NKRO_ENABLE = yes # Enable N-Key Rollover
+
+RGBLIGHT_ENABLE = no
+#WS2812_DRIVER = vendor
+#SLEEP_LED_ENABLE = no
+
+OLED_ENABLE = yes
+#OLED_DRIVER = SSD1306
+WPM_ENABLE = yes
+#EXTRAKEY_ENABLE = yes # Audio control and System control
+
+#ENCODER_ENABLE = no
+ENCODER_MAP_ENABLE = yes
+
+OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_track/wylderbuilds-5x6-mini-left-3-key-right-dual-encoders.json b/keyboards/handwired/wylderbuilds/trackball/5x6_track/wylderbuilds-5x6-mini-left-3-key-right-dual-encoders.json
new file mode 100644
index 00000000000..fa9642e9754
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_track/wylderbuilds-5x6-mini-left-3-key-right-dual-encoders.json
@@ -0,0 +1,183 @@
+[
+ {
+ "name": "Wylderbuilds 5x6 Mini Left 3-key right dual encoders"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 0.25
+ },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 1.25
+ },
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 0.25
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 0.75
+ },
+ "4,5",
+ {
+ "x": 2.25
+ },
+ "10,0",
+ {
+ "x": 0.75
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5.75
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,2",
+ "4,3",
+ {
+ "x": 9.75
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 6.25
+ },
+ "5,3",
+ "5,4",
+ "5,5",
+ {
+ "x": 1.25
+ },
+ "11,0",
+ "11,1",
+ "11,2"
+ ],
+ [
+ {
+ "x": 7.25
+ },
+ "5,1",
+ "5,2"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_track/wylderbuilds-5x6-standard-track-skree.json b/keyboards/handwired/wylderbuilds/trackball/5x6_track/wylderbuilds-5x6-standard-track-skree.json
new file mode 100644
index 00000000000..5e07b5e464c
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_track/wylderbuilds-5x6-standard-track-skree.json
@@ -0,0 +1,178 @@
+[
+ {
+ "name": "Wylderbuilds 5x6 Standard Track Skree Tail"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,1",
+ "0,2",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,1",
+ "1,2",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,3",
+ "2,4",
+ {
+ "n": true
+ },
+ "2,5",
+ "2,6",
+ {
+ "x": 5.75
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,1",
+ "2,2",
+ {
+ "x": 13.75
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ {
+ "x": 5.75
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,1",
+ "3,2",
+ {
+ "x": 13.75
+ },
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,3",
+ "4,4",
+ {
+ "x": 9.75
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 5.5
+ },
+ "5,3",
+ "5,2",
+ {
+ "x": 4.75
+ },
+ "11,6"
+ ],
+ [
+ {
+ "x": 6
+ },
+ "5,5",
+ "5,1",
+ {
+ "x": 4.25
+ },
+ "11,5"
+ ],
+ [
+ {
+ "x": 6.75
+ },
+ "5,4",
+ "5,0",
+ {
+ "x": 2.5
+ },
+ "11,3",
+ "11,4"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_track/wylderbuilds-5x6-standard-track.json b/keyboards/handwired/wylderbuilds/trackball/5x6_track/wylderbuilds-5x6-standard-track.json
new file mode 100644
index 00000000000..30303ad8658
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_track/wylderbuilds-5x6-standard-track.json
@@ -0,0 +1,196 @@
+[
+ {
+ "name": "Wylderbuilds 5x6 Standard Track"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5.75
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,2",
+ "4,3",
+ {
+ "x": 9.75
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 12.25
+ },
+ "11,0"
+ ],
+ [
+ {
+ "x": 10.25
+ },
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne",
+ "11,1"
+ ],
+ [
+ {
+ "x": 10.75
+ },
+ "11,2",
+ {
+ "x": 0.5
+ },
+ "11,3"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -3.75,
+ "x": 6
+ },
+ "4,4",
+ "4,5"
+ ],
+ [
+ {
+ "x": 6.25
+ },
+ "5,4",
+ "5,5",
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne"
+ ],
+ [
+ {
+ "x": 6.75
+ },
+ "5,2",
+ {
+ "x": 1
+ },
+ "5,3"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_track/wylderbuilds-5x6-standard-wyld-encoders.json b/keyboards/handwired/wylderbuilds/trackball/5x6_track/wylderbuilds-5x6-standard-wyld-encoders.json
new file mode 100644
index 00000000000..905638baa77
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_track/wylderbuilds-5x6-standard-wyld-encoders.json
@@ -0,0 +1,199 @@
+[
+ {
+ "name": "Wylderbuilds 5x6 Standard Wyld Encoders"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 0.25
+ },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 1.25
+ },
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 0.25
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 0.75
+ },
+ "5,1",
+ {
+ "x": 2.25
+ },
+ "11,3",
+ {
+ "x": 0.75
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5.75
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,2",
+ "4,3",
+ {
+ "x": 9.75
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 6
+ },
+ "4,4",
+ "4,5",
+ {
+ "x": 4.75
+ },
+ "11,2"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 11.75
+ },
+ "11,1"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 6.25
+ },
+ "5,4",
+ "5,5",
+ {
+ "x": 2.5
+ },
+ "11,0"
+ ],
+ [
+ {
+ "x": 6.75
+ },
+ "5,2",
+ "5,3"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_track/wylderbuilds-5x6-wyld-track-encoder-custom.json b/keyboards/handwired/wylderbuilds/trackball/5x6_track/wylderbuilds-5x6-wyld-track-encoder-custom.json
new file mode 100644
index 00000000000..865931adccd
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_track/wylderbuilds-5x6-wyld-track-encoder-custom.json
@@ -0,0 +1,185 @@
+[
+ {
+ "name": "Wylderbuilds 5x6 Wyld Track Encoder Custom"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 0.25
+ },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 1.25
+ },
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 0.25
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 0.75
+ },
+ "4,5",
+ {
+ "x": 2.25
+ },
+ "10,0",
+ {
+ "x": 0.75
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5.75
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,2",
+ "4,3",
+ "4,4",
+ {
+ "x": 7.75
+ },
+ "10,1",
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 6.25
+ },
+ "5,3",
+ "5,4",
+ "5,5",
+ {
+ "x": 1.25
+ },
+ "11,0",
+ "11,1",
+ "11,2"
+ ],
+ [
+ {
+ "x": 7.25
+ },
+ "5,1",
+ "5,2"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_track/wylderbuilds-5x6_track.json b/keyboards/handwired/wylderbuilds/trackball/5x6_track/wylderbuilds-5x6_track.json
new file mode 100644
index 00000000000..a2fe767a7fd
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_track/wylderbuilds-5x6_track.json
@@ -0,0 +1,202 @@
+[
+ {
+ "name": "Wylderbuilds 5x6_track",
+ "author": "https://wylderbuilds.com"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5.75
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,2",
+ "4,3",
+ {
+ "x": 9.75
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 13
+ },
+ "11,0"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 13
+ },
+ "11,1"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 10.75
+ },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 0.25
+ },
+ "11,3"
+ ],
+ [
+ {
+ "x": 11.25
+ },
+ "11,2"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -5.25,
+ "x": 6
+ },
+ "4,4",
+ "4,5"
+ ],
+ [
+ {
+ "r": -15,
+ "y": 2.75,
+ "x": 4.5
+ },
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "r": -13,
+ "x": 5.25
+ },
+ "5,2",
+ "5,3"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_whole_3_track/5x6_whole_3_track.c b/keyboards/handwired/wylderbuilds/trackball/5x6_whole_3_track/5x6_whole_3_track.c
new file mode 100644
index 00000000000..0ebf38540da
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_whole_3_track/5x6_whole_3_track.c
@@ -0,0 +1 @@
+#include "5x6_whole_3_track.h"
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_whole_3_track/5x6_whole_3_track.h b/keyboards/handwired/wylderbuilds/trackball/5x6_whole_3_track/5x6_whole_3_track.h
new file mode 100644
index 00000000000..ed0a77d97a3
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_whole_3_track/5x6_whole_3_track.h
@@ -0,0 +1,30 @@
+#pragma once
+
+#include "trackball.h"
+
+#define XXX KC_NO
+
+
+#define LAYOUT_5x6_whole( \
+ L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
+ L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \
+ L40, L41, L42, L43, R42, R43, R44, R45, \
+ L53, L54, L55, R50, R51, R52, \
+ L51, L52 \
+) { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { L30, L31, L32, L33, L34, L35 }, \
+ { L40, L41, L42, L43, XXX, XXX }, \
+ { XXX, XXX, XXX, L53, L54, L55 }, \
+\
+ { R00, R01, R02, R03, R04, R05 }, \
+ { R10, R11, R12, R13, R14, R15 }, \
+ { R20, R21, R22, R23, R24, R25 }, \
+ { R30, R31, R32, R33, R34, R35 }, \
+ { XXX, XXX, R42, R43, R44, R45 }, \
+ { R50, R51, R52, XXX, XXX, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_whole_3_track/config.h b/keyboards/handwired/wylderbuilds/trackball/5x6_whole_3_track/config.h
new file mode 100644
index 00000000000..e70a58d2e3f
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_whole_3_track/config.h
@@ -0,0 +1,82 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+//#include "config_common.h"
+// Basic Config
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+
+#define USE_SERIAL
+#define SPLIT_HAND_PIN GP22 // high = left, low = right
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Columns are doubled-up
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 7
+
+#define MATRIX_COL_PINS_RIGHT { GP8, GP2, GP3, GP4, GP5, GP6, GP7 }
+#define MATRIX_COL_PINS { GP2, GP3, GP4, GP5, GP6, GP7, GP8 }
+#define MATRIX_ROW_PINS { GP9, GP10, GP11, GP12, GP13, GP14 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define SPLIT_POINTING_ENABLE
+#define ROTATIONAL_TRANSFORM_ANGLE -25
+#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_LEFT
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x03
+
+#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+#define ENCODERS_PAD_A { GP26 }
+#define ENCODERS_PAD_B { GP27 }
+#define ENCODER_RESOLUTIONS { 2 }
+//// Sensor Notes ////
+//// Pi Pico pins ////
+// 3V3 -- Power (not 3v3_EN)
+// GP17 -- CS pin
+// GP20 -- MISO pin
+// GP19 -- MOSI pin
+// GP18 -- SCK pin clock Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD1
+#define I2C1_SDA_PIN GP16
+#define I2C1_SCL_PIN GP17
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+// Misc settings
+// 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// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_whole_3_track/info.json b/keyboards/handwired/wylderbuilds/trackball/5x6_whole_3_track/info.json
new file mode 100644
index 00000000000..49730694869
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_whole_3_track/info.json
@@ -0,0 +1,385 @@
+{
+ "keyboard_name": "Dactyl-Manuform Wyld Trackball (5x6_whole_track)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0048",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 12,
+ "cols": 7
+ },
+ "layouts": {
+ "LAYOUT_5x6_whole": {
+ "layout": [
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "6,1",
+ "x": 12.75,
+ "y": 0
+ },
+ {
+ "label": "6,2",
+ "x": 13.75,
+ "y": 0
+ },
+ {
+ "label": "6,3",
+ "x": 14.75,
+ "y": 0
+ },
+ {
+ "label": "6,4",
+ "x": 15.75,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "6,5",
+ "x": 16.75,
+ "y": 0.5
+ },
+ {
+ "label": "6,6",
+ "x": 17.75,
+ "y": 0.5
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "7,1",
+ "x": 12.75,
+ "y": 1
+ },
+ {
+ "label": "7,2",
+ "x": 13.75,
+ "y": 1
+ },
+ {
+ "label": "7,3",
+ "x": 14.75,
+ "y": 1
+ },
+ {
+ "label": "7,4",
+ "x": 15.75,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "7,5",
+ "x": 16.75,
+ "y": 1.5
+ },
+ {
+ "label": "7,6",
+ "x": 17.75,
+ "y": 1.5
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "0,0",
+ "x": 7.25,
+ "y": 2
+ },
+ {
+ "label": "0,1",
+ "x": 8.25,
+ "y": 2
+ },
+ {
+ "label": "1,0",
+ "x": 10.5,
+ "y": 2
+ },
+ {
+ "label": "1,1",
+ "x": 11.5,
+ "y": 2
+ },
+ {
+ "label": "8,1",
+ "x": 12.75,
+ "y": 2
+ },
+ {
+ "label": "8,2",
+ "x": 13.75,
+ "y": 2
+ },
+ {
+ "label": "8,3",
+ "x": 14.75,
+ "y": 2
+ },
+ {
+ "label": "8,4",
+ "x": 15.75,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "8,5",
+ "x": 16.75,
+ "y": 2.5
+ },
+ {
+ "label": "8,6",
+ "x": 17.75,
+ "y": 2.5
+ },
+ {
+ "label": "3,2",
+ "x": 3,
+ "y": 3
+ },
+ {
+ "label": "3,3",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "3,4",
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "3,5",
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "3,6",
+ "x": 7.75,
+ "y": 3
+ },
+ {
+ "label": "9,0",
+ "x": 11,
+ "y": 3
+ },
+ {
+ "label": "9,1",
+ "x": 12.75,
+ "y": 3
+ },
+ {
+ "label": "9,2",
+ "x": 13.75,
+ "y": 3
+ },
+ {
+ "label": "9,3",
+ "x": 14.75,
+ "y": 3
+ },
+ {
+ "label": "9,4",
+ "x": 15.75,
+ "y": 3
+ },
+ {
+ "label": "3,0",
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "label": "3,1",
+ "x": 2,
+ "y": 3.5
+ },
+ {
+ "label": "9,5",
+ "x": 16.75,
+ "y": 3.5
+ },
+ {
+ "label": "9,6",
+ "x": 17.75,
+ "y": 3.5
+ },
+ {
+ "label": "4,2",
+ "x": 3,
+ "y": 4
+ },
+ {
+ "label": "4,3",
+ "x": 4,
+ "y": 4
+ },
+ {
+ "label": "4,4",
+ "x": 5,
+ "y": 4
+ },
+ {
+ "label": "4,5",
+ "x": 6,
+ "y": 4
+ },
+ {
+ "label": "10,1",
+ "x": 12.75,
+ "y": 4
+ },
+ {
+ "label": "10,2",
+ "x": 13.75,
+ "y": 4
+ },
+ {
+ "label": "10,3",
+ "x": 14.75,
+ "y": 4
+ },
+ {
+ "label": "10,4",
+ "x": 15.75,
+ "y": 4
+ },
+ {
+ "label": "4,0",
+ "x": 1,
+ "y": 4.5
+ },
+ {
+ "label": "4,1",
+ "x": 2,
+ "y": 4.5
+ },
+ {
+ "label": "10,5",
+ "x": 16.75,
+ "y": 4.5
+ },
+ {
+ "label": "10,6",
+ "x": 17.75,
+ "y": 4.5
+ },
+ {
+ "label": "5,3",
+ "x": 6,
+ "y": 4.5
+ },
+ {
+ "label": "5,4",
+ "x": 7,
+ "y": 4.5
+ },
+ {
+ "label": "5,5",
+ "x": 8,
+ "y": 4.5
+ },
+ {
+ "label": "11,1",
+ "x": 10.75,
+ "y": 6.75
+ },
+ {
+ "label": "11,2",
+ "x": 11.75,
+ "y": 6.75
+ },
+ {
+ "label": "11,3",
+ "x": 12.75,
+ "y": 6.75
+ }
+ ]
+ }
+ }
+}
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_whole_3_track/keymaps/default/keymap.c b/keyboards/handwired/wylderbuilds/trackball/5x6_whole_3_track/keymaps/default/keymap.c
new file mode 100644
index 00000000000..50288c38948
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_whole_3_track/keymaps/default/keymap.c
@@ -0,0 +1,118 @@
+#include QMK_KEYBOARD_H
+
+#define _BASE 0
+#define _NAV 1
+#define _SYST 2
+#define _MOUSE 3 //layer for mouse functions
+
+// Macros
+#define TASK LCTL(LSFT(KC_ESC))
+#define TAB_R LCTL(KC_TAB)
+#define TAB_L LCTL(LSFT(KC_TAB))
+#define TAB_RO LCTL(LSFT(KC_T))
+#define CAD LCTL(LALT(KC_DEL))
+#define IAD LCTL(LALT(KC_INS))
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_BASE] = LAYOUT_5x7(
+ // left hand // right hand
+ LT(_SYST, 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, 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_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(_SYST),
+ KC_APP, KC_LGUI, MO(_NAV), TG(_MOUSE),
+ KC_LALT, LT(_NAV, KC_SPC), KC_SPC,
+ KC_BTN3, KC_BTN1, KC_WFWD,
+ _______, _______, _______, KC_WBAK),
+
+ [_NAV] = LAYOUT_5x7(
+ // left hand // right hand
+ KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC,
+ _______, _______, _______, LCTL(LSFT(KC_E)), _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______, _______,
+ _______, LCTL(KC_A), LCTL(KC_S), _______, _______, _______, KC_PGUP, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______,
+ _______, KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, _______, KC_PGDN, TAB_L, TAB_R, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+ [_SYST] = LAYOUT_5x7(
+ // left hand // right hand
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______,
+ _______, KC_INS, KC_PAUS, _______, IAD, CAD, _______, _______, _______, _______, _______, _______, _______,
+ KC_CAPS, KC_NUM, KC_SCRL, _______, _______, _______, _______, _______, _______, KC_MSTP, KC_VOLD, KC_VOLU, KC_MUTE,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, QK_BOOT, EE_CLR,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+
+ [_MOUSE] = LAYOUT_5x7(
+ // left hand // right hand
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+};
+
+
+//void keyboard_post_init_user(void) {
+// // Customise these values to desired behaviour
+// debug_enable=true;
+// debug_matrix=true;
+// debug_keyboard=true;
+// debug_mouse=true;
+//}
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_NAV] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_SYST] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_MOUSE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+};
+#endif
+
+#ifdef OLED_ENABLE
+bool oled_task_user(void) {
+ // Host Keyboard Layer Status
+ oled_write_P(PSTR("Layer: "), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _BASE:
+ oled_write_P(PSTR("Base\n"), false);
+ break;
+ case _NAV:
+ oled_write_P(PSTR("Nav\n"), false);
+ break;
+ case _SYST:
+ oled_write_P(PSTR("System\n"), false);
+ break;
+ case _MOUSE:
+ oled_write_P(PSTR("Mouse\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+
+ // Host Keyboard LED Status
+ led_t led_state = host_keyboard_led_state();
+ oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
+
+ return false;
+}
+#endif
+
+#define imageWidth 128
+#define imageHeight 36
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_whole_3_track/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/5x6_whole_3_track/keymaps/vial/config.h
new file mode 100644
index 00000000000..dee5c588f6f
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_whole_3_track/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xAD, 0x0B, 0x8B, 0xB5, 0x65, 0x12, 0xAD, 0x0E}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 5 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 5 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_whole_3_track/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/5x6_whole_3_track/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..7d158208d73
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_whole_3_track/keymaps/vial/keymap.c
@@ -0,0 +1,51 @@
+#include QMK_KEYBOARD_H
+#include "5x6_whole_3_track.h"
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+#define _MOUSE 3
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[_QWERTY] = LAYOUT_5x6_whole(
+ KC_ESC , KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS,
+ 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_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_LALT,KC_LWIN,KC_LBRC, KC_BSLS,KC_RWIN,KC_RALT,KC_RCTL,
+RAISE, KC_SPC, KC_BSPC, KC_DEL, KC_ENT, LOWER,
+KC_LALT, KC_GRV
+),
+
+[_LOWER] = LAYOUT_5x6_whole(
+ KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,
+ _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,
+ _______,RGB_VAI,RGB_SAI,RGB_HUI,RGB_MOD,RGB_TOG, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS,
+ _______,_______,_______,_______, KC_P0,_______,_______,_______,
+ _______,KC_BTN3,KC_BTN1, QK_BOOT,_______,_______,
+ SNIPING,DRGSCRL
+),
+
+[_RAISE] = LAYOUT_5x6_whole(
+ KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6, KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,
+ _______,KC_LEFT,KC_UP,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,KC_VOLD,KC_VOLU,_______,
+ _______,_______,_______,_______, SNIPING,DRGSCRL,KC_EQL,_______,
+ _______,_______,_______, KC_BTN1,KC_BTN3,KC_BTN2,
+ _______,QK_BOOT
+),
+[_MOUSE] = LAYOUT_5x6_whole(
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______, _______,_______,_______,_______,
+ _______,KC_BTN3,KC_BTN1, _______,_______,_______,
+ SNIPING,DRGSCRL
+)
+};
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_whole_3_track/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/5x6_whole_3_track/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_whole_3_track/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_whole_3_track/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/5x6_whole_3_track/keymaps/vial/vial.json
new file mode 100644
index 00000000000..5cf46b99841
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_whole_3_track/keymaps/vial/vial.json
@@ -0,0 +1,206 @@
+{
+ "matrix": {
+ "rows": 12,
+ "cols": 7
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 5x6 Whole Matrix Wyld Trackball Dual Encoders"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "6,1",
+ "6,2",
+ "6,3",
+ "6,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "6,5",
+ "6,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "7,1",
+ "7,2",
+ "7,3",
+ "7,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "7,5",
+ "7,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 0.25
+ },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 1.25
+ },
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 0.25
+ },
+ "8,1",
+ {
+ "n": true
+ },
+ "8,2",
+ "8,3",
+ "8,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 0.75
+ },
+ "3,6",
+ {
+ "x": 2.25
+ },
+ "9,0",
+ {
+ "x": 0.75
+ },
+ "9,1",
+ "9,2",
+ "9,3",
+ "9,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,2",
+ "4,3",
+ "4,4",
+ "4,5",
+ {
+ "x": 5.75
+ },
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "4,0",
+ "4,1",
+ {
+ "x": 13.75
+ },
+ "10,5",
+ "10,6"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -1,
+ "x": 6
+ },
+ "5,3",
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "r": -6.5,
+ "y": 1.25,
+ "x": 10.75
+ },
+ "11,1",
+ "11,2",
+ "11,3"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_whole_3_track/mcuconf.h b/keyboards/handwired/wylderbuilds/trackball/5x6_whole_3_track/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_whole_3_track/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_whole_3_track/rules.mk b/keyboards/handwired/wylderbuilds/trackball/5x6_whole_3_track/rules.mk
new file mode 100644
index 00000000000..cf78a3fac01
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_whole_3_track/rules.mk
@@ -0,0 +1,18 @@
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+RGBLIGHT_ENABLE = no
+MOUSEKEY_ENABLE = yes
+CONSOLE_ENABLE = no
+#COMMAND_ENABLE = yes
+BOOTMAGIC_ENABLE = yes
+OLED_ENABLE = yes
+#OLED_DRIVER = SSD1306
+WPM_ENABLE = yes
+EXTRAKEY_ENABLE = yes # Audio control and System control
+NKRO_ENABLE = yes # Enable N-Key Rollover
+ENCODER_ENABLE = yes
+#ENCODER_MAP_ENABLE = yes
+
+OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_wyld_track/5x6_wyld_track.c b/keyboards/handwired/wylderbuilds/trackball/5x6_wyld_track/5x6_wyld_track.c
new file mode 100644
index 00000000000..65df5096889
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_wyld_track/5x6_wyld_track.c
@@ -0,0 +1 @@
+#include "5x6_wyld_track.h"
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_wyld_track/5x6_wyld_track.h b/keyboards/handwired/wylderbuilds/trackball/5x6_wyld_track/5x6_wyld_track.h
new file mode 100644
index 00000000000..871135378e1
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_wyld_track/5x6_wyld_track.h
@@ -0,0 +1,31 @@
+#pragma once
+
+#include "trackball.h"
+
+#define XXX KC_NO
+
+
+#define LAYOUT_5x6_wyld_track( \
+ L55, L54, L53, L52, L51, L50, R50, R51, R52, R53, R54, R55, \
+ L45, L44, L43, L42, L41, L40, R40, R41, R42, R43, R44, R45, \
+ L35, L34, L33, L32, L31, L30, R30, R31, R32, R33, R34, R35, \
+ L25, L24, L23, L22, L21, L20, R20, R21, R22, R23, R24, R25, \
+ L13, L12, R12, R13, \
+ L03, L02, L01, R02, R03, \
+ R01, R00, \
+ R06, R07 \
+) { \
+ { XXX, L01, L02, L03, XXX, XXX, XXX, XXX }, \
+ { XXX, XXX, L12, L13, XXX, XXX, XXX, XXX }, \
+ { L20, L21, L22, L23, L24, L25, XXX, XXX }, \
+ { L30, L31, L32, L33, L34, L35, XXX, XXX }, \
+ { L40, L41, L42, L43, L44, L45, XXX, XXX }, \
+ { L50, L51, L52, L53, L54, L55, XXX, XXX }, \
+\
+ { R00, R01, R02, R03, XXX, XXX, R06, R07 }, \
+ { XXX, XXX, R12, R13, XXX, XXX, XXX, XXX }, \
+ { R20, R21, R22, R23, R24, R25, XXX, XXX }, \
+ { R30, R31, R32, R33, R34, R35, XXX, XXX }, \
+ { R40, R41, R42, R43, R44, R45, XXX, XXX }, \
+ { R50, R51, R52, R53, R54, R55, XXX, XXX }, \
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_wyld_track/config.h b/keyboards/handwired/wylderbuilds/trackball/5x6_wyld_track/config.h
new file mode 100644
index 00000000000..7abed5eb2e4
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_wyld_track/config.h
@@ -0,0 +1,118 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+//#include "config_common.h"
+// Basic Config
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+
+
+#define USE_SERIAL
+//#define SPLIT_HAND_PIN GP26 // high = left, low = right
+#define SPLIT_HAND_PIN GP0
+#define SPLIT_LAYER_STATE_ENABLE
+
+#define USB_VBUS_PIN GP27
+#define SERIAL_USART_TX_PIN GP28
+#define SERIAL_PIO_USE_PIO0
+//#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+//#define SERIAL_USART_SPEED 921600.......
+//#define SERIAL_USART_PIN_SWAP
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Columns are doubled-up
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 8
+
+#define MATRIX_ROW_PINS { GP2, GP3, GP8, GP4, GP13, GP9 }
+#define MATRIX_COL_PINS { GP1, GP10, GP11, GP12, GP7, GP6, GP5, GP19 }
+
+#define DIODE_DIRECTION ROW2COL
+
+#define SPI_SCK_PIN GP22
+#define SPI_MOSI_PIN GP23
+#define SPI_MISO_PIN GP20
+
+#define SPLIT_POINTING_ENABLE
+#define ROTATIONAL_TRANSFORM_ANGLE -25
+#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_LEFT
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x03
+
+#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+#define CHARYBDIS_MINIMUM_DEFAULT_DPI 1200
+#define CHARYBDIS_DEFAULT_DPI_CONFIG_STEP 400
+#define CHARYBDIS_MINIMUM_SNIPING_DPI 400
+#define CHARYBDIS_SNIPING_DPI_CONFIG_STEP 200
+
+#ifdef ENCODER_ENABLE
+#define ENCODERS_PAD_A { GP16 }
+#define ENCODERS_PAD_B { GP18 }
+#define ENCODER_RESOLUTIONS { 2 }
+//#define ENCODERS_PAD_A_RIGHT { GP26 }
+//#define ENCODERS_PAD_B_RIGHT { GP27 }
+//#define ENCODER_RESOLUTIONS_RIGHT { 2 }
+#endif
+
+//// Sensor Notes ////
+//// Pi Pico pins ////
+// 3V3 -- Power (not 3v3_EN!)
+// GP21 -- CS pin
+// GP20 -- MISO pin
+// GP19 -- MOSI pin
+// GP18 -- SCK pin clock
+// GND -- GND
+
+#ifdef RGB_MATRIX_ENABLE
+# define WS2812_PIO_USE_PIO1 // Force the usage of PIO1 peripheral, by default the WS2812 implementation uses the PIO0 peripheral
+# define SPLIT_TRANSPORT_MIRROR
+# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_REACTIVE // Sets the default mode, if none has been set
+# define RGB_MATRIX_DEFAULT_HUE 33 // Sets the default hue value, if none has been set
+# define RGB_MATRIX_DEFAULT_SAT 255 // Sets the default saturation value, if none has been set
+# define RGB_MATRIX_DEFAULT_SPD 50
+# define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
+# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# define RGB_MATRIX_KEYPRESSES
+# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#endif
+
+//// OLED Pins and Driver
+//#define SPLIT_OLED_ENABLE
+#define SPLIT_MODS_ENABLE
+//// OLED Pins and Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD0
+#define I2C1_SDA_PIN GP16
+#define I2C1_SCL_PIN GP17
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+// Misc settings
+// 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
+// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_wyld_track/info.json b/keyboards/handwired/wylderbuilds/trackball/5x6_wyld_track/info.json
new file mode 100644
index 00000000000..1d07936c2c9
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_wyld_track/info.json
@@ -0,0 +1,571 @@
+{
+ "keyboard_name": "Dactyl-Manuform Wyld Trackball (5x6_track)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0100",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 12,
+ "cols": 6
+ },
+ "ws2812": {
+ "pin": "GP15",
+ "driver": "vendor"
+ },
+ "encoder": {
+ "pin_a": "GP16",
+ "pin_b": "GP18"
+ },
+ "split": {
+ "enabled": true
+ },
+
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true,
+ "encoder": true
+ },
+ "matrix_size": {
+ "cols": 8,
+ "rows": 12
+ },
+ "rgb_matrix": {
+ "driver": "ws2812",
+ "max_brightness": 120,
+ "animations": {
+ "alpha_mods": true,
+ "breathing": true,
+ "colorband_pinwheel_sat": true,
+ "colorband_pinwheel_val": true,
+ "colorband_sat": true,
+ "colorband_spiral_sat": true,
+ "colorband_spiral_val": true,
+ "colorband_val": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_out_in": true,
+ "cycle_out_in_dual": true,
+ "cycle_pinwheel": true,
+ "cycle_spiral": true,
+ "cycle_up_down": true,
+ "digital_rain": true,
+ "dual_beacon": true,
+ "gradient_left_right": true,
+ "gradient_up_down": true,
+ "hue_breathing": true,
+ "hue_pendulum": true,
+ "hue_wave": true,
+ "jellybean_raindrops": true,
+ "pixel_flow": true,
+ "pixel_fractal": true,
+ "pixel_rain": true,
+ "rainbow_beacon": true,
+ "rainbow_moving_chevron": true,
+ "rainbow_pinwheels": true,
+ "raindrops": true,
+ "solid_color": true,
+ "solid_reactive": true,
+ "solid_reactive_cross": true,
+ "solid_reactive_nexus": true,
+ "solid_reactive_simple": true,
+ "solid_reactive_wide": true,
+ "solid_splash": true,
+ "splash": true,
+ "typing_heatmap": true
+ },
+ "split_count": [29, 32],
+ "layout": [
+ {"flags": 4, "matrix": [0, 6], "x": 71, "y": 0},
+ {"flags": 4, "matrix": [1, 6], "x": 71, "y": 7},
+ {"flags": 4, "matrix": [2, 6], "x": 71, "y": 17},
+ {"flags": 4, "matrix": [3, 6], "x": 71, "y": 27},
+ {"flags": 4, "matrix": [4, 6], "x": 71, "y": 36},
+
+ {"flags": 4, "matrix": [0, 5], "x": 59, "y": 0},
+ {"flags": 4, "matrix": [1, 5], "x": 59, "y": 7},
+ {"flags": 4, "matrix": [2, 5], "x": 59, "y": 17},
+ {"flags": 4, "matrix": [3, 5], "x": 59, "y": 27},
+ {"flags": 4, "matrix": [4, 5], "x": 59, "y": 36},
+
+ {"flags": 4, "matrix": [0, 4], "x": 47, "y": 0},
+ {"flags": 4, "matrix": [1, 4], "x": 47, "y": 7},
+ {"flags": 4, "matrix": [2, 4], "x": 47, "y": 17},
+ {"flags": 4, "matrix": [3, 4], "x": 47, "y": 27},
+ {"flags": 4, "matrix": [4, 4], "x": 47, "y": 36},
+
+ {"flags": 4, "matrix": [0, 3], "x": 35, "y": 0},
+ {"flags": 4, "matrix": [1, 3], "x": 35, "y": 7},
+ {"flags": 4, "matrix": [2, 3], "x": 35, "y": 17},
+ {"flags": 4, "matrix": [3, 3], "x": 35, "y": 27},
+ {"flags": 4, "matrix": [4, 3], "x": 35, "y": 36},
+
+
+ {"flags": 4, "matrix": [0, 2], "x": 24, "y": 2},
+ {"flags": 4, "matrix": [1, 2], "x": 24, "y": 12},
+ {"flags": 4, "matrix": [2, 2], "x": 24, "y": 22},
+ {"flags": 4, "matrix": [3, 2], "x": 0, "y": 31},
+ {"flags": 4, "matrix": [4, 2], "x": 0, "y": 41},
+
+ {"flags": 4, "matrix": [0, 1], "x": 12, "y": 2},
+ {"flags": 4, "matrix": [1, 1], "x": 12, "y": 12},
+ {"flags": 4, "matrix": [2, 1], "x": 12, "y": 22},
+ {"flags": 4, "matrix": [3, 1], "x": 0, "y": 31},
+ {"flags": 4, "matrix": [4, 1], "x": 0, "y": 41},
+
+ {"flags": 4, "matrix": [0, 0], "x": 0, "y": 2},
+ {"flags": 4, "matrix": [1, 0], "x": 0, "y": 12},
+ {"flags": 4, "matrix": [2, 0], "x": 0, "y": 22},
+ {"flags": 4, "matrix": [3, 0], "x": 0, "y": 31},
+ {"flags": 4, "matrix": [4, 0], "x": 0, "y": 41},
+
+ {"flags": 4, "matrix": [5, 0], "x": 0, "y": 54},
+ {"flags": 4, "matrix": [5, 1], "x": 0, "y": 54},
+ {"flags": 4, "matrix": [5, 2], "x": 0, "y": 54},
+ {"flags": 4, "matrix": [5, 3], "x": 35, "y": 46},
+ {"flags": 4, "matrix": [5, 4], "x": 35, "y": 46},
+
+ {"flags": 4, "matrix": [6, 6], "x": 74, "y": 50},
+ {"flags": 4, "matrix": [6, 5], "x": 74, "y": 63},
+ {"flags": 4, "matrix": [6, 3], "x": 74, "y": 69},
+ {"flags": 4, "matrix": [6, 4], "x": 77, "y": 69},
+
+ {"flags": 4, "matrix": [7, 0], "x": 130, "y": 0},
+ {"flags": 4, "matrix": [8, 0], "x": 130, "y": 7},
+ {"flags": 4, "matrix": [9, 0], "x": 130, "y": 17},
+ {"flags": 4, "matrix": [10, 0], "x": 130, "y": 27},
+ {"flags": 4, "matrix": [11, 0], "x": 130, "y": 36},
+
+ {"flags": 4, "matrix": [7, 1], "x": 141, "y": 0},
+ {"flags": 4, "matrix": [8, 1], "x": 141, "y": 7},
+ {"flags": 4, "matrix": [9, 1], "x": 141, "y": 17},
+ {"flags": 4, "matrix": [10, 1], "x": 141, "y": 27},
+ {"flags": 4, "matrix": [11, 1], "x": 141, "y": 36},
+
+ {"flags": 4, "matrix": [7, 2], "x": 153, "y": 0},
+ {"flags": 4, "matrix": [8, 2], "x": 153, "y": 7},
+ {"flags": 4, "matrix": [9, 2], "x": 153, "y": 17},
+ {"flags": 4, "matrix": [10, 2], "x": 153, "y": 27},
+ {"flags": 4, "matrix": [11, 2], "x": 153, "y": 36},
+
+ {"flags": 4, "matrix": [7, 3], "x": 165, "y": 0},
+ {"flags": 4, "matrix": [8, 3], "x": 165, "y": 7},
+ {"flags": 4, "matrix": [9, 3], "x": 165, "y": 17},
+ {"flags": 4, "matrix": [10, 3], "x": 165, "y": 27},
+ {"flags": 4, "matrix": [11, 3], "x": 165, "y": 36},
+
+ {"flags": 4, "matrix": [7, 4], "x": 177, "y": 2},
+ {"flags": 4, "matrix": [8, 4], "x": 177, "y": 12},
+ {"flags": 4, "matrix": [9, 4], "x": 177, "y": 22},
+ {"flags": 4, "matrix": [10, 4], "x": 141, "y": 31},
+ {"flags": 4, "matrix": [11, 4], "x": 141, "y": 41},
+
+ {"flags": 4, "matrix": [7, 5], "x": 189, "y": 2},
+ {"flags": 4, "matrix": [8, 5], "x": 189, "y": 12},
+ {"flags": 4, "matrix": [9, 5], "x": 189, "y": 22},
+ {"flags": 4, "matrix": [10, 5], "x": 141, "y": 31},
+ {"flags": 4, "matrix": [11, 5], "x": 141, "y": 41},
+
+ {"flags": 4, "matrix": [7, 6], "x": 200, "y": 2},
+ {"flags": 4, "matrix": [8, 6], "x": 200, "y": 12},
+ {"flags": 4, "matrix": [9, 6], "x": 200, "y": 22},
+ {"flags": 4, "matrix": [10, 6], "x": 141, "y": 31},
+ {"flags": 4, "matrix": [11, 6], "x": 141, "y": 41},
+
+ {"flags": 4, "matrix": [12, 6], "x": 141, "y": 54},
+ {"flags": 4, "matrix": [12, 5], "x": 141, "y": 54},
+ {"flags": 4, "matrix": [12, 4], "x": 141, "y": 54},
+ {"flags": 4, "matrix": [12, 3], "x": 130, "y": 46},
+ {"flags": 4, "matrix": [12, 2], "x": 130, "y": 46},
+
+ {"flags": 4, "matrix": [13, 0], "x": 115, "y": 50},
+ {"flags": 4, "matrix": [13, 1], "x": 115, "y": 63},
+ {"flags": 4, "matrix": [13, 2], "x": 88, "y": 69},
+ {"flags": 4, "matrix": [13, 3], "x": 91, "y": 69}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_5x6_wyld_track": {
+ "layout": [
+ {
+ "label": "5,3",
+ "matrix": [5, 3],
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "5,2",
+ "matrix": [5, 2],
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "5,1",
+ "matrix": [5, 1],
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "5,0",
+ "matrix": [5, 0],
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "11,0",
+ "matrix": [11, 0],
+ "x": 12.75,
+ "y": 0
+ },
+ {
+ "label": "11,1",
+ "matrix": [11, 1],
+ "x": 13.75,
+ "y": 0
+ },
+ {
+ "label": "11,2",
+ "matrix": [11, 2],
+ "x": 14.75,
+ "y": 0
+ },
+ {
+ "label": "11,3",
+ "matrix": [11, 3],
+ "x": 15.75,
+ "y": 0
+ },
+ {
+ "label": "5,5",
+ "matrix": [5, 5],
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "5,4",
+ "matrix": [5, 4],
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "11,4",
+ "matrix": [11, 4],
+ "x": 16.75,
+ "y": 0.5
+ },
+ {
+ "label": "11,5",
+ "matrix": [11, 5],
+ "x": 17.75,
+ "y": 0.5
+ },
+ {
+ "label": "4,3",
+ "matrix": [4, 3],
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "4,2",
+ "matrix": [4, 2],
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "4,1",
+ "matrix": [4, 1],
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "4,0",
+ "matrix": [4, 0],
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "10,0",
+ "matrix": [10, 0],
+ "x": 12.75,
+ "y": 1
+ },
+ {
+ "label": "10,1",
+ "matrix": [10, 1],
+ "x": 13.75,
+ "y": 1
+ },
+ {
+ "label": "10,2",
+ "matrix": [10, 2],
+ "x": 14.75,
+ "y": 1
+ },
+ {
+ "label": "10,3",
+ "matrix": [10, 3],
+ "x": 15.75,
+ "y": 1
+ },
+ {
+ "label": "4,5",
+ "matrix": [4, 5],
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "4,4",
+ "matrix": [4, 4],
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "10,4",
+ "matrix": [10, 4],
+ "x": 16.75,
+ "y": 1.5
+ },
+ {
+ "label": "10,5",
+ "matrix": [10, 5],
+ "x": 17.75,
+ "y": 1.5
+ },
+ {
+ "label": "3,3",
+ "matrix": [3, 3],
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "3,2",
+ "matrix": [3, 2],
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "3,1",
+ "matrix": [3, 1],
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "3,0",
+ "matrix": [3, 0],
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "9,0",
+ "matrix": [9, 0],
+ "x": 12.75,
+ "y": 2
+ },
+ {
+ "label": "9,1",
+ "matrix": [9, 1],
+ "x": 13.75,
+ "y": 2
+ },
+ {
+ "label": "9,2",
+ "matrix": [9, 2],
+ "x": 14.75,
+ "y": 2
+ },
+ {
+ "label": "9,3",
+ "matrix": [9, 3],
+ "x": 15.75,
+ "y": 2
+ },
+ {
+ "label": "3,5",
+ "matrix": [3, 5],
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "3,4",
+ "matrix": [3, 4],
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "9,4",
+ "matrix": [9, 4],
+ "x": 16.75,
+ "y": 2.5
+ },
+ {
+ "label": "9,5",
+ "matrix": [9, 5],
+ "x": 17.75,
+ "y": 2.5
+ },
+ {
+ "label": "2,3",
+ "matrix": [2, 3],
+ "x": 3,
+ "y": 3
+ },
+ {
+ "label": "2,2",
+ "matrix": [2, 2],
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "2,1",
+ "matrix": [2, 1],
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "2,0",
+ "matrix": [2, 0],
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "8,0",
+ "matrix": [8, 0],
+ "x": 12.75,
+ "y": 3
+ },
+ {
+ "label": "8,1",
+ "matrix": [8, 1],
+ "x": 13.75,
+ "y": 3
+ },
+ {
+ "label": "8,2",
+ "matrix": [8, 2],
+ "x": 14.75,
+ "y": 3
+ },
+ {
+ "label": "8,3",
+ "matrix": [8, 3],
+ "x": 15.75,
+ "y": 3
+ },
+ {
+ "label": "2,5",
+ "matrix": [2, 5],
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "label": "2,4",
+ "matrix": [2, 4],
+ "x": 2,
+ "y": 3.5
+ },
+ {
+ "label": "8,4",
+ "matrix": [8, 4],
+ "x": 16.75,
+ "y": 3.5
+ },
+ {
+ "label": "8,5",
+ "matrix": [8, 5],
+ "x": 17.75,
+ "y": 3.5
+ },
+ {
+ "label": "1,3",
+ "matrix": [1, 3],
+ "x": 3,
+ "y": 4
+ },
+ {
+ "label": "1,2",
+ "matrix": [1, 2],
+ "x": 4,
+ "y": 4
+ },
+ {
+ "label": "7,2",
+ "matrix": [7, 2],
+ "x": 14.75,
+ "y": 4
+ },
+ {
+ "label": "7,3",
+ "matrix": [7, 3],
+ "x": 15.75,
+ "y": 4
+ },
+ {
+ "label": "0,3",
+ "matrix": [0, 3],
+ "x": 6,
+ "y": 3.5
+ },
+ {
+ "label": "0,2",
+ "matrix": [0, 2],
+ "x": 7,
+ "y": 3.5
+ },
+ {
+ "label": "0,1",
+ "matrix": [0, 1],
+ "x": 8,
+ "y": 3.5
+ },
+ {
+ "label": "6,2",
+ "matrix": [6, 2],
+ "x": 11.5,
+ "y": 5.75
+ },
+ {
+ "label": "6,3",
+ "matrix": [6, 3],
+ "x": 12.5,
+ "y": 5.75
+ },
+ {
+ "label": "6,1",
+ "matrix": [6, 1],
+ "x": 11,
+ "y": 6.75
+ },
+ {
+ "label": "6,0",
+ "matrix": [6, 0],
+ "x": 12,
+ "y": 6.75
+ },
+ {
+ "label": "6,6",
+ "matrix": [6, 6],
+ "x": 10.5,
+ "y": 7.75
+ },
+ {
+ "label": "6,7",
+ "matrix": [6, 7],
+ "x": 11.5,
+ "y": 7.75
+ }
+ ]
+ }
+ }
+}
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_wyld_track/keymaps/default/keymap.c b/keyboards/handwired/wylderbuilds/trackball/5x6_wyld_track/keymaps/default/keymap.c
new file mode 100644
index 00000000000..50288c38948
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_wyld_track/keymaps/default/keymap.c
@@ -0,0 +1,118 @@
+#include QMK_KEYBOARD_H
+
+#define _BASE 0
+#define _NAV 1
+#define _SYST 2
+#define _MOUSE 3 //layer for mouse functions
+
+// Macros
+#define TASK LCTL(LSFT(KC_ESC))
+#define TAB_R LCTL(KC_TAB)
+#define TAB_L LCTL(LSFT(KC_TAB))
+#define TAB_RO LCTL(LSFT(KC_T))
+#define CAD LCTL(LALT(KC_DEL))
+#define IAD LCTL(LALT(KC_INS))
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_BASE] = LAYOUT_5x7(
+ // left hand // right hand
+ LT(_SYST, 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, 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_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(_SYST),
+ KC_APP, KC_LGUI, MO(_NAV), TG(_MOUSE),
+ KC_LALT, LT(_NAV, KC_SPC), KC_SPC,
+ KC_BTN3, KC_BTN1, KC_WFWD,
+ _______, _______, _______, KC_WBAK),
+
+ [_NAV] = LAYOUT_5x7(
+ // left hand // right hand
+ KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC,
+ _______, _______, _______, LCTL(LSFT(KC_E)), _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______, _______,
+ _______, LCTL(KC_A), LCTL(KC_S), _______, _______, _______, KC_PGUP, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______,
+ _______, KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, _______, KC_PGDN, TAB_L, TAB_R, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+ [_SYST] = LAYOUT_5x7(
+ // left hand // right hand
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______,
+ _______, KC_INS, KC_PAUS, _______, IAD, CAD, _______, _______, _______, _______, _______, _______, _______,
+ KC_CAPS, KC_NUM, KC_SCRL, _______, _______, _______, _______, _______, _______, KC_MSTP, KC_VOLD, KC_VOLU, KC_MUTE,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, QK_BOOT, EE_CLR,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+
+ [_MOUSE] = LAYOUT_5x7(
+ // left hand // right hand
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+};
+
+
+//void keyboard_post_init_user(void) {
+// // Customise these values to desired behaviour
+// debug_enable=true;
+// debug_matrix=true;
+// debug_keyboard=true;
+// debug_mouse=true;
+//}
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_NAV] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_SYST] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_MOUSE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+};
+#endif
+
+#ifdef OLED_ENABLE
+bool oled_task_user(void) {
+ // Host Keyboard Layer Status
+ oled_write_P(PSTR("Layer: "), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _BASE:
+ oled_write_P(PSTR("Base\n"), false);
+ break;
+ case _NAV:
+ oled_write_P(PSTR("Nav\n"), false);
+ break;
+ case _SYST:
+ oled_write_P(PSTR("System\n"), false);
+ break;
+ case _MOUSE:
+ oled_write_P(PSTR("Mouse\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+
+ // Host Keyboard LED Status
+ led_t led_state = host_keyboard_led_state();
+ oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
+
+ return false;
+}
+#endif
+
+#define imageWidth 128
+#define imageHeight 36
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_wyld_track/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/5x6_wyld_track/keymaps/vial/config.h
new file mode 100644
index 00000000000..836542267c6
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_wyld_track/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x5E, 0x54, 0xC0, 0x58, 0x49, 0x79, 0x77, 0x79}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 5 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 5 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_wyld_track/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/5x6_wyld_track/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..30dc706c2ec
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_wyld_track/keymaps/vial/keymap.c
@@ -0,0 +1,60 @@
+#include QMK_KEYBOARD_H
+#include "5x6_wyld_track.h"
+
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[_QWERTY] = LAYOUT_5x6_wyld_track(
+ KC_ESC , 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_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_MINS,
+ KC_LSFT, 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_BSLS,
+ KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL,
+ RAISE, KC_SPC, KC_TAB, KC_ENT, LOWER,
+ KC_END, KC_DEL,
+ KC_LGUI, KC_LALT
+),
+
+[_LOWER] = LAYOUT_5x6_wyld_track(
+ KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,
+ _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,
+ _______,_______,_______,SNIPING,DRGSCRL,KC_BTN1, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS,
+ _______,KC_PSCR, QK_BOOT, KC_P0,
+ _______,_______, _______, KC_BTN1, _______,
+ KC_BTN3, KC_BTN2,
+ SNIPING, DRGSCRL
+
+),
+
+[_RAISE] = LAYOUT_5x6_wyld_track(
+ KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,
+ _______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU,
+ _______,_______,_______,SNIPING,DRGSCRL,KC_BTN1, _______,_______,_______,_______,_______,KC_VOLD,
+ _______,QK_BOOT, KC_EQL ,_______,
+ _______,_______, _______, _______,_______,
+ _______,_______,
+ _______,_______
+)
+};
+
+void keyboard_post_init_user(void) {
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+ debug_keyboard=true;
+ debug_mouse=true;
+#else
+ debug_enable=false;
+ debug_matrix=false;
+ debug_keyboard=false;
+ debug_mouse=false;
+#endif
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_wyld_track/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/5x6_wyld_track/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..d1c35cfd60d
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_wyld_track/keymaps/vial/rules.mk
@@ -0,0 +1,9 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_wyld_track/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/5x6_wyld_track/keymaps/vial/vial.json
new file mode 100644
index 00000000000..68231949efc
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_wyld_track/keymaps/vial/vial.json
@@ -0,0 +1,188 @@
+{
+ "name": "Wylderbuilds 5x6 Wyld Trackball",
+ "vendorId": "0x9953",
+ "productId": "0x0100",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 12,
+ "cols": 8
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 5x6 Wyld Trackball"
+ },
+ [
+ {
+ "x": 3
+ },
+ "5,3",
+ "5,2",
+ "5,1",
+ "5,0",
+ {
+ "x": 5.75
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "5,5",
+ "5,4",
+ {
+ "x": 13.75
+ },
+ "11,4",
+ "11,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,3",
+ "4,2",
+ "4,1",
+ "4,0",
+ {
+ "x": 5.75
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "4,5",
+ "4,4",
+ {
+ "x": 13.75
+ },
+ "10,4",
+ "10,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,3",
+ "3,2",
+ {
+ "n": true
+ },
+ "3,1",
+ "3,0",
+ {
+ "x": 5.75
+ },
+ "9,0",
+ {
+ "n": true
+ },
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,5",
+ "3,4",
+ {
+ "x": 13.75
+ },
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,3",
+ "2,2",
+ "2,1",
+ "2,0",
+ {
+ "x": 5.75
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,5",
+ "2,4",
+ {
+ "x": 13.75
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,3",
+ "1,2",
+ {
+ "x": 9.75
+ },
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "r": 6,
+ "y": -1.5,
+ "x": 6
+ },
+ "0,3",
+ "0,2",
+ "0,1"
+ ],
+ [
+ {
+ "r": -6.5,
+ "y": 1.25,
+ "x": 11.5
+ },
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "x": 11
+ },
+ "6,1",
+ "6,0"
+ ],
+ [
+ {
+ "x": 10.5
+ },
+ "6,6",
+ "6,7"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_wyld_track/rules.mk b/keyboards/handwired/wylderbuilds/trackball/5x6_wyld_track/rules.mk
new file mode 100644
index 00000000000..03764be931b
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_wyld_track/rules.mk
@@ -0,0 +1,20 @@
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+#RGBLIGHT_ENABLE = yes
+#RGB_MATRIX_ENABLE = WS2812
+#CONSOLE_ENABLE = no
+##COMMAND_ENABLE = yes
+#BOOTMAGIC_ENABLE = yes
+#NKRO_ENABLE = yes # Enable N-Key Rollover
+#
+#OLED_ENABLE = no
+##OLED_DRIVER = SSD1306
+#WPM_ENABLE = yes
+#EXTRAKEY_ENABLE = yes # Audio control and System control
+#
+#ENCODER_ENABLE = yes
+#ENCODER_MAP_ENABLE = yes
+
+#OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_wyld_track/wylderbuilds-5x6-left-wyld-trackball-encoder (1).json b/keyboards/handwired/wylderbuilds/trackball/5x6_wyld_track/wylderbuilds-5x6-left-wyld-trackball-encoder (1).json
new file mode 100644
index 00000000000..61b20fd8a9d
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_wyld_track/wylderbuilds-5x6-left-wyld-trackball-encoder (1).json
@@ -0,0 +1,176 @@
+[
+ {
+ "name": "Wylderbuilds 5x6 Left Wyld Trackball Encoder"
+ },
+ [
+ {
+ "x": 3
+ },
+ "5,3",
+ "5,2",
+ "5,1",
+ "5,0",
+ {
+ "x": 5.75
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "5,5",
+ "5,4",
+ {
+ "x": 13.75
+ },
+ "11,4",
+ "11,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,3",
+ "4,2",
+ "4,1",
+ "4,0",
+ {
+ "x": 5.75
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "4,5",
+ "4,4",
+ {
+ "x": 13.75
+ },
+ "10,4",
+ "10,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,3",
+ "3,2",
+ {
+ "n": true
+ },
+ "3,1",
+ "3,0",
+ {
+ "x": 5.75
+ },
+ "9,0",
+ {
+ "n": true
+ },
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,5",
+ "3,4",
+ {
+ "x": 13.75
+ },
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,3",
+ "2,2",
+ "2,1",
+ "2,0",
+ {
+ "x": 5.75
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,5",
+ "2,4",
+ {
+ "x": 13.75
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,3",
+ "1,2",
+ {
+ "x": 9.75
+ },
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "r": 6,
+ "y": -1.5,
+ "x": 6
+ },
+ "0,3",
+ "0,2",
+ "0,1"
+ ],
+ [
+ {
+ "r": -6.5,
+ "y": 1.25,
+ "x": 11.5
+ },
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "x": 11
+ },
+ "6,1",
+ "6,0"
+ ],
+ [
+ {
+ "x": 10.5
+ },
+ "6,6",
+ "6,7"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x6_wyld_track/wylderbuilds-5x6_track.json b/keyboards/handwired/wylderbuilds/trackball/5x6_wyld_track/wylderbuilds-5x6_track.json
new file mode 100644
index 00000000000..a2fe767a7fd
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x6_wyld_track/wylderbuilds-5x6_track.json
@@ -0,0 +1,202 @@
+[
+ {
+ "name": "Wylderbuilds 5x6_track",
+ "author": "https://wylderbuilds.com"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5.75
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13.75
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5.75
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13.75
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5.75
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13.75
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5.75
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13.75
+ },
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,2",
+ "4,3",
+ {
+ "x": 9.75
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 13
+ },
+ "11,0"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 13
+ },
+ "11,1"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 10.75
+ },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 0.25
+ },
+ "11,3"
+ ],
+ [
+ {
+ "x": 11.25
+ },
+ "11,2"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -5.25,
+ "x": 6
+ },
+ "4,4",
+ "4,5"
+ ],
+ [
+ {
+ "r": -15,
+ "y": 2.75,
+ "x": 4.5
+ },
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "r": -13,
+ "x": 5.25
+ },
+ "5,2",
+ "5,3"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_cy_track/5x7_cy_track.c b/keyboards/handwired/wylderbuilds/trackball/5x7_cy_track/5x7_cy_track.c
new file mode 100644
index 00000000000..3e6b27dfea5
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_cy_track/5x7_cy_track.c
@@ -0,0 +1,5 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "5x7_cy_track.h"
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_cy_track/5x7_cy_track.h b/keyboards/handwired/wylderbuilds/trackball/5x7_cy_track/5x7_cy_track.h
new file mode 100644
index 00000000000..939dc1ff7e6
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_cy_track/5x7_cy_track.h
@@ -0,0 +1,319 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_manuform_function_row( \
+ r6c6, r6c5, r6c4, r6c3, r6c2, r6c1, r13c8, r13c9, r13c10, r13c11, r13c12, r13c13, \
+ r5c6, r5c5, r5c4, r5c3, r5c2, r5c1, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13, \
+ r4c6, r4c5, r4c4, r4c3, r4c2, r4c1, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13, \
+ r3c6, r3c5, r3c4, r3c3, r3c2, r3c1, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13, \
+ r2c6, r2c5, r2c4, r2c3, r2c2, r2c1, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13, \
+ r1c6, r1c5, r1c4, r1c3, r1c2, r1c1, r1c0, r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13, \
+ r0c2, r0c1, r0c0, r7c7, r7c8, r7c9 \
+) \
+{ \
+ { r0c0, r0c1, r0c2, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r1c0, r1c1, r1c2, r1c3, r1c4, r1c5, r1c6 }, \
+ { KC_NO, r2c1, r2c2, r2c3, r2c4, r2c5, r2c6 }, \
+ { KC_NO, r3c1, r3c2, r3c3, r3c4, r3c5, r3c6 }, \
+ { KC_NO, r4c1, r4c2, r4c3, r4c4, r4c5, r4c6 }, \
+ { KC_NO, r5c1, r5c2, r5c3, r5c4, r5c5, r5c6 }, \
+ { KC_NO, r6c1, r6c2, r6c3, r6c4, r6c5, r6c6 }, \
+\
+ { r7c7, r7c8, r7c9, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13 }, \
+ { KC_NO, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13 }, \
+ { KC_NO, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13 }, \
+ { KC_NO, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13 }, \
+ { KC_NO, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13 }, \
+ { KC_NO, r13c8, r13c9, r13c10, r13c11, r13c12, r13c13 } \
+}
+
+#define LAYOUT_manuform_5x7( \
+ r5c6, r5c5, r5c4, r5c3, r5c2, r5c1, r5c0, r12c7, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13, \
+ r4c6, r4c5, r4c4, r4c3, r4c2, r4c1, r4c0, r11c7, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13, \
+ r3c6, r3c5, r3c4, r3c3, r3c2, r3c1, r3c0, r1c0, r8c7, r10c7, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13, \
+ r2c6, r2c5, r2c4, r2c3, r2c2, r2c1, r2c0, r9c7, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13, \
+ r1c3, r1c2, r8c9, r8c10, \
+ r0c3, r0c2, r7c7, \
+ r0c7, r0c1, r7c8, \
+ r0c6, r0c0, r7c10, r7c9 \
+) \
+{ \
+ { r0c0, r0c1, r0c2, r0c3, KC_NO, KC_NO, r0c6, r0c7 }, \
+ { r1c0, KC_NO, r1c2, r1c3, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r2c0, r2c1, r2c2, r2c3, r2c4, r2c5, r2c6, KC_NO }, \
+ { r3c0, r3c1, r3c2, r3c3, r3c4, r3c5, r3c6, KC_NO }, \
+ { r4c0, r4c1, r4c2, r4c3, r4c4, r4c5, r4c6, KC_NO }, \
+ { r5c0, r5c1, r5c2, r5c3, r5c4, r5c5, r5c6, KC_NO }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+\
+ { r7c7, r7c8, r7c9, r7c10, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r8c7, KC_NO, r8c9, r8c10, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r9c7, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13, KC_NO }, \
+ { r10c7, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13, KC_NO }, \
+ { r11c7, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13, KC_NO }, \
+ { r12c7, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13, KC_NO }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
+}
+
+#define LAYOUT_manuform_number_row( \
+ r5c6, r5c5, r5c4, r5c3, r5c2, r5c1, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13, \
+ r4c6, r4c5, r4c4, r4c3, r4c2, r4c1, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13, \
+ r3c6, r3c5, r3c4, r3c3, r3c2, r3c1, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13, \
+ r2c6, r2c5, r2c4, r2c3, r2c2, r2c1, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13, \
+ r1c6, r1c5, r1c4, r1c3, r1c2, r1c1, r1c0, r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13, \
+ r0c2, r0c1, r0c0, r7c7, r7c8, r7c9 \
+) \
+{ \
+ { r0c0, r0c1, r0c2, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r1c0, r1c1, r1c2, r1c3, r1c4, r1c5, r1c6 }, \
+ { KC_NO, r2c1, r2c2, r2c3, r2c4, r2c5, r2c6 }, \
+ { KC_NO, r3c1, r3c2, r3c3, r3c4, r3c5, r3c6 }, \
+ { KC_NO, r4c1, r4c2, r4c3, r4c4, r4c5, r4c6 }, \
+ { KC_NO, r5c1, r5c2, r5c3, r5c4, r5c5, r5c6 }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+\
+ { r7c7, r7c8, r7c9, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13 }, \
+ { KC_NO, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13 }, \
+ { KC_NO, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13 }, \
+ { KC_NO, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13 }, \
+ { KC_NO, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13 }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
+}
+
+#define LAYOUT_manuform_letters_only( \
+ r4c6, r4c5, r4c4, r4c3, r4c2, r4c1, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13, \
+ r3c6, r3c5, r3c4, r3c3, r3c2, r3c1, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13, \
+ r2c6, r2c5, r2c4, r2c3, r2c2, r2c1, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13, \
+ r1c6, r1c5, r1c4, r1c3, r1c2, r1c1, r1c0, r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13, \
+ r0c2, r0c1, r0c0, r7c7, r7c8, r7c9 \
+) \
+{ \
+ { r0c0, r0c1, r0c2, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r1c0, r1c1, r1c2, r1c3, r1c4, r1c5, r1c6 }, \
+ { KC_NO, r2c1, r2c2, r2c3, r2c4, r2c5, r2c6 }, \
+ { KC_NO, r3c1, r3c2, r3c3, r3c4, r3c5, r3c6 }, \
+ { KC_NO, r4c1, r4c2, r4c3, r4c4, r4c5, r4c6 }, \
+ { 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 }, \
+\
+ { r7c7, r7c8, r7c9, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13 }, \
+ { KC_NO, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13 }, \
+ { KC_NO, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13 }, \
+ { KC_NO, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13 }, \
+ { 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 } \
+}
+
+#define LAYOUT_dualarcs_function_row( \
+ r6c6, r6c5, r6c4, r6c3, r6c2, r6c1, r13c8, r13c9, r13c10, r13c11, r13c12, r13c13, \
+ r5c6, r5c5, r5c4, r5c3, r5c2, r5c1, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13, \
+ r4c6, r4c5, r4c4, r4c3, r4c2, r4c1, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13, \
+ r3c6, r3c5, r3c4, r3c3, r3c2, r3c1, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13, \
+ r2c6, r2c5, r2c4, r2c3, r2c2, r2c1, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13, \
+ r1c6, r1c5, r1c4, r1c3, r1c2, r1c1, r1c0, r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13, \
+ r0c1, r0c0, r7c7, r7c8 \
+) \
+{ \
+ { r0c0, r0c1, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r1c0, r1c1, r1c2, r1c3, r1c4, r1c5, r1c6 }, \
+ { KC_NO, r2c1, r2c2, r2c3, r2c4, r2c5, r2c6 }, \
+ { KC_NO, r3c1, r3c2, r3c3, r3c4, r3c5, r3c6 }, \
+ { KC_NO, r4c1, r4c2, r4c3, r4c4, r4c5, r4c6 }, \
+ { KC_NO, r5c1, r5c2, r5c3, r5c4, r5c5, r5c6 }, \
+ { KC_NO, r6c1, r6c2, r6c3, r6c4, r6c5, r6c6 }, \
+\
+ { r7c7, r7c8, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13 }, \
+ { KC_NO, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13 }, \
+ { KC_NO, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13 }, \
+ { KC_NO, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13 }, \
+ { KC_NO, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13 }, \
+ { KC_NO, r13c8, r13c9, r13c10, r13c11, r13c12, r13c13 } \
+}
+
+#define LAYOUT_dualarcs_number_row( \
+ r5c6, r5c5, r5c4, r5c3, r5c2, r5c1, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13, \
+ r4c6, r4c5, r4c4, r4c3, r4c2, r4c1, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13, \
+ r3c6, r3c5, r3c4, r3c3, r3c2, r3c1, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13, \
+ r2c6, r2c5, r2c4, r2c3, r2c2, r2c1, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13, \
+ r1c6, r1c5, r1c4, r1c3, r1c2, r1c1, r1c0, r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13, \
+ r0c1, r0c0, r7c7, r7c8 \
+) \
+{ \
+ { r0c0, r0c1, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r1c0, r1c1, r1c2, r1c3, r1c4, r1c5, r1c6 }, \
+ { KC_NO, r2c1, r2c2, r2c3, r2c4, r2c5, r2c6 }, \
+ { KC_NO, r3c1, r3c2, r3c3, r3c4, r3c5, r3c6 }, \
+ { KC_NO, r4c1, r4c2, r4c3, r4c4, r4c5, r4c6 }, \
+ { KC_NO, r5c1, r5c2, r5c3, r5c4, r5c5, r5c6 }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+\
+ { r7c7, r7c8, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13 }, \
+ { KC_NO, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13 }, \
+ { KC_NO, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13 }, \
+ { KC_NO, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13 }, \
+ { KC_NO, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13 }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
+}
+
+#define LAYOUT_dualarcs_letters_only( \
+ r4c6, r4c5, r4c4, r4c3, r4c2, r4c1, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13, \
+ r3c6, r3c5, r3c4, r3c3, r3c2, r3c1, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13, \
+ r2c6, r2c5, r2c4, r2c3, r2c2, r2c1, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13, \
+ r1c6, r1c5, r1c4, r1c3, r1c2, r1c1, r1c0, r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13, \
+ r0c1, r0c0, r7c7, r7c8 \
+) \
+{ \
+ { r0c0, r0c1, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r1c0, r1c1, r1c2, r1c3, r1c4, r1c5, r1c6 }, \
+ { KC_NO, r2c1, r2c2, r2c3, r2c4, r2c5, r2c6 }, \
+ { KC_NO, r3c1, r3c2, r3c3, r3c4, r3c5, r3c6 }, \
+ { KC_NO, r4c1, r4c2, r4c3, r4c4, r4c5, r4c6 }, \
+ { 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 }, \
+\
+ { r7c7, r7c8, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13 }, \
+ { KC_NO, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13 }, \
+ { KC_NO, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13 }, \
+ { KC_NO, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13 }, \
+ { 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 } \
+}
+
+#define LAYOUT_singlearc_function_row( \
+ r6c6, r6c5, r6c4, r6c3, r6c2, r6c1, r13c8, r13c9, r13c10, r13c11, r13c12, r13c13, \
+ r5c6, r5c5, r5c4, r5c3, r5c2, r5c1, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13, \
+ r4c6, r4c5, r4c4, r4c3, r4c2, r4c1, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13, \
+ r3c6, r3c5, r3c4, r3c3, r3c2, r3c1, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13, \
+ r2c6, r2c5, r2c4, r2c3, r2c2, r2c1, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13, \
+ r1c4, r1c3, r1c2, r1c1, r1c0, r8c7, r8c8, r8c9, r8c10, r8c11 \
+) \
+{ \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r1c0, r1c1, r1c2, r1c3, r1c4, KC_NO, KC_NO }, \
+ { KC_NO, r2c1, r2c2, r2c3, r2c4, r2c5, r2c6 }, \
+ { KC_NO, r3c1, r3c2, r3c3, r3c4, r3c5, r3c6 }, \
+ { KC_NO, r4c1, r4c2, r4c3, r4c4, r4c5, r4c6 }, \
+ { KC_NO, r5c1, r5c2, r5c3, r5c4, r5c5, r5c6 }, \
+ { KC_NO, r6c1, r6c2, r6c3, r6c4, r6c5, r6c6 }, \
+\
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r8c7, r8c8, r8c9, r8c10, r8c11, KC_NO, KC_NO }, \
+ { KC_NO, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13 }, \
+ { KC_NO, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13 }, \
+ { KC_NO, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13 }, \
+ { KC_NO, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13 }, \
+ { KC_NO, r13c8, r13c9, r13c10, r13c11, r13c12, r13c13 } \
+}
+
+#define LAYOUT_singlearc_number_row( \
+ r5c6, r5c5, r5c4, r5c3, r5c2, r5c1, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13, \
+ r4c6, r4c5, r4c4, r4c3, r4c2, r4c1, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13, \
+ r3c6, r3c5, r3c4, r3c3, r3c2, r3c1, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13, \
+ r2c6, r2c5, r2c4, r2c3, r2c2, r2c1, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13, \
+ r1c6, r1c5, r1c4, r1c3, r1c2, r1c1, r1c0, r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13 \
+) \
+{ \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r1c0, r1c1, r1c2, r1c3, r1c4, r1c5, r1c6 }, \
+ { KC_NO, r2c1, r2c2, r2c3, r2c4, r2c5, r2c6 }, \
+ { KC_NO, r3c1, r3c2, r3c3, r3c4, r3c5, r3c6 }, \
+ { KC_NO, r4c1, r4c2, r4c3, r4c4, r4c5, r4c6 }, \
+ { KC_NO, r5c1, r5c2, r5c3, r5c4, r5c5, r5c6 }, \
+ { 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 }, \
+ { r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13 }, \
+ { KC_NO, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13 }, \
+ { KC_NO, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13 }, \
+ { KC_NO, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13 }, \
+ { KC_NO, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13 }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
+}
+
+#define LAYOUT_singlearc_letters_only( \
+ r4c6, r4c5, r4c4, r4c3, r4c2, r4c1, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13, \
+ r3c6, r3c5, r3c4, r3c3, r3c2, r3c1, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13, \
+ r2c6, r2c5, r2c4, r2c3, r2c2, r2c1, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13, \
+ r1c6, r1c5, r1c4, r1c3, r1c2, r1c1, r1c0, r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13 \
+) \
+{ \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r1c0, r1c1, r1c2, r1c3, r1c4, r1c5, r1c6 }, \
+ { KC_NO, r2c1, r2c2, r2c3, r2c4, r2c5, r2c6 }, \
+ { KC_NO, r3c1, r3c2, r3c3, r3c4, r3c5, r3c6 }, \
+ { KC_NO, r4c1, r4c2, r4c3, r4c4, r4c5, r4c6 }, \
+ { 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 }, \
+ { r8c7, r8c8, r8c9, r8c10, r8c11, r8c12, r8c13 }, \
+ { KC_NO, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13 }, \
+ { KC_NO, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13 }, \
+ { KC_NO, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13 }, \
+ { 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 } \
+}
+
+#define LAYOUT_dualarcs2x3_function_row_noextrapinky( \
+ r6c6, r6c5, r6c4, r6c3, r6c2, r6c1, r13c8, r13c9, r13c10, r13c11, r13c12, r13c13, \
+ r5c6, r5c5, r5c4, r5c3, r5c2, r5c1, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13, \
+ r4c6, r4c5, r4c4, r4c3, r4c2, r4c1, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13, \
+ r3c6, r3c5, r3c4, r3c3, r3c2, r3c1, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13, \
+ r2c6, r2c5, r2c4, r2c3, r2c2, r2c1, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13, \
+ r1c4, r1c3, r1c2, r1c1, r1c0, r8c7, r8c8, r8c9, r8c10, r8c11, \
+ r0c2, r0c1, r0c0, r7c7, r7c8, r7c9 \
+) \
+{ \
+ { r0c0, r0c1, r0c2, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r1c0, r1c1, r1c2, r1c3, r1c4, KC_NO, KC_NO }, \
+ { KC_NO, r2c1, r2c2, r2c3, r2c4, r2c5, r2c6 }, \
+ { KC_NO, r3c1, r3c2, r3c3, r3c4, r3c5, r3c6 }, \
+ { KC_NO, r4c1, r4c2, r4c3, r4c4, r4c5, r4c6 }, \
+ { KC_NO, r5c1, r5c2, r5c3, r5c4, r5c5, r5c6 }, \
+ { KC_NO, r6c1, r6c2, r6c3, r6c4, r6c5, r6c6 }, \
+\
+ { r7c7, r7c8, r7c9, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r8c7, r8c8, r8c9, r8c10, r8c11, KC_NO, KC_NO }, \
+ { KC_NO, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13 }, \
+ { KC_NO, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13 }, \
+ { KC_NO, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13 }, \
+ { KC_NO, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13 }, \
+ { KC_NO, r13c8, r13c9, r13c10, r13c11, r13c12, r13c13 } \
+}
+
+#define LAYOUT_manuform_number_row_noextrapinky( \
+ r5c6, r5c5, r5c4, r5c3, r5c2, r5c1, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13, \
+ r4c6, r4c5, r4c4, r4c3, r4c2, r4c1, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13, \
+ r3c6, r3c5, r3c4, r3c3, r3c2, r3c1, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13, \
+ r2c6, r2c5, r2c4, r2c3, r2c2, r2c1, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13, \
+ r1c4, r1c3, r1c2, r1c1, r1c0, r8c7, r8c8, r8c9, r8c10, r8c11, \
+ r0c2, r0c1, r0c0, r7c7, r7c8, r7c9 \
+) \
+{ \
+ { r0c0, r0c1, r0c2, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r1c0, r1c1, r1c2, r1c3, r1c4, KC_NO, KC_NO }, \
+ { KC_NO, r2c1, r2c2, r2c3, r2c4, r2c5, r2c6 }, \
+ { KC_NO, r3c1, r3c2, r3c3, r3c4, r3c5, r3c6 }, \
+ { KC_NO, r4c1, r4c2, r4c3, r4c4, r4c5, r4c6 }, \
+ { KC_NO, r5c1, r5c2, r5c3, r5c4, r5c5, r5c6 }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+\
+ { r7c7, r7c8, r7c9, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { r8c7, r8c8, r8c9, r8c10, r8c11, KC_NO, KC_NO }, \
+ { KC_NO, r9c8, r9c9, r9c10, r9c11, r9c12, r9c13 }, \
+ { KC_NO, r10c8, r10c9, r10c10, r10c11, r10c12, r10c13 }, \
+ { KC_NO, r11c8, r11c9, r11c10, r11c11, r11c12, r11c13 }, \
+ { KC_NO, r12c8, r12c9, r12c10, r12c11, r12c12, r12c13 }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_cy_track/config.h b/keyboards/handwired/wylderbuilds/trackball/5x7_cy_track/config.h
new file mode 100644
index 00000000000..51290fd34aa
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_cy_track/config.h
@@ -0,0 +1,114 @@
+//
+// Created by nethe on 11/9/2022.
+//
+//#define PRODUCT_ID 0x0001
+
+
+// Dactyl Manuform Hotswap
+#pragma once
+
+/* Split keyboard settings */
+#define SERIAL_USART_TX_PIN GP28
+#define SPLIT_HAND_PIN GP0
+
+/* RGB settings */
+
+/* Double-tap reset button parameters */
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U
+
+#define USB_VBUS_PIN GP27
+
+/* Vial set up */
+#define VIAL_KEYBOARD_UID {0xC4, 0xCC, 0xB4, 0x76, 0x30, 0x16, 0xFC, 0x70}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 10, 10 }
+#define VIAL_UNLOCK_COMBO_COLS { 3, 4 }
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 10
+#define DYNAMIC_KEYMAP_MACRO_COUNT 64
+
+//trackball support
+#define SPI_DRIVER SPID0
+#define SPI_SCK_PIN GP22
+#define SPI_MISO_PIN GP20
+#define SPI_MOSI_PIN GP23
+#define POINTING_DEVICE_CS_PIN GP21
+//#define POINTING_DEVICE_INVERT_X
+//#define POINTING_DEVICE_INVERT_X_RIGHT
+#define SPLIT_POINTING_ENABLE
+#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_RIGHT
+#define ROTATIONAL_TRANSFORM_ANGLE -25
+#define CHARYBDIS_DRAGSCROLL_REVERSE_Y
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+//#define CHARYBDIS_CONFIG_DUAL_SYNC
+#define PMW3360_LIFTOFF_DISTANCE 0x03 //default 0x02, 2mm liftoff distance
+
+//#include "config_common.h"
+// Basic Config
+#define SPLIT_POINTING_ENABLE
+//#define ROTATIONAL_TRANSFORM_ANGLE -25
+//#define PMW33XX_CS_PIN GP21
+//#define POINTING_DEVICE_CS_PIN GP21
+
+//#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+#define CHARYBDIS_MINIMUM_DEFAULT_DPI 600
+//#define CHARYBDIS_MAX_DEFAULT_DPI_MULTIPLIER 0x08
+//#define CHARYBDIS_BASE_DEFAULT_DPI_MULTIPLIER 0x02
+#define CHARYBDIS_DEFAULT_DPI_CONFIG_STEP 400
+#define CHARYBDIS_MINIMUM_SNIPING_DPI 400
+#define CHARYBDIS_SNIPING_DPI_CONFIG_STEP 100
+#define CHARYBDIS_DRAGSCROLL_DPI 100
+
+
+#define POINTING_DEVICE_AUTO_MOUSE_ENABLE
+// only required if not setting mouse layer elsewhere
+#define AUTO_MOUSE_DEFAULT_LAYER 3
+
+#ifdef RGB_MATRIX_ENABLE
+#define RGBLED_NUM 72
+# define WS2812_PIO_USE_PIO1 // Force the usage of PIO1 peripheral, by default the WS2812 implementation uses the PIO0 peripheral
+# define SPLIT_TRANSPORT_MIRROR
+# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_REACTIVE // Sets the default mode, if none has been set
+# define RGB_MATRIX_DEFAULT_HUE 33 // Sets the default hue value, if none has been set
+# define RGB_MATRIX_DEFAULT_SAT 255 // Sets the default saturation value, if none has been set
+# define RGB_MATRIX_DEFAULT_SPD 50
+# define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
+# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# define RGB_MATRIX_KEYPRESSES
+# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define NOP_FUDGE 0.4 // may not be needed if ws driver loaded
+#endif
+
+#define SPLIT_MODS_ENABLE
+
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD0
+#define I2C1_SDA_PIN GP24
+#define I2C1_SCL_PIN GP25
+#define RGBLIGHT_LAYERS
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+#ifdef ENCODER_ENABLE
+#define ENCODERS_PAD_A { GP16 }
+#define ENCODERS_PAD_B { GP18 }
+#define ENCODER_RESOLUTIONS { 2 }
+#define ENCODERS_PAD_A_RIGHT { GP16 }
+#define ENCODERS_PAD_B_RIGHT { GP18 }
+#define ENCODER_RESOLUTIONS_RIGHT { 2 }
+#endif
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_cy_track/info.json b/keyboards/handwired/wylderbuilds/trackball/5x7_cy_track/info.json
new file mode 100644
index 00000000000..34ee018b10c
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_cy_track/info.json
@@ -0,0 +1,1323 @@
+{
+ "keyboard_name": "Dactyl-Manuform (5x7_track)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "bootloader": "rp2040",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x004B",
+ "device_version": "0.0.1"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "encoder": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
+ "matrix": {
+ "rows": 14,
+ "cols": 8
+ },
+ "matrix_pins": {
+ "rows": [
+ "GP2",
+ "GP3",
+ "GP8",
+ "GP4",
+ "GP13",
+ "GP9",
+ "GP14"
+ ],
+ "cols": [
+ "GP1",
+ "GP10",
+ "GP11",
+ "GP12",
+ "GP7",
+ "GP6",
+ "GP5",
+ "GP19"
+ ]
+ },
+ "split": {
+ "enabled": true
+ },
+ "diode_direction": "ROW2COL",
+ "ws2812": {
+ "pin": "GP15",
+ "driver": "vendor"
+ },
+ "matrix_size": {
+ "cols": 8,
+ "rows": 14
+ },
+ "rgb_matrix": {
+ "driver": "ws2812",
+ "max_brightness": 120,
+ "animations": {
+ "alpha_mods": true,
+ "breathing": true,
+ "colorband_pinwheel_sat": true,
+ "colorband_pinwheel_val": true,
+ "colorband_sat": true,
+ "colorband_spiral_sat": true,
+ "colorband_spiral_val": true,
+ "colorband_val": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_out_in": true,
+ "cycle_out_in_dual": true,
+ "cycle_pinwheel": true,
+ "cycle_spiral": true,
+ "cycle_up_down": true,
+ "digital_rain": true,
+ "dual_beacon": true,
+ "gradient_left_right": true,
+ "gradient_up_down": true,
+ "hue_breathing": true,
+ "hue_pendulum": true,
+ "hue_wave": true,
+ "jellybean_raindrops": true,
+ "pixel_flow": true,
+ "pixel_fractal": true,
+ "pixel_rain": true,
+ "rainbow_beacon": true,
+ "rainbow_moving_chevron": true,
+ "rainbow_pinwheels": true,
+ "raindrops": true,
+ "solid_color": true,
+ "solid_reactive": true,
+ "solid_reactive_cross": true,
+ "solid_reactive_nexus": true,
+ "solid_reactive_simple": true,
+ "solid_reactive_wide": true,
+ "solid_splash": true,
+ "splash": true,
+ "typing_heatmap": true
+ },
+ "split_count": [
+ 36,
+ 34
+ ],
+ "layout": [
+ {
+ "flags": 4,
+ "matrix": [
+ 3,
+ 0
+ ],
+ "x": 103,
+ "y": 32
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 2,
+ 0
+ ],
+ "x": 103,
+ "y": 43
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 5,
+ 0
+ ],
+ "x": 103,
+ "y": 11
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 4,
+ 0
+ ],
+ "x": 103,
+ "y": 21
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 3,
+ 1
+ ],
+ "x": 86,
+ "y": 32
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 2,
+ 1
+ ],
+ "x": 86,
+ "y": 43
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 5,
+ 1
+ ],
+ "x": 86,
+ "y": 11
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 4,
+ 1
+ ],
+ "x": 86,
+ "y": 21
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 3,
+ 2
+ ],
+ "x": 69,
+ "y": 32
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 2,
+ 2
+ ],
+ "x": 69,
+ "y": 43
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 1,
+ 2
+ ],
+ "x": 69,
+ "y": 53
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 5,
+ 2
+ ],
+ "x": 69,
+ "y": 11
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 4,
+ 2
+ ],
+ "x": 69,
+ "y": 21
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 3,
+ 3
+ ],
+ "x": 52,
+ "y": 32
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 2,
+ 3
+ ],
+ "x": 52,
+ "y": 43
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 1,
+ 3
+ ],
+ "x": 52,
+ "y": 53
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 5,
+ 3
+ ],
+ "x": 52,
+ "y": 11
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 4,
+ 3
+ ],
+ "x": 52,
+ "y": 21
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 3,
+ 4
+ ],
+ "x": 34,
+ "y": 32
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 2,
+ 4
+ ],
+ "x": 34,
+ "y": 43
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 5,
+ 4
+ ],
+ "x": 34,
+ "y": 11
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 4,
+ 4
+ ],
+ "x": 34,
+ "y": 21
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 3,
+ 5
+ ],
+ "x": 17,
+ "y": 32
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 2,
+ 5
+ ],
+ "x": 17,
+ "y": 43
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 5,
+ 5
+ ],
+ "x": 17,
+ "y": 11
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 4,
+ 5
+ ],
+ "x": 17,
+ "y": 21
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 3,
+ 6
+ ],
+ "x": 0,
+ "y": 32
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 2,
+ 6
+ ],
+ "x": 0,
+ "y": 43
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 5,
+ 6
+ ],
+ "x": 0,
+ "y": 11
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 4,
+ 6
+ ],
+ "x": 0,
+ "y": 21
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 0,
+ 3
+ ],
+ "x": 103,
+ "y": 53
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 0,
+ 2
+ ],
+ "x": 120,
+ "y": 53
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 0,
+ 1
+ ],
+ "x": 120,
+ "y": 64
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 0,
+ 0
+ ],
+ "x": 86,
+ "y": 53
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 0,
+ 7
+ ],
+ "x": 86,
+ "y": 64
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 0,
+ 6
+ ],
+ "x": 103,
+ "y": 64
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 10,
+ 0
+ ],
+ "x": 155,
+ "y": 32
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 9,
+ 0
+ ],
+ "x": 155,
+ "y": 43
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 12,
+ 0
+ ],
+ "x": 155,
+ "y": 11
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 11,
+ 0
+ ],
+ "x": 155,
+ "y": 21
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 10,
+ 1
+ ],
+ "x": 172,
+ "y": 32
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 9,
+ 1
+ ],
+ "x": 172,
+ "y": 43
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 12,
+ 1
+ ],
+ "x": 172,
+ "y": 11
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 11,
+ 1
+ ],
+ "x": 172,
+ "y": 21
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 10,
+ 2
+ ],
+ "x": 190,
+ "y": 32
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 9,
+ 2
+ ],
+ "x": 190,
+ "y": 43
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 8,
+ 2
+ ],
+ "x": 190,
+ "y": 53
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 12,
+ 2
+ ],
+ "x": 190,
+ "y": 11
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 11,
+ 2
+ ],
+ "x": 190,
+ "y": 21
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 10,
+ 3
+ ],
+ "x": 207,
+ "y": 32
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 9,
+ 3
+ ],
+ "x": 207,
+ "y": 43
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 8,
+ 3
+ ],
+ "x": 207,
+ "y": 53
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 12,
+ 3
+ ],
+ "x": 207,
+ "y": 11
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 11,
+ 3
+ ],
+ "x": 207,
+ "y": 21
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 10,
+ 4
+ ],
+ "x": 224,
+ "y": 32
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 9,
+ 4
+ ],
+ "x": 224,
+ "y": 43
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 12,
+ 4
+ ],
+ "x": 224,
+ "y": 11
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 11,
+ 4
+ ],
+ "x": 224,
+ "y": 21
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 10,
+ 5
+ ],
+ "x": 224,
+ "y": 32
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 9,
+ 5
+ ],
+ "x": 224,
+ "y": 43
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 12,
+ 5
+ ],
+ "x": 224,
+ "y": 11
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 11,
+ 5
+ ],
+ "x": 224,
+ "y": 21
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 10,
+ 6
+ ],
+ "x": 224,
+ "y": 32
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 9,
+ 6
+ ],
+ "x": 224,
+ "y": 43
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 12,
+ 6
+ ],
+ "x": 224,
+ "y": 11
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 11,
+ 6
+ ],
+ "x": 224,
+ "y": 21
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 7,
+ 3
+ ],
+ "x": 155,
+ "y": 53
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 7,
+ 2
+ ],
+ "x": 155,
+ "y": 53
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 7,
+ 1
+ ],
+ "x": 155,
+ "y": 64
+ },
+ {
+ "flags": 4,
+ "matrix": [
+ 7,
+ 0
+ ],
+ "x": 138,
+ "y": 64
+ }
+ ]
+ },
+ "layouts": {
+ "LAYOUT_manuform_5x7": {
+ "layout": [
+ {
+ "matrix": [
+ 5,
+ 6
+ ],
+ "x": 0,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 5,
+ 5
+ ],
+ "x": 1,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 5,
+ 4
+ ],
+ "x": 2,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 5,
+ 3
+ ],
+ "x": 3,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 5,
+ 2
+ ],
+ "x": 4,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 5,
+ 1
+ ],
+ "x": 5,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 5,
+ 0
+ ],
+ "x": 6,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 12,
+ 0
+ ],
+ "x": 11.5,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 12,
+ 1
+ ],
+ "x": 12.5,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 12,
+ 2
+ ],
+ "x": 13.5,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 12,
+ 3
+ ],
+ "x": 14.5,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 12,
+ 4
+ ],
+ "x": 15.5,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 12,
+ 5
+ ],
+ "x": 16.5,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 12,
+ 6
+ ],
+ "x": 17.5,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 4,
+ 6
+ ],
+ "x": 0,
+ "y": 1
+ },
+ {
+ "matrix": [
+ 4,
+ 5
+ ],
+ "x": 1,
+ "y": 1
+ },
+ {
+ "matrix": [
+ 4,
+ 4
+ ],
+ "x": 2,
+ "y": 1
+ },
+ {
+ "matrix": [
+ 4,
+ 3
+ ],
+ "x": 3,
+ "y": 1
+ },
+ {
+ "matrix": [
+ 4,
+ 2
+ ],
+ "x": 4,
+ "y": 1
+ },
+ {
+ "matrix": [
+ 4,
+ 1
+ ],
+ "x": 5,
+ "y": 1
+ },
+ {
+ "matrix": [
+ 4,
+ 0
+ ],
+ "x": 6,
+ "y": 1
+ },
+ {
+ "matrix": [
+ 11,
+ 0
+ ],
+ "x": 10.5,
+ "y": 1
+ },
+ {
+ "matrix": [
+ 11,
+ 1
+ ],
+ "x": 11.5,
+ "y": 1
+ },
+ {
+ "matrix": [
+ 11,
+ 2
+ ],
+ "x": 12.5,
+ "y": 1
+ },
+ {
+ "matrix": [
+ 11,
+ 3
+ ],
+ "x": 13.5,
+ "y": 1
+ },
+ {
+ "matrix": [
+ 11,
+ 4
+ ],
+ "x": 14.5,
+ "y": 1
+ },
+ {
+ "matrix": [
+ 11,
+ 5
+ ],
+ "x": 15.5,
+ "y": 1
+ },
+ {
+ "matrix": [
+ 11,
+ 6
+ ],
+ "x": 16.5,
+ "y": 1
+ },
+ {
+ "matrix": [
+ 3,
+ 6
+ ],
+ "x": 0,
+ "y": 2
+ },
+ {
+ "matrix": [
+ 3,
+ 5
+ ],
+ "x": 1,
+ "y": 2
+ },
+ {
+ "matrix": [
+ 3,
+ 4
+ ],
+ "x": 2,
+ "y": 2
+ },
+ {
+ "matrix": [
+ 3,
+ 3
+ ],
+ "x": 3,
+ "y": 2
+ },
+ {
+ "matrix": [
+ 3,
+ 2
+ ],
+ "x": 4,
+ "y": 2
+ },
+ {
+ "matrix": [
+ 3,
+ 1
+ ],
+ "x": 5,
+ "y": 2
+ },
+ {
+ "matrix": [
+ 3,
+ 0
+ ],
+ "x": 6,
+ "y": 2
+ },
+ {
+ "matrix": [
+ 1,
+ 6
+ ],
+ "x": 7.5,
+ "y": 2
+ },
+ {
+ "matrix": [
+ 8,
+ 0
+ ],
+ "x": 9,
+ "y": 2
+ },
+ {
+ "matrix": [
+ 10,
+ 0
+ ],
+ "x": 10.5,
+ "y": 2
+ },
+ {
+ "matrix": [
+ 10,
+ 1
+ ],
+ "x": 11.5,
+ "y": 2
+ },
+ {
+ "matrix": [
+ 10,
+ 2
+ ],
+ "x": 12.5,
+ "y": 2
+ },
+ {
+ "matrix": [
+ 10,
+ 3
+ ],
+ "x": 13.5,
+ "y": 2
+ },
+ {
+ "matrix": [
+ 10,
+ 4
+ ],
+ "x": 14.5,
+ "y": 2
+ },
+ {
+ "matrix": [
+ 10,
+ 5
+ ],
+ "x": 15.5,
+ "y": 2
+ },
+ {
+ "matrix": [
+ 10,
+ 6
+ ],
+ "x": 16.5,
+ "y": 2
+ },
+ {
+ "matrix": [
+ 2,
+ 6
+ ],
+ "x": 0,
+ "y": 3
+ },
+ {
+ "matrix": [
+ 2,
+ 5
+ ],
+ "x": 1,
+ "y": 3
+ },
+ {
+ "matrix": [
+ 2,
+ 4
+ ],
+ "x": 2,
+ "y": 3
+ },
+ {
+ "matrix": [
+ 2,
+ 3
+ ],
+ "x": 3,
+ "y": 3
+ },
+ {
+ "matrix": [
+ 2,
+ 2
+ ],
+ "x": 4,
+ "y": 3
+ },
+ {
+ "matrix": [
+ 2,
+ 1
+ ],
+ "x": 5,
+ "y": 3
+ },
+ {
+ "matrix": [
+ 2,
+ 0
+ ],
+ "x": 6,
+ "y": 3
+ },
+ {
+ "matrix": [
+ 9,
+ 0
+ ],
+ "x": 10.5,
+ "y": 3
+ },
+ {
+ "matrix": [
+ 9,
+ 1
+ ],
+ "x": 11.5,
+ "y": 3
+ },
+ {
+ "matrix": [
+ 9,
+ 2
+ ],
+ "x": 12.5,
+ "y": 3
+ },
+ {
+ "matrix": [
+ 9,
+ 3
+ ],
+ "x": 13.5,
+ "y": 3
+ },
+ {
+ "matrix": [
+ 9,
+ 4
+ ],
+ "x": 14.5,
+ "y": 3
+ },
+ {
+ "matrix": [
+ 9,
+ 5
+ ],
+ "x": 15.5,
+ "y": 3
+ },
+ {
+ "matrix": [
+ 9,
+ 6
+ ],
+ "x": 16.5,
+ "y": 3
+ },
+ {
+ "matrix": [
+ 1,
+ 3
+ ],
+ "x": 3,
+ "y": 4
+ },
+ {
+ "matrix": [
+ 1,
+ 2
+ ],
+ "x": 4,
+ "y": 4
+ },
+ {
+ "matrix": [
+ 8,
+ 2
+ ],
+ "x": 13.5,
+ "y": 4
+ },
+ {
+ "matrix": [
+ 8,
+ 3
+ ],
+ "x": 14.5,
+ "y": 4
+ },
+ {
+ "matrix": [
+ 0,
+ 3
+ ],
+ "x": 5.25,
+ "y": 4.25
+ },
+ {
+ "matrix": [
+ 0,
+ 2
+ ],
+ "x": 6.25,
+ "y": 4.25
+ },
+ {
+ "matrix": [
+ 7,
+ 0
+ ],
+ "x": 10,
+ "y": 4.25
+ },
+ {
+ "matrix": [
+ 0,
+ 7
+ ],
+ "x": 5.75,
+ "y": 5.25
+ },
+ {
+ "matrix": [
+ 0,
+ 1
+ ],
+ "x": 6.75,
+ "y": 5.25
+ },
+ {
+ "matrix": [
+ 7,
+ 1
+ ],
+ "x": 10.75,
+ "y": 5.25
+ },
+ {
+ "matrix": [
+ 0,
+ 6
+ ],
+ "x": 6.25,
+ "y": 6.25
+ },
+ {
+ "matrix": [
+ 0,
+ 0
+ ],
+ "x": 7.25,
+ "y": 6.25
+ },
+ {
+ "matrix": [
+ 7,
+ 3
+ ],
+ "x": 9.75,
+ "y": 6.25
+ },
+ {
+ "matrix": [
+ 7,
+ 2
+ ],
+ "x": 10.75,
+ "y": 6.25
+ }
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_cy_track/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/5x7_cy_track/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..125894b1ebc
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_cy_track/keymaps/vial/keymap.c
@@ -0,0 +1,336 @@
+/* Copyright 2023 Cyboard LLC (@Cyboard-DigitalTailor)
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include QMK_KEYBOARD_H
+#include "trackball.h"
+#include "5x7_cy_track.h"
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+#define _MOUSE 3
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+//#define TO_QWERTY TO(_QWERTY)
+//#define TO_DVORAK TO(_DVORAK)
+
+enum wyld_keycodes {
+ WYLD_AUTO_MS_TOG = SAFE_RANGE
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_QWERTY] = LAYOUT_manuform_5x7(
+ KC_ESC, KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_LBRC , KC_RBRC,
+ _______, KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_QUOT, KC_BACKSLASH,
+ _______, KC_CAPS , KC_A , KC_S , KC_D , KC_F , KC_G , KC_MUTE, KC_HOME, KC_H , KC_J , KC_K , KC_L ,KC_SCLN, KC_RCTL, _______,
+ KC_LCTL, 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_RCTL,
+ KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL,
+ RAISE, KC_SPC, LOWER,
+ KC_LALT, KC_BSPC, KC_ENT,
+ KC_LGUI, KC_TAB, KC_RCTL, KC_RALT
+ ),
+
+ [_LOWER] = LAYOUT_manuform_5x7(
+ _______,KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6, KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,_______,
+ _______,_______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,_______,
+ _______,_______,KC_LEFT,KC_UP,KC_DOWN,KC_RGHT,KC_LPRN, _______, _______, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU,QK_BOOT,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD,WYLD_AUTO_MS_TOG,
+ _______,_______, KC_EQL ,_______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [_RAISE] = LAYOUT_manuform_5x7(
+ _______,KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL,_______,
+ _______,_______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,_______,
+ QK_BOOT,_______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, _______, _______, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,_______,
+ DPI_RMOD,DPI_MOD,DPI_RST,_______,_______,SNIPING,DRGSCRL, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS,_______,
+ _______,KC_PSCR, _______, KC_P0,
+ _______, KC_BTN1, _______,
+ KC_BTN3, KC_BTN2, _______,
+ SNIPING,DRGSCRL, _______, _______
+ ),
+
+ [_MOUSE] = LAYOUT_manuform_5x7(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, KC_BTN3, KC_BTN2, KC_BTN1, _______, _______, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, KC_BTN1, _______,
+ KC_BTN3, KC_BTN2, _______,
+ SNIPING,DRGSCRL, _______, _______
+ ),
+
+ [4] = LAYOUT_manuform_5x7(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [5] = LAYOUT_manuform_5x7(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [6] = LAYOUT_manuform_5x7(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [7] = LAYOUT_manuform_5x7(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [8] = LAYOUT_manuform_5x7(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [9] = LAYOUT_manuform_5x7(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______
+ )
+};
+
+
+
+// AUTOMOUSE LAYERS
+#ifdef POINTING_DEVICE_AUTO_MOUSE_ENABLE
+void pointing_device_init_user(void) {
+ set_auto_mouse_enable(true);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case WYLD_AUTO_MS_TOG:
+ if (record->event.pressed) {
+ set_auto_mouse_enable(!get_auto_mouse_enable());
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+#endif
+
+// ENCODERS
+#ifdef ENCODER_MAP_ENABLE
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_QWERTY] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_LOWER] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_RAISE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_MOUSE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [4] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [5] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [6] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [7] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [8] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [9] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) }
+};
+//#endif
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+const rgblight_segment_t PROGMEM querty_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_RED}, // Light 4 LEDs, starting with LED 6
+ {33, 3, HSV_RED} // Light 4 LEDs, starting with LED 6
+);
+const rgblight_segment_t PROGMEM lower_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_BLUE},
+ {33, 3, HSV_BLUE}
+);
+const rgblight_segment_t PROGMEM raise_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_YELLOW},
+ {33, 3, HSV_YELLOW}
+);
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ querty_layer, // Overrides caps lock layer
+ lower_layer, // Overrides other layers
+ raise_layer // Overrides other layers
+);
+
+//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(0, layer_state_cmp(state, _QWERTY));
+ return state;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(1, layer_state_cmp(state, _LOWER));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _RAISE));
+ return state;
+}
+
+
+#endif
+
+// rgblight_enable();
+#ifdef RGBLIGHT_ENABLE
+void keyboard_post_init_user(void) {
+ // Enable the LED layers
+ rgblight_layers = my_rgb_layers;
+}
+// rgblight_layers = my_rgb_layers;
+// rgblight_enable_noeeprom(); // Enables RGB, without saving settings
+// rgblight_sethsv_noeeprom_cyan();
+// rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
+#endif
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_left()) {
+ return OLED_ROTATION_270;
+ }
+#ifdef POINTING_DEVICE_ENABLE
+ return OLED_ROTATION_270;
+#else
+ return OLED_ROTATION_0;
+#endif
+}
+
+#ifndef POINTING_DEVICE_ENABLE
+static const char PROGMEM wylderbuilds[] = {
+ // 'dark wylderbuilds_oled_name', 128x32
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40,
+ 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x20, 0x60,
+ 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x60, 0x60,
+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0,
+ 0x00, 0x00, 0xc1, 0xc1, 0x01, 0x01, 0xf1, 0x11, 0x01, 0x01, 0x01, 0x31, 0x60, 0xc0, 0x80, 0xc0,
+ 0xf0, 0x10, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0,
+ 0x00, 0x01, 0x03, 0x9e, 0xf8, 0x00, 0x00, 0x20, 0xe0, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0xf0, 0x30, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x98, 0xf0, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x00, 0x70, 0xfe, 0x03, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00,
+ 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x11, 0xf1, 0x11, 0x33, 0x63, 0xc3,
+ 0x83, 0x01, 0x01, 0xc1, 0xe1, 0x31, 0x11, 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,
+ 0x1f, 0x7c, 0xff, 0x07, 0x7c, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7f, 0xff,
+ 0x60, 0x30, 0x18, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xf2, 0x82, 0x02, 0x80, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x7f, 0x0e, 0x1b, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0x81, 0xc1, 0x63,
+ 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00,
+ 0x00, 0x1f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x60, 0x30, 0x1f,
+ 0x07, 0x00, 0x00, 0x01, 0x43, 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static void render_wylderbuilds(void) {
+ oled_write_raw_P(wylderbuilds, sizeof(wylderbuilds));
+}
+
+#endif
+
+static char layer_names[9][8] = {
+ " BASE\n",
+ "LOWER\n",
+ "RAISE\n",
+ "MOUSE\n",
+ "XTRA1\n",
+ "XTRA2\n",
+ "XTRA3\n",
+ "XTRA4\n",
+ "XTRA5\n"
+ };
+
+bool oled_task_user(void) {
+ char* layer_name = layer_names[get_highest_layer(layer_state)];
+
+ if (is_keyboard_left()) {
+ // oled_write_P(PSTR("Layer\n"), false);
+ oled_set_cursor(0, 3);
+ oled_write_P(PSTR(layer_name), false);
+
+ oled_set_cursor(2, 6);
+ oled_write_P(PSTR("WPM "), false);
+ oled_set_cursor(2, 7);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 9);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+ } else {
+ // write WPM to right OLED
+#ifdef POINTING_DEVICE_ENABLE
+ char* mode = get_mouse_mode_string();
+ uint16_t dpi = get_current_dpi();
+ oled_set_cursor(2, 3);
+ oled_write_P(PSTR("DPI "), false);
+ oled_set_cursor(0, 5);
+ oled_write_P(PSTR(get_u16_str(dpi, ' ')), false);
+ oled_set_cursor(0, 9);
+ oled_write(PSTR(mode), false);
+#else
+ oled_set_cursor(0, 0);
+ render_wylderbuilds();
+ oled_scroll_left();
+#endif
+ }
+
+ return false;
+}
+#endif
+
+
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_cy_track/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/5x7_cy_track/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..9ab57695a65
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_cy_track/keymaps/vial/rules.mk
@@ -0,0 +1,9 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_cy_track/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/5x7_cy_track/keymaps/vial/vial.json
new file mode 100644
index 00000000000..eca689a6871
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_cy_track/keymaps/vial/vial.json
@@ -0,0 +1,203 @@
+{
+ "name": "Dactyl",
+ "vendorId": "0xFEED",
+ "productId": "0x0000",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 8
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 5x7 Track Assimilator"
+ },
+ [
+ {
+ "x": 3
+ },
+ "5,3",
+ "5,2",
+ "5,1",
+ "5,0",
+ {
+ "x": 4
+ },
+ "12,0",
+ "12,1",
+ "12,2",
+ "12,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "5,6",
+ "5,5",
+ "5,4",
+ {
+ "x": 12
+ },
+ "12,4",
+ "12,5",
+ "12,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,3",
+ "4,2",
+ "4,1",
+ "4,0",
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne",
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "4,6",
+ "4,5",
+ "4,4",
+ {
+ "x": 12
+ },
+ "11,4",
+ "11,5",
+ "11,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,3",
+ {
+ "n": true
+ },
+ "3,2",
+ "3,1",
+ "3,0",
+ {
+ "x": 0.5
+ },
+ "1,0",
+ {
+ "x": 1
+ },
+ "8,0",
+ {
+ "x": 0.5
+ },
+ "10,0",
+ {
+ "n": true
+ },
+ "10,1",
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "3,6",
+ "3,5",
+ "3,4",
+ {
+ "x": 12
+ },
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,3",
+ "2,2",
+ "2,1",
+ "2,0",
+ {
+ "x": 4
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "2,6",
+ "2,5",
+ "2,4",
+ {
+ "x": 12
+ },
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,3",
+ "1,2",
+ {
+ "x": 8
+ },
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 5.25
+ },
+ "0,3",
+ "0,2",
+ {
+ "x": 3.5
+ },
+ "7,0"
+ ],
+ [
+ {
+ "x": 5.75
+ },
+ "0,7",
+ "0,1",
+ {
+ "x": 3
+ },
+ "7,1"
+ ],
+ [
+ {
+ "x": 6.25
+ },
+ "0,6",
+ "0,0",
+ {
+ "x": 1.5
+ },
+ "7,3",
+ "7,2"
+ ]
+ ]
+ }
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_cy_track/mcuconf.h b/keyboards/handwired/wylderbuilds/trackball/5x7_cy_track/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_cy_track/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_cy_track/rules.mk b/keyboards/handwired/wylderbuilds/trackball/5x7_cy_track/rules.mk
new file mode 100644
index 00000000000..3586c5a52f6
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_cy_track/rules.mk
@@ -0,0 +1,25 @@
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+#POINTING_DEVICE_DRIVER = adns9800
+#RGBLIGHT_ENABLE = no
+#MOUSEKEY_ENABLE = yes
+CONSOLE_ENABLE = no
+POINTING_DEVICE_ENABLE = yes
+POINTING_DEVICE_DRIVER = pmw3360
+##COMMAND_ENABLE = yes
+#BOOTMAGIC_ENABLE = yes
+#NKRO_ENABLE = yes # Enable N-Key Rollover
+#RGB_MATRIX_ENABLE = yes
+OLED_ENABLE = yes
+##OLED_DRIVER = SSD1306
+
+
+WPM_ENABLE = yes
+#EXTRAKEY_ENABLE = yes # Audio control and System control
+#
+#ENCODER_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+#
+OPT_DEFS += -DHAL_USE_I2C=TRUE
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_full_dual_track/5x7_full_dual_track.c b/keyboards/handwired/wylderbuilds/trackball/5x7_full_dual_track/5x7_full_dual_track.c
new file mode 100644
index 00000000000..30581a819cc
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_full_dual_track/5x7_full_dual_track.c
@@ -0,0 +1 @@
+#include "5x7_full_dual_track.h"
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_full_dual_track/5x7_full_dual_track.h b/keyboards/handwired/wylderbuilds/trackball/5x7_full_dual_track/5x7_full_dual_track.h
new file mode 100644
index 00000000000..faf30cd4c3f
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_full_dual_track/5x7_full_dual_track.h
@@ -0,0 +1,31 @@
+#pragma once
+
+#include "trackball.h"
+
+#define XXX KC_NO
+
+
+#define LAYOUT_5x7( \
+ 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, R30, R31, R32, R33, R34, R35, R36, \
+ L40, L41, L42, L43, L44, R42, R43, R44, R45, R46, \
+ L56, R50, \
+ L55, R51, \
+ L53, L54, R52, R53 \
+) { \
+ { 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 }, \
+ { L40, L41, L42, L43, L44, XXX, XXX }, \
+ { XXX, XXX, XXX, L53, L54, L55, L56 }, \
+\
+ { R00, R01, R02, R03, R04, R05, R06 }, \
+ { R10, R11, R12, R13, R14, R15, R16 }, \
+ { R20, R21, R22, R23, R24, R25, R26 }, \
+ { R30, R31, R32, R33, R34, R35, R36 }, \
+ { XXX, XXX, R42, R43, R44, R45, R46 }, \
+ { R50, R51, R52, R53, XXX, XXX, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_full_dual_track/config.h b/keyboards/handwired/wylderbuilds/trackball/5x7_full_dual_track/config.h
new file mode 100644
index 00000000000..c1666c26780
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_full_dual_track/config.h
@@ -0,0 +1,154 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+//#include "config_common.h"
+// Basic Config
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+
+
+#define USE_SERIAL
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+#define SPLIT_LAYER_STATE_ENABLE
+
+
+#define USE_SERIAL
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+//#define SERIAL_USART_PIN_SWAPg^[]~&mvbmn h[`|yyh
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Columns are doubled-up
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 7
+
+#define MATRIX_COL_PINS { GP8, GP7, GP6, GP5, GP4, GP3, GP2 }
+#define MATRIX_ROW_PINS { GP9, GP10, GP11, GP12, GP13, GP14 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define SPLIT_POINTING_ENABLE
+#define POINTING_DEVICE_COMBINED
+#define POINTING_DEVICE_ROTATION_90
+//#define POINTING_DEVICE_ROTATION_90_RIGHT // TESTING RIGHT COMMENTED OUT
+#define ROTATIONAL_TRANSFORM_ANGLE -45 // TESTING RIGHT SHIFTED FROM -35 TO -45 TO TEST LEFT
+#define POINTING_DEVICE_INVERT_Y_RIGHT
+#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_INVERT_X
+//#define POINTING_DEVICE_INVERT_X_RIGHT
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x02
+
+#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+#define POINTING_DEVICE_AUTO_MOUSE_ENABLE
+// only required if not setting mouse layer elsewhere
+#define AUTO_MOUSE_DEFAULT_LAYER 3
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 4
+
+#define CHARYBDIS_MINIMUM_DEFAULT_DPI 1200
+#define CHARYBDIS_DEFAULT_DPI_CONFIG_STEP 400
+#define CHARYBDIS_MINIMUM_SNIPING_DPI 400
+#define CHARYBDIS_SNIPING_DPI_CONFIG_STEP 200
+
+//// Rotary Encoder ////
+//#define ENCODERS_PAD_A { }
+//#define ENCODERS_PAD_B { }
+//#define ENCODER_RESOLUTIONS { }
+
+#ifdef ENCODER_ENABLE
+#define ENCODERS_PAD_A { GP22 }
+#define ENCODERS_PAD_B { GP28 }
+#define ENCODER_RESOLUTIONS { 2 }
+#define ENCODERS_PAD_A_RIGHT { GP27 }
+#define ENCODERS_PAD_B_RIGHT { GP29 }
+#define ENCODER_RESOLUTIONS_RIGHT { 2 }
+#endif
+
+//// Sensor Notes ////
+//// Pi Pico pins ////
+// 3V3 -- Power (not 3v3_EN!)
+// GP21 -- CS pin
+// GP20 -- MISO pin
+// GP19 -- MOSI pin
+// GP18 -- SCK pin clock
+// GND -- GND
+
+// WS2812 RGB LED strip input and number of LEDs
+//#ifdef RGBLIGHT_ENABLE
+//#define RGB_DI_PIN GP17
+//#define RGBLED_NUM 34
+////#define DRIVER_LED_TOTAL 34
+//#define RGBLED_SPLIT { 17, 17 }
+//#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+//#define NOP_FUDGE 0.4
+//#endif
+
+//// OLED Pins and Driver
+// #define SPLIT_LED_ENABLE
+
+//// OLED Pins and Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD0
+#define I2C1_SDA_PIN GP16
+#define I2C1_SCL_PIN GP17
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_MODS_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+//#ifdef RGBLIGHT_ENABLE
+//#define WS2812_PIO_USE_PIO1
+////#define WS2812_PIO_USE_PIO1
+////#define WS2812_PIO_USE_PIO1
+//#define RGBLIGHT_LAYERS
+//#define WS2812_DI_PIN GP22 // can use trackball jack if not used
+////#define WS2812_EXTERNAL_PULLUP
+//#define RGBLED_NUM 36
+////#define DRIVER_LED_TOTAL 34
+//#define RGBLED_SPLIT { 18, 18 }
+//#define RGBLIGHT_SPLIT
+//#define RGBLIGHT_EFFECT_RGB_TEST
+//#define RGBLIGHT_EFFECT_BREATHING
+//#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+//#define RGBLIGHT_EFFECT_SNAKE
+//#define RGBLIGHT_EFFECT_TWINKLE
+//#define RGBLIGHT_HUE_STEP 8
+//#define RGBLIGHT_SAT_STEP 8
+//#define RGBLIGHT_VAL_STEP 17
+//#define RGBLIGHT_LIMIT_VAL 100
+////#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+//#define NOP_FUDGE 0.4 // may not be needed if ws driver loaded
+//#endif
+
+// Misc settings
+// 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
+// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_full_dual_track/info.json b/keyboards/handwired/wylderbuilds/trackball/5x7_full_dual_track/info.json
new file mode 100644
index 00000000000..02bc5407aea
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_full_dual_track/info.json
@@ -0,0 +1,400 @@
+{
+ "keyboard_name": "Dactyl-Manuform 5x7 Full Dual Trackball (5x7_full_dual_track)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "bootloader": "rp2040",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0116",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 12,
+ "cols": 7
+ },
+ "matrix_size": {
+ "cols": 7,
+ "rows": 12
+ },
+ "layouts": {
+ "LAYOUT_5x7": {
+ "layout": [
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "0,6",
+ "x": 7,
+ "y": 0
+ },
+ {
+ "label": "6,0",
+ "x": 12,
+ "y": 0
+ },
+ {
+ "label": "6,1",
+ "x": 13,
+ "y": 0
+ },
+ {
+ "label": "6,2",
+ "x": 14,
+ "y": 0
+ },
+ {
+ "label": "6,3",
+ "x": 15,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0.5
+ },
+ {
+ "label": "6,4",
+ "x": 16,
+ "y": 0.5
+ },
+ {
+ "label": "6,5",
+ "x": 17,
+ "y": 0.5
+ },
+ {
+ "label": "6,6",
+ "x": 18,
+ "y": 0.5
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "1,6",
+ "x": 7,
+ "y": 1
+ },
+ {
+ "label": "7,0",
+ "x": 12,
+ "y": 1
+ },
+ {
+ "label": "7,1",
+ "x": 13,
+ "y": 1
+ },
+ {
+ "label": "7,2",
+ "x": 14,
+ "y": 1
+ },
+ {
+ "label": "7,3",
+ "x": 15,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1.5
+ },
+ {
+ "label": "7,4",
+ "x": 16,
+ "y": 1.5
+ },
+ {
+ "label": "7,5",
+ "x": 17,
+ "y": 1.5
+ },
+ {
+ "label": "7,6",
+ "x": 18,
+ "y": 1.5
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "2,6",
+ "x": 7,
+ "y": 2
+ },
+ {
+ "label": "8,0",
+ "x": 12,
+ "y": 2
+ },
+ {
+ "label": "8,1",
+ "x": 13,
+ "y": 2
+ },
+ {
+ "label": "8,2",
+ "x": 14,
+ "y": 2
+ },
+ {
+ "label": "8,3",
+ "x": 15,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2.5
+ },
+ {
+ "label": "8,4",
+ "x": 16,
+ "y": 2.5
+ },
+ {
+ "label": "8,5",
+ "x": 17,
+ "y": 2.5
+ },
+ {
+ "label": "8,6",
+ "x": 18,
+ "y": 2.5
+ },
+ {
+ "label": "3,3",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "3,4",
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "3,5",
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "3,6",
+ "x": 7,
+ "y": 3
+ },
+ {
+ "label": "9,0",
+ "x": 12,
+ "y": 3
+ },
+ {
+ "label": "9,1",
+ "x": 13,
+ "y": 3
+ },
+ {
+ "label": "9,2",
+ "x": 14,
+ "y": 3
+ },
+ {
+ "label": "9,3",
+ "x": 15,
+ "y": 3
+ },
+ {
+ "label": "3,0",
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "label": "3,1",
+ "x": 2,
+ "y": 3.5
+ },
+ {
+ "label": "3,2",
+ "x": 3,
+ "y": 3.5
+ },
+ {
+ "label": "9,4",
+ "x": 16,
+ "y": 3.5
+ },
+ {
+ "label": "9,5",
+ "x": 17,
+ "y": 3.5
+ },
+ {
+ "label": "9,6",
+ "x": 18,
+ "y": 3.5
+ },
+ {
+ "label": "4,3",
+ "x": 4,
+ "y": 4
+ },
+ {
+ "label": "4,4",
+ "x": 5,
+ "y": 4
+ },
+ {
+ "label": "10,2",
+ "x": 14,
+ "y": 4
+ },
+ {
+ "label": "10,3",
+ "x": 15,
+ "y": 4
+ },
+ {
+ "label": "5,6",
+ "x": 6.75,
+ "y": 4.25
+ },
+ {
+ "label": "11,0",
+ "x": 12.25,
+ "y": 4.25
+ },
+ {
+ "label": "4,0",
+ "x": 1,
+ "y": 4.5
+ },
+ {
+ "label": "4,1",
+ "x": 2,
+ "y": 4.5
+ },
+ {
+ "label": "4,2",
+ "x": 3,
+ "y": 4.5
+ },
+ {
+ "label": "10,4",
+ "x": 16,
+ "y": 4.5
+ },
+ {
+ "label": "10,5",
+ "x": 17,
+ "y": 4.5
+ },
+ {
+ "label": "10,6",
+ "x": 18,
+ "y": 4.5
+ },
+ {
+ "label": "5,5",
+ "x": 6.75,
+ "y": 5.5
+ },
+ {
+ "label": "11,1",
+ "x": 12.25,
+ "y": 5.5
+ },
+ {
+ "label": "5,3",
+ "x": 6.75,
+ "y": 6.75
+ },
+ {
+ "label": "5,4",
+ "x": 8,
+ "y": 6.75
+ },
+ {
+ "label": "11,2",
+ "x": 11,
+ "y": 6.75
+ },
+ {
+ "label": "11,3",
+ "x": 12.25,
+ "y": 6.75
+ }
+ ]
+ }
+ }
+}
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_full_dual_track/keymaps/default/keymap.c b/keyboards/handwired/wylderbuilds/trackball/5x7_full_dual_track/keymaps/default/keymap.c
new file mode 100644
index 00000000000..50288c38948
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_full_dual_track/keymaps/default/keymap.c
@@ -0,0 +1,118 @@
+#include QMK_KEYBOARD_H
+
+#define _BASE 0
+#define _NAV 1
+#define _SYST 2
+#define _MOUSE 3 //layer for mouse functions
+
+// Macros
+#define TASK LCTL(LSFT(KC_ESC))
+#define TAB_R LCTL(KC_TAB)
+#define TAB_L LCTL(LSFT(KC_TAB))
+#define TAB_RO LCTL(LSFT(KC_T))
+#define CAD LCTL(LALT(KC_DEL))
+#define IAD LCTL(LALT(KC_INS))
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_BASE] = LAYOUT_5x7(
+ // left hand // right hand
+ LT(_SYST, 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, 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_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(_SYST),
+ KC_APP, KC_LGUI, MO(_NAV), TG(_MOUSE),
+ KC_LALT, LT(_NAV, KC_SPC), KC_SPC,
+ KC_BTN3, KC_BTN1, KC_WFWD,
+ _______, _______, _______, KC_WBAK),
+
+ [_NAV] = LAYOUT_5x7(
+ // left hand // right hand
+ KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC,
+ _______, _______, _______, LCTL(LSFT(KC_E)), _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______, _______,
+ _______, LCTL(KC_A), LCTL(KC_S), _______, _______, _______, KC_PGUP, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______,
+ _______, KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, _______, KC_PGDN, TAB_L, TAB_R, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+ [_SYST] = LAYOUT_5x7(
+ // left hand // right hand
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______,
+ _______, KC_INS, KC_PAUS, _______, IAD, CAD, _______, _______, _______, _______, _______, _______, _______,
+ KC_CAPS, KC_NUM, KC_SCRL, _______, _______, _______, _______, _______, _______, KC_MSTP, KC_VOLD, KC_VOLU, KC_MUTE,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, QK_BOOT, EE_CLR,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+
+ [_MOUSE] = LAYOUT_5x7(
+ // left hand // right hand
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+};
+
+
+//void keyboard_post_init_user(void) {
+// // Customise these values to desired behaviour
+// debug_enable=true;
+// debug_matrix=true;
+// debug_keyboard=true;
+// debug_mouse=true;
+//}
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_NAV] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_SYST] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_MOUSE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+};
+#endif
+
+#ifdef OLED_ENABLE
+bool oled_task_user(void) {
+ // Host Keyboard Layer Status
+ oled_write_P(PSTR("Layer: "), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _BASE:
+ oled_write_P(PSTR("Base\n"), false);
+ break;
+ case _NAV:
+ oled_write_P(PSTR("Nav\n"), false);
+ break;
+ case _SYST:
+ oled_write_P(PSTR("System\n"), false);
+ break;
+ case _MOUSE:
+ oled_write_P(PSTR("Mouse\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+
+ // Host Keyboard LED Status
+ led_t led_state = host_keyboard_led_state();
+ oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
+
+ return false;
+}
+#endif
+
+#define imageWidth 128
+#define imageHeight 36
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_full_dual_track/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/5x7_full_dual_track/keymaps/vial/config.h
new file mode 100644
index 00000000000..07965945fd2
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_full_dual_track/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xA7, 0x50, 0xDA, 0x3E, 0x6C, 0x63, 0x01, 0x38}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 5 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 5 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_full_dual_track/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/5x7_full_dual_track/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..c70944dc58f
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_full_dual_track/keymaps/vial/keymap.c
@@ -0,0 +1,237 @@
+#include QMK_KEYBOARD_H
+#include "5x7_full_dual_track.h"
+
+//#define _WORKMAN 0
+
+#define _QWERTY 0
+//#define _DVORAK 1
+#define _LOWER 1
+#define _RAISE 2
+#define _MOUSE 3
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+
+enum wyld_keycodes {
+ WYLD_AUTO_MS_TOG = SAFE_RANGE
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[_QWERTY] = LAYOUT_5x7(
+ DRGSCRL, KC_ESC , KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC,
+ SNIPING, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, KC_EQL,
+ KC_BTN3, 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_BTN1, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT ,KC_SLSH, KC_BSLS, KC_BTN1,
+ KC_LCTL, KC_LALT,KC_LGUI,KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL, KC_RGUI, KC_RALT, KC_RCTL,
+ RAISE, LOWER,
+ KC_SPC, KC_ENT,
+ KC_TAB, KC_HOME, KC_LGUI, KC_LALT
+),
+
+
+[_LOWER] = LAYOUT_5x7(
+ _______,KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL,_______,
+ _______,_______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,_______,
+ _______,_______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,_______,
+ _______,_______,_______,_______,_______,SNIPING,DRGSCRL, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS,_______,
+ _______,_______,_______,_______,KC_PSCR, _______, KC_P0,_______,_______,WYLD_AUTO_MS_TOG,
+ _______, _______,
+ KC_BTN1, _______,
+ KC_BTN2, KC_BTN3, _______,QK_BOOT
+
+),
+
+[_RAISE] = LAYOUT_5x7(
+ _______,KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6, KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,_______,
+ _______,_______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,_______,
+ _______,_______,KC_LEFT,KC_UP,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD,_______,
+ _______,_______,_______,_______,_______, KC_EQL ,_______,_______,_______,_______,
+ _______, _______,
+ _______, _______,
+ QK_BOOT,_______, _______,_______
+),
+[_MOUSE] = LAYOUT_5x7(
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,SNIPING,DRGSCRL, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______, _______,_______,_______,_______,_______,
+ _______, _______,
+ KC_BTN1, _______,
+ KC_BTN2, KC_BTN3, _______,QK_BOOT
+)
+};
+
+#ifdef POINTING_DEVICE_COMBINED
+
+
+static void check_drag(report_mouse_t* mouse_report) {
+ static int16_t scroll_buffer_x = 0;
+ static int16_t scroll_buffer_y = 0;
+
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_X
+ scroll_buffer_x -= mouse_report->x;
+# else
+ scroll_buffer_x += mouse_report->x;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_X
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ scroll_buffer_y -= mouse_report->y;
+# else
+ scroll_buffer_y += mouse_report->y;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ mouse_report->x = 0;
+ mouse_report->y = 0;
+ if (abs(scroll_buffer_x) > 6) {
+ mouse_report->h = scroll_buffer_x > 0 ? 1 : -1;
+ scroll_buffer_x = 0;
+ }
+ if (abs(scroll_buffer_y) > 6) {
+ mouse_report->v = scroll_buffer_y > 0 ? 1 : -1;
+ scroll_buffer_y = 0;
+ }
+}
+
+report_mouse_t pointing_device_task_combined_user(report_mouse_t left_report, report_mouse_t right_report) {
+ check_drag(&left_report); // updated in trackball.c
+ return pointing_device_combine_reports(left_report, right_report);
+}
+#endif
+
+#ifdef POINTING_DEVICE_AUTO_MOUSE_ENABLE
+void pointing_device_init_user(void) {
+ set_auto_mouse_enable(true);
+#ifdef POINTING_DEVICE_COMBINED
+ pointing_device_set_cpi_on_side(true, CHARYBDIS_DRAGSCROLL_DPI); // LEFT
+ pointing_device_set_cpi_on_side(false, 2000); // RIGHT
+#endif// always required before the auto mouse feature will work
+}
+
+// Ensures only the pointing device activates mouse layer on dual track builds
+// And also prevents dragscroll from activating it
+bool auto_mouse_activation(report_mouse_t mouse_report) {
+ return mouse_report.x != 0 || mouse_report.y != 0 || mouse_report.buttons;
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case WYLD_AUTO_MS_TOG:
+ if (record->event.pressed) {
+ set_auto_mouse_enable(!get_auto_mouse_enable());
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+#endif
+
+void keyboard_post_init_user(void) {
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+ debug_keyboard=true;
+ debug_mouse=true;
+#else
+ debug_enable=false;
+ debug_matrix=false;
+ debug_keyboard=false;
+ debug_mouse=false;
+#endif
+}
+
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_left()) {
+ return OLED_ROTATION_270;
+ }
+ return OLED_ROTATION_0;
+}
+
+static const char PROGMEM wylderbuilds[] = {
+ // 'dark wylderbuilds_oled_name', 128x32
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40,
+ 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x20, 0x60,
+ 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x60, 0x60,
+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0,
+ 0x00, 0x00, 0xc1, 0xc1, 0x01, 0x01, 0xf1, 0x11, 0x01, 0x01, 0x01, 0x31, 0x60, 0xc0, 0x80, 0xc0,
+ 0xf0, 0x10, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0,
+ 0x00, 0x01, 0x03, 0x9e, 0xf8, 0x00, 0x00, 0x20, 0xe0, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0xf0, 0x30, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x98, 0xf0, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x00, 0x70, 0xfe, 0x03, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00,
+ 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x11, 0xf1, 0x11, 0x33, 0x63, 0xc3,
+ 0x83, 0x01, 0x01, 0xc1, 0xe1, 0x31, 0x11, 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,
+ 0x1f, 0x7c, 0xff, 0x07, 0x7c, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7f, 0xff,
+ 0x60, 0x30, 0x18, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xf2, 0x82, 0x02, 0x80, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x7f, 0x0e, 0x1b, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0x81, 0xc1, 0x63,
+ 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00,
+ 0x00, 0x1f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x60, 0x30, 0x1f,
+ 0x07, 0x00, 0x00, 0x01, 0x43, 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static void render_wylderbuilds(void) {
+ oled_write_raw_P(wylderbuilds, sizeof(wylderbuilds));
+}
+
+bool oled_task_user(void) {
+ oled_set_cursor(0, 3);
+ if (is_keyboard_left()) {
+ // oled_write_P(PSTR("Layer\n"), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ oled_write_P(PSTR(" QWTY\n"), false);
+ break;
+ case _LOWER:
+ oled_write_P(PSTR("LOWER\n"), false);
+ break;
+ case _RAISE:
+ oled_write_P(PSTR("RAISE\n"), false);
+ break;
+ case _MOUSE:
+ oled_write_P(PSTR("MOUSE\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+ oled_set_cursor(2, 7);
+ oled_write_P(PSTR("WPM "), false);
+ oled_set_cursor(1, 8);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 9);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+ } else {
+ // write WPM to right OLED
+ oled_set_cursor(0, 0);
+ render_wylderbuilds();
+ oled_scroll_left();
+ }
+
+ return false;
+}
+#endif
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_full_dual_track/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/5x7_full_dual_track/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_full_dual_track/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_full_dual_track/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/5x7_full_dual_track/keymaps/vial/vial.json
new file mode 100644
index 00000000000..bae0653fc55
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_full_dual_track/keymaps/vial/vial.json
@@ -0,0 +1,214 @@
+{
+ "matrix": {
+ "rows": 12,
+ "cols": 7
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 5x7 Full Dual Track"
+ },
+ [
+ {
+ "x": 4
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 4
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ "0,2",
+ {
+ "x": 12
+ },
+ "6,4",
+ "6,5",
+ "6,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ {
+ "x": 4
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ {
+ "x": 12
+ },
+ "7,4",
+ "7,5",
+ "7,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ "2,6",
+ {
+ "x": 4
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ {
+ "x": 12
+ },
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ {
+ "x": 4
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ {
+ "x": 12
+ },
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "4,3",
+ "4,4",
+ {
+ "x": 8
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 6.75
+ },
+ "5,6",
+ {
+ "x": 4.5
+ },
+ "11,0"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 1
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ {
+ "x": 12
+ },
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ {
+ "x": 6.75
+ },
+ "5,5",
+ {
+ "x": 4.5
+ },
+ "11,1"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 6.75
+ },
+ "5,3",
+ {
+ "x": 0.25
+ },
+ "5,4",
+ {
+ "x": 2
+ },
+ "11,2",
+ {
+ "x": 0.25
+ },
+ "11,3"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_full_dual_track/mcuconf.h b/keyboards/handwired/wylderbuilds/trackball/5x7_full_dual_track/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_full_dual_track/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_full_dual_track/rules.mk b/keyboards/handwired/wylderbuilds/trackball/5x7_full_dual_track/rules.mk
new file mode 100644
index 00000000000..ef86a6ba140
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_full_dual_track/rules.mk
@@ -0,0 +1,21 @@
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+#POINTING_DEVICE_DRIVER = adns9800
+#RGBLIGHT_ENABLE = no
+MOUSEKEY_ENABLE = yes
+#CONSOLE_ENABLE = yes
+##COMMAND_ENABLE = yes
+BOOTMAGIC_ENABLE = yes
+NKRO_ENABLE = yes # Enable N-Key Rollover
+#RGB_MATRIX_ENABLE = yes
+OLED_ENABLE = no
+##OLED_DRIVER = SSD1306
+WPM_ENABLE = no
+EXTRAKEY_ENABLE = yes # Audio control and System control
+#
+#ENCODER_ENABLE = yes
+ENCODER_MAP_ENABLE = no # Enable N-Key Rollover
+#
+#OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_full_dual_track/wylderbuilds-5x7-full-dual-track.json b/keyboards/handwired/wylderbuilds/trackball/5x7_full_dual_track/wylderbuilds-5x7-full-dual-track.json
new file mode 100644
index 00000000000..4360d116895
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_full_dual_track/wylderbuilds-5x7-full-dual-track.json
@@ -0,0 +1,206 @@
+[
+ {
+ "name": "Wylderbuilds 5x7 Full Dual Track"
+ },
+ [
+ {
+ "x": 4
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 4
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ "0,2",
+ {
+ "x": 12
+ },
+ "6,4",
+ "6,5",
+ "6,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ {
+ "x": 4
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ {
+ "x": 12
+ },
+ "7,4",
+ "7,5",
+ "7,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ "2,6",
+ {
+ "x": 4
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ {
+ "x": 12
+ },
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ {
+ "x": 4
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ {
+ "x": 12
+ },
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "4,3",
+ "4,4",
+ {
+ "x": 8
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 6.75
+ },
+ "5,6",
+ {
+ "x": 4.5
+ },
+ "11,0"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 1
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ {
+ "x": 12
+ },
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ {
+ "x": 6.75
+ },
+ "5,5",
+ {
+ "x": 4.5
+ },
+ "11,1"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 6.75
+ },
+ "5,3",
+ {
+ "x": 0.25
+ },
+ "5,4",
+ {
+ "x": 2
+ },
+ "11,2",
+ {
+ "x": 0.25
+ },
+ "11,3"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/5x7_full_track.c b/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/5x7_full_track.c
new file mode 100644
index 00000000000..ad0a1f111ba
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/5x7_full_track.c
@@ -0,0 +1 @@
+#include "5x7_full_track.h"
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/5x7_full_track.h b/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/5x7_full_track.h
new file mode 100644
index 00000000000..14d3e4f2c4e
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/5x7_full_track.h
@@ -0,0 +1,30 @@
+#pragma once
+
+#include "trackball.h"
+
+#define XXX KC_NO
+
+
+#define LAYOUT_5x7( \
+ 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, L51, R53, R20, R21, R22, R23, R24, R25, R26, \
+ L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, \
+ L40, L41, L42, L43, L44, R42, R43, R44, R45, R46, \
+ L54, L55, L56, R50, R51, R52, \
+ L53, L52 \
+) { \
+ { 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 }, \
+ { L40, L41, L42, L43, L44, XXX, XXX }, \
+ { XXX, L51, L52, L53, L54, L55, L56 }, \
+\
+ { R00, R01, R02, R03, R04, R05, R06 }, \
+ { R10, R11, R12, R13, R14, R15, R16 }, \
+ { R20, R21, R22, R23, R24, R25, R26 }, \
+ { R30, R31, R32, R33, R34, R35, R36 }, \
+ { XXX, XXX, R42, R43, R44, R45, R46 }, \
+ { R50, R51, R52, R53, XXX, XXX, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/config.h b/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/config.h
new file mode 100644
index 00000000000..06f91ec5854
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/config.h
@@ -0,0 +1,95 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+//#include "config_common.h"
+// Basic Config
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+
+#define USE_SERIAL
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+//#define SERIAL_USART_PIN_SWAP
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Columns are doubled-up
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 7
+
+#define MATRIX_COL_PINS { GP8, GP7, GP6, GP5, GP4, GP3, GP2 }
+#define MATRIX_ROW_PINS { GP9, GP10, GP11, GP12, GP13, GP14 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define SPLIT_POINTING_ENABLE
+#define ROTATIONAL_TRANSFORM_ANGLE -25
+#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_RIGHT
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x02
+
+#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+#define POINTING_DEVICE_AUTO_MOUSE_ENABLE
+// only required if not setting mouse layer elsewhere
+#define AUTO_MOUSE_DEFAULT_LAYER 3
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
+//// Sensor Notes ////
+//// Pi Pico pins ////
+// 3V3 -- Power (not 3v3_EN)
+// GP17 -- CS pin
+// GP20 -- MISO pin
+// GP19 -- MOSI pin
+// GP18 -- SCK pin clock Driver
+
+#ifdef ENCODER_ENABLE
+#define ENCODERS_PAD_A { GP22 }
+#define ENCODERS_PAD_B { GP27 }
+#define ENCODER_RESOLUTIONS { 2 }
+#define ENCODERS_PAD_A_RIGHT { GP22 }
+#define ENCODERS_PAD_B_RIGHT { GP27 }
+#define ENCODER_RESOLUTIONS_RIGHT { 2 }
+#endif
+
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD0
+#define I2C1_SDA_PIN GP16
+#define I2C1_SCL_PIN GP17
+#define RGBLIGHT_LAYERS
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+// Misc settings
+// 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// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/info.json b/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/info.json
new file mode 100644
index 00000000000..df0a7f8c677
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/info.json
@@ -0,0 +1,563 @@
+{
+ "keyboard_name": "Dactyl-Manuform Wyld Trackball (5x7_full_track)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "bootloader": "rp2040",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0103",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 12,
+ "cols": 7
+ },
+ "ws2812": {
+ "pin": "GP28",
+ "driver": "vendor"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true,
+ "encoder": true
+ },
+ "matrix_size": {
+ "cols": 7,
+ "rows": 12
+ },
+ "rgb_matrix": {
+ "driver": "ws2812",
+ "max_brightness": 120,
+ "animations": {
+ "alpha_mods": true,
+ "breathing": true,
+ "colorband_pinwheel_sat": true,
+ "colorband_pinwheel_val": true,
+ "colorband_sat": true,
+ "colorband_spiral_sat": true,
+ "colorband_spiral_val": true,
+ "colorband_val": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_out_in": true,
+ "cycle_out_in_dual": true,
+ "cycle_pinwheel": true,
+ "cycle_spiral": true,
+ "cycle_up_down": true,
+ "digital_rain": true,
+ "dual_beacon": true,
+ "gradient_left_right": true,
+ "gradient_up_down": true,
+ "hue_breathing": true,
+ "hue_pendulum": true,
+ "hue_wave": true,
+ "jellybean_raindrops": true,
+ "pixel_flow": true,
+ "pixel_fractal": true,
+ "pixel_rain": true,
+ "rainbow_beacon": true,
+ "rainbow_moving_chevron": true,
+ "rainbow_pinwheels": true,
+ "raindrops": true,
+ "solid_color": true,
+ "solid_reactive": true,
+ "solid_reactive_cross": true,
+ "solid_reactive_nexus": true,
+ "solid_reactive_simple": true,
+ "solid_reactive_wide": true,
+ "solid_splash": true,
+ "splash": true,
+ "typing_heatmap": true
+ },
+ "split_count": [
+ 38,
+ 36
+ ],
+ "layout": [
+ {"flags": 4, "matrix": [0, 0], "x": 0, "y": 3},
+ {"flags": 4, "matrix": [1, 0], "x": 0, "y": 15},
+ {"flags": 4, "matrix": [2, 0], "x": 0, "y": 26},
+ {"flags": 4, "matrix": [3, 0], "x": 0, "y": 38},
+ {"flags": 4, "matrix": [4, 0], "x": 0, "y": 49},
+
+ {"flags": 4, "matrix": [0, 1], "x": 12, "y": 3},
+ {"flags": 4, "matrix": [1, 1], "x": 12, "y": 15},
+ {"flags": 4, "matrix": [2, 1], "x": 12, "y": 26},
+ {"flags": 4, "matrix": [3, 1], "x": 12, "y": 38},
+ {"flags": 4, "matrix": [4, 1], "x": 12, "y": 49},
+
+ {"flags": 4, "matrix": [0, 2], "x": 24, "y": 3},
+ {"flags": 4, "matrix": [1, 2], "x": 24, "y": 15},
+ {"flags": 4, "matrix": [2, 2], "x": 24, "y": 26},
+ {"flags": 4, "matrix": [3, 2], "x": 24, "y": 38},
+ {"flags": 4, "matrix": [4, 2], "x": 24, "y": 49},
+
+ {"flags": 4, "matrix": [0, 3], "x": 35, "y": 0},
+ {"flags": 4, "matrix": [1, 3], "x": 35, "y": 9},
+ {"flags": 4, "matrix": [2, 3], "x": 35, "y": 20},
+ {"flags": 4, "matrix": [3, 3], "x": 35, "y": 32},
+ {"flags": 4, "matrix": [4, 3], "x": 35, "y": 44},
+
+ {"flags": 4, "matrix": [0, 4], "x": 47, "y": 0},
+ {"flags": 4, "matrix": [1, 4], "x": 47, "y": 9},
+ {"flags": 4, "matrix": [2, 4], "x": 47, "y": 20},
+ {"flags": 4, "matrix": [3, 4], "x": 47, "y": 32},
+ {"flags": 4, "matrix": [4, 4], "x": 47, "y": 44},
+
+ {"flags": 4, "matrix": [0, 5], "x": 59, "y": 0},
+ {"flags": 4, "matrix": [1, 5], "x": 59, "y": 9},
+ {"flags": 4, "matrix": [2, 5], "x": 59, "y": 20},
+ {"flags": 4, "matrix": [3, 5], "x": 59, "y": 32},
+
+ {"flags": 4, "matrix": [0, 6], "x": 71, "y": 0},
+ {"flags": 4, "matrix": [1, 6], "x": 71, "y": 9},
+ {"flags": 4, "matrix": [2, 6], "x": 71, "y": 20},
+ {"flags": 4, "matrix": [3, 6], "x": 71, "y": 32},
+
+ {"flags": 4, "matrix": [5, 4], "x": 71, "y": 47},
+ {"flags": 4, "matrix": [5, 5], "x": 83, "y": 47},
+ {"flags": 4, "matrix": [5, 6], "x": 94, "y": 47},
+ {"flags": 4, "matrix": [5, 3], "x": 83, "y": 65},
+ {"flags": 4, "matrix": [5, 2], "x": 94, "y": 65},
+
+ {"flags": 4, "matrix": [6, 0], "x": 130, "y": 0},
+ {"flags": 4, "matrix": [7, 0], "x": 130, "y": 9},
+ {"flags": 4, "matrix": [8, 0], "x": 130, "y": 20},
+ {"flags": 4, "matrix": [9, 0], "x": 130, "y": 32},
+
+ {"flags": 4, "matrix": [6, 1], "x": 141, "y": 0},
+ {"flags": 4, "matrix": [7, 1], "x": 141, "y": 9},
+ {"flags": 4, "matrix": [8, 1], "x": 141, "y": 20},
+ {"flags": 4, "matrix": [9, 1], "x": 141, "y": 32},
+
+ {"flags": 4, "matrix": [6, 2], "x": 153, "y": 0},
+ {"flags": 4, "matrix": [7, 2], "x": 153, "y": 9},
+ {"flags": 4, "matrix": [8, 2], "x": 153, "y": 20},
+ {"flags": 4, "matrix": [9, 2], "x": 153, "y": 32},
+ {"flags": 4, "matrix": [10, 2], "x": 153, "y": 44},
+
+ {"flags": 4, "matrix": [6, 3], "x": 165, "y": 0},
+ {"flags": 4, "matrix": [7, 3], "x": 165, "y": 9},
+ {"flags": 4, "matrix": [8, 3], "x": 165, "y": 20},
+ {"flags": 4, "matrix": [9, 3], "x": 165, "y": 32},
+ {"flags": 4, "matrix": [10, 3], "x": 165, "y": 44},
+
+ {"flags": 4, "matrix": [6, 4], "x": 177, "y": 3},
+ {"flags": 4, "matrix": [7, 4], "x": 177, "y": 15},
+ {"flags": 4, "matrix": [8, 4], "x": 177, "y": 26},
+ {"flags": 4, "matrix": [9, 4], "x": 177, "y": 38},
+ {"flags": 4, "matrix": [10, 4], "x": 177, "y": 49},
+
+ {"flags": 4, "matrix": [6, 5], "x": 189, "y": 3},
+ {"flags": 4, "matrix": [7, 5], "x": 189, "y": 15},
+ {"flags": 4, "matrix": [8, 5], "x": 189, "y": 26},
+ {"flags": 4, "matrix": [9, 5], "x": 189, "y": 38},
+ {"flags": 4, "matrix": [10, 5], "x": 189, "y": 49},
+
+ {"flags": 4, "matrix": [6, 6], "x": 200, "y": 3},
+ {"flags": 4, "matrix": [7, 6], "x": 200, "y": 15},
+ {"flags": 4, "matrix": [8, 6], "x": 200, "y": 26},
+ {"flags": 4, "matrix": [9, 6], "x": 200, "y": 38},
+ {"flags": 4, "matrix": [10, 6], "x": 200, "y": 49},
+
+ {"flags": 4, "matrix": [11, 2], "x": 130, "y": 70},
+ {"flags": 4, "matrix": [11, 1], "x": 118, "y": 70},
+ {"flags": 4, "matrix": [11, 0], "x": 106, "y": 70}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_5x7": {
+ "layout": [
+ {
+ "label": "0,3",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,6",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "6,0",
+ "x": 11,
+ "y": 0
+ },
+ {
+ "label": "6,1",
+ "x": 12,
+ "y": 0
+ },
+ {
+ "label": "6,2",
+ "x": 13,
+ "y": 0
+ },
+ {
+ "label": "6,3",
+ "x": 14,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 0,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,2",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "6,4",
+ "x": 15,
+ "y": 0.5
+ },
+ {
+ "label": "6,5",
+ "x": 16,
+ "y": 0.5
+ },
+ {
+ "label": "6,6",
+ "x": 17,
+ "y": 0.5
+ },
+ {
+ "label": "1,3",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,6",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "7,0",
+ "x": 11,
+ "y": 1
+ },
+ {
+ "label": "7,1",
+ "x": 12,
+ "y": 1
+ },
+ {
+ "label": "7,2",
+ "x": 13,
+ "y": 1
+ },
+ {
+ "label": "7,3",
+ "x": 14,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 0,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,2",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "7,4",
+ "x": 15,
+ "y": 1.5
+ },
+ {
+ "label": "7,5",
+ "x": 16,
+ "y": 1.5
+ },
+ {
+ "label": "7,6",
+ "x": 17,
+ "y": 1.5
+ },
+ {
+ "label": "2,3",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,6",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "5,1",
+ "x": 7.5,
+ "y": 2
+ },
+ {
+ "label": "11,3",
+ "x": 9.5,
+ "y": 2
+ },
+ {
+ "label": "8,0",
+ "x": 11,
+ "y": 2
+ },
+ {
+ "label": "8,1",
+ "x": 12,
+ "y": 2
+ },
+ {
+ "label": "8,2",
+ "x": 13,
+ "y": 2
+ },
+ {
+ "label": "8,3",
+ "x": 14,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 0,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,2",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "8,4",
+ "x": 15,
+ "y": 2.5
+ },
+ {
+ "label": "8,5",
+ "x": 16,
+ "y": 2.5
+ },
+ {
+ "label": "8,6",
+ "x": 17,
+ "y": 2.5
+ },
+ {
+ "label": "3,3",
+ "x": 3,
+ "y": 3
+ },
+ {
+ "label": "3,4",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "3,5",
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "3,6",
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "9,0",
+ "x": 11,
+ "y": 3
+ },
+ {
+ "label": "9,1",
+ "x": 12,
+ "y": 3
+ },
+ {
+ "label": "9,2",
+ "x": 13,
+ "y": 3
+ },
+ {
+ "label": "9,3",
+ "x": 14,
+ "y": 3
+ },
+ {
+ "label": "3,0",
+ "x": 0,
+ "y": 3.5
+ },
+ {
+ "label": "3,1",
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "label": "3,2",
+ "x": 2,
+ "y": 3.5
+ },
+ {
+ "label": "9,4",
+ "x": 15,
+ "y": 3.5
+ },
+ {
+ "label": "9,5",
+ "x": 16,
+ "y": 3.5
+ },
+ {
+ "label": "9,6",
+ "x": 17,
+ "y": 3.5
+ },
+ {
+ "label": "4,3",
+ "x": 3,
+ "y": 4
+ },
+ {
+ "label": "4,4",
+ "x": 4,
+ "y": 4
+ },
+ {
+ "label": "10,2",
+ "x": 13,
+ "y": 4
+ },
+ {
+ "label": "10,3",
+ "x": 14,
+ "y": 4
+ },
+ {
+ "label": "4,0",
+ "x": 0,
+ "y": 4.5
+ },
+ {
+ "label": "4,1",
+ "x": 1,
+ "y": 4.5
+ },
+ {
+ "label": "4,2",
+ "x": 2,
+ "y": 4.5
+ },
+ {
+ "label": "10,4",
+ "x": 15,
+ "y": 4.5
+ },
+ {
+ "label": "10,5",
+ "x": 16,
+ "y": 4.5
+ },
+ {
+ "label": "10,6",
+ "x": 17,
+ "y": 4.5
+ },
+ {
+ "label": "5,4",
+ "x": 6,
+ "y": 3.5
+ },
+ {
+ "label": "5,5",
+ "x": 7,
+ "y": 3.5
+ },
+ {
+ "label": "5,6",
+ "x": 8,
+ "y": 3.5
+ },
+ {
+ "label": "5,2",
+ "x": 7,
+ "y": 4.75
+ },
+ {
+ "label": "5,3",
+ "x": 8,
+ "y": 4.75
+ },
+ {
+ "label": "11,0",
+ "x": 9,
+ "y": 5.75
+ },
+ {
+ "label": "11,1",
+ "x": 10,
+ "y": 5.75
+ },
+ {
+ "label": "11,2",
+ "x": 11,
+ "y": 5.75
+ }
+ ]
+ }
+ }
+}
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/keymaps/default/keymap.c b/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/keymaps/default/keymap.c
new file mode 100644
index 00000000000..50288c38948
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/keymaps/default/keymap.c
@@ -0,0 +1,118 @@
+#include QMK_KEYBOARD_H
+
+#define _BASE 0
+#define _NAV 1
+#define _SYST 2
+#define _MOUSE 3 //layer for mouse functions
+
+// Macros
+#define TASK LCTL(LSFT(KC_ESC))
+#define TAB_R LCTL(KC_TAB)
+#define TAB_L LCTL(LSFT(KC_TAB))
+#define TAB_RO LCTL(LSFT(KC_T))
+#define CAD LCTL(LALT(KC_DEL))
+#define IAD LCTL(LALT(KC_INS))
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_BASE] = LAYOUT_5x7(
+ // left hand // right hand
+ LT(_SYST, 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, 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_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(_SYST),
+ KC_APP, KC_LGUI, MO(_NAV), TG(_MOUSE),
+ KC_LALT, LT(_NAV, KC_SPC), KC_SPC,
+ KC_BTN3, KC_BTN1, KC_WFWD,
+ _______, _______, _______, KC_WBAK),
+
+ [_NAV] = LAYOUT_5x7(
+ // left hand // right hand
+ KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC,
+ _______, _______, _______, LCTL(LSFT(KC_E)), _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______, _______,
+ _______, LCTL(KC_A), LCTL(KC_S), _______, _______, _______, KC_PGUP, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______,
+ _______, KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, _______, KC_PGDN, TAB_L, TAB_R, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+ [_SYST] = LAYOUT_5x7(
+ // left hand // right hand
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______,
+ _______, KC_INS, KC_PAUS, _______, IAD, CAD, _______, _______, _______, _______, _______, _______, _______,
+ KC_CAPS, KC_NUM, KC_SCRL, _______, _______, _______, _______, _______, _______, KC_MSTP, KC_VOLD, KC_VOLU, KC_MUTE,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, QK_BOOT, EE_CLR,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+
+ [_MOUSE] = LAYOUT_5x7(
+ // left hand // right hand
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+};
+
+
+//void keyboard_post_init_user(void) {
+// // Customise these values to desired behaviour
+// debug_enable=true;
+// debug_matrix=true;
+// debug_keyboard=true;
+// debug_mouse=true;
+//}
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_NAV] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_SYST] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_MOUSE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+};
+#endif
+
+#ifdef OLED_ENABLE
+bool oled_task_user(void) {
+ // Host Keyboard Layer Status
+ oled_write_P(PSTR("Layer: "), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _BASE:
+ oled_write_P(PSTR("Base\n"), false);
+ break;
+ case _NAV:
+ oled_write_P(PSTR("Nav\n"), false);
+ break;
+ case _SYST:
+ oled_write_P(PSTR("System\n"), false);
+ break;
+ case _MOUSE:
+ oled_write_P(PSTR("Mouse\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+
+ // Host Keyboard LED Status
+ led_t led_state = host_keyboard_led_state();
+ oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
+
+ return false;
+}
+#endif
+
+#define imageWidth 128
+#define imageHeight 36
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/keymaps/vial/config.h
new file mode 100644
index 00000000000..07965945fd2
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xA7, 0x50, 0xDA, 0x3E, 0x6C, 0x63, 0x01, 0x38}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 5 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 5 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..0082f2fbdd4
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/keymaps/vial/keymap.c
@@ -0,0 +1,277 @@
+#include QMK_KEYBOARD_H
+#include "5x7_full_track.h"
+
+#define _QWERTY 0
+//#define _DVORAK 1
+#define _LOWER 1
+#define _RAISE 2
+#define _MOUSE 3
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+//#define TO_QWERTY TO(_QWERTY)
+//#define TO_DVORAK TO(_DVORAK)
+
+enum wyld_keycodes {
+ WYLD_AUTO_MS_TOG = SAFE_RANGE
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_5x7(
+ DRGSCRL, KC_ESC , KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC,
+ SNIPING, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, KC_EQL,
+ KC_BTN3, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_MUTE, KC_HOME, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BTN3,
+ KC_BTN1, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT ,KC_SLSH, KC_BSLS, KC_BTN1,
+ KC_LCTL, KC_LALT,KC_LGUI,KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL, KC_RGUI, KC_RALT, KC_RCTL,
+ RAISE, KC_SPC, KC_TAB, KC_LALT, KC_ENT, LOWER,
+ KC_BSPC, KC_GRV
+ ),
+
+ [_LOWER] = LAYOUT_5x7(
+ _______,KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL,QK_BOOT,
+ _______,_______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,_______,
+ _______,_______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_MUTE, KC_HOME, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS,_______,
+ _______,_______,_______,_______,KC_PSCR, _______, KC_P0,_______,_______,WYLD_AUTO_MS_TOG,
+ _______, KC_BTN1,KC_BTN2, _______,_______,_______,
+ SNIPING, DRGSCRL
+ ),
+
+ [_RAISE] = LAYOUT_5x7(
+ QK_BOOT,KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6, KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,_______,
+ _______,_______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,_______,
+ _______,_______,KC_LEFT,KC_UP,KC_DOWN,KC_RGHT,KC_LPRN, KC_MUTE, KC_HOME, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD,_______,
+ RGB_VAI,RGB_SAI,RGB_HUI,RGB_MOD,RGB_TOG, KC_EQL ,_______,_______,_______,_______,
+ _______,_______,_______, _______,_______,_______,
+ _______,_______
+ ),
+ [_MOUSE] = LAYOUT_5x7(
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______, KC_MUTE, KC_HOME, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______, _______,_______,_______,_______,_______,
+ _______, KC_BTN1,KC_BTN2, _______,_______,_______,
+ SNIPING, DRGSCRL
+ )
+};
+
+#ifdef POINTING_DEVICE_AUTO_MOUSE_ENABLE
+void pointing_device_init_user(void) {
+ set_auto_mouse_enable(true);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case WYLD_AUTO_MS_TOG:
+ if (record->event.pressed) {
+ set_auto_mouse_enable(!get_auto_mouse_enable());
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+#endif
+
+void keyboard_post_init_user(void) {
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+ debug_keyboard=true;
+ debug_mouse=true;
+#else
+ debug_enable=false;
+ debug_matrix=false;
+ debug_keyboard=false;
+ debug_mouse=false;
+#endif
+}
+
+#if defined(ENCODER_MAP_ENABLE)
+// TWO ENCODERS
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_QWERTY] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_LOWER] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_RAISE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_MOUSE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) }
+};
+#endif
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_left()) {
+ return OLED_ROTATION_270;
+ }
+ return OLED_ROTATION_0;
+}
+
+static const char PROGMEM wylderbuilds[] = {
+ // 'dark wylderbuilds_oled_name', 128x32
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40,
+ 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x20, 0x60,
+ 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x60, 0x60,
+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0,
+ 0x00, 0x00, 0xc1, 0xc1, 0x01, 0x01, 0xf1, 0x11, 0x01, 0x01, 0x01, 0x31, 0x60, 0xc0, 0x80, 0xc0,
+ 0xf0, 0x10, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0,
+ 0x00, 0x01, 0x03, 0x9e, 0xf8, 0x00, 0x00, 0x20, 0xe0, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0xf0, 0x30, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x98, 0xf0, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x00, 0x70, 0xfe, 0x03, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00,
+ 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x11, 0xf1, 0x11, 0x33, 0x63, 0xc3,
+ 0x83, 0x01, 0x01, 0xc1, 0xe1, 0x31, 0x11, 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,
+ 0x1f, 0x7c, 0xff, 0x07, 0x7c, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7f, 0xff,
+ 0x60, 0x30, 0x18, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xf2, 0x82, 0x02, 0x80, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x7f, 0x0e, 0x1b, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0x81, 0xc1, 0x63,
+ 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00,
+ 0x00, 0x1f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x60, 0x30, 0x1f,
+ 0x07, 0x00, 0x00, 0x01, 0x43, 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static void render_wylderbuilds(void) {
+ oled_write_raw_P(wylderbuilds, sizeof(wylderbuilds));
+}
+
+bool oled_task_user(void) {
+ oled_set_cursor(0, 3);
+ if (is_keyboard_left()) {
+ // oled_write_P(PSTR("Layer\n"), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ oled_write_P(PSTR("QWRTY\n"), false);
+ break;
+// case _DVORAK:
+// oled_write_P(PSTR(" DVRK\n"), false);
+// break;
+ case _LOWER:
+ oled_write_P(PSTR("LOWER\n"), false);
+ break;
+ case _RAISE:
+ oled_write_P(PSTR("RAISE\n"), false);
+ break;
+ case _MOUSE:
+ oled_write_P(PSTR("MOUSE\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+ oled_set_cursor(2, 7);
+ oled_write_P(PSTR("WPM "), false);
+ oled_set_cursor(1, 8);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 9);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+ } else {
+ // write WPM to right OLED
+ oled_set_cursor(0, 0);
+ render_wylderbuilds();
+ oled_scroll_left();
+ }
+
+ return false;
+}
+#endif
+
+
+/*
+
+
+!!! Keycap layout and colors
+----------------------------
+
+(keycap
+ numbers _ symbols
+ _ defsrc _
+ nav _ functions
+ mouse _ media
+)
+
+(colors
+ #3498DB #000000 #D68910
+ #000000 #000000 #000000
+ #7D3C98 #0000ff #ff0000
+ #239B56 #000000 #5D6D7E
+)
+
+
+!!! Custom options per key (Optional)
+!!! Options are based on row column and kle syntax
+!!! (options row col data)
+-------------------------------------------------------
+
+(options key custom_layout)
+
+
+!!! Override or assign labels
+-----------------------------
+!!! (label code text)
+
+(label A_GUI A)
+(label R_ALT R)
+(label S_CTL S)
+(label T_SFT T)
+
+(label O_GUI O)
+(label I_ALT I)
+(label E_CTL E)
+(label N_SFT N)
+
+(label L_NUM Num)
+(label L_FUN Fn)
+(label L_MED Media)
+(label L_MOU 🖱)
+(label L_NAV Nav)
+(label L_SYM Sym)
+
+(label U_REDO ↷)
+(label U_UNDO ↶)
+(label XKC_N ñ)
+(label U_CPY copy)
+(label U_PST paste)
+(label U_CUT cut)
+(label OS_LSFT ⇮)
+(label OS_RSFT ⇮)
+(label BTN1 LB)
+(label BTN2 RB)
+(label BTN3 MB)
+
+!!! Add some notes
+------------------
+
+
+(label alias text)
+
+
+!!! Add some notes (Optional)
+-----------------------------
+
+(description
+ Wylderbuilds 5x7 Superfragelistico
+)
+
+
+*/
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..9ab57695a65
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/keymaps/vial/rules.mk
@@ -0,0 +1,9 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/keymaps/vial/vial.json
new file mode 100644
index 00000000000..596376af349
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/keymaps/vial/vial.json
@@ -0,0 +1,207 @@
+{
+ "matrix": {
+ "rows": 12,
+ "cols": 7
+ },
+ "lighting": "vialrgb",
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 5x7 Full Wyld Track Mini",
+ "author": "Andy @ Wylderbuilds"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 4
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "0,0",
+ "0,1",
+ "0,2",
+ {
+ "x": 12
+ },
+ "6,4",
+ "6,5",
+ "6,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne",
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ {
+ "x": 12
+ },
+ "7,4",
+ "7,5",
+ "7,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ "2,6",
+ {
+ "x": 0.5
+ },
+ "5,1",
+ {
+ "x": 1
+ },
+ "11,3",
+ {
+ "x": 0.5
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ {
+ "x": 12
+ },
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ {
+ "x": 4
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ {
+ "x": 12
+ },
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,3",
+ "4,4",
+ {
+ "x": 8
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ {
+ "x": 12
+ },
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -2,
+ "x": 6
+ },
+ "5,4",
+ "5,5",
+ "5,6"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 7
+ },
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "r": -7,
+ "x": 9
+ },
+ "11,0",
+ "11,1",
+ "11,2"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/mcuconf.h b/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/rules.mk b/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/rules.mk
new file mode 100644
index 00000000000..6aa4e08e4ee
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/rules.mk
@@ -0,0 +1,21 @@
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+#POINTING_DEVICE_DRIVER = adns9800
+#RGBLIGHT_ENABLE = no
+#MOUSEKEY_ENABLE = yes
+#CONSOLE_ENABLE = yes
+##COMMAND_ENABLE = yes
+#BOOTMAGIC_ENABLE = yes
+#NKRO_ENABLE = yes # Enable N-Key Rollover
+#RGB_MATRIX_ENABLE = yes
+OLED_ENABLE = yes
+##OLED_DRIVER = SSD1306
+WPM_ENABLE = yes
+#EXTRAKEY_ENABLE = yes # Audio control and System control
+#
+#ENCODER_ENABLE = yes
+ENCODER_MAP_ENABLE = yes # Enable N-Key Rollover
+#
+OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/wylderbuilds-5x7-full-track.json b/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/wylderbuilds-5x7-full-track.json
new file mode 100644
index 00000000000..bc195973e69
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/wylderbuilds-5x7-full-track.json
@@ -0,0 +1,216 @@
+[
+ {
+ "name": "Wylderbuilds 5x7 Full Track"
+ },
+ [
+ {
+ "x": 4
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 4
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ "0,2",
+ {
+ "x": 12
+ },
+ "6,4",
+ "6,5",
+ "6,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ {
+ "x": 4
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ {
+ "x": 12
+ },
+ "7,4",
+ "7,5",
+ "7,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ "2,6",
+ {
+ "x": 4
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ {
+ "x": 12
+ },
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ {
+ "x": 4
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ {
+ "x": 12
+ },
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "4,3",
+ "4,4",
+ {
+ "x": 8
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 12.25
+ },
+ "11,0"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 1
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ {
+ "x": 12
+ },
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ {
+ "x": 12.25
+ },
+ "11,1"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 11
+ },
+ "11,2",
+ {
+ "x": 0.25
+ },
+ "11,3"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -4.5,
+ "x": 6.75
+ },
+ "4,5",
+ "4,6"
+ ],
+ [
+ {
+ "r": -7,
+ "y": 2.25,
+ "x": 5.75
+ },
+ "5,5",
+ "5,6"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 6.25
+ },
+ "5,3",
+ "5,4"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/wylderbuilds-5x7-full-wyld-track-mini.json b/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/wylderbuilds-5x7-full-wyld-track-mini.json
new file mode 100644
index 00000000000..0aadc2586db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_full_track/wylderbuilds-5x7-full-wyld-track-mini.json
@@ -0,0 +1,198 @@
+[
+ {
+ "name": "Wylderbuilds 5x7 Full Wyld Track Mini",
+ "author": "Andy @ Wylderbuilds"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 4
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "0,0",
+ "0,1",
+ "0,2",
+ {
+ "x": 12
+ },
+ "6,4",
+ "6,5",
+ "6,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne",
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ {
+ "x": 12
+ },
+ "7,4",
+ "7,5",
+ "7,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ "2,6",
+ {
+ "x": 0.5
+ },
+ "5,1",
+ {
+ "x": 1
+ },
+ "11,3",
+ {
+ "x": 0.5
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ {
+ "x": 12
+ },
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ {
+ "x": 4
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ {
+ "x": 12
+ },
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,3",
+ "4,4",
+ {
+ "x": 8
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ {
+ "x": 12
+ },
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -2,
+ "x": 6
+ },
+ "5,4",
+ "5,5",
+ "5,6"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 7
+ },
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "r": -7,
+ "x": 9
+ },
+ "11,0",
+ "11,1",
+ "11,2"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_track/5x7_track.c b/keyboards/handwired/wylderbuilds/trackball/5x7_track/5x7_track.c
new file mode 100644
index 00000000000..079d9b7acd2
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_track/5x7_track.c
@@ -0,0 +1 @@
+#include "5x7_track.h"
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_track/5x7_track.h b/keyboards/handwired/wylderbuilds/trackball/5x7_track/5x7_track.h
new file mode 100644
index 00000000000..469676ad243
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_track/5x7_track.h
@@ -0,0 +1,31 @@
+#pragma once
+
+#include "trackball.h"
+
+#define XXX KC_NO
+
+
+#define LAYOUT_5x7( \
+ 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, R30, R31, R32, R33, R34, R35, R36, \
+ L43, L44, R42, R43, \
+ L56, R40, R41, \
+ L55, R50, R51, \
+ L53, L54, R52, R53 \
+) { \
+ { 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 }, \
+ { XXX, XXX, XXX, L43, L44, XXX, XXX }, \
+ { XXX, XXX, XXX, L53, L54, L55, L56 }, \
+\
+ { R00, R01, R02, R03, R04, R05, R06 }, \
+ { R10, R11, R12, R13, R14, R15, R16 }, \
+ { R20, R21, R22, R23, R24, R25, R26 }, \
+ { R30, R31, R32, R33, R34, R35, R36 }, \
+ { R40, R41, R42, R43, XXX, XXX, XXX }, \
+ { R50, R51, R52, R53, XXX, XXX, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_track/config.h b/keyboards/handwired/wylderbuilds/trackball/5x7_track/config.h
new file mode 100644
index 00000000000..dda0955cb9b
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_track/config.h
@@ -0,0 +1,95 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+//#include "config_common.h"
+// Basic Config
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+
+#define USE_SERIAL
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+#define SERIAL_USART_PIN_SWAP
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Columns are doubled-up
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 7
+
+#define MATRIX_COL_PINS { GP8, GP7, GP6, GP5, GP4, GP3, GP2 }
+#define MATRIX_ROW_PINS { GP14, GP13, GP12, GP11, GP10, GP9 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define SPLIT_POINTING_ENABLE
+#define ROTATIONAL_TRANSFORM_ANGLE 25
+#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_LEFT
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x02
+
+#define POINTING_DEVICE_AUTO_MOUSE_ENABLE
+// only required if not setting mouse layer elsewhere
+#define AUTO_MOUSE_DEFAULT_LAYER 3
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
+
+#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+
+//// Sensor Notes ////
+//// Pi Pico pins ////
+// 3V3 -- Power (not 3v3_EN)
+// GP17 -- CS pin
+// GP20 -- MISO pin
+// GP19 -- MOSI pin
+// GP18 -- SCK pin clock Driver
+
+//#define ENCODERS_PAD_A { }
+//#define ENCODERS_PAD_B { }
+//#define ENCODER_RESOLUTIONS { 1 }
+//#define ENCODERS_PAD_A_RIGHT { GP27 }
+//#define ENCODERS_PAD_B_RIGHT { GP28 }
+//#define ENCODER_RESOLUTIONS_RIGHT { 2 }
+
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD1
+#define I2C1_SDA_PIN GP16
+#define I2C1_SCL_PIN GP17
+#define RGBLIGHT_LAYERS
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+// Misc settings
+// 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// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_track/info.json b/keyboards/handwired/wylderbuilds/trackball/5x7_track/info.json
new file mode 100644
index 00000000000..2efb2d080b7
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_track/info.json
@@ -0,0 +1,375 @@
+{
+ "keyboard_name": "Dactyl-Manuform Wyld Trackball (5x6_track)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0020",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 12,
+ "cols": 7
+ },
+ "layouts": {
+ "LAYOUT_5x7": {
+ "layout": [
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "0,6",
+ "x": 7,
+ "y": 0
+ },
+ {
+ "label": "6,0",
+ "x": 12,
+ "y": 0
+ },
+ {
+ "label": "6,1",
+ "x": 13,
+ "y": 0
+ },
+ {
+ "label": "6,2",
+ "x": 14,
+ "y": 0
+ },
+ {
+ "label": "6,3",
+ "x": 15,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0.5
+ },
+ {
+ "label": "6,4",
+ "x": 16,
+ "y": 0.5
+ },
+ {
+ "label": "6,5",
+ "x": 17,
+ "y": 0.5
+ },
+ {
+ "label": "6,6",
+ "x": 18,
+ "y": 0.5
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "1,6",
+ "x": 7,
+ "y": 1
+ },
+ {
+ "label": "7,0",
+ "x": 12,
+ "y": 1
+ },
+ {
+ "label": "7,1",
+ "x": 13,
+ "y": 1
+ },
+ {
+ "label": "7,2",
+ "x": 14,
+ "y": 1
+ },
+ {
+ "label": "7,3",
+ "x": 15,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1.5
+ },
+ {
+ "label": "7,4",
+ "x": 16,
+ "y": 1.5
+ },
+ {
+ "label": "7,5",
+ "x": 17,
+ "y": 1.5
+ },
+ {
+ "label": "7,6",
+ "x": 18,
+ "y": 1.5
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "2,6",
+ "x": 7,
+ "y": 2
+ },
+ {
+ "label": "8,0",
+ "x": 12,
+ "y": 2
+ },
+ {
+ "label": "8,1",
+ "x": 13,
+ "y": 2
+ },
+ {
+ "label": "8,2",
+ "x": 14,
+ "y": 2
+ },
+ {
+ "label": "8,3",
+ "x": 15,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2.5
+ },
+ {
+ "label": "8,4",
+ "x": 16,
+ "y": 2.5
+ },
+ {
+ "label": "8,5",
+ "x": 17,
+ "y": 2.5
+ },
+ {
+ "label": "8,6",
+ "x": 18,
+ "y": 2.5
+ },
+ {
+ "label": "3,3",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "3,4",
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "3,5",
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "3,6",
+ "x": 7,
+ "y": 3
+ },
+ {
+ "label": "9,0",
+ "x": 12,
+ "y": 3
+ },
+ {
+ "label": "9,1",
+ "x": 13,
+ "y": 3
+ },
+ {
+ "label": "9,2",
+ "x": 14,
+ "y": 3
+ },
+ {
+ "label": "9,3",
+ "x": 15,
+ "y": 3
+ },
+ {
+ "label": "3,0",
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "label": "3,1",
+ "x": 2,
+ "y": 3.5
+ },
+ {
+ "label": "3,2",
+ "x": 3,
+ "y": 3.5
+ },
+ {
+ "label": "9,4",
+ "x": 16,
+ "y": 3.5
+ },
+ {
+ "label": "9,5",
+ "x": 17,
+ "y": 3.5
+ },
+ {
+ "label": "9,6",
+ "x": 18,
+ "y": 3.5
+ },
+ {
+ "label": "4,3",
+ "x": 4,
+ "y": 4
+ },
+ {
+ "label": "4,4",
+ "x": 5,
+ "y": 4
+ },
+ {
+ "label": "10,2",
+ "x": 14,
+ "y": 4
+ },
+ {
+ "label": "10,3",
+ "x": 15,
+ "y": 4
+ },
+ {
+ "label": "5,6",
+ "x": 7.25,
+ "y": 4.25
+ },
+ {
+ "label": "10,0",
+ "x": 11.75,
+ "y": 4.25
+ },
+ {
+ "label": "10,1",
+ "x": 12.75,
+ "y": 4.25
+ },
+ {
+ "label": "5,5",
+ "x": 6.75,
+ "y": 5.25
+ },
+ {
+ "label": "11,0",
+ "x": 11,
+ "y": 5.25
+ },
+ {
+ "label": "11,1",
+ "x": 12,
+ "y": 5.25
+ },
+ {
+ "label": "5,3",
+ "x": 7.25,
+ "y": 6.25
+ },
+ {
+ "label": "5,4",
+ "x": 8.25,
+ "y": 6.25
+ },
+ {
+ "label": "11,2",
+ "x": 10.5,
+ "y": 6.25
+ },
+ {
+ "label": "11,3",
+ "x": 11.5,
+ "y": 6.25
+ }
+ ]
+ }
+ }
+}
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_track/keymaps/default/keymap.c b/keyboards/handwired/wylderbuilds/trackball/5x7_track/keymaps/default/keymap.c
new file mode 100644
index 00000000000..50288c38948
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_track/keymaps/default/keymap.c
@@ -0,0 +1,118 @@
+#include QMK_KEYBOARD_H
+
+#define _BASE 0
+#define _NAV 1
+#define _SYST 2
+#define _MOUSE 3 //layer for mouse functions
+
+// Macros
+#define TASK LCTL(LSFT(KC_ESC))
+#define TAB_R LCTL(KC_TAB)
+#define TAB_L LCTL(LSFT(KC_TAB))
+#define TAB_RO LCTL(LSFT(KC_T))
+#define CAD LCTL(LALT(KC_DEL))
+#define IAD LCTL(LALT(KC_INS))
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_BASE] = LAYOUT_5x7(
+ // left hand // right hand
+ LT(_SYST, 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, 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_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(_SYST),
+ KC_APP, KC_LGUI, MO(_NAV), TG(_MOUSE),
+ KC_LALT, LT(_NAV, KC_SPC), KC_SPC,
+ KC_BTN3, KC_BTN1, KC_WFWD,
+ _______, _______, _______, KC_WBAK),
+
+ [_NAV] = LAYOUT_5x7(
+ // left hand // right hand
+ KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC,
+ _______, _______, _______, LCTL(LSFT(KC_E)), _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______, _______,
+ _______, LCTL(KC_A), LCTL(KC_S), _______, _______, _______, KC_PGUP, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______,
+ _______, KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, _______, KC_PGDN, TAB_L, TAB_R, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+ [_SYST] = LAYOUT_5x7(
+ // left hand // right hand
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______,
+ _______, KC_INS, KC_PAUS, _______, IAD, CAD, _______, _______, _______, _______, _______, _______, _______,
+ KC_CAPS, KC_NUM, KC_SCRL, _______, _______, _______, _______, _______, _______, KC_MSTP, KC_VOLD, KC_VOLU, KC_MUTE,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, QK_BOOT, EE_CLR,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+
+ [_MOUSE] = LAYOUT_5x7(
+ // left hand // right hand
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+};
+
+
+//void keyboard_post_init_user(void) {
+// // Customise these values to desired behaviour
+// debug_enable=true;
+// debug_matrix=true;
+// debug_keyboard=true;
+// debug_mouse=true;
+//}
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_NAV] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_SYST] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_MOUSE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+};
+#endif
+
+#ifdef OLED_ENABLE
+bool oled_task_user(void) {
+ // Host Keyboard Layer Status
+ oled_write_P(PSTR("Layer: "), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _BASE:
+ oled_write_P(PSTR("Base\n"), false);
+ break;
+ case _NAV:
+ oled_write_P(PSTR("Nav\n"), false);
+ break;
+ case _SYST:
+ oled_write_P(PSTR("System\n"), false);
+ break;
+ case _MOUSE:
+ oled_write_P(PSTR("Mouse\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+
+ // Host Keyboard LED Status
+ led_t led_state = host_keyboard_led_state();
+ oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
+
+ return false;
+}
+#endif
+
+#define imageWidth 128
+#define imageHeight 36
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_track/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/5x7_track/keymaps/vial/config.h
new file mode 100644
index 00000000000..a31c8c52fe6
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_track/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x1A, 0xE9, 0x98, 0x9A, 0x8D, 0x49, 0xE4, 0xAB}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 5 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 5 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_track/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/5x7_track/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..6e28b86e895
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_track/keymaps/vial/keymap.c
@@ -0,0 +1,206 @@
+#include QMK_KEYBOARD_H
+#include "5x7_track.h"
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+#define _MOUSE 3
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+//#define TO_QWERTY TO(_QWERTY)
+//#define TO_DVORAK TO(_DVORAK)
+
+enum wyld_keycodes {
+ WYLD_AUTO_MS_TOG = SAFE_RANGE
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_5x7(
+ DRGSCRL, KC_ESC , KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC,
+ SNIPING, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, KC_EQL,
+ KC_BTN3, KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BTN3,
+ KC_BTN1, KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT ,KC_SLSH, KC_BSLS, KC_BTN1,
+ KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL,
+ RAISE, KC_ENT, LOWER,
+ KC_SPC, KC_HOME, KC_TAB,
+ KC_BSPC, KC_LALT, KC_RALT, KC_DEL
+ ),
+
+ [_LOWER] = LAYOUT_5x7(
+ _______,KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL,_______,
+ _______,_______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,_______,
+ _______,_______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,_______,
+ DPI_RMOD,DPI_MOD,DPI_RST,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS,QK_BOOT,
+ _______,KC_PSCR, _______, KC_P0,
+ _______, _______,_______,
+ _______, KC_BTN1,KC_BTN3,
+ _______,_______, SNIPING,DRGSCRL
+
+ ),
+
+ [_RAISE] = LAYOUT_5x7(
+ _______,KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6, KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,_______,
+ _______,_______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,_______,
+ _______,_______,KC_LEFT,KC_UP,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU,_______,
+ QK_BOOT,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD,WYLD_AUTO_MS_TOG,
+ _______,_______, KC_EQL ,_______,
+ _______, _______,_______,
+ _______, _______,_______,
+ _______,_______, _______,_______
+ ),
+
+ [_MOUSE] = LAYOUT_5x7(
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______,KC_BTN1,KC_BTN2,KC_BTN3,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______, _______,_______,
+ _______, _______,_______,
+ _______, KC_BTN1,KC_BTN3,
+ _______,_______, SNIPING,DRGSCRL
+ )
+};
+
+void keyboard_post_init_user(void) {
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+ debug_keyboard=true;
+ debug_mouse=true;
+#else
+ debug_enable=false;
+ debug_matrix=false;
+ debug_keyboard=false;
+ debug_mouse=false;
+#endif
+}
+
+#ifdef POINTING_DEVICE_AUTO_MOUSE_ENABLE
+void pointing_device_init_user(void) {
+ set_auto_mouse_enable(true);
+ set_auto_mouse_enable(false);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case WYLD_AUTO_MS_TOG:
+ if (record->event.pressed) {
+ set_auto_mouse_enable(!get_auto_mouse_enable());
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+#endif
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_user(uint8_t index, bool clockwise) {
+// if (index == 1) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+// } else if (index == 0) {
+// if (clockwise) {
+// tap_code(KC_PGUP);
+// } else {
+// tap_code(KC_PGDN);
+// }
+// }
+ return false;
+}
+#endif
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_master()) {
+ return OLED_ROTATION_270;
+ }
+ return OLED_ROTATION_180;
+}
+
+static void render_wylderbuilds(void) {
+ static const char PROGMEM wylderbuilds[] = {
+ // 'dark wylderbuilds_oled_name', 128x32px
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40,
+ 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x20, 0x60,
+ 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x60, 0x60,
+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0,
+ 0x00, 0x00, 0xc1, 0xc1, 0x01, 0x01, 0xf1, 0x11, 0x01, 0x01, 0x01, 0x31, 0x60, 0xc0, 0x80, 0xc0,
+ 0xf0, 0x10, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0,
+ 0x00, 0x01, 0x03, 0x9e, 0xf8, 0x00, 0x00, 0x20, 0xe0, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0xf0, 0x30, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x98, 0xf0, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x00, 0x70, 0xfe, 0x03, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00,
+ 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x11, 0xf1, 0x11, 0x33, 0x63, 0xc3,
+ 0x83, 0x01, 0x01, 0xc1, 0xe1, 0x31, 0x11, 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,
+ 0x1f, 0x7c, 0xff, 0x07, 0x7c, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7f, 0xff,
+ 0x60, 0x30, 0x18, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xf2, 0x82, 0x02, 0x80, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x7f, 0x0e, 0x1b, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0x81, 0xc1, 0x63,
+ 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00,
+ 0x00, 0x1f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x60, 0x30, 0x1f,
+ 0x07, 0x00, 0x00, 0x01, 0x43, 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+
+ oled_write_raw_P(wylderbuilds, sizeof(wylderbuilds));
+}
+
+bool oled_task_user(void) {
+ oled_set_cursor(0, 1);
+ if (is_keyboard_master()) {
+ oled_write_P(PSTR("Layer\n"), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ oled_write_P(PSTR("QWRTY\n"), false);
+ break;
+ case _LOWER:
+ oled_write_P(PSTR("LOWER\n"), false);
+ break;
+ case _RAISE:
+ oled_write_P(PSTR("RAISE\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+ oled_set_cursor(0, 5);
+ oled_write_P(PSTR("WPM: "), false);
+
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 8);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+ } else {
+ // write WPM to right OLED
+ render_wylderbuilds();
+
+
+ }
+
+ return false;
+}
+#endif
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_track/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/5x7_track/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_track/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_track/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/5x7_track/keymaps/vial/vial.json
new file mode 100644
index 00000000000..5810c099498
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_track/keymaps/vial/vial.json
@@ -0,0 +1,195 @@
+{
+ "matrix": {
+ "rows": 12,
+ "cols": 7
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 5x7 Standard Left Trackball",
+ "author": "https://wylderbuilds.com"
+ },
+ [
+ {
+ "x": 4
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 4
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ "0,2",
+ {
+ "x": 12
+ },
+ "6,4",
+ "6,5",
+ "6,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ {
+ "x": 4
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ {
+ "x": 12
+ },
+ "7,4",
+ "7,5",
+ "7,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ "2,6",
+ {
+ "x": 4
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ {
+ "x": 12
+ },
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ {
+ "x": 4
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ {
+ "x": 12
+ },
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "4,3",
+ "4,4",
+ {
+ "x": 8
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 7.25
+ },
+ "5,6",
+ {
+ "x": 3.5
+ },
+ "10,0",
+ "10,1"
+ ],
+ [
+ {
+ "x": 6.75
+ },
+ "5,5",
+ {
+ "x": 3.25
+ },
+ "11,0",
+ "11,1"
+ ],
+ [
+ {
+ "x": 7.25
+ },
+ "5,3",
+ "5,4",
+ {
+ "x": 1.25
+ },
+ "11,2",
+ "11,3"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_track/mcuconf.h b/keyboards/handwired/wylderbuilds/trackball/5x7_track/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_track/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_track/old_kle_5x7_track.json b/keyboards/handwired/wylderbuilds/trackball/5x7_track/old_kle_5x7_track.json
new file mode 100644
index 00000000000..f7d3f934b0b
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_track/old_kle_5x7_track.json
@@ -0,0 +1,203 @@
+[
+ {
+ "name": "Wylderbuilds 5x7 Standard Right Trackball",
+ "author": "https://wylderbuilds.com"
+ },
+ [
+ {
+ "x": 4
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 4
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ "0,2",
+ {
+ "x": 12
+ },
+ "6,4",
+ "6,5",
+ "6,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ {
+ "x": 4
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ {
+ "x": 12
+ },
+ "7,4",
+ "7,5",
+ "7,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ "2,6",
+ {
+ "x": 4
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ {
+ "x": 12
+ },
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ {
+ "x": 4
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ {
+ "x": 12
+ },
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "4,3",
+ "4,4",
+ {
+ "x": 8
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 12.25
+ },
+ "11,0"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 12.25
+ },
+ "11,1"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 11
+ },
+ "11,2",
+ {
+ "x": 0.25
+ },
+ "11,3"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -4.25,
+ "x": 6.75
+ },
+ "4,5",
+ "4,6"
+ ],
+ [
+ {
+ "r": -15,
+ "y": 3,
+ "x": 5.25
+ },
+ "5,5",
+ "5,6"
+ ],
+ [
+ {
+ "r": -13,
+ "x": 5.75
+ },
+ "5,3",
+ "5,4"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_track/rules.mk b/keyboards/handwired/wylderbuilds/trackball/5x7_track/rules.mk
new file mode 100644
index 00000000000..f8a90ade13e
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_track/rules.mk
@@ -0,0 +1,15 @@
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+RGBLIGHT_ENABLE = no
+MOUSEKEY_ENABLE = yes
+CONSOLE_ENABLE = no
+
+OLED_ENABLE = no
+#OLED_DRIVER = SSD1306
+WPM_ENABLE = no
+EXTRAKEY_ENABLE = no # Audio control and System control
+ENCODER_ENABLE = no
+
+#OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_track/wylderbuilds-5x7-standard-left-trackball.json b/keyboards/handwired/wylderbuilds/trackball/5x7_track/wylderbuilds-5x7-standard-left-trackball.json
new file mode 100644
index 00000000000..ab32c9d0fc8
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_track/wylderbuilds-5x7-standard-left-trackball.json
@@ -0,0 +1,187 @@
+[
+ {
+ "name": "Wylderbuilds 5x7 Standard Left Trackball",
+ "author": "https://wylderbuilds.com"
+ },
+ [
+ {
+ "x": 4
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 4
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ "0,2",
+ {
+ "x": 12
+ },
+ "6,4",
+ "6,5",
+ "6,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ {
+ "x": 4
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ {
+ "x": 12
+ },
+ "7,4",
+ "7,5",
+ "7,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ "2,6",
+ {
+ "x": 4
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ {
+ "x": 12
+ },
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ {
+ "x": 4
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ {
+ "x": 12
+ },
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "4,3",
+ "4,4",
+ {
+ "x": 8
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 7.25
+ },
+ "5,6",
+ {
+ "x": 3.5
+ },
+ "10,0",
+ "10,1"
+ ],
+ [
+ {
+ "x": 6.75
+ },
+ "5,5",
+ {
+ "x": 3.25
+ },
+ "11,0",
+ "11,1"
+ ],
+ [
+ {
+ "x": 7.25
+ },
+ "5,3",
+ "5,4",
+ {
+ "x": 1.25
+ },
+ "11,2",
+ "11,3"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_track_carbonfet/5x7_track_carbonfet.c b/keyboards/handwired/wylderbuilds/trackball/5x7_track_carbonfet/5x7_track_carbonfet.c
new file mode 100644
index 00000000000..7e692610b7b
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_track_carbonfet/5x7_track_carbonfet.c
@@ -0,0 +1 @@
+#include "5x7_track_carbonfet.h"
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_track_carbonfet/5x7_track_carbonfet.h b/keyboards/handwired/wylderbuilds/trackball/5x7_track_carbonfet/5x7_track_carbonfet.h
new file mode 100644
index 00000000000..947b31776c6
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_track_carbonfet/5x7_track_carbonfet.h
@@ -0,0 +1,30 @@
+#pragma once
+
+#include "trackball.h"
+
+#define XXX KC_NO
+
+
+#define LAYOUT_5x7( \
+ L00, L01, L02, L03, L04, L05, R01, R02, R03, R04, R05, R06, \
+ L10, L11, L12, L13, L14, L15, R11, R12, R13, R14, R15, R16, \
+ L20, L21, L22, L23, L24, L25, R21, R22, R23, R24, R25, R26, \
+ L30, L31, L32, L33, L34, L35, R31, R32, R33, R34, R35, R36, \
+ L42, L43, R43, R44, \
+ L44, L45, L46, R40, R41, R42, \
+ L54, L55, L56, R50, R51, R52 \
+) { \
+ { L00, L01, L02, L03, L04, L05, XXX }, \
+ { L10, L11, L12, L13, L14, L15, XXX }, \
+ { L20, L21, L22, L23, L24, L25, XXX }, \
+ { L30, L31, L32, L33, L34, L35, XXX }, \
+ { XXX, XXX, XXX, L43, L44, L45, L46 }, \
+ { XXX, XXX, XXX, L53, L54, L55, L56 }, \
+\
+ { XXX, R01, R02, R03, R04, R05, R06 }, \
+ { XXX, R11, R12, R13, R14, R15, R16 }, \
+ { XXX, R21, R22, R23, R24, R25, R26 }, \
+ { XXX, R31, R32, R33, R34, R35, R36 }, \
+ { R40, R41, R42, R43, R44, XXX, XXX }, \
+ { R50, R51, R52, XXX, XXX, XXX, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_track_carbonfet/config.h b/keyboards/handwired/wylderbuilds/trackball/5x7_track_carbonfet/config.h
new file mode 100644
index 00000000000..9272352e9e3
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_track_carbonfet/config.h
@@ -0,0 +1,80 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+#include "config_common.h"
+// Basic Config
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+
+#define USE_SERIAL
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+#define SERIAL_USART_PIN_SWAP
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Columns are doubled-up
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 7
+
+#define MATRIX_COL_PINS { GP2, GP3, GP4, GP5, GP6, GP7, GP8 }
+#define MATRIX_ROW_PINS { GP10, GP11, GP12, GP13, GP14, GP15 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define SPLIT_POINTING_ENABLE
+#define ROTATIONAL_TRANSFORM_ANGLE -25
+#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_RIGHT
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x02
+
+#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+
+//// Sensor Notes ////
+//// Pi Pico pins ////
+// 3V3 -- Power (not 3v3_EN)
+// GP17 -- CS pin
+// GP20 -- MISO pin
+// GP19 -- MOSI pin
+// GP18 -- SCK pin clock Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD1
+#define I2C1_SDA_PIN GP12
+#define I2C1_SCL_PIN GP13
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+// Misc settings
+// 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// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_track_carbonfet/info.json b/keyboards/handwired/wylderbuilds/trackball/5x7_track_carbonfet/info.json
new file mode 100644
index 00000000000..d9cbefe6930
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_track_carbonfet/info.json
@@ -0,0 +1,375 @@
+{
+ "keyboard_name": "Dactyl-Manuform Wyld Trackball (5x7_track_carbonfet)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0039",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 12,
+ "cols": 7
+ },
+ "layouts": {
+ "LAYOUT_5x7": {
+ "layout": [
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "0,6",
+ "x": 7,
+ "y": 0
+ },
+ {
+ "label": "6,0",
+ "x": 12,
+ "y": 0
+ },
+ {
+ "label": "6,1",
+ "x": 13,
+ "y": 0
+ },
+ {
+ "label": "6,2",
+ "x": 14,
+ "y": 0
+ },
+ {
+ "label": "6,3",
+ "x": 15,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0.5
+ },
+ {
+ "label": "6,4",
+ "x": 16,
+ "y": 0.5
+ },
+ {
+ "label": "6,5",
+ "x": 17,
+ "y": 0.5
+ },
+ {
+ "label": "6,6",
+ "x": 18,
+ "y": 0.5
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "1,6",
+ "x": 7,
+ "y": 1
+ },
+ {
+ "label": "7,0",
+ "x": 12,
+ "y": 1
+ },
+ {
+ "label": "7,1",
+ "x": 13,
+ "y": 1
+ },
+ {
+ "label": "7,2",
+ "x": 14,
+ "y": 1
+ },
+ {
+ "label": "7,3",
+ "x": 15,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1.5
+ },
+ {
+ "label": "7,4",
+ "x": 16,
+ "y": 1.5
+ },
+ {
+ "label": "7,5",
+ "x": 17,
+ "y": 1.5
+ },
+ {
+ "label": "7,6",
+ "x": 18,
+ "y": 1.5
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "2,6",
+ "x": 7,
+ "y": 2
+ },
+ {
+ "label": "8,0",
+ "x": 12,
+ "y": 2
+ },
+ {
+ "label": "8,1",
+ "x": 13,
+ "y": 2
+ },
+ {
+ "label": "8,2",
+ "x": 14,
+ "y": 2
+ },
+ {
+ "label": "8,3",
+ "x": 15,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2.5
+ },
+ {
+ "label": "8,4",
+ "x": 16,
+ "y": 2.5
+ },
+ {
+ "label": "8,5",
+ "x": 17,
+ "y": 2.5
+ },
+ {
+ "label": "8,6",
+ "x": 18,
+ "y": 2.5
+ },
+ {
+ "label": "3,3",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "3,4",
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "3,5",
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "3,6",
+ "x": 7,
+ "y": 3
+ },
+ {
+ "label": "9,0",
+ "x": 12,
+ "y": 3
+ },
+ {
+ "label": "9,1",
+ "x": 13,
+ "y": 3
+ },
+ {
+ "label": "9,2",
+ "x": 14,
+ "y": 3
+ },
+ {
+ "label": "9,3",
+ "x": 15,
+ "y": 3
+ },
+ {
+ "label": "3,0",
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "label": "3,1",
+ "x": 2,
+ "y": 3.5
+ },
+ {
+ "label": "3,2",
+ "x": 3,
+ "y": 3.5
+ },
+ {
+ "label": "9,4",
+ "x": 16,
+ "y": 3.5
+ },
+ {
+ "label": "9,5",
+ "x": 17,
+ "y": 3.5
+ },
+ {
+ "label": "9,6",
+ "x": 18,
+ "y": 3.5
+ },
+ {
+ "label": "4,3",
+ "x": 4,
+ "y": 4
+ },
+ {
+ "label": "4,4",
+ "x": 5,
+ "y": 4
+ },
+ {
+ "label": "10,2",
+ "x": 14,
+ "y": 4
+ },
+ {
+ "label": "10,3",
+ "x": 15,
+ "y": 4
+ },
+ {
+ "label": "11,0",
+ "x": 12.25,
+ "y": 4.25
+ },
+ {
+ "label": "11,1",
+ "x": 12.25,
+ "y": 5.5
+ },
+ {
+ "label": "11,2",
+ "x": 11,
+ "y": 6.75
+ },
+ {
+ "label": "11,3",
+ "x": 12.25,
+ "y": 6.75
+ },
+ {
+ "label": "4,5",
+ "x": 6.75,
+ "y": 3.5
+ },
+ {
+ "label": "4,6",
+ "x": 7.75,
+ "y": 3.5
+ },
+ {
+ "label": "5,6",
+ "x": 8.75,
+ "y": 3.5
+ },
+ {
+ "label": "5,3",
+ "x": 6.75,
+ "y": 4.75
+ },
+ {
+ "label": "5,4",
+ "x": 7.75,
+ "y": 4.75
+ },
+ {
+ "label": "5,5",
+ "x": 8.75,
+ "y": 4.75
+ }
+ ]
+ }
+ }
+}
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_track_carbonfet/keymaps/default/keymap.c b/keyboards/handwired/wylderbuilds/trackball/5x7_track_carbonfet/keymaps/default/keymap.c
new file mode 100644
index 00000000000..50288c38948
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_track_carbonfet/keymaps/default/keymap.c
@@ -0,0 +1,118 @@
+#include QMK_KEYBOARD_H
+
+#define _BASE 0
+#define _NAV 1
+#define _SYST 2
+#define _MOUSE 3 //layer for mouse functions
+
+// Macros
+#define TASK LCTL(LSFT(KC_ESC))
+#define TAB_R LCTL(KC_TAB)
+#define TAB_L LCTL(LSFT(KC_TAB))
+#define TAB_RO LCTL(LSFT(KC_T))
+#define CAD LCTL(LALT(KC_DEL))
+#define IAD LCTL(LALT(KC_INS))
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_BASE] = LAYOUT_5x7(
+ // left hand // right hand
+ LT(_SYST, 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, 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_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(_SYST),
+ KC_APP, KC_LGUI, MO(_NAV), TG(_MOUSE),
+ KC_LALT, LT(_NAV, KC_SPC), KC_SPC,
+ KC_BTN3, KC_BTN1, KC_WFWD,
+ _______, _______, _______, KC_WBAK),
+
+ [_NAV] = LAYOUT_5x7(
+ // left hand // right hand
+ KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC,
+ _______, _______, _______, LCTL(LSFT(KC_E)), _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______, _______,
+ _______, LCTL(KC_A), LCTL(KC_S), _______, _______, _______, KC_PGUP, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______,
+ _______, KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, _______, KC_PGDN, TAB_L, TAB_R, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+ [_SYST] = LAYOUT_5x7(
+ // left hand // right hand
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______,
+ _______, KC_INS, KC_PAUS, _______, IAD, CAD, _______, _______, _______, _______, _______, _______, _______,
+ KC_CAPS, KC_NUM, KC_SCRL, _______, _______, _______, _______, _______, _______, KC_MSTP, KC_VOLD, KC_VOLU, KC_MUTE,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, QK_BOOT, EE_CLR,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+
+ [_MOUSE] = LAYOUT_5x7(
+ // left hand // right hand
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+};
+
+
+//void keyboard_post_init_user(void) {
+// // Customise these values to desired behaviour
+// debug_enable=true;
+// debug_matrix=true;
+// debug_keyboard=true;
+// debug_mouse=true;
+//}
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_NAV] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_SYST] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_MOUSE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+};
+#endif
+
+#ifdef OLED_ENABLE
+bool oled_task_user(void) {
+ // Host Keyboard Layer Status
+ oled_write_P(PSTR("Layer: "), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _BASE:
+ oled_write_P(PSTR("Base\n"), false);
+ break;
+ case _NAV:
+ oled_write_P(PSTR("Nav\n"), false);
+ break;
+ case _SYST:
+ oled_write_P(PSTR("System\n"), false);
+ break;
+ case _MOUSE:
+ oled_write_P(PSTR("Mouse\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+
+ // Host Keyboard LED Status
+ led_t led_state = host_keyboard_led_state();
+ oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
+
+ return false;
+}
+#endif
+
+#define imageWidth 128
+#define imageHeight 36
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_track_carbonfet/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/5x7_track_carbonfet/keymaps/vial/config.h
new file mode 100644
index 00000000000..9e9c4faa2a4
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_track_carbonfet/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xF4, 0x2D, 0x0D, 0xFC, 0x72, 0xD0, 0xFD, 0x71}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 5 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 5 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_track_carbonfet/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/5x7_track_carbonfet/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..30f7fa5b6b0
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_track_carbonfet/keymaps/vial/keymap.c
@@ -0,0 +1,59 @@
+#include QMK_KEYBOARD_H
+#include "5x7_track_carbonfet.h"
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_5x7(
+ DRGSCRL, KC_ESC , KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC,
+ SNIPING, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, KC_EQL,
+ KC_BTN3, KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BTN3,
+ KC_BTN1, KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT ,KC_SLSH, KC_BSLS, KC_BTN1,
+ KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL,
+ RAISE, KC_SPC, KC_HOME, LOWER,
+ KC_TAB, KC_BSPC,KC_GRV, KC_ENT,
+ KC_DEL, KC_LALT
+ ),
+
+ [_LOWER] = LAYOUT_5x7(
+ _______,KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL,_______,
+ _______,_______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,_______,
+ _______,_______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS,_______,
+ _______,KC_PSCR, _______, KC_P0,
+ KC_BTN1,KC_BTN3,KC_BTN2, _______,
+ SNIPING,DRGSCRL,_______, _______,
+ QK_BOOT,_______
+
+ ),
+
+ [_RAISE] = LAYOUT_5x7(
+ _______,KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6, KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,_______,
+ _______,_______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,_______,
+ _______,_______,KC_LEFT,KC_UP,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD,_______,
+ _______,_______, KC_EQL ,_______,
+ _______,_______,_______, _______,
+ _______,_______,QK_BOOT, _______,
+ _______,_______
+ )
+};
+
+void keyboard_post_init_user(void) {
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+ debug_keyboard=true;
+ debug_mouse=true;
+#else
+ debug_enable=false;
+ debug_matrix=false;
+ debug_keyboard=false;
+ debug_mouse=false;
+#endif
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_track_carbonfet/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/5x7_track_carbonfet/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_track_carbonfet/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_track_carbonfet/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/5x7_track_carbonfet/keymaps/vial/vial.json
new file mode 100644
index 00000000000..f7b5577d6d2
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_track_carbonfet/keymaps/vial/vial.json
@@ -0,0 +1,203 @@
+{
+ "matrix": {
+ "rows": 12,
+ "cols": 7
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 5x7 Trackball Carbonfet"
+ },
+ [
+ {
+ "x": 4
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 4
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ "0,2",
+ {
+ "x": 12
+ },
+ "6,4",
+ "6,5",
+ "6,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ {
+ "x": 4
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ {
+ "x": 12
+ },
+ "7,4",
+ "7,5",
+ "7,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ "2,6",
+ {
+ "x": 4
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ {
+ "x": 12
+ },
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ {
+ "x": 4
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ {
+ "x": 12
+ },
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "4,3",
+ "4,4",
+ {
+ "x": 8
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 12.25
+ },
+ "11,0"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 12.25
+ },
+ "11,1"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 11
+ },
+ "11,2",
+ {
+ "x": 0.25
+ },
+ "11,3"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -4.25,
+ "x": 6.75
+ },
+ "4,5",
+ "4,6",
+ "5,6"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 6.75
+ },
+ "5,3",
+ "5,4",
+ "5,5"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_track_carbonfet/rules.mk b/keyboards/handwired/wylderbuilds/trackball/5x7_track_carbonfet/rules.mk
new file mode 100644
index 00000000000..c25902b5fe4
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_track_carbonfet/rules.mk
@@ -0,0 +1,8 @@
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+RGBLIGHT_ENABLE = no
+MOUSEKEY_ENABLE = yes
+CONSOLE_ENABLE = no
+#COMMAND_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_track_underglow/5x7_track_underglow.c b/keyboards/handwired/wylderbuilds/trackball/5x7_track_underglow/5x7_track_underglow.c
new file mode 100644
index 00000000000..23a9f4789f3
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_track_underglow/5x7_track_underglow.c
@@ -0,0 +1 @@
+#include "5x7_track_underglow.h"
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_track_underglow/5x7_track_underglow.h b/keyboards/handwired/wylderbuilds/trackball/5x7_track_underglow/5x7_track_underglow.h
new file mode 100644
index 00000000000..3ffcab6a630
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_track_underglow/5x7_track_underglow.h
@@ -0,0 +1,30 @@
+#pragma once
+
+#include "trackball.h"
+
+#define XXX KC_NO
+
+
+#define LAYOUT_5x7( \
+ 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, R30, R31, R32, R33, R34, R35, R36, \
+ L43, L44, R42, R43, \
+ L54, L55, L56, R50, R51, R52, \
+ L52, L53 \
+) { \
+ { 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 }, \
+ { XXX, XXX, XXX, L43, L44, XXX, XXX }, \
+ { XXX, XXX, L52, L53, L54, L55, L56 }, \
+\
+ { R00, R01, R02, R03, R04, R05, R06 }, \
+ { R10, R11, R12, R13, R14, R15, R16 }, \
+ { R20, R21, R22, R23, R24, R25, R26 }, \
+ { R30, R31, R32, R33, R34, R35, R36 }, \
+ { XXX, XXX, R42, R43, XXX, XXX, XXX }, \
+ { R50, R51, R52, XXX, XXX, XXX, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_track_underglow/config.h b/keyboards/handwired/wylderbuilds/trackball/5x7_track_underglow/config.h
new file mode 100644
index 00000000000..3eebbce8b9e
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_track_underglow/config.h
@@ -0,0 +1,113 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+//#include "config_common.h"
+// Basic Config
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+
+#define USE_SERIAL
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+
+// UNDERGLOW
+// WS2812 RGB LED strip input and number of LEDs
+#ifdef RGBLIGHT_ENABLE
+#define WS2812_PIO_USE_PIO1
+//#define WS2812_PIO_USE_PIO1
+//#define WS2812_PIO_USE_PIO1
+#define RGBLIGHT_LAYERS
+#define WS2812_DI_PIN GP22 // can use trackball jack if not used
+//#define WS2812_EXTERNAL_PULLUP
+#define RGBLED_NUM 36
+//#define DRIVER_LED_TOTAL 34
+#define RGBLED_SPLIT { 18, 18 }
+#define RGBLIGHT_SPLIT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 17
+#define RGBLIGHT_LIMIT_VAL 100
+//#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+#define NOP_FUDGE 0.4 // may not be needed if ws driver loaded
+#endif
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+//#define SERIAL_USART_PIN_SWAP
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Columns are doubled-up
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 7
+
+#define MATRIX_COL_PINS { GP2, GP3, GP4, GP5, GP6, GP7, GP8 }
+#define MATRIX_ROW_PINS { GP9, GP10, GP11, GP12, GP14, GP13 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define SPLIT_POINTING_ENABLE
+#define ROTATIONAL_TRANSFORM_ANGLE -25
+#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_RIGHT
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x03
+
+#define POINTING_DEVICE_AUTO_MOUSE_ENABLE
+// only required if not setting mouse layer elsewhere
+#define AUTO_MOUSE_DEFAULT_LAYER 3
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
+
+#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+
+//// Sensor Notes ////
+//// Pi Pico pins ////
+// 3V3 -- Power (not 3v3_EN)
+// GP17 -- CS pin
+// GP20 -- MISO pin
+// GP19 -- MOSI pin
+// GP18 -- SCK pin clock Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD0
+#define I2C1_SDA_PIN GP16
+#define I2C1_SCL_PIN GP17
+#define RGBLIGHT_LAYERS
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+// Misc settings
+// 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// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_track_underglow/info.json b/keyboards/handwired/wylderbuilds/trackball/5x7_track_underglow/info.json
new file mode 100644
index 00000000000..9da1282aa73
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_track_underglow/info.json
@@ -0,0 +1,365 @@
+{
+ "keyboard_name": "Dactyl-Manuform Wyld Track (5x7_track)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0055",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 12,
+ "cols": 7
+ },
+ "layouts": {
+ "LAYOUT_5x7": {
+ "layout": [
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "0,6",
+ "x": 7,
+ "y": 0
+ },
+ {
+ "label": "6,0",
+ "x": 12,
+ "y": 0
+ },
+ {
+ "label": "6,1",
+ "x": 13,
+ "y": 0
+ },
+ {
+ "label": "6,2",
+ "x": 14,
+ "y": 0
+ },
+ {
+ "label": "6,3",
+ "x": 15,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0.5
+ },
+ {
+ "label": "6,4",
+ "x": 16,
+ "y": 0.5
+ },
+ {
+ "label": "6,5",
+ "x": 17,
+ "y": 0.5
+ },
+ {
+ "label": "6,6",
+ "x": 18,
+ "y": 0.5
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "1,6",
+ "x": 7,
+ "y": 1
+ },
+ {
+ "label": "7,0",
+ "x": 12,
+ "y": 1
+ },
+ {
+ "label": "7,1",
+ "x": 13,
+ "y": 1
+ },
+ {
+ "label": "7,2",
+ "x": 14,
+ "y": 1
+ },
+ {
+ "label": "7,3",
+ "x": 15,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1.5
+ },
+ {
+ "label": "7,4",
+ "x": 16,
+ "y": 1.5
+ },
+ {
+ "label": "7,5",
+ "x": 17,
+ "y": 1.5
+ },
+ {
+ "label": "7,6",
+ "x": 18,
+ "y": 1.5
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "2,6",
+ "x": 7,
+ "y": 2
+ },
+ {
+ "label": "8,0",
+ "x": 12,
+ "y": 2
+ },
+ {
+ "label": "8,1",
+ "x": 13,
+ "y": 2
+ },
+ {
+ "label": "8,2",
+ "x": 14,
+ "y": 2
+ },
+ {
+ "label": "8,3",
+ "x": 15,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2.5
+ },
+ {
+ "label": "8,4",
+ "x": 16,
+ "y": 2.5
+ },
+ {
+ "label": "8,5",
+ "x": 17,
+ "y": 2.5
+ },
+ {
+ "label": "8,6",
+ "x": 18,
+ "y": 2.5
+ },
+ {
+ "label": "3,3",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "3,4",
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "3,5",
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "3,6",
+ "x": 7,
+ "y": 3
+ },
+ {
+ "label": "9,0",
+ "x": 12,
+ "y": 3
+ },
+ {
+ "label": "9,1",
+ "x": 13,
+ "y": 3
+ },
+ {
+ "label": "9,2",
+ "x": 14,
+ "y": 3
+ },
+ {
+ "label": "9,3",
+ "x": 15,
+ "y": 3
+ },
+ {
+ "label": "3,0",
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "label": "3,1",
+ "x": 2,
+ "y": 3.5
+ },
+ {
+ "label": "3,2",
+ "x": 3,
+ "y": 3.5
+ },
+ {
+ "label": "9,4",
+ "x": 16,
+ "y": 3.5
+ },
+ {
+ "label": "9,5",
+ "x": 17,
+ "y": 3.5
+ },
+ {
+ "label": "9,6",
+ "x": 18,
+ "y": 3.5
+ },
+ {
+ "label": "4,3",
+ "x": 4,
+ "y": 4
+ },
+ {
+ "label": "4,4",
+ "x": 5,
+ "y": 4
+ },
+ {
+ "label": "10,2",
+ "x": 14,
+ "y": 4
+ },
+ {
+ "label": "10,3",
+ "x": 15,
+ "y": 4
+ },
+ {
+ "label": "5,4",
+ "x": 6.75,
+ "y": 3.5
+ },
+ {
+ "label": "5,5",
+ "x": 7.75,
+ "y": 3.5
+ },
+ {
+ "label": "5,6",
+ "x": 8.75,
+ "y": 3.5
+ },
+ {
+ "label": "5,2",
+ "x": 7.75,
+ "y": 4.75
+ },
+ {
+ "label": "5,3",
+ "x": 8.75,
+ "y": 4.75
+ },
+ {
+ "label": "11,0",
+ "x": 9.75,
+ "y": 5.75
+ },
+ {
+ "label": "11,1",
+ "x": 10.75,
+ "y": 5.75
+ },
+ {
+ "label": "11,2",
+ "x": 11.75,
+ "y": 5.75
+ }
+ ]
+ }
+ }
+}
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_track_underglow/keymaps/default/keymap.c b/keyboards/handwired/wylderbuilds/trackball/5x7_track_underglow/keymaps/default/keymap.c
new file mode 100644
index 00000000000..50288c38948
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_track_underglow/keymaps/default/keymap.c
@@ -0,0 +1,118 @@
+#include QMK_KEYBOARD_H
+
+#define _BASE 0
+#define _NAV 1
+#define _SYST 2
+#define _MOUSE 3 //layer for mouse functions
+
+// Macros
+#define TASK LCTL(LSFT(KC_ESC))
+#define TAB_R LCTL(KC_TAB)
+#define TAB_L LCTL(LSFT(KC_TAB))
+#define TAB_RO LCTL(LSFT(KC_T))
+#define CAD LCTL(LALT(KC_DEL))
+#define IAD LCTL(LALT(KC_INS))
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_BASE] = LAYOUT_5x7(
+ // left hand // right hand
+ LT(_SYST, 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, 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_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(_SYST),
+ KC_APP, KC_LGUI, MO(_NAV), TG(_MOUSE),
+ KC_LALT, LT(_NAV, KC_SPC), KC_SPC,
+ KC_BTN3, KC_BTN1, KC_WFWD,
+ _______, _______, _______, KC_WBAK),
+
+ [_NAV] = LAYOUT_5x7(
+ // left hand // right hand
+ KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC,
+ _______, _______, _______, LCTL(LSFT(KC_E)), _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______, _______,
+ _______, LCTL(KC_A), LCTL(KC_S), _______, _______, _______, KC_PGUP, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______,
+ _______, KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, _______, KC_PGDN, TAB_L, TAB_R, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+ [_SYST] = LAYOUT_5x7(
+ // left hand // right hand
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______,
+ _______, KC_INS, KC_PAUS, _______, IAD, CAD, _______, _______, _______, _______, _______, _______, _______,
+ KC_CAPS, KC_NUM, KC_SCRL, _______, _______, _______, _______, _______, _______, KC_MSTP, KC_VOLD, KC_VOLU, KC_MUTE,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, QK_BOOT, EE_CLR,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+
+ [_MOUSE] = LAYOUT_5x7(
+ // left hand // right hand
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+};
+
+
+//void keyboard_post_init_user(void) {
+// // Customise these values to desired behaviour
+// debug_enable=true;
+// debug_matrix=true;
+// debug_keyboard=true;
+// debug_mouse=true;
+//}
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_NAV] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_SYST] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_MOUSE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+};
+#endif
+
+#ifdef OLED_ENABLE
+bool oled_task_user(void) {
+ // Host Keyboard Layer Status
+ oled_write_P(PSTR("Layer: "), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _BASE:
+ oled_write_P(PSTR("Base\n"), false);
+ break;
+ case _NAV:
+ oled_write_P(PSTR("Nav\n"), false);
+ break;
+ case _SYST:
+ oled_write_P(PSTR("System\n"), false);
+ break;
+ case _MOUSE:
+ oled_write_P(PSTR("Mouse\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+
+ // Host Keyboard LED Status
+ led_t led_state = host_keyboard_led_state();
+ oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
+
+ return false;
+}
+#endif
+
+#define imageWidth 128
+#define imageHeight 36
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_track_underglow/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/5x7_track_underglow/keymaps/vial/config.h
new file mode 100644
index 00000000000..edce7b813dc
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_track_underglow/keymaps/vial/config.h
@@ -0,0 +1,14 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x1A, 0xE9, 0x98, 0x9A, 0x8D, 0x49, 0xE4, 0xAB}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 5 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 5 }
+
+#define RGBLIGHT_LAYERS
+
+//
+//#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+//#define RGB_MATRIX_KEYPRESSES
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_track_underglow/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/5x7_track_underglow/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..82919d50da1
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_track_underglow/keymaps/vial/keymap.c
@@ -0,0 +1,247 @@
+#include QMK_KEYBOARD_H
+#include "5x7_track_underglow.h"
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+#define _MOUSE 3
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+enum wyld_keycodes {
+ WYLD_AUTO_MS_TOG = SAFE_RANGE
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_5x7(
+ DRGSCRL, KC_ESC , KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC,
+ SNIPING, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, KC_EQL,
+ _______, KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BTN3,
+ WYLD_AUTO_MS_TOG, KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT ,KC_SLSH, KC_BSLS, KC_BTN1,
+ KC_LBRC, KC_RBRC, KC_PLUS, KC_EQL,
+ RAISE, KC_SPC, KC_HOME, KC_LALT, KC_ENT, LOWER,
+ KC_TAB, KC_BSPC
+ ),
+
+ [_LOWER] = LAYOUT_5x7(
+ _______,KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL,_______,
+ _______,_______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,_______,
+ _______,_______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS,QK_BOOT,
+ _______,KC_PSCR, _______, KC_P0,
+ _______,KC_BTN1,KC_BTN3, _______,_______,_______,
+ SNIPING,DRGSCRL
+
+ ),
+
+ [_RAISE] = LAYOUT_5x7(
+ _______,KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6, KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,_______,
+ _______,_______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,_______,
+ _______,_______,KC_LEFT,KC_UP,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU,_______,
+ QK_BOOT,_______,RGB_VAI,RGB_SAI,RGB_HUI,RGB_MOD,RGB_TOG, _______,_______,_______,_______,_______,KC_VOLD,_______,
+ _______,_______, KC_EQL ,_______,
+ _______,_______,_______, _______,_______,_______,
+ _______,_______
+ ),
+
+ [_MOUSE] = LAYOUT_5x7(
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______, _______ ,_______,
+ _______,KC_BTN1,KC_BTN3, _______,_______,_______,
+ SNIPING,DRGSCRL
+ ),
+
+ [4] = LAYOUT_5x7(
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______, _______ ,_______,
+ _______,_______,_______, _______,_______,_______,
+ _______,_______
+ )
+
+};
+
+
+// AUTOMOUSE LAYERS
+#ifdef POINTING_DEVICE_AUTO_MOUSE_ENABLE
+void pointing_device_init_user(void) {
+ set_auto_mouse_enable(true);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case WYLD_AUTO_MS_TOG:
+ if (record->event.pressed) {
+ set_auto_mouse_enable(!get_auto_mouse_enable());
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+#endif
+
+// ENCODERS
+#ifdef ENCODER_MAP_ENABLE
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_QWERTY] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_LOWER] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD) },
+ [_RAISE] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD) },
+ [_MOUSE] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD) },
+ [4] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD) }
+};
+//#endif
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+const rgblight_segment_t PROGMEM querty_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_RED}, // Light 4 LEDs, starting with LED 6
+ {33, 3, HSV_RED} // Light 4 LEDs, starting with LED 6
+);
+const rgblight_segment_t PROGMEM lower_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_BLUE},
+ {33, 3, HSV_BLUE}
+);
+const rgblight_segment_t PROGMEM raise_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_YELLOW},
+ {33, 3, HSV_YELLOW}
+);
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ querty_layer, // Overrides caps lock layer
+ lower_layer, // Overrides other layers
+ raise_layer // Overrides other layers
+);
+
+//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(0, layer_state_cmp(state, _QWERTY));
+ return state;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(1, layer_state_cmp(state, _LOWER));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _RAISE));
+ return state;
+}
+
+
+#endif
+
+// rgblight_enable();
+#ifdef RGBLIGHT_ENABLE
+void keyboard_post_init_user(void) {
+ // Enable the LED layers
+ rgblight_layers = my_rgb_layers;
+}
+// rgblight_layers = my_rgb_layers;
+// rgblight_enable_noeeprom(); // Enables RGB, without saving settings
+// rgblight_sethsv_noeeprom_cyan();
+// rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
+#endif
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_left()) {
+ return OLED_ROTATION_270;
+ }
+ return OLED_ROTATION_0;
+}
+
+static const char PROGMEM wylderbuilds[] = {
+ // 'dark wylderbuilds_oled_name', 128x32
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40,
+ 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x20, 0x60,
+ 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x60, 0x60,
+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0,
+ 0x00, 0x00, 0xc1, 0xc1, 0x01, 0x01, 0xf1, 0x11, 0x01, 0x01, 0x01, 0x31, 0x60, 0xc0, 0x80, 0xc0,
+ 0xf0, 0x10, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0,
+ 0x00, 0x01, 0x03, 0x9e, 0xf8, 0x00, 0x00, 0x20, 0xe0, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0xf0, 0x30, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x98, 0xf0, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x00, 0x70, 0xfe, 0x03, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00,
+ 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x11, 0xf1, 0x11, 0x33, 0x63, 0xc3,
+ 0x83, 0x01, 0x01, 0xc1, 0xe1, 0x31, 0x11, 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,
+ 0x1f, 0x7c, 0xff, 0x07, 0x7c, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7f, 0xff,
+ 0x60, 0x30, 0x18, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xf2, 0x82, 0x02, 0x80, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x7f, 0x0e, 0x1b, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0x81, 0xc1, 0x63,
+ 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00,
+ 0x00, 0x1f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x60, 0x30, 0x1f,
+ 0x07, 0x00, 0x00, 0x01, 0x43, 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static void render_wylderbuilds(void) {
+ oled_write_raw_P(wylderbuilds, sizeof(wylderbuilds));
+}
+
+bool oled_task_user(void) {
+ oled_set_cursor(0, 3);
+ if (is_keyboard_left()) {
+ // oled_write_P(PSTR("Layer\n"), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ oled_write_P(PSTR(" BASE\n"), false);
+ break;
+ case _LOWER:
+ oled_write_P(PSTR("LOWER\n"), false);
+ break;
+ case _RAISE:
+ oled_write_P(PSTR("RAISE\n"), false);
+ break;
+ case _MOUSE:
+ oled_write_P(PSTR("MOUSE\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+ oled_set_cursor(2, 7);
+ oled_write_P(PSTR("WPM "), false);
+ oled_set_cursor(1, 8);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 9);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+ } else {
+ // write WPM to right OLED
+ oled_set_cursor(0, 0);
+ render_wylderbuilds();
+ oled_scroll_left();
+ }
+
+ return false;
+}
+#endif
+
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_track_underglow/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/5x7_track_underglow/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..a9a79949e8f
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_track_underglow/keymaps/vial/rules.mk
@@ -0,0 +1,5 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
+#VIALRGB_ENABLE = yes
+#RGB_MATRIX_ENABLE = yes
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_track_underglow/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/5x7_track_underglow/keymaps/vial/vial.json
new file mode 100644
index 00000000000..656d8b6582b
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_track_underglow/keymaps/vial/vial.json
@@ -0,0 +1,186 @@
+{
+ "matrix": {
+ "rows": 12,
+ "cols": 7
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 5x7 Standard Wyld Track Mini"
+ },
+ [
+ {
+ "x": 4
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 4
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ "6,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ "0,2",
+ {
+ "x": 12
+ },
+ "6,4",
+ "6,5",
+ "6,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ {
+ "x": 4
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ {
+ "x": 12
+ },
+ "7,4",
+ "7,5",
+ "7,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ "2,6",
+ {
+ "x": 4
+ },
+ "8,0",
+ {
+ "n": true
+ },
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ {
+ "x": 12
+ },
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ {
+ "x": 4
+ },
+ "9,0",
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ {
+ "x": 12
+ },
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "4,3",
+ "4,4",
+ {
+ "x": 8
+ },
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -1.5,
+ "x": 6.75
+ },
+ "5,4",
+ "5,5",
+ "5,6"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 7.75
+ },
+ "5,2",
+ "5,3"
+ ],
+ [
+ {
+ "r": -7,
+ "x": 9.75
+ },
+ "11,0",
+ "11,1",
+ "11,2"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_track_underglow/mcuconf.h b/keyboards/handwired/wylderbuilds/trackball/5x7_track_underglow/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_track_underglow/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/trackball/5x7_track_underglow/rules.mk b/keyboards/handwired/wylderbuilds/trackball/5x7_track_underglow/rules.mk
new file mode 100644
index 00000000000..65512a3a86e
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/5x7_track_underglow/rules.mk
@@ -0,0 +1,22 @@
+# Board, Bootloader and MCU
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+MOUSEKEY_ENABLE = yes
+#CONSOLE_ENABLE = yes
+#COMMAND_ENABLE = yes
+
+RGBLIGHT_ENABLE = yes
+WS2812_DRIVER = vendor
+SLEEP_LED_ENABLE = no
+
+ENCODER_ENABLE = no
+ENCODER_MAP_ENABLE = no
+
+OLED_ENABLE = yes
+OLED_DRIVER = ssd1306
+WPM_ENABLE = yes
+EXTRAKEY_ENABLE = yes # Audio control and System control
+
+OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x6_track/6x6_track.c b/keyboards/handwired/wylderbuilds/trackball/6x6_track/6x6_track.c
new file mode 100644
index 00000000000..dc4e94e6cbe
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x6_track/6x6_track.c
@@ -0,0 +1 @@
+#include "6x6_track.h"
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x6_track/6x6_track.h b/keyboards/handwired/wylderbuilds/trackball/6x6_track/6x6_track.h
new file mode 100644
index 00000000000..18829f02ca3
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x6_track/6x6_track.h
@@ -0,0 +1,34 @@
+#pragma once
+
+#include "trackball.h"
+
+#define XXX KC_NO
+
+
+#define LAYOUT_6x6( \
+L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, \
+L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, \
+L21, L22, L23, L24, L25, L26, R20, R21, R22, R23, R24, R25, \
+L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, \
+L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, \
+ L53, L54, R52, R53, \
+ L62, L61, L60, R61, \
+ L65, L64, L63, R62, \
+ R64, R63 \
+) { \
+{ XXX, L01, L02, L03, L04, L05, L06 }, \
+{ XXX, L11, L12, L13, L14, L15, L16 }, \
+{ XXX, L21, L22, L23, L24, L25, L26 }, \
+{ XXX, L31, L32, L33, L34, L35, L36 }, \
+{ XXX, L41, L42, L43, L44, L45, L46 }, \
+{ XXX, XXX, XXX, L53, L54, XXX, XXX }, \
+{ L60, L61, L62, L63, L64, L65, XXX}, \
+\
+{ R00, R01, R02, R03, R04, R05, XXX }, \
+{ R10, R11, R12, R13, R14, R15, XXX }, \
+{ R20, R21, R22, R23, R24, R25, XXX }, \
+{ R30, R31, R32, R33, R34, R35, XXX }, \
+{ R40, R41, R42, R43, R44, R45, XXX }, \
+{ XXX, XXX, R52, R53, XXX, XXX, XXX }, \
+{ XXX, R61, R62, R63, R64, XXX, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x6_track/config.h b/keyboards/handwired/wylderbuilds/trackball/6x6_track/config.h
new file mode 100644
index 00000000000..72f4e5a6a93
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x6_track/config.h
@@ -0,0 +1,112 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+// #include "config_common.h"
+// Basic Config
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+#define BOOTMAGIC_LITE_ROW 0 // TOP RIGHT KEY ON RIGHT SIDE, TOP LEFT KEY ON LEFT SIDE
+#define BOOTMAGIC_LITE_COLUMN 5
+
+//#define PRODUCT_ID 0x0002
+
+#define USE_SERIAL
+//#define SPLIT_HAND_PIN GP26 // high = left, low = right
+//#define SPLIT_HAND_PIN_LOW_IS_LEFT
+//#define SPLIT_HAND_MATRIX_GRID GP9, GP8
+//#define MASTER_RIGHT
+//#define MASTER_LEFT
+
+
+// Using Serial instead of I2C
+#define SOFT_SERIAL_PIN GP28
+#define SPLIT_HAND_PIN GP0
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Columns are doubled-up
+#define MATRIX_ROWS 14
+#define MATRIX_COLS 8
+
+#define MATRIX_ROW_PINS { GP2, GP3, GP8, GP4, GP13, GP9, GP14 }
+#define MATRIX_COL_PINS { GP1, GP10, GP11, GP12, GP7, GP6, GP5, GP19 }
+#define DIODE_DIRECTION ROW2COL
+
+//#define DIODE_DIRECTION COL2ROW
+
+#define SPI_DRIVER SPID0
+#define SPI_SCK_PIN GP22
+#define SPI_MISO_PIN GP20
+#define SPI_MOSI_PIN GP23
+#define SPLIT_POINTING_ENABLE
+#define ROTATIONAL_TRANSFORM_ANGLE -25
+#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_RIGHT
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x02
+
+#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+#define POINTING_DEVICE_AUTO_MOUSE_ENABLE
+// only required if not setting mouse layer elsewhere
+#define AUTO_MOUSE_DEFAULT_LAYER 3
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 4
+
+//// Rotary Encoder ////
+// GP21
+// GP22
+
+//// Sensor Notes ////
+//// Pi Pico pins ////
+// 3V3 -- Power (not 3v3_EN!)
+// GP21 -- CS pin
+// GP20 -- MISO pin
+// GP19 -- MOSI pin
+// GP18 -- SCK pin clock
+// GND -- GND
+
+// WS2812 RGB LED strip input and number of LEDs
+//#ifdef RGBLIGHT_ENABLE
+//#define RGB_DI_PIN GP17
+//#define RGBLED_NUM 34
+////#define DRIVER_LED_TOTAL 34
+//#define RGBLED_SPLIT { 17, 17 }
+//#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+//#define NOP_FUDGE 0.4
+//#endif
+
+//// OLED Pins and Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD1
+#define I2C1_SDA_PIN GP24
+#define I2C1_SCL_PIN GP25
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+// Misc settings
+// 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
+// Enables This makes it easier for fast typists to use dual-function keys
+#define PERMISSIVE_HOLD
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x6_track/info.json b/keyboards/handwired/wylderbuilds/trackball/6x6_track/info.json
new file mode 100644
index 00000000000..a507f918370
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x6_track/info.json
@@ -0,0 +1,395 @@
+{
+ "keyboard_name": "Dactyl-Manuform Wyld Trackball (6x6_track)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0234",
+ "device_version": "0.0.1"
+ },
+ "width": 18,
+ "height": 8,
+ "matrix": {
+ "rows": 14,
+ "cols": 8
+ },
+ "layouts": {
+ "LAYOUT_6x6": {
+ "layout": [
+ {
+ "label": "0,3",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,6",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "7,0",
+ "x": 12,
+ "y": 0
+ },
+ {
+ "label": "7,1",
+ "x": 13,
+ "y": 0
+ },
+ {
+ "label": "7,2",
+ "x": 14,
+ "y": 0
+ },
+ {
+ "label": "7,3",
+ "x": 15,
+ "y": 0
+ },
+ {
+ "label": "0,1",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,2",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "7,4",
+ "x": 16,
+ "y": 0.5
+ },
+ {
+ "label": "7,5",
+ "x": 17,
+ "y": 0.5
+ },
+ {
+ "label": "1,3",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,6",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "8,0",
+ "x": 12,
+ "y": 1
+ },
+ {
+ "label": "8,1",
+ "x": 13,
+ "y": 1
+ },
+ {
+ "label": "8,2",
+ "x": 14,
+ "y": 1
+ },
+ {
+ "label": "8,3",
+ "x": 15,
+ "y": 1
+ },
+ {
+ "label": "1,1",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,2",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "8,4",
+ "x": 16,
+ "y": 1.5
+ },
+ {
+ "label": "8,5",
+ "x": 17,
+ "y": 1.5
+ },
+ {
+ "label": "2,3",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,6",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "9,0",
+ "x": 12,
+ "y": 2
+ },
+ {
+ "label": "9,1",
+ "x": 13,
+ "y": 2
+ },
+ {
+ "label": "9,2",
+ "x": 14,
+ "y": 2
+ },
+ {
+ "label": "9,3",
+ "x": 15,
+ "y": 2
+ },
+ {
+ "label": "2,1",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,2",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "9,4",
+ "x": 16,
+ "y": 2.5
+ },
+ {
+ "label": "9,5",
+ "x": 17,
+ "y": 2.5
+ },
+ {
+ "label": "3,3",
+ "x": 3,
+ "y": 3
+ },
+ {
+ "label": "3,4",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "3,5",
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "3,6",
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "10,0",
+ "x": 12,
+ "y": 3
+ },
+ {
+ "label": "10,1",
+ "x": 13,
+ "y": 3
+ },
+ {
+ "label": "10,2",
+ "x": 14,
+ "y": 3
+ },
+ {
+ "label": "10,3",
+ "x": 15,
+ "y": 3
+ },
+ {
+ "label": "3,1",
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "label": "3,2",
+ "x": 2,
+ "y": 3.5
+ },
+ {
+ "label": "10,4",
+ "x": 16,
+ "y": 3.5
+ },
+ {
+ "label": "10,5",
+ "x": 17,
+ "y": 3.5
+ },
+ {
+ "label": "4,3",
+ "x": 3,
+ "y": 4
+ },
+ {
+ "label": "4,4",
+ "x": 4,
+ "y": 4
+ },
+ {
+ "label": "4,5",
+ "x": 5,
+ "y": 4
+ },
+ {
+ "label": "4,6",
+ "x": 6,
+ "y": 4
+ },
+ {
+ "label": "11,0",
+ "x": 12,
+ "y": 4
+ },
+ {
+ "label": "11,1",
+ "x": 13,
+ "y": 4
+ },
+ {
+ "label": "11,2",
+ "x": 14,
+ "y": 4
+ },
+ {
+ "label": "11,3",
+ "x": 15,
+ "y": 4
+ },
+ {
+ "label": "4,1",
+ "x": 1,
+ "y": 4.5
+ },
+ {
+ "label": "4,2",
+ "x": 2,
+ "y": 4.5
+ },
+ {
+ "label": "11,4",
+ "x": 16,
+ "y": 4.5
+ },
+ {
+ "label": "11,5",
+ "x": 17,
+ "y": 4.5
+ },
+ {
+ "label": "5,3",
+ "x": 3,
+ "y": 5
+ },
+ {
+ "label": "5,4",
+ "x": 4,
+ "y": 5
+ },
+ {
+ "label": "12,2",
+ "x": 14,
+ "y": 5
+ },
+ {
+ "label": "12,3",
+ "x": 15,
+ "y": 5
+ },
+ {
+ "label": "6,2",
+ "x": 5.5,
+ "y": 5.25
+ },
+ {
+ "label": "6,1",
+ "x": 6.5,
+ "y": 5.25
+ },
+ {
+ "label": "6,0",
+ "x": 7.5,
+ "y": 5.25
+ },
+ {
+ "label": "13,1",
+ "x": 11.75,
+ "y": 5.25
+ },
+ {
+ "label": "6,5",
+ "x": 5.5,
+ "y": 6.25
+ },
+ {
+ "label": "6,4",
+ "x": 6.5,
+ "y": 6.25
+ },
+ {
+ "label": "6,3",
+ "x": 7.5,
+ "y": 6.25
+ },
+ {
+ "label": "13,2",
+ "x": 11.75,
+ "y": 6.25
+ },
+ {
+ "label": "13,4",
+ "x": 10.75,
+ "y": 7.25
+ },
+ {
+ "label": "13,3",
+ "x": 11.75,
+ "y": 7.25
+ }
+ ]
+ }
+ }
+}
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x6_track/keymaps/default/keymap.c b/keyboards/handwired/wylderbuilds/trackball/6x6_track/keymaps/default/keymap.c
new file mode 100644
index 00000000000..50288c38948
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x6_track/keymaps/default/keymap.c
@@ -0,0 +1,118 @@
+#include QMK_KEYBOARD_H
+
+#define _BASE 0
+#define _NAV 1
+#define _SYST 2
+#define _MOUSE 3 //layer for mouse functions
+
+// Macros
+#define TASK LCTL(LSFT(KC_ESC))
+#define TAB_R LCTL(KC_TAB)
+#define TAB_L LCTL(LSFT(KC_TAB))
+#define TAB_RO LCTL(LSFT(KC_T))
+#define CAD LCTL(LALT(KC_DEL))
+#define IAD LCTL(LALT(KC_INS))
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_BASE] = LAYOUT_5x7(
+ // left hand // right hand
+ LT(_SYST, 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, 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_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(_SYST),
+ KC_APP, KC_LGUI, MO(_NAV), TG(_MOUSE),
+ KC_LALT, LT(_NAV, KC_SPC), KC_SPC,
+ KC_BTN3, KC_BTN1, KC_WFWD,
+ _______, _______, _______, KC_WBAK),
+
+ [_NAV] = LAYOUT_5x7(
+ // left hand // right hand
+ KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC,
+ _______, _______, _______, LCTL(LSFT(KC_E)), _______, _______, _______, KC_HOME, KC_UP, KC_END, _______, _______, _______,
+ _______, LCTL(KC_A), LCTL(KC_S), _______, _______, _______, KC_PGUP, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______,
+ _______, KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, _______, KC_PGDN, TAB_L, TAB_R, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+ [_SYST] = LAYOUT_5x7(
+ // left hand // right hand
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______,
+ _______, KC_INS, KC_PAUS, _______, IAD, CAD, _______, _______, _______, _______, _______, _______, _______,
+ KC_CAPS, KC_NUM, KC_SCRL, _______, _______, _______, _______, _______, _______, KC_MSTP, KC_VOLD, KC_VOLU, KC_MUTE,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, QK_BOOT, EE_CLR,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+
+ [_MOUSE] = LAYOUT_5x7(
+ // left hand // right hand
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______),
+
+};
+
+
+//void keyboard_post_init_user(void) {
+// // Customise these values to desired behaviour
+// debug_enable=true;
+// debug_matrix=true;
+// debug_keyboard=true;
+// debug_mouse=true;
+//}
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_NAV] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_SYST] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_MOUSE] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+};
+#endif
+
+#ifdef OLED_ENABLE
+bool oled_task_user(void) {
+ // Host Keyboard Layer Status
+ oled_write_P(PSTR("Layer: "), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _BASE:
+ oled_write_P(PSTR("Base\n"), false);
+ break;
+ case _NAV:
+ oled_write_P(PSTR("Nav\n"), false);
+ break;
+ case _SYST:
+ oled_write_P(PSTR("System\n"), false);
+ break;
+ case _MOUSE:
+ oled_write_P(PSTR("Mouse\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+
+ // Host Keyboard LED Status
+ led_t led_state = host_keyboard_led_state();
+ oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
+
+ return false;
+}
+#endif
+
+#define imageWidth 128
+#define imageHeight 36
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x6_track/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/6x6_track/keymaps/vial/config.h
new file mode 100644
index 00000000000..534b71eb15f
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x6_track/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xFF, 0x0C, 0xE7, 0x47, 0x22, 0x22, 0x4F, 0x9A}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 5 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 5 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x6_track/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/6x6_track/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..7163920132a
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x6_track/keymaps/vial/keymap.c
@@ -0,0 +1,136 @@
+#include QMK_KEYBOARD_H
+#include "6x6_track.h"
+
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+#define _MOUSE 3
+
+enum wyld_keycodes {
+ WYLD_AUTO_MS_TOG = SAFE_RANGE
+};
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_6x6(
+ 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_ESC , 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_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_MINS,
+ KC_LSFT, 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_BSLS,
+ KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL,
+ RAISE, KC_SPC, KC_TAB, LOWER,
+ KC_BSPC,KC_HOME, KC_GRV, KC_ENT,
+ KC_DEL, KC_LALT
+ ),
+
+ [_LOWER] = LAYOUT_6x6(
+ 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_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS,
+ _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE,
+ _______,DPI_RMOD,DPI_MOD,DPI_RST,_______,WYLD_AUTO_MS_TOG, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS,
+ _______,KC_PSCR, _______, KC_P0,
+ _______,SNIPING,DRGSCRL, _______,
+ KC_BTN1,KC_BTN3, KC_BTN2, _______,
+ _______,QK_BOOT
+
+ ),
+
+ [_RAISE] = LAYOUT_6x6(
+ KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,
+ _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE,
+ _______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______, KC_EQL ,_______,
+ _______,_______,_______, _______,
+ QK_BOOT,_______,_______, _______,
+ _______,_______
+ ),
+ [_MOUSE] = LAYOUT_6x6(
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______,KC_BTN2,KC_BTN3,KC_BTN1,_______, _______,KC_BTN1,KC_BTN3,KC_BTN2,_______,_______,
+ _______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
+ _______,_______, _______ ,_______,
+ _______,SNIPING,DRGSCRL, _______,
+ KC_BTN1,KC_BTN3, KC_BTN2, _______,
+ _______,_______
+ )
+};
+
+#ifdef POINTING_DEVICE_COMBINED
+static void check_drag(report_mouse_t* mouse_report) {
+ static int16_t scroll_buffer_x = 0;
+ static int16_t scroll_buffer_y = 0;
+
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_X
+ scroll_buffer_x -= mouse_report->x;
+# else
+ scroll_buffer_x += mouse_report->x;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_X
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ scroll_buffer_y -= mouse_report->y;
+# else
+ scroll_buffer_y += mouse_report->y;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ mouse_report->x = 0;
+ mouse_report->y = 0;
+ if (abs(scroll_buffer_x) > 6) {
+ mouse_report->h = scroll_buffer_x > 0 ? 1 : -1;
+ scroll_buffer_x = 0;
+ }
+ if (abs(scroll_buffer_y) > 6) {
+ mouse_report->v = scroll_buffer_y > 0 ? 1 : -1;
+ scroll_buffer_y = 0;
+ }
+}
+
+report_mouse_t pointing_device_task_combined_user(report_mouse_t left_report, report_mouse_t right_report) {
+ check_drag_scroll(&left_report); // updated in trackball.c
+ return pointing_device_combine_reports(left_report, right_report);
+}
+#endif
+
+#ifdef POINTING_DEVICE_AUTO_MOUSE_ENABLE
+void pointing_device_init_user(void) {
+ set_auto_mouse_enable(true);
+ set_auto_mouse_enable(false);
+}
+
+// Ensures only the pointing device activates mouse layer on dual track builds
+// And also prevents dragscroll from activating it
+bool auto_mouse_activation(report_mouse_t mouse_report) {
+ return mouse_report.x != 0 || mouse_report.y != 0 || mouse_report.buttons;
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case WYLD_AUTO_MS_TOG:
+ if (record->event.pressed) {
+ set_auto_mouse_enable(!get_auto_mouse_enable());
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+#endif
+
+void keyboard_post_init_user(void) {
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+ debug_keyboard=true;
+ debug_mouse=true;
+#else
+ debug_enable=false;
+ debug_matrix=false;
+ debug_keyboard=false;
+ debug_mouse=false;
+#endif
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x6_track/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/6x6_track/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x6_track/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x6_track/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/6x6_track/keymaps/vial/vial.json
new file mode 100644
index 00000000000..4b750c47c9a
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x6_track/keymaps/vial/vial.json
@@ -0,0 +1,213 @@
+{
+ "matrix": {
+ "rows": 14,
+ "cols": 7
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 6x6 Carbonfet Trackball"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 5
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,1",
+ "0,2",
+ {
+ "x": 13
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ {
+ "x": 5
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,1",
+ "1,2",
+ {
+ "x": 13
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,3",
+ "2,4",
+ {
+ "n": true
+ },
+ "2,5",
+ "2,6",
+ {
+ "x": 5
+ },
+ "9,0",
+ {
+ "n": true
+ },
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,1",
+ "2,2",
+ {
+ "x": 13
+ },
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ {
+ "x": 5
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,1",
+ "3,2",
+ {
+ "x": 13
+ },
+ "10,4",
+ "10,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ {
+ "x": 5
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "4,1",
+ "4,2",
+ {
+ "x": 13
+ },
+ "11,4",
+ "11,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "5,3",
+ "5,4",
+ {
+ "x": 9
+ },
+ "12,2",
+ "12,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 5.5
+ },
+ "6,2",
+ "6,1",
+ "6,0",
+ {
+ "x": 3.25
+ },
+ "13,1"
+ ],
+ [
+ {
+ "x": 5.5
+ },
+ "6,5",
+ "6,4",
+ "6,3",
+ {
+ "x": 3.25
+ },
+ "13,2"
+ ],
+ [
+ {
+ "x": 10.75
+ },
+ "13,4",
+ "13,3"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x6_track/rules.mk b/keyboards/handwired/wylderbuilds/trackball/6x6_track/rules.mk
new file mode 100644
index 00000000000..b7c41714783
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x6_track/rules.mk
@@ -0,0 +1,13 @@
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+RGBLIGHT_ENABLE = no
+MOUSEKEY_ENABLE = yes
+CONSOLE_ENABLE = no
+#COMMAND_ENABLE = yes
+BOOTMAGIC_ENABLE = yes
+OLED_ENABLE = yes
+WPM_ENABLE = yes
+
+OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x6_track/wylderbuilds-6x6-carbonfet-trackball.json b/keyboards/handwired/wylderbuilds/trackball/6x6_track/wylderbuilds-6x6-carbonfet-trackball.json
new file mode 100644
index 00000000000..d01dc82be5d
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x6_track/wylderbuilds-6x6-carbonfet-trackball.json
@@ -0,0 +1,205 @@
+[
+ {
+ "name": "Wylderbuilds 6x6 Carbonfet Trackball"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,2",
+ "0,3",
+ "0,4",
+ "0,5",
+ {
+ "x": 5
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ {
+ "x": 13
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,2",
+ "1,3",
+ "1,4",
+ "1,5",
+ {
+ "x": 5
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ {
+ "x": 13
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,2",
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ {
+ "x": 5
+ },
+ "9,0",
+ {
+ "n": true
+ },
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ {
+ "x": 13
+ },
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,2",
+ "3,3",
+ "3,4",
+ "3,5",
+ {
+ "x": 5
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ {
+ "x": 13
+ },
+ "10,4",
+ "10,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,2",
+ "4,3",
+ "4,4",
+ "4,5",
+ {
+ "x": 5
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "4,0",
+ "4,1",
+ {
+ "x": 13
+ },
+ "11,4",
+ "11,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "5,2",
+ "5,3",
+ {
+ "x": 9
+ },
+ "12,2",
+ "12,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 5.5
+ },
+ "6,3",
+ "6,4",
+ "6,5",
+ {
+ "x": 3.25
+ },
+ "13,0"
+ ],
+ [
+ {
+ "x": 5.5
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ {
+ "x": 3.25
+ },
+ "13,1"
+ ],
+ [
+ {
+ "x": 10.75
+ },
+ "13,2",
+ "13,3"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x6_track/wylderbuilds-6x6-carbonfet-trackball_2.json b/keyboards/handwired/wylderbuilds/trackball/6x6_track/wylderbuilds-6x6-carbonfet-trackball_2.json
new file mode 100644
index 00000000000..047510a55a7
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x6_track/wylderbuilds-6x6-carbonfet-trackball_2.json
@@ -0,0 +1,205 @@
+[
+ {
+ "name": "Wylderbuilds 6x6 Carbonfet Trackball"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 5
+ },
+ "7,1",
+ "7,2",
+ "7,3",
+ "7,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,1",
+ "0,2",
+ {
+ "x": 13
+ },
+ "7,5",
+ "7,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ {
+ "x": 5
+ },
+ "8,1",
+ "8,2",
+ "8,3",
+ "8,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,1",
+ "1,2",
+ {
+ "x": 13
+ },
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,3",
+ "2,4",
+ {
+ "n": true
+ },
+ "2,5",
+ "2,6",
+ {
+ "x": 5
+ },
+ "9,1",
+ {
+ "n": true
+ },
+ "9,2",
+ "9,3",
+ "9,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,1",
+ "2,2",
+ {
+ "x": 13
+ },
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ {
+ "x": 5
+ },
+ "10,1",
+ "10,2",
+ "10,3",
+ "10,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,1",
+ "3,2",
+ {
+ "x": 13
+ },
+ "10,5",
+ "10,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ {
+ "x": 5
+ },
+ "11,1",
+ "11,2",
+ "11,3",
+ "11,4"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "4,1",
+ "4,2",
+ {
+ "x": 13
+ },
+ "11,5",
+ "11,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "5,3",
+ "5,4",
+ {
+ "x": 9
+ },
+ "12,3",
+ "12,4"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 5.5
+ },
+ "6,3",
+ "6,4",
+ "6,5",
+ {
+ "x": 3.25
+ },
+ "13,0"
+ ],
+ [
+ {
+ "x": 5.5
+ },
+ "6,0",
+ "6,1",
+ "6,2",
+ {
+ "x": 3.25
+ },
+ "13,1"
+ ],
+ [
+ {
+ "x": 10.75
+ },
+ "13,2",
+ "13,3"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x6_track/wylderbuilds-6x6-carbonfet-trackball_3.json b/keyboards/handwired/wylderbuilds/trackball/6x6_track/wylderbuilds-6x6-carbonfet-trackball_3.json
new file mode 100644
index 00000000000..1a3a6b9c3db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x6_track/wylderbuilds-6x6-carbonfet-trackball_3.json
@@ -0,0 +1,205 @@
+[
+ {
+ "name": "Wylderbuilds 6x6 Carbonfet Trackball"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 5
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,1",
+ "0,2",
+ {
+ "x": 13
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ {
+ "x": 5
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,1",
+ "1,2",
+ {
+ "x": 13
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,3",
+ "2,4",
+ {
+ "n": true
+ },
+ "2,5",
+ "2,6",
+ {
+ "x": 5
+ },
+ "9,0",
+ {
+ "n": true
+ },
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,1",
+ "2,2",
+ {
+ "x": 13
+ },
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ {
+ "x": 5
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,1",
+ "3,2",
+ {
+ "x": 13
+ },
+ "10,4",
+ "10,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ {
+ "x": 5
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "4,1",
+ "4,2",
+ {
+ "x": 13
+ },
+ "11,4",
+ "11,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "5,3",
+ "5,4",
+ {
+ "x": 9
+ },
+ "12,2",
+ "12,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 5.5
+ },
+ "6,2",
+ "6,1",
+ "6,0",
+ {
+ "x": 3.25
+ },
+ "13,1"
+ ],
+ [
+ {
+ "x": 5.5
+ },
+ "6,5",
+ "6,4",
+ "6,3",
+ {
+ "x": 3.25
+ },
+ "13,2"
+ ],
+ [
+ {
+ "x": 10.75
+ },
+ "13,3",
+ "13,4"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x6_track/wylderbuilds-6x6-carbonfet-trackball_4.json b/keyboards/handwired/wylderbuilds/trackball/6x6_track/wylderbuilds-6x6-carbonfet-trackball_4.json
new file mode 100644
index 00000000000..a3242f12ee1
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x6_track/wylderbuilds-6x6-carbonfet-trackball_4.json
@@ -0,0 +1,205 @@
+[
+ {
+ "name": "Wylderbuilds 6x6 Carbonfet Trackball"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 5
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,1",
+ "0,2",
+ {
+ "x": 13
+ },
+ "7,4",
+ "7,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ {
+ "x": 5
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,1",
+ "1,2",
+ {
+ "x": 13
+ },
+ "8,4",
+ "8,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,3",
+ "2,4",
+ {
+ "n": true
+ },
+ "2,5",
+ "2,6",
+ {
+ "x": 5
+ },
+ "9,0",
+ {
+ "n": true
+ },
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,1",
+ "2,2",
+ {
+ "x": 13
+ },
+ "9,4",
+ "9,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ {
+ "x": 5
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,1",
+ "3,2",
+ {
+ "x": 13
+ },
+ "10,4",
+ "10,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ {
+ "x": 5
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "4,1",
+ "4,2",
+ {
+ "x": 13
+ },
+ "11,4",
+ "11,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "5,3",
+ "5,4",
+ {
+ "x": 9
+ },
+ "12,2",
+ "12,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 5.5
+ },
+ "6,2",
+ "6,1",
+ "6,0",
+ {
+ "x": 3.25
+ },
+ "13,1"
+ ],
+ [
+ {
+ "x": 5.5
+ },
+ "6,5",
+ "6,4",
+ "6,3",
+ {
+ "x": 3.25
+ },
+ "13,2"
+ ],
+ [
+ {
+ "x": 10.75
+ },
+ "13,4",
+ "13,3"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_full_dual_track/6x7_full_dual_track.c b/keyboards/handwired/wylderbuilds/trackball/6x7_full_dual_track/6x7_full_dual_track.c
new file mode 100644
index 00000000000..c8701b51e5e
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_full_dual_track/6x7_full_dual_track.c
@@ -0,0 +1,5 @@
+//
+// Created by nethe on 11/9/2022.
+//
+
+#include "6x7_full_dual_track.h"
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_full_dual_track/6x7_full_dual_track.h b/keyboards/handwired/wylderbuilds/trackball/6x7_full_dual_track/6x7_full_dual_track.h
new file mode 100644
index 00000000000..07ddd814d9a
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_full_dual_track/6x7_full_dual_track.h
@@ -0,0 +1,43 @@
+//
+// Created by nethe on 11/9/2022.
+//
+
+#ifndef WYLD_QMK_FIRMWARE_6X7_H
+#define WYLD_QMK_FIRMWARE_6X7_H
+
+#endif // WYLD_QMK_FIRMWARE_6x7
+
+#pragma once
+
+#include "trackball.h"
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_6x7( \
+ 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, R30, R31, R32, R33, R34, R35, R36, \
+ L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46, \
+ L50, L51, L52, L53, L54, R52, R53, R54, R55, R56, \
+ L66, R60, \
+ L65, R61, \
+ L63, L64, R62, R63 \
+) { \
+ { 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 }, \
+ { L40, L41, L42, L43, L44, L45, L46 }, \
+ { L50, L51, L52, L53, L54, XXX, XXX }, \
+ { XXX, XXX, XXX, L63, L64, L65, L66 }, \
+\
+ { R00, R01, R02, R03, R04, R05, R06 }, \
+ { R10, R11, R12, R13, R14, R15, R16 }, \
+ { R20, R21, R22, R23, R24, R25, R26 }, \
+ { R30, R31, R32, R33, R34, R35, R36 }, \
+ { R40, R41, R42, R43, R44, R45, R46 }, \
+ { XXX, XXX, R52, R53, R54, R55, R56 }, \
+ { R60, R61, R62, R63, XXX, XXX, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_full_dual_track/config.h b/keyboards/handwired/wylderbuilds/trackball/6x7_full_dual_track/config.h
new file mode 100644
index 00000000000..4da737d3c6c
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_full_dual_track/config.h
@@ -0,0 +1,118 @@
+//
+// Created by nethe on 11/9/2022.
+//
+//#define PRODUCT_ID 0x0001
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+
+// Dactyl Manuform Hotswap
+#pragma once
+
+#include "config_common.h"
+// Basic Config
+
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+#define SPLIT_POINTING_ENABLE
+//#define POINTING_DEVICE_INVERT_Y // works on left COMMENTED OUT
+//#define ROTATIONAL_TRANSFORM_ANGLE 25 // works on leftb
+#define POINTING_DEVICE_COMBINED
+
+
+
+#define POINTING_DEVICE_ROTATION_90
+//#define POINTING_DEVICE_ROTATION_90_RIGHT // TESTING RIGHT COMMENTED OUT
+#define ROTATIONAL_TRANSFORM_ANGLE -45 // TESTING RIGHT SHIFTED FROM -35 TO -45 TO TEST LEFT
+#define POINTING_DEVICE_INVERT_Y_RIGHT
+#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_INVERT_X
+//#define POINTING_DEVICE_INVERT_X_RIGHT
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x02
+
+//#define POINTING_DEVICE_DEBUG
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+//#define SERIAL_USART_PIN_SWAP
+
+// RP2040 Settings
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+// More RP2040 Settings
+#define RP2040_FLASH_AT25SF128A
+#define RP2040_FLASH_GD25Q64CS
+#define RP2040_FLASH_W25X10CL
+#define RP2040_FLASH_IS25LP080
+#define RP2040_FLASH_GENERIC_03H
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 14
+#define MATRIX_COLS 7
+
+#define MATRIX_COL_PINS { GP2, GP3, GP4, GP5, GP6, GP7, GP8 }
+#define MATRIX_ROW_PINS { GP9, GP10, GP11, GP12, GP13, GP14, GP15 }
+#define DIODE_DIRECTION COL2ROW
+
+//# define MASTER_RIGHT
+# define SPLIT_MODS_ENABLE
+# define SPLIT_WPM_ENABLE
+# define SPLIT_LAYER_STATE_ENABLE
+# define SPLIT_OLED_ENABLE
+# define SPLIT_LED_STATE_ENABLE
+// End of Basic Config
+
+#define ENCODERS_PAD_A { GP24 }
+#define ENCODERS_PAD_B { GP25 }
+#define ENCODER_RESOLUTIONS { 2 }
+
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD1
+#define I2C1_SDA_PIN GP16
+#define I2C1_SCL_PIN GP17
+#define RGBLIGHT_LAYERS
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+//#define WS2812_PIO_USE_PIO1
+//#define WS2812_PIO_USE_PIO1
+#define RGB_DI_PIN GP29
+//#define WS2812_EXTERNAL_PULLUP
+#define RGBLED_NUM 36
+//#define DRIVER_LED_TOTAL 24
+#define RGBLED_SPLIT { 18, 18 }
+#define RGBLIGHT_SPLIT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 17
+#define RGBLIGHT_LIMIT_VAL 255
+//#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+#define NOP_FUDGE 0.4 // may not be needed if ws driver loaded
+#endif
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_full_dual_track/info.json b/keyboards/handwired/wylderbuilds/trackball/6x7_full_dual_track/info.json
new file mode 100644
index 00000000000..a625bde814c
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_full_dual_track/info.json
@@ -0,0 +1,465 @@
+{
+ "keyboard_name": "Dactyl-Manuform (6x7_full_track)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "bootloader": "rp2040",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x004A",
+ "device_version": "0.0.1"
+ },
+ "width": 22,
+ "height": 10,
+ "matrix": {
+ "rows": 14,
+ "cols": 7
+ },
+ "layouts": {
+ "LAYOUT_6x7": {
+ "layout": [
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "0,6",
+ "x": 7,
+ "y": 0
+ },
+ {
+ "label": "7,0",
+ "x": 12,
+ "y": 0
+ },
+ {
+ "label": "7,1",
+ "x": 13,
+ "y": 0
+ },
+ {
+ "label": "7,2",
+ "x": 14,
+ "y": 0
+ },
+ {
+ "label": "7,3",
+ "x": 15,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0.5
+ },
+ {
+ "label": "7,4",
+ "x": 16,
+ "y": 0.5
+ },
+ {
+ "label": "7,5",
+ "x": 17,
+ "y": 0.5
+ },
+ {
+ "label": "7,6",
+ "x": 18,
+ "y": 0.5
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "1,6",
+ "x": 7,
+ "y": 1
+ },
+ {
+ "label": "8,0",
+ "x": 12,
+ "y": 1
+ },
+ {
+ "label": "8,1",
+ "x": 13,
+ "y": 1
+ },
+ {
+ "label": "8,2",
+ "x": 14,
+ "y": 1
+ },
+ {
+ "label": "8,3",
+ "x": 15,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1.5
+ },
+ {
+ "label": "8,4",
+ "x": 16,
+ "y": 1.5
+ },
+ {
+ "label": "8,5",
+ "x": 17,
+ "y": 1.5
+ },
+ {
+ "label": "8,6",
+ "x": 18,
+ "y": 1.5
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "2,6",
+ "x": 7,
+ "y": 2
+ },
+ {
+ "label": "9,0",
+ "x": 12,
+ "y": 2
+ },
+ {
+ "label": "9,1",
+ "x": 13,
+ "y": 2
+ },
+ {
+ "label": "9,2",
+ "x": 14,
+ "y": 2
+ },
+ {
+ "label": "9,3",
+ "x": 15,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2.5
+ },
+ {
+ "label": "9,4",
+ "x": 16,
+ "y": 2.5
+ },
+ {
+ "label": "9,5",
+ "x": 17,
+ "y": 2.5
+ },
+ {
+ "label": "9,6",
+ "x": 18,
+ "y": 2.5
+ },
+ {
+ "label": "3,3",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "3,4",
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "3,5",
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "3,6",
+ "x": 7,
+ "y": 3
+ },
+ {
+ "label": "10,0",
+ "x": 12,
+ "y": 3
+ },
+ {
+ "label": "10,1",
+ "x": 13,
+ "y": 3
+ },
+ {
+ "label": "10,2",
+ "x": 14,
+ "y": 3
+ },
+ {
+ "label": "10,3",
+ "x": 15,
+ "y": 3
+ },
+ {
+ "label": "3,0",
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "label": "3,1",
+ "x": 2,
+ "y": 3.5
+ },
+ {
+ "label": "3,2",
+ "x": 3,
+ "y": 3.5
+ },
+ {
+ "label": "10,4",
+ "x": 16,
+ "y": 3.5
+ },
+ {
+ "label": "10,5",
+ "x": 17,
+ "y": 3.5
+ },
+ {
+ "label": "10,6",
+ "x": 18,
+ "y": 3.5
+ },
+ {
+ "label": "4,3",
+ "x": 4,
+ "y": 4
+ },
+ {
+ "label": "4,4",
+ "x": 5,
+ "y": 4
+ },
+ {
+ "label": "4,5",
+ "x": 6,
+ "y": 4
+ },
+ {
+ "label": "4,6",
+ "x": 7,
+ "y": 4
+ },
+ {
+ "label": "11,0",
+ "x": 12,
+ "y": 4
+ },
+ {
+ "label": "11,1",
+ "x": 13,
+ "y": 4
+ },
+ {
+ "label": "11,2",
+ "x": 14,
+ "y": 4
+ },
+ {
+ "label": "11,3",
+ "x": 15,
+ "y": 4
+ },
+ {
+ "label": "4,0",
+ "x": 1,
+ "y": 4.5
+ },
+ {
+ "label": "4,1",
+ "x": 2,
+ "y": 4.5
+ },
+ {
+ "label": "4,2",
+ "x": 3,
+ "y": 4.5
+ },
+ {
+ "label": "11,4",
+ "x": 16,
+ "y": 4.5
+ },
+ {
+ "label": "11,5",
+ "x": 17,
+ "y": 4.5
+ },
+ {
+ "label": "11,6",
+ "x": 18,
+ "y": 4.5
+ },
+ {
+ "label": "5,3",
+ "x": 4,
+ "y": 5
+ },
+ {
+ "label": "5,4",
+ "x": 5,
+ "y": 5
+ },
+ {
+ "label": "12,2",
+ "x": 14,
+ "y": 5
+ },
+ {
+ "label": "12,3",
+ "x": 15,
+ "y": 5
+ },
+ {
+ "label": "6,6",
+ "x": 6.75,
+ "y": 5.25
+ },
+ {
+ "label": "13,0",
+ "x": 12.25,
+ "y": 5.25
+ },
+ {
+ "label": "5,0",
+ "x": 1,
+ "y": 5.5
+ },
+ {
+ "label": "5,1",
+ "x": 2,
+ "y": 5.5
+ },
+ {
+ "label": "5,2",
+ "x": 3,
+ "y": 5.5
+ },
+ {
+ "label": "12,4",
+ "x": 16,
+ "y": 5.5
+ },
+ {
+ "label": "12,5",
+ "x": 17,
+ "y": 5.5
+ },
+ {
+ "label": "12,6",
+ "x": 18,
+ "y": 5.5
+ },
+ {
+ "label": "6,5",
+ "x": 6.75,
+ "y": 6.5
+ },
+ {
+ "label": "13,1",
+ "x": 12.25,
+ "y": 6.5
+ },
+ {
+ "label": "6,3",
+ "x": 6.75,
+ "y": 7.75
+ },
+ {
+ "label": "13,3",
+ "x": 12.25,
+ "y": 7.75
+ },
+ {
+ "label": "6,4",
+ "x": 8.25,
+ "y": 8.75
+ },
+ {
+ "label": "13,2",
+ "x": 10.75,
+ "y": 8.75
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_full_dual_track/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/6x7_full_dual_track/keymaps/vial/config.h
new file mode 100644
index 00000000000..7ce03850c73
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_full_dual_track/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x59, 0xCF, 0x6A, 0x7A, 0x35, 0x10, 0x08, 0x2D}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 6 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 6 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_full_dual_track/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/6x7_full_dual_track/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..5ccbe058ce9
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_full_dual_track/keymaps/vial/keymap.c
@@ -0,0 +1,299 @@
+// Copyright 2022 Matthew Dews (@matthew-dews)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include QMK_KEYBOARD_H
+#include "6x7_full_dual_track.h"
+
+#ifdef CONSOLE_ENABLE
+#include "print.h"
+#endif
+
+enum custom_layer {
+// _COLEMAK,
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+};
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+#
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_QWERTY] = LAYOUT_6x7(
+ 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_ESC,
+ DRGSCRL, KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_LBRC , KC_RBRC,
+ SNIPING, KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_QUOT, KC_BACKSLASH,
+ KC_BTN3, KC_CAPS , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L ,KC_SCLN, KC_RCTL, DRGSCRL,
+ KC_BTN1, 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_BTN1,
+ KC_LCTL, KC_LCTL, KC_LGUI, KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL,KC_RGUI, KC_RALT, KC_RCTL,
+ RAISE, LOWER,
+ KC_SPC, KC_ENTER,
+ KC_TAB, KC_HOME, KC_MUTE, KC_RGUI
+ ),
+
+ [_LOWER] = LAYOUT_6x7(
+ 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_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL , _______,
+ _______, _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS, _______,
+ _______, _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE, _______,
+ _______, _______,DRGSCRL,SNIPING,KC_BTN1,KC_BTN3,KC_BTN2, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS, _______,
+ _______, _______,_______,_______,KC_PSCR, _______, KC_P0, _______,_______, QK_BOOT,
+ _______, _______,
+ KC_BTN1, _______,
+ KC_BTN2, KC_BTN3, _______, _______
+ ),
+
+ [_RAISE] = LAYOUT_6x7(
+ _______,KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 , _______,
+ _______,_______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE, _______,
+ _______,_______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU, _______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD, _______,
+ _______,_______,RGB_VAI,RGB_SAI,RGB_HUI,RGB_MOD,RGB_TOG, _______,_______,_______,_______,_______,_______, _______,
+ QK_BOOT, _______,_______, _______,_______, KC_EQL ,_______,_______,_______,_______,
+ _______, _______,
+ _______, _______,
+ _______, _______, _______, _______
+ )
+};
+
+//void keyboard_post_init_user(void) {
+//#ifdef CONSOLE_ENABLE
+// debug_enable=true;
+// debug_matrix=true;
+// debug_keyboard=true;
+// debug_mouse=true;
+//#else
+// debug_enable=false;
+// debug_matrix=false;
+// debug_keyboard=false;
+// debug_mouse=false;
+//#endif
+//}
+
+
+// DEFINE THESE KEYS SOMEWHERE ON THE KEYMAP, USUALLY LEFT BOTTOM ROW
+// _______,RGB_VAI,RGB_SAI,RGB_HUI,RGB_MOD,RGB_TOG,
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (index == 1) {
+ if (clockwise) {
+ tap_code(KC_VOLD);
+ } else {
+ tap_code(KC_VOLU);
+ }
+ } else if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_PGUP);
+ } else {
+ tap_code(KC_PGDN);
+ }
+ }
+ return false;
+}
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+const rgblight_segment_t PROGMEM colemak_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_PURPLE}, // Light 4 LEDs, starting with LED 6
+ {33, 3, HSV_PURPLE} // Light 4 LEDs, starting with LED 6
+);
+const rgblight_segment_t PROGMEM querty_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_RED}, // Light 4 LEDs, starting with LED 6
+ {33, 3, HSV_RED} // Light 4 LEDs, starting with LED 6
+);
+const rgblight_segment_t PROGMEM lower_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_BLUE},
+ {33, 3, HSV_BLUE}
+);
+const rgblight_segment_t PROGMEM raise_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_YELLOW},
+ {33, 3, HSV_YELLOW}
+);
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+// colemak_layer,
+ querty_layer, // Overrides caps lock layer
+ lower_layer, // Overrides other layers
+ raise_layer // Overrides other layers
+);
+
+//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(0, layer_state_cmp(state, _COLEMAK));
+ rgblight_set_layer_state(0, layer_state_cmp(state, _QWERTY));
+ return state;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+// rgblight_set_layer_state(1, layer_state_cmp(state, _QWERTY));
+ rgblight_set_layer_state(1, layer_state_cmp(state, _LOWER));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _RAISE));
+ return state;
+}
+
+
+#endif
+
+// rgblight_enable();
+
+void keyboard_post_init_user(void) {
+ // Enable the LED layers
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+ debug_keyboard=true;
+ debug_mouse=true;
+#else
+ debug_enable=false;
+ debug_matrix=false;
+ debug_keyboard=false;
+ debug_mouse=false;
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+ rgblight_layers = my_rgb_layers;
+#endif
+ pointing_device_set_cpi_on_side(true, CHARYBDIS_DRAGSCROLL_DPI); // LEFT
+ pointing_device_set_cpi_on_side(false, 2000); // RIGHT
+}
+
+static void check_drag(report_mouse_t* mouse_report) {
+ static int16_t scroll_buffer_x = 0;
+ static int16_t scroll_buffer_y = 0;
+
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_X
+ scroll_buffer_x -= mouse_report->x;
+# else
+ scroll_buffer_x += mouse_report->x;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_X
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ scroll_buffer_y -= mouse_report->y;
+# else
+ scroll_buffer_y += mouse_report->y;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ mouse_report->x = 0;
+ mouse_report->y = 0;
+ if (abs(scroll_buffer_x) > 6) {
+ mouse_report->h = scroll_buffer_x > 0 ? 1 : -1;
+ scroll_buffer_x = 0;
+ }
+ if (abs(scroll_buffer_y) > 6) {
+ mouse_report->v = scroll_buffer_y > 0 ? 1 : -1;
+ scroll_buffer_y = 0;
+ }
+}
+
+report_mouse_t pointing_device_task_combined_user(report_mouse_t left_report, report_mouse_t right_report) {
+ check_drag(&left_report);
+// left_report.h = left_report.x;
+// left_report.v = left_report.y;
+// left_report.x = 0;
+// left_report.y = 0;
+ return pointing_device_combine_reports(left_report, right_report);
+}
+
+// rgblight_layers = my_rgb_layers;
+// rgblight_enable_noeeprom(); // Enables RGB, without saving settings
+// rgblight_sethsv_noeeprom_cyan();
+// rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
+
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_master()) {
+ return OLED_ROTATION_270;
+ }
+ return OLED_ROTATION_180;
+}
+
+static void render_wylderbuilds(void) {
+ static const char PROGMEM wylderbuilds[] = {
+ // 'dark wylderbuilds_oled_name', 128x32px
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40,
+ 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x20, 0x60,
+ 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x60, 0x60,
+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0,
+ 0x00, 0x00, 0xc1, 0xc1, 0x01, 0x01, 0xf1, 0x11, 0x01, 0x01, 0x01, 0x31, 0x60, 0xc0, 0x80, 0xc0,
+ 0xf0, 0x10, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0,
+ 0x00, 0x01, 0x03, 0x9e, 0xf8, 0x00, 0x00, 0x20, 0xe0, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0xf0, 0x30, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x98, 0xf0, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x00, 0x70, 0xfe, 0x03, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00,
+ 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x11, 0xf1, 0x11, 0x33, 0x63, 0xc3,
+ 0x83, 0x01, 0x01, 0xc1, 0xe1, 0x31, 0x11, 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,
+ 0x1f, 0x7c, 0xff, 0x07, 0x7c, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7f, 0xff,
+ 0x60, 0x30, 0x18, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xf2, 0x82, 0x02, 0x80, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x7f, 0x0e, 0x1b, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0x81, 0xc1, 0x63,
+ 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00,
+ 0x00, 0x1f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x60, 0x30, 0x1f,
+ 0x07, 0x00, 0x00, 0x01, 0x43, 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+
+ oled_write_raw_P(wylderbuilds, sizeof(wylderbuilds));
+}
+
+bool oled_task_user(void) {
+ oled_set_cursor(0, 1);
+ if (is_keyboard_master()) {
+ oled_write_P(PSTR("Layer\n"), false);
+
+ switch (get_highest_layer(layer_state)) {
+// case _COLEMAK:
+// oled_write_P(PSTR("COLMK\n"), false);
+// break;
+ case _QWERTY:
+ oled_write_P(PSTR("QWRTY\n"), false);
+ break;
+ case _LOWER:
+ oled_write_P(PSTR("LOWER\n"), false);
+ break;
+ case _RAISE:
+ oled_write_P(PSTR("RAISE\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+ oled_set_cursor(0, 5);
+ oled_write_P(PSTR("WPM: "), false);
+
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 8);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+ } else {
+ // write WPM to right OLED
+ render_wylderbuilds();
+
+
+ }
+
+ return false;
+}
+#endif
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_full_dual_track/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/6x7_full_dual_track/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_full_dual_track/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_full_dual_track/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/6x7_full_dual_track/keymaps/vial/vial.json
new file mode 100644
index 00000000000..0174c0d929e
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_full_dual_track/keymaps/vial/vial.json
@@ -0,0 +1,252 @@
+{
+ "matrix": {
+ "rows": 14,
+ "cols": 7
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 6x7 Full Dual Track"
+ },
+ [
+ {
+ "x": 4
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 4
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ "0,2",
+ {
+ "x": 12
+ },
+ "7,4",
+ "7,5",
+ "7,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ {
+ "x": 4
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ {
+ "x": 12
+ },
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ "2,6",
+ {
+ "x": 4
+ },
+ "9,0",
+ {
+ "n": true
+ },
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ {
+ "x": 12
+ },
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ {
+ "x": 4
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ {
+ "x": 12
+ },
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ {
+ "x": 4
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ {
+ "x": 12
+ },
+ "11,4",
+ "11,5",
+ "11,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "5,3",
+ "5,4",
+ {
+ "x": 8
+ },
+ "12,2",
+ "12,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 6.75
+ },
+ "6,6",
+ {
+ "x": 4.5
+ },
+ "13,0"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 1
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ {
+ "x": 12
+ },
+ "12,4",
+ "12,5",
+ "12,6"
+ ],
+ [
+ {
+ "x": 6.75
+ },
+ "6,5",
+ {
+ "x": 4.5
+ },
+ "13,1"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 6.75
+ },
+ "6,3",
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 0.5
+ },
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne",
+ "13,3"
+ ],
+ [
+ {
+ "x": 8.25
+ },
+ "6,4",
+ {
+ "x": 1.5
+ },
+ "13,2"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_full_dual_track/mcuconf.h b/keyboards/handwired/wylderbuilds/trackball/6x7_full_dual_track/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_full_dual_track/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_full_dual_track/rules.mk b/keyboards/handwired/wylderbuilds/trackball/6x7_full_dual_track/rules.mk
new file mode 100644
index 00000000000..e2361440d78
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_full_dual_track/rules.mk
@@ -0,0 +1,21 @@
+# Board, Bootloader and MCU
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+MOUSEKEY_ENABLE = yes
+CONSOLE_ENABLE = no
+#COMMAND_ENABLE = yes
+
+ENCODER_ENABLE = yes
+
+RGBLIGHT_ENABLE = yes
+WS2812_DRIVER = vendor
+SLEEP_LED_ENABLE = no
+
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
+WPM_ENABLE = yes
+EXTRAKEY_ENABLE = yes # Audio control and System control
+
+OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_full_dual_track/wylderbuilds-6x7-full-dual-track.json b/keyboards/handwired/wylderbuilds/trackball/6x7_full_dual_track/wylderbuilds-6x7-full-dual-track.json
new file mode 100644
index 00000000000..4ff1512719b
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_full_dual_track/wylderbuilds-6x7-full-dual-track.json
@@ -0,0 +1,244 @@
+[
+ {
+ "name": "Wylderbuilds 6x7 Full Dual Track"
+ },
+ [
+ {
+ "x": 4
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 4
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ "0,2",
+ {
+ "x": 12
+ },
+ "7,4",
+ "7,5",
+ "7,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ {
+ "x": 4
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ {
+ "x": 12
+ },
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ "2,6",
+ {
+ "x": 4
+ },
+ "9,0",
+ {
+ "n": true
+ },
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ {
+ "x": 12
+ },
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ {
+ "x": 4
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ {
+ "x": 12
+ },
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ {
+ "x": 4
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ {
+ "x": 12
+ },
+ "11,4",
+ "11,5",
+ "11,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "5,3",
+ "5,4",
+ {
+ "x": 8
+ },
+ "12,2",
+ "12,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 6.75
+ },
+ "6,6",
+ {
+ "x": 4.5
+ },
+ "13,0"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 1
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ {
+ "x": 12
+ },
+ "12,4",
+ "12,5",
+ "12,6"
+ ],
+ [
+ {
+ "x": 6.75
+ },
+ "6,5",
+ {
+ "x": 4.5
+ },
+ "13,1"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 6.75
+ },
+ "6,3",
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 0.5
+ },
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne",
+ "13,3"
+ ],
+ [
+ {
+ "x": 8.25
+ },
+ "6,4",
+ {
+ "x": 1.5
+ },
+ "13,2"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_full_track/6x7_full_track.c b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track/6x7_full_track.c
new file mode 100644
index 00000000000..7313219753b
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track/6x7_full_track.c
@@ -0,0 +1,5 @@
+//
+// Created by nethe on 11/9/2022.
+//
+
+#include "6x7_full_track.h"
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_full_track/6x7_full_track.h b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track/6x7_full_track.h
new file mode 100644
index 00000000000..7dc8aed350f
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track/6x7_full_track.h
@@ -0,0 +1,43 @@
+//
+// Created by nethe on 11/9/2022.
+//
+
+#ifndef WYLD_QMK_FIRMWARE_6X7_H
+#define WYLD_QMK_FIRMWARE_6X7_H
+
+#endif // WYLD_QMK_FIRMWARE_6X6_H
+
+#pragma once
+
+#include "trackball.h"
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_6x7( \
+ 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, R30, R31, R32, R33, R34, R35, R36, \
+ L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46, \
+ L50, L51, L52, L53, L54, R52, R53, R54, R55, R56, \
+ L55, L56, R60, \
+ L65, L66, R61, \
+ L63, L64, R62, R63 \
+) { \
+ { 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 }, \
+ { L40, L41, L42, L43, L44, L45, L46 }, \
+ { L50, L51, L52, L53, L54, L55, L56 }, \
+ { XXX, XXX, XXX, L63, L64, L65, L66 }, \
+\
+ { R00, R01, R02, R03, R04, R05, R06 }, \
+ { R10, R11, R12, R13, R14, R15, R16 }, \
+ { R20, R21, R22, R23, R24, R25, R26 }, \
+ { R30, R31, R32, R33, R34, R35, R36 }, \
+ { R40, R41, R42, R43, R44, R45, R46 }, \
+ { XXX, XXX, R52, R53, R54, R55, R56 }, \
+ { R60, R61, R62, R63, XXX, XXX, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_full_track/config.h b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track/config.h
new file mode 100644
index 00000000000..242b05f3100
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track/config.h
@@ -0,0 +1,115 @@
+//
+// Created by nethe on 11/9/2022.
+//
+//#define PRODUCT_ID 0x0001
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+
+// Dactyl Manuform Hotswap
+#pragma once
+
+//#include "config_common.h"
+// Basic Config
+
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+
+#define SPLIT_POINTING_ENABLE
+#define POINTING_DEVICE_INVERT_Y
+#define ROTATIONAL_TRANSFORM_ANGLE -25
+#define POINTING_DEVICE_RIGHT
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x02
+
+#define POINTING_DEVICE_AUTO_MOUSE_ENABLE
+// only required if not setting mouse layer elsewhere
+#define AUTO_MOUSE_DEFAULT_LAYER 3
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+//#define SERIAL_USART_PIN_SWAP
+
+// RP2040 Settings
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 14
+#define MATRIX_COLS 7
+
+#define MATRIX_COL_PINS { GP8, GP7, GP6, GP5, GP4, GP3, GP2 }
+#define MATRIX_ROW_PINS { GP9, GP10, GP11, GP12, GP13, GP14, GP15 }
+#define DIODE_DIRECTION COL2ROW
+
+//# define MASTER_RIGHT
+# define SPLIT_MODS_ENABLE
+# define SPLIT_WPM_ENABLE
+# define SPLIT_LAYER_STATE_ENABLE
+# define SPLIT_OLED_ENABLE
+# define SPLIT_LED_STATE_ENABLE
+// End of Basic Config
+
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD0
+#define I2C1_SDA_PIN GP16
+#define I2C1_SCL_PIN GP17
+#define RGBLIGHT_LAYERS
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+#ifdef ENCODER_ENABLE
+#define ENCODERS_PAD_A { }
+#define ENCODERS_PAD_B { }
+#define ENCODER_RESOLUTIONS { 2 }
+#define ENCODERS_PAD_A_RIGHT { GP27 }
+#define ENCODERS_PAD_B_RIGHT { GP28 }
+#define ENCODER_RESOLUTIONS_RIGHT { 2 }
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+#define WS2812_PIO_USE_PIO1
+//#define WS2812_PIO_USE_PIO1
+//#define WS2812_PIO_USE_PIO1
+#define RGBLIGHT_LAYERS
+#define WS2812_DI_PIN GP22 // can use trackball jack if not used
+//#define WS2812_EXTERNAL_PULLUP
+#define RGBLED_NUM 36
+//#define DRIVER_LED_TOTAL 34
+#define RGBLED_SPLIT { 18, 18 }
+#define RGBLIGHT_SPLIT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 17
+#define RGBLIGHT_LIMIT_VAL 100
+//#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+#define NOP_FUDGE 0.4 // may not be needed if ws driver loaded
+#endif
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_full_track/info.json b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track/info.json
new file mode 100644
index 00000000000..55ee95a56cd
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track/info.json
@@ -0,0 +1,475 @@
+{
+ "keyboard_name": "Dactyl-Manuform (6x7_full_track)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "bootloader": "rp2040",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x004B",
+ "device_version": "0.0.1"
+ },
+ "width": 22,
+ "height": 10,
+ "matrix": {
+ "rows": 14,
+ "cols": 7
+ },
+ "layouts": {
+ "LAYOUT_6x7": {
+ "layout": [
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "0,6",
+ "x": 7,
+ "y": 0
+ },
+ {
+ "label": "7,0",
+ "x": 12,
+ "y": 0
+ },
+ {
+ "label": "7,1",
+ "x": 13,
+ "y": 0
+ },
+ {
+ "label": "7,2",
+ "x": 14,
+ "y": 0
+ },
+ {
+ "label": "7,3",
+ "x": 15,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0.5
+ },
+ {
+ "label": "7,4",
+ "x": 16,
+ "y": 0.5
+ },
+ {
+ "label": "7,5",
+ "x": 17,
+ "y": 0.5
+ },
+ {
+ "label": "7,6",
+ "x": 18,
+ "y": 0.5
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "1,6",
+ "x": 7,
+ "y": 1
+ },
+ {
+ "label": "8,0",
+ "x": 12,
+ "y": 1
+ },
+ {
+ "label": "8,1",
+ "x": 13,
+ "y": 1
+ },
+ {
+ "label": "8,2",
+ "x": 14,
+ "y": 1
+ },
+ {
+ "label": "8,3",
+ "x": 15,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1.5
+ },
+ {
+ "label": "8,4",
+ "x": 16,
+ "y": 1.5
+ },
+ {
+ "label": "8,5",
+ "x": 17,
+ "y": 1.5
+ },
+ {
+ "label": "8,6",
+ "x": 18,
+ "y": 1.5
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "2,6",
+ "x": 7,
+ "y": 2
+ },
+ {
+ "label": "9,0",
+ "x": 12,
+ "y": 2
+ },
+ {
+ "label": "9,1",
+ "x": 13,
+ "y": 2
+ },
+ {
+ "label": "9,2",
+ "x": 14,
+ "y": 2
+ },
+ {
+ "label": "9,3",
+ "x": 15,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2.5
+ },
+ {
+ "label": "9,4",
+ "x": 16,
+ "y": 2.5
+ },
+ {
+ "label": "9,5",
+ "x": 17,
+ "y": 2.5
+ },
+ {
+ "label": "9,6",
+ "x": 18,
+ "y": 2.5
+ },
+ {
+ "label": "3,3",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "3,4",
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "3,5",
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "3,6",
+ "x": 7,
+ "y": 3
+ },
+ {
+ "label": "10,0",
+ "x": 12,
+ "y": 3
+ },
+ {
+ "label": "10,1",
+ "x": 13,
+ "y": 3
+ },
+ {
+ "label": "10,2",
+ "x": 14,
+ "y": 3
+ },
+ {
+ "label": "10,3",
+ "x": 15,
+ "y": 3
+ },
+ {
+ "label": "3,0",
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "label": "3,1",
+ "x": 2,
+ "y": 3.5
+ },
+ {
+ "label": "3,2",
+ "x": 3,
+ "y": 3.5
+ },
+ {
+ "label": "10,4",
+ "x": 16,
+ "y": 3.5
+ },
+ {
+ "label": "10,5",
+ "x": 17,
+ "y": 3.5
+ },
+ {
+ "label": "10,6",
+ "x": 18,
+ "y": 3.5
+ },
+ {
+ "label": "4,3",
+ "x": 4,
+ "y": 4
+ },
+ {
+ "label": "4,4",
+ "x": 5,
+ "y": 4
+ },
+ {
+ "label": "4,5",
+ "x": 6,
+ "y": 4
+ },
+ {
+ "label": "4,6",
+ "x": 7,
+ "y": 4
+ },
+ {
+ "label": "11,0",
+ "x": 12,
+ "y": 4
+ },
+ {
+ "label": "11,1",
+ "x": 13,
+ "y": 4
+ },
+ {
+ "label": "11,2",
+ "x": 14,
+ "y": 4
+ },
+ {
+ "label": "11,3",
+ "x": 15,
+ "y": 4
+ },
+ {
+ "label": "4,0",
+ "x": 1,
+ "y": 4.5
+ },
+ {
+ "label": "4,1",
+ "x": 2,
+ "y": 4.5
+ },
+ {
+ "label": "4,2",
+ "x": 3,
+ "y": 4.5
+ },
+ {
+ "label": "11,4",
+ "x": 16,
+ "y": 4.5
+ },
+ {
+ "label": "11,5",
+ "x": 17,
+ "y": 4.5
+ },
+ {
+ "label": "11,6",
+ "x": 18,
+ "y": 4.5
+ },
+ {
+ "label": "5,3",
+ "x": 4,
+ "y": 5
+ },
+ {
+ "label": "5,4",
+ "x": 5,
+ "y": 5
+ },
+ {
+ "label": "12,2",
+ "x": 14,
+ "y": 5
+ },
+ {
+ "label": "12,3",
+ "x": 15,
+ "y": 5
+ },
+ {
+ "label": "5,0",
+ "x": 1,
+ "y": 5.5
+ },
+ {
+ "label": "5,1",
+ "x": 2,
+ "y": 5.5
+ },
+ {
+ "label": "5,2",
+ "x": 3,
+ "y": 5.5
+ },
+ {
+ "label": "12,4",
+ "x": 16,
+ "y": 5.5
+ },
+ {
+ "label": "12,5",
+ "x": 17,
+ "y": 5.5
+ },
+ {
+ "label": "12,6",
+ "x": 18,
+ "y": 5.5
+ },
+ {
+ "label": "13,0",
+ "x": 12.25,
+ "y": 6
+ },
+ {
+ "label": "13,1",
+ "x": 12.25,
+ "y": 7
+ },
+ {
+ "label": "13,2",
+ "x": 11,
+ "y": 8
+ },
+ {
+ "label": "13,3",
+ "x": 12.25,
+ "y": 8
+ },
+ {
+ "label": "5,5",
+ "x": 7.5,
+ "y": 4.25
+ },
+ {
+ "label": "5,6",
+ "x": 8.5,
+ "y": 4.25
+ },
+ {
+ "label": "6,5",
+ "x": 8.75,
+ "y": 4.25
+ },
+ {
+ "label": "6,6",
+ "x": 9.75,
+ "y": 4.25
+ },
+ {
+ "label": "6,3",
+ "x": 9,
+ "y": 5.25
+ },
+ {
+ "label": "6,4",
+ "x": 10,
+ "y": 5.25
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_full_track/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track/keymaps/vial/config.h
new file mode 100644
index 00000000000..10f083df01e
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x55, 0xAE, 0xD2, 0x26, 0xB9, 0xFF, 0x00, 0x13}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 6 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 6 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_full_track/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..eb906a65402
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track/keymaps/vial/keymap.c
@@ -0,0 +1,258 @@
+// Copyright 2022 Matthew Dews (@matthew-dews)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include QMK_KEYBOARD_H
+#include "6x7_full_track.h"
+enum custom_layer {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+ _MOUSE
+};
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+enum wyld_keycodes {
+ WYLD_AUTO_MS_TOG = SAFE_RANGE
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_6x7(
+ 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 , WYLD_AUTO_MS_TOG,
+ DRGSCRL, KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_LBRC , KC_RBRC,
+ SNIPING, KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_QUOT, KC_BACKSLASH,
+ KC_BTN3, KC_CAPS , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L ,KC_SCLN, KC_RCTL, DRGSCRL,
+ KC_BTN1, 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_BTN1,
+ KC_LCTL, KC_LCTL, KC_LGUI, KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL,KC_RGUI, KC_RALT, KC_RCTL,
+ RAISE, KC_SPC, KC_HOME,
+ KC_TAB, KC_HOME, LOWER,
+ KC_BSPC, KC_DEL, KC_RALT, KC_ENT
+ ),
+
+ [_LOWER] = LAYOUT_6x7(
+ 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_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL , _______,
+ _______, _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS, _______,
+ _______, _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE, _______,
+ _______, _______,_______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS, _______,
+ _______, _______,_______,_______,KC_PSCR, _______, KC_P0, _______,_______, QK_BOOT,
+ _______, KC_BTN1, KC_MUTE,
+ KC_BTN2, KC_BTN3, _______,
+ SNIPING, DRGSCRL, _______, _______
+ ),
+
+ [_RAISE] = LAYOUT_6x7(
+ _______,KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 , _______,
+ _______,_______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE, _______,
+ _______,_______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU, _______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD, _______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______, _______,
+ QK_BOOT, _______,_______, _______,_______, KC_EQL ,_______,_______,_______,_______,
+ _______, _______, KC_MUTE,
+ _______, _______, _______,
+ _______,_______, _______, _______
+ ),
+ [_MOUSE] = LAYOUT_6x7(
+ _______,_______,_______,_______,_______,_______, _______, _______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______, _______, _______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______, _______, _______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______, _______, _______,_______,_______,_______,_______,_______, _______,
+ _______, _______,_______, _______,_______, _______ ,_______,_______,_______,_______,
+ _______, KC_BTN1, KC_MUTE,
+ KC_BTN2, KC_BTN3, _______,
+ SNIPING,DRGSCRL, _______, _______
+ ),
+ [4] = LAYOUT_6x7(
+ _______,_______,_______,_______,_______,_______, _______, _______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______, _______, _______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______, _______, _______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______, _______, _______,_______,_______,_______,_______,_______, _______,
+ _______, _______,_______, _______,_______, _______ ,_______,_______,_______,_______,
+ _______, _______, KC_MUTE,
+ _______, _______, _______,
+ _______,_______, _______, _______
+ )
+
+};
+
+
+
+// AUTOMOUSE LAYERS
+#ifdef POINTING_DEVICE_AUTO_MOUSE_ENABLE
+void pointing_device_init_user(void) {
+ set_auto_mouse_enable(true);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case WYLD_AUTO_MS_TOG:
+ if (record->event.pressed) {
+ set_auto_mouse_enable(!get_auto_mouse_enable());
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+#endif
+
+// ENCODERS
+#ifdef ENCODER_MAP_ENABLE
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_QWERTY] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_LOWER] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD) },
+ [_RAISE] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD) },
+ [_MOUSE] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD) },
+ [4] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD) }
+};
+//#endif
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+const rgblight_segment_t PROGMEM querty_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_RED}, // Light 4 LEDs, starting with LED 6
+ {33, 3, HSV_RED} // Light 4 LEDs, starting with LED 6
+);
+const rgblight_segment_t PROGMEM lower_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_BLUE},
+ {33, 3, HSV_BLUE}
+);
+const rgblight_segment_t PROGMEM raise_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_YELLOW},
+ {33, 3, HSV_YELLOW}
+);
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ querty_layer, // Overrides caps lock layer
+ lower_layer, // Overrides other layers
+ raise_layer // Overrides other layers
+);
+
+//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(0, layer_state_cmp(state, _QWERTY));
+ return state;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(1, layer_state_cmp(state, _LOWER));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _RAISE));
+ return state;
+}
+
+
+#endif
+
+// rgblight_enable();
+#ifdef RGBLIGHT_ENABLE
+void keyboard_post_init_user(void) {
+ // Enable the LED layers
+ rgblight_layers = my_rgb_layers;
+}
+// rgblight_layers = my_rgb_layers;
+// rgblight_enable_noeeprom(); // Enables RGB, without saving settings
+// rgblight_sethsv_noeeprom_cyan();
+// rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
+#endif
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_left()) {
+ return OLED_ROTATION_270;
+ }
+ return OLED_ROTATION_0;
+}
+
+static const char PROGMEM wylderbuilds[] = {
+ // 'dark wylderbuilds_oled_name', 128x32
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40,
+ 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x20, 0x60,
+ 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x60, 0x60,
+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0,
+ 0x00, 0x00, 0xc1, 0xc1, 0x01, 0x01, 0xf1, 0x11, 0x01, 0x01, 0x01, 0x31, 0x60, 0xc0, 0x80, 0xc0,
+ 0xf0, 0x10, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0,
+ 0x00, 0x01, 0x03, 0x9e, 0xf8, 0x00, 0x00, 0x20, 0xe0, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0xf0, 0x30, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x98, 0xf0, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x00, 0x70, 0xfe, 0x03, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00,
+ 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x11, 0xf1, 0x11, 0x33, 0x63, 0xc3,
+ 0x83, 0x01, 0x01, 0xc1, 0xe1, 0x31, 0x11, 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,
+ 0x1f, 0x7c, 0xff, 0x07, 0x7c, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7f, 0xff,
+ 0x60, 0x30, 0x18, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xf2, 0x82, 0x02, 0x80, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x7f, 0x0e, 0x1b, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0x81, 0xc1, 0x63,
+ 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00,
+ 0x00, 0x1f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x60, 0x30, 0x1f,
+ 0x07, 0x00, 0x00, 0x01, 0x43, 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static void render_wylderbuilds(void) {
+ oled_write_raw_P(wylderbuilds, sizeof(wylderbuilds));
+}
+
+bool oled_task_user(void) {
+ oled_set_cursor(0, 3);
+ if (is_keyboard_left()) {
+ // oled_write_P(PSTR("Layer\n"), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ oled_write_P(PSTR(" BASE\n"), false);
+ break;
+ case _LOWER:
+ oled_write_P(PSTR("LOWER\n"), false);
+ break;
+ case _RAISE:
+ oled_write_P(PSTR("RAISE\n"), false);
+ break;
+ case _MOUSE:
+ oled_write_P(PSTR("MOUSE\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+ oled_set_cursor(2, 7);
+ oled_write_P(PSTR("WPM "), false);
+ oled_set_cursor(1, 8);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 9);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+ } else {
+ // write WPM to right OLED
+ oled_set_cursor(0, 0);
+ render_wylderbuilds();
+ oled_scroll_left();
+ }
+
+ return false;
+}
+#endif
+
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_full_track/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_full_track/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track/keymaps/vial/vial.json
new file mode 100644
index 00000000000..cd26af5bb31
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track/keymaps/vial/vial.json
@@ -0,0 +1,259 @@
+{
+ "matrix": {
+ "rows": 14,
+ "cols": 7
+ },
+ "layouts": {
+ "keymap":[
+ {
+ "name": "Wylderbuilds 6x7 Full Track"
+ },
+ [
+ {
+ "x": 4
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 4
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ "0,2",
+ {
+ "x": 12
+ },
+ "7,4",
+ "7,5",
+ "7,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ {
+ "x": 4
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ {
+ "x": 12
+ },
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ "2,6",
+ {
+ "x": 4
+ },
+ "9,0",
+ {
+ "n": true
+ },
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ {
+ "x": 12
+ },
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ {
+ "x": 4
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ {
+ "x": 12
+ },
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ {
+ "x": 4
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ {
+ "x": 12
+ },
+ "11,4",
+ "11,5",
+ "11,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "5,3",
+ "5,4",
+ {
+ "x": 5.75
+ },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 0.25
+ },
+ "12,2",
+ "12,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ {
+ "x": 12
+ },
+ "12,4",
+ "12,5",
+ "12,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 12.25
+ },
+ "13,0"
+ ],
+ [
+ {
+ "x": 12.25
+ },
+ "13,1"
+ ],
+ [
+ {
+ "x": 11
+ },
+ "13,2",
+ {
+ "x": 0.25
+ },
+ "13,3"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -4.75,
+ "x": 7.5
+ },
+ "5,5",
+ "5,6"
+ ],
+ [
+ {
+ "r": 15,
+ "y": -1,
+ "x": 8.75
+ },
+ "6,5",
+ "6,6"
+ ],
+ [
+ {
+ "x": 9
+ },
+ "6,3",
+ "6,4"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_full_track/mcuconf.h b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_full_track/rules.mk b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track/rules.mk
new file mode 100644
index 00000000000..b0e4f2f8250
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track/rules.mk
@@ -0,0 +1,22 @@
+# Board, Bootloader and MCU
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+MOUSEKEY_ENABLE = yes
+#CONSOLE_ENABLE = yes
+#COMMAND_ENABLE = yes
+
+RGBLIGHT_ENABLE = no
+#WS2812_DRIVER = vendor
+#SLEEP_LED_ENABLE = no
+
+ENCODER_ENABLE = no
+ENCODER_MAP_ENABLE = no
+
+OLED_ENABLE = no
+#OLED_DRIVER = ssd1306
+WPM_ENABLE = no
+EXTRAKEY_ENABLE = no # Audio control and System control
+
+#OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_full_track/wylderbuilds-6x7-full-track.json b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track/wylderbuilds-6x7-full-track.json
new file mode 100644
index 00000000000..8cf4b53ec0d
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track/wylderbuilds-6x7-full-track.json
@@ -0,0 +1,251 @@
+[
+ {
+ "name": "Wylderbuilds 6x7 Full Track"
+ },
+ [
+ {
+ "x": 4
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 4
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ "0,2",
+ {
+ "x": 12
+ },
+ "7,4",
+ "7,5",
+ "7,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ {
+ "x": 4
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ {
+ "x": 12
+ },
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ "2,6",
+ {
+ "x": 4
+ },
+ "9,0",
+ {
+ "n": true
+ },
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ {
+ "x": 12
+ },
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ {
+ "x": 4
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ {
+ "x": 12
+ },
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ {
+ "x": 4
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ {
+ "x": 12
+ },
+ "11,4",
+ "11,5",
+ "11,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "5,3",
+ "5,4",
+ {
+ "x": 5.75
+ },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 0.25
+ },
+ "12,2",
+ "12,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ {
+ "x": 12
+ },
+ "12,4",
+ "12,5",
+ "12,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 12.25
+ },
+ "13,0"
+ ],
+ [
+ {
+ "x": 12.25
+ },
+ "13,1"
+ ],
+ [
+ {
+ "x": 11
+ },
+ "13,2",
+ {
+ "x": 0.25
+ },
+ "13,3"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -4.75,
+ "x": 7.5
+ },
+ "5,5",
+ "5,6"
+ ],
+ [
+ {
+ "r": 15,
+ "y": -1,
+ "x": 8.75
+ },
+ "6,5",
+ "6,6"
+ ],
+ [
+ {
+ "x": 9
+ },
+ "6,3",
+ "6,4"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_full_track_cluster_shift/6x7_full_track_cluster_shift.c b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track_cluster_shift/6x7_full_track_cluster_shift.c
new file mode 100644
index 00000000000..b24336336ec
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track_cluster_shift/6x7_full_track_cluster_shift.c
@@ -0,0 +1,5 @@
+//
+// Created by nethe on 11/9/2022.
+//
+
+#include "6x7_full_track_cluster_shift.h"
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_full_track_cluster_shift/6x7_full_track_cluster_shift.h b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track_cluster_shift/6x7_full_track_cluster_shift.h
new file mode 100644
index 00000000000..fb5316c00ee
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track_cluster_shift/6x7_full_track_cluster_shift.h
@@ -0,0 +1,43 @@
+//
+// Created by nethe on 11/9/2022.
+//
+
+#ifndef WYLD_QMK_FIRMWARE_6X7_H
+#define WYLD_QMK_FIRMWARE_6X7_H
+
+#endif // WYLD_QMK_FIRMWARE_6X6_H
+
+#pragma once
+
+#include "trackball.h"
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_6x7_shift( \
+ 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, R30, R31, R32, R33, R34, R35, R36, \
+ L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46, \
+ L50, L51, L52, L53, R53, R54, R55, R56, \
+ L54, L55, R61, \
+ L64, L65, R62, \
+ L62, L63, R63, R64 \
+) { \
+ { 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 }, \
+ { L40, L41, L42, L43, L44, L45, L46 }, \
+ { L50, L51, L52, L53, L54, L55, XXX }, \
+ { XXX, XXX, L62, L63, L64, L65, XXX }, \
+\
+ { R00, R01, R02, R03, R04, R05, R06 }, \
+ { R10, R11, R12, R13, R14, R15, R16 }, \
+ { R20, R21, R22, R23, R24, R25, R26 }, \
+ { R30, R31, R32, R33, R34, R35, R36 }, \
+ { R40, R41, R42, R43, R44, R45, R46 }, \
+ { XXX, XXX, XXX, R53, R54, R55, R56 }, \
+ { XXX, R61, R62, R63, R64, XXX, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_full_track_cluster_shift/config.h b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track_cluster_shift/config.h
new file mode 100644
index 00000000000..5289bf2023c
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track_cluster_shift/config.h
@@ -0,0 +1,118 @@
+//
+// Created by nethe on 11/9/2022.
+//
+//#define PRODUCT_ID 0x0001
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+
+// Dactyl Manuform Hotswap
+#pragma once
+
+//#include "config_common.h"
+// Basic Config
+
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+
+#define SPLIT_POINTING_ENABLE
+#define POINTING_DEVICE_INVERT_Y
+#define ROTATIONAL_TRANSFORM_ANGLE -25
+#define POINTING_DEVICE_RIGHT
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x03
+
+#define POINTING_DEVICE_AUTO_MOUSE_ENABLE
+// only required if not setting mouse layer elsewhere
+#define AUTO_MOUSE_DEFAULT_LAYER 3
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+//#define SERIAL_USART_PIN_SWAP
+
+// RP2040 Settings
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+// More RP2040 Settings
+#define RP2040_FLASH_AT25SF128A
+#define RP2040_FLASH_GD25Q64CS
+#define RP2040_FLASH_W25X10CL
+#define RP2040_FLASH_IS25LP080
+#define RP2040_FLASH_GENERIC_03H
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 14
+#define MATRIX_COLS 7
+
+#define MATRIX_COL_PINS { GP2, GP3, GP4, GP5, GP6, GP7, GP8 }
+#define MATRIX_ROW_PINS { GP13, GP12, GP11, GP10, GP9, GP14, GP15 }
+#define DIODE_DIRECTION COL2ROW
+
+//# define MASTER_RIGHT
+# define SPLIT_MODS_ENABLE
+# define SPLIT_WPM_ENABLE
+# define SPLIT_LAYER_STATE_ENABLE
+# define SPLIT_OLED_ENABLE
+# define SPLIT_LED_STATE_ENABLE
+// End of Basic Config
+
+// USE PINS 16 AND 17 TO USE 4 PIN JST, IF AVAILABLE
+
+#define ENCODERS_PAD_A { }
+#define ENCODERS_PAD_B { }
+#define ENCODER_RESOLUTIONS { }
+#define ENCODERS_PAD_A_RIGHT { GP17 }
+#define ENCODERS_PAD_B_RIGHT { GP16 }
+#define ENCODER_RESOLUTIONS_RIGHT { 2 }
+
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD1
+#define I2C1_SDA_PIN GP16
+#define I2C1_SCL_PIN GP17
+#define RGBLIGHT_LAYERS
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+//#ifdef RGBLIGHT_ENABLE
+////#define WS2812_PIO_USE_PIO1
+////#define WS2812_PIO_USE_PIO1
+//#define RGB_DI_PIN GP28
+////#define WS2812_EXTERNAL_PULLUP
+//#define RGBLED_NUM 24
+////#define DRIVER_LED_TOTAL 24
+//#define RGBLED_SPLIT { 12, 12 }
+//#define RGBLIGHT_SPLIT
+//#define RGBLIGHT_EFFECT_RGB_TEST
+//#define RGBLIGHT_EFFECT_BREATHING
+//#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+//#define RGBLIGHT_EFFECT_SNAKE
+//#define RGBLIGHT_EFFECT_TWINKLE
+//#define RGBLIGHT_HUE_STEP 8
+//#define RGBLIGHT_SAT_STEP 8
+//#define RGBLIGHT_VAL_STEP 17
+//#define RGBLIGHT_LIMIT_VAL 255
+////#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+//#define NOP_FUDGE 0.4 // may not be needed if ws driver loaded
+//#endif
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_full_track_cluster_shift/info.json b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track_cluster_shift/info.json
new file mode 100644
index 00000000000..1c8f08c3e0a
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track_cluster_shift/info.json
@@ -0,0 +1,465 @@
+{
+ "keyboard_name": "Dactyl-Manuform (6x7_full_track)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "bootloader": "rp2040",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x004A",
+ "device_version": "0.0.1"
+ },
+ "width": 22,
+ "height": 10,
+ "matrix": {
+ "rows": 14,
+ "cols": 7
+ },
+ "layouts": {
+ "LAYOUT_6x7": {
+ "layout": [
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "0,6",
+ "x": 7,
+ "y": 0
+ },
+ {
+ "label": "7,0",
+ "x": 12,
+ "y": 0
+ },
+ {
+ "label": "7,1",
+ "x": 13,
+ "y": 0
+ },
+ {
+ "label": "7,2",
+ "x": 14,
+ "y": 0
+ },
+ {
+ "label": "7,3",
+ "x": 15,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0.5
+ },
+ {
+ "label": "7,4",
+ "x": 16,
+ "y": 0.5
+ },
+ {
+ "label": "7,5",
+ "x": 17,
+ "y": 0.5
+ },
+ {
+ "label": "7,6",
+ "x": 18,
+ "y": 0.5
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "1,6",
+ "x": 7,
+ "y": 1
+ },
+ {
+ "label": "8,0",
+ "x": 12,
+ "y": 1
+ },
+ {
+ "label": "8,1",
+ "x": 13,
+ "y": 1
+ },
+ {
+ "label": "8,2",
+ "x": 14,
+ "y": 1
+ },
+ {
+ "label": "8,3",
+ "x": 15,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1.5
+ },
+ {
+ "label": "8,4",
+ "x": 16,
+ "y": 1.5
+ },
+ {
+ "label": "8,5",
+ "x": 17,
+ "y": 1.5
+ },
+ {
+ "label": "8,6",
+ "x": 18,
+ "y": 1.5
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "2,6",
+ "x": 7,
+ "y": 2
+ },
+ {
+ "label": "9,0",
+ "x": 12,
+ "y": 2
+ },
+ {
+ "label": "9,1",
+ "x": 13,
+ "y": 2
+ },
+ {
+ "label": "9,2",
+ "x": 14,
+ "y": 2
+ },
+ {
+ "label": "9,3",
+ "x": 15,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2.5
+ },
+ {
+ "label": "9,4",
+ "x": 16,
+ "y": 2.5
+ },
+ {
+ "label": "9,5",
+ "x": 17,
+ "y": 2.5
+ },
+ {
+ "label": "9,6",
+ "x": 18,
+ "y": 2.5
+ },
+ {
+ "label": "3,3",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "3,4",
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "3,5",
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "3,6",
+ "x": 7,
+ "y": 3
+ },
+ {
+ "label": "10,0",
+ "x": 12,
+ "y": 3
+ },
+ {
+ "label": "10,1",
+ "x": 13,
+ "y": 3
+ },
+ {
+ "label": "10,2",
+ "x": 14,
+ "y": 3
+ },
+ {
+ "label": "10,3",
+ "x": 15,
+ "y": 3
+ },
+ {
+ "label": "3,0",
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "label": "3,1",
+ "x": 2,
+ "y": 3.5
+ },
+ {
+ "label": "3,2",
+ "x": 3,
+ "y": 3.5
+ },
+ {
+ "label": "10,4",
+ "x": 16,
+ "y": 3.5
+ },
+ {
+ "label": "10,5",
+ "x": 17,
+ "y": 3.5
+ },
+ {
+ "label": "10,6",
+ "x": 18,
+ "y": 3.5
+ },
+ {
+ "label": "4,3",
+ "x": 4,
+ "y": 4
+ },
+ {
+ "label": "4,4",
+ "x": 5,
+ "y": 4
+ },
+ {
+ "label": "4,5",
+ "x": 6,
+ "y": 4
+ },
+ {
+ "label": "4,6",
+ "x": 7,
+ "y": 4
+ },
+ {
+ "label": "11,0",
+ "x": 12,
+ "y": 4
+ },
+ {
+ "label": "11,1",
+ "x": 13,
+ "y": 4
+ },
+ {
+ "label": "11,2",
+ "x": 14,
+ "y": 4
+ },
+ {
+ "label": "11,3",
+ "x": 15,
+ "y": 4
+ },
+ {
+ "label": "4,0",
+ "x": 1,
+ "y": 4.5
+ },
+ {
+ "label": "4,1",
+ "x": 2,
+ "y": 4.5
+ },
+ {
+ "label": "4,2",
+ "x": 3,
+ "y": 4.5
+ },
+ {
+ "label": "11,4",
+ "x": 16,
+ "y": 4.5
+ },
+ {
+ "label": "11,5",
+ "x": 17,
+ "y": 4.5
+ },
+ {
+ "label": "11,6",
+ "x": 18,
+ "y": 4.5
+ },
+ {
+ "label": "5,3",
+ "x": 4,
+ "y": 5
+ },
+ {
+ "label": "12,3",
+ "x": 15,
+ "y": 5
+ },
+ {
+ "label": "13,1",
+ "x": 13.25,
+ "y": 5.25
+ },
+ {
+ "label": "5,0",
+ "x": 1,
+ "y": 5.5
+ },
+ {
+ "label": "5,1",
+ "x": 2,
+ "y": 5.5
+ },
+ {
+ "label": "5,2",
+ "x": 3,
+ "y": 5.5
+ },
+ {
+ "label": "12,4",
+ "x": 16,
+ "y": 5.5
+ },
+ {
+ "label": "12,5",
+ "x": 17,
+ "y": 5.5
+ },
+ {
+ "label": "12,6",
+ "x": 18,
+ "y": 5.5
+ },
+ {
+ "label": "13,2",
+ "x": 13.25,
+ "y": 6.5
+ },
+ {
+ "label": "13,3",
+ "x": 11.5,
+ "y": 7.75
+ },
+ {
+ "label": "13,4",
+ "x": 13.25,
+ "y": 7.75
+ },
+ {
+ "label": "5,4",
+ "x": 5.75,
+ "y": 4.75
+ },
+ {
+ "label": "5,5",
+ "x": 6.75,
+ "y": 4.75
+ },
+ {
+ "label": "6,4",
+ "x": 3.5,
+ "y": 8.25
+ },
+ {
+ "label": "6,5",
+ "x": 4.5,
+ "y": 8.25
+ },
+ {
+ "label": "6,2",
+ "x": 4.25,
+ "y": 9.25
+ },
+ {
+ "label": "6,3",
+ "x": 5.25,
+ "y": 9.25
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_full_track_cluster_shift/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track_cluster_shift/keymaps/vial/config.h
new file mode 100644
index 00000000000..7ce03850c73
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track_cluster_shift/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x59, 0xCF, 0x6A, 0x7A, 0x35, 0x10, 0x08, 0x2D}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 6 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 6 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_full_track_cluster_shift/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track_cluster_shift/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..8384dcc6136
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track_cluster_shift/keymaps/vial/keymap.c
@@ -0,0 +1,270 @@
+// Copyright 2022 Matthew Dews (@matthew-dews)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include QMK_KEYBOARD_H
+#include "6x7_full_track_cluster_shift.h"
+enum custom_layer {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+};
+
+enum wyld_keycodes {
+ WYLD_AUTO_MS_TOG = SAFE_RANGE
+};
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+//static bool automouse_on = true;
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_6x7_shift(
+ KC_ESC , KC_PGUP , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10, KC_F11, KC_F12,
+ DRGSCRL, KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_LBRC , KC_RBRC,
+ SNIPING, KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_QUOT, KC_BACKSLASH,
+ KC_BTN3, KC_CAPS , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L ,KC_SCLN, KC_RCTL, DRGSCRL,
+ KC_BTN1, 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_BTN1,
+ KC_LCTL, KC_PGDN, KC_LGUI, KC_LBRC, KC_RBRC,KC_RGUI, KC_RALT, KC_RCTL,
+ RAISE, KC_SPC, LOWER,
+ KC_TAB, KC_HOME, KC_ENT,
+ KC_BSPC, KC_GRV, KC_HOME, KC_LALT
+ ),
+
+ [_LOWER] = LAYOUT_6x7_shift(
+ KC_ESC , KC_PGUP , 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_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL , _______,
+ _______, _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS, _______,
+ _______, _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE, _______,
+ _______, _______,_______,_______,_______,_______,WYLD_AUTO_MS_TOG, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS, _______,
+ _______, _______,_______,KC_PSCR, KC_P0, _______,_______, QK_BOOT,
+ _______, KC_BTN1, _______,
+ KC_BTN3, KC_BTN2, _______,
+ SNIPING, DRGSCRL, KC_MUTE, _______
+ ),
+
+ [_RAISE] = LAYOUT_6x7_shift(
+ KC_ESC , KC_PGUP , 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_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE, _______,
+ _______,_______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU, _______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD, _______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______, _______,
+ QK_BOOT, _______,_______, _______, KC_EQL ,_______,_______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, KC_MUTE, _______
+ ),
+ [3] = LAYOUT_6x7_shift(
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______, _______,_______,_______,_______,
+ _______, KC_BTN1, _______,
+ KC_BTN3, KC_BTN2, _______,
+ SNIPING, DRGSCRL, KC_MUTE, _______
+ ),
+ [4] = LAYOUT_6x7_shift(
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______, _______,_______,_______,_______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, KC_MUTE, _______
+ )
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case WYLD_AUTO_MS_TOG:
+ if (record->event.pressed) {
+ set_auto_mouse_enable(!get_auto_mouse_enable());
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+
+//void keyboard_post_init_user(void) {
+//#ifdef CONSOLE_ENABLE
+// debug_enable=true;
+// debug_matrix=true;
+// debug_keyboard=true;
+// debug_mouse=true;
+//#else
+// debug_enable=false;
+// debug_matrix=false;
+// debug_keyboard=false;
+// debug_mouse=false;
+//#endif
+//}
+
+void pointing_device_init_user(void) {
+// set_auto_mouse_layer(); // only required if AUTO_MOUSE_DEFAULT_LAYER is not set to index of
+ set_auto_mouse_enable(true); // always required before the auto mouse feature will work
+}
+
+// ONE ENCODER
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_QWERTY] = { ENCODER_CCW_CW(KC_MS_WH_DOWN, KC_MS_WH_UP) },
+ [_LOWER] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_RAISE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [3] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [4] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }
+};
+#endif
+
+
+// DEFINE THESE KEYS SOMEWHERE ON THE KEYMAP, USUALLY LEFT BOTTOM ROW
+// _______,RGB_VAI,RGB_SAI,RGB_HUI,RGB_MOD,RGB_TOG,
+
+#ifdef RGBLIGHT_ENABLE
+//const rgblight_segment_t PROGMEM colemak_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+// {9, 3, HSV_PURPLE}, // Light 4 LEDs, starting with LED 6
+// {21, 3, HSV_PURPLE} // Light 4 LEDs, starting with LED 6
+//);
+const rgblight_segment_t PROGMEM querty_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {9, 3, HSV_RED}, // Light 4 LEDs, starting with LED 6
+ {21, 3, HSV_RED} // Light 4 LEDs, starting with LED 6
+);
+const rgblight_segment_t PROGMEM lower_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {9, 3, HSV_BLUE},
+ {21, 3, HSV_BLUE}
+);
+const rgblight_segment_t PROGMEM raise_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {9, 3, HSV_YELLOW},
+ {21, 3, HSV_YELLOW}
+);
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+// colemak_layer,
+ querty_layer, // Overrides caps lock layer
+ lower_layer, // Overrides other layers
+ raise_layer // Overrides other layers
+);
+
+//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(0, layer_state_cmp(state, _QWERTY));
+ return state;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(1, layer_state_cmp(state, _LOWER));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _RAISE));
+ return state;
+}
+
+#endif
+
+// rgblight_enable();
+#ifdef RGBLIGHT_ENABLE
+void keyboard_post_init_user(void) {
+ // Enable the LED layers
+ rgblight_layers = my_rgb_layers;
+}
+// rgblight_layers = my_rgb_layers;
+// rgblight_enable_noeeprom(); // Enables RGB, without saving settings
+// rgblight_sethsv_noeeprom_cyan();
+// rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
+#endif
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_master()) {
+ return OLED_ROTATION_270;
+ }
+ return OLED_ROTATION_180;
+}
+
+static void render_wylderbuilds(void) {
+ static const char PROGMEM wylderbuilds[] = {
+ // 'dark wylderbuilds_oled_name', 128x32px
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40,
+ 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x20, 0x60,
+ 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x60, 0x60,
+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0,
+ 0x00, 0x00, 0xc1, 0xc1, 0x01, 0x01, 0xf1, 0x11, 0x01, 0x01, 0x01, 0x31, 0x60, 0xc0, 0x80, 0xc0,
+ 0xf0, 0x10, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0,
+ 0x00, 0x01, 0x03, 0x9e, 0xf8, 0x00, 0x00, 0x20, 0xe0, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0xf0, 0x30, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x98, 0xf0, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x00, 0x70, 0xfe, 0x03, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00,
+ 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x11, 0xf1, 0x11, 0x33, 0x63, 0xc3,
+ 0x83, 0x01, 0x01, 0xc1, 0xe1, 0x31, 0x11, 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,
+ 0x1f, 0x7c, 0xff, 0x07, 0x7c, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7f, 0xff,
+ 0x60, 0x30, 0x18, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xf2, 0x82, 0x02, 0x80, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x7f, 0x0e, 0x1b, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0x81, 0xc1, 0x63,
+ 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00,
+ 0x00, 0x1f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x60, 0x30, 0x1f,
+ 0x07, 0x00, 0x00, 0x01, 0x43, 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+
+ oled_write_raw_P(wylderbuilds, sizeof(wylderbuilds));
+}
+
+bool oled_task_user(void) {
+ oled_set_cursor(0, 1);
+ if (is_keyboard_master()) {
+ oled_write_P(PSTR("Layer\n"), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ oled_write_P(PSTR("QWRTY\n"), false);
+ break;
+ case _LOWER:
+ oled_write_P(PSTR("LOWER\n"), false);
+ break;
+ case _RAISE:
+ oled_write_P(PSTR("RAISE\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+ oled_set_cursor(0, 5);
+ oled_write_P(PSTR("WPM: "), false);
+
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 8);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+ } else {
+ // write WPM to right OLED
+ render_wylderbuilds();
+
+
+ }
+
+ return false;
+}
+#endif
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_full_track_cluster_shift/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track_cluster_shift/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track_cluster_shift/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_full_track_cluster_shift/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track_cluster_shift/keymaps/vial/vial.json
new file mode 100644
index 00000000000..6ca1ced0831
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track_cluster_shift/keymaps/vial/vial.json
@@ -0,0 +1,261 @@
+{
+ "matrix": {
+ "rows": 14,
+ "cols": 7
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 6x7 Full Track Cluster Inset"
+ },
+ [
+ {
+ "x": 4
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 4
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ "0,2",
+ {
+ "x": 12
+ },
+ "7,4",
+ "7,5",
+ "7,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ {
+ "x": 4
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ {
+ "x": 12
+ },
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ "2,6",
+ {
+ "x": 4
+ },
+ "9,0",
+ {
+ "n": true
+ },
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ {
+ "x": 12
+ },
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ {
+ "x": 4
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ {
+ "x": 12
+ },
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ {
+ "x": 4
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ {
+ "x": 12
+ },
+ "11,4",
+ "11,5",
+ "11,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "5,3",
+ {
+ "x": 10
+ },
+ "12,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 13.25
+ },
+ "13,1"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 1
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ {
+ "x": 12
+ },
+ "12,4",
+ "12,5",
+ "12,6"
+ ],
+ [
+ {
+ "x": 13.25
+ },
+ "13,2"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 11
+ },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne"
+ ],
+ [
+ {
+ "x": 11.5
+ },
+ "13,3",
+ {
+ "x": 0.75
+ },
+ "13,4"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -4,
+ "x": 5.75
+ },
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "r": -15,
+ "y": 2.5,
+ "x": 3.5
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "r": -13,
+ "x": 4.25
+ },
+ "6,2",
+ "6,3"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_full_track_cluster_shift/mcuconf.h b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track_cluster_shift/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track_cluster_shift/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_full_track_cluster_shift/rules.mk b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track_cluster_shift/rules.mk
new file mode 100644
index 00000000000..c3be7b3440c
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track_cluster_shift/rules.mk
@@ -0,0 +1,22 @@
+# Board, Bootloader and MCU
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+MOUSEKEY_ENABLE = yes
+#CONSOLE_ENABLE = yes
+#COMMAND_ENABLE = yes
+
+RGBLIGHT_ENABLE = no
+WS2812_DRIVER = vendor
+SLEEP_LED_ENABLE = no
+
+OLED_ENABLE = no
+OLED_DRIVER = SSD1306
+WPM_ENABLE = no
+EXTRAKEY_ENABLE = yes # Audio control and System control
+
+ENCODER_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+
+OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_full_track_cluster_shift/wylderbuilds-6x7-full-track-cluster-inset.json b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track_cluster_shift/wylderbuilds-6x7-full-track-cluster-inset.json
new file mode 100644
index 00000000000..b17d11a5435
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_full_track_cluster_shift/wylderbuilds-6x7-full-track-cluster-inset.json
@@ -0,0 +1,253 @@
+[
+ {
+ "name": "Wylderbuilds 6x7 Full Track Cluster Inset"
+ },
+ [
+ {
+ "x": 4
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 4
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ "0,2",
+ {
+ "x": 12
+ },
+ "7,4",
+ "7,5",
+ "7,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ {
+ "x": 4
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ {
+ "x": 12
+ },
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ "2,6",
+ {
+ "x": 4
+ },
+ "9,0",
+ {
+ "n": true
+ },
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ {
+ "x": 12
+ },
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ {
+ "x": 4
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ {
+ "x": 12
+ },
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ {
+ "x": 4
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ {
+ "x": 12
+ },
+ "11,4",
+ "11,5",
+ "11,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "5,3",
+ {
+ "x": 10
+ },
+ "12,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 13.25
+ },
+ "13,1"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 1
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ {
+ "x": 12
+ },
+ "12,4",
+ "12,5",
+ "12,6"
+ ],
+ [
+ {
+ "x": 13.25
+ },
+ "13,2"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 11
+ },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne"
+ ],
+ [
+ {
+ "x": 11.5
+ },
+ "13,3",
+ {
+ "x": 0.75
+ },
+ "13,4"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -4,
+ "x": 5.75
+ },
+ "5,4",
+ "5,5"
+ ],
+ [
+ {
+ "r": -15,
+ "y": 2.5,
+ "x": 3.5
+ },
+ "6,4",
+ "6,5"
+ ],
+ [
+ {
+ "r": -13,
+ "x": 4.25
+ },
+ "6,2",
+ "6,3"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_track/6x7_track.c b/keyboards/handwired/wylderbuilds/trackball/6x7_track/6x7_track.c
new file mode 100644
index 00000000000..d0253d5e73a
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_track/6x7_track.c
@@ -0,0 +1,5 @@
+//
+// Created by nethe on 11/9/2022.
+//
+
+#include "6x7_track.h"
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_track/6x7_track.h b/keyboards/handwired/wylderbuilds/trackball/6x7_track/6x7_track.h
new file mode 100644
index 00000000000..83542a3711c
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_track/6x7_track.h
@@ -0,0 +1,42 @@
+//
+// Created by nethe on 11/9/2022.
+//
+
+#ifndef WYLD_QMK_FIRMWARE_6X7_H
+#define WYLD_QMK_FIRMWARE_6X7_H
+
+#endif // WYLD_QMK_FIRMWARE_6X6_H
+
+#pragma once
+
+#include "trackball.h"
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_6x7( \
+ 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, L55, R30, R31, R32, R33, R34, R35, R36, \
+ L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46, \
+ L50, L51, L52, L53, L54, R52, R53, R54, R55, R56, \
+ L63, L62, L61, R61, R62, R63, \
+ L65, L64 \
+) { \
+ { 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 }, \
+ { L40, L41, L42, L43, L44, L45, L46 }, \
+ { L50, L51, L52, L53, L54, L55, XXX }, \
+ { XXX, L61, L62, L63, L64, L65, XXX }, \
+\
+ { R00, R01, R02, R03, R04, R05, R06 }, \
+ { R10, R11, R12, R13, R14, R15, R16 }, \
+ { R20, R21, R22, R23, R24, R25, R26 }, \
+ { R30, R31, R32, R33, R34, R35, R36 }, \
+ { R40, R41, R42, R43, R44, R45, R46 }, \
+ { XXX, XXX, R52, R53, R54, R55, R56 }, \
+ { XXX, R61, R62, R63, XXX, XXX, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_track/config.h b/keyboards/handwired/wylderbuilds/trackball/6x7_track/config.h
new file mode 100644
index 00000000000..00e6daa0bbd
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_track/config.h
@@ -0,0 +1,93 @@
+//
+// Created by nethe on 11/9/2022.
+//
+//#define PRODUCT_ID 0x0001
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+
+// Dactyl Manuform Hotswap
+#pragma once
+
+//#include "config_common.h"
+// Basic Config
+#define USE_SERIAL
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+
+#define SPLIT_POINTING_ENABLE
+#define ROTATIONAL_TRANSFORM_ANGLE -25
+#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_RIGHT
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x03
+
+#define POINTING_DEVICE_AUTO_MOUSE_ENABLE
+// only required if not setting mouse layer elsewhere
+#define AUTO_MOUSE_DEFAULT_LAYER 3
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
+
+#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+#define SERIAL_USART_PIN_SWAP
+
+// RP2040 Settings
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 14
+#define MATRIX_COLS 7
+
+#define MATRIX_COL_PINS { GP8, GP7, GP6, GP5, GP4, GP3, GP2 }
+#define RIGHT_MATRIX_COL_PINS { GP2, GP3, GP4, GP5, GP6, GP7, GP8 }
+#define MATRIX_ROW_PINS { GP9, GP10, GP11, GP12, GP13, GP14, GP15 }
+#define DIODE_DIRECTION COL2ROW
+
+//# define MASTER_RIGHT
+# define SPLIT_MODS_ENABLE
+# define SPLIT_WPM_ENABLE
+# define SPLIT_LAYER_STATE_ENABLE
+# define SPLIT_OLED_ENABLE
+# define SPLIT_LED_STATE_ENABLE
+// End of Basic Config
+
+#ifdef ENCODER_ENABLE
+#define ENCODERS_PAD_A { GP22 }
+#define ENCODERS_PAD_B { GP27 }
+#define ENCODER_RESOLUTIONS { 2 }
+#define ENCODERS_PAD_A_RIGHT { }
+#define ENCODERS_PAD_B_RIGHT { }
+#define ENCODER_RESOLUTIONS_RIGHT { }
+#endif
+
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD0
+#define I2C1_SDA_PIN GP16
+#define I2C1_SCL_PIN GP17
+#define RGBLIGHT_LAYERS
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_track/info.json b/keyboards/handwired/wylderbuilds/trackball/6x7_track/info.json
new file mode 100644
index 00000000000..faace98eca6
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_track/info.json
@@ -0,0 +1,626 @@
+{
+ "keyboard_name": "Dactyl-Manuform (6x7_4_trackball)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "bootloader": "rp2040",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x003F",
+ "device_version": "0.0.1"
+ },
+ "width": 22,
+ "height": 10,
+ "matrix": {
+ "rows": 14,
+ "cols": 7
+ },
+ "ws2812": {
+ "pin": "GP28",
+ "driver": "vendor"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true,
+ "encoder": true
+ },
+ "matrix_size": {
+ "cols": 7,
+ "rows": 14
+ },
+ "rgb_matrix": {
+ "driver": "ws2812",
+ "max_brightness": 120,
+ "animations": {
+ "alpha_mods": true,
+ "breathing": true,
+ "colorband_pinwheel_sat": true,
+ "colorband_pinwheel_val": true,
+ "colorband_sat": true,
+ "colorband_spiral_sat": true,
+ "colorband_spiral_val": true,
+ "colorband_val": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_out_in": true,
+ "cycle_out_in_dual": true,
+ "cycle_pinwheel": true,
+ "cycle_spiral": true,
+ "cycle_up_down": true,
+ "digital_rain": true,
+ "dual_beacon": true,
+ "gradient_left_right": true,
+ "gradient_up_down": true,
+ "hue_breathing": true,
+ "hue_pendulum": true,
+ "hue_wave": true,
+ "jellybean_raindrops": true,
+ "pixel_flow": true,
+ "pixel_fractal": true,
+ "pixel_rain": true,
+ "rainbow_beacon": true,
+ "rainbow_moving_chevron": true,
+ "rainbow_pinwheels": true,
+ "raindrops": true,
+ "solid_color": true,
+ "solid_reactive": true,
+ "solid_reactive_cross": true,
+ "solid_reactive_nexus": true,
+ "solid_reactive_simple": true,
+ "solid_reactive_wide": true,
+ "solid_splash": true,
+ "splash": true,
+ "typing_heatmap": true
+ },
+ "split_count": [
+ 44,
+ 43
+ ],
+ "layout": [
+ {"flags": 4, "matrix": [0, 0], "x": 22, "y": 3},
+{"flags": 4, "matrix": [1, 0], "x": 22, "y": 14},
+{"flags": 4, "matrix": [2, 0], "x": 22, "y": 25},
+{"flags": 4, "matrix": [3, 0], "x": 11, "y": 35},
+{"flags": 4, "matrix": [4, 0], "x": 11, "y": 46},
+{"flags": 4, "matrix": [5, 0], "x": 11, "y": 61},
+{"flags": 4, "matrix": [0, 1], "x": 34, "y": 3},
+{"flags": 4, "matrix": [1, 1], "x": 34, "y": 14},
+{"flags": 4, "matrix": [2, 1], "x": 34, "y": 25},
+{"flags": 4, "matrix": [3, 1], "x": 11, "y": 35},
+{"flags": 4, "matrix": [4, 1], "x": 11, "y": 46},
+{"flags": 4, "matrix": [5, 1], "x": 11, "y": 61},
+{"flags": 4, "matrix": [0, 2], "x": 45, "y": 3},
+{"flags": 4, "matrix": [1, 2], "x": 45, "y": 14},
+{"flags": 4, "matrix": [2, 2], "x": 45, "y": 25},
+{"flags": 4, "matrix": [3, 2], "x": 11, "y": 35},
+{"flags": 4, "matrix": [4, 2], "x": 11, "y": 46},
+{"flags": 4, "matrix": [5, 2], "x": 11, "y": 61},
+{"flags": 4, "matrix": [0, 3], "x": 56, "y": 0},
+{"flags": 4, "matrix": [1, 3], "x": 56, "y": 8},
+{"flags": 4, "matrix": [2, 3], "x": 56, "y": 19},
+{"flags": 4, "matrix": [3, 3], "x": 56, "y": 30},
+{"flags": 4, "matrix": [4, 3], "x": 56, "y": 41},
+{"flags": 4, "matrix": [5, 3], "x": 45, "y": 52},
+{"flags": 4, "matrix": [0, 4], "x": 67, "y": 0},
+{"flags": 4, "matrix": [1, 4], "x": 67, "y": 8},
+{"flags": 4, "matrix": [2, 4], "x": 78, "y": 19},
+{"flags": 4, "matrix": [3, 4], "x": 67, "y": 30},
+{"flags": 4, "matrix": [4, 4], "x": 67, "y": 41},
+{"flags": 4, "matrix": [5, 4], "x": 45, "y": 52},
+{"flags": 4, "matrix": [0, 5], "x": 78, "y": 0},
+{"flags": 4, "matrix": [1, 5], "x": 78, "y": 8},
+{"flags": 4, "matrix": [2, 5], "x": 90, "y": 19},
+{"flags": 4, "matrix": [3, 5], "x": 78, "y": 30},
+{"flags": 4, "matrix": [4, 5], "x": 78, "y": 41},
+{"flags": 4, "matrix": [0, 6], "x": 90, "y": 0},
+{"flags": 4, "matrix": [1, 6], "x": 90, "y": 8},
+{"flags": 4, "matrix": [2, 6], "x": 101, "y": 19},
+{"flags": 4, "matrix": [3, 6], "x": 90, "y": 30},
+{"flags": 4, "matrix": [4, 6], "x": 90, "y": 41},
+{"flags": 4, "matrix": [6, 1], "x": 76, "y": 56},
+{"flags": 4, "matrix": [6, 2], "x": 76, "y": 56},
+{"flags": 4, "matrix": [6, 3], "x": 76, "y": 56},
+{"flags": 4, "matrix": [6, 4], "x": 87, "y": 69},
+{"flags": 4, "matrix": [6, 5], "x": 87, "y": 69},
+{"flags": 4, "matrix": [7, 0], "x": 157, "y": 0},
+{"flags": 4, "matrix": [8, 0], "x": 157, "y": 8},
+{"flags": 4, "matrix": [9, 0], "x": 168, "y": 19},
+{"flags": 4, "matrix": [10, 0], "x": 157, "y": 30},
+{"flags": 4, "matrix": [11, 0], "x": 157, "y": 41},
+{"flags": 4, "matrix": [7, 1], "x": 168, "y": 0},
+{"flags": 4, "matrix": [8, 1], "x": 168, "y": 8},
+{"flags": 4, "matrix": [9, 1], "x": 190, "y": 19},
+{"flags": 4, "matrix": [10, 1], "x": 168, "y": 30},
+{"flags": 4, "matrix": [11, 1], "x": 168, "y": 41},
+{"flags": 4, "matrix": [7, 2], "x": 179, "y": 0},
+{"flags": 4, "matrix": [8, 2], "x": 179, "y": 8},
+{"flags": 4, "matrix": [9, 2], "x": 202, "y": 19},
+{"flags": 4, "matrix": [10, 2], "x": 179, "y": 30},
+{"flags": 4, "matrix": [11, 2], "x": 179, "y": 41},
+{"flags": 4, "matrix": [12, 2], "x": 134, "y": 52},
+{"flags": 4, "matrix": [7, 3], "x": 190, "y": 0},
+{"flags": 4, "matrix": [8, 3], "x": 190, "y": 8},
+{"flags": 4, "matrix": [9, 3], "x": 213, "y": 19},
+{"flags": 4, "matrix": [10, 3], "x": 190, "y": 30},
+{"flags": 4, "matrix": [11, 3], "x": 190, "y": 41},
+{"flags": 4, "matrix": [12, 3], "x": 134, "y": 52},
+{"flags": 4, "matrix": [7, 4], "x": 202, "y": 3},
+{"flags": 4, "matrix": [8, 4], "x": 202, "y": 14},
+{"flags": 4, "matrix": [9, 4], "x": 202, "y": 25},
+{"flags": 4, "matrix": [10, 4], "x": 146, "y": 35},
+{"flags": 4, "matrix": [11, 4], "x": 146, "y": 46},
+{"flags": 4, "matrix": [12, 4], "x": 146, "y": 61},
+{"flags": 4, "matrix": [7, 5], "x": 213, "y": 3},
+{"flags": 4, "matrix": [8, 5], "x": 213, "y": 14},
+{"flags": 4, "matrix": [9, 5], "x": 213, "y": 25},
+{"flags": 4, "matrix": [10, 5], "x": 146, "y": 35},
+{"flags": 4, "matrix": [11, 5], "x": 146, "y": 46},
+{"flags": 4, "matrix": [12, 5], "x": 146, "y": 61},
+{"flags": 4, "matrix": [7, 6], "x": 224, "y": 3},
+{"flags": 4, "matrix": [8, 6], "x": 224, "y": 14},
+{"flags": 4, "matrix": [9, 6], "x": 224, "y": 25},
+{"flags": 4, "matrix": [10, 6], "x": 146, "y": 35},
+{"flags": 4, "matrix": [11, 6], "x": 146, "y": 46},
+{"flags": 4, "matrix": [12, 6], "x": 146, "y": 61},
+{"flags": 4, "matrix": [13, 1], "x": 81, "y": 56},
+{"flags": 4, "matrix": [13, 2], "x": 81, "y": 56},
+{"flags": 4, "matrix": [13, 3], "x": 81, "y": 56}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_6x7": {
+ "layout": [
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "0,6",
+ "x": 7,
+ "y": 0
+ },
+ {
+ "label": "7,0",
+ "x": 12,
+ "y": 0
+ },
+ {
+ "label": "7,1",
+ "x": 13,
+ "y": 0
+ },
+ {
+ "label": "7,2",
+ "x": 14,
+ "y": 0
+ },
+ {
+ "label": "7,3",
+ "x": 15,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0.5
+ },
+ {
+ "label": "7,4",
+ "x": 16,
+ "y": 0.5
+ },
+ {
+ "label": "7,5",
+ "x": 17,
+ "y": 0.5
+ },
+ {
+ "label": "7,6",
+ "x": 18,
+ "y": 0.5
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "1,6",
+ "x": 7,
+ "y": 1
+ },
+ {
+ "label": "8,0",
+ "x": 12,
+ "y": 1
+ },
+ {
+ "label": "8,1",
+ "x": 13,
+ "y": 1
+ },
+ {
+ "label": "8,2",
+ "x": 14,
+ "y": 1
+ },
+ {
+ "label": "8,3",
+ "x": 15,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1.5
+ },
+ {
+ "label": "8,4",
+ "x": 16,
+ "y": 1.5
+ },
+ {
+ "label": "8,5",
+ "x": 17,
+ "y": 1.5
+ },
+ {
+ "label": "8,6",
+ "x": 18,
+ "y": 1.5
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "2,6",
+ "x": 7,
+ "y": 2
+ },
+ {
+ "label": "9,0",
+ "x": 12,
+ "y": 2
+ },
+ {
+ "label": "9,1",
+ "x": 13,
+ "y": 2
+ },
+ {
+ "label": "9,2",
+ "x": 14,
+ "y": 2
+ },
+ {
+ "label": "9,3",
+ "x": 15,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2.5
+ },
+ {
+ "label": "9,4",
+ "x": 16,
+ "y": 2.5
+ },
+ {
+ "label": "9,5",
+ "x": 17,
+ "y": 2.5
+ },
+ {
+ "label": "9,6",
+ "x": 18,
+ "y": 2.5
+ },
+ {
+ "label": "3,3",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "3,4",
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "3,5",
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "3,6",
+ "x": 7,
+ "y": 3
+ },
+ {
+ "label": "5,5",
+ "x": 8.5,
+ "y": 3
+ },
+ {
+ "label": "10,0",
+ "x": 12,
+ "y": 3
+ },
+ {
+ "label": "10,1",
+ "x": 13,
+ "y": 3
+ },
+ {
+ "label": "10,2",
+ "x": 14,
+ "y": 3
+ },
+ {
+ "label": "10,3",
+ "x": 15,
+ "y": 3
+ },
+ {
+ "label": "3,0",
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "label": "3,1",
+ "x": 2,
+ "y": 3.5
+ },
+ {
+ "label": "3,2",
+ "x": 3,
+ "y": 3.5
+ },
+ {
+ "label": "10,4",
+ "x": 16,
+ "y": 3.5
+ },
+ {
+ "label": "10,5",
+ "x": 17,
+ "y": 3.5
+ },
+ {
+ "label": "10,6",
+ "x": 18,
+ "y": 3.5
+ },
+ {
+ "label": "4,3",
+ "x": 4,
+ "y": 4
+ },
+ {
+ "label": "4,4",
+ "x": 5,
+ "y": 4
+ },
+ {
+ "label": "4,5",
+ "x": 6,
+ "y": 4
+ },
+ {
+ "label": "4,6",
+ "x": 7,
+ "y": 4
+ },
+ {
+ "label": "11,0",
+ "x": 12,
+ "y": 4
+ },
+ {
+ "label": "11,1",
+ "x": 13,
+ "y": 4
+ },
+ {
+ "label": "11,2",
+ "x": 14,
+ "y": 4
+ },
+ {
+ "label": "11,3",
+ "x": 15,
+ "y": 4
+ },
+ {
+ "label": "4,0",
+ "x": 1,
+ "y": 4.5
+ },
+ {
+ "label": "4,1",
+ "x": 2,
+ "y": 4.5
+ },
+ {
+ "label": "4,2",
+ "x": 3,
+ "y": 4.5
+ },
+ {
+ "label": "11,4",
+ "x": 16,
+ "y": 4.5
+ },
+ {
+ "label": "11,5",
+ "x": 17,
+ "y": 4.5
+ },
+ {
+ "label": "11,6",
+ "x": 18,
+ "y": 4.5
+ },
+ {
+ "label": "5,3",
+ "x": 4,
+ "y": 5
+ },
+ {
+ "label": "5,4",
+ "x": 5,
+ "y": 5
+ },
+ {
+ "label": "12,2",
+ "x": 14,
+ "y": 5
+ },
+ {
+ "label": "12,3",
+ "x": 15,
+ "y": 5
+ },
+ {
+ "label": "6,3",
+ "x": 6.75,
+ "y": 5.25
+ },
+ {
+ "label": "6,2",
+ "x": 7.75,
+ "y": 5.25
+ },
+ {
+ "label": "6,1",
+ "x": 8.75,
+ "y": 5.25
+ },
+ {
+ "label": "13,1",
+ "x": 10.25,
+ "y": 5.25
+ },
+ {
+ "label": "13,2",
+ "x": 11.25,
+ "y": 5.25
+ },
+ {
+ "label": "13,3",
+ "x": 12.25,
+ "y": 5.25
+ },
+ {
+ "label": "5,0",
+ "x": 1,
+ "y": 5.5
+ },
+ {
+ "label": "5,1",
+ "x": 2,
+ "y": 5.5
+ },
+ {
+ "label": "5,2",
+ "x": 3,
+ "y": 5.5
+ },
+ {
+ "label": "12,4",
+ "x": 16,
+ "y": 5.5
+ },
+ {
+ "label": "12,5",
+ "x": 17,
+ "y": 5.5
+ },
+ {
+ "label": "12,6",
+ "x": 18,
+ "y": 5.5
+ },
+ {
+ "label": "6,5",
+ "x": 7.75,
+ "y": 6.25
+ },
+ {
+ "label": "6,4",
+ "x": 8.75,
+ "y": 6.25
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_track/keymaps/default/keymap.c b/keyboards/handwired/wylderbuilds/trackball/6x7_track/keymaps/default/keymap.c
new file mode 100644
index 00000000000..45467e58c4f
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_track/keymaps/default/keymap.c
@@ -0,0 +1,50 @@
+// Copyright 2022 Matthew Dews (@matthew-dews)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include QMK_KEYBOARD_H
+
+enum custom_layer {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+};
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_6x7(
+ 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_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_LBRC , KC_RBRC,
+ _______, KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_QUOT , KC_BACKSLASH,
+ _______, KC_LSFT , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L ,KC_SCLN, KC_LSFT , _______,
+ _______, KC_LCTL , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT,KC_SLSH, KC_LCTL , _______,
+ KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL,
+ RAISE ,KC_SPC , LOWER ,
+ KC_TAB,KC_HOME, KC_ENTER,
+ KC_BSPC,KC_GRV, KC_LGUI, KC_LALT
+ ),
+
+ [_LOWER] = LAYOUT_6x7(
+ 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_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL , _______,
+ _______, _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS, _______,
+ _______, _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE, _______,
+ _______, _______,_______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS, _______,
+ _______,KC_PSCR, _______, KC_P0,
+ _______,_______, _______,
+ _______,_______, _______,
+ _______,_______, QK_BOOT,_______
+ ),
+
+ [_RAISE] = LAYOUT_6x7(
+ _______,KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 , _______,
+ _______,_______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE, _______,
+ _______,_______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU, _______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD, _______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______, _______,
+ _______,_______, KC_EQL ,_______,
+ _______,_______, _______,
+ _______,_______, _______,
+ _______,QK_BOOT, _______,_______
+ )
+};
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_track/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/6x7_track/keymaps/vial/config.h
new file mode 100644
index 00000000000..f7907e6fe15
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_track/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xF8, 0x5A, 0x29, 0x2E, 0x79, 0xD9, 0xC9, 0xE8}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 6 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 6 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_track/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/6x7_track/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..f72719bc569
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_track/keymaps/vial/keymap.c
@@ -0,0 +1,220 @@
+// Copyright 2022 Matthew Dews (@matthew-dews)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include QMK_KEYBOARD_H
+#include "../../6x7_track.h"
+enum custom_layer {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+ _MOUSE
+};
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+enum wyld_keycodes {
+ WYLD_AUTO_MS_TOG = SAFE_RANGE
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_6x7(
+ KC_ESC , RGB_TOG, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10, KC_F11 , KC_F12,
+ DRGSCRL, KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_LBRC , KC_RBRC,
+ SNIPING, KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_QUOT , KC_BACKSLASH,
+ KC_BTN3, KC_CAPS , KC_A , KC_S , KC_D , KC_F , KC_G , KC_MUTE, KC_H , KC_J , KC_K , KC_L ,KC_SCLN, KC_MINS , SNIPING,
+ KC_BTN1, 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_BTN1,
+ KC_LCTL, KC_LGUI, KC_LALT , KC_LBRC,KC_RBRC, DRGSCRL, KC_EQL,KC_RALT, KC_RGUI , KC_RCTL,
+ RAISE, KC_SPC, KC_BSPC, KC_DEL, KC_ENT, LOWER,
+ KC_TAB, KC_GRV
+ ),
+
+ [_LOWER] = LAYOUT_6x7(
+ 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 , QK_BOOT,
+ _______, KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR, KC_SLSH,KC_ASTR,KC_LPRN,KC_RPRN,_______ ,
+ _______, _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,KC_MINS,KC_PLUS, _______,
+ _______, _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_HOME, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_PLUS,KC_PIPE, _______,
+ DPI_RMOD,DPI_MOD,DPI_RST,_______,_______,SNIPING,DRGSCRL, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS, _______,
+ _______,_______,_______,_______,KC_PSCR, _______, KC_P0, KC_DOT, _______, WYLD_AUTO_MS_TOG,
+ _______, KC_BTN1, KC_BTN2, _______,_______,_______,
+ _______, KC_BTN3
+ ),
+
+ [_RAISE] = LAYOUT_6x7(
+ QK_BOOT,KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 , _______,
+ _______,_______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE, _______,
+ _______,_______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_MUTE, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU, _______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD, _______,
+ _______,_______,RGB_VAI,RGB_SAI,RGB_HUI,RGB_MOD,RGB_TOG, _______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______, KC_EQL ,_______,_______,_______,_______,
+ _______, _______, _______, _______,_______,_______,
+ _______, _______
+ ),
+ [_MOUSE] = LAYOUT_6x7(
+ _______,_______,_______,_______,_______,_______, _______, _______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______, _______, _______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______, _______, _______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,KC_BTN2,KC_BTN3,KC_BTN1, _______, KC_MUTE, _______,KC_BTN1,KC_BTN3,KC_BTN2,_______,_______, _______,
+ _______,_______,_______,_______,_______,SNIPING, DRGSCRL, _______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______, _______, _______ ,_______,_______,_______,_______,
+ _______, KC_BTN1, KC_BTN2, _______,_______,_______,
+ _______, KC_BTN3
+ ),
+ [4] = LAYOUT_6x7(
+ _______,_______,_______,_______,_______,_______, _______, _______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______, _______, _______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______, _______, _______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______, _______, _______, _______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______, _______, _______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______, _______, _______, _______ ,_______,_______,_______,_______,
+ _______, _______, _______, _______,_______,_______,
+ _______, _______
+ )
+
+};
+
+void keyboard_post_init_user(void) {
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+ debug_keyboard=true;
+ debug_mouse=true;
+#else
+ debug_enable=false;
+ debug_matrix=false;
+ debug_keyboard=false;
+ debug_mouse=false;
+#endif
+}
+
+#ifdef POINTING_DEVICE_AUTO_MOUSE_ENABLE
+void pointing_device_init_user(void) {
+ set_auto_mouse_enable(true);
+ set_auto_mouse_enable(false);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case WYLD_AUTO_MS_TOG:
+ if (record->event.pressed) {
+ set_auto_mouse_enable(!get_auto_mouse_enable());
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+#endif
+
+// ENCODERS
+#ifdef ENCODER_MAP_ENABLE
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_QWERTY] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD) },
+ [_LOWER] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_RAISE] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD) },
+ [_MOUSE] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD) },
+ [4] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD) }
+};
+//#endif
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+const rgblight_segment_t PROGMEM querty_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_RED}, // Light 4 LEDs, starting with LED 6
+ {33, 3, HSV_RED} // Light 4 LEDs, starting with LED 6
+);
+const rgblight_segment_t PROGMEM lower_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_BLUE},
+ {33, 3, HSV_BLUE}
+);
+const rgblight_segment_t PROGMEM raise_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_YELLOW},
+ {33, 3, HSV_YELLOW}
+);
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ querty_layer, // Overrides caps lock layer
+ lower_layer, // Overrides other layers
+ raise_layer // Overrides other layers
+);
+
+//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(0, layer_state_cmp(state, _QWERTY));
+ return state;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(1, layer_state_cmp(state, _LOWER));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _RAISE));
+ return state;
+}
+
+
+#endif
+
+// rgblight_enable();
+#ifdef RGBLIGHT_ENABLE
+void keyboard_post_init_user(void) {
+ // Enable the LED layers
+ rgblight_layers = my_rgb_layers;
+}
+// rgblight_layers = my_rgb_layers;
+// rgblight_enable_noeeprom(); // Enables RGB, without saving settings
+// rgblight_sethsv_noeeprom_cyan();
+// rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
+#endif
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (!is_keyboard_left()) {
+ return OLED_ROTATION_270;
+ }
+ return OLED_ROTATION_0;
+}
+
+
+bool oled_task_user(void) {
+
+ if (!is_keyboard_left()) {
+ oled_set_cursor(0, 3);
+ // oled_write_P(PSTR("Layer\n"), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ oled_write_P(PSTR(" BASE\n"), false);
+ break;
+ case _LOWER:
+ oled_write_P(PSTR("LOWER\n"), false);
+ break;
+ case _RAISE:
+ oled_write_P(PSTR("RAISE\n"), false);
+ break;
+ case _MOUSE:
+ oled_write_P(PSTR("MOUSE\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+ oled_set_cursor(2, 7);
+ oled_write_P(PSTR("WPM "), false);
+ oled_set_cursor(1, 8);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 9);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+ }
+
+ return false;
+}
+#endif
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_track/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/6x7_track/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..d1c35cfd60d
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_track/keymaps/vial/rules.mk
@@ -0,0 +1,9 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_track/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/6x7_track/keymaps/vial/vial.json
new file mode 100644
index 00000000000..62865dbc7c3
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_track/keymaps/vial/vial.json
@@ -0,0 +1,236 @@
+{
+ "matrix": {
+ "rows": 14,
+ "cols": 7
+ },
+ "lighting": "vialrgb",
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 6x7 Full Wyld Track Encoder"
+ },
+ [
+ {
+ "x": 4
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 4
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ "0,2",
+ {
+ "x": 12
+ },
+ "7,4",
+ "7,5",
+ "7,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ {
+ "x": 4
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ {
+ "x": 12
+ },
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ "2,6",
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 2
+ },
+ "9,0",
+ {
+ "n": true
+ },
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ {
+ "x": 12
+ },
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ {
+ "x": 0.5
+ },
+ "5,5",
+ {
+ "x": 2.5
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ {
+ "x": 12
+ },
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ {
+ "x": 4
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ {
+ "x": 12
+ },
+ "11,4",
+ "11,5",
+ "11,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "5,3",
+ "5,4",
+ {
+ "x": 8
+ },
+ "12,2",
+ "12,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 6.75
+ },
+ "6,3",
+ "6,2",
+ "6,1",
+ {
+ "x": 0.5
+ },
+ "13,1",
+ "13,2",
+ "13,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 1
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ {
+ "x": 12
+ },
+ "12,4",
+ "12,5",
+ "12,6"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 7.75
+ },
+ "6,5",
+ "6,4"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_track/mcuconf.h b/keyboards/handwired/wylderbuilds/trackball/6x7_track/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_track/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_track/rules.mk b/keyboards/handwired/wylderbuilds/trackball/6x7_track/rules.mk
new file mode 100644
index 00000000000..5303940b7ce
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_track/rules.mk
@@ -0,0 +1,22 @@
+# Board, Bootloader and MCU
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+#MOUSEKEY_ENABLE = yes
+#CONSOLE_ENABLE = yes
+#COMMAND_ENABLE = yes
+
+#RGBLIGHT_ENABLE = no
+#WS2812_DRIVER = vendor
+#SLEEP_LED_ENABLE = no
+
+#ENCODER_ENABLE = no
+ENCODER_MAP_ENABLE = yes
+#
+OLED_ENABLE = yes
+OLED_DRIVER = ssd1306
+WPM_ENABLE = yes
+#EXTRAKEY_ENABLE = yes # Audio control and System control
+#
+OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_wyld_track/6x7_wyld_track.c b/keyboards/handwired/wylderbuilds/trackball/6x7_wyld_track/6x7_wyld_track.c
new file mode 100644
index 00000000000..8b980d2984d
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_wyld_track/6x7_wyld_track.c
@@ -0,0 +1,5 @@
+//
+// Created by nethe on 11/9/2022.
+//
+
+#include "6x7_wyld_track.h"
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_wyld_track/6x7_wyld_track.h b/keyboards/handwired/wylderbuilds/trackball/6x7_wyld_track/6x7_wyld_track.h
new file mode 100644
index 00000000000..4176bf0e1b0
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_wyld_track/6x7_wyld_track.h
@@ -0,0 +1,42 @@
+//
+// Created by nethe on 11/9/2022.
+//
+
+#ifndef WYLD_QMK_FIRMWARE_6X6_H
+#define WYLD_QMK_FIRMWARE_6X6_H
+
+#endif // WYLD_QMK_FIRMWARE_6X6_H
+
+#pragma once
+
+#include "trackball.h"
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_6x7( \
+ 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, L61, R63, R20, R21, R22, R23, R24, R25, R26, \
+ L30, L31, L32, L33, L34, L35, L36, R30, R31, R32, R33, R34, R35, R36, \
+ L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46, \
+ L53, L54, R52, R53, \
+ L64, L65, L66, R60, R61, R62, \
+ L62, L63 \
+) { \
+ { 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 }, \
+ { L40, L41, L42, L43, L44, L45, L46 }, \
+ { XXX, XXX, XXX, L53, L54, XXX, XXX }, \
+ { XXX, L61, L62, L63, L64, L65, L66 }, \
+\
+ { R00, R01, R02, R03, R04, R05, R06 }, \
+ { R10, R11, R12, R13, R14, R15, R16 }, \
+ { R20, R21, R22, R23, R24, R25, R26 }, \
+ { R30, R31, R32, R33, R34, R35, R36 }, \
+ { R40, R41, R42, R43, R44, R45, R46 }, \
+ { XXX, XXX, R52, R53, XXX, XXX, XXX }, \
+ { R60, R61, R62, R63, XXX, XXX, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_wyld_track/config.h b/keyboards/handwired/wylderbuilds/trackball/6x7_wyld_track/config.h
new file mode 100644
index 00000000000..238f69b3697
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_wyld_track/config.h
@@ -0,0 +1,116 @@
+//
+// Created by nethe on 11/9/2022.
+//
+//#define PRODUCT_ID 0x0001
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+
+// Dactyl Manuform Hotswap
+#pragma once
+
+//#include "config_common.h"
+// Basic Config
+#define USE_SERIAL
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+
+#define SPLIT_POINTING_ENABLE
+#define ROTATIONAL_TRANSFORM_ANGLE -25
+#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_RIGHT
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x03
+
+#define POINTING_DEVICE_AUTO_MOUSE_ENABLE
+// only required if not setting mouse layer elsewhere
+#define AUTO_MOUSE_DEFAULT_LAYER 3
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 5
+
+#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+//#define SERIAL_USART_PIN_SWAP
+
+// RP2040 Settings
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 14
+#define MATRIX_COLS 7
+
+#define MATRIX_COL_PINS { GP2, GP3, GP4, GP5, GP6, GP7, GP8 }
+#define MATRIX_ROW_PINS { GP9, GP10, GP11, GP12, GP13, GP14, GP15 }
+#define DIODE_DIRECTION COL2ROW
+
+//# define MASTER_RIGHT
+# define SPLIT_MODS_ENABLE
+# define SPLIT_WPM_ENABLE
+# define SPLIT_LAYER_STATE_ENABLE
+# define SPLIT_OLED_ENABLE
+# define SPLIT_LED_STATE_ENABLE
+// End of Basic Config
+
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD0
+#define I2C1_SDA_PIN GP16
+#define I2C1_SCL_PIN GP17
+#define RGBLIGHT_LAYERS
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+#define WS2812_PIO_USE_PIO1
+//#define WS2812_PIO_USE_PIO1
+//#define WS2812_PIO_USE_PIO1
+#define RGBLIGHT_LAYERS
+#define WS2812_DI_PIN GP29 // can use trackball jack if not used
+//#define WS2812_EXTERNAL_PULLUP
+#define RGBLED_NUM 36
+//#define DRIVER_LED_TOTAL 34
+#define RGBLED_SPLIT { 18, 18 }
+#define RGBLIGHT_SPLIT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 17
+#define RGBLIGHT_LIMIT_VAL 100
+//#define STM32_SYSCLK KINETIS_SYSCLK_FREQUENCY
+#define NOP_FUDGE 0.4 // may not be needed if ws driver loaded
+#endif
+
+#ifdef ENCODER_ENABLE
+#define ENCODERS_PAD_A { GP27 }
+#define ENCODERS_PAD_B { GP28 }
+#define ENCODER_RESOLUTIONS { 2 }
+#define ENCODERS_PAD_A_RIGHT { GP27 }
+#define ENCODERS_PAD_B_RIGHT { GP28 }
+#define ENCODER_RESOLUTIONS_RIGHT { 2 }
+#endif
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_wyld_track/info.json b/keyboards/handwired/wylderbuilds/trackball/6x7_wyld_track/info.json
new file mode 100644
index 00000000000..c733f6b335a
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_wyld_track/info.json
@@ -0,0 +1,445 @@
+{
+ "keyboard_name": "Dactyl-Manuform (6x7_4_trackball)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "bootloader": "rp2040",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x003F",
+ "device_version": "0.0.1"
+ },
+ "width": 22,
+ "height": 10,
+ "matrix": {
+ "rows": 14,
+ "cols": 7
+ },
+ "layouts": {
+ "LAYOUT_6x7": {
+ "layout": [
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "0,6",
+ "x": 7,
+ "y": 0
+ },
+ {
+ "label": "7,0",
+ "x": 12,
+ "y": 0
+ },
+ {
+ "label": "7,1",
+ "x": 13,
+ "y": 0
+ },
+ {
+ "label": "7,2",
+ "x": 14,
+ "y": 0
+ },
+ {
+ "label": "7,3",
+ "x": 15,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0.5
+ },
+ {
+ "label": "7,4",
+ "x": 16,
+ "y": 0.5
+ },
+ {
+ "label": "7,5",
+ "x": 17,
+ "y": 0.5
+ },
+ {
+ "label": "7,6",
+ "x": 18,
+ "y": 0.5
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "1,6",
+ "x": 7,
+ "y": 1
+ },
+ {
+ "label": "8,0",
+ "x": 12,
+ "y": 1
+ },
+ {
+ "label": "8,1",
+ "x": 13,
+ "y": 1
+ },
+ {
+ "label": "8,2",
+ "x": 14,
+ "y": 1
+ },
+ {
+ "label": "8,3",
+ "x": 15,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1.5
+ },
+ {
+ "label": "8,4",
+ "x": 16,
+ "y": 1.5
+ },
+ {
+ "label": "8,5",
+ "x": 17,
+ "y": 1.5
+ },
+ {
+ "label": "8,6",
+ "x": 18,
+ "y": 1.5
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "2,6",
+ "x": 7,
+ "y": 2
+ },
+ {
+ "label": "6,1",
+ "x": 8.5,
+ "y": 2
+ },
+ {
+ "label": "13,3",
+ "x": 10.5,
+ "y": 2
+ },
+ {
+ "label": "9,0",
+ "x": 12,
+ "y": 2
+ },
+ {
+ "label": "9,1",
+ "x": 13,
+ "y": 2
+ },
+ {
+ "label": "9,2",
+ "x": 14,
+ "y": 2
+ },
+ {
+ "label": "9,3",
+ "x": 15,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2.5
+ },
+ {
+ "label": "9,4",
+ "x": 16,
+ "y": 2.5
+ },
+ {
+ "label": "9,5",
+ "x": 17,
+ "y": 2.5
+ },
+ {
+ "label": "9,6",
+ "x": 18,
+ "y": 2.5
+ },
+ {
+ "label": "3,3",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "3,4",
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "3,5",
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "3,6",
+ "x": 7,
+ "y": 3
+ },
+ {
+ "label": "10,0",
+ "x": 12,
+ "y": 3
+ },
+ {
+ "label": "10,1",
+ "x": 13,
+ "y": 3
+ },
+ {
+ "label": "10,2",
+ "x": 14,
+ "y": 3
+ },
+ {
+ "label": "10,3",
+ "x": 15,
+ "y": 3
+ },
+ {
+ "label": "3,0",
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "label": "3,1",
+ "x": 2,
+ "y": 3.5
+ },
+ {
+ "label": "3,2",
+ "x": 3,
+ "y": 3.5
+ },
+ {
+ "label": "10,4",
+ "x": 16,
+ "y": 3.5
+ },
+ {
+ "label": "10,5",
+ "x": 17,
+ "y": 3.5
+ },
+ {
+ "label": "10,6",
+ "x": 18,
+ "y": 3.5
+ },
+ {
+ "label": "4,3",
+ "x": 4,
+ "y": 4
+ },
+ {
+ "label": "4,4",
+ "x": 5,
+ "y": 4
+ },
+ {
+ "label": "4,5",
+ "x": 6,
+ "y": 4
+ },
+ {
+ "label": "4,6",
+ "x": 7,
+ "y": 4
+ },
+ {
+ "label": "11,0",
+ "x": 12,
+ "y": 4
+ },
+ {
+ "label": "11,1",
+ "x": 13,
+ "y": 4
+ },
+ {
+ "label": "11,2",
+ "x": 14,
+ "y": 4
+ },
+ {
+ "label": "11,3",
+ "x": 15,
+ "y": 4
+ },
+ {
+ "label": "4,0",
+ "x": 1,
+ "y": 4.5
+ },
+ {
+ "label": "4,1",
+ "x": 2,
+ "y": 4.5
+ },
+ {
+ "label": "4,2",
+ "x": 3,
+ "y": 4.5
+ },
+ {
+ "label": "11,4",
+ "x": 16,
+ "y": 4.5
+ },
+ {
+ "label": "11,5",
+ "x": 17,
+ "y": 4.5
+ },
+ {
+ "label": "11,6",
+ "x": 18,
+ "y": 4.5
+ },
+ {
+ "label": "5,3",
+ "x": 4,
+ "y": 5
+ },
+ {
+ "label": "5,4",
+ "x": 5,
+ "y": 5
+ },
+ {
+ "label": "12,2",
+ "x": 14,
+ "y": 5
+ },
+ {
+ "label": "12,3",
+ "x": 15,
+ "y": 5
+ },
+ {
+ "label": "6,4",
+ "x": 6.75,
+ "y": 5.25
+ },
+ {
+ "label": "6,5",
+ "x": 7.75,
+ "y": 5.25
+ },
+ {
+ "label": "6,6",
+ "x": 8.75,
+ "y": 5.25
+ },
+ {
+ "label": "13,0",
+ "x": 10.25,
+ "y": 5.25
+ },
+ {
+ "label": "13,1",
+ "x": 11.25,
+ "y": 5.25
+ },
+ {
+ "label": "13,2",
+ "x": 12.25,
+ "y": 5.25
+ },
+ {
+ "label": "6,2",
+ "x": 7.75,
+ "y": 6.25
+ },
+ {
+ "label": "6,3",
+ "x": 8.75,
+ "y": 6.25
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_wyld_track/keymaps/default/keymap.c b/keyboards/handwired/wylderbuilds/trackball/6x7_wyld_track/keymaps/default/keymap.c
new file mode 100644
index 00000000000..45467e58c4f
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_wyld_track/keymaps/default/keymap.c
@@ -0,0 +1,50 @@
+// Copyright 2022 Matthew Dews (@matthew-dews)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include QMK_KEYBOARD_H
+
+enum custom_layer {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+};
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_6x7(
+ 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_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_LBRC , KC_RBRC,
+ _______, KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_QUOT , KC_BACKSLASH,
+ _______, KC_LSFT , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L ,KC_SCLN, KC_LSFT , _______,
+ _______, KC_LCTL , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT,KC_SLSH, KC_LCTL , _______,
+ KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL,
+ RAISE ,KC_SPC , LOWER ,
+ KC_TAB,KC_HOME, KC_ENTER,
+ KC_BSPC,KC_GRV, KC_LGUI, KC_LALT
+ ),
+
+ [_LOWER] = LAYOUT_6x7(
+ 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_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL , _______,
+ _______, _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS, _______,
+ _______, _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE, _______,
+ _______, _______,_______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS, _______,
+ _______,KC_PSCR, _______, KC_P0,
+ _______,_______, _______,
+ _______,_______, _______,
+ _______,_______, QK_BOOT,_______
+ ),
+
+ [_RAISE] = LAYOUT_6x7(
+ _______,KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 , _______,
+ _______,_______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE, _______,
+ _______,_______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU, _______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD, _______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______, _______,
+ _______,_______, KC_EQL ,_______,
+ _______,_______, _______,
+ _______,_______, _______,
+ _______,QK_BOOT, _______,_______
+ )
+};
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_wyld_track/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/6x7_wyld_track/keymaps/vial/config.h
new file mode 100644
index 00000000000..f7907e6fe15
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_wyld_track/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xF8, 0x5A, 0x29, 0x2E, 0x79, 0xD9, 0xC9, 0xE8}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 6 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 6 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_wyld_track/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/6x7_wyld_track/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..87562905efc
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_wyld_track/keymaps/vial/keymap.c
@@ -0,0 +1,288 @@
+// Copyright 2022 Matthew Dews (@matthew-dews)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include QMK_KEYBOARD_H
+#include "6x7_wyld_track.h"
+#include
+enum custom_layer {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+ _MOUSE
+};
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+enum wyld_keycodes {
+ WYLD_AUTO_MS_TOG = SAFE_RANGE,
+ WYLD_DPI_UP,
+ WYLD_DPI_DOWN,
+ WYLD_DPI_RESET
+};
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_6x7(
+ 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 , _______,
+ DRGSCRL, KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_LBRC , KC_RBRC,
+ SNIPING, KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_MUTE, KC_HOME, KC_Y , KC_U , KC_I , KC_O , KC_P , KC_QUOT , KC_BACKSLASH,
+ KC_BTN3, KC_LSFT , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L ,KC_SCLN, KC_LSFT , DRGSCRL,
+ KC_BTN1, KC_LCTL , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT,KC_SLSH, KC_LCTL , KC_BTN1,
+ KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL,
+ RAISE, KC_SPC, KC_TAB, KC_RALT, KC_ENT, LOWER,
+ KC_DEL, KC_BSPC
+
+ ),
+
+ [_LOWER] = LAYOUT_6x7(
+ 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_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL , _______,
+ _______, _______,_______,_______,_______,_______,KC_LBRC, KC_MUTE, KC_HOME, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS, _______,
+ _______, _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE, _______,
+ DPI_RMOD,DPI_MOD,DPI_RST,_______,_______,SNIPING,DRGSCRL, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS, QK_BOOT,
+ _______,KC_PSCR, _______, KC_P0,
+ _______, KC_BTN1, KC_BTN2, _______, _______, _______,
+ KC_DEL, KC_BTN3
+
+ ),
+
+ [_RAISE] = LAYOUT_6x7(
+ _______,KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 , _______,
+ _______,_______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE, _______,
+ _______,_______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_MUTE, KC_HOME, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU, _______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD, _______,
+ QK_BOOT,_______,RGB_VAI,RGB_SAI,RGB_HUI,RGB_MOD,RGB_TOG, _______,_______,_______,_______,_______,_______, _______,
+ _______,_______, KC_EQL ,_______,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______
+ ),
+ [_MOUSE] = LAYOUT_6x7(
+ _______,_______,_______,_______,_______,_______, _______, _______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______, _______, _______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______, _______, KC_MUTE, KC_HOME, _______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______, _______, _______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,SNIPING,DRGSCRL, _______,_______,_______,_______,_______,_______, _______,
+ _______, _______, _______ ,_______,
+ _______, KC_BTN1, KC_BTN2, _______, _______, _______,
+ KC_DEL, KC_BTN3
+ ),
+ [4] = LAYOUT_6x7(
+ _______,_______,_______,_______,_______,_______, _______, _______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______, _______, _______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______, _______,KC_MUTE, KC_HOME,_______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______, _______, _______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______, _______, _______,_______,_______,_______,_______,_______, _______,
+ _______, _______, _______ ,_______,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______
+ )
+
+};
+
+
+
+#ifdef POINTING_DEVICE_AUTO_MOUSE_ENABLE
+void pointing_device_init_user(void) {
+ set_auto_mouse_enable(true);
+ set_auto_mouse_enable(false);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case WYLD_AUTO_MS_TOG:
+ if (record->event.pressed) {
+ set_auto_mouse_enable(!get_auto_mouse_enable());
+ }
+ return false; // Skip all further processing of this key
+ }
+ return true;
+}
+#endif
+
+// ENCODERS
+#ifdef ENCODER_MAP_ENABLE
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_QWERTY] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_LOWER] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_RAISE] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_MOUSE] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [4] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) }
+};
+//#endif
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+const rgblight_segment_t PROGMEM querty_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_RED}, // Light 4 LEDs, starting with LED 6
+ {33, 3, HSV_RED} // Light 4 LEDs, starting with LED 6
+);
+const rgblight_segment_t PROGMEM lower_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_BLUE},
+ {33, 3, HSV_BLUE}
+);
+const rgblight_segment_t PROGMEM raise_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_YELLOW},
+ {33, 3, HSV_YELLOW}
+);
+const rgblight_segment_t PROGMEM mouse_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_GREEN},
+ {33, 3, HSV_GREEN}
+);
+
+const rgblight_segment_t PROGMEM fifth_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {15, 3, HSV_PURPLE},
+ {33, 3, HSV_PURPLE}
+);
+
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ querty_layer, // Overrides caps lock layer
+ lower_layer, // Overrides other layers
+ raise_layer, // Overrides other layers
+ mouse_layer, // Overrides other layers
+ fifth_layer // Overrides other layers
+);
+
+//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(0, layer_state_cmp(state, _QWERTY));
+ return state;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(1, layer_state_cmp(state, _LOWER));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _RAISE));
+ rgblight_set_layer_state(3, layer_state_cmp(state, _MOUSE));
+ rgblight_set_layer_state(4, layer_state_cmp(state, 4));
+ return state;
+}
+
+
+#endif
+
+// rgblight_enable();
+
+void keyboard_post_init_user(void) {
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+ debug_keyboard=true;
+ debug_mouse=true;
+#else
+ debug_enable=false;
+ debug_matrix=false;
+ debug_keyboard=false;
+ debug_mouse=false;
+#endif
+ // Enable the LED layers
+#ifdef RGBLIGHT_ENABLE
+ rgblight_layers = my_rgb_layers;
+#endif
+}
+
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_left()) {
+ return OLED_ROTATION_270;
+ }
+#ifdef POINTING_DEVICE_ENABLE
+ return OLED_ROTATION_270;
+#else
+ return OLED_ROTATION_0;
+#endif
+}
+
+static const char PROGMEM wylderbuilds[] = {
+ // 'dark wylderbuilds_oled_name', 128x32
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40,
+ 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x20, 0x60,
+ 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x60, 0x60,
+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0,
+ 0x00, 0x00, 0xc1, 0xc1, 0x01, 0x01, 0xf1, 0x11, 0x01, 0x01, 0x01, 0x31, 0x60, 0xc0, 0x80, 0xc0,
+ 0xf0, 0x10, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0,
+ 0x00, 0x01, 0x03, 0x9e, 0xf8, 0x00, 0x00, 0x20, 0xe0, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0xf0, 0x30, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x98, 0xf0, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x00, 0x70, 0xfe, 0x03, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00,
+ 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x11, 0xf1, 0x11, 0x33, 0x63, 0xc3,
+ 0x83, 0x01, 0x01, 0xc1, 0xe1, 0x31, 0x11, 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,
+ 0x1f, 0x7c, 0xff, 0x07, 0x7c, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7f, 0xff,
+ 0x60, 0x30, 0x18, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xf2, 0x82, 0x02, 0x80, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x7f, 0x0e, 0x1b, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0x81, 0xc1, 0x63,
+ 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00,
+ 0x00, 0x1f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x60, 0x30, 0x1f,
+ 0x07, 0x00, 0x00, 0x01, 0x43, 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+//static void render_wylderbuilds(void) {
+// oled_write_raw_P(wylderbuilds, sizeof(wylderbuilds));
+//}
+
+static char layer_names[5][8] = {
+ " BASE\n",
+ "LOWER\n",
+ "RAISE\n",
+ "MOUSE\n",
+ " XTRA\n"
+ };
+
+bool oled_task_user(void) {
+ char* layer_name = layer_names[get_highest_layer(layer_state)];
+
+ if (is_keyboard_left()) {
+ // oled_write_P(PSTR("Layer\n"), false);
+ oled_set_cursor(0, 3);
+ oled_write_P(PSTR(layer_name), false);
+
+ oled_set_cursor(2, 6);
+ oled_write_P(PSTR("WPM "), false);
+ oled_set_cursor(2, 7);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 9);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+ } else {
+ // write WPM to right OLED
+#ifdef POINTING_DEVICE_ENABLE
+ char* mode = get_mouse_mode_string();
+ uint16_t dpi = get_current_dpi();
+ oled_set_cursor(2, 3);
+ oled_write_P(PSTR("DPI "), false);
+ oled_set_cursor(0, 5);
+ oled_write_P(PSTR(get_u16_str(dpi, ' ')), false);
+ oled_set_cursor(0, 9);
+ oled_write(PSTR(mode), false);
+#else
+ oled_set_cursor(0, 0);
+ render_wylderbuilds();
+ oled_scroll_left();
+#endif
+ }
+
+ return false;
+}
+#endif
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_wyld_track/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/6x7_wyld_track/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_wyld_track/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_wyld_track/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/6x7_wyld_track/keymaps/vial/vial.json
new file mode 100644
index 00000000000..b6c0ad29e48
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_wyld_track/keymaps/vial/vial.json
@@ -0,0 +1,222 @@
+{
+ "matrix": {
+ "rows": 14,
+ "cols": 7
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds 6x7 Standard Trackball"
+ },
+ [
+ {
+ "x": 4
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 4
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ "0,2",
+ {
+ "x": 12
+ },
+ "7,4",
+ "7,5",
+ "7,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne",
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ {
+ "x": 12
+ },
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ "2,6",
+ {
+ "x": 0.5
+ },
+ "6,1",
+ {
+ "x": 1
+ },
+ "13,3",
+ {
+ "x": 0.5
+ },
+ "9,0",
+ {
+ "n": true
+ },
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ {
+ "x": 12
+ },
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ {
+ "x": 4
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ {
+ "x": 12
+ },
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ {
+ "x": 4
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ {
+ "x": 12
+ },
+ "11,4",
+ "11,5",
+ "11,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "5,3",
+ "5,4",
+ {
+ "x": 8
+ },
+ "12,2",
+ "12,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 6.75
+ },
+ "6,4",
+ "6,5",
+ "6,6",
+ {
+ "x": 0.5
+ },
+ "13,0",
+ "13,1",
+ "13,2"
+ ],
+ [
+ {
+ "x": 7.75
+ },
+ "6,2",
+ "6,3"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_wyld_track/mcuconf.h b/keyboards/handwired/wylderbuilds/trackball/6x7_wyld_track/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_wyld_track/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_wyld_track/rules.mk b/keyboards/handwired/wylderbuilds/trackball/6x7_wyld_track/rules.mk
new file mode 100644
index 00000000000..749df37b146
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_wyld_track/rules.mk
@@ -0,0 +1,22 @@
+# Board, Bootloader and MCU
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+MOUSEKEY_ENABLE = yes
+#CONSOLE_ENABLE = yes
+#COMMAND_ENABLE = yes
+
+RGBLIGHT_ENABLE = yes
+WS2812_DRIVER = vendor
+SLEEP_LED_ENABLE = yes
+
+ENCODER_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+
+OLED_ENABLE = yes
+#OLED_DRIVER = ssd1306
+WPM_ENABLE = yes
+EXTRAKEY_ENABLE = yes # Audio control and System control
+
+OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/6x7_wyld_track/wylderbuilds-6x7-wyld-track.json b/keyboards/handwired/wylderbuilds/trackball/6x7_wyld_track/wylderbuilds-6x7-wyld-track.json
new file mode 100644
index 00000000000..4718f92ed54
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/6x7_wyld_track/wylderbuilds-6x7-wyld-track.json
@@ -0,0 +1,214 @@
+[
+ {
+ "name": "Wylderbuilds 6x7 Wyld Track"
+ },
+ [
+ {
+ "x": 4
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 4
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ "0,2",
+ {
+ "x": 12
+ },
+ "7,4",
+ "7,5",
+ "7,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ "1,0\n\n\n\n\n\n\n\n\ne",
+ "1,1\n\n\n\n\n\n\n\n\ne",
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ {
+ "x": 12
+ },
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ "2,6",
+ {
+ "x": 0.5
+ },
+ "6,1",
+ {
+ "x": 1
+ },
+ "13,3",
+ {
+ "x": 0.5
+ },
+ "9,0",
+ {
+ "n": true
+ },
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ {
+ "x": 12
+ },
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ {
+ "x": 4
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ {
+ "x": 12
+ },
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ {
+ "x": 4
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ {
+ "x": 12
+ },
+ "11,4",
+ "11,5",
+ "11,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "5,3",
+ "5,4",
+ {
+ "x": 8
+ },
+ "12,2",
+ "12,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 6.75
+ },
+ "6,4",
+ "6,5",
+ "6,6",
+ {
+ "x": 0.5
+ },
+ "13,0",
+ "13,1",
+ "13,2"
+ ],
+ [
+ {
+ "x": 7.75
+ },
+ "6,2",
+ "6,3"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/config.h b/keyboards/handwired/wylderbuilds/trackball/config.h
new file mode 100644
index 00000000000..9acc731386f
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/config.h
@@ -0,0 +1,25 @@
+// Dactyl Manuform Hotswap
+#pragma once
+
+//#include QMK_KEYBOARD_H
+// Basic Config
+
+//#define PRODUCT_ID 0x0002
+
+#define SPLIT_POINTING_ENABLE
+//#define ROTATIONAL_TRANSFORM_ANGLE -25
+//#define PMW33XX_CS_PIN GP21
+//#define POINTING_DEVICE_CS_PIN GP21
+
+#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+#define CHARYBDIS_MINIMUM_DEFAULT_DPI 600
+//#define CHARYBDIS_MAX_DEFAULT_DPI_MULTIPLIER 0x08
+//#define CHARYBDIS_BASE_DEFAULT_DPI_MULTIPLIER 0x02
+#define CHARYBDIS_DEFAULT_DPI_CONFIG_STEP 400
+#define CHARYBDIS_MINIMUM_SNIPING_DPI 400
+#define CHARYBDIS_SNIPING_DPI_CONFIG_STEP 100
+#define CHARYBDIS_DRAGSCROLL_DPI 100
+// #define CHARYBDIS_POINTER_ACCELERATION_ENABLE
+
+// End of Basic Config
diff --git a/keyboards/handwired/wylderbuilds/trackball/dual_trackball.c b/keyboards/handwired/wylderbuilds/trackball/dual_trackball.c
new file mode 100644
index 00000000000..8ea4d51af60
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/dual_trackball.c
@@ -0,0 +1,60 @@
+#include "dual_trackball.h"
+
+//#ifdef CONSOLE_ENABLE
+#include "print.h"
+//#endif
+
+//report_mouse_t pointing_device_task_combined_user(report_mouse_t left_report, report_mouse_t right_report) {
+//#ifdef CONSOLE_ENABLE
+// print("in pointing device task combined user\n");
+//#endif
+// left_report.h = left_report.x;
+// left_report.v = left_report.y;
+// left_report.x = 0;
+// left_report.y = 0;
+// return pointing_device_combine_reports(left_report, right_report);
+//}
+
+
+static void check_drag(report_mouse_t* mouse_report) {
+ static int16_t scroll_buffer_x = 0;
+ static int16_t scroll_buffer_y = 0;
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_X
+ scroll_buffer_x -= mouse_report->x;
+# else
+ scroll_buffer_x += mouse_report->x;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_X
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ scroll_buffer_y -= mouse_report->y;
+# else
+ scroll_buffer_y += mouse_report->y;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ mouse_report->x = 0;
+ mouse_report->y = 0;
+ if (abs(scroll_buffer_x) > 6) {
+ mouse_report->h = scroll_buffer_x > 0 ? 1 : -1;
+ scroll_buffer_x = 0;
+ }
+ if (abs(scroll_buffer_y) > 6) {
+ mouse_report->v = scroll_buffer_y > 0 ? 1 : -1;
+ scroll_buffer_y = 0;
+ }
+}
+
+report_mouse_t pointing_device_task_combined_user(report_mouse_t left_report, report_mouse_t right_report) {
+
+ print("combined_user\n");
+ check_drag(&left_report);
+ return pointing_device_combine_reports(left_report, right_report);
+}
+
+report_mouse_t pointing_device_task_combined_kb(report_mouse_t left_report, report_mouse_t right_report) {
+ print("combined_kb\n");
+// if (is_keyboard_master()) {
+ check_drag(&left_report);
+ report_mouse_t combined = pointing_device_combine_reports(left_report, right_report);
+// pointing_device_task_charybdis(&combined);
+// mouse_report = pointing_device_task_user(mouse_report);
+// }
+ return combined;
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/dual_trackball.h b/keyboards/handwired/wylderbuilds/trackball/dual_trackball.h
new file mode 100644
index 00000000000..b345338a664
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/dual_trackball.h
@@ -0,0 +1 @@
+#include "trackball.h"
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/polydactyl_3_track/config.h b/keyboards/handwired/wylderbuilds/trackball/polydactyl_3_track/config.h
new file mode 100644
index 00000000000..75572410d40
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/polydactyl_3_track/config.h
@@ -0,0 +1,80 @@
+//
+// Created by nethe on 11/9/2022.
+//
+//#define PRODUCT_ID 0x0001
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+
+// Dactyl Manuform Hotswap
+#pragma once
+
+#include "config_common.h"
+// Basic Config
+
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+#define SPLIT_LAYER_STATE_ENABLE
+
+#define SPLIT_POINTING_ENABLE
+#define POINTING_DEVICE_INVERT_Y
+#define ROTATIONAL_TRANSFORM_ANGLE -25
+#define POINTING_DEVICE_RIGHT
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x04
+
+//#define POINTING_DEVICE_DEBUG
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+#define SERIAL_USART_PIN_SWAP
+
+// RP2040 Settings
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+// More RP2040 Settings
+#define RP2040_FLASH_AT25SF128A
+#define RP2040_FLASH_GD25Q64CS
+#define RP2040_FLASH_W25X10CL
+#define RP2040_FLASH_IS25LP080
+#define RP2040_FLASH_GENERIC_03H
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 14
+#define MATRIX_COLS 7
+
+#define MATRIX_COL_PINS { GP2, GP3, GP4, GP5, GP6, GP7, GP8 }
+#define MATRIX_ROW_PINS { GP9, GP10, GP11, GP12, GP13, GP14, GP15 }
+#define DIODE_DIRECTION COL2ROW
+
+//# define MASTER_RIGHT
+#define SPLIT_OLED_ENABLE
+#define SPLIT_MODS_ENABLE
+//// OLED Pins and Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD1
+#define I2C1_SDA_PIN GP16
+#define I2C1_SCL_PIN GP17
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+// End of Basic Config
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/polydactyl_3_track/info.json b/keyboards/handwired/wylderbuilds/trackball/polydactyl_3_track/info.json
new file mode 100644
index 00000000000..02a77b8b0f5
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/polydactyl_3_track/info.json
@@ -0,0 +1,455 @@
+{
+ "keyboard_name": "Dactyl-Manuform (Polydactyl_3_track)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "bootloader": "rp2040",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0038",
+ "device_version": "0.0.1"
+ },
+ "width": 22,
+ "height": 10,
+ "matrix": {
+ "rows": 14,
+ "cols": 7
+ },
+ "layouts": {
+ "LAYOUT_6x7_3": {
+ "layout": [
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "0,6",
+ "x": 7,
+ "y": 0
+ },
+ {
+ "label": "7,0",
+ "x": 12,
+ "y": 0
+ },
+ {
+ "label": "7,1",
+ "x": 13,
+ "y": 0
+ },
+ {
+ "label": "7,2",
+ "x": 14,
+ "y": 0
+ },
+ {
+ "label": "7,3",
+ "x": 15,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0.5
+ },
+ {
+ "label": "7,4",
+ "x": 16,
+ "y": 0.5
+ },
+ {
+ "label": "7,5",
+ "x": 17,
+ "y": 0.5
+ },
+ {
+ "label": "7,6",
+ "x": 18,
+ "y": 0.5
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "1,6",
+ "x": 7,
+ "y": 1
+ },
+ {
+ "label": "8,0",
+ "x": 12,
+ "y": 1
+ },
+ {
+ "label": "8,1",
+ "x": 13,
+ "y": 1
+ },
+ {
+ "label": "8,2",
+ "x": 14,
+ "y": 1
+ },
+ {
+ "label": "8,3",
+ "x": 15,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1.5
+ },
+ {
+ "label": "8,4",
+ "x": 16,
+ "y": 1.5
+ },
+ {
+ "label": "8,5",
+ "x": 17,
+ "y": 1.5
+ },
+ {
+ "label": "8,6",
+ "x": 18,
+ "y": 1.5
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "2,6",
+ "x": 7,
+ "y": 2
+ },
+ {
+ "label": "9,0",
+ "x": 12,
+ "y": 2
+ },
+ {
+ "label": "9,1",
+ "x": 13,
+ "y": 2
+ },
+ {
+ "label": "9,2",
+ "x": 14,
+ "y": 2
+ },
+ {
+ "label": "9,3",
+ "x": 15,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2.5
+ },
+ {
+ "label": "9,4",
+ "x": 16,
+ "y": 2.5
+ },
+ {
+ "label": "9,5",
+ "x": 17,
+ "y": 2.5
+ },
+ {
+ "label": "9,6",
+ "x": 18,
+ "y": 2.5
+ },
+ {
+ "label": "3,3",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "3,4",
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "3,5",
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "3,6",
+ "x": 7,
+ "y": 3
+ },
+ {
+ "label": "10,0",
+ "x": 12,
+ "y": 3
+ },
+ {
+ "label": "10,1",
+ "x": 13,
+ "y": 3
+ },
+ {
+ "label": "10,2",
+ "x": 14,
+ "y": 3
+ },
+ {
+ "label": "10,3",
+ "x": 15,
+ "y": 3
+ },
+ {
+ "label": "3,0",
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "label": "3,1",
+ "x": 2,
+ "y": 3.5
+ },
+ {
+ "label": "3,2",
+ "x": 3,
+ "y": 3.5
+ },
+ {
+ "label": "10,4",
+ "x": 16,
+ "y": 3.5
+ },
+ {
+ "label": "10,5",
+ "x": 17,
+ "y": 3.5
+ },
+ {
+ "label": "10,6",
+ "x": 18,
+ "y": 3.5
+ },
+ {
+ "label": "4,3",
+ "x": 4,
+ "y": 4
+ },
+ {
+ "label": "4,4",
+ "x": 5,
+ "y": 4
+ },
+ {
+ "label": "4,5",
+ "x": 6,
+ "y": 4
+ },
+ {
+ "label": "4,6",
+ "x": 7,
+ "y": 4
+ },
+ {
+ "label": "11,0",
+ "x": 12,
+ "y": 4
+ },
+ {
+ "label": "11,1",
+ "x": 13,
+ "y": 4
+ },
+ {
+ "label": "11,2",
+ "x": 14,
+ "y": 4
+ },
+ {
+ "label": "11,3",
+ "x": 15,
+ "y": 4
+ },
+ {
+ "label": "4,0",
+ "x": 1,
+ "y": 4.5
+ },
+ {
+ "label": "4,1",
+ "x": 2,
+ "y": 4.5
+ },
+ {
+ "label": "4,2",
+ "x": 3,
+ "y": 4.5
+ },
+ {
+ "label": "11,4",
+ "x": 16,
+ "y": 4.5
+ },
+ {
+ "label": "11,5",
+ "x": 17,
+ "y": 4.5
+ },
+ {
+ "label": "11,6",
+ "x": 18,
+ "y": 4.5
+ },
+ {
+ "label": "5,3",
+ "x": 4,
+ "y": 5
+ },
+ {
+ "label": "5,4",
+ "x": 5,
+ "y": 5
+ },
+ {
+ "label": "12,2",
+ "x": 14,
+ "y": 5
+ },
+ {
+ "label": "12,3",
+ "x": 15,
+ "y": 5
+ },
+ {
+ "label": "13,2",
+ "x": 11.5,
+ "y": 5.25
+ },
+ {
+ "label": "5,0",
+ "x": 1,
+ "y": 5.5
+ },
+ {
+ "label": "5,1",
+ "x": 2,
+ "y": 5.5
+ },
+ {
+ "label": "5,2",
+ "x": 3,
+ "y": 5.5
+ },
+ {
+ "label": "12,4",
+ "x": 16,
+ "y": 5.5
+ },
+ {
+ "label": "12,5",
+ "x": 17,
+ "y": 5.5
+ },
+ {
+ "label": "12,6",
+ "x": 18,
+ "y": 5.5
+ },
+ {
+ "label": "13,1",
+ "x": 11.5,
+ "y": 6.5
+ },
+ {
+ "label": "13,0",
+ "x": 11.5,
+ "y": 7.75
+ },
+ {
+ "label": "6,4",
+ "x": 6.75,
+ "y": 4.5
+ },
+ {
+ "label": "6,5",
+ "x": 7.75,
+ "y": 4.5
+ },
+ {
+ "label": "6,6",
+ "x": 8.75,
+ "y": 4.5
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/polydactyl_3_track/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/polydactyl_3_track/keymaps/vial/config.h
new file mode 100644
index 00000000000..f3287e0f499
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/polydactyl_3_track/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0xD1, 0x30, 0x95, 0xA5, 0x4F, 0x56, 0x5B, 0x41}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 6 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 6 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/polydactyl_3_track/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/polydactyl_3_track/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..2588f967a2f
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/polydactyl_3_track/keymaps/vial/keymap.c
@@ -0,0 +1,158 @@
+// Copyright 2022 Matthew Dews (@matthew-dews)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include QMK_KEYBOARD_H
+#include "polydactyl_3_track.h"
+enum custom_layer {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+};
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_6x7_3(
+ 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 , _______,
+ DRGSCRL, KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_LBRC , KC_RBRC,
+ SNIPING, KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_QUOT , KC_BACKSLASH,
+ KC_BTN3, KC_LSFT , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN,KC_LSFT , DRGSCRL,
+ KC_BTN1, KC_LCTL , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM,KC_DOT,KC_SLSH,KC_LCTL ,KC_BTN1,
+ KC_LCTL, KC_LALT, KC_LGUI,KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL,KC_RGUI,KC_RALT, KC_RCTL,
+ RAISE , KC_SPC , KC_TAB, LOWER,
+ KC_ENTER,
+ KC_LALT
+ ),
+
+ [_LOWER] = LAYOUT_6x7_3(
+ 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 , QK_BOOT,
+ _______, KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL , _______,
+ _______, _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS, _______,
+ _______, _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE, _______,
+ _______, _______,_______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS, _______,
+ _______, _______,_______,_______,KC_PSCR, _______, KC_P0, _______,_______, _______,
+ _______,_______, _______, _______,
+ _______,
+ _______
+ ),
+
+ [_RAISE] = LAYOUT_6x7_3(
+ QK_BOOT,KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 , _______,
+ _______,_______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE, _______,
+ _______,_______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU, _______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD, _______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______, _______,
+ _______, _______,_______, _______,_______, KC_EQL ,_______,_______,_______,_______,
+ _______,_______, _______, _______,
+ _______,
+ _______
+ )
+};
+
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_master()) {
+ return OLED_ROTATION_270;
+ }
+ return OLED_ROTATION_180;
+}
+
+static void render_wylderbuilds(void) {
+ static const char PROGMEM wylderbuilds[] = {
+ // 'dark wylderbuilds_oled_name', 128x32px
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40,
+ 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x20, 0x60,
+ 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x60, 0x60,
+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0,
+ 0x00, 0x00, 0xc1, 0xc1, 0x01, 0x01, 0xf1, 0x11, 0x01, 0x01, 0x01, 0x31, 0x60, 0xc0, 0x80, 0xc0,
+ 0xf0, 0x10, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0,
+ 0x00, 0x01, 0x03, 0x9e, 0xf8, 0x00, 0x00, 0x20, 0xe0, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0xf0, 0x30, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x98, 0xf0, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x00, 0x70, 0xfe, 0x03, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00,
+ 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x11, 0xf1, 0x11, 0x33, 0x63, 0xc3,
+ 0x83, 0x01, 0x01, 0xc1, 0xe1, 0x31, 0x11, 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,
+ 0x1f, 0x7c, 0xff, 0x07, 0x7c, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7f, 0xff,
+ 0x60, 0x30, 0x18, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xf2, 0x82, 0x02, 0x80, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x7f, 0x0e, 0x1b, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0x81, 0xc1, 0x63,
+ 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00,
+ 0x00, 0x1f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x60, 0x30, 0x1f,
+ 0x07, 0x00, 0x00, 0x01, 0x43, 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+
+ oled_write_raw_P(wylderbuilds, sizeof(wylderbuilds));
+}
+
+bool oled_task_user(void) {
+ oled_set_cursor(0, 1);
+ if (is_keyboard_master()) {
+ oled_write_P(PSTR("Layer\n"), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ oled_write_P(PSTR("QWRTY\n"), false);
+ break;
+ case _LOWER:
+ oled_write_P(PSTR("LOWER\n"), false);
+ break;
+ case _RAISE:
+ oled_write_P(PSTR("RAISE\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+ oled_set_cursor(0, 5);
+ oled_write_P(PSTR("WPM: "), false);
+
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 8);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+ } else {
+ // write WPM to right OLED
+ render_wylderbuilds();
+
+
+ }
+
+ return false;
+}
+#endif
+
+
+void keyboard_post_init_user(void) {
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+ debug_keyboard=true;
+ debug_mouse=true;
+#else
+ debug_enable=false;
+ debug_matrix=false;
+ debug_keyboard=false;
+ debug_mouse=false;
+#endif
+}
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/polydactyl_3_track/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/polydactyl_3_track/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/polydactyl_3_track/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/trackball/polydactyl_3_track/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/polydactyl_3_track/keymaps/vial/vial.json
new file mode 100644
index 00000000000..e814cc61638
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/polydactyl_3_track/keymaps/vial/vial.json
@@ -0,0 +1,236 @@
+{
+ "matrix": {
+ "rows": 14,
+ "cols": 7
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds Polydactyl 6x7_3 Track"
+ },
+ [
+ {
+ "x": 4
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 4
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ "0,2",
+ {
+ "x": 12
+ },
+ "7,4",
+ "7,5",
+ "7,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ {
+ "x": 4
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ {
+ "x": 12
+ },
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ "2,6",
+ {
+ "x": 4
+ },
+ "9,0",
+ {
+ "n": true
+ },
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ {
+ "x": 12
+ },
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ {
+ "x": 4
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ {
+ "x": 12
+ },
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ {
+ "x": 4
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ {
+ "x": 12
+ },
+ "11,4",
+ "11,5",
+ "11,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "5,3",
+ "5,4",
+ {
+ "x": 8
+ },
+ "12,2",
+ "12,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 11.5
+ },
+ "13,2"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 1
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ {
+ "x": 12
+ },
+ "12,4",
+ "12,5",
+ "12,6"
+ ],
+ [
+ {
+ "x": 11.5
+ },
+ "13,1"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 11.5
+ },
+ "13,0"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -4.25,
+ "x": 6.75
+ },
+ "6,4",
+ "6,5",
+ "6,6"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/polydactyl_3_track/mcuconf.h b/keyboards/handwired/wylderbuilds/trackball/polydactyl_3_track/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/polydactyl_3_track/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/trackball/polydactyl_3_track/polydactyl_3_track.c b/keyboards/handwired/wylderbuilds/trackball/polydactyl_3_track/polydactyl_3_track.c
new file mode 100644
index 00000000000..d904ea2c654
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/polydactyl_3_track/polydactyl_3_track.c
@@ -0,0 +1,5 @@
+//
+// Created by nethe on 11/9/2022.
+//
+
+#include "polydactyl_3_track.h"
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/polydactyl_3_track/polydactyl_3_track.h b/keyboards/handwired/wylderbuilds/trackball/polydactyl_3_track/polydactyl_3_track.h
new file mode 100644
index 00000000000..0e3986bc8ab
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/polydactyl_3_track/polydactyl_3_track.h
@@ -0,0 +1,43 @@
+//
+// Created by nethe on 11/9/2022.
+//
+
+#ifndef WYLD_QMK_FIRMWARE_6X7_H
+#define WYLD_QMK_FIRMWARE_6X7_H
+
+#endif // WYLD_QMK_FIRMWARE_6X6_H
+
+#pragma once
+
+#include "trackball.h"
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_6x7_3( \
+ 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, R30, R31, R32, R33, R34, R35, R36, \
+ L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46, \
+ L50, L51, L52, L53, L54, R52, R53, R54, R55, R56, \
+ L64, L65, L66, R62, \
+ R61, \
+ R60 \
+) { \
+ { 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 }, \
+ { L40, L41, L42, L43, L44, L45, L46 }, \
+ { L50, L51, L52, L53, L54, XXX, XXX }, \
+ { XXX, XXX, XXX, XXX, L64, L65, L66 }, \
+\
+ { R00, R01, R02, R03, R04, R05, R06 }, \
+ { R10, R11, R12, R13, R14, R15, R16 }, \
+ { R20, R21, R22, R23, R24, R25, R26 }, \
+ { R30, R31, R32, R33, R34, R35, R36 }, \
+ { R40, R41, R42, R43, R44, R45, R46 }, \
+ { XXX, XXX, R52, R53, R54, R55, R56 }, \
+ { R60, R61, R62, XXX, XXX, XXX, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/polydactyl_3_track/rules.mk b/keyboards/handwired/wylderbuilds/trackball/polydactyl_3_track/rules.mk
new file mode 100644
index 00000000000..b6358c4b93d
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/polydactyl_3_track/rules.mk
@@ -0,0 +1,14 @@
+# Board, Bootloader and MCU
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+RGBLIGHT_ENABLE = no
+MOUSEKEY_ENABLE = yes
+#CONSOLE_ENABLE = yes
+OLED_ENABLE = yes
+WPM_ENABLE = yes
+EXTRAKEY_ENABLE = yes # Audio control and System control
+NKRO_ENABLE = yes # Enable N-Key Rollover
+
+OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/polydactyl_4_track/config.h b/keyboards/handwired/wylderbuilds/trackball/polydactyl_4_track/config.h
new file mode 100644
index 00000000000..d10a6ff8e39
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/polydactyl_4_track/config.h
@@ -0,0 +1,80 @@
+//
+// Created by nethe on 11/9/2022.
+//
+//#define PRODUCT_ID 0x0001
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+
+// Dactyl Manuform Hotswap
+#pragma once
+
+#include "config_common.h"
+// Basic Config
+
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+#define SPLIT_LAYER_STATE_ENABLE
+
+#define SPLIT_POINTING_ENABLE
+#define POINTING_DEVICE_INVERT_Y
+#define ROTATIONAL_TRANSFORM_ANGLE -25
+#define POINTING_DEVICE_RIGHT
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x04
+
+//#define POINTING_DEVICE_DEBUG
+
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+//#define SERIAL_USART_PIN_SWAP
+
+// RP2040 Settings
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+// More RP2040 Settings
+#define RP2040_FLASH_AT25SF128A
+#define RP2040_FLASH_GD25Q64CS
+#define RP2040_FLASH_W25X10CL
+#define RP2040_FLASH_IS25LP080
+#define RP2040_FLASH_GENERIC_03H
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 14
+#define MATRIX_COLS 7
+
+#define MATRIX_COL_PINS { GP8, GP7, GP6, GP5, GP4, GP3, GP2 }
+#define MATRIX_ROW_PINS { GP15, GP13, GP12, GP11, GP10, GP9, GP14 }
+#define DIODE_DIRECTION COL2ROW
+
+//# define MASTER_RIGHT
+#define SPLIT_OLED_ENABLE
+#define SPLIT_MODS_ENABLE
+//// OLED Pins and Driver
+#ifdef OLED_ENABLE
+#define I2C_DRIVER I2CD1
+#define I2C1_SDA_PIN GP16
+#define I2C1_SCL_PIN GP17
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+// End of Basic Config
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/polydactyl_4_track/info.json b/keyboards/handwired/wylderbuilds/trackball/polydactyl_4_track/info.json
new file mode 100644
index 00000000000..b6fcc70d6a4
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/polydactyl_4_track/info.json
@@ -0,0 +1,465 @@
+{
+ "keyboard_name": "Dactyl-Manuform (Polydactyl_4_track)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "bootloader": "rp2040",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0046",
+ "device_version": "0.0.1"
+ },
+ "width": 22,
+ "height": 10,
+ "matrix": {
+ "rows": 14,
+ "cols": 7
+ },
+ "layouts": {
+ "LAYOUT_6x7_4": {
+ "layout": [
+ {
+ "label": "0,3",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "0,6",
+ "x": 7,
+ "y": 0
+ },
+ {
+ "label": "7,0",
+ "x": 12,
+ "y": 0
+ },
+ {
+ "label": "7,1",
+ "x": 13,
+ "y": 0
+ },
+ {
+ "label": "7,2",
+ "x": 14,
+ "y": 0
+ },
+ {
+ "label": "7,3",
+ "x": 15,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "0,2",
+ "x": 3,
+ "y": 0.5
+ },
+ {
+ "label": "7,4",
+ "x": 16,
+ "y": 0.5
+ },
+ {
+ "label": "7,5",
+ "x": 17,
+ "y": 0.5
+ },
+ {
+ "label": "7,6",
+ "x": 18,
+ "y": 0.5
+ },
+ {
+ "label": "1,3",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "1,6",
+ "x": 7,
+ "y": 1
+ },
+ {
+ "label": "8,0",
+ "x": 12,
+ "y": 1
+ },
+ {
+ "label": "8,1",
+ "x": 13,
+ "y": 1
+ },
+ {
+ "label": "8,2",
+ "x": 14,
+ "y": 1
+ },
+ {
+ "label": "8,3",
+ "x": 15,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "1,2",
+ "x": 3,
+ "y": 1.5
+ },
+ {
+ "label": "8,4",
+ "x": 16,
+ "y": 1.5
+ },
+ {
+ "label": "8,5",
+ "x": 17,
+ "y": 1.5
+ },
+ {
+ "label": "8,6",
+ "x": 18,
+ "y": 1.5
+ },
+ {
+ "label": "2,3",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "2,6",
+ "x": 7,
+ "y": 2
+ },
+ {
+ "label": "9,0",
+ "x": 12,
+ "y": 2
+ },
+ {
+ "label": "9,1",
+ "x": 13,
+ "y": 2
+ },
+ {
+ "label": "9,2",
+ "x": 14,
+ "y": 2
+ },
+ {
+ "label": "9,3",
+ "x": 15,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "2,2",
+ "x": 3,
+ "y": 2.5
+ },
+ {
+ "label": "9,4",
+ "x": 16,
+ "y": 2.5
+ },
+ {
+ "label": "9,5",
+ "x": 17,
+ "y": 2.5
+ },
+ {
+ "label": "9,6",
+ "x": 18,
+ "y": 2.5
+ },
+ {
+ "label": "3,3",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "3,4",
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "3,5",
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "3,6",
+ "x": 7,
+ "y": 3
+ },
+ {
+ "label": "10,0",
+ "x": 12,
+ "y": 3
+ },
+ {
+ "label": "10,1",
+ "x": 13,
+ "y": 3
+ },
+ {
+ "label": "10,2",
+ "x": 14,
+ "y": 3
+ },
+ {
+ "label": "10,3",
+ "x": 15,
+ "y": 3
+ },
+ {
+ "label": "3,0",
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "label": "3,1",
+ "x": 2,
+ "y": 3.5
+ },
+ {
+ "label": "3,2",
+ "x": 3,
+ "y": 3.5
+ },
+ {
+ "label": "10,4",
+ "x": 16,
+ "y": 3.5
+ },
+ {
+ "label": "10,5",
+ "x": 17,
+ "y": 3.5
+ },
+ {
+ "label": "10,6",
+ "x": 18,
+ "y": 3.5
+ },
+ {
+ "label": "4,3",
+ "x": 4,
+ "y": 4
+ },
+ {
+ "label": "4,4",
+ "x": 5,
+ "y": 4
+ },
+ {
+ "label": "4,5",
+ "x": 6,
+ "y": 4
+ },
+ {
+ "label": "4,6",
+ "x": 7,
+ "y": 4
+ },
+ {
+ "label": "11,0",
+ "x": 12,
+ "y": 4
+ },
+ {
+ "label": "11,1",
+ "x": 13,
+ "y": 4
+ },
+ {
+ "label": "11,2",
+ "x": 14,
+ "y": 4
+ },
+ {
+ "label": "11,3",
+ "x": 15,
+ "y": 4
+ },
+ {
+ "label": "4,0",
+ "x": 1,
+ "y": 4.5
+ },
+ {
+ "label": "4,1",
+ "x": 2,
+ "y": 4.5
+ },
+ {
+ "label": "4,2",
+ "x": 3,
+ "y": 4.5
+ },
+ {
+ "label": "11,4",
+ "x": 16,
+ "y": 4.5
+ },
+ {
+ "label": "11,5",
+ "x": 17,
+ "y": 4.5
+ },
+ {
+ "label": "11,6",
+ "x": 18,
+ "y": 4.5
+ },
+ {
+ "label": "5,3",
+ "x": 4,
+ "y": 5
+ },
+ {
+ "label": "5,4",
+ "x": 5,
+ "y": 5
+ },
+ {
+ "label": "12,2",
+ "x": 14,
+ "y": 5
+ },
+ {
+ "label": "12,3",
+ "x": 15,
+ "y": 5
+ },
+ {
+ "label": "13,0",
+ "x": 11.5,
+ "y": 5.25
+ },
+ {
+ "label": "5,0",
+ "x": 1,
+ "y": 5.5
+ },
+ {
+ "label": "5,1",
+ "x": 2,
+ "y": 5.5
+ },
+ {
+ "label": "5,2",
+ "x": 3,
+ "y": 5.5
+ },
+ {
+ "label": "12,4",
+ "x": 16,
+ "y": 5.5
+ },
+ {
+ "label": "12,5",
+ "x": 17,
+ "y": 5.5
+ },
+ {
+ "label": "12,6",
+ "x": 18,
+ "y": 5.5
+ },
+ {
+ "label": "13,1",
+ "x": 11.5,
+ "y": 6.5
+ },
+ {
+ "label": "13,2",
+ "x": 10.25,
+ "y": 7.75
+ },
+ {
+ "label": "13,3",
+ "x": 11.5,
+ "y": 7.75
+ },
+ {
+ "label": "6,3",
+ "x": 6.75,
+ "y": 4.5
+ },
+ {
+ "label": "6,4",
+ "x": 7.75,
+ "y": 4.5
+ },
+ {
+ "label": "6,5",
+ "x": 8.75,
+ "y": 4.5
+ },
+ {
+ "label": "6,6",
+ "x": 9.75,
+ "y": 4.5
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/polydactyl_4_track/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/polydactyl_4_track/keymaps/vial/config.h
new file mode 100644
index 00000000000..abb592e8eca
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/polydactyl_4_track/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x70, 0x48, 0xD8, 0x19, 0x20, 0xB2, 0x4C, 0x21}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 6 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 6 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/polydactyl_4_track/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/polydactyl_4_track/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..194fdd4ef38
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/polydactyl_4_track/keymaps/vial/keymap.c
@@ -0,0 +1,158 @@
+// Copyright 2022 Matthew Dews (@matthew-dews)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include QMK_KEYBOARD_H
+#include "polydactyl_4_track.h"
+enum custom_layer {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+};
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_6x7_4(
+ 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 , _______,
+ DRGSCRL, KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_LBRC , KC_RBRC,
+ SNIPING, KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_QUOT , KC_BACKSLASH,
+ KC_BTN3, KC_LSFT , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN,KC_LSFT , DRGSCRL,
+ KC_BTN1, KC_LCTL , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM,KC_DOT,KC_SLSH,KC_LCTL ,KC_BTN1,
+ KC_LCTL, KC_LALT, KC_LGUI,KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL,KC_RGUI,KC_RALT, KC_RCTL,
+ RAISE , KC_SPC , KC_TAB, KC_GRV, LOWER,
+ KC_ENTER,
+ KC_DEL, KC_LALT
+ ),
+
+ [_LOWER] = LAYOUT_6x7_4(
+ 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 , QK_BOOT,
+ _______, KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL , _______,
+ _______, _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS, _______,
+ _______, _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE, _______,
+ _______, _______,_______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS, _______,
+ _______, _______,_______,_______,KC_PSCR, _______, KC_P0, _______,_______, _______,
+ _______,_______,_______, _______, _______,
+ _______,
+ _______, _______
+ ),
+
+ [_RAISE] = LAYOUT_6x7_4(
+ QK_BOOT,KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 , _______,
+ _______,_______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE, _______,
+ _______,_______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU, _______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD, _______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______, _______,
+ _______, _______,_______, _______,_______, KC_EQL ,_______,_______,_______,_______,
+ _______, KC_BTN1,KC_BTN3, DRGSCRL, _______,
+ _______,
+ _______, _______
+ )
+};
+
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_master()) {
+ return OLED_ROTATION_270;
+ }
+ return OLED_ROTATION_180;
+}
+
+static void render_wylderbuilds(void) {
+ static const char PROGMEM wylderbuilds[] = {
+ // 'dark wylderbuilds_oled_name', 128x32px
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40,
+ 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x20, 0x60,
+ 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x60, 0x60,
+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0,
+ 0x00, 0x00, 0xc1, 0xc1, 0x01, 0x01, 0xf1, 0x11, 0x01, 0x01, 0x01, 0x31, 0x60, 0xc0, 0x80, 0xc0,
+ 0xf0, 0x10, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0,
+ 0x00, 0x01, 0x03, 0x9e, 0xf8, 0x00, 0x00, 0x20, 0xe0, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0xf0, 0x30, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x98, 0xf0, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x00, 0x70, 0xfe, 0x03, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00,
+ 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x11, 0xf1, 0x11, 0x33, 0x63, 0xc3,
+ 0x83, 0x01, 0x01, 0xc1, 0xe1, 0x31, 0x11, 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,
+ 0x1f, 0x7c, 0xff, 0x07, 0x7c, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7f, 0xff,
+ 0x60, 0x30, 0x18, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xf2, 0x82, 0x02, 0x80, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x7f, 0x0e, 0x1b, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0x81, 0xc1, 0x63,
+ 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00,
+ 0x00, 0x1f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x60, 0x30, 0x1f,
+ 0x07, 0x00, 0x00, 0x01, 0x43, 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+
+ oled_write_raw_P(wylderbuilds, sizeof(wylderbuilds));
+}
+
+bool oled_task_user(void) {
+ oled_set_cursor(0, 1);
+ if (is_keyboard_master()) {
+ oled_write_P(PSTR("Layer\n"), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ oled_write_P(PSTR("QWRTY\n"), false);
+ break;
+ case _LOWER:
+ oled_write_P(PSTR("LOWER\n"), false);
+ break;
+ case _RAISE:
+ oled_write_P(PSTR("RAISE\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+ oled_set_cursor(0, 5);
+ oled_write_P(PSTR("WPM: "), false);
+
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 8);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+ } else {
+ // write WPM to right OLED
+ render_wylderbuilds();
+
+
+ }
+
+ return false;
+}
+#endif
+
+
+void keyboard_post_init_user(void) {
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+ debug_keyboard=true;
+ debug_mouse=true;
+#else
+ debug_enable=false;
+ debug_matrix=false;
+ debug_keyboard=false;
+ debug_mouse=false;
+#endif
+}
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/polydactyl_4_track/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/polydactyl_4_track/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..6fc280f27db
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/polydactyl_4_track/keymaps/vial/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
diff --git a/keyboards/handwired/wylderbuilds/trackball/polydactyl_4_track/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/polydactyl_4_track/keymaps/vial/vial.json
new file mode 100644
index 00000000000..71d88c79400
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/polydactyl_4_track/keymaps/vial/vial.json
@@ -0,0 +1,241 @@
+{
+ "matrix": {
+ "rows": 14,
+ "cols": 7
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds Polydactyl 6x7_4 Track"
+ },
+ [
+ {
+ "x": 4
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 4
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "0,0",
+ "0,1",
+ "0,2",
+ {
+ "x": 12
+ },
+ "7,4",
+ "7,5",
+ "7,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ {
+ "x": 4
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ {
+ "x": 12
+ },
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ "2,6",
+ {
+ "x": 4
+ },
+ "9,0",
+ {
+ "n": true
+ },
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ {
+ "x": 12
+ },
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ {
+ "x": 4
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ {
+ "x": 12
+ },
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ {
+ "x": 4
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 1
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ {
+ "x": 12
+ },
+ "11,4",
+ "11,5",
+ "11,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 4
+ },
+ "5,3",
+ "5,4",
+ {
+ "x": 8
+ },
+ "12,2",
+ "12,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 11.5
+ },
+ "13,0"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 1
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ {
+ "x": 12
+ },
+ "12,4",
+ "12,5",
+ "12,6"
+ ],
+ [
+ {
+ "x": 11.5
+ },
+ "13,1"
+ ],
+ [
+ {
+ "y": 0.25,
+ "x": 10.25
+ },
+ "13,2",
+ {
+ "x": 0.25
+ },
+ "13,3"
+ ],
+ [
+ {
+ "r": 7,
+ "y": -4.25,
+ "x": 6.75
+ },
+ "6,3",
+ "6,4",
+ "6,5",
+ "6,6"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/polydactyl_4_track/mcuconf.h b/keyboards/handwired/wylderbuilds/trackball/polydactyl_4_track/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/polydactyl_4_track/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/trackball/polydactyl_4_track/polydactyl_4_track.c b/keyboards/handwired/wylderbuilds/trackball/polydactyl_4_track/polydactyl_4_track.c
new file mode 100644
index 00000000000..6a95b513064
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/polydactyl_4_track/polydactyl_4_track.c
@@ -0,0 +1,5 @@
+//
+// Created by nethe on 11/9/2022.
+//
+
+#include "polydactyl_4_track.h"
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/polydactyl_4_track/polydactyl_4_track.h b/keyboards/handwired/wylderbuilds/trackball/polydactyl_4_track/polydactyl_4_track.h
new file mode 100644
index 00000000000..1f819b8258c
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/polydactyl_4_track/polydactyl_4_track.h
@@ -0,0 +1,43 @@
+//
+// Created by nethe on 11/9/2022.
+//
+
+#ifndef WYLD_QMK_FIRMWARE_6X7_H
+#define WYLD_QMK_FIRMWARE_6X7_H
+
+#endif // WYLD_QMK_FIRMWARE_6X6_H
+
+#pragma once
+
+#include "trackball.h"
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_6x7_4( \
+ 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, R30, R31, R32, R33, R34, R35, R36, \
+ L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46, \
+ L50, L51, L52, L53, L54, R52, R53, R54, R55, R56, \
+ L63, L64, L65, L66, R60, \
+ R61, \
+ R62, R63 \
+) { \
+ { 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 }, \
+ { L40, L41, L42, L43, L44, L45, L46 }, \
+ { L50, L51, L52, L53, L54, XXX, XXX }, \
+ { XXX, XXX, XXX, L63, L64, L65, L66 }, \
+\
+ { R00, R01, R02, R03, R04, R05, R06 }, \
+ { R10, R11, R12, R13, R14, R15, R16 }, \
+ { R20, R21, R22, R23, R24, R25, R26 }, \
+ { R30, R31, R32, R33, R34, R35, R36 }, \
+ { R40, R41, R42, R43, R44, R45, R46 }, \
+ { XXX, XXX, R52, R53, R54, R55, R56 }, \
+ { R60, R61, R62, R63, XXX, XXX, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/polydactyl_4_track/rules.mk b/keyboards/handwired/wylderbuilds/trackball/polydactyl_4_track/rules.mk
new file mode 100644
index 00000000000..b6358c4b93d
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/polydactyl_4_track/rules.mk
@@ -0,0 +1,14 @@
+# Board, Bootloader and MCU
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+RGBLIGHT_ENABLE = no
+MOUSEKEY_ENABLE = yes
+#CONSOLE_ENABLE = yes
+OLED_ENABLE = yes
+WPM_ENABLE = yes
+EXTRAKEY_ENABLE = yes # Audio control and System control
+NKRO_ENABLE = yes # Enable N-Key Rollover
+
+OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/polydactyl_dual_track/config.h b/keyboards/handwired/wylderbuilds/trackball/polydactyl_dual_track/config.h
new file mode 100644
index 00000000000..914ba259765
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/polydactyl_dual_track/config.h
@@ -0,0 +1,136 @@
+//
+// Created by nethe on 11/9/2022.
+//
+//#define PRODUCT_ID 0x0001
+
+#ifndef WYLD_QMK_FIRMWARE_CONFIG_H
+#define WYLD_QMK_FIRMWARE_CONFIG_H
+
+#endif // WYLD_QMK_FIRMWARE_CONFIG_H
+
+// Dactyl Manuform Hotswap
+#pragma once
+
+//#include QMK_KEYBOARD_H
+// Basic Config
+
+#define SPLIT_HAND_PIN GP26 // high = left, low = right
+#define SPLIT_LAYER_STATE_ENABLE
+
+//#define SCROLL_DIVIDER 12
+//#define CPI_1 2000
+//#define CPI_2 4000
+//#define CPI_3 8000
+
+#define SPLIT_POINTING_ENABLE
+//#define ROTATIONAL_TRANSFORM_ANGLE -25
+//#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_ROTATION_90
+//#define POINTING_DEVICE_ROTATION_90_RIGHT // TESTING RIGHT COMMENTED OUT
+#define ROTATIONAL_TRANSFORM_ANGLE -45 // TESTING RIGHT SHIFTED FROM -35 TO -45 TO TEST LEFT
+#define POINTING_DEVICE_INVERT_Y_RIGHT
+#define POINTING_DEVICE_INVERT_Y
+#define POINTING_DEVICE_INVERT_X
+#define POINTING_DEVICE_COMBINED
+#define PMW33XX_CS_PIN GP21
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+#define PMW33XX_LIFTOFF_DISTANCE 0x02
+
+#define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+
+#define POINTING_DEVICE_AUTO_MOUSE_ENABLE
+// only required if not setting mouse layer elsewhere
+#define AUTO_MOUSE_DEFAULT_LAYER 3
+//#define POINTING_DEVICE_ROTATION_90
+////#define POINTING_DEVICE_ROTATION_90_RIGHT // TESTING RIGHT COMMENTED OUT
+//#define ROTATIONAL_TRANSFORM_ANGLE -45 // TESTING RIGHT SHIFTED FROM -35 TO -45 TO TEST LEFT
+//#define POINTING_DEVICE_INVERT_Y_RIGHT
+//#define POINTING_DEVICE_INVERT_Y
+//#define POINTING_DEVICE_INVERT_X
+//#define POINTING_DEVICE_INVERT_X_RIGHT
+
+//#define POINTING_DEVICE_TASK_THROTTLE_MS 1
+//#define PMW33XX_LIFTOFF_DISTANCE 0x02
+
+//#define POINTING_DEVICE_DEBUG
+//#define USE_SERIAL
+// Using Serial instead of I2C
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+
+#define SERIAL_PIO_USE_PIO0
+#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
+#define SERIAL_USART_SPEED 921600
+//#define SERIAL_USART_PIN_SWAP
+
+// RP2040 Settings
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+// More RP2040 Settings
+//#define RP2040_FLASH_AT25SF128A
+//#define RP2040_FLASH_GD25Q64CS
+//#define RP2040_FLASH_W25X10CL
+//#define RP2040_FLASH_IS25LP080
+//#define RP2040_FLASH_GENERIC_03H
+/* key matrix size */
+// Rows are doubled-up
+//#define MATRIX_ROWS 14
+//#define MATRIX_COLS 7
+
+#define MATRIX_COL_PINS { GP8, GP7, GP6, GP5, GP4, GP3, GP2 }
+#define MATRIX_ROW_PINS { GP9, GP10, GP11, GP12, GP13, GP14, GP15 }
+#define DIODE_DIRECTION COL2ROW
+
+# define SPLIT_LED_STATE_ENABLE
+
+// USE PINS 27 AND 28 TO USE 4 PIN JST, IF AVAILABLE
+#ifdef ENCODER_ENABLE
+#define ENCODERS_PAD_A { GP28 }
+#define ENCODERS_PAD_B { GP27 }
+#define ENCODER_RESOLUTIONS { 2 }
+#define ENCODERS_PAD_A_RIGHT { GP28 }
+#define ENCODERS_PAD_B_RIGHT { GP27 }
+#define ENCODER_RESOLUTIONS_RIGHT { 2 }
+#endif
+
+//// OLED Pins and Driver
+
+#ifdef OLED_ENABLE
+#define SPLIT_OLED_ENABLE
+#define SPLIT_MODS_ENABLE
+#define I2C_DRIVER I2CD0
+#define I2C1_SDA_PIN GP16
+#define I2C1_SCL_PIN GP17
+#define RGBLIGHT_LAYERS
+// OLED Options
+#define SPLIT_OLED_ENABLE
+#define SPLIT_WPM_ENABLE
+#define OLED_DISPLAY_WIDTH 128
+#define OLED_DISPLAY_HEIGHT 32
+#define OLED_MATRIX_SIZE 512
+#define OLED_RESET -1
+#define OLED_DISPLAY_ADDRESS 0x3C
+#define OLED_BRIGHTNESS 255
+#define OLED_TIMEOUT 32000
+#define OLED_FADE_OUT
+#define OLED_FADE_OUT_INTERVAL 0
+#endif
+
+#ifdef RGB_MATRIX_ENABLE
+
+# define RGB_MATRIX_LED_COUNT 88
+# define WS2812_PIO_USE_PIO1 // Force the usage of PIO1 peripheral, by default the WS2812 implementation uses the PIO0 peripheral
+# define SPLIT_TRANSPORT_MIRROR
+# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_REACTIVE // Sets the default mode, if none has been set
+# define RGB_MATRIX_DEFAULT_HUE 33 // Sets the default hue value, if none has been set
+# define RGB_MATRIX_DEFAULT_SAT 255 // Sets the default saturation value, if none has been set
+# define RGB_MATRIX_DEFAULT_SPD 50
+# define WS2812_DI_PIN GP22 // can use trackball jack if not used
+# define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
+# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# define RGB_MATRIX_KEYPRESSES
+# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define NOP_FUDGE 0.4 // may not be needed if ws driver loaded
+#endif
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/polydactyl_dual_track/info.json b/keyboards/handwired/wylderbuilds/trackball/polydactyl_dual_track/info.json
new file mode 100644
index 00000000000..9e7bee7035b
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/polydactyl_dual_track/info.json
@@ -0,0 +1,639 @@
+{
+ "keyboard_name": "Dactyl-Manuform (Polydactyl_dual_track)",
+ "manufacturer": "wylderbuilds",
+ "url": "https://wylderbuilds.com",
+ "maintainer": "qmk",
+ "bootloader": "rp2040",
+ "processor": "RP2040",
+ "usb": {
+ "vid": "0x9953",
+ "pid": "0x0054",
+ "device_version": "0.0.1"
+ },
+ "width": 22,
+ "height": 10,
+ "matrix": {
+ "rows": 14,
+ "cols": 7
+ },
+ "ws2812": {
+ "pin": "GP22",
+ "driver": "vendor"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true,
+ "encoder": true
+ },
+ "matrix_size": {
+ "cols": 7,
+ "rows": 14
+ },
+ "rgb_matrix": {
+ "driver": "ws2812",
+ "max_brightness": 120,
+ "animations": {
+ "alpha_mods": true,
+ "breathing": true,
+ "colorband_pinwheel_sat": true,
+ "colorband_pinwheel_val": true,
+ "colorband_sat": true,
+ "colorband_spiral_sat": true,
+ "colorband_spiral_val": true,
+ "colorband_val": true,
+ "cycle_all": true,
+ "cycle_left_right": true,
+ "cycle_out_in": true,
+ "cycle_out_in_dual": true,
+ "cycle_pinwheel": true,
+ "cycle_spiral": true,
+ "cycle_up_down": true,
+ "digital_rain": true,
+ "dual_beacon": true,
+ "gradient_left_right": true,
+ "gradient_up_down": true,
+ "hue_breathing": true,
+ "hue_pendulum": true,
+ "hue_wave": true,
+ "jellybean_raindrops": true,
+ "pixel_flow": true,
+ "pixel_fractal": true,
+ "pixel_rain": true,
+ "rainbow_beacon": true,
+ "rainbow_moving_chevron": true,
+ "rainbow_pinwheels": true,
+ "raindrops": true,
+ "solid_color": true,
+ "solid_reactive": true,
+ "solid_reactive_cross": true,
+ "solid_reactive_nexus": true,
+ "solid_reactive_simple": true,
+ "solid_reactive_wide": true,
+ "solid_splash": true,
+ "splash": true,
+ "typing_heatmap": true
+ },
+ "split_count": [
+ 44,
+ 43
+ ],
+ "layout": [
+ {"flags": 4, "matrix": [0, 6], "x": 71, "y": 0},
+ {"flags": 4, "matrix": [1, 6], "x": 71, "y": 7},
+ {"flags": 4, "matrix": [2, 6], "x": 71, "y": 17},
+ {"flags": 4, "matrix": [3, 6], "x": 71, "y": 27},
+ {"flags": 4, "matrix": [4, 6], "x": 71, "y": 36},
+
+ {"flags": 4, "matrix": [0, 5], "x": 59, "y": 0},
+ {"flags": 4, "matrix": [1, 5], "x": 59, "y": 7},
+ {"flags": 4, "matrix": [2, 5], "x": 59, "y": 17},
+ {"flags": 4, "matrix": [3, 5], "x": 59, "y": 27},
+ {"flags": 4, "matrix": [4, 5], "x": 59, "y": 36},
+
+ {"flags": 4, "matrix": [0, 4], "x": 47, "y": 0},
+ {"flags": 4, "matrix": [1, 4], "x": 47, "y": 7},
+ {"flags": 4, "matrix": [2, 4], "x": 47, "y": 17},
+ {"flags": 4, "matrix": [3, 4], "x": 47, "y": 27},
+ {"flags": 4, "matrix": [4, 4], "x": 47, "y": 36},
+
+ {"flags": 4, "matrix": [0, 3], "x": 35, "y": 0},
+ {"flags": 4, "matrix": [1, 3], "x": 35, "y": 7},
+ {"flags": 4, "matrix": [2, 3], "x": 35, "y": 17},
+ {"flags": 4, "matrix": [3, 3], "x": 35, "y": 27},
+ {"flags": 4, "matrix": [4, 3], "x": 35, "y": 36},
+
+
+ {"flags": 4, "matrix": [0, 2], "x": 24, "y": 2},
+ {"flags": 4, "matrix": [1, 2], "x": 24, "y": 12},
+ {"flags": 4, "matrix": [2, 2], "x": 24, "y": 22},
+ {"flags": 4, "matrix": [3, 2], "x": 0, "y": 31},
+ {"flags": 4, "matrix": [4, 2], "x": 0, "y": 41},
+
+ {"flags": 4, "matrix": [0, 1], "x": 12, "y": 2},
+ {"flags": 4, "matrix": [1, 1], "x": 12, "y": 12},
+ {"flags": 4, "matrix": [2, 1], "x": 12, "y": 22},
+ {"flags": 4, "matrix": [3, 1], "x": 0, "y": 31},
+ {"flags": 4, "matrix": [4, 1], "x": 0, "y": 41},
+
+ {"flags": 4, "matrix": [0, 0], "x": 0, "y": 2},
+ {"flags": 4, "matrix": [1, 0], "x": 0, "y": 12},
+ {"flags": 4, "matrix": [2, 0], "x": 0, "y": 22},
+ {"flags": 4, "matrix": [3, 0], "x": 0, "y": 31},
+ {"flags": 4, "matrix": [4, 0], "x": 0, "y": 41},
+
+ {"flags": 4, "matrix": [5, 0], "x": 0, "y": 54},
+ {"flags": 4, "matrix": [5, 1], "x": 0, "y": 54},
+ {"flags": 4, "matrix": [5, 2], "x": 0, "y": 54},
+ {"flags": 4, "matrix": [5, 3], "x": 35, "y": 46},
+ {"flags": 4, "matrix": [5, 4], "x": 35, "y": 46},
+
+ {"flags": 4, "matrix": [6, 6], "x": 74, "y": 50},
+ {"flags": 4, "matrix": [6, 5], "x": 74, "y": 63},
+ {"flags": 4, "matrix": [6, 3], "x": 74, "y": 69},
+ {"flags": 4, "matrix": [6, 4], "x": 77, "y": 69},
+
+ {"flags": 4, "matrix": [7, 0], "x": 130, "y": 0},
+ {"flags": 4, "matrix": [8, 0], "x": 130, "y": 7},
+ {"flags": 4, "matrix": [9, 0], "x": 130, "y": 17},
+ {"flags": 4, "matrix": [10, 0], "x": 130, "y": 27},
+ {"flags": 4, "matrix": [11, 0], "x": 130, "y": 36},
+
+ {"flags": 4, "matrix": [7, 1], "x": 141, "y": 0},
+ {"flags": 4, "matrix": [8, 1], "x": 141, "y": 7},
+ {"flags": 4, "matrix": [9, 1], "x": 141, "y": 17},
+ {"flags": 4, "matrix": [10, 1], "x": 141, "y": 27},
+ {"flags": 4, "matrix": [11, 1], "x": 141, "y": 36},
+
+ {"flags": 4, "matrix": [7, 2], "x": 153, "y": 0},
+ {"flags": 4, "matrix": [8, 2], "x": 153, "y": 7},
+ {"flags": 4, "matrix": [9, 2], "x": 153, "y": 17},
+ {"flags": 4, "matrix": [10, 2], "x": 153, "y": 27},
+ {"flags": 4, "matrix": [11, 2], "x": 153, "y": 36},
+
+ {"flags": 4, "matrix": [7, 3], "x": 165, "y": 0},
+ {"flags": 4, "matrix": [8, 3], "x": 165, "y": 7},
+ {"flags": 4, "matrix": [9, 3], "x": 165, "y": 17},
+ {"flags": 4, "matrix": [10, 3], "x": 165, "y": 27},
+ {"flags": 4, "matrix": [11, 3], "x": 165, "y": 36},
+
+ {"flags": 4, "matrix": [7, 4], "x": 177, "y": 2},
+ {"flags": 4, "matrix": [8, 4], "x": 177, "y": 12},
+ {"flags": 4, "matrix": [9, 4], "x": 177, "y": 22},
+ {"flags": 4, "matrix": [10, 4], "x": 141, "y": 31},
+ {"flags": 4, "matrix": [11, 4], "x": 141, "y": 41},
+
+ {"flags": 4, "matrix": [7, 5], "x": 189, "y": 2},
+ {"flags": 4, "matrix": [8, 5], "x": 189, "y": 12},
+ {"flags": 4, "matrix": [9, 5], "x": 189, "y": 22},
+ {"flags": 4, "matrix": [10, 5], "x": 141, "y": 31},
+ {"flags": 4, "matrix": [11, 5], "x": 141, "y": 41},
+
+ {"flags": 4, "matrix": [7, 6], "x": 200, "y": 2},
+ {"flags": 4, "matrix": [8, 6], "x": 200, "y": 12},
+ {"flags": 4, "matrix": [9, 6], "x": 200, "y": 22},
+ {"flags": 4, "matrix": [10, 6], "x": 141, "y": 31},
+ {"flags": 4, "matrix": [11, 6], "x": 141, "y": 41},
+
+ {"flags": 4, "matrix": [12, 6], "x": 141, "y": 54},
+ {"flags": 4, "matrix": [12, 5], "x": 141, "y": 54},
+ {"flags": 4, "matrix": [12, 4], "x": 141, "y": 54},
+ {"flags": 4, "matrix": [12, 3], "x": 130, "y": 46},
+ {"flags": 4, "matrix": [12, 2], "x": 130, "y": 46},
+
+ {"flags": 4, "matrix": [13, 1], "x": 115, "y": 63},
+ {"flags": 4, "matrix": [13, 3], "x": 91, "y": 69},
+ {"flags": 4, "matrix": [13, 2], "x": 88, "y": 69}
+
+ ]
+ },
+ "layouts": {
+ "LAYOUT_6x7_4": {
+ "layout": [
+ {
+ "label": "0,3",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "0,4",
+ "x": 4,
+ "y": 0
+ },
+ {
+ "label": "0,5",
+ "x": 5,
+ "y": 0
+ },
+ {
+ "label": "0,6",
+ "x": 6,
+ "y": 0
+ },
+ {
+ "label": "7,0",
+ "x": 11,
+ "y": 0
+ },
+ {
+ "label": "7,1",
+ "x": 12,
+ "y": 0
+ },
+ {
+ "label": "7,2",
+ "x": 13,
+ "y": 0
+ },
+ {
+ "label": "7,3",
+ "x": 14,
+ "y": 0
+ },
+ {
+ "label": "0,0",
+ "x": 0,
+ "y": 0.5
+ },
+ {
+ "label": "0,1",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "0,2",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "7,4",
+ "x": 15,
+ "y": 0.5
+ },
+ {
+ "label": "7,5",
+ "x": 16,
+ "y": 0.5
+ },
+ {
+ "label": "7,6",
+ "x": 17,
+ "y": 0.5
+ },
+ {
+ "label": "1,3",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "1,4",
+ "x": 4,
+ "y": 1
+ },
+ {
+ "label": "1,5",
+ "x": 5,
+ "y": 1
+ },
+ {
+ "label": "1,6",
+ "x": 6,
+ "y": 1
+ },
+ {
+ "label": "8,0",
+ "x": 11,
+ "y": 1
+ },
+ {
+ "label": "8,1",
+ "x": 12,
+ "y": 1
+ },
+ {
+ "label": "8,2",
+ "x": 13,
+ "y": 1
+ },
+ {
+ "label": "8,3",
+ "x": 14,
+ "y": 1
+ },
+ {
+ "label": "1,0",
+ "x": 0,
+ "y": 1.5
+ },
+ {
+ "label": "1,1",
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "label": "1,2",
+ "x": 2,
+ "y": 1.5
+ },
+ {
+ "label": "8,4",
+ "x": 15,
+ "y": 1.5
+ },
+ {
+ "label": "8,5",
+ "x": 16,
+ "y": 1.5
+ },
+ {
+ "label": "8,6",
+ "x": 17,
+ "y": 1.5
+ },
+ {
+ "label": "2,3",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "2,4",
+ "x": 4,
+ "y": 2
+ },
+ {
+ "label": "2,5",
+ "x": 5,
+ "y": 2
+ },
+ {
+ "label": "2,6",
+ "x": 6,
+ "y": 2
+ },
+ {
+ "label": "9,0",
+ "x": 11,
+ "y": 2
+ },
+ {
+ "label": "9,1",
+ "x": 12,
+ "y": 2
+ },
+ {
+ "label": "9,2",
+ "x": 13,
+ "y": 2
+ },
+ {
+ "label": "9,3",
+ "x": 14,
+ "y": 2
+ },
+ {
+ "label": "2,0",
+ "x": 0,
+ "y": 2.5
+ },
+ {
+ "label": "2,1",
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "label": "2,2",
+ "x": 2,
+ "y": 2.5
+ },
+ {
+ "label": "9,4",
+ "x": 15,
+ "y": 2.5
+ },
+ {
+ "label": "9,5",
+ "x": 16,
+ "y": 2.5
+ },
+ {
+ "label": "9,6",
+ "x": 17,
+ "y": 2.5
+ },
+ {
+ "label": "3,3",
+ "x": 3,
+ "y": 3
+ },
+ {
+ "label": "3,4",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "3,5",
+ "x": 5,
+ "y": 3
+ },
+ {
+ "label": "3,6",
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "10,0",
+ "x": 11,
+ "y": 3
+ },
+ {
+ "label": "10,1",
+ "x": 12,
+ "y": 3
+ },
+ {
+ "label": "10,2",
+ "x": 13,
+ "y": 3
+ },
+ {
+ "label": "10,3",
+ "x": 14,
+ "y": 3
+ },
+ {
+ "label": "3,0",
+ "x": 0,
+ "y": 3.5
+ },
+ {
+ "label": "3,1",
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "label": "3,2",
+ "x": 2,
+ "y": 3.5
+ },
+ {
+ "label": "10,4",
+ "x": 15,
+ "y": 3.5
+ },
+ {
+ "label": "10,5",
+ "x": 16,
+ "y": 3.5
+ },
+ {
+ "label": "10,6",
+ "x": 17,
+ "y": 3.5
+ },
+ {
+ "label": "4,3",
+ "x": 3,
+ "y": 4
+ },
+ {
+ "label": "4,4",
+ "x": 4,
+ "y": 4
+ },
+ {
+ "label": "4,5",
+ "x": 5,
+ "y": 4
+ },
+ {
+ "label": "4,6",
+ "x": 6,
+ "y": 4
+ },
+ {
+ "label": "11,0",
+ "x": 11,
+ "y": 4
+ },
+ {
+ "label": "11,1",
+ "x": 12,
+ "y": 4
+ },
+ {
+ "label": "11,2",
+ "x": 13,
+ "y": 4
+ },
+ {
+ "label": "11,3",
+ "x": 14,
+ "y": 4
+ },
+ {
+ "label": "4,0",
+ "x": 0,
+ "y": 4.5
+ },
+ {
+ "label": "4,1",
+ "x": 1,
+ "y": 4.5
+ },
+ {
+ "label": "4,2",
+ "x": 2,
+ "y": 4.5
+ },
+ {
+ "label": "11,4",
+ "x": 15,
+ "y": 4.5
+ },
+ {
+ "label": "11,5",
+ "x": 16,
+ "y": 4.5
+ },
+ {
+ "label": "11,6",
+ "x": 17,
+ "y": 4.5
+ },
+ {
+ "label": "5,3",
+ "x": 3,
+ "y": 5
+ },
+ {
+ "label": "5,4",
+ "x": 4,
+ "y": 5
+ },
+ {
+ "label": "12,2",
+ "x": 13,
+ "y": 5
+ },
+ {
+ "label": "12,3",
+ "x": 14,
+ "y": 5
+ },
+ {
+ "label": "6,6",
+ "x": 6.25,
+ "y": 5.25
+ },
+ {
+ "label": "5,0",
+ "x": 0,
+ "y": 5.5
+ },
+ {
+ "label": "5,1",
+ "x": 1,
+ "y": 5.5
+ },
+ {
+ "label": "5,2",
+ "x": 2,
+ "y": 5.5
+ },
+ {
+ "label": "12,4",
+ "x": 15,
+ "y": 5.5
+ },
+ {
+ "label": "12,5",
+ "x": 16,
+ "y": 5.5
+ },
+ {
+ "label": "12,6",
+ "x": 17,
+ "y": 5.5
+ },
+ {
+ "label": "13,0",
+ "x": 10.75,
+ "y": 6
+ },
+ {
+ "label": "6,5",
+ "x": 6.25,
+ "y": 6.5
+ },
+ {
+ "label": "13,1",
+ "x": 10.75,
+ "y": 7
+ },
+ {
+ "label": "6,3",
+ "x": 6.25,
+ "y": 7.75
+ },
+ {
+ "label": "6,4",
+ "x": 7.5,
+ "y": 7.75
+ },
+ {
+ "label": "13,2",
+ "x": 9.5,
+ "y": 8
+ },
+ {
+ "label": "13,3",
+ "x": 10.75,
+ "y": 8
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/polydactyl_dual_track/keymaps/vial/config.h b/keyboards/handwired/wylderbuilds/trackball/polydactyl_dual_track/keymaps/vial/config.h
new file mode 100644
index 00000000000..abb592e8eca
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/polydactyl_dual_track/keymaps/vial/config.h
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#pragma once
+
+#define VIAL_KEYBOARD_UID {0x70, 0x48, 0xD8, 0x19, 0x20, 0xB2, 0x4C, 0x21}
+
+#define VIAL_UNLOCK_COMBO_ROWS { 0, 6 }
+#define VIAL_UNLOCK_COMBO_COLS { 0, 6 }
diff --git a/keyboards/handwired/wylderbuilds/trackball/polydactyl_dual_track/keymaps/vial/keymap.c b/keyboards/handwired/wylderbuilds/trackball/polydactyl_dual_track/keymaps/vial/keymap.c
new file mode 100644
index 00000000000..24a398aa7cf
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/polydactyl_dual_track/keymaps/vial/keymap.c
@@ -0,0 +1,253 @@
+// Copyright 2022 Matthew Dews (@matthew-dews)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include QMK_KEYBOARD_H
+#include "polydactyl_dual_track.h"
+//#include "trackball.h"
+#include "print.h"
+
+enum custom_layer {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+ _MOUSE
+};
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_6x7_4(
+ 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 , DB_TOGG,
+ DRGSCRL, KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_LBRC , KC_RBRC,
+ SNIPING, KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_QUOT , KC_BACKSLASH,
+ KC_BTN3, KC_LSFT , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN,KC_LSFT , DRGSCRL,
+ KC_BTN1, KC_LCTL , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM,KC_DOT,KC_SLSH,KC_LCTL ,KC_BTN1,
+ KC_LCTL, KC_LALT, KC_LGUI,KC_LBRC,KC_RBRC, KC_PLUS, KC_EQL,KC_RGUI,KC_RALT, KC_RCTL,
+ RAISE , KC_HOME,
+ KC_SPC, LOWER,
+ KC_TAB, KC_GRV, KC_DEL, KC_ENTER
+ ),
+
+ [_LOWER] = LAYOUT_6x7_4(
+ 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 , QK_BOOT,
+ _______, KC_TILD,KC_EXLM, KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_DEL , _______,
+ _______, _______,_______,_______,_______,_______,KC_LBRC, KC_RBRC, KC_P7 , KC_P8 , KC_P9 ,_______,KC_PLUS, _______,
+ _______, _______,KC_HOME,KC_PGUP,KC_PGDN,KC_END ,KC_LPRN, KC_RPRN, KC_P4 , KC_P5 , KC_P6 ,KC_MINS,KC_PIPE, _______,
+ _______, _______,_______,_______,_______,_______,_______, _______, KC_P1 , KC_P2 , KC_P3 ,KC_EQL ,KC_UNDS, _______,
+ _______, _______,_______,_______,KC_PSCR, _______, KC_P0, _______,_______, _______,
+ _______, _______,
+ _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [_RAISE] = LAYOUT_6x7_4(
+ QK_BOOT,KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 , _______,
+ _______,_______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE, _______,
+ _______,_______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU, _______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD, _______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______, _______,
+ _______, _______,_______, _______,_______, KC_EQL ,_______,_______,_______,_______,
+ _______, _______,
+ KC_BTN1, _______,
+ KC_BTN3, DRGSCRL, _______, _______
+ ),
+
+ [_MOUSE] = LAYOUT_6x7_4(
+ QK_BOOT,KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 , _______,
+ _______,_______,_______,_______,_______,_______,KC_LBRC, KC_RBRC,_______,KC_NUM,KC_INS ,KC_SCRL,KC_MUTE, _______,
+ _______,_______,KC_LEFT,KC_UP ,KC_DOWN,KC_RGHT,KC_LPRN, KC_RPRN,KC_MPRV,KC_MPLY,KC_MNXT,_______,KC_VOLU, _______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,KC_VOLD, _______,
+ _______,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______, _______,
+ _______, _______,_______, _______,_______, KC_EQL ,_______,_______,_______,_______,
+ _______, _______,
+ KC_BTN1, _______,
+ KC_BTN3, DRGSCRL, _______, _______
+ )
+};
+
+
+//void keyboard_post_init_user(void) {
+//
+// debug_enable=true;
+// debug_matrix=true;
+// debug_keyboard=true;
+// debug_mouse=true;
+//}
+
+#if defined(ENCODER_ENABLE) && !defined(ENCODER_MAP_ENABLE)
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_VOLD);
+ } else {
+ tap_code(KC_VOLU);
+ }
+ } else if (index == 1) {
+ if (clockwise) {
+ tap_code(KC_PGUP);
+ } else {
+ tap_code(KC_PGDN);
+ }
+ }
+ return false;
+}
+#endif
+
+// ONE ENCODER
+#if defined(ENCODER_MAP_ENABLE)
+
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_QWERTY] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_LOWER] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_RAISE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ [_MOUSE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+};
+
+#endif
+
+
+static void check_drag(report_mouse_t* mouse_report) {
+ static int16_t scroll_buffer_x = 0;
+ static int16_t scroll_buffer_y = 0;
+
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_X
+ scroll_buffer_x -= mouse_report->x;
+# else
+ scroll_buffer_x += mouse_report->x;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_X
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ scroll_buffer_y -= mouse_report->y;
+# else
+ scroll_buffer_y += mouse_report->y;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ mouse_report->x = 0;
+ mouse_report->y = 0;
+ if (abs(scroll_buffer_x) > 12) {
+ mouse_report->h = scroll_buffer_x > 0 ? 1 : -1;
+ scroll_buffer_x = 0;
+ }
+ if (abs(scroll_buffer_y) > 12) {
+ mouse_report->v = scroll_buffer_y > 0 ? 1 : -1;
+ scroll_buffer_y = 0;
+ }
+}
+
+
+void pointing_device_init_user(void) {
+ set_auto_mouse_enable(false);
+#ifdef POINTING_DEVICE_COMBINED
+ pointing_device_set_cpi_on_side(true, CHARYBDIS_DRAGSCROLL_DPI); // LEFT
+ pointing_device_set_cpi_on_side(false, 2000); // RIGHT
+#endif// always required before the auto mouse feature will work
+}
+
+report_mouse_t pointing_device_task_combined_kb(report_mouse_t left_report, report_mouse_t right_report) {
+// print("combined_kb\n");
+ if (is_keyboard_master()) {
+ check_drag(&left_report);
+ }
+
+ return pointing_device_combine_reports(left_report, right_report);
+
+// return combined;
+}
+
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_left()) {
+ return OLED_ROTATION_270;
+ }
+ return OLED_ROTATION_0;
+}
+
+static const char PROGMEM wylderbuilds[] = {
+ // 'dark wylderbuilds_oled_name', 128x32
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40,
+ 0x40, 0x60, 0x20, 0x20, 0x30, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0x20, 0x60,
+ 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x60, 0x60,
+ 0x40, 0x40, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xf0,
+ 0x00, 0x00, 0xc1, 0xc1, 0x01, 0x01, 0xf1, 0x11, 0x01, 0x01, 0x01, 0x31, 0x60, 0xc0, 0x80, 0xc0,
+ 0xf0, 0x10, 0x00, 0x00, 0x00, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xc0,
+ 0x00, 0x01, 0x03, 0x9e, 0xf8, 0x00, 0x00, 0x20, 0xe0, 0xf0, 0x10, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0xf0, 0x30, 0xa0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x98, 0xf0, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x80, 0x00, 0x70, 0xfe, 0x03, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00,
+ 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x11, 0xf1, 0x11, 0x33, 0x63, 0xc3,
+ 0x83, 0x01, 0x01, 0xc1, 0xe1, 0x31, 0x11, 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,
+ 0x1f, 0x7c, 0xff, 0x07, 0x7c, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x7f, 0xff,
+ 0x60, 0x30, 0x18, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x01, 0x7f, 0xf2, 0x82, 0x02, 0x80, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x7f, 0x0e, 0x1b, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0x81, 0xc1, 0x63,
+ 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00,
+ 0x00, 0x1f, 0xff, 0x80, 0xc0, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x60, 0x30, 0x1f,
+ 0x07, 0x00, 0x00, 0x01, 0x43, 0x44, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static void render_wylderbuilds(void) {
+ oled_write_raw_P(wylderbuilds, sizeof(wylderbuilds));
+}
+
+bool oled_task_user(void) {
+ oled_set_cursor(0, 3);
+ if (is_keyboard_left()) {
+// oled_write_P(PSTR("Layer\n"), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ oled_write_P(PSTR(" BASE\n"), false);
+ break;
+ case _LOWER:
+ oled_write_P(PSTR("LOWER\n"), false);
+ break;
+ case _RAISE:
+ oled_write_P(PSTR("RAISE\n"), false);
+ break;
+ case _MOUSE:
+ oled_write_P(PSTR("MOUSE\n"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+ oled_set_cursor(2, 7);
+ oled_write_P(PSTR("WPM "), false);
+ oled_set_cursor(1, 8);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ // Host Keyboard LED Status
+
+ oled_set_cursor(0, 9);
+ led_t led_state = host_keyboard_led_state();
+
+ oled_write_P(led_state.num_lock ? PSTR("NUMLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPLK \n") : PSTR(" \n"), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("SCRLK \n") : PSTR(" \n"), false);
+ } else {
+ // write WPM to right OLED
+ oled_set_cursor(0, 0);
+ render_wylderbuilds();
+ oled_scroll_left();
+ }
+
+ return false;
+}
+#endif
+
+
+
+
diff --git a/keyboards/handwired/wylderbuilds/trackball/polydactyl_dual_track/keymaps/vial/rules.mk b/keyboards/handwired/wylderbuilds/trackball/polydactyl_dual_track/keymaps/vial/rules.mk
new file mode 100644
index 00000000000..d1c35cfd60d
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/polydactyl_dual_track/keymaps/vial/rules.mk
@@ -0,0 +1,9 @@
+VIA_ENABLE = yes
+VIAL_ENABLE = yes
+VIAL_INSECURE = yes
+LTO_ENABLE = no
+QMK_SETTINGS = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+VIALRGB_ENABLE = yes
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/polydactyl_dual_track/keymaps/vial/vial.json b/keyboards/handwired/wylderbuilds/trackball/polydactyl_dual_track/keymaps/vial/vial.json
new file mode 100644
index 00000000000..f95296c76ac
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/polydactyl_dual_track/keymaps/vial/vial.json
@@ -0,0 +1,258 @@
+{
+ "vendorId": "0x9953",
+ "productId": "0x0101",
+ "lighting": "vialrgb",
+ "matrix": {
+ "rows": 14,
+ "cols": 7
+ },
+ "layouts": {
+ "keymap": [
+ {
+ "name": "Wylderbuilds Polydactyl Dual Track"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 4
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "0,0",
+ "0,1",
+ "0,2",
+ {
+ "x": 12
+ },
+ "7,4",
+ "7,5",
+ "7,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ {
+ "x": 4
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ {
+ "x": 12
+ },
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ "2,6",
+ {
+ "x": 4
+ },
+ "9,0",
+ {
+ "n": true
+ },
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ {
+ "x": 12
+ },
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ {
+ "x": 4
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ {
+ "x": 12
+ },
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ {
+ "x": 4
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ {
+ "x": 12
+ },
+ "11,4",
+ "11,5",
+ "11,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "5,3",
+ "5,4",
+ {
+ "x": 5.25
+ },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 0.75
+ },
+ "12,2",
+ "12,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 6.25
+ },
+ "6,6"
+ ],
+ [
+ {
+ "y": -0.75
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ {
+ "x": 12
+ },
+ "12,4",
+ "12,5",
+ "12,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 10.75
+ },
+ "13,0"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 6.25
+ },
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 10.75
+ },
+ "13,1"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 6.25
+ },
+ "6,3",
+ {
+ "x": 0.25
+ },
+ "6,4"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 9.5
+ },
+ "13,2",
+ {
+ "x": 0.25
+ },
+ "13,3"
+ ]
+ ]
+ }
+}
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/polydactyl_dual_track/mcuconf.h b/keyboards/handwired/wylderbuilds/trackball/polydactyl_dual_track/mcuconf.h
new file mode 100644
index 00000000000..1bb29231feb
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/polydactyl_dual_track/mcuconf.h
@@ -0,0 +1,18 @@
+//
+// Created by nethe on 12/29/2022.
+//
+
+#pragma once
+
+#include_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 FALSE
+
+#ifndef WYLD_QMK_FIRMWARE_MCUCONF_H
+#define WYLD_QMK_FIRMWARE_MCUCONF_H
+
+#endif // WYLD_QMK_FIRMWARE_MCUCONF_H
diff --git a/keyboards/handwired/wylderbuilds/trackball/polydactyl_dual_track/polydactyl_dual_track.c b/keyboards/handwired/wylderbuilds/trackball/polydactyl_dual_track/polydactyl_dual_track.c
new file mode 100644
index 00000000000..29bbe5861ea
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/polydactyl_dual_track/polydactyl_dual_track.c
@@ -0,0 +1,5 @@
+//
+// Created by nethe on 11/9/2022.
+//
+
+#include "polydactyl_dual_track.h"
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/polydactyl_dual_track/polydactyl_dual_track.h b/keyboards/handwired/wylderbuilds/trackball/polydactyl_dual_track/polydactyl_dual_track.h
new file mode 100644
index 00000000000..f28d32d21f2
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/polydactyl_dual_track/polydactyl_dual_track.h
@@ -0,0 +1,43 @@
+//
+// Created by nethe on 11/9/2022.
+//
+
+#ifndef WYLD_QMK_FIRMWARE_6X7_H
+#define WYLD_QMK_FIRMWARE_6X7_H
+
+#endif // WYLD_QMK_FIRMWARE_6X6_H
+
+#pragma once
+
+//#include "trackball.h"
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_6x7_4( \
+ 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, R30, R31, R32, R33, R34, R35, R36, \
+ L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46, \
+ L50, L51, L52, L53, L54, R52, R53, R54, R55, R56, \
+ L66, R60, \
+ L65, R61, \
+ L63, L64, R62, R63 \
+) { \
+ { 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 }, \
+ { L40, L41, L42, L43, L44, L45, L46 }, \
+ { L50, L51, L52, L53, L54, XXX, XXX }, \
+ { XXX, XXX, XXX, L63, L64, L65, L66 }, \
+\
+ { R00, R01, R02, R03, R04, R05, R06 }, \
+ { R10, R11, R12, R13, R14, R15, R16 }, \
+ { R20, R21, R22, R23, R24, R25, R26 }, \
+ { R30, R31, R32, R33, R34, R35, R36 }, \
+ { R40, R41, R42, R43, R44, R45, R46 }, \
+ { XXX, XXX, R52, R53, R54, R55, R56 }, \
+ { R60, R61, R62, R63, XXX, XXX, XXX } \
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/polydactyl_dual_track/rules.mk b/keyboards/handwired/wylderbuilds/trackball/polydactyl_dual_track/rules.mk
new file mode 100644
index 00000000000..6aa4e08e4ee
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/polydactyl_dual_track/rules.mk
@@ -0,0 +1,21 @@
+MCU = RP2040
+SPLIT_KEYBOARD = yes
+BOOTLOADER = rp2040
+SERIAL_DRIVER = vendor
+#POINTING_DEVICE_DRIVER = adns9800
+#RGBLIGHT_ENABLE = no
+#MOUSEKEY_ENABLE = yes
+#CONSOLE_ENABLE = yes
+##COMMAND_ENABLE = yes
+#BOOTMAGIC_ENABLE = yes
+#NKRO_ENABLE = yes # Enable N-Key Rollover
+#RGB_MATRIX_ENABLE = yes
+OLED_ENABLE = yes
+##OLED_DRIVER = SSD1306
+WPM_ENABLE = yes
+#EXTRAKEY_ENABLE = yes # Audio control and System control
+#
+#ENCODER_ENABLE = yes
+ENCODER_MAP_ENABLE = yes # Enable N-Key Rollover
+#
+OPT_DEFS += -DHAL_USE_I2C=TRUE
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/polydactyl_dual_track/tweaked_led_matrix.py b/keyboards/handwired/wylderbuilds/trackball/polydactyl_dual_track/tweaked_led_matrix.py
new file mode 100644
index 00000000000..b7524a561cc
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/polydactyl_dual_track/tweaked_led_matrix.py
@@ -0,0 +1,108 @@
+[
+ {'flags': 4, 'matrix': [0, 6], 'x': 71, 'y': 0},
+ {'flags': 4, 'matrix': [1, 6], 'x': 71, 'y': 7},
+ {'flags': 4, 'matrix': [2, 6], 'x': 71, 'y': 17},
+ {'flags': 4, 'matrix': [3, 6], 'x': 71, 'y': 27},
+ {'flags': 4, 'matrix': [4, 6], 'x': 71, 'y': 36},
+
+ {'flags': 4, 'matrix': [0, 5], 'x': 59, 'y': 0},
+ {'flags': 4, 'matrix': [1, 5], 'x': 59, 'y': 7},
+ {'flags': 4, 'matrix': [2, 5], 'x': 59, 'y': 17},
+ {'flags': 4, 'matrix': [3, 5], 'x': 59, 'y': 27},
+ {'flags': 4, 'matrix': [4, 5], 'x': 59, 'y': 36},
+
+ {'flags': 4, 'matrix': [0, 4], 'x': 47, 'y': 0},
+ {'flags': 4, 'matrix': [1, 4], 'x': 47, 'y': 7},
+ {'flags': 4, 'matrix': [2, 4], 'x': 47, 'y': 17},
+ {'flags': 4, 'matrix': [3, 4], 'x': 47, 'y': 27},
+ {'flags': 4, 'matrix': [4, 4], 'x': 47, 'y': 36},
+
+ {'flags': 4, 'matrix': [0, 3], 'x': 35, 'y': 0},
+ {'flags': 4, 'matrix': [1, 3], 'x': 35, 'y': 7},
+ {'flags': 4, 'matrix': [2, 3], 'x': 35, 'y': 17},
+ {'flags': 4, 'matrix': [3, 3], 'x': 35, 'y': 27},
+ {'flags': 4, 'matrix': [4, 3], 'x': 35, 'y': 36},
+
+
+ {'flags': 4, 'matrix': [0, 2], 'x': 24, 'y': 2},
+ {'flags': 4, 'matrix': [1, 2], 'x': 24, 'y': 12},
+ {'flags': 4, 'matrix': [2, 2], 'x': 24, 'y': 22},
+ {'flags': 4, 'matrix': [3, 2], 'x': 0, 'y': 31},
+ {'flags': 4, 'matrix': [4, 2], 'x': 0, 'y': 41},
+
+ {'flags': 4, 'matrix': [0, 1], 'x': 12, 'y': 2},
+ {'flags': 4, 'matrix': [1, 1], 'x': 12, 'y': 12},
+ {'flags': 4, 'matrix': [2, 1], 'x': 12, 'y': 22},
+ {'flags': 4, 'matrix': [3, 1], 'x': 0, 'y': 31},
+ {'flags': 4, 'matrix': [4, 1], 'x': 0, 'y': 41},
+
+ {'flags': 4, 'matrix': [0, 0], 'x': 0, 'y': 2},
+ {'flags': 4, 'matrix': [1, 0], 'x': 0, 'y': 12},
+ {'flags': 4, 'matrix': [2, 0], 'x': 0, 'y': 22},
+ {'flags': 4, 'matrix': [3, 0], 'x': 0, 'y': 31},
+ {'flags': 4, 'matrix': [4, 0], 'x': 0, 'y': 41},
+
+ {'flags': 4, 'matrix': [5, 0], 'x': 0, 'y': 54},
+ {'flags': 4, 'matrix': [5, 1], 'x': 0, 'y': 54},
+ {'flags': 4, 'matrix': [5, 2], 'x': 0, 'y': 54},
+ {'flags': 4, 'matrix': [5, 3], 'x': 35, 'y': 46},
+ {'flags': 4, 'matrix': [5, 4], 'x': 35, 'y': 46},
+
+ {'flags': 4, 'matrix': [6, 6], 'x': 74, 'y': 50},
+ {'flags': 4, 'matrix': [6, 5], 'x': 74, 'y': 63},
+ {'flags': 4, 'matrix': [6, 3], 'x': 74, 'y': 69},
+ {'flags': 4, 'matrix': [6, 4], 'x': 77, 'y': 69},
+
+ {'flags': 4, 'matrix': [7, 0], 'x': 130, 'y': 0},
+ {'flags': 4, 'matrix': [8, 0], 'x': 130, 'y': 7},
+ {'flags': 4, 'matrix': [9, 0], 'x': 130, 'y': 17},
+ {'flags': 4, 'matrix': [10, 0], 'x': 130, 'y': 27},
+ {'flags': 4, 'matrix': [11, 0], 'x': 130, 'y': 36},
+
+ {'flags': 4, 'matrix': [7, 1], 'x': 141, 'y': 0},
+ {'flags': 4, 'matrix': [8, 1], 'x': 141, 'y': 7},
+ {'flags': 4, 'matrix': [9, 1], 'x': 141, 'y': 17},
+ {'flags': 4, 'matrix': [10, 1], 'x': 141, 'y': 27},
+ {'flags': 4, 'matrix': [11, 1], 'x': 141, 'y': 36},
+
+ {'flags': 4, 'matrix': [7, 2], 'x': 153, 'y': 0},
+ {'flags': 4, 'matrix': [8, 2], 'x': 153, 'y': 7},
+ {'flags': 4, 'matrix': [9, 2], 'x': 153, 'y': 17},
+ {'flags': 4, 'matrix': [10, 2], 'x': 153, 'y': 27},
+ {'flags': 4, 'matrix': [11, 2], 'x': 153, 'y': 36},
+
+ {'flags': 4, 'matrix': [7, 3], 'x': 165, 'y': 0},
+ {'flags': 4, 'matrix': [8, 3], 'x': 165, 'y': 7},
+ {'flags': 4, 'matrix': [9, 3], 'x': 165, 'y': 17},
+ {'flags': 4, 'matrix': [10, 3], 'x': 165, 'y': 27},
+ {'flags': 4, 'matrix': [11, 3], 'x': 165, 'y': 36},
+
+ {'flags': 4, 'matrix': [7, 4], 'x': 177, 'y': 2},
+ {'flags': 4, 'matrix': [8, 4], 'x': 177, 'y': 12},
+ {'flags': 4, 'matrix': [9, 4], 'x': 177, 'y': 22},
+ {'flags': 4, 'matrix': [10, 4], 'x': 141, 'y': 31},
+ {'flags': 4, 'matrix': [11, 4], 'x': 141, 'y': 41},
+
+ {'flags': 4, 'matrix': [7, 5], 'x': 189, 'y': 2},
+ {'flags': 4, 'matrix': [8, 5], 'x': 189, 'y': 12},
+ {'flags': 4, 'matrix': [9, 5], 'x': 189, 'y': 22},
+ {'flags': 4, 'matrix': [10, 5], 'x': 141, 'y': 31},
+ {'flags': 4, 'matrix': [11, 5], 'x': 141, 'y': 41},
+
+ {'flags': 4, 'matrix': [7, 6], 'x': 200, 'y': 2},
+ {'flags': 4, 'matrix': [8, 6], 'x': 200, 'y': 12},
+ {'flags': 4, 'matrix': [9, 6], 'x': 200, 'y': 22},
+ {'flags': 4, 'matrix': [10, 6], 'x': 141, 'y': 31},
+ {'flags': 4, 'matrix': [11, 6], 'x': 141, 'y': 41},
+
+ {'flags': 4, 'matrix': [12, 6], 'x': 141, 'y': 54},
+ {'flags': 4, 'matrix': [12, 5], 'x': 141, 'y': 54},
+ {'flags': 4, 'matrix': [12, 4], 'x': 141, 'y': 54},
+ {'flags': 4, 'matrix': [12, 3], 'x': 130, 'y': 46},
+ {'flags': 4, 'matrix': [12, 2], 'x': 130, 'y': 46},
+
+ {'flags': 4, 'matrix': [13, 0], 'x': 115, 'y': 50},
+ {'flags': 4, 'matrix': [13, 1], 'x': 115, 'y': 63},
+ {'flags': 4, 'matrix': [13, 2], 'x': 88, 'y': 69},
+ {'flags': 4, 'matrix': [13, 3], 'x': 91, 'y': 69}
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/polydactyl_dual_track/wylderbuilds-polydactyl-dual-track.json b/keyboards/handwired/wylderbuilds/trackball/polydactyl_dual_track/wylderbuilds-polydactyl-dual-track.json
new file mode 100644
index 00000000000..d602ff9ee4a
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/polydactyl_dual_track/wylderbuilds-polydactyl-dual-track.json
@@ -0,0 +1,247 @@
+[
+ {
+ "name": "Wylderbuilds Polydactyl Dual Track"
+ },
+ [
+ {
+ "x": 3
+ },
+ "0,3",
+ "0,4",
+ "0,5",
+ "0,6",
+ {
+ "x": 4
+ },
+ "7,0",
+ "7,1",
+ "7,2",
+ "7,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "0,0",
+ "0,1",
+ "0,2",
+ {
+ "x": 12
+ },
+ "7,4",
+ "7,5",
+ "7,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "1,3",
+ "1,4",
+ "1,5",
+ "1,6",
+ {
+ "x": 4
+ },
+ "8,0",
+ "8,1",
+ "8,2",
+ "8,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "1,0",
+ "1,1",
+ "1,2",
+ {
+ "x": 12
+ },
+ "8,4",
+ "8,5",
+ "8,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "2,3",
+ {
+ "n": true
+ },
+ "2,4",
+ "2,5",
+ "2,6",
+ {
+ "x": 4
+ },
+ "9,0",
+ {
+ "n": true
+ },
+ "9,1",
+ "9,2",
+ "9,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "2,0",
+ "2,1",
+ "2,2",
+ {
+ "x": 12
+ },
+ "9,4",
+ "9,5",
+ "9,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "3,3",
+ "3,4",
+ "3,5",
+ "3,6",
+ {
+ "x": 4
+ },
+ "10,0",
+ "10,1",
+ "10,2",
+ "10,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "3,0",
+ "3,1",
+ "3,2",
+ {
+ "x": 12
+ },
+ "10,4",
+ "10,5",
+ "10,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "4,3",
+ "4,4",
+ "4,5",
+ "4,6",
+ {
+ "x": 4
+ },
+ "11,0",
+ "11,1",
+ "11,2",
+ "11,3"
+ ],
+ [
+ {
+ "y": -0.5
+ },
+ "4,0",
+ "4,1",
+ "4,2",
+ {
+ "x": 12
+ },
+ "11,4",
+ "11,5",
+ "11,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 3
+ },
+ "5,3",
+ "5,4",
+ {
+ "x": 5.25
+ },
+ "0,0\n\n\n\n\n\n\n\n\ne",
+ "0,1\n\n\n\n\n\n\n\n\ne",
+ {
+ "x": 0.75
+ },
+ "12,2",
+ "12,3"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 6.25
+ },
+ "6,6"
+ ],
+ [
+ {
+ "y": -0.75
+ },
+ "5,0",
+ "5,1",
+ "5,2",
+ {
+ "x": 12
+ },
+ "12,4",
+ "12,5",
+ "12,6"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 10.75
+ },
+ "13,0"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 6.25
+ },
+ "6,5"
+ ],
+ [
+ {
+ "y": -0.5,
+ "x": 10.75
+ },
+ "13,1"
+ ],
+ [
+ {
+ "y": -0.25,
+ "x": 6.25
+ },
+ "6,3",
+ {
+ "x": 0.25
+ },
+ "6,4"
+ ],
+ [
+ {
+ "y": -0.75,
+ "x": 9.5
+ },
+ "13,2",
+ {
+ "x": 0.25
+ },
+ "13,3"
+ ]
+]
\ No newline at end of file
diff --git a/keyboards/handwired/wylderbuilds/trackball/rules.mk b/keyboards/handwired/wylderbuilds/trackball/rules.mk
new file mode 100644
index 00000000000..df73fd10c46
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/rules.mk
@@ -0,0 +1,6 @@
+# Board, Bootloader and MCU
+
+POINTING_DEVICE_ENABLE = yes
+POINTING_DEVICE_DRIVER = pmw3360
+
+CONSOLE_ENABLE = no
diff --git a/keyboards/handwired/wylderbuilds/trackball/trackball.c b/keyboards/handwired/wylderbuilds/trackball/trackball.c
new file mode 100644
index 00000000000..d89997a566e
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/trackball.c
@@ -0,0 +1,448 @@
+/* Copyright 2020 Christopher Courtney (@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 "trackball.h"
+#include "transactions.h"
+#include
+#include
+#include "print.h"
+
+#ifdef CONSOLE_ENABLE
+# include "print.h"
+#endif // CONSOLE_ENABLE
+
+//#warning ">>> PREPROCESSOR CHECKING trackball.c"
+//#define POINTING_DEVICE_ENABLE
+#ifdef POINTING_DEVICE_ENABLE
+# ifndef CHARYBDIS_MINIMUM_DEFAULT_DPI
+# define CHARYBDIS_MINIMUM_DEFAULT_DPI 400
+# endif // CHARYBDIS_MINIMUM_DEFAULT_DPI
+
+# ifndef CHARYBDIS_DEFAULT_DPI_CONFIG_STEP
+# define CHARYBDIS_DEFAULT_DPI_CONFIG_STEP 200
+# endif // CHARYBDIS_DEFAULT_DPI_CONFIG_STEP
+
+# ifndef CHARYBDIS_MINIMUM_SNIPING_DPI
+# define CHARYBDIS_MINIMUM_SNIPING_DPI 200
+# endif // CHARYBDIS_MINIMUM_SNIPING_DPI
+
+# ifndef CHARYBDIS_SNIPING_DPI_CONFIG_STEP
+# define CHARYBDIS_SNIPING_DPI_CONFIG_STEP 100
+# endif // CHARYBDIS_SNIPING_DPI_CONFIG_STEP
+
+// Fixed DPI for drag-scroll.
+# ifndef CHARYBDIS_DRAGSCROLL_DPI
+# define CHARYBDIS_DRAGSCROLL_DPI 100
+# endif // CHARYBDIS_DRAGSCROLL_DPI
+
+# ifndef CHARYBDIS_DRAGSCROLL_BUFFER_SIZE
+# define CHARYBDIS_DRAGSCROLL_BUFFER_SIZE 6
+# endif // !CHARYBDIS_DRAGSCROLL_BUFFER_SIZE
+
+# ifndef CHARYBDIS_POINTER_ACCELERATION_FACTOR
+# define CHARYBDIS_POINTER_ACCELERATION_FACTOR 24
+# endif // !CHARYBDIS_POINTER_ACCELERATION_FACTOR
+
+# ifndef CHARYBDIS_MAX_DEFAULT_DPI_MULTIPLIER
+# define CHARYBDIS_MAX_DEFAULT_DPI_MULTIPLIER 5
+# endif // !CHARYBDIS_POINTER_ACCELERATION_FACTOR
+typedef union {
+ uint8_t raw;
+ struct {
+ uint8_t pointer_default_dpi : 4; // 16 steps available.
+ uint8_t pointer_sniping_dpi : 2; // 4 steps available.
+ bool is_dragscroll_enabled : 1;
+ bool is_sniping_enabled : 1;
+ } __attribute__((packed));
+} charybdis_config_t;
+
+static charybdis_config_t g_charybdis_config = {0};
+
+/**
+ * \brief Set the value of `config` from EEPROM.
+ *
+ * Note that `is_dragscroll_enabled` and `is_sniping_enabled` are purposefully
+ * ignored since we do not want to persist this state to memory. In practice,
+ * this state is always written to maximize write-performances. Therefore, we
+ * explicitly set them to `false` in this function.
+ */
+static void read_charybdis_config_from_eeprom(charybdis_config_t* config) {
+ config->raw = eeconfig_read_kb() & 0xff;
+ config->is_dragscroll_enabled = false;
+ config->is_sniping_enabled = false;
+}
+
+/**
+ * \brief Save the value of `config` to eeprom.
+ *
+ * Note that all values are written verbatim, including whether drag-scroll
+ * and/or sniper mode are enabled. `read_charybdis_config_from_eeprom(…)`
+ * resets these 2 values to `false` since it does not make sense to persist
+ * these across reboots of the board.
+ */
+static void write_charybdis_config_to_eeprom(charybdis_config_t* config) { eeconfig_update_kb(config->raw); }
+
+/** \brief Return the current value of the pointer's default DPI. */
+static uint16_t get_pointer_default_dpi(charybdis_config_t* config) { return (uint16_t)config->pointer_default_dpi * CHARYBDIS_DEFAULT_DPI_CONFIG_STEP + CHARYBDIS_MINIMUM_DEFAULT_DPI; }
+
+/** \brief Return the current value of the pointer's sniper-mode DPI. */
+static uint16_t get_pointer_sniping_dpi(charybdis_config_t* config) { return (uint16_t)config->pointer_sniping_dpi * CHARYBDIS_SNIPING_DPI_CONFIG_STEP + CHARYBDIS_MINIMUM_SNIPING_DPI; }
+
+/** \brief Set the appropriate DPI for the input config. */
+static void maybe_update_pointing_device_cpi(charybdis_config_t* config) {
+ if (config->is_dragscroll_enabled) {
+ pointing_device_set_cpi(CHARYBDIS_DRAGSCROLL_DPI);
+ } else if (config->is_sniping_enabled) {
+ pointing_device_set_cpi(get_pointer_sniping_dpi(config));
+ } else {
+ pointing_device_set_cpi(get_pointer_default_dpi(config));
+ }
+}
+
+/**
+ * \brief Update the pointer's default DPI to the next or previous step.
+ *
+ * Increases the DPI value if `forward` is `true`, decreases it otherwise.
+ * The increment/decrement steps are equal to CHARYBDIS_DEFAULT_DPI_CONFIG_STEP.
+ */
+static void step_pointer_default_dpi(charybdis_config_t* config, bool forward) {
+ config->pointer_default_dpi += forward ? 1 : -1;
+ if (config->pointer_default_dpi < 1) {
+ config->pointer_default_dpi = 1;
+ } else if (config->pointer_default_dpi >= CHARYBDIS_MAX_DEFAULT_DPI_MULTIPLIER) {
+ config->pointer_default_dpi = CHARYBDIS_MAX_DEFAULT_DPI_MULTIPLIER;
+ }
+ maybe_update_pointing_device_cpi(config);
+}
+
+/**
+ * \brief Update the pointer's sniper-mode DPI to the next or previous step.
+ *
+ * Increases the DPI value if `forward` is `true`, decreases it otherwise.
+ * The increment/decrement steps are equal to CHARYBDIS_SNIPING_DPI_CONFIG_STEP.
+ */
+static void step_pointer_sniping_dpi(charybdis_config_t* config, bool forward) {
+ config->pointer_sniping_dpi += forward ? 1 : -1;
+ if (config->pointer_sniping_dpi < 1) {
+ config->pointer_sniping_dpi = 1;
+ }
+ maybe_update_pointing_device_cpi(config);
+}
+
+
+void reset_dpi(void) {
+ g_charybdis_config.pointer_default_dpi = 1;
+ write_charybdis_config_to_eeprom(&g_charybdis_config);
+}
+
+uint16_t charybdis_get_pointer_default_dpi(void) { return get_pointer_default_dpi(&g_charybdis_config); }
+
+uint16_t charybdis_get_pointer_sniping_dpi(void) { return get_pointer_sniping_dpi(&g_charybdis_config); }
+
+void charybdis_cycle_pointer_default_dpi_noeeprom(bool forward) { step_pointer_default_dpi(&g_charybdis_config, forward); }
+
+void charybdis_cycle_pointer_default_dpi(bool forward) {
+ step_pointer_default_dpi(&g_charybdis_config, forward);
+ write_charybdis_config_to_eeprom(&g_charybdis_config);
+}
+
+void charybdis_cycle_pointer_sniping_dpi_noeeprom(bool forward) { step_pointer_sniping_dpi(&g_charybdis_config, forward); }
+
+void charybdis_cycle_pointer_sniping_dpi(bool forward) {
+ step_pointer_sniping_dpi(&g_charybdis_config, forward);
+ write_charybdis_config_to_eeprom(&g_charybdis_config);
+}
+
+bool charybdis_get_pointer_sniping_enabled(void) { return g_charybdis_config.is_sniping_enabled; }
+
+void charybdis_set_pointer_sniping_enabled(bool enable) {
+ g_charybdis_config.is_sniping_enabled = enable;
+ if(enable) g_charybdis_config.is_dragscroll_enabled = false; // if we're adjusting sniping, then dragscroll should be false
+ maybe_update_pointing_device_cpi(&g_charybdis_config);
+}
+
+bool charybdis_get_pointer_dragscroll_enabled(void) { return g_charybdis_config.is_dragscroll_enabled; }
+
+void charybdis_set_pointer_dragscroll_enabled(bool enable) {
+ g_charybdis_config.is_dragscroll_enabled = enable;
+ if(enable) g_charybdis_config.is_sniping_enabled = false; // if we're adjusting dragscroll. then sniping should be false
+ maybe_update_pointing_device_cpi(&g_charybdis_config);
+}
+
+# ifndef CONSTRAIN_HID
+# define CONSTRAIN_HID(value) ((value) < XY_REPORT_MIN ? XY_REPORT_MIN : ((value) > XY_REPORT_MAX ? XY_REPORT_MAX : (value)))
+# endif // !CONSTRAIN_HID
+
+/**
+ * \brief Add optional acceleration effect.
+ *
+ * If `CHARYBDIS_ENABLE_POINTER_ACCELERATION` is defined, add a simple and naive
+ * acceleration effect to the provided value. Return the value unchanged
+ * otherwise.
+ */
+# ifndef DISPLACEMENT_WITH_ACCELERATION
+# ifdef CHARYBDIS_POINTER_ACCELERATION_ENABLE
+# define DISPLACEMENT_WITH_ACCELERATION(d) (CONSTRAIN_HID(d > 0 ? d * d / CHARYBDIS_POINTER_ACCELERATION_FACTOR + d : -d * d / CHARYBDIS_POINTER_ACCELERATION_FACTOR + d))
+# else // !CHARYBDIS_POINTER_ACCELERATION_ENABLE
+# define DISPLACEMENT_WITH_ACCELERATION(d) (d)
+# endif // CHARYBDIS_POINTER_ACCELERATION_ENABLE
+# endif // !DISPLACEMENT_WITH_ACCELERATION
+
+/**
+ * \brief Augment the pointing device behavior.
+ *
+ * Implement the Charybdis-specific features for pointing devices:
+ * - Drag-scroll
+ * - Sniping
+ * - Acceleration
+ */
+static void pointing_device_task_charybdis(report_mouse_t* mouse_report) {
+ static int16_t scroll_buffer_x = 0;
+ static int16_t scroll_buffer_y = 0;
+ // print("In pointing_device_task_charybdis\n");
+ if (g_charybdis_config.is_dragscroll_enabled) {
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_X
+ scroll_buffer_x -= mouse_report->x;
+# else
+ scroll_buffer_x += mouse_report->x;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_X
+# ifdef CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ scroll_buffer_y -= mouse_report->y;
+# else
+ scroll_buffer_y += mouse_report->y;
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_Y
+ mouse_report->x = 0;
+ mouse_report->y = 0;
+ if (abs(scroll_buffer_x) > CHARYBDIS_DRAGSCROLL_BUFFER_SIZE) {
+ mouse_report->h = scroll_buffer_x > 0 ? 1 : -1;
+ scroll_buffer_x = 0;
+ }
+ if (abs(scroll_buffer_y) > CHARYBDIS_DRAGSCROLL_BUFFER_SIZE) {
+ mouse_report->v = scroll_buffer_y > 0 ? 1 : -1;
+ scroll_buffer_y = 0;
+ }
+
+ } else if (!g_charybdis_config.is_sniping_enabled) {
+ mouse_report->x = DISPLACEMENT_WITH_ACCELERATION(mouse_report->x);
+ mouse_report->y = DISPLACEMENT_WITH_ACCELERATION(mouse_report->y);
+ }
+
+}
+
+report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) {
+ if (is_keyboard_master()) {
+ pointing_device_task_charybdis(&mouse_report);
+ mouse_report = pointing_device_task_user(mouse_report);
+ }
+ return mouse_report;
+}
+
+//report_mouse_t pointing_device_set_shared_report(report_mouse_t mouse_report) {
+// print("pointing_device_set_shared_report");
+// pointing_device_task_charybdis(&mouse_report);
+// mouse_report = pointing_device_task_user(mouse_report);
+// pointing_device_set_shared_report(mouse_report);
+// return mouse_report;
+//}
+
+# if defined(POINTING_DEVICE_ENABLE) && !defined(NO_CHARYBDIS_KEYCODES)
+/** \brief Whether SHIFT mod is enabled. */
+static bool has_shift_mod(void) {
+# ifdef NO_ACTION_ONESHOT
+ return mod_config(get_mods()) & MOD_MASK_SHIFT;
+# else
+ return mod_config(get_mods() | get_oneshot_mods()) & MOD_MASK_SHIFT;
+# endif // NO_ACTION_ONESHOT
+}
+# endif // POINTING_DEVICE_ENABLE && !NO_CHARYBDIS_KEYCODES
+
+/**
+ * \brief Outputs the Charybdis configuration to console.
+ *
+ * Prints the in-memory configuration structure to console, for debugging.
+ * Includes:
+ * - raw value
+ * - drag-scroll: on/off
+ * - sniping: on/off
+ * - default DPI: internal table index/actual DPI
+ * - sniping DPI: internal table index/actual DPI
+ */
+__attribute__((unused)) static void debug_charybdis_config_to_console(charybdis_config_t* config) {
+# ifdef CONSOLE_ENABLE
+ IGNORE_FORMAT_WARNING(dprintf("(charybdis) process_record_kb: config = {\n"
+ "\traw = 0x%04X,\n"
+ "\t{\n"
+ "\t\tis_dragscroll_enabled=%b\n"
+ "\t\tis_sniping_enabled=%b\n"
+ "\t\tdefault_dpi=0x%02X (%ld)\n"
+ "\t\tsniping_dpi=0x%01X (%ld)\n"
+ "\t}\n"
+ "}\n",
+ config->raw, config->is_dragscroll_enabled, config->is_sniping_enabled, config->pointer_default_dpi, get_pointer_default_dpi(config), config->pointer_sniping_dpi, get_pointer_sniping_dpi(config)));
+# endif // CONSOLE_ENABLE
+}
+
+bool process_record_kb(uint16_t keycode, keyrecord_t* record) {
+ if (!process_record_user(keycode, record)) {
+ return false;
+ }
+# ifndef NO_CHARYBDIS_KEYCODES
+ switch (keycode) {
+ case POINTER_DEFAULT_DPI_FORWARD:
+ if (record->event.pressed) {
+ // Step backward if shifted, forward otherwise.
+ charybdis_cycle_pointer_default_dpi(/* forward= */ !has_shift_mod());
+ }
+ break;
+ case POINTER_DEFAULT_DPI_REVERSE:
+ if (record->event.pressed) {
+ // Step forward if shifted, backward otherwise.
+ charybdis_cycle_pointer_default_dpi(/* forward= */ has_shift_mod());
+ }
+ break;
+ case POINTER_DEFAULT_DPI_RESET:
+ if (record->event.pressed) {
+ reset_dpi();
+ }
+ break;
+ case POINTER_SNIPING_DPI_FORWARD:
+ if (record->event.pressed) {
+ // Step backward if shifted, forward otherwise.
+ charybdis_cycle_pointer_sniping_dpi(/* forward= */ !has_shift_mod());
+ }
+ break;
+ case POINTER_SNIPING_DPI_REVERSE:
+ if (record->event.pressed) {
+ // Step forward if shifted, backward otherwise.
+ charybdis_cycle_pointer_sniping_dpi(/* forward= */ has_shift_mod());
+ }
+ break;
+ case SNIPING_MODE:
+ charybdis_set_pointer_sniping_enabled(record->event.pressed);
+ break;
+ case SNIPING_MODE_TOGGLE:
+ if (record->event.pressed) {
+ charybdis_set_pointer_sniping_enabled(!charybdis_get_pointer_sniping_enabled());
+ }
+ break;
+ case DRAGSCROLL_MODE:
+ charybdis_set_pointer_dragscroll_enabled(record->event.pressed);
+ break;
+ case DRAGSCROLL_MODE_TOGGLE:
+ if (record->event.pressed) {
+ charybdis_set_pointer_dragscroll_enabled(!charybdis_get_pointer_dragscroll_enabled());
+ }
+ break;
+ }
+# endif // !NO_CHARYBDIS_KEYCODES
+# ifndef MOUSEKEY_ENABLE
+ // Simulate mouse keys if full support is not enabled (reduces firmware size
+ // while maintaining support for mouse keys).
+ if (IS_MOUSEKEY_BUTTON(keycode)) {
+ report_mouse_t mouse_report = pointing_device_get_report();
+ mouse_report.buttons = pointing_device_handle_buttons(mouse_report.buttons, record->event.pressed, keycode - KC_MS_BTN1);
+ pointing_device_set_report(mouse_report);
+ pointing_device_send();
+ }
+# endif // !MOUSEKEY_ENABLE
+ return true;
+}
+
+void eeconfig_init_kb(void) {
+ g_charybdis_config.raw = 0;
+ write_charybdis_config_to_eeprom(&g_charybdis_config);
+ maybe_update_pointing_device_cpi(&g_charybdis_config);
+ eeconfig_init_user();
+}
+
+void matrix_power_up(void) { pointing_device_task(); }
+
+void charybdis_config_sync_handler(uint8_t initiator2target_buffer_size, const void* initiator2target_buffer, uint8_t target2initiator_buffer_size, void* target2initiator_buffer) {
+ if (initiator2target_buffer_size == sizeof(g_charybdis_config)) {
+ memcpy(&g_charybdis_config, initiator2target_buffer, sizeof(g_charybdis_config));
+ }
+}
+
+void keyboard_post_init_kb(void) {
+// pointing_device_set_cpi(8200);
+ maybe_update_pointing_device_cpi(&g_charybdis_config);
+ transaction_register_rpc(RPC_ID_KB_CONFIG_SYNC, charybdis_config_sync_handler);
+
+ keyboard_post_init_user();
+}
+
+
+uint16_t get_current_dpi(void) {
+ if (g_charybdis_config.is_sniping_enabled) {
+ return get_pointer_sniping_dpi(&g_charybdis_config);
+ }
+ return get_pointer_default_dpi(&g_charybdis_config);
+}
+
+
+char* get_mouse_mode_string(void) {
+ if (g_charybdis_config.is_dragscroll_enabled) {
+ return "DRAG ";
+ }
+ if (g_charybdis_config.is_sniping_enabled) {
+ return "SNIPE";
+ }
+ return "POINT";
+}
+
+void housekeeping_task_kb(void) {
+ if (is_keyboard_master()) {
+ // Keep track of the last state, so that we can tell if we need to propagate to slave
+ static charybdis_config_t last_charybdis_config = {0};
+ static uint32_t last_sync = 0;
+ bool needs_sync = false;
+
+ // Check if the state values are different
+ if (memcmp(&g_charybdis_config, &last_charybdis_config, sizeof(g_charybdis_config))) {
+ needs_sync = true;
+ memcpy(&last_charybdis_config, &g_charybdis_config, sizeof(g_charybdis_config));
+ }
+ // Send to slave every 500ms regardless of state change
+ if (timer_elapsed32(last_sync) > 500) {
+ needs_sync = true;
+ }
+
+ // Perform the sync if requested
+ if (needs_sync) {
+ if (transaction_rpc_send(RPC_ID_KB_CONFIG_SYNC, sizeof(g_charybdis_config), &g_charybdis_config)) {
+ last_sync = timer_read32();
+ }
+ }
+ }
+ // no need for user function, is called already
+}
+
+#endif // POINTING_DEVICE_ENABLE
+
+__attribute__((weak)) void matrix_init_sub_kb(void) {}
+void matrix_init_kb(void) {
+#ifdef POINTING_DEVICE_ENABLE
+ read_charybdis_config_from_eeprom(&g_charybdis_config);
+#endif // POINTING_DEVICE_ENABLE
+ matrix_init_sub_kb();
+ matrix_init_user();
+}
+
+__attribute__((weak)) void matrix_scan_sub_kb(void) {}
+void matrix_scan_kb(void) {
+ matrix_scan_sub_kb();
+ matrix_scan_user();
+}
diff --git a/keyboards/handwired/wylderbuilds/trackball/trackball.h b/keyboards/handwired/wylderbuilds/trackball/trackball.h
new file mode 100644
index 00000000000..39aedb4641a
--- /dev/null
+++ b/keyboards/handwired/wylderbuilds/trackball/trackball.h
@@ -0,0 +1,128 @@
+/* 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
+
+#include "quantum.h"
+#include
+
+//#warning ">>> PREPROCESSOR CHECKING trackball.h"
+
+
+enum charybdis_keycodes {
+ POINTER_DEFAULT_DPI_FORWARD = QK_KB_0,
+ POINTER_DEFAULT_DPI_REVERSE,
+ POINTER_DEFAULT_DPI_RESET,
+ POINTER_SNIPING_DPI_FORWARD,
+ POINTER_SNIPING_DPI_REVERSE,
+ SNIPING_MODE,
+ SNIPING_MODE_TOGGLE,
+ DRAGSCROLL_MODE,
+ DRAGSCROLL_MODE_TOGGLE,
+};
+# define CHARYBDIS_SAFE_RANGE KEYMAP_SAFE_RANGE
+# define DPI_MOD POINTER_DEFAULT_DPI_FORWARD
+# define DPI_RMOD POINTER_DEFAULT_DPI_REVERSE
+# define DPI_RST POINTER_DEFAULT_DPI_RESET
+# define S_D_MOD POINTER_SNIPING_DPI_FORWARD
+# define S_D_RMOD POINTER_SNIPING_DPI_REVERSE
+# define SNIPING SNIPING_MODE
+# define SNP_TOG SNIPING_MODE_TOGGLE
+# define DRGSCRL DRAGSCROLL_MODE
+# define DRG_TOG DRAGSCROLL_MODE_TOGGLE
+
+#ifdef POINTING_DEVICE_ENABLE
+/** \brief Return the current DPI value for the pointer's default mode. */
+uint16_t charybdis_get_pointer_default_dpi(void);
+
+/**
+ * \brief Update the pointer's default DPI to the next or previous step.
+ *
+ * Increases the DPI value if `forward` is `true`, decreases it otherwise.
+ * The increment/decrement steps are equal to CHARYBDIS_DEFAULT_DPI_CONFIG_STEP.
+ *
+ * The new value is persisted in EEPROM.
+ */
+void charybdis_cycle_pointer_default_dpi(bool forward);
+
+/**
+ * \brief Same as `charybdis_cycle_pointer_default_dpi`, but do not write to
+ * EEPROM.
+ *
+ * This means that reseting the board will revert the value to the last
+ * persisted one.
+ */
+void charybdis_cycle_pointer_default_dpi_noeeprom(bool forward);
+
+/** \brief Return the current DPI value for the pointer's sniper-mode. */
+uint16_t charybdis_get_pointer_sniping_dpi(void);
+
+/**
+ * \brief Update the pointer's sniper-mode DPI to the next or previous step.
+ *
+ * Increases the DPI value if `forward` is `true`, decreases it otherwise.
+ * The increment/decrement steps are equal to CHARYBDIS_SNIPING_DPI_CONFIG_STEP.
+ *
+ * The new value is persisted in EEPROM.
+ */
+void charybdis_cycle_pointer_sniping_dpi(bool forward);
+
+/**
+ * \brief Same as `charybdis_cycle_pointer_sniping_dpi`, but do not write to
+ * EEPROM.
+ *
+ * This means that reseting the board will revert the value to the last
+ * persisted one.
+ */
+void charybdis_cycle_pointer_sniping_dpi_noeeprom(bool forward);
+
+/** \brief Whether sniper-mode is enabled. */
+bool charybdis_get_pointer_sniping_enabled(void);
+
+/**
+ * \brief Enable/disable sniper mode.
+ *
+ * When sniper mode is enabled the dpi is reduced to slow down the pointer for
+ * more accurate movements.
+ */
+void charybdis_set_pointer_sniping_enabled(bool enable);
+
+/** \brief Whether drag-scroll is enabled. */
+bool charybdis_get_pointer_dragscroll_enabled(void);
+
+/** calculate drag scroll on specific mouse report */
+void check_drag_scroll(report_mouse_t* mouse_report);
+
+/**
+ * \brief Enable/disable drag-scroll mode.
+ *
+ * When drag-scroll mode is enabled, horizontal and vertical pointer movements
+ * are translated into horizontal and vertical scroll movements.
+ */
+void charybdis_set_pointer_dragscroll_enabled(bool enable);
+
+void set_default_pointer_dpi(void);
+
+void reset_dpi(void);
+
+uint16_t get_current_dpi(void);
+
+char* get_mouse_mode_string(void);
+
+#endif // POINTING_DEVICE_ENABLE
+
+void matrix_init_sub_kb(void);
+void matrix_scan_sub_kb(void);
diff --git a/keyboards/lazydesigners/cloud/keymaps/vial/vial.json b/keyboards/lazydesigners/cloud/keymaps/vial/vial.json
index 4ff5fa39690..5c45ad57e0e 100644
--- a/keyboards/lazydesigners/cloud/keymaps/vial/vial.json
+++ b/keyboards/lazydesigners/cloud/keymaps/vial/vial.json
@@ -1,39 +1,39 @@
-{
- "name": "LAZYDESIGERS Cloud",
- "vendorId": "0x4C44",
- "productId": "0x0043",
- "lighting": "qmk_rgblight",
- "matrix": {"rows": 4, "cols": 13},
-"layouts": {
- "labels": [
- ["Style", "Staggered","Ortho"],
- ["Bottom Row", "Split", "7U","HHKB Split", "HHKB 7U","Ortho2X1U","Ortho2U", "Ortho2X2U"]
- ],
- "keymap": [
- [
- {"x":1},"0,0\n\n\n\n\n\n\n\n\ne","0,12","0,1\n\n\n\n\n\n\n\n\ne"
- ],
- [
- {"x":1,"y":0.25,"c":"#777777"},"0,0\n\n\n0,0",{"c":"#cccccc"},"0,1\n\n\n0,0","0,2\n\n\n0,0","0,3\n\n\n0,0","0,4\n\n\n0,0","0,5\n\n\n0,0","0,6\n\n\n0,0","0,7\n\n\n0,0","0,8\n\n\n0,0","0,9\n\n\n0,0","0,10\n\n\n0,0",{"c":"#aaaaaa","w":1.5},"0,11\n\n\n0,0",
- {"x":1,"c":"#777777","w":1.25},"0,0\n\n\n0,1",{"c":"#cccccc"},"0,1\n\n\n0,1","0,2\n\n\n0,1","0,3\n\n\n0,1","0,4\n\n\n0,1","0,5\n\n\n0,1","0,6\n\n\n0,1","0,7\n\n\n0,1","0,8\n\n\n0,1","0,9\n\n\n0,1","0,10\n\n\n0,1",{"c":"#aaaaaa","w":1.25},"0,11\n\n\n0,1"
- ],
- [
- {"x":1,"w":1.25},"1,0\n\n\n0,0",{"c":"#cccccc"},"1,1\n\n\n0,0","1,2\n\n\n0,0","1,3\n\n\n0,0","1,4\n\n\n0,0","1,5\n\n\n0,0","1,6\n\n\n0,0","1,7\n\n\n0,0","1,8\n\n\n0,0","1,9\n\n\n0,0","1,10\n\n\n0,0",{"c":"#aaaaaa","w":1.25},"1,11\n\n\n0,0",
- {"x":1,"w":1.25},"1,0\n\n\n0,1",{"c":"#cccccc"},"1,1\n\n\n0,1","1,2\n\n\n0,1","1,3\n\n\n0,1","1,4\n\n\n0,1","1,5\n\n\n0,1","1,6\n\n\n0,1","1,7\n\n\n0,1","1,8\n\n\n0,1","1,9\n\n\n0,1","1,10\n\n\n0,1",{"c":"#aaaaaa","w":1.25},"1,11\n\n\n0,1"
- ],
- [
- {"x":1,"w":1.75},"2,0\n\n\n0,0",{"c":"#cccccc"},"2,1\n\n\n0,0","2,2\n\n\n0,0","2,3\n\n\n0,0","2,4\n\n\n0,0","2,5\n\n\n0,0","2,6\n\n\n0,0","2,7\n\n\n0,0","2,8\n\n\n0,0","2,9\n\n\n0,0",{"c":"#777777","w":1.75},"2,10\n\n\n0,0",
- {"x":1,"w":1.25},"2,0\n\n\n0,1",{"c":"#cccccc"},"2,1\n\n\n0,1","2,2\n\n\n0,1","2,3\n\n\n0,1","2,4\n\n\n0,1","2,5\n\n\n0,1","2,6\n\n\n0,1","2,7\n\n\n0,1","2,8\n\n\n0,1","2,9\n\n\n0,1","2,10\n\n\n0,1",{"c":"#777777","w":1.25},"2,11\n\n\n0,1"
- ],
- [
- {"x":1,"w":1.25,"c":"#aaaaaa"},"3,0\n\n\n1,0",{"w":1.25},"3,1\n\n\n1,0",{"w":1.25},"3,2\n\n\n1,0",{"c":"#777777","w":2.25},"3,4\n\n\n1,0",{"w":2.75},"3,6\n\n\n1,0",{"w":1.25,"c":"#aaaaaa"},"3,8\n\n\n1,0",{"w":1.25},"3,9\n\n\n1,0",{"w":1.25},"3,10\n\n\n1,0",
- {"x":1,"w":1.25,"c":"#aaaaaa"},"3,0\n\n\n1,1",{"w":1.5},"3,1\n\n\n1,1",{"c":"#777777","w":7},"3,6\n\n\n1,1",{"w":1.5,"c":"#aaaaaa"},"3,8\n\n\n1,1",{"w":1.25},"3,9\n\n\n1,1",
- {"x":2.25,"w":1.25,"d": true},"\n\n\n1,2",{"c":"#aaaaaa"},{"w":1.25},"3,1\n\n\n1,2",{"w":1.25},"3,2\n\n\n1,2",{"c":"#777777","w":2.25},"3,4\n\n\n1,2",{"w":2.75},"3,6\n\n\n1,2",{"w":1.25,"c":"#aaaaaa"},"3,8\n\n\n1,2",{"w":1.25},"3,9\n\n\n1,2",
- {"x":2.25,"w":1.25,"d": true},"\n\n\n1,3",{"c":"#aaaaaa"},{"w":1.5},"3,1\n\n\n1,3",{"c":"#777777","w":7},"3,6\n\n\n1,3",{"w":1.5,"c":"#aaaaaa"},"3,9\n\n\n1,3",
- {"x":1,"w":1.25,"c":"#aaaaaa"},"3,0\n\n\n1,4","3,1\n\n\n1,4","3,2\n\n\n1,4","3,3\n\n\n1,4","3,4\n\n\n1,4","3,5\n\n\n1,4","3,6\n\n\n1,4","3,7\n\n\n1,4","3,8\n\n\n1,4","3,9\n\n\n1,4","3,10\n\n\n1,4",{"c":"#777777","w":1.25},"3,11\n\n\n1,4",
- {"x":1,"w":1.25,"c":"#aaaaaa"},"3,0\n\n\n1,5","3,1\n\n\n1,5","3,2\n\n\n1,5","3,3\n\n\n1,5","3,4\n\n\n1,5",{"w":2},"3,5\n\n\n1,5","3,7\n\n\n1,5","3,8\n\n\n1,5","3,9\n\n\n1,5","3,10\n\n\n1,5",{"c":"#777777","w":1.25},"3,11\n\n\n1,5",
- {"x":1,"w":1.25,"c":"#aaaaaa"},"3,0\n\n\n1,6","3,1\n\n\n1,6","3,2\n\n\n1,6","3,3\n\n\n1,6",{"w":2},"3,4\n\n\n1,6",{"w":2},"3,7\n\n\n1,6","3,8\n\n\n1,6","3,9\n\n\n1,6","3,10\n\n\n1,6",{"c":"#777777","w":1.25},"3,11\n\n\n1,6"
- ]
- ]
- }
-}
+{
+ "name": "LAZYDESIGERS Cloud",
+ "vendorId": "0x4C44",
+ "productId": "0x0043",
+ "lighting": "qmk_rgblight",
+ "matrix": {"rows": 4, "cols": 13},
+"layouts": {
+ "labels": [
+ ["Style", "Staggered","Ortho"],
+ ["Bottom Row", "Split", "7U","HHKB Split", "HHKB 7U","Ortho2X1U","Ortho2U", "Ortho2X2U"]
+ ],
+ "keymap": [
+ [
+ {"x":1},"0,0\n\n\n\n\n\n\n\n\ne","0,12","0,1\n\n\n\n\n\n\n\n\ne"
+ ],
+ [
+ {"x":1,"y":0.25,"c":"#777777"},"0,0\n\n\n0,0",{"c":"#cccccc"},"0,1\n\n\n0,0","0,2\n\n\n0,0","0,3\n\n\n0,0","0,4\n\n\n0,0","0,5\n\n\n0,0","0,6\n\n\n0,0","0,7\n\n\n0,0","0,8\n\n\n0,0","0,9\n\n\n0,0","0,10\n\n\n0,0",{"c":"#aaaaaa","w":1.5},"0,11\n\n\n0,0",
+ {"x":1,"c":"#777777","w":1.25},"0,0\n\n\n0,1",{"c":"#cccccc"},"0,1\n\n\n0,1","0,2\n\n\n0,1","0,3\n\n\n0,1","0,4\n\n\n0,1","0,5\n\n\n0,1","0,6\n\n\n0,1","0,7\n\n\n0,1","0,8\n\n\n0,1","0,9\n\n\n0,1","0,10\n\n\n0,1",{"c":"#aaaaaa","w":1.25},"0,11\n\n\n0,1"
+ ],
+ [
+ {"x":1,"w":1.25},"1,0\n\n\n0,0",{"c":"#cccccc"},"1,1\n\n\n0,0","1,2\n\n\n0,0","1,3\n\n\n0,0","1,4\n\n\n0,0","1,5\n\n\n0,0","1,6\n\n\n0,0","1,7\n\n\n0,0","1,8\n\n\n0,0","1,9\n\n\n0,0","1,10\n\n\n0,0",{"c":"#aaaaaa","w":1.25},"1,11\n\n\n0,0",
+ {"x":1,"w":1.25},"1,0\n\n\n0,1",{"c":"#cccccc"},"1,1\n\n\n0,1","1,2\n\n\n0,1","1,3\n\n\n0,1","1,4\n\n\n0,1","1,5\n\n\n0,1","1,6\n\n\n0,1","1,7\n\n\n0,1","1,8\n\n\n0,1","1,9\n\n\n0,1","1,10\n\n\n0,1",{"c":"#aaaaaa","w":1.25},"1,11\n\n\n0,1"
+ ],
+ [
+ {"x":1,"w":1.75},"2,0\n\n\n0,0",{"c":"#cccccc"},"2,1\n\n\n0,0","2,2\n\n\n0,0","2,3\n\n\n0,0","2,4\n\n\n0,0","2,5\n\n\n0,0","2,6\n\n\n0,0","2,7\n\n\n0,0","2,8\n\n\n0,0","2,9\n\n\n0,0",{"c":"#777777","w":1.75},"2,10\n\n\n0,0",
+ {"x":1,"w":1.25},"2,0\n\n\n0,1",{"c":"#cccccc"},"2,1\n\n\n0,1","2,2\n\n\n0,1","2,3\n\n\n0,1","2,4\n\n\n0,1","2,5\n\n\n0,1","2,6\n\n\n0,1","2,7\n\n\n0,1","2,8\n\n\n0,1","2,9\n\n\n0,1","2,10\n\n\n0,1",{"c":"#777777","w":1.25},"2,11\n\n\n0,1"
+ ],
+ [
+ {"x":1,"w":1.25,"c":"#aaaaaa"},"3,0\n\n\n1,0",{"w":1.25},"3,1\n\n\n1,0",{"w":1.25},"3,2\n\n\n1,0",{"c":"#777777","w":2.25},"3,4\n\n\n1,0",{"w":2.75},"3,6\n\n\n1,0",{"w":1.25,"c":"#aaaaaa"},"3,8\n\n\n1,0",{"w":1.25},"3,9\n\n\n1,0",{"w":1.25},"3,10\n\n\n1,0",
+ {"x":1,"w":1.25,"c":"#aaaaaa"},"3,0\n\n\n1,1",{"w":1.5},"3,1\n\n\n1,1",{"c":"#777777","w":7},"3,6\n\n\n1,1",{"w":1.5,"c":"#aaaaaa"},"3,8\n\n\n1,1",{"w":1.25},"3,9\n\n\n1,1",
+ {"x":2.25,"w":1.25,"d": true},"\n\n\n1,2",{"c":"#aaaaaa"},{"w":1.25},"3,1\n\n\n1,2",{"w":1.25},"3,2\n\n\n1,2",{"c":"#777777","w":2.25},"3,4\n\n\n1,2",{"w":2.75},"3,6\n\n\n1,2",{"w":1.25,"c":"#aaaaaa"},"3,8\n\n\n1,2",{"w":1.25},"3,9\n\n\n1,2",
+ {"x":2.25,"w":1.25,"d": true},"\n\n\n1,3",{"c":"#aaaaaa"},{"w":1.5},"3,1\n\n\n1,3",{"c":"#777777","w":7},"3,6\n\n\n1,3",{"w":1.5,"c":"#aaaaaa"},"3,9\n\n\n1,3",
+ {"x":1,"w":1.25,"c":"#aaaaaa"},"3,0\n\n\n1,4","3,1\n\n\n1,4","3,2\n\n\n1,4","3,3\n\n\n1,4","3,4\n\n\n1,4","3,5\n\n\n1,4","3,6\n\n\n1,4","3,7\n\n\n1,4","3,8\n\n\n1,4","3,9\n\n\n1,4","3,10\n\n\n1,4",{"c":"#777777","w":1.25},"3,11\n\n\n1,4",
+ {"x":1,"w":1.25,"c":"#aaaaaa"},"3,0\n\n\n1,5","3,1\n\n\n1,5","3,2\n\n\n1,5","3,3\n\n\n1,5","3,4\n\n\n1,5",{"w":2},"3,5\n\n\n1,5","3,7\n\n\n1,5","3,8\n\n\n1,5","3,9\n\n\n1,5","3,10\n\n\n1,5",{"c":"#777777","w":1.25},"3,11\n\n\n1,5",
+ {"x":1,"w":1.25,"c":"#aaaaaa"},"3,0\n\n\n1,6","3,1\n\n\n1,6","3,2\n\n\n1,6","3,3\n\n\n1,6",{"w":2},"3,4\n\n\n1,6",{"w":2},"3,7\n\n\n1,6","3,8\n\n\n1,6","3,9\n\n\n1,6","3,10\n\n\n1,6",{"c":"#777777","w":1.25},"3,11\n\n\n1,6"
+ ]
+ ]
+ }
+}
diff --git a/lib/python/qmk/cli/generate/keyboard_c.py b/lib/python/qmk/cli/generate/keyboard_c.py
index f0103416137..1373a352514 100755
--- a/lib/python/qmk/cli/generate/keyboard_c.py
+++ b/lib/python/qmk/cli/generate/keyboard_c.py
@@ -31,8 +31,10 @@ def _gen_led_config(info_data):
led_layout = info_data[config_type]['layout']
for index, led_data in enumerate(led_layout):
+ print('index', index)
if 'matrix' in led_data:
row, col = led_data['matrix']
+ print('row', row, 'col', col)
matrix[row][col] = str(index)
pos.append(f'{{{led_data.get("x", 0)}, {led_data.get("y", 0)}}}')
flags.append(str(led_data.get('flags', 0)))
@@ -69,7 +71,9 @@ def _gen_matrix_mask(info_data):
# Mirror layout macros squashed on top of each other
for layout_name, layout_data in info_data['layouts'].items():
for key_data in layout_data['layout']:
+ print(key_data)
row, col = key_data['matrix']
+
if row >= rows or col >= cols:
cli.log.error(f'Skipping matrix_mask due to {layout_name} containing invalid matrix values')
return []
diff --git a/wtf.txt b/wtf.txt
new file mode 100644
index 00000000000..e10abdb64d7
--- /dev/null
+++ b/wtf.txt
@@ -0,0 +1,16 @@
+
+
+QMK Firmware squarespace_00142
+Making [1mhandwired/wylderbuilds/trackball/5x6_full_wyld_track[0m with keymap [1mvial[0m
+
+arm-none-eabi-gcc (GNU Tools for Arm Embedded Processors 8-2019-q3-update) 8.3.1 20190703 (release) [gcc-8-branch revision 273027]
+Copyright (C) 2018 Free Software Foundation, Inc.
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+Compiling: quantum/keymap_introspection.c [31;01m[ERRORS][0m
+ |
+ |
+ |
+[31;01mMake finished with errors
+[0m
\ No newline at end of file